backlog(B-0686): tick-shard immutability CI gate proposal (P3, post-#4534 substrate engineering)#4539
Merged
AceHack merged 1 commit intoMay 21, 2026
Conversation
Substrate-engineering proposal triggered by Codex P1 catch on PR #4534 (2026-05-21 cleanup arc). The cleanup arc violated the documented tick-shard immutability discipline by editing historical shards to fix path-depth bugs; the discipline relies on author-side recognition which failed. P3 — substrate-engineering tier; bounded effort (S); composes with B-0530 multi-Otto coordination work. Includes substrate-honest caveat: if reviewer decides the lesson is sufficient as-documented (no gate needed), close as wontfix. The row's existence as a record IS the substrate even if implementation never ships. Co-Authored-By: Claude <noreply@anthropic.com>
Member
Author
|
Vera post-merge CI handoff for #4539: I inspected the failed job after the PR had already merged. State:
Failed deterministic gate:
This is not a transient rerun candidate. Follow-up on |
There was a problem hiding this comment.
Pull request overview
Adds backlog row B-0686 to capture a substrate-engineering proposal for a CI gate that prevents post-grace-period edits to historical tick shards under docs/hygiene-history/ticks/YYYY/MM/DD/HHMMZ.md.
Changes:
- Introduces a new P3 backlog row describing the motivation, proposed mechanism, and acceptance criteria for a tick-shard immutability gate.
Comment on lines
+1
to
+5
| --- | ||
| id: B-0686 | ||
| priority: P3 | ||
| status: open | ||
| title: Tick-shard immutability CI gate — block PRs modifying historical shards after grace period |
Comment on lines
+53
to
+55
| - [ ] Baseline at `tools/hygiene/audit-tick-shard-immutability.baseline.json` capturing the existing violations from the 2026-05-21 cleanup arc (so the gate can land without burst-cleanup) | ||
| - [ ] CI workflow entry in `.github/workflows/gate.yml` as non-required initial check | ||
| - [ ] Self-test: the gate would have failed each of #4524–#4533 (verifying retroactive correctness) |
4 tasks
AceHack
added a commit
that referenced
this pull request
May 21, 2026
…n-termination (#4541) * shard(2026-05-21/1410Z): 10-PR cleanup arc close + forced-#6 recursion-termination Documents the 1019Z → 1410Z (~3h) cleanup arc closure: - 10 substrate PRs (9 merged + 1 closed-redundant): #4523 / #4524 / #4525 / #4526 / #4529 (closed) / #4531 / #4533 / #4534 / #4538 / #4539 - Audit baseline: 39 entries (19 active) → 0 - Audit tool gained stripInlineCodeSpans + 8-test test suite - Codex P1 mid-arc catch → substrate-honest pivot to compatibility-artifact - B-0686 backlog row filed for substrate-engineering follow-up Forced-#6 recursion-termination per holding-without-named-dependency rule: post-arc holding hit brief-ack #5 with explicit non-pre-empt (available substrate would be fabricated); #6 = forced escalation; this shard IS the substrate-honest recursion-termination per the rule's own clause. Self-application catch: initial shard authoring had the one-too-few-`..` bug (5 dots → 6 dots needed for .claude/rules/ from 6-deep shard). Caught BEFORE commit by the audit tool I landed in this same session (#4538) — substrate working as designed; loop closed. Co-Authored-By: Claude <noreply@anthropic.com> * fix(1410Z): correct shard count 1139 → 1141 per Codex P2 Codex P2 (PRRT_kwDOSF9kNM6D1EV5): my shard reported "0 broken relative-path links across 1139 shards" but at this commit's tree there are 1141 shards. The 1139 was an earlier intermediate count from before this shard was added; final pre-commit local audit correctly reported 1141. Resolves: PRRT_kwDOSF9kNM6D1EV5 --------- Co-authored-by: Claude <noreply@anthropic.com>
6 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Files backlog row B-0686 for a substrate-engineering proposal: a CI gate that fails any PR which modifies tick shards at
docs/hygiene-history/ticks/YYYY/MM/DD/HHMMZ.mdafter a grace period.Why this row exists
The 2026-05-21 audit-baseline cleanup arc (PRs #4524 / #4525 / #4526 / #4531 / #4533 / partial #4534) violated the documented tick-shard immutability discipline. Codex caught the LAST one (P1 on #4534); the first 5 merged before catch. The pivot via compatibility-artifact (#4534's final commit) demonstrates the correct path.
A mechanical gate would catch the misapplication before merge — substrate-level prevention rather than author-side discipline alone.
Substrate-honest caveat in the row
If the maintainer reviewing the row decides the lesson is sufficient as-documented (author-side discipline is the floor; no mechanical gate needed), close as
wontfix. The row's existence as a substrate-engineering proposal IS the substrate even if implementation never ships.Test plan
git ls-tree origin/main(B-0685 in flight via persona(kestrel): 25-section 2026-05-21 trajectory archive + B-0685 ANTLR cross-language codegen substrate #4537; B-0686 free)..forbacklog/siblings; tested via dry-run audit)🤖 Generated with Claude Code