todo: opencode signs no commits at all, claude is missing only the id

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-25 09:54:42 +00:00
co-authored by Claude Fable 5
parent 21bc460892
commit c4cd42eb29
2 changed files with 41 additions and 3 deletions
@@ -0,0 +1,38 @@
---
id: agent-coordination/commit-signing-is-inconsistent-across-harnesses
title: 'Commit signing is inconsistent across harnesses — Claude names itself, opencode names nothing'
theme: agent-coordination
status: open
created: 2026-08-25
date_source: stated
order: 3
---
**Every commit an agent makes should be signed with its harness name AND its chat/session id.** Raised
2026-08-25, and the owner's own audit of what actually happens today splits the work in two, because
the two harnesses are missing different halves:
- **Claude Code already does the harness-name half** — every commit in this repo's history carries
`Co-Authored-By: Claude <model> <noreply@anthropic.com>`. The id half is **known and already
blocked**, not missed: `agent-coordination/an-agent-cannot-learn-its-own-session-id` explains why (no
reliable way for a session to learn its own transcript id) and `CLAUDE.md`'s own "An agent's commit
names the session that made it" section names the same precondition. Nothing new to file for Claude —
this item exists for the other half.
- **opencode signs nothing at all.** Not the harness name, not an id — checked 2026-08-25, no
`Co-Authored-By` convention and no session-identifying trailer anywhere in
`src/servers/sidecar/opencode/`. This is a DIFFERENT gap from Claude's: naming the harness has no
precondition and no blocker. It could be added today, independent of the transcript-id mechanism —
opencode simply has no instruction telling it to identify itself in a commit at all.
So there are two pieces of work, not one, and they are not coupled:
1. **opencode: add the harness-name half now.** Whatever hands opencode its system prompt / commit
conventions (the equivalent of `CLAUDE.md` for that harness — search
`src/servers/sidecar/opencode/` for where its instructions are assembled) needs the same
`Co-Authored-By: opencode <...>` line Claude already writes. No dependency on anything unbuilt.
2. **Both harnesses: add the id half once the precondition lands.** This is exactly
`agent-coordination/an-agent-cannot-learn-its-own-session-id` — give every session its own chat id at
turn time (the mechanism `commanderBlock` already proves for commanders), then both harnesses' commit
trailers gain an `Officer-Session:`-style line. Do this once, generalized, rather than solving it
twice per harness.