OpenCast v1.1.0
New: Engine Page
A dedicated Engine Signals page analysing Stockfish evaluation vs. human
performance across 73 openings.
- Human vs Engine Win Probability — horizontal diverging bar chart
(pure CSS, zero-dependency) showing delta between human win rate and
Stockfish depth-20 prediction, sorted by absolute delta. Teal = human
outperforms, pink = engine outperforms. Inline ±pp value labels. - Greatest Engine–Human Gaps — side-by-side Top 20 tables for each
direction. Clicking any row navigates to the opening detail page. - Move Lines Driving Trends — sortable table of individual move
continuations with the largest 12-month shift in win rate or popularity.
ECO and opening name cells link toopening.html?eco={ECO}. SAN moves
rendered as monospace chips. - Structural Break Events — Plotly scatter plot of regime change
detections across ECO families (A–E), dot size scaled by absolute
centipawn evaluation. Filtered top < 0.01(Chow test) and one
breakpoint per opening (most significant only) to prevent false-positive
flooding. Restyled for OpenCast dark theme.
Updated: Families Page
- Replaced flat table layout with a responsive card grid (3-col desktop,
1-col mobile). - Each card surfaces: tier chips, average win rate, min–max range as inline
subtitle, trend counts, engine gap chip with average delta, forecast
confidence breakdown, regime change count, and top outlier link. - Card gradients and win-rate CSS bar chart aligned to actual data.
- Added Show sparkline toggle per card — 12-month server-rendered
Plotly line with dynamic Y-axis domain (30% padding above/below data
range). Sparkline delta annotation added. - Added Compare Families panel — overlaid 24-month line chart with
per-family toggle buttons. - Summary metrics bar: fourth tile Avg Engine Gap added.
- AVG WIN RATE tile: range now shown as inline subtitle
(min% – max%), replacing disconnected side column.
Dashboard Reliability (PR #51)
- Families sparklines fixed: Plotly now loaded in page
<head>to prevent
render race on expand. - CSS win-rate bar chart values aligned with card actuals.
- Dashboard thresholds (low-confidence floor, min games) driven from
config.jsoninstead of scattered hardcoded values. latest_tracked_monthfield added to serialized data; move stats panel
shows honest lag caption when move-line data trails actuals.
Pipeline: 48-Month Tracking Window
max_tracked_months=48enforced across ingest, timeseries, CI fetch,
and dashboard serialization via sharedmonth_windowhelpers.- Prevents unbounded time-series growth as monthly data accumulates.
- CI fetch step respects the window — older raw JSON files outside the
48-month window are no longer fetched or staged.
Data
- June 2026 Lichess data ingested via
update.ymlworkflow run (2026-06-11). - Cron schedule adjusted to run on the 10th of each month to ensure
Lichess indexes the previous month fully before fetch. - Forecasts, engine delta, and move-line trends updated for all 498 ECO
codes through 2026-05. - Findings report regenerated (2026-06-11).
Infrastructure
.cursor/rules/web-audit.mdcadded — eight-dimension dashboard review
rubric enforcing hierarchy, semantics, accessibility, and state handling
for inline HTML/CSS pages.opencast-spec.yamladded at repo root — OpenAPI 3.1 component schemas
forOpeningRecord,MoveLine, andFamilySummary. Schema-only
contract; no server paths.