Goal issue #329 · slug data-loading
1/5 member issues closed
no readiness label yet.
closed members.
Bring SafetyViz to parity with the old safetyGraphics app's data loader and mapping: a user drops their own files into the portfolio page, the tool recognises the domains and standard, lets them correct the column mapping, and loads the consolidated portfolio with the chart-status panel reflecting what their data supports, with nothing leaving the browser (plan, 2026-09-10, objective 4, lane A).
End state: on the portfolio page a user loads CSV or JSON files through the browser's file API with no upload and no server; the domain and standard are detected from column names, with plain-language errors when a file cannot be placed; a per-domain column mapping is auto-filled from the detected standard, editable by hand, validated field by field and saved into the study configuration; mapped data flows into every chart, the chart-status panel recomputes from the mapping, and the participant drill-down follows the mapped identifiers.
Proof: npm run test:e2e -- loader passes, loading a deliberately non-standard dataset from the evidence set, mapping it, and asserting that every chart renders and the status panel reads the expected count, with the test also asserting that no network request leaves the page; the dev site shows the loader on the portfolio page; every requirement below is closed with its proof comment and the release tagged.
Ships in: safety.viz v2.0.0 (proposed), milestone 2026-10-talk.
In session order:
This issue was drafted by Claude Code using Fable 5.1 from the plan of 2026-09-10, on @jwildfire's in-session approval to file it; the body is his to edit and the tree is signed off only by his comment here.
Members are generated from the objective issue's sub-issue links at build time; priority is the selecting session's judgment, not list order (#53 v2). The --auto policy binding — active/paused, grant profile, repo-level backlog feeds — lives in obot.agent/goals/registry.json. Readiness labels: auto = ready for autonomous implementation, draft = needs @jwildfire steering.