Skip to content

I3144 — Checkpoints and handovers are recorded against the episode, and the shell only parses and renders them

ADR 0047 step 4: lib/checkpoint.sh and lib/handover.sh become argument parsing and rendering over the domain, which writes checkpoints and handovers against the episode.

BLOCKED wave 3 · p2 · implementation profile · parallel safe

Part of the-session-domain-is-written-once — The session lifecycle is written by the typed domain, and the shell only parses and renders.

Blocked. This issue cannot start until I3142 is done. The status is derived from that, not declared.

Objective

ADR 0047 step 4: lib/checkpoint.sh and lib/handover.sh become argument parsing and rendering over the domain, which writes checkpoints and handovers against the episode.

Why

ADR 0052 found that tying checkpoints to the task disabled them for six days; ADR 0047 lists this as the fourth cutover step. Sources: chatgpt-majordomus:c109#3.

Current state

lib/checkpoint.sh (100 lines) and lib/handover.sh (174 lines; wc -l at 707a04c) write .ai/local/state/{checkpoints,handovers}; their front matter carries task_id and no session_id; cases 05_handover and 50_blocker_across_handover hold the behaviour.

Desired state

The domain writes both; the shell files are thin.

Scope

  • lib/checkpoint.sh
  • lib/handover.sh
  • apps/majordomus-cli/src/session
  • apps/majordomus-cli/src/continuity

Out of scope

  • The handover body format (Objective, Current State, Next Action)

Dependencies

What waits on this

Acceptance criteria

  • cases 05, 50, 130_lifecycle_survives_a_stale_task and 822 pass unchanged
  • A checkpoint is still written with no active task (regression check; it holds on master)

Validation

  • bash test/run.sh --no-skips 05_handover 50_blocker_across_handover 130_lifecycle_survives_a_stale_task 822_a_dirty_handover_restores_context_not_source

Evidence required

  • case_handover_written_by_the_domain

Evidence

None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.

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/I3144.yaml. Read it back with majordomus plan show I3144.

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