From cfdda9947362bbc6b9c4fb102255fdff366d177c Mon Sep 17 00:00:00 2001 From: Kyle Sexton <153232337+kyle-sexton@users.noreply.github.com> Date: Thu, 23 Jul 2026 18:13:33 -0400 Subject: [PATCH 1/2] docs(migration-playbook): record convention-seam ratification limitation (#1187) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Close the #1187 provenance audit with a durable decision record rather than a forgery-prone gate. Finding: in this solo-autonomous setup the operator and all agents share the kyle-sexton identity, so no in-repo signal (author/reviewer/ merger/signature) distinguishes human ratification from agent accretion — a repo-wide property, not a per-seam defect. Decision: decline CODEOWNERS/label/signing gates under the shared identity as theater (an agent satisfies the same gate → false assurance). The only real distinguisher is a separate human-only identity/signing key agents don't hold, flagged as an infra option with a revisit trigger, not imposed. Interim posture: ratification stays trust-based and visible via cited issues/PRs + operator engagement, with the audit trail as the durable record. Closes #1187 Co-Authored-By: Claude Fable 5 --- docs/MIGRATION-PLAYBOOK.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/docs/MIGRATION-PLAYBOOK.md b/docs/MIGRATION-PLAYBOOK.md index 28c37e97e2..76800aaa67 100644 --- a/docs/MIGRATION-PLAYBOOK.md +++ b/docs/MIGRATION-PLAYBOOK.md @@ -1138,3 +1138,35 @@ with a revisit trigger. (Contrast the "Deferred surfaces" record above, where th - **Checker hardening** (block-scalar description unfolding, an unquoted-`Use when:` warning, a `CHECK_SKILL_BASE_REF` post-commit audit ref for the git-backed checks, and a line-1 frontmatter-fence requirement): the one worker-executable slice — **landed** with this record. + +## Convention-seam ratification & the shared-identity limitation — decision record (2026-07-23) + +Recorded from the #1187 audit (triggered when the operator did not recall ratifying the +`consumer-config-layering` → `config-cascade` seam). All 12 `docs/conventions/*` seams are +PR-introduced across the repo's whole history and each cites a ratifying issue/PR — that citation **is** +the ratification norm (e.g. `config-cascade`'s exception class ratified by #649). No seam was silently +accreted. + +**The limitation, stated plainly.** In this solo-autonomous setup the operator and every agent act as +the **same `kyle-sexton` GitHub identity** (the account `gh` is scoped to). So authored-by / +reviewed-by / merged-by / commit-signature all resolve to `kyle-sexton` whether the human or an +agent-as-Kyle did the work. **No in-repo signal distinguishes human ratification from agent +accretion** — and this is a **repo-wide property**, applying to every change here, not a defect of any +one seam. + +**Decision — decline forgery-prone gates; they are theater.** A `CODEOWNERS` rule or a `human-ratified` +label requiring a `kyle-sexton` review does **not** distinguish anything: an agent satisfies the same +gate under the same identity. Commit signing already runs (`required_signatures`) but under the shared +key, so it does not separate either. Standing up such a gate would manufacture *false* assurance — +worse than naming the limitation. So none is added. + +**The only real distinguisher (flagged, not imposed).** Cryptographic separation requires an identity +agents do **not** hold — a distinct human-only GitHub account and/or a signing key kept off the agent +runners, with branch protection requiring that identity's review on `docs/conventions/**`. That is an +infrastructure change with real operator cost. **Revisit trigger:** the operator wants provable human +ratification, or a second human contributor joins (at which point identity separation exists naturally). + +**Interim posture.** Ratification stays **trust-based and visible**: a convention-seam change cites a +ratifying issue/PR, and the operator's explicit engagement on that thread (as in the #163434 session) +is the ratification signal. The audit trail — issue, review comments, this record — is the durable +account, in place of an assurance the shared identity cannot provide. From df795b98bcfe5c680e6d4de058734fdd58c57956 Mon Sep 17 00:00:00 2001 From: Kyle Sexton <153232337+kyle-sexton@users.noreply.github.com> Date: Thu, 23 Jul 2026 18:18:44 -0400 Subject: [PATCH 2/2] docs(migration-playbook): correct provenance record per review (#1187) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Address PR #1193 Codex P2s — both factual corrections to the ratification record: - The identity claim was too broad. Git commit metadata (author/committer/ Co-Authored-By) DOES carry a distinct agent identity — this record's own commit is authored by Codex, not kyle-sexton. The collapse-to-kyle-sexton happens only at the GitHub gh-account layer (PR author/review/merge/attribution). Split the record into the two provenance layers and note commit-author metadata is a soft, spoofable signal, not proof. - Not every seam cites its ratifying issue/PR in-doc (hook-precision, seam-phrasing don't). Narrowed the claim: all 12 are PR-introduced (git history), but in-doc citation is inconsistent; converging on it is a stated follow-up, not asserted as already-true. Co-Authored-By: Claude Fable 5 --- docs/MIGRATION-PLAYBOOK.md | 50 ++++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/docs/MIGRATION-PLAYBOOK.md b/docs/MIGRATION-PLAYBOOK.md index 76800aaa67..06ddecbf98 100644 --- a/docs/MIGRATION-PLAYBOOK.md +++ b/docs/MIGRATION-PLAYBOOK.md @@ -1143,22 +1143,34 @@ with a revisit trigger. (Contrast the "Deferred surfaces" record above, where th Recorded from the #1187 audit (triggered when the operator did not recall ratifying the `consumer-config-layering` → `config-cascade` seam). All 12 `docs/conventions/*` seams are -PR-introduced across the repo's whole history and each cites a ratifying issue/PR — that citation **is** -the ratification norm (e.g. `config-cascade`'s exception class ratified by #649). No seam was silently -accreted. - -**The limitation, stated plainly.** In this solo-autonomous setup the operator and every agent act as -the **same `kyle-sexton` GitHub identity** (the account `gh` is scoped to). So authored-by / -reviewed-by / merged-by / commit-signature all resolve to `kyle-sexton` whether the human or an -agent-as-Kyle did the work. **No in-repo signal distinguishes human ratification from agent -accretion** — and this is a **repo-wide property**, applying to every change here, not a defect of any -one seam. +**PR-introduced** across the repo's whole history (established from git history), so none was silently +accreted. In-doc issue/PR citation is the intended ratification signal but is **inconsistent** across +the surfaces today — some seams cite their ratifying issue in the README/CHANGELOG (`config-cascade`'s +exception class → #649), others (`hook-precision`, `seam-phrasing`) carry no in-doc reference, so an +operator auditing from the durable convention surface alone cannot always find it. Converging every +seam on an in-doc citation is a follow-up, not asserted here as already-true. + +**The limitation, stated precisely — two provenance layers, only one collapses.** Distinguish: + +- **Git commit metadata** (author, committer, `Co-Authored-By` trailers) **does** carry a distinct + identity — this very record's commit is authored by `Codex `; other agents commit + under their own identity (e.g. a `Co-Authored-By: Claude …` trailer). So at the commit layer, agent + work is often *visible*. But it is **soft, not proof**: an agent can set its git author to anything, + so absence of an agent identity does not prove a human authored it. +- **GitHub gh-account actions** — PR author, PR review, merge, and the account a commit is *attributed + to* — **all collapse to `kyle-sexton`** (the account `gh` is scoped to), whether the human or an + agent-as-Kyle acted. At *this* layer no in-repo signal distinguishes human ratification from agent + accretion. + +So the gap is specifically at the **GitHub-account / review-and-merge layer**, which is exactly where +"ratification" is recorded — and it is a **repo-wide property**, not a defect of any one seam. **Decision — decline forgery-prone gates; they are theater.** A `CODEOWNERS` rule or a `human-ratified` -label requiring a `kyle-sexton` review does **not** distinguish anything: an agent satisfies the same -gate under the same identity. Commit signing already runs (`required_signatures`) but under the shared -key, so it does not separate either. Standing up such a gate would manufacture *false* assurance — -worse than naming the limitation. So none is added. +label requiring a `kyle-sexton` review does **not** distinguish anything at the account layer: an agent +satisfies the same gate under the same identity. Commit signing already runs (`required_signatures`) +but under the shared key, so it does not separate either, and commit-author metadata is spoofable as +above. Standing up such a gate would manufacture *false* assurance — worse than naming the limitation. +So none is added. **The only real distinguisher (flagged, not imposed).** Cryptographic separation requires an identity agents do **not** hold — a distinct human-only GitHub account and/or a signing key kept off the agent @@ -1166,7 +1178,9 @@ runners, with branch protection requiring that identity's review on `docs/conven infrastructure change with real operator cost. **Revisit trigger:** the operator wants provable human ratification, or a second human contributor joins (at which point identity separation exists naturally). -**Interim posture.** Ratification stays **trust-based and visible**: a convention-seam change cites a -ratifying issue/PR, and the operator's explicit engagement on that thread (as in the #163434 session) -is the ratification signal. The audit trail — issue, review comments, this record — is the durable -account, in place of an assurance the shared identity cannot provide. +**Interim posture.** Ratification stays **trust-based and visible**: a convention-seam change **should +cite** a ratifying issue/PR in-doc (the norm going forward — converging existing seams on it is the +follow-up above), and the operator's explicit engagement on that thread (as in the #163434 session) is +the ratification signal. The audit trail — issue, review comments, commit-author metadata where it +carries an agent identity, and this record — is the durable account, in place of an account-layer +assurance the shared GitHub identity cannot provide.