builtbykev
5f5c004416
Item 2 — nightly pg_dump backup script + runbook (Supabase free tier has none)
...
scripts/backup-db.sh: nightly full-DB pg_dump via the direct connection string,
14-day local rotation, weekly off-box rsync copy, ntfy alert on any failure +
an undersized-dump guard (an empty dump is a silent failure). docs/BACKUP-
RUNBOOK.md: the ONE env var Kev must set (SUPABASE_DB_URL — the direct
db.<ref>.supabase.co:5432 URI, not the pooler), the cron line, the off-box
target (Hetzner Storage Box via rsync, simplest for a Hetzner box), and the
restore FINGERPRINT procedure (pg_restore into a scratch DB + count
ledger_entries — proves it's a real, restorable backup).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-18 13:55:39 -04:00
builtbykev
4bd770480a
Grade-fix validation script + finding doc (before-state, blast-radius SQL, plan)
...
scripts/validate-grade-fix.js checks the live MLB snapshot for the three
degradation signatures (projection=0, edge=100 cluster, grade/conf disagreement)
— run after the next 14:00 UTC regrade to fingerprint the fix. The finding doc
now records root causes, fixes (commits 888d103/9fc4edf), the blast-radius SQL
(box can't reach Supabase directly), and the shared-path note for NBA/WNBA.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-17 03:18:36 -04:00
builtbykev
2ae8a5697e
Session 56: Full audit — PropLine + boxscore + pipeline + sport coverage (2289 tests)
...
Research (verified against live MLB Stats / ESPN / The Odds APIs):
- specs/propline-audit.md — every stat_type mapped against our 4-layer pipeline;
real MLB boxscore fields; sport coverage status; pipeline gap analysis.
- specs/vyndr-roadmap.md — priority-ordered Sessions 57–64 + coverage targets.
- scripts/propline-audit.js + specs/audit-data/ (raw capture).
Headline bug: oddsNormalizer mapped batter_rbis → 'rbis' while the whole
grade/feature/outcome chain keys on 'rbi' — every PropLine RBI prop silently
failed to grade AND settle. Fixed (+ regression test).
Phase 4 — wired missing MLB stats end-to-end:
- PropLine MLB markets 6 → 12 (+runs, walks, doubles, earned_runs, hits_allowed,
outs — same request, no extra quota).
- doubles/outs/triples added to featureCache + outcomeService MLB_LOG_FIELD and
all three grade whitelists (analyze/scan/validation.py).
Phase 6 — pipeline resilience:
- opsNotify.js: ntfy alerts (never throws, test-disabled). Snapshot success/
stale/failure alerts; retry-once on hard odds error (not on empty slate).
- Missed-cron watchdog (mostRecentExpectedSlot/isSnapshotOverdue); status probe
now returns `overdue`.
Coverage truth: MLB is the only end-to-end-live sport; outcome settlement is
MLB-only (WNBA/NBA/soccer never settle) — documented as the #1 roadmap gap.
Backend 2276 → 2289 tests (+13). Web build exit 0.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-10 17:00:29 -04:00
builtbykev
6ab49d4c37
Session 22: Tracker-driven quota guard, configurable cache TTL (1hr default), opt-in odds prewarmer (1505 tests)
2026-06-12 02:41:51 -04:00
builtbykev
167996d99a
Session 15: Intelligence hardening — park factors, weather, Tank01 prefetch, pace factors, signal audit, founder pricing fix (1405 tests)
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-06-11 16:21:18 -04:00
builtbykev
e5c45ecc8e
Session 10: Internal auth refactor, prefetch cascade keys, Sentry, welcome email (1286 tests)
2026-06-10 20:45:05 -04:00
builtbykev
ad5ea8d5a8
Session 7j: Soccer intelligence - 9 leagues, 11 signals, 6 traps, poller, prefetch, 131 new tests (1173 total)
2026-06-10 14:50:13 -04:00
builtbykev
012c0ef47e
Session 7e: Grade adapter, normalize consolidation, ARCH-2 banners
2026-06-10 03:37:07 -04:00
builtbykev
6f4a353de9
Session 7d: Audit fixes - rate limiting, error leak, parallel parlays, analyze cache, bundle analyzer
2026-06-10 03:12:20 -04:00
builtbykev
5c44922937
Session 7b: Fix pipeline - body parser, Redis queueing, poller visibility, auto-start
2026-06-10 01:22:55 -04:00
builtbykev
1fa04dc776
Sessions 5-7a: 955 tests, deployment ready
2026-06-08 18:35:13 -04:00
builtbykev
3da1b4242c
feat: Feature 1.2 (NBA stats FastAPI service) + Feature 1.4 (database schema)
...
Feature 1.2: Python FastAPI microservice wrapping nba_api
- GET /stats/season-avg, /stats/last-n, /stats/splits, /players/search
- Redis caching (24hr/1hr/6hr/7day), 0.6s rate limiting, PRA derived stat
- 27 Python tests passing
Feature 1.4: Complete Supabase database schema
- 6 tables: users, picks, scan_sessions, bets, outcomes, performance
- RLS enabled on all tables with auth.uid() policies
- 3 triggers: auto-create user, updated_at, scan count reset
- 37 schema validation tests passing
- Migration SQL ready, pending manual apply (WSL2 DNS blocker)
Total: 92 tests (65 Node.js + 27 Python), all passing
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-21 10:58:58 -04:00