This commit is contained in:
Dov Benyomin Sohacheski 2026-06-12 13:35:20 +03:00 committed by GitHub
commit e5d55a7d87
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 63 additions and 2 deletions

View File

@ -350,6 +350,7 @@ Amelia (Developer): "I found our retrospectives from Epic {{prev_epic_num}}. Let
**Action Item Follow-Through:** **Action Item Follow-Through:**
- For each action item from Epic {{prev_epic_num}} retro, check if it was completed - For each action item from Epic {{prev_epic_num}} retro, check if it was completed
- Cross-check the action_items section in {sprint_status_file} (if present) for Epic {{prev_epic_num}} entries and their current status
- Look for evidence in current epic's story records - Look for evidence in current epic's story records
- Mark each action item: ✅ Completed, ⏳ In Progress, ❌ Not Addressed - Mark each action item: ✅ Completed, ⏳ In Progress, ❌ Not Addressed
@ -1403,6 +1404,19 @@ Amelia (Developer): "See you all when prep work is done. Meeting adjourned!"
<action>Find development_status key "epic-{{epic_number}}-retrospective"</action> <action>Find development_status key "epic-{{epic_number}}-retrospective"</action>
<action>Verify current status (typically "optional" or "pending")</action> <action>Verify current status (typically "optional" or "pending")</action>
<action>Update development_status["epic-{{epic_number}}-retrospective"] = "done"</action> <action>Update development_status["epic-{{epic_number}}-retrospective"] = "done"</action>
<action>Append each Epic {{epic_number}} action item to the action_items section, creating the section after development_status if missing. One entry per item:</action>
```yaml
action_items:
- epic: {{epic_number}}
action: "{{action_description}}"
owner: "{{owner}}"
status: open
```
<action>Quote action and owner values so punctuation (e.g., "#") cannot break YAML parsing</action>
<action>Update Epic {{prev_epic_num}} action_items entries based on Step 4 follow-through: ✅ Completed → done, ⏳ In Progress → in-progress, ❌ Not Addressed → keep existing status (do not modify)</action>
<action>Update last_updated field to current date</action> <action>Update last_updated field to current date</action>
<action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action> <action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action>
@ -1412,6 +1426,7 @@ Amelia (Developer): "See you all when prep work is done. Meeting adjourned!"
Retrospective key: epic-{{epic_number}}-retrospective Retrospective key: epic-{{epic_number}}-retrospective
Status: {{previous_status}} → done Status: {{previous_status}} → done
Action items recorded: {{action_count}}
</output> </output>
</check> </check>

View File

