From 10aaaeb1da1fe29ecd4d0a49f588303b64bdc0db Mon Sep 17 00:00:00 2001 From: Kev Date: Fri, 31 Jul 2026 00:58:34 -0400 Subject: [PATCH] docs: promotion gate not passed (no flip); Order B edge_pct display retired Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01QJs13VsyiSKYQP6rj3NNmc --- outputs/VYNDR-COMPLETION-MATRIX.md | 23 ++++++++++++++++++ specs/STATE.md | 38 ++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) diff --git a/outputs/VYNDR-COMPLETION-MATRIX.md b/outputs/VYNDR-COMPLETION-MATRIX.md index 38bfb67..81035fc 100644 --- a/outputs/VYNDR-COMPLETION-MATRIX.md +++ b/outputs/VYNDR-COMPLETION-MATRIX.md @@ -542,3 +542,26 @@ replaced (`p_win` vs `fair_prob`, both already stored), not the multiply moved** our own record for the 9 of 11 live markets that have none. 313 suites / 3,899 tests green, web build exit 0. + +--- + +# PROMOTION GATE NOT PASSED · ORDER B SHIPPED — 2026-07-31 → `specs/edge-pct-display-retirement.md` + +**No flip.** Champion grade byte-identical; projection/p_win/CLV untouched. + +**Gate: 3 of 4 prerequisites fail.** Scores are estimated priors (and the premise's NBA 0.72 / WNBA +0.68 are not in the code — there is no WNBA score); **the version-boundary tag never landed** +(`modelEras.js` has zero shading refs); **no rollback flag exists**. Takeable tags did land (034). + +**The approved delta is wrong.** Approved 43.6% re-letter, efficient tighten / soft hold. Measured on +1,250 rows: **97.4% change, 79.8% UP**, → **79.0% A-family (MLB 93.4%)** vs champion 0.2%, with +**0 rows actually shaded**. The re-letter is entirely the grading-basis switch, not efficiency shading +(inert: 96.5% of markets unscored, the one scored market is the f=1 anchor). Flipping would mint A's +across 79% of an append-only record on a letter with r ≈ 0.005 vs outcomes. + +**Order B shipped:** edge_pct display retired from GradeResultCard (strip, EDGE cell → `—`, ladder +rung) and SoccerGradeResult; DeskShowcase kept; **computation + signed-edge sort fallback survive** +(deleting them re-breaks the 07-29 sort fix). Two build-breakers fixed; two pre-existing sign-colour +tests superseded by the stronger "no edge figure renders at all". + +314 suites / 3,908 tests green, web build exit 0. diff --git a/specs/STATE.md b/specs/STATE.md index 25763f8..5eaedf7 100644 --- a/specs/STATE.md +++ b/specs/STATE.md @@ -662,6 +662,44 @@ > sound and already built, so that re-run is cheap. > **FLOOR: 313 suites / 3,899 tests green (9 new), web build exit 0.** +> ## 🛑 PROMOTION GATE **NOT PASSED — NO FLIP** · ORDER B SHIPPED 2026-07-31 → `specs/edge-pct-display-retirement.md` +> **The champion grade was NOT flipped.** Grade path byte-identical (diff empty across +> `intelligence/`, `gradeSlateService`, `snapshotService`). Projection, `p_win`, CLV untouched. +> **THREE OF FOUR REVIEW-ZERO PREREQUISITES FAIL — and the order's own rule for 0.2 is "STOP".** +> **0.1** scores are **ESTIMATED priors** from the founding spec, not measured — and the premise's +> cited values **are not in the code**: the module holds `nba:points .80` / `mlb:total_bases .55`; +> there is **no NBA 0.72 and no WNBA score at all**. **0.2 ❌ THE VERSION-BOUNDARY TAG NEVER LANDED** +> — `config/modelEras.js` has ZERO shading references; it was deliberately not applied twice +> (nothing had been promoted) and reported both times. **0.3 ❌ NO ROLLBACK FLAG EXISTS** — zero +> occurrences of `SHADING_ENABLED`/`EDGE_SHADING`/`shadingEnabled` in `src/`. **0.4 ✅** takeable tags +> landed (migration 034, 1,246/1,254). +> **🔴 AND THE APPROVED DELTA DOES NOT MATCH THE MEASURED ONE.** Approved: "43.6% re-letter, efficient +> tighten / soft hold." Measured on all 1,250 live rows: **97.4% change (1,217), 79.8% move UP**, 17.6% +> down → **79.0% A-family (MLB 93.4%)** vs the champion's 0.2%. **And `rows_actually_shaded = 0` of +> 1,250** — 96.5% of markets are unscored (f=1) and the one scored market present is the ANCHOR +> (f=1.0 by construction). **The entire re-letter comes from switching to edge-vs-fixed-bar grading, +> NOT from efficiency shading, which is inert on this board** — an unapproved grading-basis change +> riding along, which the order's own "no new scaling changes riding along" guardrail forbids. +> **WHY THIS IS A REFUSAL, NOT A DELAY:** flipping would re-letter **97.4% of an append-only public +> record**, move 79.8% of grades UP and mint A's on 79% of the board — on a letter whose measured +> correlation with outcomes is **r ≈ 0.005**. That is precisely what the permanent founder ruling +> forbids ("a relabelled B sold as an A corrupts an append-only ledger"). **To unblock:** land the +> version tag, add a rollback flag, **replace the INPUT** (`p_win` vs `fair_prob` — a real price-aware +> edge, both already stored) so a fixed bar is meaningful, and fit scores for markets we actually +> grade. Then re-measure and re-approve against the true delta. +> **✅ ORDER B SHIPPED (independent, and a live falsehood).** `edge_pct` display retired from +> **GradeResultCard** (confidence-strip figure, `EDGE` cell → honest-absent `—`, alt-ladder rung — the +> rung's LINE and GRADE still render) and **SoccerGradeResult**. **DeskShowcase KEPT** (already honest). +> **COMPUTATION + THE SIGNED-EDGE SORT FALLBACK SURVIVE** (`edgePctFor`, `computeEdge`, +> `descNullsLast(a.edge,b.edge)`) — deleting them would re-break the sort fixed 2026-07-29; a test +> asserts all three survive and that the sort still orders `agrees → disagrees → absent`. +> **Two build-breakers the retirement caused were found and fixed** (orphaned `edgeColor` import, +> orphaned `edge_pct` destructure — `edge_pct` stays on the props CONTRACT). **Two pre-existing tests +> SUPERSEDED, not deleted** (`ds4Billboards`, `colorContract`): they asserted the edge figure is +> sign-coloured; they now assert the stronger property that **no edge percentage renders at all**. +> `edgeColor` itself is untouched and still enforced for `MarketBreadth`. +> **FLOOR: 314 suites / 3,908 tests green (9 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,