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
I1506
The lifecycle commands become non-interactive capabilities
Where it stands
devtask.issue- Readiness
- blocked 2 of its dependencies are not DONE
- Status
- BLOCKED
- Can start
- not now
- Milestone
- Milestone status
- ACTIVE
- Wave
2- Waiting on
- Holds back
- Behind it in all
1- Evidence
0of2
| In the way | Subject | Detail |
|---|---|---|
| issue | I1504 | I1504 is not DONE |
| issue | I1505 | I1505 is not DONE |
Moves
plan.transitionWhat it is
- 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.
- Now
- 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.
- Wanted
- 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.
- Done when
- unknown: the record declares no `completion`
- 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.
Acceptance
- 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 commandsbin/majordomus-cli capabilities validatebash test/run.sh- Evidence required
lifecycle_is_reachablenothing_withheld_for_interactivity- Evidence present
- unknown: the record carries no `evidence` entries
Scope
- Touches
apps/majordomus-cli/src/capability/builtinlibshare/commands.yamltest/cases- Not
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.- Depends on
- Priority
- p1
- Profile
- deep-work
- Parallel safe
- false
- Owner
- unknown: the record declares no `owner`
The work so far
- Branches
- none
- Merged
- none
- Commits
0- Trunk
- master
- Sessions
- none
- Created
- 2026-09-11
- Updated
- 2026-09-11
- Started
- unknown: the record declares no `started_at`
- Verified
- unknown: the record declares no `verified_at`
- Completed
- unknown: the record declares no `completed_at`
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.