Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/BACKLOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -675,7 +675,7 @@ are closed (status: closed in frontmatter)._
- [x] **[B-0530](backlog/P3/B-0530-cron-sentinel-mutex-prevent-otto-cli-self-contention-2026-05-15.md)** Cron-sentinel mutex — prevent multi-Otto-CLI self-contention on .git/objects/pack
- [ ] **[B-0532](backlog/P3/B-0532-backlog-graph-consistency-lint-parent-child-status-mismatch-2026-05-15.md)** Backlog-graph consistency lint — flag parent `status: closed` while declared child is `status: open`
- [ ] **[B-0533](backlog/P3/B-0533-section33-migration-dead-xref-sweep-and-lint-2026-05-15.md)** §33 migration dead-xref sweep + static lint — live-nav pointers to docs/research/ paths that have been migrated to memory/persona/<name>/conversations/
- [ ] **[B-0535](backlog/P3/B-0535-backlog-id-uniqueness-lint-extension-of-b0532-2026-05-15.md)** Backlog ID-uniqueness lint — extension of B-0532 to catch cross-agent B-NNNN collisions
- [x] **[B-0535](backlog/P3/B-0535-backlog-id-uniqueness-lint-extension-of-b0532-2026-05-15.md)** Backlog ID-uniqueness lint — extension of B-0532 to catch cross-agent B-NNNN collisions
- [ ] **[B-0536](backlog/P3/B-0536-orphan-ferry-ref-cleanup-and-audit-false-positives-2026-05-15.md)** Orphan-ferry-ref cleanup + audit false-positive on filename paths
- [ ] **[B-0537](backlog/P3/B-0537-memory-md-index-entry-lengths-cleanup-and-gate-2026-05-15.md)** memory/MEMORY.md index-entry length cleanup (100 long entries) + CI gate

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
---
id: B-0535
priority: P3
status: open
status: closed
title: "Backlog ID-uniqueness lint — extension of B-0532 to catch cross-agent B-NNNN collisions"
tier: factory-infrastructure
effort: S
created: 2026-05-15
last_updated: 2026-05-15
last_updated: 2026-05-16
closed: 2026-05-16
depends_on: []
composes_with: [B-0532, B-0533]
tags: [backlog, lint, mechanization, multi-agent, drift-detection, id-allocation]
Expand Down Expand Up @@ -86,3 +87,20 @@ Add to the existing backlog-related lint job in `.github/workflows/gate.yml` (or
- [`.claude/rules/refresh-before-decide.md`](../../../.claude/rules/refresh-before-decide.md) — discipline-layer this lint complements at machine-layer
- [PR #3053](https://github.com/Lucent-Financial-Group/Zeta/pull/3053) (B-0444 collision empirical anchor)
- [PR #3545](https://github.com/Lucent-Financial-Group/Zeta/pull/3545) (B-0532/B-0533 collision empirical anchor)

## Resolution (2026-05-16)

Mechanization shipped 2026-05-15 via **PR #3565** (`feat(B-0535): wire backlog ID-uniqueness lint to gate.yml`, merged).

The duplicate-ID detection logic was extended into the existing `tools/hygiene/audit-backlog-items.ts` (per the row's skill-router-as-substrate-inventory decision in "Implementation sketch"), and CI is now wired:

| Acceptance | Status |
|---|---|
| Walk all `docs/backlog/**/B-NNNN-*.md`; group by ID | shipped — `audit-backlog-items.ts` `--enforce-duplicate-ids` |
| Hard error on collision | shipped — exit non-zero on duplicate IDs |
| Wired to `.github/workflows/gate.yml` | shipped — `lint-backlog-id-uniqueness` job (verified by `grep -E 'lint-backlog-id-uniqueness' .github/workflows/gate.yml`) |
| Composes with B-0532 hard-error slice | shipped — sibling job `--enforce-parent-child-status` adjacent in gate.yml |

Out-of-scope items remain out of scope (auto-suggest next ID; cross-fork coordination; D-NNNN type).

Row left open 2026-05-15 → 2026-05-16 as substrate drift — third drift catch of this session (paired with B-0506 PR #3733 and B-0530 PR #3737). The pattern is recurring enough that it's worth filing a systematic-audit follow-up row to sweep the remaining P3 status-open rows for shipped-but-unclosed work.
Loading