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:
@@ -684,6 +684,32 @@ snapshot, locked to the line, and read from cache.
|
||||
transient provider blip). A successful-but-empty slate is NOT retried — that's a
|
||||
legit off-hours empty slate, and retrying would waste quota + add 60s latency.
|
||||
|
||||
## Phase 0 — Kill the Lies (Session 57 — non-obvious)
|
||||
Work-order Phase 0 (Jul 10 live audit): fabricated UI deleted/rewired. The
|
||||
overhaul work order lives in `specs/phase-0-kill-the-lies.md` (+ the full
|
||||
phased plan in the Session-57 conversation / BUILD-STATE Next section).
|
||||
- **ESPN schedule is date-pinned now.** `fetchScheduleFromEspn(sport, date)`
|
||||
sends `?dates=YYYYMMDD` AND filters events to the requested ET date (undated
|
||||
events dropped). Without this, off-season ESPN returns the NEAREST slate —
|
||||
the Jun 13 NYK@SA Finals game rendered as "tonight" all July. Don't remove
|
||||
the defensive filter even though the param "should" be enough.
|
||||
- **`liveTick` carries NO display data** — state is `{ tick }` only (1s
|
||||
re-render pulse). Real header numbers come from `GET /api/snapshot/summary`
|
||||
(public, cache-only; registered BEFORE `/:sport` in `routes/snapshot.js`).
|
||||
`vyndrSystems.test.js` fails if fabricated counters reappear.
|
||||
- **Ticker hides below 4 real items** (spec §3) and publishes `--ticker-h`
|
||||
(32px/0px) on `<html>`. Layout main paddingTop = `calc(92px +
|
||||
var(--ticker-h, 0px))`, Slate sticky top = `calc(90px + ...)`. If you change
|
||||
header heights, update BOTH calc bases (they replace the old 124/122
|
||||
constants). No hardcoded fallback ticker items — real exhaust or nothing.
|
||||
- **/terminal redirects to /dashboard.** The old page's layouts (VVI cards,
|
||||
injury wire, leaders) are preserved UNROUTED in
|
||||
`web/src/components/intel/TerminalTemplates.tsx` as §12 content-engine
|
||||
templates — every constant in there is SAMPLE data; never route it as-is.
|
||||
BottomTabBar's 5 tabs are now Slate/Explore/Scan/Ledger/More.
|
||||
- **Empty slates use `web/src/lib/emptyState.js`** (month-aware per-sport
|
||||
copy). It's CommonJS + unit-tested; add sports there, not inline.
|
||||
|
||||
## Active Skills
|
||||
- vyndr-voice (all user-facing output)
|
||||
- prop-analysis (grading methodology)
|
||||
|
||||
Reference in New Issue
Block a user