# Phase 0: Context & Baseline

**Role**: Software engineer preparing for refactoring
**Goal**: Collect refactoring goals, create run directory, capture baseline metrics
**Constraints**: Measurement only — no code changes

## 0a. Collect Goals

If PROBLEM_DIR files do not yet exist, help the user create them:

1. `problem.md` — what the system currently does, what changes are needed, pain points
2. `acceptance_criteria.md` — success criteria for the refactoring
3. `security_approach.md` — security requirements (if applicable)

Store in PROBLEM_DIR.

## 0b. Create RUN_DIR

1. Scan REFACTOR_DIR for existing `NN-*` folders
2. Auto-increment the numeric prefix (e.g., if `01-testability-refactoring` exists, next is `02-...`)
3. Determine the run name:
   - If guided mode with input file: derive from input file name or context (e.g., `01-testability-refactoring`)
   - If automatic mode: ask user for a short run name, or derive from goals (e.g., `01-coupling-refactoring`)
4. Create `REFACTOR_DIR/NN-[run-name]/` — this is RUN_DIR for the rest of the workflow

Announce RUN_DIR path to user.

## 0c. Capture Baseline

1. Read problem description and acceptance criteria
2. Measure current system metrics using project-appropriate tools:

| Metric Category | What to Capture |
|----------------|-----------------|
| **Coverage** | Overall, unit, blackbox, critical paths |
| **Complexity** | Cyclomatic complexity (avg + top 5 functions), LOC, tech debt ratio |
| **Code Smells** | Total, critical, major |
| **Performance** | Response times (P50/P95/P99), CPU/memory, throughput |
| **Dependencies** | Total count, outdated, security vulnerabilities |
| **Build** | Build time, test execution time, deployment time |

3. Create functionality inventory: all features/endpoints with status and coverage

**Self-verification**:
- [ ] RUN_DIR created with correct auto-incremented prefix
- [ ] All metric categories measured (or noted as N/A with reason)
- [ ] Functionality inventory is complete
- [ ] Measurements are reproducible

**Save action**: Write `RUN_DIR/baseline_metrics.md`

**BLOCKING**: Present baseline summary to user. Do NOT proceed until user confirms.
