Evidence bundle

One local artifact per session — verdict, files touched, commands run, tests, tokens — and how it lands on a PR.

Goal#

Get one artifact per session that answers "what shipped, and how do I know it's safe" without re-reading the transcript: the sealing verdict, the guard notes, which files changed, which commands ran, which tests ran and their exit lines, and measured token usage. Read-only, built from data the seal already wrote — never a second source of truth, and never file contents or a diff.

Steps#

  1. After a session seals, read its bundle:

    orch evidence <session>            # bundle.md, skimmable
    orch evidence <session> --json     # bundle.json, uncapped
    

    Both live on disk at <data>/evidence/<session>/{bundle.md,bundle.json}. The MCP tool evidence_bundle {session} (Chair-only) returns the same markdown.

  2. Read the fields: status, guardrails + guardrail_notes, files_changed, commands_run, tests (cmd + exit_line), usage (tokens per CLI, cost_usd when known), review (the cross-vendor verdict — see Cross-vendor review"none" until a reviewer runs), and handoff (the worker's last message to its Chair).

  3. Promoting a session appends a capped summary (1536 bytes) to the worktree_promote reply automatically — nothing to turn on. With gh on PATH and pr: true, the same summary becomes part of the PR body; set evidence.attach_to_pr: false in orch.yaml to promote without it (the promote message still gets the summary either way).

What it never contains#

File contents beyond the changed-file list, and no diff. bundle.md is capped at 4 KB and shows at most 40 commands / 20 tests, truncated with a note; bundle.json is never capped, for tooling that wants the full list.