# Screen registry — the lifecycle ledger

> **This is a generic template.** It hard-codes no project values. Claude populates every section by following the project `CLAUDE.md` and specs (see the generation contract below). Rebind `<APP>` and all `<…>` placeholders per project.
>
> The per-screen **source of truth across the whole lifecycle** — reconstruction → spec-sync → wiring → testing → review — and the dispatch queue for both the reconstruction sweep and the workflow sweep.
>
> **Companions:** `WORKFLOW_REGISTRY.md` (the workflow-sweep board — phase 5) · `PROGRESS.md` (the dated activity log; the verbose per-gate narrative lives there) · `INSIGHTS.md` / `LESSONS.md` (memory). Governing law: `CONSTITUTION.md`.

## Generation contract — how Claude fills this in

Claude is the orchestrator (single writer) for this file. Populate and maintain it as follows; **take every project-specific value from the sources named, never invent it:**

- **Single-writer rule (Law 3):** ONLY the orchestrator edits this file — at reconstruction integration (flips `R`) and at workflow-sweep integration (flips `S → W → T → V`). Subagents return structured reports; they never touch this board.
- **Module sections:** create one `## <MODULE_CODE> · <Module name>` section per module in the **module map in `CLAUDE.md`**. Use the module codes and names exactly as `CLAUDE.md` defines them.
- **Screen rows:** derive every `Route`, `Screen` name, and `Archetype` from the **screen/route registry referenced by `CLAUDE.md`** (e.g. the project's design/continuity brief). Emit one row per screen. On first population, every new screen is `☐ ☐ ☐ ☐ ☐`.
- **Source column:** the locator hint for finding a screen's defining file, per the **prototype conventions in `CLAUDE.md`** (e.g. a module file-glob; the exact file is resolved per screen by the reconstruction workflow).
- **Sync column:** the identifier of the design source a row was last reconciled to, per the **prototype/design location in `CLAUDE.md`** — `✓ <id>` when the screen matches it, `⚠ stale` when that source has changed since (Law 9). `<id>` may be a short content hash of the defining source file or, if you are not hashing yet, the reconciliation date.
- **Workflows column:** tag the workflow/journey ids (from the project's **`<X>_WORKFLOW` specs** + the **priority journeys named in `CLAUDE.md`**) that traverse the screen. These cross-link to `WORKFLOW_REGISTRY.md`.
- **Archetypes, naming grammar, design-system specifics:** all per `CLAUDE.md` — this template names none.
- **Roll-up & working set:** compute from the rows; refresh at every integration.

## Lifecycle bar — `R S W T V` (read left→right)

| Pos | Phase | Owner | Done means |
|---|---|---|---|
| **R** | Reconstruct | `screen-reconstructor` | screen reproduced 1:1; fidelity gate passed |
| **S** | Spec-sync | `spec-architect` | spec reconciled to the current design this sweep; UIMAP written |
| **W** | Wire | `module-wirer` (+ backend / cross-cut) | mock data replaced by real handler calls; states added; design preserved |
| **T** | Test | `test-engineer` | unit + integration + contract + e2e + a11y + visual-regression green |
| **V** | reView | `reviewer` | audited against the Constitution → PASS |

**Glyphs:** ☐ not started · ◐ in progress · ✅ done · — n/a (no backend behind this screen).
**Sync:** `✓ <id>` matches the design source it was reconciled to · `⚠ stale` design changed since (re-sweep this screen).
**Archetypes:** use the project's archetype list from `CLAUDE.md` / the design brief.

---

## Roll-up (orchestrator updates on every integration)

| Module | Screens | R ✅ | W ✅ | Done (V ✅) | Progress |
|---|---|---|---|---|---|
| `<MODULE_CODE>` · `<Module name>` | `<n>` | `<n>` | `<n>` | `<n>` | `<short status>` |
| _… one row per module in the `CLAUDE.md` module map …_ | | | | | |
| **Total** | `<N>` | `<n>` | `<n>` | `<n>` | `<phase summary>` |

## Working set (the live queue — orchestrator maintains)

- **In progress ◐ (claimed this batch):** `<routes being reconstructed or swept>`
- **Next ☐ (next seed-safe batch):** `<routes queued — no two seedless screens share a module>`
- **Stale ⚠ (design moved — needs re-sweep):** `<routes whose Sync flipped to stale>`
- **Blocked / approval inbox:** `<routes parked for a human decision — see docs/APPROVAL_INBOX/>`

---

## `<MODULE_CODE>` · `<Module name>` — Source: `<source/glob hint per CLAUDE.md>`

| Route | Screen | Archetype | Source | R S W T V | Sync | Workflows | Notes (terse — full log in `PROGRESS.md`) |
|---|---|---|---|---|---|---|---|
| `<route-id>` | `<Screen name>` | `<Archetype>` | `<source hint>` | ☐ ☐ ☐ ☐ ☐ | `<✓ id \| ⚠ stale \| —>` | `<WF-… · J-…>` | `<one-line current status>` |
| _… one row per screen in this module, from the route registry in `CLAUDE.md` …_ | | | | | | | |

> **Repeat one `##` section per module** in the `CLAUDE.md` module map, each table in the schema above.

---

## Maintenance (the orchestrator's two write points)

- **At reconstruction integration** (`/reconstruct` or the reconstruction sweep): gate-review the screen-reconstructor report → flip `R` to ✅ (or ◐), set `Sync = ✓ <id>`, write a terse Note, move the full narrative to `PROGRESS.md`, recompute the roll-up + working set.
- **At workflow-sweep integration** (`/build-workflow`): for each screen the workflow touched, flip `S → W → T → V` as the sweep clears each phase, refresh `Sync`, update the roll-up, and cross-update `WORKFLOW_REGISTRY.md`.
- **On a design change:** flip the affected rows' `Sync` to `⚠ stale` (the provenance hash no longer matches / visual-regression went red) and add them to the working set for a targeted re-sweep.
