Skip to content

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.

READY wave 0 · p2 · implementation profile · parallel safe

Part of repository-automation-is-typed — Repository automation is typed capabilities that Rhai orchestrates, and domain-logic shell only shrinks.

Ready. Every dependency is done, so majordomus plan start I3155 will be accepted.

Objective

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.

Why

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.

Current state

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.

Desired state

A rise in class A fails the check; counts are derived, never typed into prose.

Scope

  • 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

Dependencies

None. This issue is a root of the graph.

Acceptance criteria

  • 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

Validation

  • bin/majordomus-cli shell check
  • bash test/run.sh 365_new_shell_is_refused

Evidence required

  • case_domain_shell_only_shrinks

Evidence

None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.

Timeline

started
—
verified
—
completed
—

Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.

Canonical record: .ai/repo/project/issues/I3155.yaml. Read it back with majordomus plan show I3155.

Searches the titles and descriptions of every page this site publishes.