I3155 — The shell check reports shell by disposition, and the count of domain-logic shell never rises against the merge base
Add a ratchet to majordomus shell check comparing the class-A unit and line counts with the merge base and refusing an increase or an unexplained relabel, serve the per-class counts as a reading on CLI, MCP and HTTP, and draw that reading as the shell observatory on /ui.
PŘIPRAVENO vlna 0 · p2 · profil implementation · bezpečné souběžně
Připraveno. Všechny závislosti jsou hotové, takže majordomus plan start I3155 bude přijato.
Cíl
Add a ratchet to majordomus shell check comparing the class-A unit and line counts with the merge base and refusing an increase or an unexplained relabel, serve the per-class counts as a reading on CLI, MCP and HTTP, and draw that reading as the shell observatory on /ui.
Proč
The README of .ai/repo/automation says 'The list only shrinks' but nothing compares with master; the owner asked for progress measured by logic removed, not .sh counts (2026-10-12), and a derived shell observatory (2026-10-17). It extends milestone automation. Sources: chatgpt-majordomus:c105#1, chatgpt-majordomus:c230#5, chatgpt-majordomus:c290#2.
Aktuální stav
inventory.jsonl: 237 records, dispositions A-F (113 A; counted at 707a04c with wc -l and grep -c on the disposition field); shell check refuses unexempted units; the judgement lives in apps/majordomus-cli/src/automation/mod.rs.
Cílový stav
A rise in class A fails the check; counts are derived, never typed into prose.
Rozsah
- apps/majordomus-cli/src/capability/builtin/shell.rs
- .ai/repo/automation
- docs/SHELL.md
- test/cases/365_new_shell_is_refused.sh
- apps/majordomus-cli/src/automation/mod.rs
- apps/majordomus-cli/src/commands/shell.rs
- apps/majordomus-cli/src/ui/mod.rs
- apps/majordomus-cli/src/ui/governance.rs
- docs/generated/modules/shell.md
Závislosti
Žádné. Tento úkol je kořenem grafu.
Kritéria přijetí
- A branch adding a class-A unit is refused
- Counts by class are on CLI and MCP
- /ui shows the per-class counts and their change against the merge base from the same reading, and the published page is checked to carry them
- Each new case named here takes its number from `scripts/case-numbers next` and is announced on the board before the file is written (ADR 0053); a case number written in this record before that is provisional
Validace
- bin/majordomus-cli shell check
- bash test/run.sh 365_new_shell_is_refused
Požadované důkazy
- case_domain_shell_only_shrinks
Důkazy
Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.
Časová osa
- zahájeno
- —
- ověřeno
- —
- dokončeno
- —
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Canonical record: .ai/repo/project/issues/I3155.yaml. Read it back with majordomus plan show I3155.