fix(beads): use native --ready filter instead of empty status:ready label - #26
Merged
trillium merged 1 commit intoAug 1, 2026
Conversation
The beads-backend ready query in fm-session-start.sh used 'task list --label "status:ready"', which returns nothing against the live store because no beads item carries that label. Switch to 'task list --ready', bd's native dependency-derived readiness filter, which needs no manual tagging. Also fixes fm-teardown.sh's post-completion beads prompt, which pointed at the same non-existent label, and updates docs/configuration.md to describe the corrected behavior. Adds a session-start test asserting the beads backend queries --ready with the bounded limit and renders its output, not the empty label query.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (4)
📝 WalkthroughWalkthroughThe Beads backlog flow now uses ChangesBeads ready-task backlog
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This was referenced Aug 2, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Intent
Fix a verified bug in firstmate's beads backlog backend: the ready-query used an empty label instead of bd's native ready filter, so the backlog rendered empty against the live store. Scout evidence (task-oec6): bin/fm-session-start.sh ran 'task list --label "status:ready"' which returned 0 items against the live ~/data/tasks/.beads store, while 'task list --ready' returns 255+ genuinely-ready items (267 verified live). Fix: switched the beads-backend ready path in bin/fm-session-start.sh from the --label "status:ready" query to bd's native dependency-derived --ready filter, preserving $BACKLOG_LIMIT and output shape. Also found and fixed a second spot assuming the same broken status:ready label: bin/fm-teardown.sh's post-completion beads prompt text, updated to reference 'task list --ready' instead. Updated docs/configuration.md (~line 46) to describe the corrected --ready behavior instead of the broken status:ready-label design. Added a test in tests/fm-session-start.test.sh (test_backlog_compact_beads_uses_ready_filter_not_empty_label) with a fake task CLI fixture asserting the session digest invokes 'list --ready --limit 80' and renders its output, not the empty label query. Deliberately out of scope, noted but not implemented: decision-holds are unsupported on the beads backend - that is a separate follow-up. Constraint: kept the change minimal since the beads-backend code came from PR #7 already on origin/main; branched from current origin/main.
What Changed
bin/fm-session-start.sh: switched the beads-backend ready-query fromtask list --label "status:ready"(a label that doesn't exist, so it always returned 0 items) to bd's native dependency-derived--readyfilter, preserving$BACKLOG_LIMITand the existing output shape.bin/fm-teardown.sh: updated the post-completion beads reminder text to referencetask list --readyinstead of the brokenstatus:readylabel.docs/configuration.md: corrected the beads backend description to document the--readyfilter behavior instead of the broken label-based design.tests/fm-session-start.test.sh: addedtest_backlog_compact_beads_uses_ready_filter_not_empty_label, a regression test with a fake task CLI fixture asserting the session digest invokeslist --ready --limit 80and renders its output.Risk Assessment
✅ Low: Minimal, well-scoped one-line functional fix (label query → native --ready filter) plus consistent doc/reminder text updates and a regression test asserting the exact invocation; no other stale status:ready references remain.
Testing
Ran the fm-session-start test suite (29/29 pass, including the new fixture-based regression test) and additionally reproduced the original bug and fix live against the real ~/data/tasks/.beads store: the old status:ready-label query returns 0 items while the fixed --ready query returns 267 ready items, matching the scout's reported evidence; the teardown script's companion text fix was confirmed by direct inspection since no test exercises that specific string.
Evidence: Live beads store: broken status:ready label query vs fixed --ready query
Pipeline
Updates from git push no-mistakes
✅ **intent** - passed
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
✅ **Review** - passed
✅ No issues found.
✅ **Test** - passed
✅ No issues found.
bash tests/fm-session-start.test.sh— all 29 tests pass, including the newtest_backlog_compact_beads_uses_ready_filter_not_empty_labelregression testManual: rantask list --label "status:ready" --limit 80against the live ~/data/tasks/.beads store — returned 'No issues found.' (0 items), reproducing the reported bugManual: rantask list --ready --limit 80against the same live store — returned 267 genuinely-ready items, confirming the fixManual: extracted and ran the exactprint_backlog_beads_compactfunction body from bin/fm-session-start.sh (target commit) against the live store — rendered a populated, correctly-formatted compact backlog listingCode inspection: confirmed bin/fm-teardown.sh's post-completion beads reminder text now says 'Run task list --ready' instead of referencing the broken status:ready labelCode inspection: confirmed docs/configuration.md describes the corrected --ready behavior✅ **Document** - passed
✅ No issues found.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.
Summary by CodeRabbit
Bug Fixes
status:readylabels.Tests