← All findingssource · memory/project_wnba_backlog.md
Queue as of 2026-07-08 (everything from the audit arc that ISN'T shipped). Shipped work: see project_wnba_audit_2026_07 (Tier 0/1), project_grade_v2_system, project_wnba_week_counterfactual.
Code items, ordered by evidence-backed value:
- Late WNBA fanout slot (grading-service): Pinnacle quotes WNBA near tip; the 18:00Z fanout starves disciplined/both_agree (~1 pick/week). Add T-60min per-game or ~22:00Z slot. Counterfactual-proven volume unlock.
priced_lineedgesformula (grading-service): system_lineedges restricted to book-priced exact lines went 64.1% [57.3,70.3] +17.1% ROI (n=206) in the week replay — the strongest signal found. Own formula_id → forward CLV before trusting.- [internal detail removed]
- Offline heuristic experiments re-run (sports-scout-service, WORKTREE): died mid-task. E1 EB-shrinkage/decay vs 0.35/0.10/0.55, E2 minutes-ratio adjustment, E3 rest ablation. Tune first half, lock, confirm second half. Evidence-only.
- Beneficiaries recalc rebuild (SDS, ~2-3d +1-2d): adopt projections-engine's algorithm (boxscore-derived absence, both-played baseline, 10 stats) into SDS for NBA+WNBA with season param, team/current-roster endpoint, multi-absence handling, Bayesian shrinkage (WNBA pair samples are 2-6 games). Then PE cuts over to SDS reads. Current SDS impl is prod-empty + baseline-bug — see STATUS header in sport-data-service docs/migration/phase-5d-beneficiaries.md. Enables WOWY.
- Scout batch injury join (sports-scout-service): 7.9% of board picks were DNP players last week (injuries stubbed in batch.py). Join SDS injuries at generation, drop Out/Doubtful.
- NBA+MLB deploy gates have the same unstamped-ratchet pattern (nba/batch.py:805-810, mlb/batch.py:483-486; MLB also auto-deploys first model with no floor).
Old PRs adjudicated 2026-07-08: SDS#2 amended+merged (historical record w/ defects header). Recommended CLOSE (awaiting user): data-hydrator#1 (stale vs cutover plan), data-hydrator#2 (depth-blocks area, deprioritized by A/B evidence, conflicts with 7/7 assembler changes), SDS#3 (lineup-projector plan superseded by direct RotoWire ingest).
User console/env items (can't be done from CLI):
- [internal detail removed]
Standing verification habits: scorecard at nightlypicks.com/scorecard is the daily health check (formula_silent + side_skew + grade_inversion alarms live). Judge new formulas only on their own forward CLV bucket (n≥200-300), never post-hoc across 33 buckets.
Re-audited live 2026-08-24/25 — most of the above is STALE
Verified against production, not memory:
- Under-wall: FIXED. Nightly tiers are now
{core: priced_lineedges, list: disciplined_board}— scout_ml is gone. 8/24 served 16 core + 62 list at 65% OVER / 35% under. TheNIGHTLY_FORMULAS_WNBAenv item is done. - Late fanout slot: ALREADY SHIPPED.
fanoutHoursUTC()defaults to TWO runs, 18:00 and 22:00 UTC. Backlog item #1 is closed. priced_lineedgesis live as the served core tier (item #2 closed).
THE open WNBA question (measured 7/07–8/23):
| formula | picks | /day | hit | mean CLV |
|---|---|---|---|---|
| both_agree / disciplined | 26 | 1.6 | 65.4% | +5.29c |
| priced_lineedges (served) | 500 | 29.4 | 60.8% | +1.14c |
The best CLV signal is the most starved — 4.6x the CLV per pick at 1/18th
the volume. n=26 against a trustworthy_threshold of 100, accumulating at
1.6/day, so it cannot reach significance before the season ends. Deciding
whether to unlock its volume (and how) is the highest-value WNBA call left.
both_agree = pinn_devig AND system_lineedges agree, so it is bounded by
Pinnacle's coverage (~8 markets, posts ~19:41Z).
FIXED 2026-08-24 (grading f2e46ba): formula_silent could not tell BROKE from
SELECTIVE. It asked "wrote at all in prior 7d, nothing today" — so the two
1.6/day formulas went red ~2 days in 3, on the alert that once hid a
season-long fanout break. Now requires writing on ≥5 of the prior 7 days;
active_days_7 is exposed per formula. WNBA alarms went 2 red → 0.
both_agree: ANSWERED 2026-08-24 — it cannot be exploited this season
Asked "how do we take advantage of both_agree/disciplined". Measured the whole funnel. The answer is you can't yet, and 65.4% is not a finding.
At n=26, the 95% Wilson interval is [46.2%, 80.6%] — 34.4pp wide. It contains priced_lineedges' 60.6% (so it is statistically indistinguishable from the formula already served) AND it contains 52.4% (so it cannot rule out being a losing formula). Do not size bets on it. Do not build a tier around it.
The funnel (29 days, 7/18–8/23):
| stage | n |
|---|---|
| priced_lineedges picks | 822 |
| pinn_devig picks | 152 (5.2/day) |
| …share a player+prop | 51 (34%) |
| …also agree on SIDE | 30 (59%) |
| …also agree on LINE | 25 (0.9/day) |
The ceiling is pinn_devig's own scarcity, which is Pinnacle coverage — it
prices ~8 WNBA markets. both_agree is the intersection of pinn_devig and
system_lineedges, so it can never exceed the smaller parent.
Two volume unlocks TESTED and REJECTED:
- Recompose from priced_lineedges instead of system_lineedges (looked like a 5x unlock on a single day — line-mismatch losses). At 29-day scale it gives 25 picks / 64.0% / +4.79c — identical to today. The one-day result was noise.
- Widen the market side with consensus_devig → adds 7 picks at 2-5 (28.6%), diluting 64.0% → 56.2%. No evidence it helps.
At 0.9/day it needs 83 more days to reach the trustworthy_threshold of 100. The WNBA season does not have that.
What TO do:
- Surface the overlap as a flag on the already-served board — free, no volume requirement, and it is confluence the reader currently cannot see.
- Carry it into NBA (October). Same formula, 11 priced markets vs WNBA's 8, ~4-5x the games. n=100 in weeks, not a season. That is when it becomes a real decision.
- Watch
priced_lineedges_flooredtoo: 23-9 / 71.9%, CI [54.6, 84.4], n=32 — same underpowered shape, and it already carries the validated 1.70 floor. - Do NOT lower thresholds to manufacture volume; the filter IS the signal.