A snapshot: read at commit 707a04c7ce8 on 2026-10-18T00:06:01Z by majordomus 0.29.0. Nothing on this page is read again. See it live
I1981
A command's effect class is declared per subcommand and flag, and live scenarios judge the whole argv
Where it stands
devtask.issue- Readiness
- complete completion is recorded and every required evidence token is present
- Status
- DONE
- Can start
- not now
- Milestone
- Milestone status
- ACTIVE
- Wave
0- Waiting on
- none
- Holds back
- Behind it in all
1- Evidence
4of2
Moves
plan.transitionWhat it is
- Objective
- Declare read-only or state-mutating per subcommand and per flag in share/commands.yaml where a command has both, and make live use-case validation and runs judge the full argument vector against that declaration.
- Why
- share/commands.yaml classes `knowledge` state-mutating as a whole, so live scenarios refuse its read-only edges, nodes and sources. OSCILLA cb79d27 had to copy its tracked tree into a fixture to prove a knowledge edge. It classes `check` read-only with writes [], yet `check --checkpoint` writes .ai/local/state/current.yaml, so a live step can change state while being admitted as read-only.
- Now
- lib/usecase.sh:383-386 admits a live step when the top-level command's class is read-only (commands.sh:27). The registry has no per-subcommand or per-flag effect.
- Wanted
- The registry carries an effect per subcommand and flag where they differ. lib/usecase.sh validate and run refuse a live step whose argv reaches a writing path and admit one that only reads. doctor reconciles the declaration with the dispatch as it does today.
- Done when
- unknown: the record declares no `completion`
- Risk
- unknown: the record declares no `risk`
Acceptance
- A live scenario step `knowledge edges` validates and runs
- A live scenario step `check --checkpoint` is refused at validate time, naming the flag
- The command-registry reconciliation in doctor covers the new per-subcommand declarations
- Validation
bin/majordomus plan validateMJ_TEST_JOBS=4 bash test/run.sh <the case this issue adds>- Evidence required
live_scenario_reads_knowledgelive_scenario_refuses_writing_flag- Evidence present
live_scenario_reads_knowledgelive_scenario_refuses_writing_flaglive_scenario_reads_knowledgelive_scenario_refuses_writing_flag
Scope
- Touches
share/commands.yamllib/usecase.shlib/commands.shdocs/CLI.mdtest/cases/359_live_scenarios.shtest/fixtures/commands- Not
- unknown: the record declares no `non_scope`
- Depends on
- unknown: the record declares no `depends_on`
- Priority
- p0
- Profile
- implementation
- Parallel safe
- true
- Owner
- unknown: the record declares no `owner`
The work so far
- Branches
- none
- Merged
- none
- Commits
0- Trunk
- master
- Sessions
- none
- Created
- 2026-10-04
- Updated
- 2026-10-14T07:39:39Z
- Started
- 2026-10-11T05:05:14Z
- Verified
- 2026-10-11T05:05:29Z
- Completed
- 2026-10-14T07:39:39Z
Synchronisation
- Adapter
scripts/github-sync- Repository
- unknown: the derived plan's header carries no repository
- External issue
- unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
- State there
- unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
Findings
Nothing is wrong with these records.