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:
@@ -182,23 +182,14 @@ describe('M1 — mobile foundation is wired (structural, not visual)', () => {
|
||||
describe('M4 — mobile structural rules locked (source, not visual)', () => {
|
||||
const css = read('app/globals.css');
|
||||
|
||||
it('the flat EDGE BOARD is the mobile board; game cards are desktop-only', () => {
|
||||
// Design screen 01: <768px shows the flat edge-ranked board, ≥768px keeps
|
||||
// the game-grouped cards.
|
||||
expect(css).toMatch(/\.edge-board-mobile\s*\{\s*display:\s*none/);
|
||||
expect(css).toMatch(/@media\s*\(max-width:\s*767px\)[^]*?\.edge-board-mobile\s*\{\s*display:\s*block/);
|
||||
expect(css).toMatch(/\.edge-board-desktop\s*\{\s*display:\s*none\s*!important/);
|
||||
it('the fabricated mobile edge board is REMOVED — phones show the real game cards', () => {
|
||||
// Honesty pass: MobileEdgeBoard's edge% feed was a miscalibrated placeholder
|
||||
// (it masked any value >40% to "—"). It renders nowhere until a real edge
|
||||
// feed exists. The Slate no longer imports or renders it; mobile now shows
|
||||
// the same real game cards as desktop.
|
||||
const slate = read('components/Slate.tsx');
|
||||
expect(slate).toMatch(/MobileEdgeBoard/);
|
||||
expect(slate).toMatch(/flattenToEdgeBoard/);
|
||||
});
|
||||
|
||||
it('the mobile edge board renders matchup chips + tier grade + one hero edge%', () => {
|
||||
const b = read('components/vyndr/MobileEdgeBoard.tsx');
|
||||
expect(b).toMatch(/TeamChip/); // Rev 3 matchup chips
|
||||
expect(b).toMatch(/GradeBadge/); // tier-colored grade
|
||||
expect(b).toMatch(/var\(--miss\)/); // negative edge = red by sign
|
||||
expect(b).toMatch(/rampOpacity/); // Design's ranked opacity ramp
|
||||
expect(slate).not.toMatch(/MobileEdgeBoard/);
|
||||
expect(slate).not.toMatch(/flattenToEdgeBoard/);
|
||||
});
|
||||
|
||||
it('document still never scrolls sideways on phones (overflow contained)', () => {
|
||||
@@ -290,12 +281,14 @@ describe('P1-7 — edge board guards the broken edge placeholder', () => {
|
||||
});
|
||||
});
|
||||
|
||||
// ── P1-8 lock — Compare verdict makes no unverifiable "tonight" claim ────────
|
||||
describe('P1-8 — Compare verdict is time-honest (form, not a phantom game)', () => {
|
||||
// ── P1-8 lock — Compare ships NO fabrication (honest in-development state) ────
|
||||
describe('P1-8 — Compare carries no hardcoded grades or phantom verdict', () => {
|
||||
const compare = read('app/compare/page.tsx');
|
||||
it('the sample verdict never claims "tonight" (NBA has 0 games in July)', () => {
|
||||
it('no sample players, no fake verdict, no "tonight" claim — honest in-dev', () => {
|
||||
expect(compare).not.toMatch(/edge tonight/i);
|
||||
expect(compare).toMatch(/on current form/i);
|
||||
expect(compare).not.toMatch(/Joki|Wembanyama/);
|
||||
expect(compare).not.toContain('VYNDR VERDICT');
|
||||
expect(compare).toMatch(/IN DEVELOPMENT/i);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user