Skip to content

feat(byo): 'My stands' — bring-your-own-inventory overlay#83

Open
holoros wants to merge 2 commits into
mainfrom
feat/byo-my-stands
Open

feat(byo): 'My stands' — bring-your-own-inventory overlay#83
holoros wants to merge 2 commits into
mainfrom
feat/byo-my-stands

Conversation

@holoros

@holoros holoros commented Jun 12, 2026

Copy link
Copy Markdown
Owner

What

A My stands tab that closes the biggest competitive gap (upload-your-own-inventory, vs Forest Flux / OSI) on PERSEUS's multi-model footing.

  • Upload a CSV of your stand or monitoring observations: a year (or age) column and a value column, optional stand id. A tolerant parser auto-detects the columns and handles headered, headerless, and tab-delimited files.
  • Your points plot over the selected state's cross-engine envelope for the current metric and management — the full engine range as a band, the ensemble median as a dashed line.
  • Each stand is shaded green if it sits above the model median for its year, amber if below. Summary cards show how many stands, the share above median, and mean deviation from the median.

Why

This is the 'are the models tracking my forest?' view — it lets a landowner or analyst sanity-check their inventory against the regional model ensemble, which is exactly what Forest Flux does from USFS methods but here with the multi-model spread PERSEUS uniquely provides.

Privacy / scope

  • Runs entirely client-side (FileReader); nothing is uploaded anywhere.
  • One new component + 4 wiring lines in App. No data or schema change. CSV parser unit-checked across headered / headerless / age-biomass / tab inputs; npm run build passes.

Opened for review — not auto-merged.

holoros added 2 commits June 12, 2026 04:59
…lope

Bring-your-own-inventory mode. Upload a CSV of stand/monitoring
observations (a year-or-age column + a value column, optional stand id);
tolerant parser auto-detects columns, handles headered/headerless/tab.
Points plot over the selected state's cross-engine envelope (full range
band + median) for the current metric, shaded green/amber above/below the
model median, with summary stats (n, % above median, mean deviation).
Runs entirely client-side. Closes the upload-your-stands gap vs Forest
Flux, on PERSEUS's multi-model footing. Parser + build verified.
Stand inventory is often age-based, so add a by-year / by-age toggle.
Age mode builds a reference band from the landowner yield curves
(aggregated across owner x forest type into per-age q10..q90 + median q50)
where available (Maine today); elsewhere it plots the stands on a
stand-age axis without a band. Auto-selects age mode when uploaded X
values look like ages (<=200). Aggregation + 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