Four columns. Each column has a small team, a defined input, a defined output, and a fixed artifact location on disk. The board flows left to right; work does not skip columns.
Team — 4 parallel lens auditors
Output
21 raw lens files
~365 raw findings
Location on disk
docs/admin-spec-v2-1/
pre-review/_raw/
Card shape
Severity · Triage · Confidence · Reasoning · Recommendation
Team — 1 Lead + 3 specialists
Input
21 raw files from Phase A
Output
71 chunked investigations
+1 Lead synthesis (_deeper-findings.md)
+5 per-domain punch lists
Location on disk
pre-review/_depth/pre-review/07-…-11-…md
Team — 1 Lead + 5 converters
Input
5 punch lists from Phase B
Output
5 stakeholder-ready packages
+1 cross-domain walkthrough agenda
200 items, each with default direction
Location on disk
pre-review/
decision-packages/
Team — 1 Lead + primitives + 4 domain implementers
Input
5 decision packages from Phase C
Output
~89 items shipped as mockup code
Branch: v2.1/phase-d
Location on disk
src/pages/v2/*src/data/*
Each column is a single working pass. No column re-opens a previous one. If Phase D finds a missing detail, the decision package is updated by amendment, not edited in place — the chain stays auditable.
The same four phases applied to each of the five remaining v2 domains. Billing was explicitly held at Phase D pending a dedicated billing pass — visible in the yellow-striped cell below.
| Domain | Phase A — Raw audit | Phase B — Depth + punch list | Phase C — Decision package | Phase D — Shipped to mockup |
|---|---|---|---|---|
| 07 Teacher Mgmt/v2/teacher-management | 4 lens files~75 findings | 4 Blockers · 8 Should-fix · 10 Nice · 15 FYI= 37 items | Approved21 DECIDED-PROPOSED · 5 NEEDS-DECISION · 4 DEFER | ~29 items shippedincl. T2 Manual Placement Queue (new screen), T6 multi-select chip matrix |
| 08 Billing/v2/billing | 4 lens files~85 findings | 8 Blockers · 12 Should-fix · 21 Nice · 13 FYI= 54 items | Approved28 DECIDED-PROPOSED · 12 NEEDS-DECISION · 5 DEFER · 3+ REJECT | HELDImplementation paused pending dedicated billing pass; package remains the ship-plan when unblocked. |
| 09 Reporting/v2/reporting | 4 lens files~70 findings | 5 Blockers · 17 Should-fix · 6 Nice · 8 FYI= 36 items | Approved25 DECIDED-PROPOSED · 5 NEEDS-DECISION · 2 DEFER · 1 REJECT | ~23 items shippedincl. 5-card Composition rebuild, sidebar renames; B5 part-held (billing-dependent) |
| 10 Admin System/v2/admin-system | 4 lens files~65 findings | 0 Blockers · 13 Should-fix · 12 Nice · 11 FYI= 36 items | Approved24 DECIDED-PROPOSED · 3 NEEDS-DECISION · 4 DEFER | ~16 items shippedincl. routed Issue Detail page, audit-trail cluster (append-only history + reason capture) |
| 11 Communication/v2/communication | 4 lens files~70 findings | 7 Blockers · 13 Should-fix · 7 Nice · 10 FYI= 37 items | Approved14 DECIDED-PROPOSED · 7 NEEDS-DECISION · 5 DEFER · 1 REJECT | ~21 items shippedincl. TaPreviewView component, End Checklist Email Queue; B4 part-held (billing-dependent) |
The yellow stripe on Billing is the only scope decision that should jump off this table. Everything else flowed end-to-end; Billing waits for a dedicated review pass.
To show how the pipeline actually works in practice, here is one item — T6, the Teacher Management Assignment Matrix — traced from raw finding all the way to live mockup code.
New / Returning / Both) — but the canonical enrollment vocabulary across the system uses different categories. The labels collide.
_raw/consistency-07-teacher-management.md
Source: _raw/workflow-07-teacher-management.md_depth/data-07-assignment-criteria-student-type-routing.md
Frontmatter cites: raw/consistency-07-…, raw/workflow-07-…
Finding: matrix's "Returning" collapses Continuing + Repeat + Year 2 into one bucket.
Cost: one-shot UPDATE migration. Cheap._depth/_deeper-findings.md
Theme: X1 — Canonical 4-category enrollment vocabulary
Hits: domains 07, 09, 11 (and 08 fallout)
Owner: Reporting B2 (Composition rebuild) — propagates to others.git log backward.
Click any question to expand. These are the questions colleagues will reasonably ask when they look at the branch for the first time.
Search git log by the decision-package ID. Every implementation commit references the ID in its message.
git log --grep="T6" — Teacher Mgmt item T6git log --grep="B3" — Blocker B3 in whichever domaingit log --grep="X8" — cross-domain theme X8 (raw label sweep)Commit messages follow the shape feat(v2.1-phase-d): <domain>/<screen> — <ID> <short note>.
Three hops:
pre-review/decision-packages/07-teacher-management-decisions.md and search for T6 — that item cites the depth file (data-07-assignment-criteria-…md)._raw/ — the lens auditors that originally flagged it.Every link in the chain is a file in the repo. Nothing lives in chat history or memory.
Decision packages. The packages are the authoritative consolidation; depth files are research output.
Working from packages avoids re-deriving the synthesis already done in Phase C. The depth files are still available for any item where the implementer needs the underlying reasoning, but the package text is the spec for what to build.
ConfirmDialog with the new reason-capture dialog. Tracked for v2.2.Decision packages use four statuses, all explicit:
Every item — including DEFER and REJECT — carries a Recommended direction (default if walkthrough skipped). If a walkthrough is cancelled, we have an ordered ship list. No escape hatches.
The implementer flags it back to the Phase D Lead with a written note. The Lead decides whether to amend the package (rare — Phase C is meant to be settled) or override for that single item and document the override in the commit message.
In practice this happened only twice during Phase D and both were resolved by clarifying the package text, not by changing the decision.
Yes — it is designed to be re-runnable. The spawn prompts for each phase are stored in pre-review/_spawn-prompts.md and _TEMPLATE-raw.md / _TEMPLATE-synthesis.md. The same four columns apply to any domain that has a spec, a mockup, and at least one round of stakeholder feedback to compare against.
The Billing pass, when it comes, will follow exactly this shape.
Roughly 200 items across 5 domains were reviewed. ~89 shipped as code in Phase D. ~32 NEEDS-DECISION items are queued for walkthrough. ~20 DEFER items have a named trigger.
The walkthroughs themselves are now ratify-or-override sessions instead of discover sessions — stakeholders see a default direction on every item before the meeting, so meetings can focus on the genuinely contested calls.
_TEMPLATE-raw.md and _TEMPLATE-synthesis.md.git log → ID → decision package → depth file → raw finding. Three hops, all in-repo. Any colleague can audit any decision.docs/admin-spec-v2-1/pre-review/ ├── README.md start here ├── _spawn-prompts.md re-runnable prompts for each phase ├── _TEMPLATE-raw.md card shape for raw audits ├── _TEMPLATE-synthesis.md card shape for punch lists ├── _raw/ Phase A · 21 lens outputs ├── _depth/ Phase B · 71 investigations + Lead synthesis ├── 07-teacher-management.md Phase B punch lists, one per domain ├── 08-billing-payments.md ├── 09-reporting.md ├── 10-admin-system.md ├── 11-communication.md └── decision-packages/ Phase C · 5 packages + cross-domain agenda ├── _walkthrough-agenda.md ├── 07-teacher-management-decisions.md ├── 08-billing-payments-decisions.md ├── 09-reporting-decisions.md ├── 10-admin-system-decisions.md └── 11-communication-decisions.md src/ Phase D · implementation lands here ├── pages/v2/ domain mockup screens └── data/ mock data + type definitions