Skip to content

Remove the session-link trailer from the decision log, and gate the tree and PR text against attribution - #451

Draft
nyblnet wants to merge 1 commit into
mainfrom
no-attribution-gate
Draft

Remove the session-link trailer from the decision log, and gate the tree and PR text against attribution#451
nyblnet wants to merge 1 commit into
mainfrom
no-attribution-gate

Conversation

@nyblnet

@nyblnet nyblnet commented Sep 12, 2026

Copy link
Copy Markdown
Owner

docs/DECISIONS.md ended with a Claude-Session: line inside the file body, added by #415 and copied into that PR's squash commit from its description. Removed.

Cause. Claude Code's attribution.sessionUrl setting (default true) injects a session-start instruction to append the session link to commits and PR bodies from Remote Control sessions. The maintainer's settings hid the co-author text (attribution.commit/pr empty) but left sessionUrl at its default, so the instruction kept arriving; one session wrote its DECISIONS entry like a commit message and put the trailer where the message would have ended.

Fix, three layers.

  1. .claude/settings.json (tracked, new): attribution.sessionUrl: false, so every clone and session gets it. Also set in the maintainer's user settings.
  2. The commit-msg hook (ops' branch, .githooks/) covers local commits — it cannot see file contents and does not run for a GitHub squash.
  3. scripts/test-no-attribution.ts in CI: scans every tracked text file and the PR title/body from the pull_request event (the text a squash-merge copies into main). Self-tests its patterns first; negative-controlled by re-injecting the actual line from bde4dce (2 findings). Registered in ci.yml in the same PR because test-ci-registered.ts fails on an unregistered rig.

DECISIONS entry included. Paths touched outside slides: scripts/, .github/workflows/ci.yml, .claude/ — claimed by path on the board.

…contents and PR text against attribution

The trailer reached docs/DECISIONS.md through #415: Claude Code's
attribution.sessionUrl setting (default true) injects a session-start
instruction to append the link, and one session wrote its entry like a
commit message. Set the option off in the tracked .claude/settings.json,
and add scripts/test-no-attribution.ts to CI: it scans every tracked
file and the PR title/body (the text a squash-merge copies into main),
self-tests its patterns first, and was verified by re-injecting the
actual line.
@github-actions

Copy link
Copy Markdown

Build size

main (accf858) → no-attribution-gate (6f2e666)

app base PR change
bento/slides 678.5 KiB 678.5 KiB 0.0 KiB (0.00%)
bento/spaces 271.3 KiB 271.3 KiB 0.0 KiB (0.00%)
bento/dash 424.1 KiB 424.1 KiB 0.0 KiB (0.00%)

Updated: 2026-09-12T22:58:51Z

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant