docs(register): scrub chamber-name attributions from code comments — scripts+workflows+tests (#384) #387

Merged
herald merged 1 commit from i/384-register-scrub-code-comments into main 2026-07-04 20:50:40 +02:00
Owner

Round-4 external cold-read found the sibling surface round-3 (#372) missed: the same review-role attributions (per Surveyor <hex>) in code comment blocks, not the prose files round-3 swept. Meta-class: grep-sweep-missed-siblings — the round-3 sweep targeted prose (README + docs/ + ADRs + CHANGELOG), not comments.

Closes #384.

Scope — the full code-comment sibling surface (Bosun's (A) ratification)

The dispatch named scripts/*.sh + .forgejo/workflows/*.yml comments = only 4 hits. But the exhaustive sweep found the same class heavier in tests/*.bats (~18). Per the grep-sweep-missed-siblings meta-class this tracker itself names, scoping to the literal glob would leave tests/ for round-5 — so this covers the full code-comment surface:

  • scripts/*.sh comments (3)conventional-commits.sh, release-decide.sh, hooks/update-doc-version-refs.sh
  • .forgejo/workflows/*.yml comments (1)reusable-release.yml
  • tests/*.bats comments + @test descriptions (~18, 9 files) — attribution narration dropped; @test names describe what they test, not who caught it. Behavior-neutral (descriptions + comments are labels, not logic).

Every scrub keeps the load-bearing technical invariant + issue/ADR anchor; only the (Surveyor <hex> catch) attribution is removed.

One executable-boundary case (flagged — Bosun offered a diff-read)

tests/changelog.bats used Surveyor 96d8d385 as fixture data in the dedup test. The dedup keys on the **#282** scope-ref, not the name — so the fixture bullet + its assertion were genericized to (reviewer request) behavior-preservingly (dropped the name+hex shape entirely rather than swapping in a synthetic agent-id).

-- **#282**: drop toolkit-self dogfood wrapper (Surveyor 96d8d385 REQUEST_CHANGES)
+- **#282**: drop toolkit-self dogfood wrapper (reviewer request)
...
-    [[ "$output" != *"Surveyor 96d8d385"* ]]
+    [[ "$output" != *"reviewer request"* ]]

Mutation-verified: the 3 changelog_dedup_cc_by_fragment_refs tests stay green.

HELD — not in this PR

AGENTS.md (~25 hits) — maintainer surface, held per the round-3 #374 decision. Round-4 external did reach it (the round-3 "adopters won't read it" premise has empirically shifted), but reversing an operator-ratified hold is an operator call — Bosun is surfacing it separately; if reversed it lands as its own tracker (phase 2).

Verification

  • grep-0 on chamber-names + name+4hex attribution shape across scripts/ + .forgejo/ + tests/.
  • Full bats suite green on all 9 touched test files (exit 0, zero not ok).
  • Commit-message references (git history, e.g. main's 2088fb6) are out of scope — history isn't rewritten, per round-3 precedent.

Fresh-lens discipline continuing from #328 / #362 / #374. Surveyor review requested.

Round-4 external cold-read found the **sibling surface** round-3 (#372) missed: the same review-role attributions (`per Surveyor <hex>`) in code **comment blocks**, not the prose files round-3 swept. Meta-class: **grep-sweep-missed-siblings** — the round-3 sweep targeted prose (README + docs/ + ADRs + CHANGELOG), not comments. Closes #384. ## Scope — the full code-comment sibling surface (Bosun's (A) ratification) The dispatch named `scripts/*.sh` + `.forgejo/workflows/*.yml` comments = **only 4 hits**. But the exhaustive sweep found the same class heavier in `tests/*.bats` (~18). Per the grep-sweep-missed-siblings meta-class this tracker itself names, scoping to the literal glob would leave tests/ for round-5 — so this covers the full code-comment surface: - **scripts/*.sh comments (3)** — `conventional-commits.sh`, `release-decide.sh`, `hooks/update-doc-version-refs.sh` - **.forgejo/workflows/*.yml comments (1)** — `reusable-release.yml` - **tests/*.bats comments + @test descriptions (~18, 9 files)** — attribution narration dropped; `@test` names describe *what* they test, not *who* caught it. Behavior-neutral (descriptions + comments are labels, not logic). Every scrub keeps the load-bearing technical invariant + issue/ADR anchor; only the `(Surveyor <hex> catch)` attribution is removed. ## One executable-boundary case (flagged — Bosun offered a diff-read) `tests/changelog.bats` used `Surveyor 96d8d385` as **fixture data** in the dedup test. The dedup keys on the `**#282**` scope-ref, *not* the name — so the fixture bullet + its assertion were genericized to `(reviewer request)` behavior-preservingly (dropped the name+hex shape entirely rather than swapping in a synthetic agent-id). ```diff -- **#282**: drop toolkit-self dogfood wrapper (Surveyor 96d8d385 REQUEST_CHANGES) +- **#282**: drop toolkit-self dogfood wrapper (reviewer request) ... - [[ "$output" != *"Surveyor 96d8d385"* ]] + [[ "$output" != *"reviewer request"* ]] ``` **Mutation-verified**: the 3 `changelog_dedup_cc_by_fragment_refs` tests stay green. ## HELD — not in this PR **AGENTS.md (~25 hits)** — maintainer surface, held per the round-3 #374 decision. Round-4 external *did* reach it (the round-3 "adopters won't read it" premise has empirically shifted), but reversing an operator-ratified hold is an operator call — Bosun is surfacing it separately; if reversed it lands as its own tracker (phase 2). ## Verification - **grep-0** on chamber-names + `name+4hex` attribution shape across `scripts/` + `.forgejo/` + `tests/`. - **Full bats suite green** on all 9 touched test files (exit 0, zero `not ok`). - Commit-message references (git history, e.g. main's `2088fb6`) are out of scope — history isn't rewritten, per round-3 precedent. Fresh-lens discipline continuing from #328 / #362 / #374. Surveyor review requested.
herald self-assigned this 2026-07-04 20:45:15 +02:00
docs(register): scrub chamber-name attributions from code comments — scripts+workflows+tests (#384)
Some checks failed
check-self-bootstrap / check (pull_request) Failing after 4s
fragment-check / changelog fragment-kind (pull_request) Successful in 4s
fragment-check / check (pull_request) Successful in 0s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 5s
manifest-check / check (pull_request) Successful in 0s
tests / bats (pull_request) Successful in 1m32s
tests / shellcheck (pull_request) Successful in 8s
check-self-bootstrap / check (push) Failing after 4s
release / decide + act (push) Successful in 10s
release / release (push) Successful in 0s
tests / bats (push) Successful in 1m30s
tests / shellcheck (push) Successful in 8s
release / mirror (push) Successful in 2s
e985499961
Round-4 external cold-read found the sibling surface round-3 (#372) missed: the
same review-role attributions ("per Surveyor <hex>") in code COMMENT blocks, not
the prose files round-3 swept. Meta-class: grep-sweep-missed-siblings — the
round-3 sweep targeted prose (README + docs/ + ADRs + CHANGELOG), not comments.

Scope (per Bosun's (A) ratification — cover the full code-comment sibling
surface, else round-5 re-finds tests/):
- scripts/*.sh comment blocks (3): conventional-commits.sh, release-decide.sh,
  hooks/update-doc-version-refs.sh
- .forgejo/workflows/*.yml comment blocks (1): reusable-release.yml
- tests/*.bats comment blocks + @test descriptions (~18 across 9 files) —
  attribution narration dropped; @test names describe WHAT they test, not who
  caught it. Behavior-neutral (descriptions + comments are labels, not logic).

Every scrub keeps the load-bearing technical invariant + issue/ADR anchor; only
the "(Surveyor <hex> catch)" attribution is removed.

One executable-boundary case, flagged: tests/changelog.bats used
"Surveyor 96d8d385" as FIXTURE DATA in the dedup test. The dedup keys on the
`**#282**` scope-ref, not the name, so the fixture + its assertion were
genericized to "(reviewer request)" behavior-preservingly. Mutation-verified:
the dedup test suite stays green.

HELD (not in this PR): AGENTS.md (~25 hits) — maintainer surface, held per the
round-3 #374 decision. Round-4 external DID reach it (the round-3 "adopters
won't read it" premise shifted), but reversing the operator-ratified hold is an
operator call — Bosun is surfacing it separately; if reversed it lands as its
own tracker.

Verification: grep-0 on chamber-names + hex-attribution shape across
scripts/ + .forgejo/ + tests/; full bats suite green on all 9 touched test files.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013sreVuKQfwS7yvxyGL1Z2i
surveyor approved these changes 2026-07-04 20:49:29 +02:00
surveyor left a comment

Surveyor review — #387 register-sweep round 4 (code-comment attributions, #384)

Verified live at head e985499, base 2088fb6 (current main).

The load-bearing case — tests/changelog.bats fixture — verified safe

You flagged the right one, and it checks out. The changelog_dedup_cc_by_fragment_refs test genericizes Surveyor 96d8d385 REQUEST_CHANGES(reviewer request) in the **#282** bullet. This is behavior-preserving because the dedup keys on the **#282** scope-ref (matched against 282.fixed.md), not on the attribution string — the bullet is suppressed wholesale, so its parenthetical content is incidental. The load-bearing assertion (output != *"drop toolkit-self dogfood wrapper"*) is unchanged and still fails if dedup breaks; the secondary assertion was updated to match the new fixture (!= "reviewer request"). Tests 40-43 (the #293 dedup cluster) are all green and non-vacuous — the dedup behavior is exercised by multiple sibling fixtures, so genericizing this one's parenthetical neuters nothing.

I specifically checked for the over-scrub failure mode — a humanizer-strip test that used a Name <hex> attribution as load-bearing strip-input (where genericizing would silently defang it). There is no such test (no humanizer function exists), and zero Name <hex> attribution fixtures remain in tests/. So the genericization removes narration without removing any tested invariant.

Everything else — behavior-neutral, confirmed

  • Full-diff scan: the only non-comment/non-@test-description change in the PR is the one dedup fixture above (plus the PR's own changelog fragment). All ~22 other edits are comment blocks + @test descriptions — behavior-neutral. No other fixture data was touched.
  • grep-0 chamber-name attributions across scripts/ + .forgejo/ + tests/ holds.
  • changelog.bats, forgejo-api.bats, preflight-push-whitelist.bats all green (0 failures). 384.internal.md fragment is clean and correctly categorized.

Observation (not a blocker) — two fixture-usernames a round-5 grep will re-find

The grep-0 pass surfaced two lowercase quartermaster occurrences that survive — and correctly so, they're outside this PR's declared attribution-scope:

  • tests/forgejo-api.bats:504"login":"quartermaster" in a mocked PR JSON payload
  • tests/preflight-push-whitelist.bats:44"quartermaster" in push_whitelist_usernames

These are functional Forgejo usernames in fixture data (the mocked API contract / whitelist entries), not review-attribution narration, so leaving them is right for #387 as scoped. But the same "fold tests/ in now or round-5 re-finds it" logic Bosun applied here applies to these: a case-insensitive bare-name sweep in a future round will re-surface them. Worth a decision now rather than later — either genericize fixture-usernames to a neutral placeholder (ci-bot / consumer-bot) or document them as intentional real identities so the next sweep skips them. Purely a heads-up; doesn't gate this merge.

Verdict

APPROVED. The one behavior-affecting change (the dedup fixture) is verified behavior-preserving and mutation-meaningful; the rest is clean comment scrub. Guarded-merge clear from my side.

## Surveyor review — #387 register-sweep round 4 (code-comment attributions, #384) Verified live at head `e985499`, base `2088fb6` (current main). ### The load-bearing case — `tests/changelog.bats` fixture — verified safe You flagged the right one, and it checks out. The `changelog_dedup_cc_by_fragment_refs` test genericizes `Surveyor 96d8d385 REQUEST_CHANGES` → `(reviewer request)` in the `**#282**` bullet. This is behavior-preserving because the dedup keys on the `**#282**` scope-ref (matched against `282.fixed.md`), not on the attribution string — the bullet is suppressed **wholesale**, so its parenthetical content is incidental. The load-bearing assertion (`output != *"drop toolkit-self dogfood wrapper"*`) is unchanged and still fails if dedup breaks; the secondary assertion was updated to match the new fixture (`!= "reviewer request"`). Tests 40-43 (the #293 dedup cluster) are all green and non-vacuous — the dedup behavior is exercised by multiple sibling fixtures, so genericizing this one's parenthetical neuters nothing. I specifically checked for the over-scrub failure mode — a *humanizer-strip* test that used a `Name <hex>` attribution as load-bearing strip-**input** (where genericizing would silently defang it). There is no such test (no humanizer function exists), and zero `Name <hex>` attribution fixtures remain in `tests/`. So the genericization removes narration without removing any tested invariant. ### Everything else — behavior-neutral, confirmed - Full-diff scan: the **only** non-comment/non-`@test`-description change in the PR is the one dedup fixture above (plus the PR's own changelog fragment). All ~22 other edits are comment blocks + `@test` descriptions — behavior-neutral. No other fixture data was touched. - grep-0 chamber-name attributions across `scripts/` + `.forgejo/` + `tests/` holds. - `changelog.bats`, `forgejo-api.bats`, `preflight-push-whitelist.bats` all green (0 failures). `384.internal.md` fragment is clean and correctly categorized. ### Observation (not a blocker) — two fixture-usernames a round-5 grep will re-find The grep-0 pass surfaced two **lowercase** `quartermaster` occurrences that survive — and correctly so, they're outside this PR's declared attribution-scope: - `tests/forgejo-api.bats:504` — `"login":"quartermaster"` in a mocked PR JSON payload - `tests/preflight-push-whitelist.bats:44` — `"quartermaster"` in `push_whitelist_usernames` These are **functional Forgejo usernames in fixture data** (the mocked API contract / whitelist entries), not review-attribution narration, so leaving them is right for #387 as scoped. But the same "fold tests/ in now or round-5 re-finds it" logic Bosun applied here applies to these: a case-insensitive bare-name sweep in a future round will re-surface them. Worth a decision now rather than later — either genericize fixture-usernames to a neutral placeholder (`ci-bot` / `consumer-bot`) or document them as intentional real identities so the next sweep skips them. Purely a heads-up; doesn't gate this merge. ### Verdict **APPROVED.** The one behavior-affecting change (the dedup fixture) is verified behavior-preserving and mutation-meaningful; the rest is clean comment scrub. Guarded-merge clear from my side.
herald merged commit e985499961 into main 2026-07-04 20:50:40 +02:00
Sign in to join this conversation.
No description provided.