d242b11b4b
PROMISE-AUDIT.md: every /pricing claim → verified/built/reworded. BUILT (was vapor): alt line ladder + edge ranking (same-features regrade at shifted lines, Desk-gated at the API), quarter-Kelly (engine quantile P(win) x real captured odds — either missing → no sizing), free-tier kill-condition locked previews. FIXED (was false): analyst 15/day cap vs the Founder 'Unlimited reads' promise → analyst unlimited; every '40+ factors' claim (real count: 22 named features) reworded truthfully in 7 files. VERIFIED: cascade alerts (real, wired), phi correlation, leg history, cross-book comparison, WC soccer, real-time feed. Locked by tests/unit/promiseAudit.test.js. Jest now ignores .claude/worktrees (parallel agents' suites no longer leak into runs). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
4.5 KiB
4.5 KiB
PROMISE-AUDIT — every /pricing claim, verified / built / removed
Session 62 (A1 board, Session 1). No claim survives unverified. Locked by tests/unit/promiseAudit.test.js.
| Claim (pricing page) | Verdict | Evidence |
|---|---|---|
| Free: 3 reads per day | VERIFIED | tiers.js free.scans_per_day=3; limiter enforces; Settings meter reads the same store |
| Free: Grade letter + projection | VERIFIED | Grade + real MODEL projection (S58 — never the line); refusals when no projection |
| Free: Cross-book line comparison | VERIFIED | GAME LINES 8-book table + BestLinesPanel; per-prop best-book marker shipping in S3 |
| Free: Confidence indicator | VERIFIED | Confidence % on card, strips, leaders |
| Free: Factor analysis (blurred) | BUILT/REWORDED | Copy now "3-signal preview" (the truth); free gets exactly 3 signals |
| Free: Kill conditions (blurred) | BUILT | Copy now "locked preview"; free NOW renders code-only teaser chips ("TRAP — upgrade to see details") instead of silence — gradeAdapter + tierGating locked entries |
| Free: Alt line ladder (locked) | VERIFIED | Desk-gated at the API (new alt_line_ladder capability); free card shows the DESK-tagged section only when data present (never for free) |
| Africa: 10 reads per day | VERIFIED | tiers.js africa.scans_per_day=10 |
| Analyst: Full factor analysis (40+ signals) | REWORDED | Real named-feature count is 22 (+trap/consistency signals) — "40+" was unverifiable. Now "every signal the model weighs" in ALL 7 places (pricing, help, about, upgrade, both cards). Numbers only when true |
| Analyst: Kill conditions surfaced inline | VERIFIED | tierGating kill_conditions_detail; card renders reasons |
| Analyst: Grade + reasoning visible | VERIFIED | tierGating passthrough |
| Analyst: World Cup soccer intelligence | VERIFIED | /api/odds/soccer/wc, soccer tab, soccer in ACTIVE_SPORTS (July = WC window) |
| Analyst: Cascade alerts | VERIFIED/REWORDED | REAL: cascadeService.detectScratches runs on every odds fetch → cascade_alerts → NotificationBell. Copy tightened to "Scratch cascade alerts when players are pulled" (what it actually does; lineup-shift regrades are a future board) |
| Analyst: Parlay leg history with grades | VERIFIED | Parlay scans persist pick rows w/ grades; /api/props/joint-history (analyst+) serves joint outcomes |
| Analyst: Sportsbook deep links | VERIFIED | Scan hand-off links (noopener); S3 upgrades to per-book BOOK IT builder |
| Founder: Unlimited reads | BUILT | Was FALSE (analyst capped 15/day while card + Nav ∞ badge promised unlimited). analyst.scans_per_day → Infinity; Desk differentiates on capability, not rationing |
| Desk: Alt line ladder + edge ranking | BUILT | Was VAPOR (frontend existed, no producer). analyzeViaEngine1 now grades the SAME feature vector at ±0.5/±1 lines (zero extra I/O), each rung carries grade + edge%, sorted by edge = the ranking. API-gated Desk-only |
| Desk: Quarter-Kelly sizing | BUILT | Was VAPOR (marketing copy only). src/utils/kelly.js: quarter-Kelly from the engine's quantile P(win) (game-log based) × the REAL captured book odds — either missing → no sizing, never a default. Rendered on the Desk card ("QTR-KELLY 1.4% of bankroll · at -115") |
| Desk: Real-time intelligence feed | VERIFIED | Ticker (snapshot exhaust) + 20-min intraday refresh (STEAM/VALUE/MOVE) + live slate strip |
| Desk: Parlay correlation analysis (phi) | VERIFIED | parlayService numeric correlation + S28 phi matrix; joint-history endpoint |
| Desk: Consensus vs model comparison | VERIFIED (thin) | MODEL vs LINE vs multi-book board on every read; lineDiscrepancyDetector exists server-side. Honest note: a labeled multi-book consensus average is a small future upgrade, the comparison itself is real |
Deviations made to keep the page honest
- All "40+ factors" claims removed product-wide (7 files) — replaced with wording that is true at any factor count.
- Analyst reads: 15/day → unlimited (the promise wins; capacity cost is nil — reads are cached compute).
- "Cascade alerts" reworded to the shipped behavior (scratch cascades), not the aspirational one.
- Free kill-conditions changed from hidden → locked preview to match "(blurred/locked)" copy.
What a paying user gets that didn't exist this morning
Alt line ladder with edge ranking · quarter-Kelly sizing on real prices · truly unlimited analyst reads · free-tier kill-condition previews.