STATE: MLB opp_rank_stat live — consumption proven, coverage 8/14, factor inert this slate

This commit is contained in:
Kev
2026-07-20 12:53:39 -04:00
parent 63302d194e
commit b1ed675500
+43
View File
@@ -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) ## 🟢 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. Both verified by INDUCING the real code path — never by waiting for a slot.