From 3ecad08d17697503bf9931494b8e271dd3774e6b Mon Sep 17 00:00:00 2001 From: Aaron Stainback Date: Sat, 16 May 2026 01:44:46 -0400 Subject: [PATCH 1/3] chore(b-0532): add Status section confirming partial-completion (Slice 1 shipped, Slice 2 pending) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Empirical audit at 2026-05-16T05:43Z via pure-git operations (rate-limit at 0/5000) confirms B-0532 is **partial completion**, not drift, per the row-close gate triage in PR #3757's step-0 rule extension. Shipped via PR #3567 (hard-error slice + gate.yml wiring): - Hard-error: parent closed + declared child open → exit 1 - --enforce-parent-child-status flag on tools/hygiene/audit-backlog-items.ts (extended existing tool) - --json flag - Gate.yml lint-backlog-parent-child-status job Pending (Slice 2 — not yet a sub-row): - Soft warning: all children closed but parent open - Bidirectional consistency check - Test file - Documentation in docs/AGENT-BEST-PRACTICES.md Audit anchors: grep -E 'soft.warning|bidirectional' returns 0 matches in tools/hygiene/audit-backlog-items.ts; ls tools/hygiene/*test* yields nothing for parent-child; grep docs/AGENT-BEST-PRACTICES.md yields nothing. Row stays status: open until Slice 2 lands. This Status section makes the partial-completion state visible to any future agent running the row-close gate triage discriminator. Co-Authored-By: Claude --- ...parent-child-status-mismatch-2026-05-15.md | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/docs/backlog/P3/B-0532-backlog-graph-consistency-lint-parent-child-status-mismatch-2026-05-15.md b/docs/backlog/P3/B-0532-backlog-graph-consistency-lint-parent-child-status-mismatch-2026-05-15.md index 2ea2a924a..b29a8f416 100644 --- a/docs/backlog/P3/B-0532-backlog-graph-consistency-lint-parent-child-status-mismatch-2026-05-15.md +++ b/docs/backlog/P3/B-0532-backlog-graph-consistency-lint-parent-child-status-mismatch-2026-05-15.md @@ -80,3 +80,25 @@ Composes with the broader [`.claude/rules/encoding-rules-without-mechanizing.md` - PR [#3518](https://github.com/Lucent-Financial-Group/Zeta/pull/3518) (the originating incident) - B-0442 / B-0503 / B-0504 / B-0505 (the chain that surfaced the failure mode) - `tools/hygiene/audit-backlog-items.ts` (existing backlog auditing; potential composition target) + +## Status (2026-05-16) + +Per the row-close gate triage (per [`.claude/rules/backlog-item-start-gate.md`](../../../.claude/rules/backlog-item-start-gate.md) step 0 — substrate-drift discriminator merged via PR #3757), this row is **partial completion, NOT drift**. + +**Shipped via PR [#3567](https://github.com/Lucent-Financial-Group/Zeta/pull/3567)** (`feat(B-0532): parent-child status-mismatch lint (hard-error slice) + gate.yml wiring`): + +- Hard-error: parent `status: closed` + declared child `status: open` → exit 1 +- `--enforce-parent-child-status` flag on `tools/hygiene/audit-backlog-items.ts` (extended existing tool per skill-router-as-substrate-inventory; same shape as B-0535) +- `--json` flag for machine-readable output +- Gate.yml job `lint-backlog-parent-child-status` wired + +**Pending (Slice 2 — not yet a sub-row):** + +- Soft warning: all children closed but parent open (closure-candidate surface) +- Bidirectional consistency: if Y has `parent: X` then X's `children` must include Y, and vice versa +- Test file `tools/hygiene/audit-backlog-items.test.ts` covering hard-error / bidirectional / soft-warning / pass-case scenarios +- Documentation in `docs/AGENT-BEST-PRACTICES.md` under the row-status-flip discipline section + +Row stays `status: open` until Slice 2 lands. The partial-vs-drift distinction is exactly the discriminator that PR #3757's step-0 rule extension and [B-0553](B-0553-audit-backlog-status-drift-detection-2026-05-16.md) mechanize at the discipline + lint scope respectively. + +Audit anchor: 2026-05-16T05:43Z Otto-CLI tick verified that lines mentioning `soft.warning`, `bidirectional` in `tools/hygiene/audit-backlog-items.ts` produce no matches; `ls tools/hygiene/*test*` matching parent-child returns no results; `grep -E 'row-status-flip|backlog-graph|parent-child' docs/AGENT-BEST-PRACTICES.md` returns no results. Empirical confirmation of the partial state. From 5778fd87305c99f41a45bd370ebc35a3b6c19f24 Mon Sep 17 00:00:00 2001 From: Aaron Stainback Date: Sat, 16 May 2026 02:08:31 -0400 Subject: [PATCH 2/3] fix(pr-3762): bump last_updated to 2026-05-16 (Status section added today) Co-Authored-By: Claude --- ...-consistency-lint-parent-child-status-mismatch-2026-05-15.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/backlog/P3/B-0532-backlog-graph-consistency-lint-parent-child-status-mismatch-2026-05-15.md b/docs/backlog/P3/B-0532-backlog-graph-consistency-lint-parent-child-status-mismatch-2026-05-15.md index b29a8f416..dc48b04b8 100644 --- a/docs/backlog/P3/B-0532-backlog-graph-consistency-lint-parent-child-status-mismatch-2026-05-15.md +++ b/docs/backlog/P3/B-0532-backlog-graph-consistency-lint-parent-child-status-mismatch-2026-05-15.md @@ -6,7 +6,7 @@ title: "Backlog-graph consistency lint — flag parent `status: closed` while de tier: factory-infrastructure effort: S created: 2026-05-15 -last_updated: 2026-05-15 +last_updated: 2026-05-16 depends_on: [] composes_with: [B-0442, B-0503, B-0504, B-0505] tags: [backlog, lint, mechanization, multi-agent, drift-detection] From ffdb88b5e814dbe8016254fd003456dbb4832474 Mon Sep 17 00:00:00 2001 From: Aaron Stainback Date: Sat, 16 May 2026 02:10:36 -0400 Subject: [PATCH 3/3] chore(b-0532): bump last_updated to 2026-05-16 per tools/backlog/README.md (review fix)