I1506 — The lifecycle commands become non-interactive capabilities
Move task start, checkpoint and finish, session open and close, handover and evidence into the pattern Phase A establishes, each one non-interactive, so that the exposure policy stops withholding them from every machine surface.
BLOCKED wave 2 · p1 · deep-work profile · runs alone
Part of development-runtime — The runtime has a development surface.
Blocked. This issue cannot start until I1504, I1505 are done. The status is derived from that, not declared.
Objective
Move task start, checkpoint and finish, session open and close, handover and evidence into the pattern Phase A establishes, each one non-interactive, so that the exposure policy stops withholding them from every machine surface.
Why
R4 of the audit's root causes: most tool nodes of the shell program are withheld because they ask the person something, and interactivity is not something a surface can work around. R3 compounds it — the command graph sees the shell tool only at its top level, so every tool node is a group, the exposure policy has nothing to judge, the completion engine has nothing to offer, and the withheld reason for each is a property of the group rather than of the operation. Together they are why the lifecycle is unreachable from MCP, from HTTP and from the Cockpit, which the audit records as the one gap-matrix row whose status is broken for a surface.
Current state
The transitions live in lib/start.sh, lib/session.sh, lib/checkpoint.sh, lib/handover.sh, lib/evidence.sh and lib/finish.sh. continuity.state reads the current task; the write half has no capability. Session context is lib/session_context.sh only, with no Rust owner and no capability.
Desired state
Each lifecycle transition has a typed input, a capability, and therefore a CLI path, an MCP tool and an HTTP route that were not written by hand. What still needs a person is an argument, not a prompt.
Scope
- apps/majordomus-cli/src/capability/builtin
- lib
- share/commands.yaml
- test/cases
Out of scope
- The compiled, budgeted context. It is Phase D of the audit's plan and belongs to the parallel context-compiler work, not here.
- Removing the shell tool. It stays as the person-facing front end and calls the capability.
Dependencies
- I1504READY One development transition is a capability, end to end
- I1505BLOCKED A mutating capability leaves a durable event, and the ledger can be read back
What waits on this
Acceptance criteria
- Each named transition is a capability with a typed input and no interactive prompt on its capability path
- The exposure policy withholds none of them for interactivity
- The command graph judges each operation rather than its group
Validation
- bin/majordomus-cli commands
- bin/majordomus-cli capabilities validate
- bash test/run.sh
Evidence required
- lifecycle_is_reachable
- nothing_withheld_for_interactivity
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
Risk
High. This is the largest surface in the milestone and the one most likely to be attempted before Phase A has proved the pattern. It depends on I1504 and I1505 for that reason and not for a technical one.
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/I1506.yaml. Read it back with majordomus plan show I1506.