# QA Plan: <feature> — <commits>

<!--
  Copy this file to docs/qa/QA-<feature>.md and fill it in.
  Generated by /qa-plan, or written by hand.
  This plan is the artifact that authorizes the BACKLOG -> RETRO move.
-->

**Status:** DRAFT | RUNNING | PASSED | FAILED
**Run date / operator:**
**BACKLOG item:** <link/quote the §F entry this closes>

---

## Preconditions

- [ ] **server build/branch:** <jar/branch> — _rebuild only with the server stopped (lazy classloading breaks otherwise)_
- [ ] **llama-server + model:** <model id> — _note model-dependent behavior (strict templates, prompt-block emission)_
- [ ] **external deps:** <SearXNG / network / real router model / none>
- [ ] **config synced:** `~/.config/correx` matches `examples/*` + `docs/schemas/*` — _stale copies cause silent bugs_
- [ ] **fixtures/seed:** <workspace, .correx/project.toml, prior session to resume, etc.>

## Acceptance gate (one sentence)

> The feature is correct **iff** <single observable outcome>.

## Checks

Every row must name a **recorded, observable signal** — an event in the log, a CLI/log
line, a TUI render, a file on disk, or the *absence* of an event. "It worked" is not
evidence.

| # | Action | Expected observable evidence | Result |
|---|--------|------------------------------|--------|
| 1 | | | |
| 2 | | | |
| 3 | | | |

Evidence sources: `correx events <id>` / `GET /sessions/{id}/events` (the log is the
truth), server logs (MDC sessionId), the TUI render, files under the workspace, and
`correx replay <id>` for determinism.

## Out of scope (explicitly NOT covered this pass)

-

## Disposition

- **PASS** → MOVE the BACKLOG entry into `RETRO.md` with this plan's run date + the
  evidence cited above. Set Status: PASSED.
- **FAIL** → file each failure as a numbered finding back into `BACKLOG.md` (action +
  exact repro + the signal that was wrong/missing), fix, then re-run only the failed
  checks. Set Status: FAILED until green.
