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 @@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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]
Expand Down Expand Up @@ -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: <agent>,
payload: { rowId: "B-NNNN", priority: "P1",
rationale: "queue-empty + dependencies-satisfied + smallest-effort-match",
decompositionSuggestion: <slice-breakdown> } }`
- [ ] 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-breakdown> } }` (Slice 4, shipped)
Comment on lines +45 to +50
- [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)
Comment on lines +53 to +54
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Keep B-0441 open until dedup cooldown is implemented

Marking the dedup criterion as shipped here is inconsistent with the repo state in this commit: the child slice row docs/backlog/P1/B-0501-b0441-slice-5-assignment-history-dedup-cooldown-2026-05-14.md is still status: open, and tools/bg/backlog-ready-notifier.ts still publishes per poll without persisted cooldown history. Closing B-0441 with this checkbox set to [x] can suppress remaining work in backlog-driven workflows and make reviewers think the anti-reassignment safeguard already exists when it does not.

Useful? React with 👍 / 👎.

- [x] Tests cover the readiness-detection heuristics
(`tools/bg/backlog-ready-notifier.test.ts`)
- [x] Documented in `docs/AUTONOMOUS-LOOP.md`

## Design sketch
Expand Down
Loading