Conversation
Harness Protocol with read_new(cursor) -> (bytes, new_cursor) so the mirror loop is race-free and works for both file-tail (claude-code, codex, openclaw) and SQLite-poll (hermes, read-only WAL) backends. Redaction v0 (regex denylist, counted in meta) included. OpenClaw + Hermes formats verified against upstream GitHub source. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
mirror tails a harness session into <project>/sessions/<harness>/<id>/ as disjoint part-NNNNN-<uuid>.jsonl files plus a cumulative meta.json. --harness choices are driven by the harness REGISTRY so new adapters auto-extend the CLI. Redaction on by default; --no-redact for trusted buckets. Cursor stored per-session; next part seq derived from bucket LIST so losing local state is non-destructive. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
57 tests total (moto for S3, tmp_path for harness roots, sqlite for hermes). docs/session-mirror.md covers all four harnesses, the cursor model, the bucket layout, and redaction. README gains a session-mirror section and CLI entries. plans/TRACES_V1_PLAN.md records the scope. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
/simplify cleanup pass (4 parallel review agents, converged findings): - Extract FileTailHarness base for the identical read_new/size/ active_session across claude-code, codex, openclaw (hermes stays standalone — SQLite cursor semantics differ). ~26 duplicated lines gone. - Drop read_new_bytes from the Harness Protocol (vestigial; no production caller) — now an internal helper on the base. - mirror: hoist doubled harness.size() call, drop speculative byte_offset back-compat fallback, remove the dead --once flag. - list: remove dead `seen` dedup set (list_keys is already unique). Net -38 lines. 57 tests green, ruff clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Lead with a CLI-coordination-layer hook; differentiator in sentence one. - Hero GIF: two agents race for the same task, second atomically rejected. - Add "Agents talk to each other" section with a messaging GIF. - Dedup the 3x command repetition into one collapsed CLI reference. - Soften unprovable "nobody else does this"; sharpen the moat to cross-host / cross-cloud coordination (the durable differentiator vs single-machine in-process coordination tools). GIFs are real commands against MinIO with real CLI output. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
tracecraft session mirrorcopies a coding agent's session transcript into thesame bucket as coordination state (memory, messages, claims, artifacts). One
bucket holds every agent's reasoning and the messages between them.
Four harnesses behind one
Harnessprotocol:claude-code~/.claude/projects/.../*.jsonlcodex~/.codex/sessions/.../rollout-*.jsonlopenclaw<state>/agents/<id>/sessions/*.jsonlhermes~/.hermes/state.dbPlus
tracecraft session list / show / stop, and redaction v0 (on by default,counted in
meta.json).Design notes
Harness.read_new(cursor) -> (bytes, new_cursor).Cursor is opaque: a byte offset for file harnesses, a
messages.idrowid forHermes. The loop advances to exactly what it consumed.
mode=ro(neverimmutable) so it is safeagainst a live WAL database; new rows read with
WHERE id > :cursor.--harness.Verification
tmp_pathfor harness roots, sqlite for hermes).new rows immediately and
mode=rorefuses writes.Not in this PR
against synthetic data built to the verified schema).
🤖 Generated with Claude Code