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:
@@ -157,9 +157,13 @@ describe('deriveValueState — the single verdict function', () => {
|
||||
expect(vs.deriveValueState({})).toBe(vs.STATES.REFUSAL);
|
||||
});
|
||||
|
||||
it('a missing model price or EV withholds the verdict — never asserts NO EDGE', () => {
|
||||
expect(vs.deriveValueState({ ...base, model_odds: null })).toBe(vs.STATES.QUARANTINE);
|
||||
expect(vs.deriveValueState({ ...base, ev_pct: null })).toBe(vs.STATES.QUARANTINE);
|
||||
it('a missing model price or EV → NO_MODEL (absent leg), never NO EDGE and never QUARANTINE', () => {
|
||||
// Honesty pass: never-computed is NOT a deliberate quarantine, so it must
|
||||
// not wear QUARANTINE's "we suppressed / a leg is poisoned" copy.
|
||||
expect(vs.deriveValueState({ ...base, model_odds: null })).toBe(vs.STATES.NO_MODEL);
|
||||
expect(vs.deriveValueState({ ...base, ev_pct: null })).toBe(vs.STATES.NO_MODEL);
|
||||
// A real quarantine_reason still quarantines (distinct from never-computed).
|
||||
expect(vs.deriveValueState({ ...base, model_odds: null, quarantine_reason: 'x' })).toBe(vs.STATES.QUARANTINE);
|
||||
});
|
||||
|
||||
it('a LOCKED model leg is neither quarantine nor refusal', () => {
|
||||
@@ -174,7 +178,7 @@ describe('valueStateColor — green appears on exactly one state', () => {
|
||||
expect(vs.valueStateColor(vs.STATES.VALUE)).toBe('var(--g-a)');
|
||||
const others = [
|
||||
vs.STATES.PRICED_OUT, vs.STATES.NO_EDGE, vs.STATES.QUARANTINE,
|
||||
vs.STATES.REFUSAL, vs.STATES.NO_VERDICT_LOCKED,
|
||||
vs.STATES.REFUSAL, vs.STATES.NO_VERDICT_LOCKED, vs.STATES.NO_MODEL,
|
||||
];
|
||||
for (const s of others) expect(vs.valueStateColor(s)).not.toBe('var(--g-a)');
|
||||
});
|
||||
@@ -263,11 +267,13 @@ describe('PriceTriplet component', () => {
|
||||
|
||||
// ── 6b. CONSUMERS MUST FORWARD THE LOCK FLAG ─────────────────────────────
|
||||
describe('a gated model leg never wears quarantine copy', () => {
|
||||
it('deriveValueState separates GATED from WITHHELD', () => {
|
||||
it('deriveValueState separates GATED (locked) from NEVER-COMPUTED — neither is QUARANTINE', () => {
|
||||
const gated = { book_odds: -153, fair_odds: -129, model_odds: null, ev_pct: null, model_price_locked: true };
|
||||
const withheld = { book_odds: -153, fair_odds: -129, model_odds: null, ev_pct: null };
|
||||
const neverComputed = { book_odds: -153, fair_odds: -129, model_odds: null, ev_pct: null };
|
||||
expect(vs.deriveValueState(gated)).toBe(vs.STATES.NO_VERDICT_LOCKED);
|
||||
expect(vs.deriveValueState(withheld)).toBe(vs.STATES.QUARANTINE);
|
||||
// Honesty pass: a never-computed model leg is NO_MODEL (absent), NOT quarantine
|
||||
// — it must not claim we "suppressed" a price we never produced.
|
||||
expect(vs.deriveValueState(neverComputed)).toBe(vs.STATES.NO_MODEL);
|
||||
});
|
||||
|
||||
it('LiveHeroProp forwards model_price_locked (live bug: it did not)', () => {
|
||||
|
||||
Reference in New Issue
Block a user