@ -151,6 +151,7 @@ development_status:
- If existing `{status_file}` exists and has more advanced status, preserve it - If existing `{status_file}` exists and has more advanced status, preserve it
- Never downgrade status (e.g., don't change `done` to `ready-for-dev`) - Never downgrade status (e.g., don't change `done` to `ready-for-dev`)
- If existing `{status_file}` has an `action_items` section, carry it over unchanged
**Status Flow Reference:** **Status Flow Reference:**
@ -194,12 +195,18 @@ development_status:
# - optional: Can be completed but not required # - optional: Can be completed but not required
# - done: Retrospective has been completed # - done: Retrospective has been completed
# #
# Action Item Status:
# - open: Committed during a retrospective, not yet addressed
# - in-progress: Actively being worked on
# - done: Completed
#
# WORKFLOW NOTES: # WORKFLOW NOTES:
# =============== # ===============
# - Epic transitions to 'in-progress' automatically when first story is created # - Epic transitions to 'in-progress' automatically when first story is created
# - Stories can be worked in parallel if team capacity allows # - Stories can be worked in parallel if team capacity allows
# - Developer typically creates next story after previous one is 'done' to incorporate learnings # - Developer typically creates next story after previous one is 'done' to incorporate learnings
# - Dev moves story to 'review', then runs code-review (fresh context, different LLM recommended) # - Dev moves story to 'review', then runs code-review (fresh context, different LLM recommended)
# - Retrospective appends its action items to action_items; sprint-status surfaces open ones
generated: { date } generated: { date }
last_updated: { date } last_updated: { date }
@ -215,6 +222,7 @@ development_status:
<action>Write the complete sprint status YAML to {status_file}</action> <action>Write the complete sprint status YAML to {status_file}</action>
<action>CRITICAL: Metadata appears TWICE - once as comments (#) for documentation, once as YAML key:value fields for parsing</action> <action>CRITICAL: Metadata appears TWICE - once as comments (#) for documentation, once as YAML key:value fields for parsing</action>
<action>Ensure all items are ordered: epic, its stories, its retrospective, next epic...</action> <action>Ensure all items are ordered: epic, its stories, its retrospective, next epic...</action>
<action>If the existing file had an action_items section, write it back unchanged after development_status</action>
</step> </step>
<step n="5" goal="Validate and report"> <step n="5" goal="Validate and report">
@ -223,7 +231,8 @@ development_status:
- [ ] Every epic in epic files appears in {status_file} - [ ] Every epic in epic files appears in {status_file}
- [ ] Every story in epic files appears in {status_file} - [ ] Every story in epic files appears in {status_file}
- [ ] Every epic has a corresponding retrospective entry - [ ] Every epic has a corresponding retrospective entry
- [ ] No items in {status_file} that don't exist in epic files - [ ] No development_status items in {status_file} that don't exist in epic files
- [ ] action_items section (if it existed) carried over unchanged
- [ ] All status values are legal (match state machine definitions) - [ ] All status values are legal (match state machine definitions)
- [ ] File is valid YAML syntax - [ ] File is valid YAML syntax
@ -291,6 +300,16 @@ optional ↔ done
- **optional**: Ready to be conducted but not required - **optional**: Ready to be conducted but not required
- **done**: Finished - **done**: Finished
**Action Item Status:**
```
open → in-progress → done
```
- **open**: Committed during a retrospective, not yet addressed
- **in-progress**: Actively being worked on
- **done**: Completed
### Guidelines ### Guidelines
1. **Epic Activation**: Mark epic as `in-progress` when starting work on its first story 1. **Epic Activation**: Mark epic as `in-progress` when starting work on its first story

View File

@ -7,7 +7,8 @@
- [ ] Every epic found in epic\*.md files appears in sprint-status.yaml - [ ] Every epic found in epic\*.md files appears in sprint-status.yaml
- [ ] Every story found in epic\*.md files appears in sprint-status.yaml - [ ] Every story found in epic\*.md files appears in sprint-status.yaml
- [ ] Every epic has a corresponding retrospective entry - [ ] Every epic has a corresponding retrospective entry
- [ ] No items in sprint-status.yaml that don't exist in epic files - [ ] No development_status items in sprint-status.yaml that don't exist in epic files
- [ ] action_items section (if it existed) carried over unchanged
### Parsing Verification ### Parsing Verification

View File

@ -26,11 +26,17 @@
# - optional: Can be completed but not required # - optional: Can be completed but not required
# - done: Retrospective has been completed # - done: Retrospective has been completed
# #
# Action Item Status:
# - open: Committed during a retrospective, not yet addressed
# - in-progress: Actively being worked on
# - done: Completed
#
# WORKFLOW NOTES: # WORKFLOW NOTES:
# =============== # ===============
# - Mark epic as 'in-progress' when starting work on its first story # - Mark epic as 'in-progress' when starting work on its first story
# - Developer typically creates next story ONLY after previous one is 'done' to incorporate learnings # - Developer typically creates next story ONLY after previous one is 'done' to incorporate learnings
# - Dev moves story to 'review', then Dev runs code-review (fresh context, ideally different LLM) # - Dev moves story to 'review', then Dev runs code-review (fresh context, ideally different LLM)
# - Retrospective appends its action items to action_items; sprint-status surfaces open ones
# EXAMPLE STRUCTURE (your actual epics/stories will replace these): # EXAMPLE STRUCTURE (your actual epics/stories will replace these):
@ -54,3 +60,10 @@ development_status:
2-2-chat-interface: backlog 2-2-chat-interface: backlog
2-3-llm-integration: backlog 2-3-llm-integration: backlog
epic-2-retrospective: optional epic-2-retrospective: optional
# Action items committed during retrospectives (section created by the retrospective workflow)
action_items:
- epic: 1
action: "Add error-handling review to the code review checklist"
owner: "Charlie"
status: open

View File

@ -112,12 +112,14 @@ Run `/bmad:bmm:workflows:sprint-planning` to generate it, then rerun sprint-stat
<action>Map legacy epic status "contexted" → "in-progress"</action> <action>Map legacy epic status "contexted" → "in-progress"</action>
<action>Count epic statuses: backlog, in-progress, done</action> <action>Count epic statuses: backlog, in-progress, done</action>
<action>Count retrospective statuses: optional, done</action> <action>Count retrospective statuses: optional, done</action>
<action>Parse action_items list if present. Set open_action_items = entries with status "open" or "in-progress"</action>
<action>Validate all statuses against known values:</action> <action>Validate all statuses against known values:</action>
- Valid story statuses: backlog, ready-for-dev, in-progress, review, done, drafted (legacy) - Valid story statuses: backlog, ready-for-dev, in-progress, review, done, drafted (legacy)
- Valid epic statuses: backlog, in-progress, done, contexted (legacy) - Valid epic statuses: backlog, in-progress, done, contexted (legacy)
- Valid retrospective statuses: optional, done - Valid retrospective statuses: optional, done
- Valid action item statuses: open, in-progress, done
<check if="any status is unrecognized"> <check if="any status is unrecognized">
<output> <output>
@ -132,6 +134,7 @@ Run `/bmad:bmm:workflows:sprint-planning` to generate it, then rerun sprint-stat
- Stories: backlog, ready-for-dev, in-progress, review, done - Stories: backlog, ready-for-dev, in-progress, review, done
- Epics: backlog, in-progress, done - Epics: backlog, in-progress, done
- Retrospectives: optional, done - Retrospectives: optional, done
- Action items: open, in-progress, done
</output> </output>
<ask>How should these be corrected? <ask>How should these be corrected?
{{#each invalid_entries}} {{#each invalid_entries}}
@ -181,6 +184,14 @@ Enter corrections (e.g., "1=in-progress, 2=backlog") or "skip" to continue witho
**Next Recommendation:** /bmad:bmm:workflows:{{next_workflow_id}} ({{next_story_id}}) **Next Recommendation:** /bmad:bmm:workflows:{{next_workflow_id}} ({{next_story_id}})
{{#if open_action_items}}
**Open Action Items:**
{{#each open_action_items}}
- {{action}} — {{status}} (epic {{epic}}, owner: {{owner}})
{{/each}}
{{/if}}
{{#if risks}} {{#if risks}}
**Risks:** **Risks:**
{{#each risks}} {{#each risks}}
@ -243,6 +254,7 @@ If the command targets a story, set `story_key={{next_story_id}}` when prompted.
<template-output>epic_backlog = {{epic_backlog}}</template-output> <template-output>epic_backlog = {{epic_backlog}}</template-output>
<template-output>epic_in_progress = {{epic_in_progress}}</template-output> <template-output>epic_in_progress = {{epic_in_progress}}</template-output>
<template-output>epic_done = {{epic_done}}</template-output> <template-output>epic_done = {{epic_done}}</template-output>
<template-output>open_action_items = {{open_action_items}}</template-output>
<template-output>risks = {{risks}}</template-output> <template-output>risks = {{risks}}</template-output>
<action>Return to caller</action> <action>Return to caller</action>
</step> </step>
@ -283,6 +295,7 @@ If the command targets a story, set `story_key={{next_story_id}}` when prompted.
- Stories: backlog, ready-for-dev, in-progress, review, done (legacy: drafted) - Stories: backlog, ready-for-dev, in-progress, review, done (legacy: drafted)
- Epics: backlog, in-progress, done (legacy: contexted) - Epics: backlog, in-progress, done (legacy: contexted)
- Retrospectives: optional, done - Retrospectives: optional, done
- Action items (if present): open, in-progress, done
<check if="any invalid status found"> <check if="any invalid status found">
<template-output>is_valid = false</template-output> <template-output>is_valid = false</template-output>
<template-output>error = "Invalid status values: {{invalid_entries}}"</template-output> <template-output>error = "Invalid status values: {{invalid_entries}}"</template-output>