docs: D1 finish recorded (rationale real-or-absent, reveal once-on-view, 10/80 chip coverage)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QJs13VsyiSKYQP6rj3NNmc
This commit is contained in:
@@ -904,6 +904,32 @@
|
||||
> IntersectionObserver reveal (Phase 3.8) and team-gradient chips (Phase 4.10)** — both need the
|
||||
> System artboard's row anatomy ported, which is a larger job than the rest of D1-A. They stay in D1.
|
||||
|
||||
> ## 🧩 D1 FINISH SHIPPED 2026-07-31 — row-hover rationale · reveal · team-gradient chips
|
||||
> Additive frontend. **Backend untouched** (`git diff src/` empty). Scope held to the row anatomy
|
||||
> these three need — **no System-wide rebuild**.
|
||||
> **0.2 RATIONALE SOURCE — VERIFIED REAL.** Live snapshot grades carry **`reasoning` +
|
||||
> `kill_conditions_triggered`**; the summary is built by `analyzeViaEngine1` from the actual feature
|
||||
> vector (l5/l20 averages, gap to the line, home/away, opponent defensive rank, rest) and kills carry
|
||||
> real codes + reasons. **So the hover shows genuine grade truth** — not a placeholder.
|
||||
> **0.3 TEAM COLOURS — PARTIAL, DELIBERATELY.** The artboard defines a pair for **only 10 teams**
|
||||
> (BOS · CHC · CHI · DEN · LAD · MIL · MIN · NYY · PIT · SD), **lifted verbatim**; `lib/teams.js`
|
||||
> holds ~80. **The other ~70 are NOT invented** — a wrong team colour is a recognition error the user
|
||||
> reads as fact. Unknown teams get the **honest-neutral chip** (muted border, no colour claim), never
|
||||
> a guess and never a blank gap; `coverage()` reports the shortfall rather than hiding it.
|
||||
> **SHIPPED (3 pure, unit-locked modules):** **`lib/rowRationale.js`** — returns the real summary +
|
||||
> kills or **NULL**; **no generic fallback** (an empty hover is honest; a manufactured "why" is a
|
||||
> fabricated model explanation). A **locked/tier-gated reasoning is treated as ABSENT**, never
|
||||
> paraphrased or leaked; a kill with no reason explains nothing and is dropped. ·
|
||||
> **`lib/reveal.js`** — fires **ONCE then unobserves** ("react to truth, then rest"), **reuses D1-A's
|
||||
> `bootDelayMs`** so the 60ms stagger has ONE source of truth, and **reveals IMMEDIATELY when
|
||||
> IntersectionObserver is absent** (SSR/test) so a missing API can never hide real content;
|
||||
> reduced-motion handled by the existing CSS so the row is visible either way. ·
|
||||
> **`lib/teamChips.js`** — Rev-3 geometry (10px, 135deg, before the abbr, inside the row) + the
|
||||
> ranked opacity ramp **1/.86/.64/.48** so chips dim with their row; swap-ready for licensed logos.
|
||||
> **FLOOR: 318 suites / 3,961 tests green (15 new), web build exit 0.**
|
||||
> **⚠️ HONEST SCOPE NOTE: the three modules are built and unit-locked, but MOUNTING them into the
|
||||
> live row components is a follow-up** — the visual result belongs in the Chrome audit.
|
||||
|
||||
- **Redirect EXISTS + WIRED:** `closingCapture.buildCaptureRows`→`closing_captures` (append-only,
|
||||
provenance: captured_at/book/line_type/both-prices/missed_reason) via `intradayRefreshService:221`
|
||||
+ internal endpoint; `ledgerService.attachClosingProb`→`closing_prob` (de-vigs both raw sides,
|
||||
|
||||
Reference in New Issue
Block a user