diff --git a/docs/hygiene-history/ticks/2026/05/14/2108Z.md b/docs/hygiene-history/ticks/2026/05/14/2108Z.md new file mode 100644 index 000000000..23575a598 --- /dev/null +++ b/docs/hygiene-history/ticks/2026/05/14/2108Z.md @@ -0,0 +1,103 @@ +# Tick 2026-05-14T21:08Z — review-thread triage round 2 (B-0329 ID-collision renumber + gh api graphql usage fix) + +## Refresh (step 1) + +- Cron sentinel `12fb713e` live. +- #3248 (shard 2103Z) merged as `9de7c6e` during this tick. +- 4 in-flight PRs polled (#3245 / #3246 / #3247 / #3248): + - **#3246** (shard 2059Z) — 1 unresolved Copilot thread + - **#3247** (BACKLOG regen) — 1 unresolved Copilot thread (substantive) + - **#3245 / #3248** — wait-ci, autoMerge armed + +## Holding discipline (step 2) + +Per `blocked-green-ci-investigate-threads.md`: investigate threads first +when BLOCKED + autoMerge armed. + +## Work (step 3) — two thread fixes, one substantive + +### Thread on #3247 — substantive: duplicate B-0329 ID + +Copilot catch: "BACKLOG.md adds a second visible B-0329 entry even +though backlog IDs are required to be factory-wide unique +(tools/backlog/README.md:61). Renumber or otherwise fix the per-row +file before regenerating the index." + +Real data-integrity bug. Two on-disk files both claimed `id: B-0329`: + +- `B-0329-claude-md-as-process-not-doctrine.md` (existing — keep) +- `B-0329-new-surface-audit-alignment-check.md` (NEW — collision) + +Fix: + +- Renamed file: `B-0329-new-surface-audit-alignment-check.md` → + `B-0520-new-surface-audit-alignment-check.md` +- Frontmatter `id: B-0329` → `id: B-0520` +- Body heading `# B-0329 — ...` → `# B-0520 — ...` +- Added `renumbered_from` breadcrumb citing the Copilot catch + #3247 +- Regenerated BACKLOG.md — duplicate B-0329 row removed, B-0520 picked up + +Verifies clean: `grep -c "B-0329" docs/BACKLOG.md` returns 1. No other +refs to the renamed file (grep confirmed). + +Pushed commit `4407e4a` to #3247's branch; thread resolved with reply. + +### Thread on #3246 — accuracy nit: gh api graphql usage + +Copilot catch: "`gh api graphql resolveReviewThread` isn't a valid +`gh api graphql` invocation; `resolveReviewThread` is a GraphQL +mutation field and needs to be passed via `-f query=...`." + +Corrected the 2059Z shard's narrative text to show the canonical +runnable pattern: + +```text +gh api graphql -f query='mutation { resolveReviewThread(input:{threadId:""}) { thread { isResolved } } }' +``` + +Pushed commit `a5b812b` to #3246's branch; thread resolved. + +## Verify (step 4) + +- B-0329 collision: `grep -c "B-0329" docs/BACKLOG.md` returns 1 (only + the original) +- B-0520 appears at end of P1 section in regenerated index +- File rename detected by git (`R` status; 85% similarity) +- Both threads resolved (verified `isResolved=true` via GraphQL) +- Composite branch-guard used at all commits + +## Shard (step 5) + +This file. + +## CronList (step 6) + +Sentinel `12fb713e` armed; one entry, recurring. + +## Visibility (step 7) + +- **PR #3247** (BACKLOG regen): commit `4407e4a` pushed (renumber + + regen); thread resolved; CI re-running +- **PR #3246** (shard 2059Z): commit `a5b812b` pushed (gh api usage + fix); thread resolved; CI re-running +- **#3245 / #3248** still wait-ci, autoMerge armed +- **#3248** (shard 2103Z) merged as `9de7c6e` during the tick + +## Notes for future-Otto + +ID-collision class of bugs (multiple on-disk files claiming the same +`id: B-NNNN`) is a real data-integrity failure mode. The +`tools/backlog/generate-index.ts` output makes it visible (duplicate +checkbox lines) but doesn't refuse to generate; Copilot's catch was the +review-time signal. + +The `renumbered_from` frontmatter breadcrumb pattern preserves the +archaeology without needing a separate ADR — anyone grep-ing for the +old ID in the renamed file finds the breadcrumb explaining why. + +Audit-discipline candidate (filed mentally for next tick): a small +hygiene script `tools/hygiene/audit-backlog-id-uniqueness.ts` that +walks per-row files, parses frontmatter `id` fields, and reports any +duplicates. Would have caught this at author-time rather than review- +time. Not authoring this tick (B-0488 row noted similar tools exist +under `tools/hygiene/`; should check before duplicating).