diff --git a/specs/design-reference/HANDOFF.md b/specs/design-reference/HANDOFF.md index 3714437..4802cd4 100644 --- a/specs/design-reference/HANDOFF.md +++ b/specs/design-reference/HANDOFF.md @@ -1,5 +1,11 @@ # VYNDR VISUAL SYSTEM — CODE HANDOFF +## SESSION 3 (Jul 22) — Scanner surfaces S6 + S7 +`Vyndr Scanner States.dc.html` — spec for the two scanner states Code flagged missing (converges at the scanner-nudge build order). +- **S6 scan empty (marketless scan)**: read-card frame, ZERO market numbers (no empty triplet frame — it doesn't render), chip `NO MARKET` in the blue boundary channel (`rgba(106,147,200,.12)` bg / `.34` border / text `#8FB2DE` — same tokens as PRICED OUT), dashed blue void box (refusal frame shape, blue not red: nothing failed), copy "no live market for this line" (never "coming soon"). Path forward built in: green primary CTA to tonight's board with live priced-prop count; player-specific path (`HERBERT · 3 PRICED PROPS ▸`) leads when the player is on the slate. Mobile 390: both paths 44px. +- **S7 priced-line display (the nudge)**: strip under the scan field showing ONLY genuinely-priced lines per exact player+stat. Case A `NONE PRICED` is the DEFAULT/common case — quiet dashed blue box + "we price these for [player]" stat chips (with amber fair previews). Case B priced: 44px rows `o 27.5 · BOOK −114 · ◆ FAIR −105 · OPEN READ ▸`, one tap to the real triplet. Case C off-slate: text-tokens-only fact line, no blue, no chips, stops. Typed-line mismatch: query text preserved, `o 30.5 ISN'T PRICED` blue fact line (not an error), nearest priced line = same player+stat only. +- New color law: **blue #8FB2DE = the boundary channel** — the system being honest about what it can't hand you (edge priced out, no market, line not priced). Distinct from red REFUSAL (model decision) and amber QUARANTINE (model leg suppressed). + ## SESSION 2 (Jul 17) — Offseason & Intelligence expansion Two new design files, same package format. System law unchanged (tokens, grade colors, glow-A-only, THE VERB IS "READ"). diff --git a/specs/design-reference/Vyndr Scanner States.dc.html b/specs/design-reference/Vyndr Scanner States.dc.html new file mode 100644 index 0000000..4bf8e00 --- /dev/null +++ b/specs/design-reference/Vyndr Scanner States.dc.html @@ -0,0 +1,305 @@ + + + + + + + + + + + + + + + + +
+ + + +
+ THE WIRE + + --:--:-- + Scanner spec open — honest absence is a designed state, not a bug. + LOG ▸ +
+ +
+ +
+
VYNDR · SCANNER SURFACES · S6 + S7
+

Honest absence, designed.

+

Two scanner states flagged missing from the bundle. S6 — the marketless scan: what a read card renders when the board never priced that line. S7 — the priced-line display: the scanner surfaces the board's real lines so nobody free-types a line that doesn't exist. Both extend the boundary channel: blue is the system being honest about what it can't hand you.

