report: model architecture recovery map — the live grade uses 0 of 3 specced layers
Archaeology only; nothing built, reconnected, or promoted. The champion is two DISCONNECTED estimates: the letter is engine1's additive factor index (zero references to p_win or any probability in engine1.js), and p_win is probabilityEstimator's frequencyOver + 5 heuristic layers, computed after and merely attached. The live grade path never calls the Python service. The Python three-layer engine is NOT DEPLOYED — no python/pip in the Dockerfile; app.js only health-checks it. So Layers 1-2 never shipped. Layer 3 is wired BACKWARDS: grade_thresholds.json maps PROBABILITY->GRADE and the live JS reads it in reverse to manufacture confidence from an already-chosen letter. Per-sport market-efficiency scaling is specced-absent. Consequence stated plainly: every metric audited to date is on the shadow model, not the specced engine, which has never been measured. Sport boundary TESTED not asserted: a new sport on the live path is a ~10-file core edit with four documented silent-failure modes. Per-sport records DO exist (sports.mlb n=526/62% vs pooled overall n=937/58%, each n>=20 gated), but /api/accuracy ignores ?sport= and the pooled overall would absorb a new sport. Park x weather confirmed challenger-only; xwOBA and leash absent. Recovery map is dependency-ordered with MLB as the reference module. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QJs13VsyiSKYQP6rj3NNmc
This commit is contained in:
@@ -397,3 +397,32 @@ deploy boundary; the anonymous live order is *1. Brionna Jones (edge 29.4) · 2.
|
||||
**PAID FIELDS: NONE**. A bogus bearer token also yields no paid fields (fail-closed proven in prod).
|
||||
The board's proxy path now returns 10 props, so TOP GRADES **renders** instead of falling back to empty.
|
||||
The rendered board is client-side → tagged for the Chrome audit, not faked.
|
||||
|
||||
---
|
||||
|
||||
# MODEL ARCHITECTURE RECOVERY MAP — 2026-07-30 (report-only) → `specs/model-architecture-recovery-map.md`
|
||||
|
||||
**The live grade uses 0 of the 3 specced layers.** Every audited metric (calibration, CLV, skew audit,
|
||||
takeable floor, p_win→CLV r=0.375) is measured on the SHADOW model. Those findings stand — the shadow
|
||||
model served every real grade — but none are evidence about the specced engine, which has never been
|
||||
measured.
|
||||
|
||||
| Specced component | State |
|
||||
|---|---|
|
||||
| Layer 1 Similarity (`python/utils/similarity.py`, 101 ln) | BUILT · NOT WIRED · **NOT DEPLOYED** |
|
||||
| Layer 2 Bayesian (`python/utils/bayesian.py`, 320 ln) | BUILT · NOT WIRED · **NOT DEPLOYED** — and its "sport-agnostic math / per-sport parameters" claim is TRUE of the built code |
|
||||
| Layer 3 grade scale (`grade_thresholds.json`) | BUILT · **WIRED BACKWARDS** — the table maps PROBABILITY→GRADE; the live JS reads it in reverse to manufacture `confidence` from an already-chosen letter |
|
||||
| Per-sport market-efficiency scaling | **SPECCED-BUT-ABSENT** |
|
||||
| Live champion (`engine1` + `probabilityEstimator`) | BUILT · WIRED — but the letter is a factor-index with **zero probability input**, and `p_win` is computed separately and never feeds it |
|
||||
|
||||
**The Python engine is not in the deploy image at all** (no python/pip in `Dockerfile`; `app.js` only
|
||||
health-checks it). **The sport boundary is NOT clean on the live path** — adding a sport is a ~10-file
|
||||
core edit with four documented silent-failure modes, so "make a sport a module" is itself a prerequisite
|
||||
build. **Per-sport records DO exist** (`sports.mlb` n=526/62% vs pooled `overall` n=937/58%, each with
|
||||
its own n≥20 gate) — the rule to enforce is that a new sport renders `sports.{sport}`, never `overall`.
|
||||
**Park×weather is a CHALLENGER, not the champion** ("measured, never served"); xwOBA and bullpen-leash
|
||||
are absent entirely.
|
||||
|
||||
Recovery is dependency-ordered in the map: decide the grading basis → pick a runtime (recommend porting
|
||||
Bayesian to Node) → wire Layer 2 → reconnect Layer 3 forward → Layer 1 → per-sport efficiency →
|
||||
challenger promotion → sport-as-module → NFL/CFB. MLB is specced as the reference module.
|
||||
|
||||
Reference in New Issue
Block a user