fix: add MANDATORY story reconciliation with hard blocker in Fixer agent

**CRITICAL BUG FIX:** Story files were not being updated after implementation

**Root Cause:**
- Fixer agent had vague instructions ("# Update checkboxes")
- No verification that story file was actually updated
- Agents could commit without checking off tasks

**Solution:**
- Added MANDATORY step-by-step story reconciliation (Step 1a-1e)
- Explicit bash commands to:
  1. Read git diff to see what was built
  2. Read story Tasks section
  3. Check off completed tasks using Edit tool
  4. Fill Dev Agent Record with files/dates/notes
  5. Verify updates with grep
- Added HARD BLOCKER in Step 3 (Pre-Commit Verification)
  - Blocks commit if checked tasks = 0
  - Blocks commit if Dev Agent Record not filled
  - Forces agent to fix before proceeding

**Changes:**
- Fixer agent now has 75 lines of explicit reconciliation instructions
- Cannot proceed to commit without verification passing
- Clear error messages if story file not updated

**Version:** 6.0.0-Beta.4 → 6.0.0-Beta.5
This commit is contained in:
Jonah Schulte 2026-01-26 21:19:24 -05:00
parent d3bf02a0af
commit cdf25d1591
2 changed files with 114 additions and 9 deletions

View File

@ -1,7 +1,7 @@
{ {
"$schema": "https://json.schemastore.org/package.json", "$schema": "https://json.schemastore.org/package.json",
"name": "@jonahschulte/bmad-method", "name": "@jonahschulte/bmad-method",
"version": "6.0.0-Beta.4", "version": "6.0.0-Beta.5",
"description": "Breakthrough Method of Agile AI-driven Development (Enhanced with TDD, intelligent multi-agent review, and production-hardened enforcement)", "description": "Breakthrough Method of Agile AI-driven Development (Enhanced with TDD, intelligent multi-agent review, and production-hardened enforcement)",
"keywords": [ "keywords": [
"agile", "agile",

View File

@ -79,22 +79,118 @@ low_issues: [#10, #11] # SKIP (gold-plating)
## After Fixing Issues ## After Fixing Issues
### 1. Update Story File ### 1. Update Story File (MANDATORY)
**Mark completed tasks:** **THIS STEP IS MANDATORY. DO NOT SKIP.**
**Step 1a: Identify what was built**
```bash ```bash
# Update checkboxes in story file # Get list of files changed in latest commit
# Change [ ] to [x] for completed tasks git diff HEAD~1 --name-only
# Get commit message
git log -1 --pretty=%B
```
**Step 1b: Read story Tasks section**
```bash
# Find the Tasks section in story file
grep -A 100 "^## Tasks" docs/sprint-artifacts/{{story_key}}.md | grep "^- \["
```
**Step 1c: Check off completed tasks**
For EACH task in the Tasks section:
1. Read the task description
2. Check if related files/functions exist in git diff
3. If code for that task exists, use Edit tool to change `- [ ]` to `- [x]`
4. Verify edit worked with grep
**Example:**
```bash
# Task says: "Create RetryScheduler service"
# Check if file exists in commit:
git diff HEAD~1 --name-only | grep -i retry
# Result: lib/billing/retry-scheduler.ts
# Use Edit tool to check off task:
# Find exact line: grep -n "RetryScheduler" docs/sprint-artifacts/{{story_key}}.md
# Edit: Change "- [ ] Create RetryScheduler service" → "- [x] Create RetryScheduler service"
# Verify:
grep "^\- \[x\].*RetryScheduler" docs/sprint-artifacts/{{story_key}}.md
# Should return the checked line
```
**Step 1d: Fill Dev Agent Record**
Find the Dev Agent Record section and fill it in:
```markdown
### Dev Agent Record
- **Agent Model Used:** Claude Sonnet 4.5 (multi-agent pipeline: Builder + Inspector + Reviewer + Fixer)
- **Implementation Date:** 2026-01-26
- **Files Created/Modified:**
- lib/billing/retry-scheduler.ts
- lib/billing/payment-processor.ts
- lib/billing/worker.ts
- [list ALL files from git diff]
- **Tests Added:**
- lib/billing/__tests__/retry-scheduler.test.ts
- lib/billing/__tests__/payment-processor.test.ts
- lib/billing/__tests__/worker.test.ts
- **Completion Notes:**
- Implemented exponential backoff retry logic
- Added payment processor with Stripe integration
- Created worker with queue processing
- Fixed 8 CRITICAL/HIGH code review findings
- All production code passing type-check and lint
```
**Step 1e: Verify story file was updated**
```bash
# Count checked tasks
grep -c "^\- \[x\]" docs/sprint-artifacts/{{story_key}}.md
# Verify Dev Agent Record filled
grep -A 20 "^### Dev Agent Record" docs/sprint-artifacts/{{story_key}}.md | grep -c "Agent Model"
# If count is 0, STOP and fix it. DO NOT PROCEED to commit.
``` ```
### 2. Update Sprint Status ### 2. Update Sprint Status
**Update sprint-status.yaml:** **Update sprint-status.yaml:**
```yaml ```yaml
17-10-occupant-agreement-view: done # was: ready-for-dev {{story_key}}: done # was: ready-for-dev
``` ```
### 3. Commit Changes ### 3. Pre-Commit Verification (BLOCKER)
**BEFORE YOU COMMIT, VERIFY STORY FILE WAS UPDATED:**
```bash
# Check 1: Count checked tasks (must be > 0)
CHECKED_COUNT=$(grep -c "^\- \[x\]" docs/sprint-artifacts/{{story_key}}.md)
echo "Checked tasks: $CHECKED_COUNT"
# Check 2: Verify Dev Agent Record filled (must be 1)
RECORD_FILLED=$(grep -A 20 "^### Dev Agent Record" docs/sprint-artifacts/{{story_key}}.md | grep -c "Agent Model")
echo "Dev Agent Record filled: $RECORD_FILLED"
# BLOCKER: If either check fails, STOP
if [ "$CHECKED_COUNT" -eq 0 ] || [ "$RECORD_FILLED" -eq 0 ]; then
echo "❌ BLOCKER: Story file NOT updated"
echo "You MUST update the story file before committing."
echo "Go back to Step 1 and complete the story reconciliation."
exit 1
fi
echo "✅ Story file verification passed"
```
### 4. Commit Changes
**Only proceed if Step 3 verification passed:**
```bash ```bash
git add . git add .
@ -151,10 +247,19 @@ All tests passing, type check clean, lint clean."
- ✅ Build: PASS - ✅ Build: PASS
- ✅ Tests: 48/48 passing (96% coverage) - ✅ Tests: 48/48 passing (96% coverage)
**Story File Updates (MANDATORY):**
- ✅ Tasks checked off: X/Y tasks marked complete
- ✅ Dev Agent Record filled with files and notes
- ✅ Verified with grep (counts > 0)
**Git:** **Git:**
- ✅ Commit created: a1b2c3d - ✅ Commit created: a1b2c3d
- ✅ Story checkboxes updated - ✅ Sprint status updated to "done"
- ✅ Sprint status updated
**Pre-Commit Verification:**
- ✅ Checked tasks count: X (must be > 0)
- ✅ Dev Agent Record filled: YES (must be 1)
- ✅ BLOCKER passed
**Story Status:** COMPLETE **Story Status:** COMPLETE
``` ```