diff --git a/src/core/tasks/workflow.xml b/src/core/tasks/workflow.xml
index 137b6dd5..874a9f7e 100644
--- a/src/core/tasks/workflow.xml
+++ b/src/core/tasks/workflow.xml
@@ -99,7 +99,29 @@
Confirm document saved to output path
- Report workflow completion
+
+ 🚨 FILENAME VALIDATION - CANONICAL FORMAT ENFORCEMENT
+ Verify output filename matches expected pattern from workflow.yaml
+
+ Expected: {default_output_file} (from workflow.yaml)
+ Actual: {file_actually_created}
+
+ If filenames don't match:
+ ❌ CRITICAL: Agent created file with WRONG name
+
+ Expected: {default_output_file}
+ Got: {file_actually_created}
+
+ Auto-fix: Rename file to canonical format
+ ```bash
+ mv "{file_actually_created}" "{default_output_file}"
+ ```
+
+ Verify rename worked:
+ test -f "{default_output_file}" || (echo "Rename failed - HALT" && exit 1)
+
+
+ Report workflow completion with verified filename
diff --git a/src/modules/bmm/workflows/4-implementation/batch-super-dev/instructions.md b/src/modules/bmm/workflows/4-implementation/batch-super-dev/instructions.md
index 98d417e9..71d21d0e 100644
--- a/src/modules/bmm/workflows/4-implementation/batch-super-dev/instructions.md
+++ b/src/modules/bmm/workflows/4-implementation/batch-super-dev/instructions.md
@@ -94,30 +94,40 @@ Run `/bmad_bmm_sprint-status` to see current status.
Input: "20-11" → epic=20, story=11, suffix=""
-
- Use Glob tool to search for files matching these patterns (in priority order):
+
+ 🚨 ONE CANONICAL FORMAT - NO VARIATIONS
- story-{epic_num}.{story_num}.md
- story-20.9.md (DOT notation, no suffix)
+ CANONICAL FORMAT: {story_key}.md
+ 20-9-megamenu-navigation.md (epic-story-slug, NO prefix)
+ 18-1-charge-model-state-machine.md (epic-story-slug, NO prefix)
- story-{epic_num}.{story_num}*.md
- story-20.9-megamenu-navigation.md (DOT notation WITH suffix - use Glob wildcard)
+ Check if file exists: {sprint_artifacts}/{story_key}.md
- {epic_num}-{story_num}.md
- 20-9.md (HYPHEN notation, no "story-" prefix)
+
+ Set file_status = ✅ EXISTS
+ Store file_path = {sprint_artifacts}/{story_key}.md
+
- {epic_num}-{story_num}*.md
- 20-9-megamenu-navigation.md (HYPHEN notation WITH suffix)
+
+ Set file_status = ❌ MISSING
- story-{story_key}.md
- story-20-9-megamenu-navigation.md (literal story_key with "story-" prefix)
+ Check for legacy wrong-named files:
+ Search for: story-{story_key}.md (wrong - has "story-" prefix)
- {story_key}.md
- 20-9-megamenu-navigation.md (literal story_key)
+
+
+
- Stop at first match and store file_path
- If NO match found after all 6 patterns → file_status = ❌ MISSING
- If match found → file_status = ✅ EXISTS
+ Rename: mv story-{story_key}.md {story_key}.md
+ Verify rename worked
+ Set file_status = ✅ EXISTS (after rename)
+ Store file_path = {sprint_artifacts}/{story_key}.md
+
+
+
+ file_status = ❌ MISSING (genuinely missing)
+
+ Mark stories as: ✅ (file exists), ❌ (file missing), 🔄 (already implemented but not marked done)
@@ -1116,8 +1126,73 @@ Wave {{wave_num}} complete: {{completed_in_wave}} succeeded, {{failed_in_wave}}
Load reconciliation instructions: {installed_path}/step-4.5-reconcile-story-status.mdExecute reconciliation with story_key={{story_key}}
-
-
+ 🚨 AUTO-FIX RECONCILIATION - MAKE IT RIGHT NOW
+ Verify reconciliation by checking story file:
+ 1. Re-read story file: {{story_file_path}}
+ 2. Count checked tasks: grep -c "^\- \[x\]" {{story_file_path}}
+ 3. Count total tasks: grep -c "^\- \[.\]" {{story_file_path}}
+ 4. Verify Dev Agent Record filled
+
+
+
+
+ AUTO-FIX STEPS:
+ 1. Read the agent's git commit for this story
+ 2. Extract files created/modified from commit
+ 3. Read story Tasks section
+ 4. For each task:
+ - Check if task mentions a file from the commit
+ - Check if task mentions a function that exists in those files
+ - If yes: Use Edit tool to check off task (- [ ] → - [x])
+ - Verify edit worked with grep
+ - If edit failed: Retry with exact line match
+ - If still failed: Log and continue to next task
+ 5. Fill in Dev Agent Record:
+ - Agent Model: Extract from state file
+ - File List: From git diff --name-only
+ - Completion Notes: From commit message
+ - Use Edit tool to replace placeholder text
+ 6. Verify auto-fix worked:
+ - Re-count checked tasks
+ - Verify Dev Agent Record no longer empty
+
+
+
+ Continue with story as completed
+
+
+
+
+ Mark story as "review" (not done) in sprint-status
+ Add detailed warning to reconciliation_warnings
+ Continue (do not halt entire batch)
+
+
+
+
+
+ Override story status to "in-progress"
+ Override sprint-status to "in-progress"
+ Add to reconciliation_warnings
+
+
+
+
+
Increment completed counter
@@ -1317,15 +1392,62 @@ Press [C] to continue or [P] to pause:
Load reconciliation instructions: {installed_path}/step-4.5-reconcile-story-status.mdExecute reconciliation with story_key={{story_key}}
-
-
+ 🚨 MANDATORY RECONCILIATION AUTO-FIX - MAKE IT RIGHT
+ Verify reconciliation by checking story file:
+ 1. Re-read story file: {{story_file_path}}
+ 2. Count checked tasks vs total tasks
+ 3. Check Dev Agent Record filled
+
+
+
+
+ AUTO-FIX PROCEDURE:
+ 1. Read agent's commit to see what files were created/modified
+ 2. Read story Tasks section to see what was supposed to be built
+ 3. For each task, check if corresponding code exists in commit
+ 4. If code exists, check off the task using Edit tool
+ 5. Fill in Dev Agent Record with commit details
+ 6. Verify fixes worked (re-count checked tasks)
+
+
+
+ Continue with story completion
+
+
+
+
+ Override story status to "in-progress"
+ Add to reconciliation_warnings with detailed diagnostic
+ Continue (do NOT kill workers)
+
+
+
+
+
+
Add to completed_stories
-
-
- Add to completed_stories (implementation successful)
- Add to reconciliation_warnings: {story_key: {{story_key}}, warning_message: "Reconciliation failed - manual verification needed"}
+
+
+ Add to reconciliation_warnings: {story_key: {{story_key}}, warning_message: "Only {{task_completion_pct}}% tasks checked - manual verification needed"}Remove worker_id from active_workers (free the slot)
diff --git a/src/modules/bmm/workflows/4-implementation/multi-agent-review/workflow.yaml b/src/modules/bmm/workflows/4-implementation/multi-agent-review/workflow.yaml
index d62dd9c4..d372490e 100644
--- a/src/modules/bmm/workflows/4-implementation/multi-agent-review/workflow.yaml
+++ b/src/modules/bmm/workflows/4-implementation/multi-agent-review/workflow.yaml
@@ -15,7 +15,7 @@ instructions: "{installed_path}/instructions.md"
# Input parameters
story_id: "{story_id}" # Required
-story_file: "{sprint_artifacts}/story-{story_id}.md"
+story_file: "{sprint_artifacts}/{story_id}.md" # CANONICAL FORMAT: epic-story-slug.md (NO "story-" prefix)
base_branch: "main" # Optional: branch to compare against
complexity_level: "standard" # micro | standard | complex (passed from super-dev-pipeline)
@@ -55,4 +55,3 @@ review_settings:
review_report: "{sprint_artifacts}/review-{story_id}-multi-agent.md"
standalone: true
-web_bundle: false
diff --git a/src/modules/bmm/workflows/4-implementation/super-dev-pipeline/steps/step-01-init.md b/src/modules/bmm/workflows/4-implementation/super-dev-pipeline/steps/step-01-init.md
index dcb23ab2..22f4e2e0 100644
--- a/src/modules/bmm/workflows/4-implementation/super-dev-pipeline/steps/step-01-init.md
+++ b/src/modules/bmm/workflows/4-implementation/super-dev-pipeline/steps/step-01-init.md
@@ -44,52 +44,83 @@ Check if running in batch or interactive mode:
Set `{mode}` variable.
-### 2. Resolve Story File Path
+### 2. Resolve Story File Path (CANONICAL FORMAT ONLY)
+
+🚨 ONE CANONICAL NAMING FORMAT - NO VARIATIONS ALLOWED
+
+**Canonical Format:** `{epic}-{story_num}-{slug}.md`
+
+**Examples:**
+- 1-1-multi-tenant-data-isolation-security.md
+- 18-1-charge-model-state-machine.md
+- 20-3-payment-dashboard.md
**From input parameters:**
-- `story_id`: e.g., "1-4"
-- `story_file`: Full path to story file
+- `story_key`: Full key like "18-1-charge-model-state-machine"
+- `story_file`: Full path (if explicitly provided)
**If story_file not provided:**
+
+```bash
+sprint_artifacts="{sprint_artifacts}"
+story_key="{story_key}" # e.g., "18-1-charge-model-state-machine"
+
+# CANONICAL PATH (only one pattern):
+story_file="${sprint_artifacts}/${story_key}.md"
+
+# Example: /path/to/docs/sprint-artifacts/18-1-charge-model-state-machine.md
```
-story_file = {sprint_artifacts}/story-{story_id}.md
-```
+
+**NO FALLBACKS. NO ALTERNATIVES. ONE FORMAT.**
### 3. Verify Story Exists (Auto-Create if Missing - NEW v1.4.0)
+### 3. Verify Story File Exists (Auto-Fix Wrong Names)
+
```bash
-# Check if story file exists
-test -f "{story_file}"
-```
+# Check if canonical file exists
+if [ ! -f "$story_file" ]; then
+ echo "⚠️ Canonical file not found: $story_file"
+ echo ""
+ echo "🔍 Searching for wrong-named versions..."
-**If story does NOT exist:**
-```
-⚠️ Story file not found at {story_file}
+ # Check for common wrong patterns
+ wrong_patterns=(
+ "${sprint_artifacts}/story-${story_key}.md" # story- prefix (legacy)
+ "${sprint_artifacts}/${epic_num}.${story_num}-*.md" # dot notation
+ )
-🔄 AUTO-CREATING: Invoking /create-story-with-gap-analysis...
-```
+ found_wrong=""
+ for wrong_pattern in "${wrong_patterns[@]}"; do
+ if ls $wrong_pattern 2>/dev/null | head -1 | read wrong_file; then
+ found_wrong="$wrong_file"
+ break
+ fi
+ done
-
- {story_id}
- {epic_num}
- {story_num}
-
+ if [ -n "$found_wrong" ]; then
+ echo "✅ Found wrong-named file: $found_wrong"
+ echo "🔧 AUTO-RENAMING to canonical format: $story_file"
-After workflow completes, verify story was created:
-```bash
-test -f "{story_file}" && echo "✅ Story created successfully" || echo "❌ Story creation failed - HALT"
-```
+ mv "$found_wrong" "$story_file"
-**If story was created, set flag for smart gap analysis:**
-```yaml
-# Set state flag to skip redundant gap analysis in step 2
-story_just_created: true
-gap_analysis_completed: true # Already done in create-story-with-gap-analysis
-```
+ if [ -f "$story_file" ]; then
+ echo "✅ Renamed successfully"
+ else
+ echo "❌ Rename failed - HALT"
+ exit 1
+ fi
+ else
+ echo "❌ No story file found (canonical OR wrong names)"
+ echo ""
+ echo "**STORY FILE REQUIRED - CANNOT VIBE CODE**"
+ echo ""
+ echo "Creating story file now..."
+ # Invoke create-story workflow
+ fi
+fi
-**If story exists:**
-```
-✅ Story file found: {story_file}
+echo "✅ Story file verified: $story_file"
```
### 4. Load Story File
diff --git a/src/modules/bmm/workflows/4-implementation/super-dev-pipeline/steps/step-04-implement.md b/src/modules/bmm/workflows/4-implementation/super-dev-pipeline/steps/step-04-implement.md
index 473c124a..1c3babe7 100644
--- a/src/modules/bmm/workflows/4-implementation/super-dev-pipeline/steps/step-04-implement.md
+++ b/src/modules/bmm/workflows/4-implementation/super-dev-pipeline/steps/step-04-implement.md
@@ -219,18 +219,59 @@ npm test -- --run && npm run lint
**D. If Validation Succeeds:**
```
-✅ Batch Complete
+✅ Batch Complete - All {task_count} tasks executed successfully!
+```
-All {task_count} tasks in batch executed successfully!
+🚨 AUTO-FIX: CHECK OFF ALL BATCH TASKS WITH RETRY LOGIC
-Marking all tasks complete:
-- [x] {task_1}
-- [x] {task_2}
-- [x] {task_3}
-...
+**For EACH task in batch:**
+
+```
+FOR task_text IN [task_1, task_2, task_3, ...]:
+
+ ATTEMPT 1: Use Edit tool to check off task
+ Read story file
+ Find line: "- [ ] {task_text}"
+ Edit to: "- [x] {task_text}"
+
+ VERIFY:
+ Re-read story file
+ Check if "- [x] {task_text}" exists
+
+ IF FAILED:
+ ATTEMPT 2: Retry with exact line matching
+ Read story file with line numbers
+ Find exact line text (with spacing/indentation)
+ Edit with exact old_string match
+ Verify again
+
+ IF FAILED:
+ ATTEMPT 3: Write entire section
+ Read full Tasks section
+ Update all batch task checkboxes to [x]
+ Write back to story file
+ Verify again
+
+ IF STILL FAILED:
+ ❌ CRITICAL: Cannot check off task after 3 attempts
+ Log diagnostic info:
+ - Task text we're trying to check
+ - What Edit tool is matching against
+ - Edit tool error messages
+ HALT - Fundamental tool failure
+
+ SUCCESS:
+ ✅ Task checked: {task_text}
+ Continue to next task in batch
+
+END FOR
+
+✅ All {task_count} batch tasks verified checked
+```
+
+**Guarantee:** Every task gets 3 attempts to check off. Only HALT if all methods exhausted.
Time: {actual_time} minutes
-```
**E. If Validation Fails:**
```
@@ -360,10 +401,56 @@ After implementing task, verify:
- [ ] No TypeScript errors
- [ ] Follows project patterns
-**Mark task complete in story file:**
-```markdown
-- [x] {task_description}
+**MANDATORY: Mark task complete in story file:**
+
+🚨 AUTO-FIX ENFORCEMENT - CHECK OFF TASK OR RETRY UNTIL SUCCESS
+
```
+STEP 1: Attempt to check off task using Edit tool
+
+Read current task line from story file
+Use Edit tool to change: "- [ ] {task_text}" → "- [x] {task_text}"
+
+STEP 2: VERIFY checkbox was updated (MANDATORY)
+
+Re-read story file
+Count checked tasks for this specific task
+
+IF VERIFICATION FAILS:
+ ❌ Edit tool failed to check off task
+
+ RETRY LOGIC:
+ 1. Read story file again (get latest content)
+ 2. Find exact task line (with line numbers)
+ 3. Use Edit tool with EXACT old_string (including indentation, spacing)
+ 4. Update to [x]
+ 5. Verify again
+
+ IF RETRY FAILS:
+ ❌ Still not checked after retry
+
+ DIAGNOSTIC:
+ - Show actual line from story file
+ - Show what Edit tool tried to match
+ - Show error message from Edit tool
+
+ THEN: Use Write tool to rewrite entire story file with task checked
+
+ THEN: Verify AGAIN
+
+ IF STILL FAILS:
+ HALT - Something is fundamentally broken, cannot continue
+
+STEP 3: Confirmation
+
+✅ Task checkbox verified: {task_text}
+
+Story file updated: {checked_count} tasks now complete
+```
+
+**Auto-fix loop:** Try Edit → Verify → Retry Edit → Verify → Write file → Verify → HALT only if all methods fail
+
+**Maximum 3 attempts before HALT.**
**Update state file with progress.**
@@ -459,7 +546,50 @@ Ready for Post-Validation
## QUALITY GATE
-Before proceeding:
+**MANDATORY PRE-FLIGHT CHECKS (with verification code):**
+
+### 1. Verify Files Match Story File List
+
+```bash
+# Extract expected files from story File List section
+story_file="{story_file}"
+
+# Check each file in File List exists
+missing_files=0
+while IFS= read -r file_line; do
+ if [[ "$file_line" =~ ^-[[:space:]]+(.*\.ts|.*\.tsx|.*\.sql)$ ]]; then
+ expected_file="${BASH_REMATCH[1]}"
+ if [ ! -f "$expected_file" ]; then
+ echo "❌ MISSING FILE: $expected_file (specified in File List)"
+ missing_files=$((missing_files + 1))
+ fi
+ fi
+done < <(sed -n '/## File List/,/##/p' "$story_file")
+
+if [ "$missing_files" -gt 0 ]; then
+ echo ""
+ echo "❌ CRITICAL: $missing_files files from File List not created"
+ echo "This means you built DIFFERENT code than the story specified."
+ echo ""
+ echo "HALTING - Implementation does not match story."
+ exit 1
+fi
+```
+
+### 2. Verify Tasks Match Implementation
+
+```bash
+# For each task, verify corresponding code exists
+# Example: Task says "Create validateStateTransition function"
+# Verify: grep "function validateStateTransition" billing-service.ts
+
+# This requires reading tasks and checking file contents
+# Implementation: Read each task checkbox text, extract expected artifact (function/model/file)
+# Check if that artifact exists in the codebase
+```
+
+### 3. Standard Quality Checks
+
- [ ] All unchecked tasks completed
- [ ] All tests pass
- [ ] Lint clean
@@ -470,8 +600,73 @@ Before proceeding:
## CRITICAL STEP COMPLETION
-**ONLY WHEN** [all tasks complete AND all tests pass AND lint clean AND build succeeds],
-load and execute `{nextStepFile}` for post-validation.
+**MANDATORY VERIFICATION BEFORE PROCEEDING:**
+
+🚨 FINAL TASK AUDIT - AUTO-FIX MISSING CHECKBOXES
+
+**Execute verification with auto-fix retry:**
+
+```bash
+story_file="{story_file}"
+
+# Count checked vs total tasks
+checked_tasks=$(grep -c "^- \[x\]" "$story_file" || echo "0")
+total_tasks=$(grep -c "^- \[[x ]\]" "$story_file" || echo "0")
+
+if [ "$checked_tasks" -eq 0 ] && [ "$total_tasks" -gt 0 ]; then
+ echo "❌ CRITICAL: ZERO tasks checked but $total_tasks tasks exist"
+ echo ""
+ echo "This means you FAILED to update the story file during implementation."
+ echo ""
+ echo "ATTEMPTING AUTO-FIX:"
+ echo "Reading story file to find what should be checked..."
+
+ # Extract all task lines
+ # For each task that has corresponding code (from File List or tests)
+ # Use Edit tool to check it off
+ # Re-verify after each edit
+
+ # After auto-fix attempts:
+ checked_tasks=$(grep -c "^- \[x\]" "$story_file" || echo "0")
+
+ if [ "$checked_tasks" -eq 0 ]; then
+ echo ""
+ echo "❌ AUTO-FIX FAILED: Still zero tasks checked"
+ echo ""
+ echo "YOU MUST manually review story file and check off completed tasks."
+ echo "HALTING - Cannot proceed with broken task tracking."
+ exit 1
+ else
+ echo "✅ AUTO-FIX SUCCESS: $checked_tasks tasks now checked"
+ fi
+fi
+
+completion_pct=$((checked_tasks * 100 / total_tasks))
+
+if [ "$completion_pct" -lt 80 ]; then
+ echo "⚠️ WARNING: Only $completion_pct% complete ($checked_tasks/$total_tasks)"
+ echo ""
+ echo "ATTEMPTING TO IDENTIFY MISSING TASKS:"
+ # Read unchecked tasks
+ # For each unchecked task, check if code exists
+ # If code exists, auto-check the task
+ # If code missing, report which tasks are genuinely incomplete
+fi
+
+echo "✅ Final verification: $checked_tasks/$total_tasks tasks checked ($completion_pct%)"
+```
+
+**ONLY WHEN:**
+- [x] Tasks verified: checked_tasks > 0 (HALT if zero)
+- [x] Completion ≥ 80% (WARN if lower, allow continuation with warning)
+- [x] All tests pass
+- [x] Lint clean
+- [x] Build succeeds
+- [x] No TypeScript errors
+
+**THEN** load and execute `{nextStepFile}` for post-validation.
+
+**IF VERIFICATION FAILS:** HALT workflow, do not proceed to Step 5.
---
diff --git a/src/modules/bmm/workflows/4-implementation/super-dev-pipeline/steps/step-10-complete.md b/src/modules/bmm/workflows/4-implementation/super-dev-pipeline/steps/step-10-complete.md
index 5a0de629..32b2b7d0 100644
--- a/src/modules/bmm/workflows/4-implementation/super-dev-pipeline/steps/step-10-complete.md
+++ b/src/modules/bmm/workflows/4-implementation/super-dev-pipeline/steps/step-10-complete.md
@@ -298,7 +298,67 @@ Ready for Summary Generation
## QUALITY GATE
+**MANDATORY AUTO-FIX VERIFICATION:**
+
+🚨 DETECT FAILURES AND FIX THEM - DO NOT HALT
+
+```bash
+story_file="{story_file}"
+
+# 1. Check if tasks were checked off
+checked_tasks=$(grep -c "^- \[x\]" "$story_file" || echo "0")
+total_tasks=$(grep -c "^- \[[x ]\]" "$story_file" || echo "0")
+
+if [ "$checked_tasks" -eq 0 ] && [ "$total_tasks" -gt 0 ]; then
+ echo "❌ FAILURE DETECTED: $total_tasks tasks exist but ZERO checked"
+ echo ""
+ echo "🔧 EXECUTING AUTO-FIX RECONCILIATION:"
+ echo " 1. Reading git commit to see what was built"
+ echo " 2. Comparing to story tasks"
+ echo " 3. Checking off tasks with matching code"
+ echo ""
+fi
+
+# AUTO-FIX: For each unchecked task, check if code exists, then check it off
+# (Actual implementation: Use Edit tool iteratively for each task)
+# (Verify after each edit, retry if failed, continue until all viable tasks checked)
+
+# Re-count after auto-fix
+checked_tasks=$(grep -c "^- \[x\]" "$story_file" || echo "0")
+completion_pct=$((checked_tasks * 100 / total_tasks))
+
+echo "✅ After auto-fix: $checked_tasks/$total_tasks tasks checked ($completion_pct%)"
+
+# 2. Check if Dev Agent Record empty
+if grep -q "To be filled by dev agent" "$story_file"; then
+ echo "❌ FAILURE DETECTED: Dev Agent Record is empty"
+ echo ""
+ echo "🔧 EXECUTING AUTO-FIX:"
+ echo " Extracting commit details"
+ echo " Populating Dev Agent Record section"
+ echo ""
+
+ # AUTO-FIX: Fill in Dev Agent Record
+ # - Agent Model Used: Get from context
+ # - File List: Extract from git diff --name-only
+ # - Completion Notes: Extract from commit message
+ # Use Edit tool to replace "To be filled" sections
+
+ echo "✅ Dev Agent Record populated"
+fi
+
+# After all auto-fixes, verify minimum standards met
+if [ "$checked_tasks" -eq 0 ]; then
+ echo "❌ CRITICAL: Auto-fix could not check any tasks"
+ echo " Story implementation may be empty or broken"
+ echo " Marking story as 'in-progress' (not done)"
+ # Override status but continue (don't halt)
+fi
+```
+
Before proceeding (BLOCKING - ALL must pass):
+- [ ] **Tasks verified: checked_tasks > 0 (HALT if zero)**
+- [ ] **Dev Agent Record filled (HALT if empty)**
- [ ] Targeted files staged (from File List)
- [ ] Commit message generated
- [ ] Commit created successfully
diff --git a/src/modules/bmm/workflows/4-implementation/super-dev-pipeline/workflow.yaml b/src/modules/bmm/workflows/4-implementation/super-dev-pipeline/workflow.yaml
index bbcc0f68..241c0fb9 100644
--- a/src/modules/bmm/workflows/4-implementation/super-dev-pipeline/workflow.yaml
+++ b/src/modules/bmm/workflows/4-implementation/super-dev-pipeline/workflow.yaml
@@ -256,7 +256,7 @@ quality_gates:
input_file_patterns:
story:
description: "Story file being developed"
- pattern: "{sprint_artifacts}/story-*.md"
+ pattern: "{sprint_artifacts}/*.md" # CANONICAL: epic-story-slug.md (NO "story-" prefix)
load_strategy: "FULL_LOAD"
cache: true