diff --git a/outputs/VYNDR-COMPLETION-MATRIX.md b/outputs/VYNDR-COMPLETION-MATRIX.md index f5d6de8..177f9d4 100644 --- a/outputs/VYNDR-COMPLETION-MATRIX.md +++ b/outputs/VYNDR-COMPLETION-MATRIX.md @@ -764,3 +764,21 @@ gated rows because a result is a fact, not a judgment. a leak; `max-age=30` on this endpoint means post-deploy checks must bust the cache. 319 suites / 3,970 tests green, web build exit 0. + +--- + +# FREE PROOF SURFACE โ€” `/record` (shipped 2026-07-31) + +Tier-record-forward, presentation-only (`src/` untouched). Reads `/api/accuracy` + `/api/ledger/model` +and prints them as-is: **B 60% n512, C 57% n413 with C honestly below B; A/D/F hollow with real +samples**. Sport slicing is client-side (the endpoints ignore `?sport=`). + +**The rule that matters:** a withheld percentage stays null โ€” A is 1/2 and a test asserts we do **not** +derive 50%. **CLV renders an honest absence**: `beat_close_pct` is null behind the capture-reliability +guard, so the panel says NOT PUBLISHED YET and explains why, and tests forbid the computable-but-wrong +34/937 = 3.6% fallback. Calibration and accuracy-over-time are **named as held**, not faked โ€” no honest +source exists yet. + +Cache-busted fingerprint: page served, CLV honest-absent, guard named, held pieces named, **no "3.6"**, +**no hard-coded percentage in the markup**. The hollow-explanation line is client-conditional โ†’ Chrome +audit. 320 suites / 3,986 tests green, web build exit 0. diff --git a/specs/STATE.md b/specs/STATE.md index 3461004..9542d1d 100644 --- a/specs/STATE.md +++ b/specs/STATE.md @@ -1072,6 +1072,39 @@ > silent-false harness bug, and the same lesson: a verification path can lie in either direction. > **FLOOR: 319 suites / 3,970 tests green, web build exit 0.** +> ## ๐Ÿ“Š FREE PROOF SURFACE SHIPPED 2026-07-31 โ€” `/record`, tier-record-forward, honest CLV panel +> **Presentation over existing endpoints** โ€” `src/` untouched (diff empty): no grade, model or ledger +> change. Pricing/migration = Builds 2/3. +> **TIER-RECORD-FORWARD.** `/record` reads the canonical public aggregates (`/api/accuracy` + +> `/api/ledger/model`) and prints them **as-is**: **B 60% n512 ยท C 57% n413 โ€” C ships honestly BELOW +> B** ยท **A (n2), D (n5), F (n5) render HOLLOW with their real sample instead of a rate**. Sport +> slicing is **client-side** because the endpoints ignore `?sport=` (verified: mlb 526 @62%, wnba 411 +> @54% from the `sports` map). +> **๐Ÿ”ด THE LOAD-BEARING RULE, test-locked:** where the source withholds a percentage it **stays null**. +> **A is 1/2, so 50% is derivable โ€” a test asserts we do NOT derive it**, because the API withheld it +> on purpose (n < 20). +> **CLV IS AN HONEST ABSENCE, NOT A NUMBER.** `beat_close_pct` is null because +> `clvCaptureReliable()` hasn't passed. The panel reads **"NOT PUBLISHED YET"** and explains that any +> percentage printed today **"would be measuring our collection gaps as much as our edge"**; it +> surfaces the accruing sample (937) but **no rate**. **Tests assert the panel never falls back to +> `clv_beat/clv_sample` (34/937 = 3.6%) and that the serialized panel contains no "3.6"** โ€” that +> number is computable and would be WRONG, which is the exact fabrication this surface exists to +> refuse. Built to receive a real number later without a redesign. +> **HELD AND NAMED ON THE PAGE rather than faked:** calibration + accuracy-over-time are absent +> because there is **no honest source** (no claimed-vs-actual endpoint; `window_days` fixed at 30 with +> no series) โ€” and the page says so, **and says it is "not because they are unflattering."** +> **A page-level test asserts NO hard-coded percentage exists in the markup** (so no figure can drift +> from the aggregate) **and that the page never touches `/api/snapshot` or itemized rows** โ€” the +> Build-1 gate holds, exploit stays dead. +> **โœ… FINGERPRINT โ€” CACHE-BUSTED** (deploy boundary captured 404โ†’200): page served โœ“ ยท CLV +> honest-absent โœ“ ยท names the guard โœ“ ยท held pieces named โœ“ ยท **no "3.6" anywhere โœ“** ยท **no +> hard-coded pct in the HTML โœ“**. Canonical data the page renders, verified cache-busted: **A HOLLOW +> n2 ยท B 60% n512 ยท C 57% n413 ยท D HOLLOW n5 ยท F HOLLOW n5**; sports mlb 62 / wnba 54. +> **โš ๏ธ ONE ITEM NOT SERVER-VERIFIABLE:** the hollow-explanation line is **client-conditional** +> (`loaded && rows.some(hollow)`), so it is absent from the SSR HTML by design and could not be +> confirmed by curl โ†’ **Chrome audit** (along with the rendered bars and the sport tabs). +> **FLOOR: 320 suites / 3,986 tests green (16 new), web build exit 0.** + - **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,