I3156 — Every command path is implemented by one executable, and the other only delegates
Derive, from the command graph's existing join of share/commands.yaml and the Rust registry, the implementing executable of every command path (program plus its full word sequence); report a path both implement outside a declared delegation as a commands validate finding; serve the reading on CLI, MCP and /ui. Delegation stays read from docs/generated/cli.yaml at run time.
PŘIPRAVENO vlna 0 · p1 · profil implementation · bezpečné souběžně
Připraveno. Všechny závislosti jsou hotové, takže majordomus plan start I3156 bude přijato.
Cíl
Derive, from the command graph's existing join of share/commands.yaml and the Rust registry, the implementing executable of every command path (program plus its full word sequence); report a path both implement outside a declared delegation as a commands validate finding; serve the reading on CLI, MCP and /ui. Delegation stays read from docs/generated/cli.yaml at run time.
Proč
The justfile header says two executables share the name majordomus. On 2026-10-12 the shell reading of the model reported 318 drift findings where the Rust executable reported 26 (.github/workflows/github.yml); the workflow now forces the Rust path, which fixes the symptom and not the class. It extends milestone automation. Proposed in ADR 0184 (Every command name is implemented by exactly one executable, and the other only delegates) (proposed; it carries no authority until the owner accepts it). Sources: chatgpt-majordomus:c225#2, chatgpt-majordomus:c233#2, chatgpt-majordomus:c268#2.
Aktuální stav
share/commands.yaml describes the shell tool and doctor proves it agrees with bin/majordomus; command_graph/mod.rs already joins both origins (qualify_collisions); bin/majordomus reads its delegation from docs/generated/cli.yaml (bin/majordomus:100-103) and hands over by subcommand word.
Cílový stav
One owner per command path, a finding otherwise; delegation unchanged in form.
Rozsah
- share/commands.yaml
- bin/majordomus
- apps/majordomus-cli/src/command_graph
- docs/COMMANDS.md
Mimo rozsah
- Porting a command (the cutover issues do that)
Závislosti
Žádné. Tento úkol je kořenem grafu.
Co na tom čeká
Kritéria přijetí
- A name implemented by both executables without a delegation is a finding of commands validate
- The table is served on CLI and MCP
- Exit codes and output of delegated names are unchanged
Validace
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib command_graph::
- bash test/run.sh 101_command_graph 30_command_registry
Požadované důkazy
- test_one_executable_per_command
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/I3156.yaml. Read it back with majordomus plan show I3156.