massive architecture creation overhaul

This commit is contained in:
Brian Madison
2025-10-19 23:28:38 -05:00
parent d3402c3132
commit 2a6eb71612
75 changed files with 2440 additions and 4070 deletions

View File

@@ -1,317 +0,0 @@
# Workflow Status Service - Integration Examples
## How Other Workflows Can Use the Enhanced workflow-status Service
### Example 1: Simple Validation (product-brief workflow)
Replace the old Step 0:
```xml
<!-- OLD WAY - 35+ lines of duplicate code -->
<step n="0" goal="Check and load workflow status file">
<action>Search {output_folder}/ for files matching pattern: bmm-workflow-status.md</action>
<action>Find the most recent file...</action>
<!-- ... 30+ more lines of checking logic ... -->
</step>
```
With the new service call:
```xml
<!-- NEW WAY - Clean and simple -->
<step n="0" goal="Validate workflow readiness">
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: validate</param>
<param>calling_workflow: product-brief</param>
</invoke-workflow>
<check if="status_exists == false">
<output>{{suggestion}}</output>
<output>Note: Status tracking is optional. You can continue without it.</output>
</check>
<check if="warning != ''">
<output>{{warning}}</output>
<ask>Continue anyway? (y/n)</ask>
<check if="n">
<action>Exit workflow</action>
</check>
</check>
<action>Store {{status_file_path}} for later updates if needed</action>
</step>
```
### Example 2: Getting Story Data (create-story workflow)
Replace the complex Step 2.5:
```xml
<!-- OLD WAY - Complex parsing logic -->
<step n="2.5" goal="Check status file TODO section for story to draft">
<action>Read {output_folder}/bmm-workflow-status.md (if exists)</action>
<action>Navigate to "### Implementation Progress (Phase 4 Only)" section</action>
<action>Find "#### TODO (Needs Drafting)" section</action>
<!-- ... 40+ lines of parsing and extraction ... -->
</step>
```
With the new service call:
```xml
<!-- NEW WAY - Let workflow-status handle the complexity -->
<step n="2.5" goal="Get next story to draft">
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: data</param>
<param>data_request: next_story</param>
</invoke-workflow>
<check if="status_exists == false">
<action>Fall back to legacy story discovery</action>
</check>
<check if="todo_story_id exists">
<action>Use {{todo_story_id}} as story to draft</action>
<action>Use {{todo_story_title}} for validation</action>
<action>Create file: {{todo_story_file}}</action>
<output>Drafting story {{todo_story_id}}: {{todo_story_title}}</output>
</check>
</step>
```
### Example 3: Getting Project Configuration (solution-architecture workflow)
```xml
<step n="0" goal="Load project configuration">
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: data</param>
<param>data_request: project_config</param>
</invoke-workflow>
<check if="status_exists == false">
<ask>No status file. Run standalone or create status first?</ask>
</check>
<check if="status_exists == true">
<action>Use {{project_level}} to determine architecture complexity</action>
<action>Use {{project_type}} to select appropriate templates</action>
<action>Use {{field_type}} to know if brownfield constraints apply</action>
</check>
</step>
```
### Example 4: Quick Init Check (any workflow)
```xml
<step n="0" goal="Check if status exists">
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: init-check</param>
</invoke-workflow>
<check if="status_exists == false">
<output>{{suggestion}}</output>
<output>Proceeding without status tracking...</output>
</check>
</step>
```
## Benefits of This Approach
1. **DRY Principle**: No more duplicating status check logic across 50+ workflows
2. **Centralized Logic**: Bug fixes and improvements happen in one place
3. **Backward Compatible**: Old workflows continue to work, can migrate gradually
4. **Advisory Not Blocking**: Workflows can proceed even without status file
5. **Flexible Data Access**: Get just what you need (next_story, project_config, etc.)
6. **Cleaner Workflows**: Focus on core logic, not status management
## Available Modes
### `update` Mode ⭐ NEW - Centralized Status Updates
- **Purpose**: Centralized status file updates - **NO MORE manual template-output hackery!**
- **Parameters**: `action` + action-specific params
- **Returns**: `success`, action-specific outputs
#### Available Actions:
**1. complete_workflow** - Mark workflow done, advance to next in path
```xml
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: update</param>
<param>action: complete_workflow</param>
<param>workflow_name: prd</param>
<param>populate_stories_from: {output_folder}/bmm-epics.md</param> <!-- optional -->
</invoke-workflow>
<check if="success == true">
<output>PRD complete! Next: {{next_workflow}} ({{next_agent}} agent)</output>
</check>
```
**2. populate_stories** - Load story queue from epics.md
```xml
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: update</param>
<param>action: populate_stories</param>
<param>epics_file: {output_folder}/bmm-epics.md</param>
</invoke-workflow>
<check if="success == true">
<output>Loaded {{total_stories}} stories. First: {{first_story}}</output>
</check>
```
**3. start_story** - Move TODO → IN PROGRESS
```xml
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: update</param>
<param>action: start_story</param>
</invoke-workflow>
<check if="success == true">
<output>Started: {{in_progress_story}}. Next TODO: {{next_todo}}</output>
</check>
```
**4. complete_story** - Move IN PROGRESS → DONE, advance queue
```xml
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: update</param>
<param>action: complete_story</param>
</invoke-workflow>
<check if="success == true">
<output>Completed: {{completed_story}}. {{stories_remaining}} remaining.</output>
<check if="all_complete == true">
<output>🎉 All stories complete!</output>
</check>
</check>
```
**5. set_current_workflow** - Manual override (rarely needed)
```xml
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: update</param>
<param>action: set_current_workflow</param>
<param>workflow_name: tech-spec</param>
</invoke-workflow>
```
---
### `validate` Mode
- **Purpose**: Check if this workflow should run
- **Returns**:
- `status_exists`: true/false
- `should_proceed`: true (always - advisory only)
- `warning`: Any sequence warnings
- `suggestion`: What to do
- `project_level`, `project_type`, `field_type`: For workflow decisions
- `status_file_path`: For later updates
### `data` Mode
- **Purpose**: Extract specific information
- **Parameters**: `data_request` = one of:
- `next_story`: Get TODO story details
- `project_config`: Get project configuration
- `phase_status`: Get phase completion status
- `all`: Get everything
- **Returns**: Requested fields as template outputs
### `init-check` Mode
- **Purpose**: Simple existence check
- **Returns**:
- `status_exists`: true/false
- `suggestion`: Brief message
### `interactive` Mode (default)
- **Purpose**: User-facing status check
- **Shows**: Current status, options menu
- **Returns**: User proceeds with selected action
## Migration Strategy
1. Start with high-value workflows that have complex Step 0s
2. Test with a few workflows first
3. Gradually migrate others as they're updated
4. Old workflows continue to work unchanged
## Before & After: The Power of Update Mode
### OLD WAY (PRD workflow) - 40+ lines of pollution:
```xml
<step n="10" goal="Update status and complete">
<action>Load {{status_file_path}}</action>
<template-output file="{{status_file_path}}">current_workflow</template-output>
<action>Set to: "prd - Complete"</action>
<template-output file="{{status_file_path}}">phase_2_complete</template-output>
<action>Set to: true</action>
<template-output file="{{status_file_path}}">decisions_log</template-output>
<action>Add entry: "- **{{date}}**: Completed PRD workflow..."</action>
<action>Populate STORIES_SEQUENCE from epics.md story list</action>
<action>Count total stories and update story counts</action>
<action>Save {{status_file_path}}</action>
</step>
```
### NEW WAY - 6 clean lines:
```xml
<step n="10" goal="Mark PRD complete">
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: update</param>
<param>action: complete_workflow</param>
<param>workflow_name: prd</param>
<param>populate_stories_from: {output_folder}/bmm-epics.md</param>
</invoke-workflow>
<output>PRD complete! Next: {{next_workflow}}</output>
</step>
```
**Benefits:**
- ✅ No manual file manipulation
- ✅ No template-output pollution
- ✅ Centralized logic handles path navigation
- ✅ Story population happens automatically
- ✅ Status file stays clean (just key-value pairs)
---
## Migration Priority
**High Priority (Complex Status Updates):**
1. Phase 2: prd, gdd, tech-spec - populate stories + complete workflow
2. Phase 4: story-approved, story-ready - complex queue management
**Medium Priority (Simple Completions):** 3. Phase 1: product-brief, brainstorm-project, research 4. Phase 3: solution-architecture, tech-spec
**Low Priority (Minimal/No Updates):** 5. Phase 4: create-story, dev-story - mostly just read status
---
## Next Steps
To migrate a workflow:
1. **Step 0**: Keep `validate` or `data` mode calls (for reading)
2. **Final Step**: Replace all `template-output` with single `update` mode call
3. **Test**: Verify status file stays clean (no prose pollution)
4. **Delete**: Remove 30-100 lines of status manipulation code 🎉

