Repository navigation
Open
Labels
1-ready-for-agentValidated work, sufficiently specified for an autonomous agentValidated work, sufficiently specified for an autonomous agent2-type:featureNew or improved functionality; specification lives in the issueNew or improved functionality; specification lives in the issue3-pty:p2Normal planned work; default when no priority is establishedNormal planned work; default when no priority is established
Description
Outside the plan: this card comes from the refinement of #451 after the decision of #450 (D069). Pascal approved this split on 2026-11-04.
Problem
D069 decides how a build records the session ID of each author and of the reviewer. No code captures these IDs today. Without a capture, the receipts of the other Stories of Epic 18 have no source.
Goal
A launcher starts each author session and each reviewer session. The SessionStart hook of the harness writes the emitted session ID into a context file of that invocation. No agent types its own ID. This follows D069 section 1 and section 2.
Acceptance rules
- The shared SDK program holds the capture logic (D067). The template supplies only the project hook declarations and the launcher recipes, and copies only calls and forms.
- The launcher creates one context file for each invocation before it starts the harness. It exports the context path, the role and the expected repository to the harness and to its Git subprocesses.
- The hook writes the emitted
session_id, the harness version, the event, the source, the role and the repository into that context. - The supported floors are Claude Code 2.1.317 and Codex 0.166.0. The launcher checks the installed version. Configuration alone proves nothing: the launcher requires an actual capture.
- On resume, clear, compact or fork, the hook records the new event and the new emitted ID.
- A missing context, a wrong repository, a stale capture or a hook that did not run stops the launcher with a setup instruction. The launcher never falls back to an ID that an agent writes.
- No owned recipe accepts a session ID argument. A launcher UUID for Claude
--session-idis valid only when the emitted hook confirms that exact value. A transcript filename, display name, tool-call ID or Codex child thread ID is never a substitute. - Nicely does not edit the global Claude or Codex settings of the user. The setup uses the supported trust interface of each harness.
Examples
- Success: the author launcher starts Claude Code 2.1.317. The context holds the emitted
session_id,harness = claude-code,role = authorand the repository. - Failure: Codex 0.165.0 is installed. The launcher stops and names the supported floor.
- Failure: the project hooks are not trusted, so the hook does not run. The launcher stops with the trust instruction, and it writes no ID.
Check
Scenarios under testdata/script/ replay recorded hook inputs for each example. scripts/template-test.sh passes.
by Opus-5.5 via Claude Code
Metadata
Metadata
Assignees
Labels
1-ready-for-agentValidated work, sufficiently specified for an autonomous agentValidated work, sufficiently specified for an autonomous agent2-type:featureNew or improved functionality; specification lives in the issueNew or improved functionality; specification lives in the issue3-pty:p2Normal planned work; default when no priority is establishedNormal planned work; default when no priority is established
Activity