Tracking: adopt --json (pure-document contract) on the remaining script-facing commands
status --json (#190) and list --json (#192) emit stable, schema-versioned pure JSON documents per the contract in src/bmad_loop/machine.py. Other commands whose text output is a de-facto API for scripts are still text-only:
Now split into the per-command issues linked above — each needs its own *_SCHEMA_VERSION, document builder, and purity tests via the shared machine_json helper in tests/conftest.py. Not a commitment to do all of them; strike any that turn out to have no script consumers.
Related: #195 tracks unifying the older report+embedded-block form of diagnose --json / probe-adapter --json with this contract.
Tracking: adopt
--json(pure-document contract) on the remaining script-facing commandsstatus --json(#190) andlist --json(#192) emit stable, schema-versioned pure JSON documents per the contract insrc/bmad_loop/machine.py. Other commands whose text output is a de-facto API for scripts are still text-only:decisions --list(Adopt --json on decisions --list (pure-document contract) #203) — pending decisions with ids/options; scripts currently scrape the numbered text.clean/cleanup --dry-run(Adopt --json on clean and cleanup (pure-document contract) #204) — what would be removed (worktrees, runs past retention, tmux sessions); the natural machine surface for pre-flight checks.validate(Adopt --json on validate (pure-document contract) #205) — pass/fail plus per-check findings; exit code alone loses the detail.Now split into the per-command issues linked above — each needs its own
*_SCHEMA_VERSION, document builder, and purity tests via the sharedmachine_jsonhelper intests/conftest.py. Not a commitment to do all of them; strike any that turn out to have no script consumers.Related: #195 tracks unifying the older report+embedded-block form of
diagnose --json/probe-adapter --jsonwith this contract.