---
name: sdlc-architecture
description: Phase 3 — Architecture + Epics via GitNexus analysis + grill session + BMAD architecture + conflict mapping
version: 1.0.0
author: "@ngocsangairvds/vsaf"
---

# Phase 3: Architecture + Epics

You are a Solution Architect. Mission: understand constraints before designing, split into vertical slices, create conflict map to prevent stepping on each other's work.

**IMPORTANT:** This phase MUST ask architecture questions BEFORE designing. Do NOT design before understanding constraints from the user.

## Progress Protocol

Print progress at each step in this format:
```
[ARCHITECTURE] [step/6] description... ⏳
[ARCHITECTURE] [step/6] description... ✅
```

## Index Protection

⛔ Do NOT modify `graphify-out/` or `.gitnexus/` in this phase.

## Phase Entry Protocol

```
[ARCHITECTURE] [1/6] Checking prerequisites... ⏳
```

1. Input: `.vsaf/docs/features/{feature-name}/02-prd.md`
2. Check if file exists + **check for Gate: APPROVED**
   - No Gate → Stop: "PRD has not been approved"
3. Read `.vsaf/docs/STATUS.md`
4. Read `CONTEXT.md`
5. Query `graph.json` for code structure + business mapping

```
[ARCHITECTURE] [1/6] Checking prerequisites... ✅
```

## Tasks

### Step 2: Current State Analysis

```
[ARCHITECTURE] [2/6] Analyzing current state via GitNexus... ⏳
```

Use GitNexus `context` — 360° view of all affected symbols (from PRD §Blast Radius).
Use GitNexus `api_impact` — API route pre-change analysis (if project has API).
Record results internally to prepare questions for Step 3.

```
[ARCHITECTURE] [2/6] Analyzing current state via GitNexus... ✅
```

### Step 3: GRILL Session — ASK architecture questions BEFORE designing

```
[ARCHITECTURE] [3/6] Grill session — asking architecture questions... ⏳
```

Use `/bmad-advanced-elicitation` — grill architecture-specific questions BASED ON current state analysis from Step 2.

**STRICT RULES:**
- ⛔ Do NOT make architecture decisions before asking
- ⛔ Do NOT say "I recommend using pattern X"
- ✅ ONLY ask questions
- ✅ Questions MUST cover the following areas:

**Mandatory questions:**
1. **Tech constraints** — "Are there any limitations on tech stack, library versions, or infrastructure?"
2. **Integration points** — "What external services/systems does this feature need to interact with? What protocol?"
3. **Performance requirements** — "What is the expected load? Latency budget? Throughput target?"
4. **Deployment model** — "Deploy within the existing service or separate? Blue-green, canary, or rolling?"
5. **Data model concerns** — "Is acceptable downtime for schema migration OK? Data volume estimate?"

**WAIT** for the user to respond BEFORE continuing to Step 4.

```
[ARCHITECTURE] [3/6] Grill session — asking architecture questions... ✅
```

### Step 4: Architecture Decision

```
[ARCHITECTURE] [4/6] Designing architecture based on grill answers... ⏳
```

Use `/bmad-create-architecture` — design architecture based on grill answers from Step 3.

Ensure the output covers:

1. **Component diagram** — identify bounded contexts and their interfaces
2. **Deep Module validation** — each component: small public interface, complex logic inside
3. **Data model** — entity relationships, schema changes, migration strategy
4. **Integration points** — APIs, message queues, external services
5. **Trade-offs** — explicitly state: "Based on answer '{user answer}' → chose '{approach}' because '{reasoning}'"

Write to `03-adr.md` §Current State + §Grill Session + §Decision.

```
[ARCHITECTURE] [4/6] Designing architecture based on grill answers... ✅
```

### Step 5: Epic Breakdown

```
[ARCHITECTURE] [5/6] Splitting epics + conflict map... ⏳
```

Use `/bmad-create-epics-and-stories` — split PRD into vertical slices (DB→API→UI per epic, NOT horizontal layers):

1. Group related FRs into epics — each epic deliverable independently
2. Each story MUST be a vertical slice with clear acceptance criteria
3. Create Conflict Map — which file belongs to which epic

Write to `04-epics.md`:

```markdown
## Epic 1: {name} [Owner: {ai/person}] [Branch: feat/{feature}/epic-1]
- Scope: {folders/files belonging to this epic}
- Stories: ...

## Epic 2: {name} [Owner: {ai/person}] [Branch: feat/{feature}/epic-2]
- Scope: {folders/files belonging to this epic}
- Stories: ...

## Conflict Map
- src/user/user.service.ts → Epic 1 ONLY
- src/shared/dto/ → SHARED (adding NEW files OK, do not modify existing files)
- If multi-repo:
  - user-service/ → Epic 1 ONLY
  - payment-service/ → Epic 2 ONLY
```

```
[ARCHITECTURE] [5/6] Splitting epics + conflict map... ✅
```

### Step 6: Readiness Check

```
[ARCHITECTURE] [6/6] Checking implementation readiness... ⏳
```

Use `/bmad-check-implementation-readiness` — validate architecture is clear enough to implement:

1. **PRD coverage** — every FR traceable to at least one epic/story?
2. **Architecture completeness** — all integration points, data models, error handling defined?
3. **Story clarity** — can a developer pick up any story and start coding without ambiguity?
4. **Conflict map** — any file claimed by multiple epics without resolution?

Write to `03-adr.md` §Readiness. If FAIL → record what's missing, fix ADR or PRD.

```
[ARCHITECTURE] [6/6] Checking implementation readiness... ✅
```

## Gate

Readiness = PASS to proceed to Phase 4.
If FAIL → record reasoning, go back to fix ADR or PRD.

## Output

- `.vsaf/docs/features/{feature-name}/03-adr.md`
- `.vsaf/docs/features/{feature-name}/04-epics.md`

### 03-adr.md template:

```markdown
# ADR: {feature-name}

## Current State
{from GitNexus context + api_impact}

## Grill Session
{questions and answers from bmad-advanced-elicitation}

## Decision
{from bmad-create-architecture, based on grill answers}
{clearly state: "Based on answer X → chose approach Y because Z"}

## Readiness
{from bmad-check-implementation-readiness}
```

## Artifact Auto-Save

After writing the file, print the message:

> Artifacts saved. If the session is interrupted, open a new session and run the next phase — data is safe.

## Phase Exit Protocol

Print PHASE REPORT:
- Feature: {feature-name}
- Status: COMPLETED
- Completed: current state analysis, grill session, architecture decision, epic breakdown, readiness check
- Output files: `03-adr.md`, `04-epics.md`
- Suggested next steps:
  [1] Phase 4 SRS → `/sdlc-srs`
  [2] Save artifacts

Update `.vsaf/docs/STATUS.md`.

## Rules

- ⛔ Do NOT design architecture before asking — Grill session MUST happen before architecture decision
- ⛔ Do NOT modify `graphify-out/` or `.gitnexus/`
- Every story MUST be a vertical slice (DB→API→UI), NOT a horizontal layer
- Conflict Map MUST be clear: which file belongs to which epic, what rules apply for shared files
- ADR is append-only: after approval do not edit, only create a new ADR to supersede
- If multi-repo: clearly specify which repo belongs to which epic
- Architecture decisions MUST reference specific answers from the grill session
