LiteLLM S7 proxy was a redundant middleman (94% endpoints unhealthy).
key_rotator.py already routes to 6 providers directly:
OpenRouter (7 keys), Groq (5), Kimi, OpenAI, Google, xAI
- key_rotator.py: remove litellm provider
- nba-agent.py: use call_llm from key_rotator
- nba-quant-daemon.py: use call_llm from key_rotator
- ingest-nba.py: remove dead LITELLM vars
- deploy.py: remove LITELLM secrets from S10 deploy
- S7 Space: PAUSED (no longer needed)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
feat: unify feature engine + add version tracking to experimentsβ
WS1: Real box score data pipeline
- New ops/backfill-boxscores.py β fetches FGM/FGA/FG3M/FG3A/FTM/FTA/OREB/DREB/PF from NBA API
- engine.py _parse_stats() detects real data, computes real possessions/eFG%/pace/ORtg/DRtg
- app.py /api/command now supports backfill_boxscores (background thread)
WS2: Feature engine cleanup
- skip_placeholder flag skips categories 11-15 (all zeros without real data)
- Fitness weights: Brier 70%, Cal 20%, ROI 5%, Sharpe 5% (was 60/20/10/10)
- Soft penalty 0.001 per feature above 80 (replaces hard cliff at 150)
WS3: Karpathy autoresearch loop (S10 side)
- POST /api/checkpoint β saves best individual + Brier to disk
- POST /api/rollback β reverts to specific or best checkpoint
- GET /api/checkpoint/best β returns lowest Brier checkpoint
- Rule 7 LIVE_REGRESSION in run_logger β auto-rollback if live Brier drifts
WS4: Prediction bridge
- fetch_evolved_predictions() calls S10 /api/predict
- predict_game() blends 60% evolved + 40% ensemble when available
Co-Aβ¦
fix: Supabase logging to public schema + 47 secrets on S10β
- All SQL now uses explicit public.nba_evolution_* table names
(DB user defaults to n8n_engine_1 schema, was silently writing there)
- Direct psycopg2 INSERT for gen/cycle logging (bypasses pool issues)
- Deep numpy-safe JSON serializer for /api/status endpoint
- deploy.py expanded from 5 to 47 secrets (all LLM keys, DBs, Telegram, search, GitHub, HF tokens)
- Data confirmed flowing: 24 gens, 240 evals, 9 runs in Supabase public schema
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
feat: Supabase run logger + auto-cut + 2058 features (25 categories)β
- RunLogger: logs every gen/cycle/eval to Supabase PostgreSQL (4 tables)
- 6 auto-cut rules: regression, stagnation, ROI, diversity, features, brier floor
- Integrated into app.py (S10) and genetic_loop_v3.py
- Feature engine expanded: 580 β 2058 features across 25 categories
- New categories: interactions, advanced rolling, season trajectory, lineup,
game theory, environmental, cross-window momentum, market II, power ratings, fatigue
- S10 API endpoints: /api/run-stats, /api/cuts, /api/brier-trend, /api/recent-runs
- Deploy script for S10 HF Space
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>