+
NO FABRICATED MARKETS · ABSENCE IS THE DEFAULT CASE · EVERY DEAD END POINTS SOMEWHERE REAL
+
+ + +
+ S6 +
SCAN EMPTY STATE · MARKETLESS
The user scanned a prop the board never priced. No market numbers render — there is no market. The card says so plainly, then hands the user tonight's real board. Help, never a wall.
+
+ +
+ +
+ + +
+
+ ANATOMY + READ-CARD FRAME · ZERO MARKET NUMBERS · PATH FORWARD BUILT IN +
+
+
+
Herbert o 287.5 Pass Yds
LAC · SCANNED · JUL 22, 2026
+ NO MARKET +
+
+
+
NO LIVE MARKET FOR THIS LINE
+
No book prices this exact line right now — so there's no vig to strip and no fair number to show. We won't invent a market that isn't there.
+
NO BOOK · NO FAIR · NO MODEL · NOTHING FABRICATED
+
+
+
+
WHAT WE PRICE NOW142 PROPS LIVE
+
+ TONIGHT'S BOARD ▸ + Herbert has 3 priced props on tonight's board — full triplets on each. +
+
+
+
CHIP · BLUE BOUNDARY CHANNEL rgba(106,147,200,.12) / BORDER .34 / TEXT #8FB2DE — SAME TOKENS AS PRICED-OUT · DASHED VOID BOX BORROWS THE REFUSAL FRAME BUT BLUE, NOT RED: NOTHING FAILED, THE MARKET JUST ISN'T THERE · GREEN RESERVED FOR THE ONE REAL PATH FORWARD (PRIMARY CTA LAW)
+
+ + +
+
+
STATE LAWS
+
+
01
Zero market numbers. No book, no fair, no model, no gauge at 0. An empty triplet frame is a lie — the frame doesn't render.
+
02
True copy only. "No live market for this line" — never "coming soon", never "check back". We don't promise markets we don't control.
+
03
Always a path forward. The card ends at tonight's board — with the live priced-prop count and, when the player is on the slate, their real priced props. A scan never dead-ends.
+
04
Help framing. "What we price now" — the product showing its inventory, never apologizing for what a book didn't post.
+
+
+
+
NOT THE SAME STATE AS
+
+
REFUSALMarket exists, our inputs are too thin to grade. Red — a model decision.
+
QUARANTINEMarket exists, model leg suppressed. Amber — book & fair still stand.
+
NO MARKETNo market exists at all. Blue boundary — nothing to price, nothing failed.
+
+
+
+
+ + +
+
MOBILE · 390 · SAME ANATOMY, 44PX PATHS
+
+
Herbert o 287.5 Pass Yds
NO MARKET
+
+
NO LIVE MARKET FOR THIS LINE
+
No book prices this line right now. We won't invent one.
+
+ HERBERT · 3 PRICED PROPS ▸ + TONIGHT'S BOARD · 142 LIVE ▸ +
+
BOTH PATHS 44PX · PLAYER-SPECIFIC PATH LEADS WHEN THE PLAYER IS ON THE SLATE, BOARD PATH OTHERWISE PROMOTES TO GREEN
+
+
+ + +
+ S7 +
SCANNER PRICED-LINE DISPLAY · THE NUDGE
As the user picks player + stat, the scanner shows the board's real priced lines — one tap to a real triplet instead of free-typing a line that isn't priced. Only genuinely-priced lines render. "None priced" is the common case and the default design, not an edge.
+
+ +
+ + +
+ THE STRIP · THREE CASES + CASE A IS THE DEFAULT — MOST PLAYER+STAT PICKS HAVE NO PRICED LINE +
+
+ + +
+
A · NONE PRICEDDEFAULT · COMMON CASE
+
+
Herbert·COMPLETIONS
+
+
NO PRICED LINE FOR THIS STAT
+
The board doesn't price Herbert completions tonight.
+
+
WE PRICE THESE FOR HERBERT
+
+ PASS YDS o 275.5 + PASS TD o 1.5 + INT o 0.5 +
+
+
Quiet, structured, never alarmed — the strip keeps its shape and offers the player's real priced stats as the way through. This state must look intentional at scale: it's most of the traffic.
+
+ + +
+
B · PRICED — ONE TAP TO THE TRIPLET
+
+
Jokić·POINTS
+
WE PRICE THESE LINES
+
+ o 27.5 + BK −114 + ◆ −105 + +
+
+ u 27.5 + BK −106 + ◆ −115 + +
+
+
Only lines the board genuinely prices — per exact player + stat. Each row is a 44px tap straight into the real triplet. Fair previews amber; green edges only when the read behind it is takeable.
+
+ + +
+
C · OFF-SLATE PLAYER
+
+
Skenes·STRIKEOUTS
+
+
NOT ON TONIGHT'S SLATE
+
No game, no markets, no prices to show.
+
+
+
Nothing renders — no chips, no suggestions, no dashed frame. Off-slate is quieter than case A: the strip states the fact in text tokens only and stops. No blue; there's no boundary to mark, just no game.
+
+
+ + +
+ IN CONTEXT · TYPED LINE ≠ PRICED LINE + THE NUDGE — REDIRECT TO THE REAL LINE, NEVER PRETEND THE TYPED ONE EXISTS +
+
+
+
+
+ + jokic o 30.5 pts +
+
+
o 30.5 ISN'T PRICEDNEAREST PRICED LINE ↓
+
+ o 27.5 PTS + BOOK −114 + ◆ FAIR −105 + OPEN READ ▸ +
+
The typed line stays visible in the query — the strip never rewrites the user's intent, it shows what's actually priced next to it.
+
+
+
"ISN'T PRICED" IS A FACT LINE, NOT AN ERROR — BLUE TEXT, NO RED, NO SHAKE · NEAREST LINE = SAME PLAYER + STAT ONLY, NEVER A DIFFERENT STAT PASSED OFF AS CLOSE
+
+ + +
+
MOBILE · 390 · STRIP UNDER THE SCAN FIELD
+
+
+ + herbert comp +
+
+
+
NO PRICED LINE FOR THIS STAT
+
+
WE PRICE THESE FOR HERBERT
+
+ PASS YDS o 275.5◆ −108 + PASS TD o 1.5◆ +102 +
+
+
+
ALL SUGGESTION ROWS 44PX · FAIR PREVIEW RIDES EVERY SUGGESTED STAT — THE FREE HOOK WORKS EVEN IN THE EMPTY STATE
+
+
+ +
+ THE SCANNER NEVER IMPLIES A LINE EXISTS WHERE IT DOESN'T + ABSENCE IS THE DEFAULT DESIGN · EVERY EMPTY POINTS TO A REAL PRICED PROP · BLUE = THE HONEST BOUNDARY +
+
+ +
+
+
+ + +