STATE: heal executed — 64 re-voided, 25+200 quarantined, scopes separated

This commit is contained in:
Kev
2026-07-20 05:45:27 -04:00
parent b33612675d
commit f73fb64a43
+50
View File
@@ -133,6 +133,56 @@ exist locally; harmless, the data restores completely.
---
## 🟢 HEAL EXECUTED (Order 2, 2026-07-20 ~10:00 UTC) — record is clean
Rollback point first: `vyndr-20260720-093821.dump` (856,890 B) **verified ON the
Storage Box**, not just exit 0.
**⚠️ THE DRY-RUN OVERTURNED MY OWN DIAGNOSIS — read this before trusting the
Order 1.5 notes above.** Across every bindable row the stored `game_date`
matched a real game (**MIS-DATED: 0**). The players I cited as proof of
mis-dating were **genuine DNPs** on their true dates (Freeman 07-18;
Kwan/Hedges/Davis 07-17 — their teams played, they did not). **The original 64
`player_dnp` voids were CORRECT and my Order 1.5 revert undid correct work.**
| Axis | Result |
|---|---|
| Settlement scorer | **578/578 re-computed identical, 0 differ** — confirmed, no heal needed |
| Dates | 527 correct · **0 mis-dated** · 170 unbindable (my dry-run's parser, NOT proven damage) |
| Grade damage | **51 rows, not 303** — the rest hit the same opponent anyway (baseball SERIES effect) |
**Writes executed (each verified against the dry-run prediction):**
- **64 re-voided** (60 mlb + 4 wnba) — by the settle pass's positive-evidence
guard, not hand-picked ids. DNP voiding re-enabled deliberately because its
disable rested on a false premise.
- **25 ledger rows quarantined** `wrong_opponent_grade` (wnba 2026-07-18,
10 hit / 15 miss). They REMAIN real public settled results; only train/validate
excludes them.
- **200 `model_snapshots` rows quarantined** — the 4 pre-fix MLB cycles for
game_date 07-20 (06:00/06:02/06:03/07:25 UTC). Superseded by the correct
07:50/07:51 captures of the same props, so nothing is lost.
- **70 rows flagged** `doubleheader_game_identified`.
**TWO EXCLUSION SCOPES (migration 027) — deliberately separate:**
- `quarantine_reason` → grade untrustworthy. Row stays a real public result but
is **excluded from the model-record denominator** (`getModelAggregate`), like
void/unrecoverable.
- `analysis_flags` → valid for settlement AND the record; excluded only from
per-game/opponent analysis. **Never filtered from aggregates** (a test asserts
this, so a future edit can't silently collapse the two).
**Corrections to my own Phase 0 numbers, found while executing:**
- The 50 WNBA "poisoned moat rows" were **NOT poisoned** — captured 03:02 UTC
(23:02 ET 07-19) for game_date 07-19, so ESPN's "today" was the right day.
- The 166 doubleheader rows came from **loose team matching** and could not be
reconciled (a strict predicate found 121). I flagged only the **70** rows the
FEED itself marks (`G2…`/`(Game1)`) — and those are attributable, not
unattributed. The wider unattributed set needs a stricter pass; it is advisory
metadata that affects no number today.
**Final state:** 360 hit · 218 miss · 64 void · 55 pending · 25 quarantined
(697 public rows). 26 pending mlb 07-20 rows left untouched to self-heal on the
next cycle, as ordered.
## 🟢 GRADING DATE BINDING FIXED — wrong-opponent bug closed (2026-07-20 07:50 UTC)
`computeFeatures.lookupTodayGame`**`lookupGameOnDate`**: it now sends
`?dates=YYYYMMDD` from the prop's BOUND game instead of taking ESPN's dateless