Skip to content

feat(sdk): the launcher captures the session ID of each author and reviewer from the harness hook #478

Open

Description

@pascalandy

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

  1. 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.
  2. 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.
  3. The hook writes the emitted session_id, the harness version, the event, the source, the role and the repository into that context.
  4. 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.
  5. On resume, clear, compact or fork, the hook records the new event and the new emitted ID.
  6. 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.
  7. No owned recipe accepts a session ID argument. A launcher UUID for Claude --session-id is 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.
  8. 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 = author and 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

No one assigned

    Labels

    1-ready-for-agentValidated work, sufficiently specified for an autonomous agent2-type:featureNew or improved functionality; specification lives in the issue3-pty:p2Normal planned work; default when no priority is established

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions