Skip to content
Cockpit0.29.0
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
0 of 2
In the waySubjectDetail
issueI1504I1504 is not DONE
issueI1505I1505 is not DONE
A move writes the repository: it stamps one field of this issue's record and appends one event to the ledger, and a commit will carry both.
The same moves from a terminal

majordomus plan start I1506

majordomus plan verify I1506

majordomus plan done I1506

What 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.