Skip to content

fix(sprint-planning): preserve awaiting-operator status - #2905

Open
lorenzozanee wants to merge 1 commit into
bmad-code-org:devfrom
lorenzozanee:fix/awaiting-operator-status
Open

lorenzozanee wants to merge 1 commit into
bmad-code-org:devfrom
lorenzozanee:fix/awaiting-operator-status

Conversation

@lorenzozanee

Copy link
Copy Markdown

What

Recognize Loop's awaiting-operator story status in sprint planning, preserve it during generation, and avoid treating parked or unsupported stories as complete.

Why

BMAD Loop can persist this status while external acceptance is pending. Sprint planning previously rejected it, reset it to backlog, and could report a false all-done recommendation.
Fixes #2871

How

  • Add awaiting-operator to the canonical story status ranking and documentation.
  • Preserve it during generation and count it as outstanding work.
  • Suppress retrospective and all-done conclusions when parked, illegal, or unrecognized story rows remain.

Testing

Ran uv run --frozen pytest skills/bmad-sprint-planning/scripts/tests/test_sprint_plan.py (41 passed), uv run --frozen tools/quality.py, and git diff --check.

@coderabbitai

coderabbitai Bot commented Sep 18, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: f5d08faf-66ec-4880-a03a-48ca75df9f32

📥 Commits

Reviewing files that changed from the base of the PR and between 8c0e91e and 4ba7daf.

📒 Files selected for processing (4)
  • skills/bmad-sprint-planning/references/status-view.md
  • skills/bmad-sprint-planning/scripts/sprint_plan.py
  • skills/bmad-sprint-planning/scripts/tests/test_sprint_plan.py
  • skills/bmad-sprint-planning/sprint-status-template.yaml

Included review availability: Your plan provides up to 10 included reviews per hour; 8 remain after this review.


📝 Walkthrough

Walkthrough

The sprint planning tools now recognize awaiting-operator as valid but incomplete work. Status reporting, validation, and generation preserve this state and avoid false completion recommendations.

Changes

Sprint status acceptance

Layer / File(s) Summary
Status vocabulary and documentation
skills/bmad-sprint-planning/scripts/sprint_plan.py, skills/bmad-sprint-planning/sprint-status-template.yaml, skills/bmad-sprint-planning/references/status-view.md
Adds awaiting-operator with rank 4 before done, and documents it as pending external operator acceptance.
Status evaluation and preservation
skills/bmad-sprint-planning/scripts/sprint_plan.py, skills/bmad-sprint-planning/scripts/tests/test_sprint_plan.py
Prevents awaiting-operator, illegal statuses, and unrecognized keys from producing completion results. Tests cover status reporting, validation, and generation preservation.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix · Severity of issue fixed: Medium

Suggested reviewers: alexeyv

Merge Risk: ⚪ Minimal · up to 4ba7d

The new awaiting-operator status is preserved during normal planning and prevents false completion recommendations. No merge-blocking issue was identified.

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the main change: preserving the awaiting-operator status in sprint planning.
Description check ✅ Passed The description directly explains recognition, preservation, validation, and completion handling for awaiting-operator, including testing details.
Linked Issues check ✅ Passed Issue #2871 requires consistent recognition of awaiting-operator in status reporting, validation, and generation. The reviewed code adds the status to STORY_RANK and the status definitions. The st…
Out of Scope Changes check ✅ Passed The changes stay within Issue #2871. The script change implements status recognition, outstanding-work accounting, preservation, and safe completion recommendations. The template and reference documen…
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@greptile-apps

greptile-apps Bot commented Sep 18, 2026

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 5/5

The PR appears safe to merge with the new status handled consistently across generation, validation, reporting, documentation, and tests.

Summary

This PR adds awaiting-operator to sprint planning’s canonical story lifecycle and preserves it across status generation. It also prevents parked or invalid sprint-status entries from producing retrospective or all-done conclusions.

  • Adds and documents the new story status.
  • Preserves the status during generation and accepts it during validation and fixes.
  • Counts awaiting acceptance as outstanding work.
  • Adds regression coverage for preservation, validation, and false-completion prevention.
Diagram
%%{init: {'theme': 'neutral'}}%%
flowchart TD
  A[Read sprint status] --> B{Actionable story status?}
  B -->|in-progress, review, ready, backlog| C[Return prioritized recommendation]
  B -->|none| D{Awaiting operator or invalid rows remain?}
  D -->|yes| E[No recommendation; all_done false]
  D -->|no| F{Open retrospective?}
  F -->|yes| G[Recommend retrospective]
  F -->|no| H[all_done true]
Loading

Reviews (1) · Last reviewed commit: "fix(sprint-planning): preserve awaiting-..."

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.

1 participant