Files
vyndr/specs/incomplete-surface-triage.md
T
builtbykev e70c02aca0 report: incomplete-surface build triage; boundary tag NOT applied (no promotion exists)
Report-only. Nothing built, wired, tagged, or removed.

PART 1 — the recalibration boundary was NOT written. The build order asks to tag
grades pre/post edge-shading at "the true promotion timestamp"; there is no such
timestamp, and writing the marker would insert a fabricated model transition
into an append-only public record — the exact corruption the order exists to
prevent. Three independent production proofs:

  A. model_snapshots.code_sha — every sha that ran the pipeline in the last 5
     days is a documented commit from this session (f3bf300 currently live,
     then f310608, 9b5235c, b8ee216, afb56b1, 3592aba, 914a057), all stamped
     model_version engine1@2026-07-20. No promotion commit exists.
  B. Daily A-family share 07-24..07-30: 0.0, 0.0, 0.0, 0.0, 1.0, 1.6, 0.0 —
     flat at zero, no step change on any date. A 92.9% re-letter under shading
     would have driven the board to ~79-93% A overnight.
  C. efficiencyShading has zero production importers; HEAD d54eca0, clean tree.

Phase 2 delta: neither 92.9% nor 43.6% is attested in any measurement here, and
no re-lettering occurred at any scale, so partial-slate-vs-full-board cannot
explain a gap that does not exist. The only measured numbers, on all 1250 rows
(the full board): 97.4% would change, 79.8% up, 79.0% A-family, and 0 of 1250
rows actually shaded — the hypothetical re-letter would have come entirely from
an unapproved grading-basis switch, which is why the flip was refused.

Measurement integrity needs nothing new right now: model_version already
separates the S64 eras and takeable tags are complete (1245/1250). The boundary
becomes a hard prerequisite the day a promotion actually ships.

PART 2 — build triage for 14 incomplete surfaces, classified from code with each
one's real dependency and honest size, sequenced into five waves: pure wiring
(/intelligence, /slip, /parlay, /marketplace after a copy honesty pass);
design-only gaps (Live tracking, Slip reader, Newsletter artboards);
self-contained builds (/compare, ShareCard host, /notifications); model-gated
(price triplet MODEL leg and the calibration board both need p_win vs
fair_prob — building either on edge_pct would re-ship the retired 620% lie);
and sport-boundary/quota-gated (/soccer blocked on odds-api 0/500, /system,
Offseason).

Matrix corrections: Live tracking, Newsletter and Slip reader are built/live/
honest and marked incomplete only on the DESIGN column; /parlay is
drawer-reachable, not unreachable; /compare is already honest. No live surface
is showing fabricated data today.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QJs13VsyiSKYQP6rj3NNmc
2026-07-31 01:49:55 -04:00

125 lines
8.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 ~7993% 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.**