fix: resolve 6 backlog ID collisions (B-0368..B-0373)#2269
Conversation
Six pairs of backlog items shared the same ID. For each pair, the newer file gets a new unique ID: - B-0160 (claude-code-permissions) → B-0368 - B-0278 (durable-computation-survey) → B-0369 - B-0279 (durable-computation-checkpoint) → B-0370 - B-0284 (pages-seo-metadata) → B-0371 - B-0285 (pages-sitemap-robots) → B-0372 - B-0362 (alignment-proof-primitive) → B-0373 B-0357 collision already handled by PR #2268 (→ B-0367). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ddc3c9f508
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
Pull request overview
Resolves duplicate backlog IDs by renumbering six per-row files under docs/backlog/P1/ so each row has a factory-wide-unique id value.
Changes:
- Updated YAML frontmatter
idvalues for 6 backlog rows to new unique IDs (B-0368..B-0373). - (Intended) eliminate collisions so the per-row backlog set can be indexed deterministically.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| docs/backlog/P1/B-0368-claude-code-permissions-feature-tight-integration-aaron-2026-05-02.md | Renumbers row ID to B-0368 |
| docs/backlog/P1/B-0369-durable-computation-survey-8-systems-2026-05-08.md | Renumbers row ID to B-0369 |
| docs/backlog/P1/B-0370-durable-computation-checkpoint-interface-extension-2026-05-08.md | Renumbers row ID to B-0370 |
| docs/backlog/P1/B-0371-pages-seo-metadata-jsonld-social-preview-2026-05-08.md | Renumbers row ID to B-0371 |
| docs/backlog/P1/B-0372-pages-sitemap-robots-ai-crawler-policy-2026-05-08.md | Renumbers row ID to B-0372 |
| docs/backlog/P1/B-0373-alignment-proof-primitive-ladder-one-type-one-property.md | Renumbers row ID to B-0373 |
Comments suppressed due to low confidence (6)
docs/backlog/P1/B-0373-alignment-proof-primitive-ladder-one-type-one-property.md:3
- P0: The frontmatter
idwas updated to B-0373, but the document body still identifies the row as# B-0362 …(and likely other mentions). This defeats the collision fix and will confuse cross-references; update the heading/body references to match the new ID.
docs/backlog/P1/B-0368-claude-code-permissions-feature-tight-integration-aaron-2026-05-02.md:5 - P0: This PR renumbers the row from B-0160 → B-0368, but the body still uses the old identifier (
# B-0160 …). Alsolast_updatedis not bumped even though the content changed; per tools/backlog/README.md,last_updatedmust be updated on every edit. Finally,docs/BACKLOG.mdcurrently links to this file under B-0160 and CI enforces parity viabun tools/backlog/generate-index.ts --check, so the index should be regenerated/committed in the same PR.
docs/backlog/P1/B-0372-pages-sitemap-robots-ai-crawler-policy-2026-05-08.md:5 - P0: The row ID changed to B-0372, but the body still uses the old identifier (
# B-0285 …). Also the frontmatter dependency/classification still points atB-0284; if that row was renumbered to B-0371, these references must be updated to avoid pointing at a different existing backlog row.last_updatedshould also be bumped since this file was edited (tools/backlog/README.md marks it as required and updated on every edit).
docs/backlog/P1/B-0371-pages-seo-metadata-jsonld-social-preview-2026-05-08.md:4 - P0: The row ID changed to B-0371, but the body still uses the old identifier (
# B-0284 …). Update the heading/body references so the file is internally consistent.last_updatedshould also be bumped since the content changed (per tools/backlog/README.md).
docs/backlog/P1/B-0370-durable-computation-checkpoint-interface-extension-2026-05-08.md:5 - P0: The row ID changed to B-0370, but the body still uses the old identifier (
# B-0279 …) and the frontmatter referencesB-0278independs_on/classification. If the renumbered prerequisite is now B-0369, update these references; otherwise this row will incorrectly depend on an unrelated existing B-0278 item. Also this file is missing requiredlast_updatedfrontmatter (tools/backlog/README.md).
docs/backlog/P1/B-0369-durable-computation-survey-8-systems-2026-05-08.md:4 - P0: The row ID changed to B-0369, but the body still uses the old identifier (
# B-0278 …). Update heading/body references so this row’s canonical ID is consistent everywhere.last_updatedshould also be bumped since this file was edited (per tools/backlog/README.md).
Records: PR #3065 opened to renumber the P2 contributor-compliance set (B-0370→B-0452, B-0371→B-0453, B-0372→B-0454, B-0373→B-0455) keeping the P1 set (durable/SEO/sitemap/alignment, filed 2 days earlier via PR #2269). Internal depends_on chain remapped + B-0092 parent body updated. Duplicate-ID groups: 11 → 7. B-0451 cleanup progress: 1/12 → 9/12 (with #3058 + #3065 both landed). Co-Authored-By: Claude <noreply@anthropic.com>
…r-compliance set → B-0452-0455 (#3065) * fix(backlog): resolve B-0370-0373 ID collisions — renumber P2 contributor-compliance set → B-0452-0455 Third per-collision cleanup from the B-0451 sweep. Four B-0370..B-0373 collisions form one connected cluster (parent + 3 deps inside the P2 set; cross-priority bleed against the earlier P1 set). ## The collisions | ID | Earlier filer (P1, 2026-05-09 PR #2269) | Later filer (P2, 2026-05-11 PR #2683) | |---|---|---| | B-0370 | durable-computation-checkpoint-interface-extension | contributor-compliance-core-document-authoring | | B-0371 | pages-seo-metadata-jsonld-social-preview | contributor-compliance-cross-reference-integration | | B-0372 | pages-sitemap-robots-ai-crawler-policy | t1-t2-self-audit-and-cadenced-review-trajectories | | B-0373 | alignment-proof-primitive-ladder-one-type-one-property | t4-t5-onboarding-and-drift-retrospective-trajectories | ## Resolution Per first-merged-wins + external-references: - The P1 set was filed via PR #2269 (2026-05-09) as itself a prior collision-resolution sweep — 2 days BEFORE the P2 set (PR #2683, 2026-05-11). First-merged-wins. - B-0370 P1 and B-0373 P1 are already shipped (`status: closed` effectively per `[x]` checked state in `docs/BACKLOG.md`). - External references to the P1 IDs exist in PR-history doc (`docs/history/pr-reviews/PR-2369-...md`) and a memory file (`feedback_shadow_lesson_log_otto_catches_2026_05_07.md`). Renumbering them would orphan those references. - The P2 set's "external references" are internal to the set (B-0371/0372/0373 depend on B-0370 within the set) + the B-0092 parent body — all editable in this PR. → Keep P1 set at B-0370-0373. Renumber P2 set as a unit: B-0370 (P2) → B-0452 B-0371 (P2) → B-0453 B-0372 (P2) → B-0454 B-0373 (P2) → B-0455 ## Internal-chain remap - B-0453.depends_on: [B-0370] → [B-0452] - B-0454.depends_on: [B-0370] → [B-0452] - B-0455.depends_on: [B-0370, B-0371] → [B-0452, B-0453] - B-0092.body §Decomposition: lines 184-194 updated to new IDs with renumber note Each renumbered row has `renumbered_from: B-0NNN` + reason in frontmatter. `tags:` add `renumbered`. `last_updated: 2026-05-14`. ## Empirical effect Inline duplicate-ID count on the branch: Duplicate-ID groups: 11 → 7 B-0451 cleanup progress: 1/12 → 9/12 (B-0068.1 in #3057 already merged; B-0090.1-4 in #3058 in flight; B-0370-0373 in this PR). Remaining 3 groups after this lands: B-0409 (3-way), B-0410, B-0411. Co-Authored-By: Claude <noreply@anthropic.com> * shard(tick): 0017Z — third B-0451 cleanup; B-0370-0373 P2 set renumbered Records: PR #3065 opened to renumber the P2 contributor-compliance set (B-0370→B-0452, B-0371→B-0453, B-0372→B-0454, B-0373→B-0455) keeping the P1 set (durable/SEO/sitemap/alignment, filed 2 days earlier via PR #2269). Internal depends_on chain remapped + B-0092 parent body updated. Duplicate-ID groups: 11 → 7. B-0451 cleanup progress: 1/12 → 9/12 (with #3058 + #3065 both landed). Co-Authored-By: Claude <noreply@anthropic.com> * shard(tick): 0024Z — branch-update triggered on 3 in-flight PRs; rate-limit triage Records: PR #3062 (Lior decomposition rule) merged. Triaged 8 "lint failures" on PRs #3056 + #3058 as rate-limit-class (mise toolchain installer hit 403 Forbidden). All required checks green; BLOCKED state is just out-of-date branch. Triggered branch-update on all 3 in-flight PRs via `PUT pulls/{N}/update-branch`. Declined to pick next B-0451 cleanup (B-0409 3-way etc.) to avoid multiplying rate-limit pressure. Co-Authored-By: Claude <noreply@anthropic.com> * fix(shard): MD032 blanks-around-lists in 0017Z + 0024Z shards (4th occurrence) Third + fourth occurrences of the same MD032 failure mode this session (after PR #3044 fixed 2228Z and PR #3058 fixed 2348Z). Two more tick shards on PR #3065 hit the same pattern: - 0017Z:51 "Plus:" → "- `B-0092` parent body..." - 0024Z:66 "infra issues that resolve when:" → "1. The installation..." The discipline ("blank line before lists") is in-head but unmechanized. Per the 0007Z shard observation: mechanization options include a pre-commit hook OR shard-writer helper. The recurrence rate suggests the cost of mechanization is now lower than the cost of the recurring CI-cycle-per-tick-shard. Filing as observation in commit message; not expanding scope to build the mechanization this tick. Co-Authored-By: Claude <noreply@anthropic.com> * docs(backlog): B-0456 — mechanize MD032 blanks-around-lists check Files the discipline-gap observation from this session's 4 MD032 recurrences. Per encoding-rules-without-mechanizing.md, the cost- benefit has tipped: building a small TS helper under tools/hygiene/ is now cheaper than the recurring CI-cycle-per-tick-shard cost. Row captures: - The 4 historical occurrences (2228Z PR #3044, 2348Z PR #3058, 0017Z + 0024Z PR #3065) as test fixtures - Two mechanization options: pre-push git hook (preferred) or tick-close ritual check (fallback) - Acceptance criteria covering clean fixture, single/multi finding, no-lists, list-without-preceding-label edge cases - Composes-with pointers to B-0451 sweep + Rule 0 + the encoding-rules-without-mechanizing rule Not building the mechanization THIS tick (3 PRs already in flight; restraint discipline). The row makes the work pick-up-able by any future agent without session context. Co-Authored-By: Claude <noreply@anthropic.com> * shard(tick): 0046Z — 3 PRs landed (#3056, #3058, #3059); 4th MD032 forces B-0456 Records: PRs #3056 (audit tool + B-0451), #3058 (B-0090.x batch), and Otto-Desktop's #3059 all merged this tick. PR #3065 hit real markdownlint failure (MD032 ×2 on prior tick shards) — fixed inline. Filed B-0456 to mechanize the recurring MD032-on-tick-shard discipline gap (4 occurrences this session). Restraint discipline maintained: did NOT build the mechanization this tick (still 2 PRs in flight). B-0456 captures the procedure + acceptance criteria for future tick pickup. Co-Authored-By: Claude <noreply@anthropic.com> * fix(backlog): MD038 in B-0456 — replace `- ` code spans with prose descriptions The B-0456 row's "Examples this session" table used backtick-quoted `- ` (hyphen followed by space) as the bullet-pattern marker. The trailing space inside the code span triggers markdownlint MD038 "no-space-in-code". Replaced the literal-bullet code spans with prose descriptions (`bullet-list-with-no-blank-line` / `numbered-list-with-no-blank-line`) that convey the same meaning without the trailing-space-in-code-span hazard. 5th markdown lint finding this session (MD038 added to the MD032 ×4 + MD018 ×1 cluster). Strengthens B-0456's case further — the future TS helper should check MD038 + MD032 + MD018 at minimum. Co-Authored-By: Claude <noreply@anthropic.com> * shard(tick): 0100Z — MD038 fix on B-0456 row; 6 markdown findings this session Records: PR #3064 (Otto-Desktop B-0442 slice 6) merged. PR #3065 hit MD038 lint failure on B-0456 row's Examples table (trailing space in `- ` code span). Fixed by replacing code-span markers with prose descriptions. Recurrence-count update: 6 markdown findings this session (MD032 ×4 + MD018 ×1 + MD038 ×1). Substrate-honest observation: the automated review (Copilot + markdownlint + audit-duplicate-row-ids) is doing structural work my own attention can't sustain at this PR cadence. The automated review IS the discipline; agent role is responding to findings. Co-Authored-By: Claude <noreply@anthropic.com> * fix(shard): MD032 in 0100Z — `+ memory` line-start parsed as list item The 0100Z tick shard's recurrence-count summary ended with "...this session's tick shards" and continued on the next line with "+ memory + backlog rows.**". Markdownlint parsed the leading `+ ` as a list marker, firing MD032 (preceding line is bold text, not a blank). Rephrased to "tick shards, memory files, and backlog rows" so no line starts with a list marker. 8th markdown lint finding this session. 5th MD032 specifically. B-0456 mechanization argument continues to strengthen. Co-Authored-By: Claude <noreply@anthropic.com> * shard(tick): 0117Z — 8th markdown finding (MD032 ×5) + 2 Copilot rounds resolved Records: PR #3065 hit MD032 on 0100Z line 46 (`+ memory` line-start parsed as list item, 5th MD032 this session); fixed in 54d8ff0. PR #3066 had 2 unresolved Copilot threads: sub-row grep recipe word-boundary issue + remaining MD018 on `#3065` line-start; fixed in fa687ab + both threads resolved. Preemptively escaped `[^0-9.]|$` to `[^0-9.]\|$` in this shard's own table to avoid the same MD056 issue that 0054Z hit. 9 total markdown findings this session. The session arc has accidentally become the regression suite for B-0456's mechanization. Co-Authored-By: Claude <noreply@anthropic.com> * fix(shard): MD038 ×3 in 0117Z — replace inline-code "+ " markers with prose Same MD038 (no-space-in-code) class as the B-0456 row fix from earlier this session (PR #3065 commit cbbfbb6). The 0117Z shard described the previous tick's MD032 fix using inline-code literals `` `+ ` `` (backtick + plus + space + backtick) in three places — the trailing space inside the code span trips MD038. Replaced with prose: "a plus-space (\"+\" followed by a space)". Meta-observation: the 0117Z shard whose entire point was discussing MD038/MD032 fixes itself contained 3 MD038 violations. This is the recursive-finding pattern documented earlier. The discipline of "avoid trailing-space-inside-code-span" is in-head but only catches the patterns I've seen recently — the `+ ` form was new to my pattern-match this tick. 10th MD finding this session. The break-even argument from B-0456 keeps strengthening; future agent picking it up gets a 4-rule-class corpus (MD032 + MD018 + MD038 + MD056). Co-Authored-By: Claude <noreply@anthropic.com> * shard(tick): 0132Z — 10th MD finding (MD038 ×3); recursive-finding pattern continues Records: PR #3065 hit MD038 ×3 on the 0117Z shard (inline-code plus-space literals with trailing space). Fixed by replacing with prose ("a plus-space"). Total markdown findings this session: 12 (MD032 ×5 + MD018 ×2 + MD038 ×4 + MD056 ×1) across 4 rule classes. Meta-pattern: shards describing markdown lint fixes tend to themselves contain markdown lint findings of related classes. The 0117Z shard whose point was MD032 + MD018 + MD038 + MD056 discussion contained 3 new MD038 hits. This shard authored carefully to avoid backtick-quoted bullet/list markers entirely — preemptive vs reactive discipline. Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
Summary
Test plan
find docs/backlog -name 'B-*.md' -exec sed -n 's/^id: //p' {} \; | sort | uniq -dreturns only B-0357 (handled by fix: delete stale B-0357 semiring duplicate #2268)🤖 Generated with Claude Code