Session 57: Phase 0 — Kill the Lies (2309 tests)

Work-order Phase 0 (Jul 10 live audit): every fabricated UI element deleted
or rewired to real data. Deletion sprint — no new product features.

0.1 Fake NBA game: root cause was scheduleService fetching the ESPN
    scoreboard with no ?dates= param or date filter — off-season ESPN
    returns the NEAREST slate (Jun 13 NYK@SA Finals rendered as tonight).
    Now pinned to the requested ET date + defensive filter; undated events
    dropped. Honest month-aware per-sport empty states (lib/emptyState.js).
0.2 Fake header counters: liveTick stripped to a bare 1s pulse (the
    auto-incrementing "247 graded", sin-driven brain-%, aPlus/cascades are
    dead). New GET /api/snapshot/summary (cache-only, before /:sport) +
    Next proxy; HeartbeatBar shows the real graded count and SYNC =
    elapsed since the last pipeline run (amber past 5 min).
0.3 Ticker: hardcoded fallback items deleted (real snapshot exhaust only);
    MOVE kept — computeLineDeltas is real movement. <4 real items → no
    ticker; bar publishes --ticker-h so the fixed header collapses cleanly.
0.4 /terminal retired: route redirects to /dashboard; VVI/injury-wire/
    leaders layouts preserved unrouted as §12 content-engine templates.
    Nav PRIMARY = Slate/Scan/Ledger; BottomTabBar Terminal→Explore; PWA
    shortcut Terminal→Ledger; #terminal alias → /dashboard.
0.5 ›Query nav pill deleted (duplicate /scan link).

Backend 2289 → 2309 tests (199 suites), web build exit 0.
Spec: specs/phase-0-kill-the-lies.md. Next: work-order Phase 1 (ledger
persistence + settlement).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Kev
2026-07-10 20:17:49 -04:00
parent 2ae8a5697e
commit c8790fde55
27 changed files with 891 additions and 311 deletions
+49 -3
View File
@@ -4,9 +4,55 @@
2026-07-10
## Current Phase
SHIP BUILD v56.0 — The full data audit: PropLine/boxscore/pipeline inventory,
rbis→rbi fix, +6 MLB markets, doubles/outs wired end-to-end, ntfy alerting +
retry + missed-cron detection, master roadmap.
SHIP BUILD v57.0 — Phase 0 "Kill the Lies" (work order, Jul 10 live audit):
every fabricated UI element deleted or rewired to real data. Next: Phase 1
(ledger persistence + settlement — the truth infrastructure).
## Session 57 (2026-07-10) — SHIPPED ✅ PHASE 0: KILL THE LIES
Backend 2289 → **2309 tests** (+20), 199 suites. Web build clean (exit 0).
Spec: `specs/phase-0-kill-the-lies.md`. Work order: Phase 0 of the
overhaul (audit-driven; Phases 16 queued).
### 0.1 — Fake NBA game (root cause found + fixed at the source)
- `scheduleService.fetchScheduleFromEspn` hit ESPN with NO `?dates=` param and
NO date filter → off-season ESPN returns the NEAREST slate (the Jun 13 NYK@SA
Finals game rendered as "tonight" all July). Now pins `?dates=YYYYMMDD` AND
filters events to the requested ET date; undated events dropped.
- Honest per-sport empty states: `web/src/lib/emptyState.js` (month-aware —
"NBA returns in October." vs in-season "No NBA games today."), used by the
dashboard NO SLATE block + the Slate empty state.
### 0.2 — Fake header counters deleted
- `liveTick.js` stripped to `{ tick }` (1s re-render pulse only). The fake
auto-incrementing "247 graded", sin-driven brain-%, aPlus/cascades: DEAD.
- New `GET /api/snapshot/summary` (public, cache-only, registered before
`/:sport`) → `{ graded, updated_at, sports }`. Next proxy added.
- `HeartbeatBar` shows the REAL graded count + SYNC = elapsed since the last
pipeline run (amber past 5 min). No data → "SYNC —", nothing invented.
### 0.3 — Ticker: real items only
- Nav's hardcoded fallback items (fake Wembanyama A+/"NYK vs SA Q3"/invented
Tatum MOVE) deleted. MOVE stays — `computeLineDeltas` is real movement.
- Spec §3 rule: <4 real items → ticker renders nothing. It publishes
`--ticker-h` (32px/0px) on `<html>`; layout main paddingTop and Slate sticky
top are now `calc(base + var(--ticker-h))` so the header collapses cleanly.
### 0.4 — /terminal retired (fabricated surface)
- Route now `redirect('/dashboard')`. Layouts preserved UNROUTED at
`web/src/components/intel/TerminalTemplates.tsx` (§12 content-engine
templates — feed real data before ever routing them).
- Nav PRIMARY = Slate/Scan/Ledger. BottomTabBar: Terminal→Explore. PWA
manifest shortcut Terminal→Ledger. routes.js: `/terminal` out of
OPEN_ROUTES; `#terminal``/dashboard`.
### 0.5 — Query nav pill deleted (duplicate /scan link)
### Next (work order Phase 1 — starts the settle clock)
- `ledger_entries` table + write-on-grade (user scans AND pipeline pre-grades)
- Settlement worker; populate /ledger (personal + MODEL tabs)
- Degenerate scan output (model==line, +0% edge) → honest "INSUFFICIENT DATA"
- Canonical player_key normalization (blocks 2.4, 4.1)
## Session 56 (2026-07-10) — SHIPPED ✅ THE FULL AUDIT