diff --git a/docs/IMPLEMENTATION-PLAN.md b/docs/IMPLEMENTATION-PLAN.md index a8a4a97..9671fb7 100644 --- a/docs/IMPLEMENTATION-PLAN.md +++ b/docs/IMPLEMENTATION-PLAN.md @@ -307,6 +307,12 @@ the reference. - Build a bar chart from a dataset in a few clicks; preview live-updates; Create → new snippet opens and renders. +**Council** — seat **FT Visual Vocabulary** + **Datawrapper** (chart-choice canon) here: +this is where Astrolabe stops being a pass-through JSON editor and starts making +chart-shaped suggestions/defaults, so "_which chart, and why_" becomes a decision the app +owns — the one thing Carbon's data-viz styling doesn't cover. Seating triggers a one-off +backfill of the builder's defaults/affordances (see [`/council`](../.claude/skills/council/SKILL.md)). + --- ## M5 · Settings + Import/Export @@ -370,6 +376,12 @@ the reference. - **A11y:** modal focus trap + return, labelled icon buttons, contrast in both themes (§10). - **Offline/installable:** verify the SW + manifest give a working offline + installed app. - **About & Privacy** and **Donate** modals. +- **Council** — seat **web.dev** for the PWA/offline/storage surfaces that none of the + seated members cover: the service-worker **update-available** prompt + (`registerType: 'prompt'`), storage **persistence** (`navigator.storage.persist()`), and + the quota **estimate** (`StorageManager.estimate()`) behind the storage monitor (§02). + (The storage-monitor work above is its most concrete consumer; seating triggers a one-off + backfill — see [`/council`](../.claude/skills/council/SKILL.md).) **Manual checks:** keyboard-only run-through; reload restores view from URL; offline reload works; install as standalone; reduced-motion honored.