From b1ed675500f47e6ade1f35ca6e16da5f15a02322 Mon Sep 17 00:00:00 2001 From: Kev Date: Mon, 20 Jul 2026 12:53:39 -0400 Subject: [PATCH] =?UTF-8?q?STATE:=20MLB=20opp=5Frank=5Fstat=20live=20?= =?UTF-8?q?=E2=80=94=20consumption=20proven,=20coverage=208/14,=20factor?= =?UTF-8?q?=20inert=20this=20slate?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- specs/STATE.md | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/specs/STATE.md b/specs/STATE.md index 8cc1150..0c47cf7 100644 --- a/specs/STATE.md +++ b/specs/STATE.md @@ -133,6 +133,49 @@ exist locally; harmless, the data restores completely. --- +## ๐ŸŸข MLB opp_rank_stat LIVE โ€” computed, CONSUMED, retained (2026-07-20 16:51 UTC) +- **Consumption path verified BEFORE wiring** (a value the grader doesn't read + is a dead end): `featureCache.teamFeatures` sets `out.opp_rank_stat` โ†’ + `engine1.computeFactors` READS `features.opp_rank_stat` โ†’ fires + `weak_opponent_defense` (โ‰ฅ0.70) / `top_opponent_defense` (โ‰ค0.30). +- **Source:** `mlbStatsAdapter.getTeamPitchingStats` โ€” all 30 teams in ONE free + unauthenticated statsapi call. Only fills when the ESPN path yields nothing + (always, for MLB), so WNBA is untouched. +- **CONSUMPTION PROVEN on the exact retained vector** (Josh Bell hits o0.5), + varying only `opp_rank_stat`: + +| opp_rank_stat | grade | factors | +|---|---|---| +| 0.367 (as retained, mid) | **B-** | l5_hot_vs_line, l20_over_line, back_to_back | +| 0.98 (weak) | **B** | + **weak_opponent_defense** | +| 0.02 (tough) | **C** | + **top_opponent_defense**, away_vs_top5_defense | +| absent | **B-** | identical to mid โ€” neither fires โœ… | + +- **RETAINED** grade-time in `model_snapshots.features` (immutable, joinable). + +### ๐Ÿ“Š COVERAGE FIRST โ€” then the grade read +**8 of 14 graded MLB rows carried a non-null `opp_rank_stat` (57 %); 6 null.** +The nulls are almost certainly unresolved `opponentAbbr` (`teamFeatures` returns +early without one), NOT the sample floor โ€” but that is **undetermined without +container logs**, so it is reported as such rather than asserted. + +**๐Ÿ”ด THE FACTOR FIRED ON ZERO ROWS THIS CYCLE.** All 8 non-null values were the +SAME mid-scale `0.367` (one opponent, neither threshold crossed: +`would_fire_weak 0`, `would_fire_tough 0`). **So this slate cannot test +A-emission at all** โ€” the factor was present but inert. Any "A didn't emit" +reading from tonight is meaningless. + +**Live MLB 11-step distribution (14 graded):** `C+ 4 ยท F 4 ยท B- 2 ยท C 2 ยท D 2`. +**No A.** Notably **F now emits (4 rows)** โ€” the range has widened DOWNWARD, as +the restored ยฑ1.0 makes ฮฃฮด โ‰ค โˆ’2.51 reachable for the first time. + +**A-rated marketing stays HELD.** No thresholds changed. A genuine test needs a +slate with a weak-BAA opponent (โ‰ฅ0.70) so the +1.0 can actually lift a read. + +### Thin-sample floor in production +No thin-sample opponent appeared on this slate, so the production null-floor path +was **not exercised live** โ€” unit-tested only. Stated rather than implied. + ## ๐ŸŸข HARNESS ARMED + CLOSING CAPTURE STARTED (2026-07-20 ~16:10 UTC) Both verified by INDUCING the real code path โ€” never by waiting for a slot.