Skip to content

feat(permanence): CONUS reversal-risk choropleth (stacked on #75)#78

Open
holoros wants to merge 2 commits into
feat/permanence-reversal-riskfrom
feat/permanence-choropleth
Open

feat(permanence): CONUS reversal-risk choropleth (stacked on #75)#78
holoros wants to merge 2 commits into
feat/permanence-reversal-riskfrom
feat/permanence-choropleth

Conversation

@holoros

@holoros holoros commented Jun 12, 2026

Copy link
Copy Markdown
Owner

What

Follow-up to #75. Adds the CONUS choropleth promised in the roadmap.

  • scripts/build_permanence_risk.mjs precomputes a small per-state reversal-risk summary (public/api/permanence_risk.json, 49 states) from the committed series, so the map reads one ~10 KB file instead of loading 48 state series in the browser.
  • src/PermanenceMap.jsx is a self-contained CONUS choropleth (Albers projection mirrored from SVGMap) that shades each state by the disturbance-exposed reserve shortfall vs the passive reserve at horizon; click a state to load it.
  • Wired into the Permanence tab above the per-state panel.

Base

Stacked on feat/permanence-reversal-risk (#75) so the diff here is just the map + data. Merge #75 first, then this.

Risk

  • New derived data file + one new component + 3 wiring lines in App. The projection is duplicated (~25 lines) from SVGMap to keep the component self-contained; noted in a comment.
  • npm run build passes; the precompute is reproducible via node scripts/build_permanence_risk.mjs.

Opened for review — not auto-merged.

holoros added 2 commits June 11, 2026 21:42
Adds a precompute script (build_permanence_risk.mjs) that summarizes
per-state reversal risk from the committed series into a small
permanence_risk.json (49 states), and a self-contained CONUS choropleth
(PermanenceMap.jsx) that shades each state by how far its disturbance-
exposed reserve falls below the passive reserve at horizon. Click a state
to load it. Wired into the Permanence tab above the per-state panel.
Build verified; values cross-checked (ME 66%, IN 84%, GA 48%).
Stress test found NV's reversal at -179% (disturbance-exposed median
above passive) because its forested carbon base is tiny (15 Tg sparse
woodland) — the known NV edge case. Precompute now marks states with a
small base or negative shortfall reliable:false; the choropleth grays
them out instead of mis-coloring them low-risk, and the per-state view
shows a 'not characterized' note. NV and RI flagged. Build verified.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant