✓ 1 · Cloudflare Worker is live
square-union-3135.sbazikian.workers.dev is responding with the proxy
JSON. ESPN traffic is flowing through it. If you ever need to redeploy, paste
worker.js from this project into the worker editor.
◐ 2 · ESPN — transport OK, content sparse
Worker → ESPN works. The standings tile may show "reachable, no data"
(yellow) — that means HTTP 200 but 0 standings rows for the current year. NWSL hasn't
filled in 2026 yet on ESPN's feed. The ESPN team schedule probe tile reports
the actual event count. While it's empty, the dashboard runs on the seeded MD-8 snapshot.
◐ 3 · ASA — same pattern
Same transport path through the worker. If the tile is yellow, the season query
returned an empty array — usually means the season isn't started yet on their side.
Try season_name=2025 in the URL to confirm the connection works (the
endpoint will return last year's data fine).
✗ 4 · FBref blocked — needs non-CF host
CF-Worker IPs are challenged by FBref's CF Bot Fight Mode. Not solvable in the worker.
Redeploy the same worker.js on Vercel Edge, Deno Deploy,
or Render.com (different IP range), then point WORKER_BASE at
the new URL. Or skip FBref and use ESPN match summaries for player stats.
5 · ESPN match summaries (next wire-up)
When the schedule probe tile shows > 0 completed events, this becomes wireable:
/espn/apis/site/v2/sports/soccer/usa.nwsl/summary?event={eventId}
Pulls minutes, goals, assists, cards per player. Replaces seeded player data with
live numbers — no FBref needed.
✓ 7 · FBref-JSON loader is wired
The cowork-produced JSON drops into data/nwsl-{year}-fbref.json.
On every page refresh the dashboard auto-fetches it, merges into
teamStats / players / sdMatches, and the seed becomes fallback for
anything FBref doesn't carry (build splits, pressures, etc.). The
FBref JSON snapshot tile above tells you whether the file was found and
how many rows merged. While the file is missing, that tile shows ◐ awaiting file
(yellow) and the dashboard runs on seed.
6 · StatsBomb open-data caveat
Open-data NWSL is limited to the 2018 season. SD Wave didn't exist before 2022,
so it can't provide Wave-specific historicals. Useful only for league-baseline norms
(build %, pressure rates) or to validate event-parsing logic.