S6 (a1): display — the full picture under the grammar
- specs/ROW-GRAMMAR.md: the row grammar law (slot order, color law, mark
law, mobile stacking, no-truncation), locked by tests/unit/rowGrammar.
StatStrip violations fixed: MovementChip before the grade (market
context before model output); ViabilityChips after the archetype
(identity is one contiguous run).
- Line-movement sparklines: intradayRefreshService.trackHistory captures
real {t,line} points per grade (seeded with the lock, deduped when
flat, capped 24) inside the snapshot write-back; StatStrip.LineSparkline
renders at >=3 points (green toward / amber against / dim flat).
- Last-10 dot strips: services/last10Dots (streaksService accessors) ->
/api/snapshot/:sport attaches last10_dots from rosterlogs:{sport};
StatStrip.DotStrip renders vs the LOCKED line, newest first.
- CLV distribution: getModelAggregate emits clv_distribution (7 signed
buckets, outliers clamped) only past the centralized n>=20 gate;
ledger MODEL header renders the bar strip.
- Global search: SearchModal (cmd-K via GlobalHosts + window.__search),
players via /api/players/search per sport + static lib/teams.js
(soccer deliberately absent); Nav search icon + Search first in the
mobile More sheet. Explore tab untouched.
- Landing LCP: fade-up floored at opacity .6 (hero h1 contentful on
first frame, S33 visible-floor rule) + IBM Plex Mono preload:false
(4 decorative font files off the slow-4G critical path).
2654 -> 2698 tests (226 suites) green; web build exit 0.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -207,6 +207,24 @@ The system's track record — settled grades vs real results. Written by
|
||||
'push', actual:number }` once the game is final. `AccuracyBadge` +
|
||||
`StatStrip.OutcomeChip` render these. Frontend proxy: `web/src/app/api/accuracy`.
|
||||
|
||||
### S6 (A1 board) — display enrichments on the same payloads
|
||||
- `GET /api/snapshot/:sport` grades may also carry:
|
||||
- `last10_dots: boolean[]` — last ≤10 games vs the LOCKED line, newest
|
||||
first (server-side from `rosterlogs:{sport}` via `services/last10Dots`).
|
||||
Absent when there's no real log / no accessor for the stat.
|
||||
- `history: [{ t: string, line: number }]` — REAL captured line points
|
||||
from the intraday refresh (seeded with the locked line, deduped when
|
||||
flat, capped 24). The StatStrip sparkline renders only at ≥3 points.
|
||||
`slateAdapter.buildPlayerStripsFromProps` threads both onto `StripProp`
|
||||
(`last10Dots` / `history`); `StatStrip.DotStrip` + `LineSparkline` render.
|
||||
- `GET /api/ledger/model` `aggregate` may carry `clv_distribution:
|
||||
[{ label, min, max, side:'faded'|'flat'|'beat', count }]` — seven ordered
|
||||
buckets over settled signed CLV ([-2,-1) … (1,2], outliers clamped into
|
||||
the edge buckets). **null below the n≥20 gate** (the gate lives in
|
||||
`getModelAggregate`, nowhere else). Ledger MODEL header renders the strip.
|
||||
- Global search: `window.__search()` opens the ⌘K SearchModal (players via
|
||||
`/api/players/search` per sport; teams from the static `web/src/lib/teams.js`).
|
||||
|
||||
## 8. Public ledger profiles (`src/routes/profiles.js`, A1 Session 10)
|
||||
|
||||
Strava-for-betting v1. Table `public_profiles` (migration 022 — apply
|
||||
|
||||
Reference in New Issue
Block a user