diff --git a/specs/incomplete-surface-triage.md b/specs/incomplete-surface-triage.md new file mode 100644 index 0000000..f7b6603 --- /dev/null +++ b/specs/incomplete-surface-triage.md @@ -0,0 +1,124 @@ +# VYNDR — INCOMPLETE-SURFACE BUILD TRIAGE + RECALIBRATION-BOUNDARY FINDING +Report-only, 2026-07-31. Nothing built, wired, tagged, or removed. + +--- + +# PART 1 — THE BOUNDARY TAG WAS **NOT** APPLIED. THE PROMOTION NEVER HAPPENED. + +The build order asks me to tag every grade `pre-shading (additive)` vs `post-shading +(multiplicative)` at "the true promotion timestamp." **There is no such timestamp.** Writing that +marker would insert a **fabricated model transition into an append-only public record** — which is +the exact corruption the order exists to prevent. So the boundary was not written, and this is why, +with production evidence rather than assertion. + +### Evidence A — the deployed code, from `model_snapshots.code_sha` (the pipeline stamps its own sha) + +Every sha that ran the pipeline in the last 5 days: + +| code_sha | model_version | window | +|---|---|---| +| `f3bf300` (C1 takeable-floor report) | engine1@2026-07-20 | 07-30 22:00 → **07-31 03:02 (current)** | +| `f310608` (top-graded fingerprint docs) | engine1@2026-07-20 | 07-30 03:00 → 19:02 | +| `9b5235c`, `b8ee216`, `afb56b1`, `3592aba`, `914a057` | engine1@2026-07-20 | 07-26 → 07-30 | + +**Every one is a documented commit from this session's history. There is no promotion commit, and +`model_version` is a single unchanged value across all of them.** + +### Evidence B — the grade distribution shows **no step change, ever** + +A flip re-lettering 92.9% of grades under edge-shading would drive the board to ~79–93% A-family +overnight (that is what the challenger measured it would do). Actual daily A-family share: + +| date | 07-24 | 07-25 | 07-26 | 07-27 | 07-28 | 07-29 | 07-30 | +|---|---|---|---|---|---|---|---| +| n | 20 | 25 | 44 | 26 | 98 | 62 | 91 | +| **% A-family** | **0.0** | **0.0** | **0.0** | **0.0** | **1.0** | **1.6** | **0.0** | + +**Flat at zero throughout.** No discontinuity on any date. + +### Evidence C — the challenger is imported by nothing +`efficiencyShading` has **zero production importers**; it remains measured-never-served. HEAD is +`d54eca0`, clean tree. + +### Phase 2 — the 92.9% vs 43.6% delta, explained with row counts +**Neither figure is attested anywhere in this project's measurements, and no re-lettering occurred +at any scale.** The only measured numbers, on **all 1,250** public ledger rows (full board, not a +partial slate — so "partial-slate vs full-board" cannot explain a gap that does not exist): + +- grades that **would** change if promoted: **1,217 / 1,250 = 97.4%** +- direction: **79.8% up**, 17.6% down → **79.0% A-family** vs the champion's 0.2% +- **rows actually shaded by efficiency: 0 / 1,250** (96.5% of markets unscored → f=1; the one scored + market present is the f=1 anchor) + +So the hypothetical re-letter was never 43.6% *or* 92.9%, and it would have been driven **entirely +by switching the grading basis to edge-vs-fixed-bar — not by efficiency shading, which is inert on +this board.** That unapproved basis change is precisely why the flip was refused. + +### What measurement integrity actually needs right now: **nothing new.** +`model_version` already separates the S64 eras (`engine1@2026-07-20` / `pre-retention-unknown`), and +**takeable tags are complete** (1,245/1,250, `takeable_floor` on all, one floor −160; the 5 untagged +have no locked price = honest NULL). **The boundary becomes a hard prerequisite on the day a +promotion actually ships** — and `config/modelEras.js` is its home. + +--- + +# PART 2 — INCOMPLETE-SURFACE BUILD TRIAGE (all get built; nothing cut) + +Classified from the code, not the matrix. + +| # | Surface | Real state (cited) | Real dependency | Size | +|---|---|---|---|---| +| 1 | **`/intelligence`** | **BUILT-NOT-WIRED.** `app/intelligence/page.tsx`, 160 lines, real data, **0 placeholders**, 0 nav links | none — it works | **small wire** (1 nav entry) | +| 2 | **`/slip`** | **BUILT-NOT-WIRED.** `app/slip/page.tsx`, 526 lines, live, 0 nav links | none — OCR + `/api/slips/parse` live | **small wire** | +| 3 | **`/parlay`** | **BUILT, drawer-only.** 340 lines; reachable via `#parlay`, 0 direct nav links | none | **small wire** (+ a design artboard) | +| 4 | **`/marketplace`** | **BUILT-NOT-WIRED.** 121 lines, waitlist/interest capture (API access etc.), 0 nav links | ⚠️ **honesty check**: it advertises unbuilt capabilities — must read as *interest capture*, never as available | **small wire** after copy check | +| 5 | **`/soccer`** | **BUILT-NOT-WIRED.** 414 lines, real fetch → `/api/odds/soccer/:league` | 🔴 **odds-api quota (0/500)** — soccer props blocked on QUOTA, not code. Also needs a soccer settled-result feed or it grades and never settles | **medium** (blocked upstream) | +| 6 | **`/notifications`** | **DESIGNED-NOT-BUILT.** 14 lines, `RouteStub` ×2 | a notification store + delivery (email/push) + user prefs | **real build** | +| 7 | **`/compare` (H2H)** | **BUILT-PLACEHOLDER→honest.** 27 lines, in-dev state (fabrication already removed) | two-player fetch over `/api/stats/player` (exists) | **medium** | +| 8 | **`/system`** | **DESIGNED-NOT-BUILT.** No `app/system/` dir; prod **404**. `System.dc.html` exists | decide vs `/intelligence` overlap — may be the same surface designed twice | **real build** | +| 9 | **Offseason hub** | **DESIGNED-NOT-BUILT.** No dir; prod **404**. Full `Offseason.dc.html` | futures/news feeds (partly live in `FuturesBoard`/`NewsWire`) | **real build** | +| 10 | **Article media / `ShareCard`** | **BUILT-NOT-WIRED (dead).** 0 real importers | a share/OG surface to host it; `opengraph-image.tsx` already live | **medium** | +| 11 | **Calibration / edge board** | **BUILT-NOT-WIRED (correctly hidden).** `MobileEdgeBoard`, 0 importers | 🔴 **a REAL edge feed** — i.e. `p_win` vs `fair_prob`. Cannot ship on `edge_pct` (price-free, line-scaled) | **medium**, gated on the model | +| 12 | **Price triplet MODEL leg** | **BUILT, not PRODUCING.** `NO_MODEL` honest-absent renders correctly | 🔴 **the EV layer must emit `p_win`/`ev_pct`/`model_odds` on served grades** | **medium**, model work | +| 13 | **Live tracking** | **BUILT + LIVE + HONEST.** Design is the only gap | a design artboard | **design task** | +| 14 | **Newsletter** | **BUILT.** Send is internal-only | Listmonk env (`CANNOT DETERMINE` externally) + a design artboard | **small** (config + design) | + +### 2.6 — matrix corrections (accuracy, not cutting) +- **Live tracking (#15)** is marked ❌ only because DESIGNED=NO. It is **built, wired, live and + honest** — the gap is an artboard, not code. Same for **Newsletter (#21)** and **Slip reader + (#22)** on the design column. +- **`/parlay`** is not "unreachable" — it is drawer-reachable; the gap is a *direct* link. +- **`/compare`** is already honest (the Jokić/Wembanyama fabrication is gone); only the real build remains. + +### PHASE 2 — ORDERED BUILD PLAN (dependency-sequenced) + +**Wave 1 — zero dependencies, pure wiring (hours):** +1. `/intelligence` nav link · 2. `/slip` nav link · 3. `/parlay` direct link · +4. `/marketplace` link **after** an honesty pass on its copy. + +**Wave 2 — design-only gaps (no code):** +5. Artboards for **Live tracking**, **Slip reader**, **Newsletter**; promote the System bundle's +"PARLAY BUILDER" to a named Parlay-lab artboard. 6. Confirm Listmonk env → Newsletter LIVE. + +**Wave 3 — self-contained builds:** +7. `/compare` real two-player fetch (deps already live) · 8. `ShareCard` host surface · +9. `/notifications` (needs a store + delivery — the largest of the three). + +**Wave 4 — gated on the MODEL, do not start before it:** +10. **Price triplet MODEL leg** and **11. Calibration/edge board** both need a real price-aware edge +(`p_win` vs `fair_prob`). Building either on `edge_pct` would re-ship the retired 620% lie. + +**Wave 5 — gated on the SPORT BOUNDARY + upstream quota:** +12. **`/soccer`** — blocked on **odds-api quota (0/500)**, and needs a settled feed. 13. **`/system`** +— first decide whether it duplicates `/intelligence`. 14. **Offseason hub**. + +### Placeholder honesty during the build (Truth Law) +Only two live surfaces carry anything placeholder-ish, and neither currently displays fabricated +data: **`/compare`** (honest in-dev copy) and **`/marketplace`** (advertises unbuilt capability — +flagged for a copy pass so it reads as interest capture). `MobileEdgeBoard`'s placeholder edge feed is +already **unrendered**. **No live surface is showing fabricated data today.** + +## TAGS +VERIFIED: no promotion (three independent proofs); takeable tags complete; every surface classified +from code. CANNOT DETERMINE: Newsletter LIVE (Listmonk env not visible externally). **BLOCKED: the +boundary tag — there is no promotion to mark; `/soccer` — odds-api quota.**