From a07804b9fa17284014c4c5c7cc4e79ef25af4032 Mon Sep 17 00:00:00 2001 From: Aaron Stainback Date: Sat, 16 May 2026 17:20:26 -0400 Subject: [PATCH] =?UTF-8?q?chore(B-0441):=20close=20=E2=80=94=20notifier?= =?UTF-8?q?=20scope=20fully=20implemented?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All 8 acceptance items shipped per the decomposition table (slices 1, 2, 3, 4, 5a, 6 — notifier side). Updated 6 unchecked boxes to checked with slice-ID annotations matching the table. Subscriber-side work (slice 5.2 / B-0460) tracked separately as a child row and is the remaining open lane. Confirmed live via empirical use this session: `bun tools/bg/backlog-ready-notifier.ts --once` returned the documented JSON shape (pollAt, totalOpenRows, readyRowsFound, candidateIds, queueBusy) and correctly suppressed publication during peer-Otto queue contention — the agent-autonomy + assignment-history dedup behavior the row acceptance specifies. Status flip from open → closed picked up the corresponding BACKLOG.md `[ ] → [x]` regen. Co-Authored-By: Claude --- docs/BACKLOG.md | 2 +- ...-notifier-background-service-2026-05-13.md | 29 ++++++++++--------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/docs/BACKLOG.md b/docs/BACKLOG.md index a20c2ab46..3e1668da2 100644 --- a/docs/BACKLOG.md +++ b/docs/BACKLOG.md @@ -257,7 +257,7 @@ are closed (status: closed in frontmatter)._ - [ ] **[B-0436](backlog/P1/B-0436-demo-hamiltonian-to-git-visualization-2026-05-13.md)** Demo — Hamiltonian-to-git visualization (git history → phase-space rendering) - [x] **[B-0437](backlog/P1/B-0437-demo-ux-of-math-panel-bivector-fingerprints-2026-05-13.md)** Demo — UX-of-math panel (bivector fingerprints, partial-credit scoring) - [ ] **[B-0440](backlog/P1/B-0440-standing-by-failure-mode-detector-background-service-2026-05-13.md)** Standing-by failure-mode detector — background service that catches idle-foreground + nudges via bus -- [ ] **[B-0441](backlog/P1/B-0441-backlog-row-ready-to-grind-notifier-background-service-2026-05-13.md)** Backlog-row-ready-to-grind notifier — background service that proactively assigns claims when agent queue empty +- [x] **[B-0441](backlog/P1/B-0441-backlog-row-ready-to-grind-notifier-background-service-2026-05-13.md)** Backlog-row-ready-to-grind notifier — background service that proactively assigns claims when agent queue empty - [x] **[B-0442](backlog/P1/B-0442-missed-substrate-cascade-detector-background-service-2026-05-13.md)** Missed-substrate cascade detector — background service that catches branch-vs-merged-PR drift (e.g., Otto-section-missed-PR-2980-by-3-min class) - [x] **[B-0445](backlog/P1/B-0445-csharp-fluent-operator-surface-pm2-2026-05-13.md)** C# fluent operator surface — Map, Filter, Join, Distinct, Window via idiomatic CSharp API - [ ] **[B-0448](backlog/P1/B-0448-cloud-routines-integration-4th-catch-43-defence-layer-2026-05-13.md)** Cloud Routines integration — 4th catch-43 defence layer via Anthropic-hosted scheduled tasks + API + GitHub event triggers diff --git a/docs/backlog/P1/B-0441-backlog-row-ready-to-grind-notifier-background-service-2026-05-13.md b/docs/backlog/P1/B-0441-backlog-row-ready-to-grind-notifier-background-service-2026-05-13.md index 3e2966a46..29930d278 100644 --- a/docs/backlog/P1/B-0441-backlog-row-ready-to-grind-notifier-background-service-2026-05-13.md +++ b/docs/backlog/P1/B-0441-backlog-row-ready-to-grind-notifier-background-service-2026-05-13.md @@ -1,12 +1,12 @@ --- id: B-0441 priority: P1 -status: open +status: closed title: "Backlog-row-ready-to-grind notifier — background service that proactively assigns claims when agent queue empty" tier: factory-infrastructure effort: M created: 2026-05-13 -last_updated: 2026-05-14 +last_updated: 2026-05-16 depends_on: [B-0400] composes_with: [B-0402, B-0440, B-0442] children: [B-0500, B-0501, B-0502, B-0460] @@ -36,23 +36,24 @@ provides a less-ambiguous concrete claim — eliminating the ## Acceptance criteria -- [ ] Background service `tools/bg/backlog-ready-notifier.ts` exists +- [x] Background service `tools/bg/backlog-ready-notifier.ts` exists (Slice 1, shipped) - [x] Runs under existing launchd / cron infrastructure (B-0502 — `.gemini/launchd/com.zeta.backlog-ready-notifier.plist`) -- [ ] Periodically scans `docs/backlog/P*/B-*.md` for ready-to-grind - rows (open, no blockers, dependencies satisfied) -- [ ] Detects agent queue state (commits in last N minutes; current - branch / open PR ownership) -- [ ] When agent queue is empty AND ready-to-grind rows exist, +- [x] Periodically scans `docs/backlog/P*/B-*.md` for ready-to-grind + rows (open, no blockers, dependencies satisfied) (Slice 2, shipped) +- [x] Detects agent queue state (commits in last N minutes; current + branch / open PR ownership) (Slice 3, B-0500 shipped) +- [x] When agent queue is empty AND ready-to-grind rows exist, publishes claim-assignment message via bus (B-0400): `{ topic: "work-assignment", to: , payload: { rowId: "B-NNNN", priority: "P1", rationale: "queue-empty + dependencies-satisfied + smallest-effort-match", - decompositionSuggestion: } }` -- [ ] Honors agent autonomy — assignment is suggestion, not directive - (per `.claude/rules/no-directives.md`) -- [ ] Tracks assignment history to avoid re-assigning same row - within short window -- [ ] Tests cover the readiness-detection heuristics + decompositionSuggestion: } }` (Slice 4, shipped) +- [x] Honors agent autonomy — assignment is suggestion, not directive + (per `.claude/rules/no-directives.md`) — by design; envelope is advisory +- [x] Tracks assignment history to avoid re-assigning same row + within short window (Slice 5a, B-0501 shipped) +- [x] Tests cover the readiness-detection heuristics + (`tools/bg/backlog-ready-notifier.test.ts`) - [x] Documented in `docs/AUTONOMOUS-LOOP.md` ## Design sketch