Wave 1 (after L01) · Phase 4 groundwork · Spec §9.1, §9.3–§9.5 · Decision D13 · Feeds L12–L16
The Framework project, design tokens and a small component kit, so page lanes assemble pages without writing styles, colours or chart boilerplate.
site/observablehq.config.js (after the L00 seed), site/src/style.csssite/src/components/{palette,format,statTiles,charts,page}.jssite/src/assets/site/src/dev/components.md, kept out of the nav and removed or excluded before launchtests/test_site_budget.py[param] routes, dynamicPaths, and observable.params inside FileAttachment template literals. Record what works in the status lognpm: import to an exact version (for example npm:@observablehq/plot@0.6.17); otherwise Framework resolves @latest from the network at each builddynamicPaths for the four companies and zones 1–263; the /zones index if D13 is agreedpalette.js exactly as SPEC §9.5; light and dark via prefers-color-scheme; the diverging interpolatorformat.js: counts, percentages, dollars, durations, dates as Jan 2025, following contracts/README.mdstatTiles.js: 3–4 tiles, value plus change vs a year earlier, tabular figures, a null statecharts.js: one helper per SPEC §9.4 row (share line with labelled rules at 2025-01-05 and 2025-08-01; sequential and diverging choropleths; 24 × 7 heatmap; effect dot with p10–p90 rule; fare strip or box; 100% stacked bars). Each helper requires a subtitle, axis labels with units and a source caption, and takes colours only from palette.jspage.js: the SPEC §9.3 template (title from JSON, stat row, chart blocks, “How we measured this” link to /methods#anchor)contracts/site/pages.yaml; fail above 1.5 MBmake site-mock && make site-build greenmake testOnly this lane writes here. Newest first.
| Date | State | Note |
|---|---|---|
| not started |
Blocked: none
Hand-off