docs: takeable tagging shipped, efficiency challenger blocked (board + state)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QJs13VsyiSKYQP6rj3NNmc
This commit is contained in:
@@ -569,6 +569,54 @@
|
||||
> input at all, so NFL passing yards and MLB total bases would receive the identical rule. Sequence:
|
||||
> probability grading (R1) → per-sport efficiency (R4) → then a new sport module.
|
||||
|
||||
> ## 🏷️ TAKEABLE TAGGING BUILT · EFFICIENCY CHALLENGER **BLOCKED** 2026-07-31 → `specs/takeable-tagging.md`
|
||||
> **Champion grade UNCHANGED — verified byte-identical by diff** (`src/services/intelligence/`,
|
||||
> `gradeSlateService`, `gradeAdapter`, `grade_thresholds.json` = zero diff). Additive tags only.
|
||||
> **🔴 PART A — THE EFFICIENCY CHALLENGER COULD NOT BE BUILT. Review Zero came back ABSENT on all
|
||||
> THREE inputs.** (0.1) efficiency scores **DO NOT EXIST** — zero occurrences of
|
||||
> `market_efficiency`/`marketEfficiency`/`efficiency_score` in `src/` or `web/src/`; `src/config/` has
|
||||
> no efficiency file (its one `0.80` is `providers.js WARN_PCT`, a quota warning). (0.2) base
|
||||
> thresholds **DO NOT EXIST** — no "MLB A:5% / NBA A:7%" table; **`engine1.js` has zero `edge`
|
||||
> references**, so the grade is not an edge-vs-threshold comparison at all. (0.3) **the ±0.05 additive
|
||||
> efficiency nudge DOES NOT EXIST** — searched the whole grade path; the only `0.05`s are
|
||||
> `featureCache.teammate_absence_bump` (a feature), a `bvp_advantage` matchup cutoff, and
|
||||
> `p*0.9 + 0.05` in `probabilityEstimator` (the `0.5×0.1` term of the shrink-toward-0.5). **There is
|
||||
> no additive efficiency application to replace.**
|
||||
> **WHY IT STOPPED RATHER THAN GUESSED:** the order requires a challenger differing from the champion
|
||||
> in EXACTLY ONE thing (multiplicative vs additive). There is no additive scaling to swap, no base
|
||||
> threshold to multiply, and **`engine1.js` has zero `sport` references** so market cannot reach the
|
||||
> grade. A threshold must exist FIRST — that is **R1 of `specs/full-output-grade-mapping.md`**, an
|
||||
> explicitly held separate order. Shipping R1+R4 together would make the Phase-3 delta report
|
||||
> **actively misleading**: the re-letter would be driven mostly by the switch to probability grading
|
||||
> while being presented to Kev as the efficiency fix. **(0.4) COVERAGE would sink it anyway** — the
|
||||
> spec names 5 scores; the live ledger has **11 markets** (MLB hits 376 · doubles 247 · total_bases 44
|
||||
> · stolen_bases 17 · earned_runs 6 · home_runs 4 · outs 2; WNBA points 246 · rebounds 156 · assists
|
||||
> 142 · threes 10) and **only MLB total_bases maps to a specced score**. MLB K's and NFL passing don't
|
||||
> appear at all. **9 of 11 markets have NO score**, so "all scored markets" can't be met without
|
||||
> inventing 9 numbers — fabricated calibration.
|
||||
> **✅ PART B — LEDGER TAKEABLE TAGGING SHIPPED (the deferred C2).** New
|
||||
> `src/config/takeableStandard.js`: `isLedgerTakeable(p) = p >= floor` — **FLOOR on the minus side,
|
||||
> UNCAPPED plus**. **🔴 Deliberately NOT `valueEngine.isTakeable`**: that is the −160..+200 PROMOTION
|
||||
> band ("may we hero it?"); this is the RECORD standard ("could a bettor have taken it?"). **A +400
|
||||
> prop is NOT promotable but IS takeable — both true at once**, and a test asserts the two diverge on
|
||||
> the plus side and agree at the minus floor so they can never quietly merge. **Absent price → `null`,
|
||||
> never `false`** (without the strict guard `Number(null) === 0` is ≥ −160 and a MISSING price would be
|
||||
> tagged takeable — fabricated data in the record). **The floor is POLICY, not derived, and is labelled
|
||||
> so everywhere** (C1 could not derive one: every bucket's 95% ROI interval contained zero, the curve
|
||||
> was non-monotone, and 661-2,285 rows/bucket are needed vs 8-71 actual). Each row stores
|
||||
> **`takeable_floor`** so a re-derivation can re-tag safely instead of guessing the standard.
|
||||
> **Migration 034 applied + tracked** (`takeable boolean`, `takeable_floor numeric`, partial index).
|
||||
> Forward tagging in `ledgerService` at row build; backfill in one statement.
|
||||
> **BACKFILL VERIFIED IN PROD: 1,254 rows → 1,246 tagged (781 takeable / 465 below floor), 8 NULL, and
|
||||
> `null_despite_price = 0`** — every priced row tagged, the 8 NULLs genuinely priceless. One distinct
|
||||
> floor (−160). **Settled 1,163 and graded 1,254 both unchanged** — no outcome, grade, or price touched.
|
||||
> **🚫 PART C — THE MODEL-VERSION BOUNDARY TAG WAS DELIBERATELY NOT APPLIED.** It is meant to separate
|
||||
> pre-fix (additive) from post-fix (multiplicative) grades — **no scaling change shipped, so no such
|
||||
> boundary exists**, and stamping one would mark a model transition that never happened: a fabricated
|
||||
> era in the permanent record. `src/config/modelEras.js` (S64) is its home the day a real one promotes.
|
||||
> **FLOOR: 312 suites / 3,890 tests green (8 new), web build exit 0.** Grade visuals auth-gated →
|
||||
> Chrome audit; this order changed nothing visual.
|
||||
|
||||
- **Redirect EXISTS + WIRED:** `closingCapture.buildCaptureRows`→`closing_captures` (append-only,
|
||||
provenance: captured_at/book/line_type/both-prices/missed_reason) via `intradayRefreshService:221`
|
||||
+ internal endpoint; `ledgerService.attachClosingProb`→`closing_prob` (de-vigs both raw sides,
|
||||
|
||||
Reference in New Issue
Block a user