Files
vyndr/PROMISE-AUDIT.md
builtbykev d242b11b4b S1 (a1): feature-promise audit — no claim survives unverified
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>
2026-07-11 14:24:41 -04:00

4.5 KiB
Raw Permalink Blame History

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

  1. All "40+ factors" claims removed product-wide (7 files) — replaced with wording that is true at any factor count.
  2. Analyst reads: 15/day → unlimited (the promise wins; capacity cost is nil — reads are cached compute).
  3. "Cascade alerts" reworded to the shipped behavior (scratch cascades), not the aspirational one.
  4. 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.