diff --git a/specs/MASTER-PLAN.md b/specs/MASTER-PLAN.md index 4882a7d..31c17cc 100644 --- a/specs/MASTER-PLAN.md +++ b/specs/MASTER-PLAN.md @@ -153,3 +153,91 @@ a global engine · lookahead guard (lock-time fields only) · overfitting guard one split, prove another) · never mint A's without new information · aggregate proof is free, itemized judgment is paid · one canonical founder flag · atomicity by unique index, never a count · cache-bust every post-deploy check · verify-after-write. + + +--- + +# 9. WHAT'S ACTUALLY MISSING FOR THIS TO WORK AS A PRODUCT + +*The phases above say what is UNBUILT. This says what is missing for VYNDR to +genuinely do what it claims. Some of it is not a build, and one of it is not +fixable by us at all. Written plainly because a plan that only counts code is the +comfortable version.* + +## 9.1 🔴 THE CENTRAL ONE: there is no demonstrated edge yet + +Every edge measurement this session came back **null, negative, or unproven**: + +| measurement | result | +|---|---| +| served grade → outcome | **r ≈ 0.005**, and **inverted** (B 52.4% < C 56.9%) | +| p_win − fair_prob (3 formulations) | **negative in all three, both sports, both splits** | +| p_win alone, MLB, holdout | +0.165, **p ≈ 0.07 — not significant** | +| p_win alone, WNBA | **negative** — abstains | +| CLV / beat-close | **null by guard** — instrument not trustworthy | +| ROI by grade | likely an artifact of a meaningless letter | + +**The product's core claim — "our read is better than the market" — is not +currently supported by our own data.** Everything else in this plan is +scaffolding around that. Building all 23 orders and *not* closing this leaves a +beautifully-built product that doesn't do the one thing it sells. + +**What closes it:** not code. **Sample and honest iteration.** The instrument +fields are ~10 days old (442 rows). At ~90 decided MLB rows/week, a defensible +verdict is **6–10 weeks out**. That clock cannot be shortened by engineering, and +any attempt to shorten it is the fabrication this whole session has been removing. + +## 9.2 The projection — the actual engine — is thin and unvalidated +The grade's only real inputs today are **l5/l20 averages, an opponent rank, rest +and usage**. Similarity, archetypes, park/weather/platoon and the Bayesian layer +are all built and **not connected**. So VYNDR is currently a recent-form average +wearing an intelligence system's clothes. Phase 1 connects them — **but connecting +them is a hypothesis, not a guarantee.** They must each prove out on held-out data +or be left disconnected honestly. + +## 9.3 A one-sport product marketed as multi-sport +MLB is the only qualifying model. WNBA abstains on its own data. NBA and soccer +**don't even settle** — they grade into a void. Until Phase 5, the honest framing +is *"an MLB product with other sports in development."* The site should not imply +otherwise. + +## 9.4 No customers, therefore no feedback loop +**3 users, 0 paid.** The founder mechanism is built and race-proven, `/record` +exists, the gate works — and **none of it has met a real user.** Nothing here is +validated by usage: not the price, not the tier line, not whether the locked-shell +tease converts, not whether anyone wants this. **The first 10 real users will +teach more than the next 10 build orders.** + +## 9.5 No distribution — the biggest non-code gap +There is no acquisition path at all. The newsletter send is unscheduled, share +cards are unbuilt (blocked on the resolution tail), social proof has no fuel +(needs a real record), partner/affiliate links are all `enabled:false`. **A product +nobody sees cannot be validated regardless of how good the model gets.** This +appears in no phase above and belongs on the board as its own track. + +## 9.6 The read isn't actionable at the last mile +Push-to-book is a **teaser** — no affiliate is live, so a user who trusts a read +still leaves to place it manually. Bankroll guidance (Kelly) is Desk-gated. The +gap between *"here's a good read"* and *"I placed it"* is unclosed. + +## 9.7 Operational fragility +Single-box, single Redis (persistence is a Coolify setting, not app-controlled), +one cron. Settlement silently covers 2 sports. **Three credentials remain flagged +for rotation, including a Stripe live key that transited a chat transcript.** No +staging environment — every verification this session ran against prod. + +--- + +## THE HONEST SUMMARY + +**Built well:** the truth infrastructure. Honest empty states, refusal paths, +n-gates, the append-only ledger, the settled/live gate, the atomic founder cap. +**This codebase does not lie about what it knows** — that is rare and it is real. + +**Not yet true:** that the model beats the market. Not disproven either — *unmeasured +at adequate n*, on one sport, with a projection whose best layers aren't connected. + +**So the finish line is not 23 orders.** It is 23 orders **plus a verdict from +accrued data that we cannot rush** — and the discipline to report that verdict +honestly if it says the edge isn't there. The plan above builds the machine. Only +time and honest measurement decide whether the machine is right.