Continue F1 predictor work after MC-4858. User asked Luci to continue from the latest F1 validation state. All stored completed races with results currently have FP validation:...
StateDoneNext ActionClosedOwnerLuciRuntimeClosedAge4d ago
Ticket is done; runtime is closed.·profile claude_opus_1m_medium
Description
MC-4872
Continue F1 predictor work after MC-4858.
User asked Luci to continue from the latest F1 validation state. All stored completed races with results currently have FP validation: Australia, China, Miami, Monaco, Japan. The current recommendation is not a global FP-weight change, but a circuit-sensitive FP influence model.
Scope:
1. Audit where FP signals currently enter prediction scoring/ordering in f1-predictor.
2. Design and implement a small, safe circuit-sensitive FP weighting adjustment if warranted by the existing five-race validation sample:
- normal circuits: FP can support top-10 membership and modest exact-order confidence
- sprint/fallback races: FP/sprint signals support inclusion, damp exact-order confidence
- Monaco/street/high track-position circuits: damp FP exact-order impact vs qualifying/grid/track-position
3. Keep this conservative: no broad season-wide queries, no Superbru submit/modify path, no canonical prediction artifact rewrites unless explicitly required by tests.
4. Add or update tests showing the circuit-sensitive behavior and guarding against stale/mismatched FP signals.
5. Update documentation with the five-race validation sample and the implemented weighting rule.
6. Run focused tests/checks and push changes to origin/master.
Acceptance:
- Clear evidence of where FP weighting is applied today.
- Code or explicit no-code recommendation if implementation would be unsafe; if code changes are made, they are committed and pushed.
- Tests pass.
- Final ticket comment includes metrics, rule implemented/recommended, and verification.
Activity
done
INTERACTIVE
Luci is working...
Details —
Done
· High
· Luci
▼
SState
Done
Closed
PPeople
TTiming / Details▼
api (human)
Mission Control
4d ago
4d ago
Advanced / Operator evidence
RRouting owner
ROperator console
Ticket is done; runtime is closed.MC is visibility-only. Hermes Luci launches and gates work outside MC, then mirrors evidence/status here.
WWorkflow
Start Dev Review + QA ▾
Select phases to include:
Agents
Review Gates
Decision
WAT routing: choose an agent, review gate, or decision. Buttons use the live runtime when one is attached.
[visibility-only] Queued message recorded for Hermes Luci. MC did not claim the ticket or spawn a runtime.
api4d ago
MC-4872 completed and pushed.
Summary:
- Audited FP signal entry points in f1-predictor: FP load guard, pre-quali proxy, deterministic FP single-lap/race-pace scoring, fastest-lap factor, sprint constructor factor, and LLM prompt surfacing.
- Implemented conservative circuit-sensitive FP overlay in `pipeline/05_model.py` without changing global base weights.
- Monaco: FP x0.70, reallocated to qualifying/grid.
- Suzuka/Japan: FP x1.10.
- Shanghai/China and Miami: FP x0.95.
- Unknown circuits remain x1.00.
- Total model weight sum is preserved by moving the FP delta to/from `qualifying_position`.
- Model output now records `effective_weights` and `fp_weight_multiplier` for auditability.
- Added tests covering Monaco damping, Suzuka lift, unknown-circuit no-op, mismatched global FP guard, and degraded FP guard.
- Updated `docs/fp-validation-phase2.md` with audit, rationale, and implemented multiplier policy.
Verification:
- `PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=. python3 -m pytest -q tests/test_model_fp_weighting.py tests/test_next_race_fp_quality.py` -> 15 passed
- `PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=. python3 -m pytest -q tests/test_scoring_correctness.py tests/test_openf1_fp_summary.py tests/test_fastf1_cache_bypass.py` -> 18 passed
- `PYTHONDONTWRITEBYTECODE=1 python3 -m py_compile pipeline/05_model.py` -> passed
- Smoke run to temp output only: `pipeline/05_model.py --race monaco-2026 --output /tmp/...` printed `Circuit FP weight multiplier: 0.70 (monaco)` and output effective FP weights 0.049/0.028 with qualifying 0.353.
Commit pushed:
- `bad3498 Add circuit-sensitive FP weighting` to `origin/master`
Notes:
- No season-wide queries run.
- No Superbru submission/modification performed.
- Did not rewrite canonical prediction artifacts.
- Pre-existing local uncommitted/untracked files remain untouched: Canada FP analysis/signals, `data/superbru_filled_monaco-2026.png`, `graphify-out/`, and `test-results/`.
api4d ago
Controller verification for MC-4872:
- Verified commit bad3498 is on origin/master.
- Re-ran focused tests from /home/lucienne/workspace/projects/f1-predictor:
- PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=. python3 -m pytest -q tests/test_model_fp_weighting.py tests/test_next_race_fp_quality.py tests/test_scoring_correctness.py tests/test_openf1_fp_summary.py tests/test_fastf1_cache_bypass.py
- PYTHONDONTWRITEBYTECODE=1 python3 -m py_compile pipeline/05_model.py
- Result: 33 pytest tests passed; py_compile passed.
- Confirmed no Superbru submit path was run and canonical prediction artifacts were not rewritten.
- Existing local dirty/generated files remain unrelated and uncommitted.
Closing as done.
Controller decision
api4d ago
Mobile visual gate evidence for MC-4872:
APPROVED mobile verdict: 375px F1 dashboard smoke after the circuit-sensitive FP weighting change; no obvious visual failure.
Notes:
- This ticket changed model weighting code, not dashboard layout.
- Chrome DevTools emulation reported document width 375px.
- Screenshot file: /tmp/mc4872-mobile-375.png
- Command: python3 /tmp/mc4872_cdp_screenshot.py
luci-board-manager4d ago
Visibility-only queue hygiene: cleared stale queued_messages row 1900 (`Ticket created`) after verifying MC-4872 is already done with controller evidence. No MC pickup/runtime endpoint was called.