docs: design-vs-build gap audit recorded (61 items, 6 build waves)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QJs13VsyiSKYQP6rj3NNmc
This commit is contained in:
Kev
2026-07-31 05:46:32 -04:00
parent e257474cc8
commit 49565b5f02
2 changed files with 61 additions and 0 deletions
+38
View File
@@ -835,6 +835,44 @@
> now assert the stronger properties on the real page (live fetch, no sample players, NO VERDICT,
> NO DATA, "not a zero").
> ## 🎨 DESIGN-vs-BUILD GAP AUDIT 2026-07-31 → **`specs/design-vs-build-gap-audit.md`** — 61 items, exhaustive
> Package = **`specs/design-reference/` (Jul 22)** — **there is no `~/vyndr_design`**; the in-repo copy IS
> the package (CANNOT DETERMINE if a separate extract exists elsewhere). Audited against the CURRENT
> repo `bf7c0a3` (~9 days LATER). Every claim is a direct file/grep/count check — **not** the
> `{found:False}`-on-except harness that produced a silent false in Wave 3.
> **COUNT: 61 implementable items — BUILT-TO-SPEC 20 · BUILT-BUT-DRIFTED 7 · PARTIAL 16 · ABSENT 18**
> (+1 CANNOT DETERMINE). Groups: tokens 6 · boundary channel 1 · brand 2 · glyphs 1 · named primitives
> 28 · artboard surfaces 13 · honesty behaviours 10.
> **🔴 LARGEST SINGLE GAP — THE GLYPH LIBRARY: 38 of 83 designed SVGs are wired (46%)**, 45 unwired,
> MANIFEST.md present and unused. **Compounding scope finding: the design implies 74 DISPLAY
> archetypes; the backend registry has 41** — the archetype system is ~half the designed scope.
> **DRIFT ON RECENTLY-BUILT SURFACES (the reason this audit checked the current repo, not the old
> matrix):** the **book comparison wired 07-29 renders per-book lines but has NO best-number crown, NO
> disagreement axis, NO SPLIT chip and NO movement strip** — a simpler version than S2 designs. The
> **mobile tab bar has 5 tabs but not the designed READ-FAB** (50px raised green circle, void V, 6px
> ring — `READ-FAB` = 0 files). **Calibration gating disagrees with the design: ours is n≥20, the
> design says N30 hollow** — neither wrong, but they must be reconciled.
> **ABSENT primitives (0-file greps):** movement strip · crown · disagreement axis · SPLIT chip ·
> calibration curve · `nudge()` reaction (`rx-up` 0) · boot stagger (`vy-rowin` 0) · row-hover
> rationale · IntersectionObserver reveal · `/report` archive · S3 article media · Offseason hub +
> season board + kickoff countdown · `vy-glitch` naming.
> **WAVE-2 RECLASSIFICATION — I was WRONG earlier: the NEWSLETTER IS DESIGNED.** S5 "The Report" is a
> full design (hybrid dark-billboard/light-paper email, signup, archive) → **design-exists-needs-build**,
> not a design gap. **Live tracking and Slip reader remain genuinely design-missing** (no artboard).
> **MODEL LINKAGES:** **Price Triplet** waits on the **EV layer producing p_win/ev_pct/model_odds** (we
> retired edge_pct from it 07-31; it renders honest `NO_MODEL` meanwhile) — gated on MODEL work, not
> design. **S4 CLV chips can build NOW** on the instrument repaired 07-28 (closing_prob 59→406); the
> **calibration curve** additionally needs the n-threshold decision + accrued buckets.
> **ORDERED BUILD LIST — 6 dependency waves:** **D1 self-contained** (45 glyphs + the 41-vs-74 scope
> call · `#0E0E14` card token · `vy-glitch` · nudge/boot-stagger/row-hover/IntersectionObserver ·
> boundary-channel blue as a real third colour law · team-gradient chips · READ-FAB) → **D2 gated on
> the scanner-nudge order** (S6 full treatment) → **D3 model-gated** (Price Triplet MODEL leg;
> calibration curve) → **D4 resolution-pipeline-gated** (**share-card masters ×5 + M2 crops — the
> resolve fanout has NO share-card generation step and NO trigger**, so masters cannot ship as product)
> → **D5 licensing/assets-gated** (BookChip brand tiles, headshots, push-to-book — every book
> `enabled:false`) → **D6 large surface builds** (Offseason trio · S3 article media · The Report email
> + archive · the S2 primitive set, with the crown ALSO held by measurement).
- **Redirect EXISTS + WIRED:** `closingCapture.buildCaptureRows``closing_captures` (append-only,
provenance: captured_at/book/line_type/both-prices/missed_reason) via `intradayRefreshService:221`
+ internal endpoint; `ledgerService.attachClosingProb``closing_prob` (de-vigs both raw sides,