View File

@@ -64,10 +64,10 @@ phases:
agent: "architect"
command: "integration-planning"
output: "Integration strategy document"
- id: "solution-architecture"
- id: "create-architecture"
required: true
agent: "architect"
command: "solution-architecture"
command: "create-architecture"
note: "Extension of existing architecture"
- id: "solutioning-gate-check"
required: true

View File

@@ -56,10 +56,10 @@ phases:
name: "Solutioning"
required: true
workflows:
- id: "solution-architecture"
- id: "create-architecture"
required: true
agent: "architect"
command: "solution-architecture"
command: "create-architecture"
output: "Architecture for system expansion"
note: "Must maintain backward compatibility"
- id: "solutioning-gate-check"

View File

@@ -45,10 +45,10 @@ phases:
name: "Solutioning"
conditional: "if_level_3_4"
workflows:
- id: "solution-architecture"
- id: "create-architecture"
required: true
agent: "architect"
command: "solution-architecture"
command: "create-architecture"
note: "Engine architecture, networking, systems"
- id: "solutioning-gate-check"
required: true

View File

@@ -48,10 +48,10 @@ phases:
name: "Solutioning"
required: true
workflows:
- id: "solution-architecture"
- id: "create-architecture"
required: true
agent: "architect"
command: "solution-architecture"
command: "create-architecture"
output: "System-wide architecture document"
- id: "solutioning-gate-check"
required: true

View File

@@ -43,10 +43,10 @@ phases:
name: "Solutioning"
required: true
workflows:
- id: "solution-architecture"
- id: "create-architecture"
required: true
agent: "architect"
command: "solution-architecture"
command: "create-architecture"
output: "System-wide architecture document"
- id: "solutioning-gate-check"
required: true

View File

@@ -45,10 +45,10 @@ phases:
name: "Solutioning"
required: true
workflows:
- id: "solution-architecture"
- id: "create-architecture"
required: true
agent: "architect"
command: "solution-architecture"
command: "create-architecture"
output: "Enterprise architecture documentation"
- id: "solutioning-gate-check"
required: true