Skip to content

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

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.

Searches the titles and descriptions of every page this site publishes.