diff --git a/HARNESS.md b/HARNESS.md index 0381be5..af95248 100644 --- a/HARNESS.md +++ b/HARNESS.md @@ -90,6 +90,12 @@ even when it is harmless. The asymmetry is the argument: a commit you did not wa away, and work that existed only in the working tree when something went wrong is gone. If you want the tree left dirty, say so and the loop stops at Document. +Authorship records who wrote the bytes: a commit the agent wrote is authored by it, one you both wrote +is yours with the agent as co-author, one you wrote alone names only you (`conventions.md` "Git"). You +remain the committer and the signature in every case — the key says you take responsibility for the +commit, which is not the same claim as having typed it. `git log --author=Claude` is then a truthful +answer to how much of this the agent wrote. + **What is staged has to build, not just the working tree.** Every other gate looks at your files; this one looks at the commit you are about to make, by building a throwaway checkout of the index. It exists because staging a subset — a changed signature without its caller — produced a commit that did not compile while diff --git a/docs/conventions.md b/docs/conventions.md index b9d5a82..d5e27af 100644 --- a/docs/conventions.md +++ b/docs/conventions.md @@ -107,3 +107,17 @@ already wrong beforehand is a separate unit even when it lands in the same sitti Imperative subject under 72 characters; body says *why*, and carries the numbers the change earned. Committing happens by itself and needs no request (`CLAUDE.md` §4); pushing never does. + +**Authorship names who wrote the bytes, not who asked for them.** Three cases, no fourth: + +| Who wrote the change | `Author` | Trailer | +|---|---|---| +| the agent alone | `Claude Opus 5 ` | none — the author field already says it | +| both | the human | `Co-Authored-By: Claude Opus 5 ` | +| the human alone | the human | none | + +Directing a change is not writing it: a one-sentence request that the agent implements in full is +agent-authored. The committer stays the human in every case, and so does the signature — the key +attests to taking responsibility for the commit, which is a different claim from having written it. +`git log --author=Claude` is then an honest answer to "how much of this did the agent write", which is +the whole point of recording it. diff --git a/docs/state.md b/docs/state.md index 2878411..60ef27b 100644 --- a/docs/state.md +++ b/docs/state.md @@ -1,6 +1,6 @@ # State -**Verified against:** `8900aab` on 2026-07-30 — update this line every change. +**Verified against:** `de1ce73` on 2026-07-30 — update this line every change. If this file disagrees with the code, the code is right and this file is a bug. ## Inventory