Honesty pass: remove every live fabrication (REMOVE/HIDE only, no feature cut)

Six live untruths corrected — no grade/snapshot/scorer/pipeline touched:
1. /compare — hardcoded Jokic A+/Wembanyama A + fake VERDICT replaced with an
   honest in-development state; removed from Nav + BottomTabBar (route still
   resolves, never the sample). Real two-player build is later.
2. Pricing — founder Desk $34.99→$44.99 (matches lib/checkout.js), Analyst
   $14.99; removed the struck $19.99/$44.99 "regular" numbers and DeskShowcase's
   stale $34.99. First-100 counter is real (ClaimMeter → Stripe countFounderSeats);
   no fake "first 50" desk claim added (no such counter exists).
3. FAQ "NexaPay" → Stripe (verified: live checkout is Next→Express→checkout.stripe.com).
4. FAQ + Features "Brier/CLV published from day one" removed (not surfaced yet) —
   returns when real. Backend Brier compute untouched.
5. MobileEdgeBoard removed from the Slate — its edge% feed was a miscalibrated
   placeholder (masked >40% as "—"); phones now show the real game cards.
6. Price triplet — never-computed model/EV now derives NO_MODEL (honest absent,
   MODEL "—" / "NOT PRICED", no verdict) instead of QUARANTINE's false "we
   suppressed our price / a leg is poisoned" copy. Fixes grade card + LiveHeroProp.

Full suite 3833 green, web build exit 0. Tests updated to the new honest contracts.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VsztNChZ7vEvSR61AuMhD1
This commit is contained in:
Kev
2026-07-27 06:04:00 -04:00
parent be6b4a2849
commit 6bc18d823c
16 changed files with 100 additions and 132 deletions
+13 -3
View File
@@ -52,6 +52,13 @@ const STATES = Object.freeze({
// Not a verdict — a display state. The model leg exists and is honest, the
// viewer just isn't entitled to it (free tier). Book + fair render normally.
NO_VERDICT_LOCKED: 'NO_VERDICT_LOCKED',
// Honesty pass: the model price was never COMPUTED (the EV layer isn't
// producing p_win/model_odds yet) — NOT quarantined, NOT locked. The model
// leg renders absent ('—'), book + fair stand, and NO verdict is claimed.
// This exists so a never-priced row never wears QUARANTINE's "we suppressed
// our own price / a leg is poisoned" copy, which asserts a deliberate act
// that did not happen.
NO_MODEL: 'NO_MODEL',
});
/** Strict numeric parse — `Number(null) === 0` is the fabrication bug this
@@ -107,9 +114,11 @@ function deriveValueState(row = {}) {
const model = num(row.model_odds);
const ev = num(row.ev_pct);
// Without a model price or an EV there is no verdict to render — treat as a
// withheld model leg rather than asserting "no edge" we didn't compute.
if (model == null || ev == null) return STATES.QUARANTINE;
// Without a model price or an EV there is no verdict to render. This is an
// absent leg, NOT a quarantine: we never computed it, so we must not claim we
// "suppressed" or "poisoned" it. Book + fair still stand; the model leg goes
// honestly absent and no verdict is asserted.
if (model == null || ev == null) return STATES.NO_MODEL;
// 3. The three real verdicts.
if (isValue(book, ev)) return STATES.VALUE;
@@ -130,6 +139,7 @@ function valueStateColor(state) {
case STATES.NO_EDGE:
case STATES.REFUSAL:
case STATES.NO_VERDICT_LOCKED:
case STATES.NO_MODEL:
default:
return 'var(--text-2)';
}