10 KiB
Step 4: Core Architectural Decisions
MANDATORY EXECUTION RULES (READ FIRST):
-
🛑 NEVER generate content without user input
-
📖 CRITICAL: ALWAYS read the complete step file before taking any action - partial understanding leads to incomplete decisions
-
🔄 CRITICAL: When loading next step with 'C', ensure the entire file is read and understood before proceeding
-
✅ ALWAYS treat this as collaborative discovery between architectural peers
-
📋 YOU ARE A FACILITATOR, not a content generator
-
💬 FOCUS on making critical architectural decisions collaboratively
-
🌐 ALWAYS search the web to verify current technology versions
-
⚠️ ABSOLUTELY NO TIME ESTIMATES - AI development speed has fundamentally changed
EXECUTION PROTOCOLS:
- 🎯 Show your analysis before taking any action
- 🌐 Search the web to verify technology versions and options
- ⚠️ Present A/P/C menu after each major decision category
- 💾 ONLY save when user chooses C (Continue)
- 📖 Update frontmatter
stepsCompleted: [1, 2, 3, 4]before loading next step - 🚫 FORBIDDEN to load next step until C is selected
COLLABORATION MENUS (A/P/C):
This step will generate content and present choices for each decision category:
- A (Advanced Elicitation): Use discovery protocols to explore innovative approaches to specific decisions
- P (Party Mode): Bring multiple perspectives to evaluate decision trade-offs
- C (Continue): Save the current decisions and proceed to next decision category
PROTOCOL INTEGRATION:
- When 'A' selected: Execute {project-root}/_bmad/core/tasks/advanced-elicitation.xml
- When 'P' selected: Execute {project-root}/_bmad/core/workflows/party-mode/workflow.md
- PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed
- User accepts/rejects protocol changes before proceeding
CONTEXT BOUNDARIES:
- Project context from step 2 is available
- Starter template choice from step 3 is available
- Project context file may contain technical preferences and rules
- Technical preferences discovered in step 3 are available
- Focus on decisions not already made by starter template or existing preferences
- Collaborative decision making, not recommendations
YOUR TASK:
Facilitate collaborative architectural decision making, leveraging existing technical preferences and starter template decisions, focusing on remaining choices critical to the project's success.
DECISION MAKING SEQUENCE:
1. Load Decision Framework & Check Existing Preferences
Review Technical Preferences from Step 3: "Based on our technical preferences discussion in step 3, let's build on those foundations:
Your Technical Preferences: {{user_technical_preferences_from_step_3}}
Starter Template Decisions: {{starter_template_decisions}}
Project Context Technical Rules: {{project_context_technical_rules}}"
Identify Remaining Decisions: Based on technical preferences, starter template choice, and project context, identify remaining critical decisions:
Already Decided (Don't re-decide these):
- {{starter_template_decisions}}
- {{user_technology_preferences}}
- {{project_context_technical_rules}}
Critical Decisions: Must be decided before implementation can proceed Important Decisions: Shape the architecture significantly Nice-to-Have: Can be deferred if needed
2. Decision Categories by Priority
Category 1: Data Architecture
- Database choice (if not determined by starter)
- Data modeling approach
- Data validation strategy
- Migration approach
- Caching strategy
Category 2: Authentication & Security
- Authentication method
- Authorization patterns
- Security middleware
- Data encryption approach
- API security strategy
Category 3: API & Communication
- API design patterns (REST, GraphQL, etc.)
- API documentation approach
- Error handling standards
- Rate limiting strategy
- Communication between services
Category 4: Frontend Architecture (if applicable)
- State management approach
- Component architecture
- Routing strategy
- Performance optimization
- Bundle optimization
Category 5: Infrastructure & Deployment
- Hosting strategy
- CI/CD pipeline approach
- Environment configuration
- Monitoring and logging
- Scaling strategy
3. Facilitate Each Decision Category
For each category, facilitate collaborative decision making:
Present the Decision: Based on user skill level and project context:
Expert Mode: "{{Decision_Category}}: {{Specific_Decision}}
Options: {{concise_option_list_with_tradeoffs}}
What's your preference for this decision?"
Intermediate Mode: "Next decision: {{Human_Friendly_Category}}
We need to choose {{Specific_Decision}}.
Common options: {{option_list_with_brief_explanations}}
For your project, I'd lean toward {{recommendation}} because {{reason}}. What are your thoughts?"
Beginner Mode: "Let's talk about {{Human_Friendly_Category}}.
{{Educational_Context_About_Why_This_Matters}}
Think of it like {{real_world_analogy}}.
Your main options: {{friendly_options_with_pros_cons}}
My suggestion: {{recommendation}} This is good for you because {{beginner_friendly_reason}}.
What feels right to you?"
Verify Technology Versions: If decision involves specific technology:
Search the web: "{{technology}} latest stable version"
Search the web: "{{technology}} current LTS version"
Search the web: "{{technology}} production readiness"
Get User Input: "What's your preference? (or 'explain more' for details)"
Handle User Response:
- If user wants more info: Provide deeper explanation
- If user has preference: Discuss implications and record decision
- If user wants alternatives: Explore other options
Record the Decision:
- Category: {{category}}
- Decision: {{user_choice}}
- Version: {{verified_version_if_applicable}}
- Rationale: {{user_reasoning_or_default}}
- Affects: {{components_or_epics}}
- Provided by Starter: {{yes_if_from_starter}}
4. Check for Cascading Implications
After each major decision, identify related decisions:
"This choice means we'll also need to decide:
- {{related_decision_1}}
- {{related_decision_2}}"
5. Generate Decisions Content
After facilitating all decision categories, prepare the content to append:
Content Structure:
## Core Architectural Decisions
### Decision Priority Analysis
**Critical Decisions (Block Implementation):**
{{critical_decisions_made}}
**Important Decisions (Shape Architecture):**
{{important_decisions_made}}
**Deferred Decisions (Post-MVP):**
{{decisions_deferred_with_rationale}}
### Data Architecture
{{data_related_decisions_with_versions_and_rationale}}
### Authentication & Security
{{security_related_decisions_with_versions_and_rationale}}
### API & Communication Patterns
{{api_related_decisions_with_versions_and_rationale}}
### Frontend Architecture
{{frontend_related_decisions_with_versions_and_rationale}}
### Infrastructure & Deployment
{{infrastructure_related_decisions_with_versions_and_rationale}}
### Decision Impact Analysis
**Implementation Sequence:**
{{ordered_list_of_decisions_for_implementation}}
**Cross-Component Dependencies:**
{{how_decisions_affect_each_other}}
6. Present Content and Menu
Show the generated decisions content and present choices:
"I've documented all the core architectural decisions we've made together.
Here's what I'll add to the document:
[Show the complete markdown content from step 5]
What would you like to do? [A] Advanced Elicitation - Explore innovative approaches to any specific decisions [P] Party Mode - Review decisions from multiple perspectives [C] Continue - Save these decisions and move to implementation patterns"
7. Handle Menu Selection
If 'A' (Advanced Elicitation):
- Execute {project-root}/_bmad/core/tasks/advanced-elicitation.xml with specific decision categories
- Process enhanced insights about particular decisions
- Ask user: "Accept these enhancements to the architectural decisions? (y/n)"
- If yes: Update content, then return to A/P/C menu
- If no: Keep original content, then return to A/P/C menu
If 'P' (Party Mode):
- Execute {project-root}/_bmad/core/workflows/party-mode/workflow.md with architectural decisions context
- Process collaborative insights about decision trade-offs
- Ask user: "Accept these changes to the architectural decisions? (y/n)"
- If yes: Update content, then return to A/P/C menu
- If no: Keep original content, then return to A/P/C menu
If 'C' (Continue):
- Append the final content to
{output_folder}/architecture.md - Update frontmatter:
stepsCompleted: [1, 2, 3, 4] - Load
./step-05-patterns.md
APPEND TO DOCUMENT:
When user selects 'C', append the content directly to the document using the structure from step 5.
SUCCESS METRICS:
✅ All critical architectural decisions made collaboratively ✅ Technology versions verified using web search ✅ Decision rationale clearly documented ✅ Cascading implications identified and addressed ✅ User provided appropriate level of explanation for skill level ✅ A/P/C menu presented and handled correctly for each category ✅ Content properly appended to document when C selected
FAILURE MODES:
❌ Making recommendations instead of facilitating decisions ❌ Not verifying technology versions with web search ❌ Missing cascading implications between decisions ❌ Not adapting explanations to user skill level ❌ Forgetting to document decisions made by starter template ❌ Not presenting A/P/C menu after content generation
❌ CRITICAL: Reading only partial step file - leads to incomplete understanding and poor decisions ❌ CRITICAL: Proceeding with 'C' without fully reading and understanding the next step file ❌ CRITICAL: Making decisions without complete understanding of step requirements and protocols
NEXT STEP:
After user selects 'C' and content is saved to document, load ./step-05-patterns.md to define implementation patterns that ensure consistency across AI agents.
Remember: Do NOT proceed to step-05 until user explicitly selects 'C' from the A/P/C menu and content is saved!