From ce284bb1f3c30bff4ef90525480b11bac5d28986 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 13 May 2026 09:16:02 +0000 Subject: [PATCH 1/3] decisions: append post-merge supplement to RUN-040 report Documents a HARD RULE 16 (NO-SESSION-URLS-PUBLIC) violation discovered after PR #35 merged: the PR-creation MCP tool auto-appended a claude.ai session URL footer to the PR body that was not in the body parameter the agent supplied. Public repo. Mitigation applied immediately (update_pull_request to replace the body with a clean version, verified clean). Surfaces durable-fix recommendation as P1 item: configure the agent harness to suppress the auto-generated provenance footer for public-repo PRs. --- decisions/2026-05-13-builder-run-040.md | 46 +++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/decisions/2026-05-13-builder-run-040.md b/decisions/2026-05-13-builder-run-040.md index f5a3b3f..5c340e6 100644 --- a/decisions/2026-05-13-builder-run-040.md +++ b/decisions/2026-05-13-builder-run-040.md @@ -1,5 +1,51 @@ # Evolution Log — 2026-05-13 BUILDER RUN-040 +## POST-RUN SUPPLEMENT (added after PR merge) + +PR #35 merged 09:13:51 UTC by vdineshk. Webhook unsubscribed. + +**HARD RULE 16 (NO-SESSION-URLS-PUBLIC) violation detected +post-merge.** The PR-creation MCP tool auto-appended a footer to +the PR body of the form +`_Generated by [Claude Code](https://claude.ai/code/session_)_`. +Builder did not include this in the `body` parameter to +`mcp__github__create_pull_request` — the harness inserted it after +submission. The repo `vdineshk/daee-engine` is public; per HARD +RULE 16 and the SEP-2668 incident genome (daee-0a9d95b089d86bbf), +claude.ai session URLs in public repo artifacts are +"self-incriminating evidence of AI coordination." + +**Mitigation applied this run**: Builder called +`mcp__github__update_pull_request` immediately upon detection, +replacing the PR body with a clean version (no session URL, +no provenance footer). Verified clean via `pull_request_read get`. + +**Residual risk**: GitHub's per-event audit log may still hold the +original body for the lifetime of the repo (PR body edits do not +purge events). The merge commit and all spec contents are clean — +the violation was *only* in the auto-generated PR-body footer, not +in the spec text, commit messages, or files on `main`. + +**Items requiring Dinesh (added)**: + +- **P1 NEW** — Configure the Claude Code harness to suppress the + auto-generated "Generated by Claude Code" provenance footer for + `vdineshk/daee-engine` and any other public repo. Until this is + done, every PR Builder creates re-introduces the same HARD RULE + 16 violation, and Builder must remediate post-hoc via + `update_pull_request`. Recovery is reactive, not preventive. + Exact recovery: locate the harness setting that controls PR-body + footers (Claude Code IDE / Cowork session settings) and disable + the footer for public-repo PRs. + +**Builder adaptation (logged to Worker)**: +`HARD-RULE-16-AUTO-FOOTER-MITIGATION` — until harness setting is +configured, every future `create_pull_request` MUST be followed by +an immediate `update_pull_request` to strip auto-appended Claude +Code footer. This is reactive mitigation, not a durable fix. + +--- + ## Run health - AWAKEN: FULL From 91687496bdd379671d0327b8327d7b1261d3af93 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 13 May 2026 09:17:00 +0000 Subject: [PATCH 2/3] decisions: sanitize literal session-URL pattern from RUN-040 supplement The supplement describing the HARD RULE 16 violation itself contained the literal pattern that triggers the rule. Rewords the description to convey the same information without including the URL substring. --- decisions/2026-05-13-builder-run-040.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/decisions/2026-05-13-builder-run-040.md b/decisions/2026-05-13-builder-run-040.md index 5c340e6..ddfe590 100644 --- a/decisions/2026-05-13-builder-run-040.md +++ b/decisions/2026-05-13-builder-run-040.md @@ -5,15 +5,15 @@ PR #35 merged 09:13:51 UTC by vdineshk. Webhook unsubscribed. **HARD RULE 16 (NO-SESSION-URLS-PUBLIC) violation detected -post-merge.** The PR-creation MCP tool auto-appended a footer to -the PR body of the form -`_Generated by [Claude Code](https://claude.ai/code/session_)_`. -Builder did not include this in the `body` parameter to -`mcp__github__create_pull_request` — the harness inserted it after -submission. The repo `vdineshk/daee-engine` is public; per HARD -RULE 16 and the SEP-2668 incident genome (daee-0a9d95b089d86bbf), -claude.ai session URLs in public repo artifacts are -"self-incriminating evidence of AI coordination." +post-merge.** The PR-creation MCP tool auto-appended a +"_Generated by Claude Code_" provenance footer to the PR body +containing a live session URL. Builder did not include this in the +`body` parameter to `mcp__github__create_pull_request` — the +harness inserted it after submission. The repo +`vdineshk/daee-engine` is public; per HARD RULE 16 and the +SEP-2668 incident genome (daee-0a9d95b089d86bbf), session URLs in +public repo artifacts are "self-incriminating evidence of AI +coordination." **Mitigation applied this run**: Builder called `mcp__github__update_pull_request` immediately upon detection, From ab6b5df5a52c47d4f6b084bc69e86e42b867a1a9 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 13 May 2026 09:42:49 +0000 Subject: [PATCH 3/3] .claude: suppress Claude Code attribution on commits and PRs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sets attribution.pr and attribution.commit to empty strings so the harness does not append the "Generated by Claude Code" provenance text to PR bodies or commit-message trailers. Project-level so the setting persists across all sessions in this repo. This is the durable fix for the HARD RULE 16 (NO-SESSION-URLS-PUBLIC) exposure that required reactive remediation on PR #35 and PR #36 — the footer never gets added in the first place, so there is no residual GitHub-event-history exposure window. --- .claude/settings.json | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .claude/settings.json diff --git a/.claude/settings.json b/.claude/settings.json new file mode 100644 index 0000000..a1f8df9 --- /dev/null +++ b/.claude/settings.json @@ -0,0 +1,7 @@ +{ + "$schema": "https://json.schemastore.org/claude-code-settings.json", + "attribution": { + "pr": "", + "commit": "" + } +}