Skip to content

backlog(B-0532): file backlog-graph consistency lint (P3) — parent/child status-mismatch detection#3523

Merged
AceHack merged 1 commit into
mainfrom
feat/b0532-backlog-graph-consistency-lint-otto-cli-2026-05-15
May 15, 2026
Merged

backlog(B-0532): file backlog-graph consistency lint (P3) — parent/child status-mismatch detection#3523
AceHack merged 1 commit into
mainfrom
feat/b0532-backlog-graph-consistency-lint-otto-cli-2026-05-15

Conversation

@AceHack
Copy link
Copy Markdown
Member

@AceHack AceHack commented May 15, 2026

Summary

Files B-0532 — a P3 mechanization candidate for the failure mode caught on PR #3518 (parent `B-0442` closed while declared children `B-0504` + `B-0505` still `status: open`).

Lint design:

  • Hard error: parent `status: closed` while any declared child is `status: open`
  • Hard error: bidirectional graph mismatch (`parent.children` vs `child.parent` don't match)
  • Soft warning: all-children-closed-but-parent-open (closure candidate)
  • `--json` mode for downstream tools

Tagged P3 because: failure mode is rare (row-status flips not daily), review-cycle caught the single observed instance before merge, no production-impact blocker. Composes-with the entire B-0442/B-0503/B-0504/B-0505 chain so future-Otto reading those rows finds this mechanization row.

BACKLOG.md regenerated to include the new row.

Test plan

  • markdownlint clean on the new row + regenerated BACKLOG.md
  • ID allocation verified against `origin/main` (B-0530 was the prior max) + in-flight PR scan (B-0531 taken by PR #3520)
  • Frontmatter matches sibling P3 rows' shape

🤖 Generated with Claude Code

…ild status-mismatch detection

Originating incident: PR #3518 closed parent B-0442 without closing
declared children B-0504 + B-0505 — silent backlog-graph inconsistency
caught by Codex + Copilot review through 4 thread cycles. The 1629Z
tick shard flagged this as a future mechanization candidate; this row
files it for substrate persistence.

Spec includes:

- Hard error: parent closed + child open
- Hard error: bidirectional graph mismatch (parent.children vs child.parent)
- Soft warning: all-children-closed-but-parent-open (closure candidate)
- JSON output mode for compose-with-downstream
- gate.yml wiring + AGENT-BEST-PRACTICES.md documentation

Tagged P3 because: failure mode is rare (row-status flips not daily),
review-cycle caught the single observed instance before merge, no
production-impact blocker. Listed as composes-with the B-0442 chain
so future-Otto reading that chain finds this row.

BACKLOG.md regenerated to include the new row.

Co-Authored-By: Claude <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 15, 2026 16:42
@AceHack AceHack enabled auto-merge (squash) May 15, 2026 16:42
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new P3 backlog row B-0532 proposing a mechanized lint to detect parent/child status inconsistencies in backlog frontmatter graphs, and regenerates docs/BACKLOG.md to include the new row.

Changes:

  • New P3 backlog row file documenting the lint design (hard errors for closed-parent/open-child + bidirectional mismatch; soft warning for closure candidates; --json mode).
  • Regenerated docs/BACKLOG.md index entry.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
docs/backlog/P3/B-0532-backlog-graph-consistency-lint-parent-child-status-mismatch-2026-05-15.md New P3 row describing the proposed backlog-graph consistency lint, acceptance criteria, and composition targets.
docs/BACKLOG.md Regenerated index entry for B-0532.

@AceHack AceHack merged commit f2917d1 into main May 15, 2026
26 checks passed
@AceHack AceHack deleted the feat/b0532-backlog-graph-consistency-lint-otto-cli-2026-05-15 branch May 15, 2026 16:44
@AceHack AceHack restored the feat/b0532-backlog-graph-consistency-lint-otto-cli-2026-05-15 branch May 15, 2026 16:44
AceHack added a commit that referenced this pull request May 15, 2026
…echanization)

- PR #3518 (B-0442 chain close) merged → 627e797.
- PR #3519 (tick 1618Z shard) merged → afc1a99.
- PR #3523 opened — B-0532 (backlog-graph consistency lint, P3) filed
  as substrate from the 1629Z shard insight. BACKLOG.md regenerated.
  Auto-merge armed.
- Sentinel 1011e43d live.

ID allocation discipline applied: verified B-0532 free against
origin/main (B-0530 max) + in-flight PR scan (B-0531 taken by
peer Lior PR #3520).

Co-Authored-By: Claude <noreply@anthropic.com>
AceHack added a commit that referenced this pull request May 15, 2026
…echanization) (#3524)

- PR #3518 (B-0442 chain close) merged → 627e797.
- PR #3519 (tick 1618Z shard) merged → afc1a99.
- PR #3523 opened — B-0532 (backlog-graph consistency lint, P3) filed
  as substrate from the 1629Z shard insight. BACKLOG.md regenerated.
  Auto-merge armed.
- Sentinel 1011e43d live.

ID allocation discipline applied: verified B-0532 free against
origin/main (B-0530 max) + in-flight PR scan (B-0531 taken by
peer Lior PR #3520).

Co-authored-by: Claude <noreply@anthropic.com>
AceHack added a commit that referenced this pull request May 15, 2026
…ed; nothing in-flight (#3527)

Captures the burst-close state: PRs #3511, #3515, #3517, #3518, #3519,
#3521, #3523, #3524 all MERGED to main with zero force-pushes to main
and no in-flight. Next-tick speculative-work priority ladder reviewed:
no Tier 1 known-gap surfaced; held until next tick per Aaron's
forgetting-as-back-pressure substrate.

Sentinel 1011e43d live.

Co-authored-by: Claude <noreply@anthropic.com>
AceHack added a commit that referenced this pull request May 15, 2026
…ade status (#3525)

* shard(tick): 1719Z — quiet checkpoint; all 8 recent Otto-CLI PRs merged; nothing in-flight

Captures the burst-close state: PRs #3511, #3515, #3517, #3518, #3519,
#3521, #3523, #3524 all MERGED to main with zero force-pushes to main
and no in-flight. Next-tick speculative-work priority ladder reviewed:
no Tier 1 known-gap surfaced; held until next tick per Aaron's
forgetting-as-back-pressure substrate.

Sentinel 1011e43d live.

Co-Authored-By: Claude <noreply@anthropic.com>

* shard(tick): 1718Z — fresh-session cold-boot; cron sentinel re-armed; §33 cascade status

- CronList empty at boot → <<autonomous-loop>> sentinel re-armed
- Confirmed PR #3513 (Riven §33) + #3516 (Vera §33) merged on origin/main
- §33 cascade: 8 personas migrated (~127 files out of docs/research/)
- Surfaced docs/research/ residuals: 78 claudeai + 8 gemini + 8 codex (content-id required; not slam-dunks)
- Primary worktree mid-rebase on peer-Lior branch → borrow-on-existing pattern applied

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
AceHack added a commit that referenced this pull request May 15, 2026
…3563)

Empirical anchor: 2026-05-15 had at least 2 cross-agent B-NNNN
collisions (B-0444 Otto-Desktop vs Otto-CLI, then B-0532+B-0533 Lior
vs Otto-CLI). Each cost ~15 min coordination effort.

The discipline-level rule (otto-channels-reference-card.md
ID-allocation section) relies on per-agent memory. This row mechanizes
the catch at PR-time so it doesn't depend on memory:

- Walk docs/backlog/**/B-NNNN-*.md
- Group by B-NNNN ID
- Hard error if any ID maps to more than 1 file
- Wire into gate.yml as sibling of lint-section-33-migration-xrefs

Natural extension of B-0532 (backlog-graph consistency lint, parent-
child status-mismatch) — same lint family, same gate.yml shape.

ID allocation discipline applied: B-0531-B-0534 taken (#3520, #3523,
#3540, #3551); B-0535 verified free via origin/main ls-tree +
gh pr list search.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants