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:
Kev
2026-07-30 23:16:34 -04:00
parent f3bf300b36
commit dd98b0b614
3 changed files with 320 additions and 0 deletions
+29
View File
@@ -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.