Skip to content

Temporal QA across four watershed groups from the published annual series (#62) - #65

Merged
NewGraphEnvironment merged 5 commits into
mainfrom
62-temporal-qa-across-groups
Sep 6, 2026
Merged

Temporal QA across four watershed groups from the published annual series (#62)#65
NewGraphEnvironment merged 5 commits into
mainfrom
62-temporal-qa-across-groups

Conversation

@NewGraphEnvironment

Copy link
Copy Markdown
Owner

Summary

  • data-raw/break_class_groups.R runs dft_rast_break_class() on the published seven-year IO LULC series of every group that has one — bulk_co_ff04, necr_ch_ff04, lnth_ch_ff04, kotl_bt_ff04 — straight from the stac-floodplains-bc hrefs (verified against file:checksum), then the Detect geometric edge/misregistration artifacts in transitions (sliver width, boundary-hugging, reciprocal pairs) #44 patch pipeline and floodplain-shape rows. Its summarize stage emits every number the note quotes and refuses to finish if the note's tables differ from the generated file.
  • inst/notes/temporal-qa-groups.md answers the four questions in Temporal QA across five watershed groups from the published annual series: does the BULK split generalise? #62: the sustained share of 2017-2023 change is 19.7 / 31.0 / 20.6 / 24.7 % (bulk / necr / lnth / kotl), flicker 44.0 / 39.6 / 48.5 / 42.3 % and the largest category everywhere, so transition_2017_2023 overstates sustained change 3.2-5.1x; 2017 is the odd endpoint more often than 2023 in every group (ratio 1.09-1.25); flicker moves 9 points across a 2.5x width range, so it is mostly the classifier's; the geometric and temporal legs are independent to nearly independent. Between-group spread is confounded with producer path (the two cube-cut groups flicker least) and the note says so.
  • Evidence in data-raw/logs/break_class_groups/ (per-group CSVs, RSS traces, summary_groups.csv / .md, BULK reconciliation). Nothing in R/ changes. Five groups became four: PINE was dropped upstream (floodplains#76); issue Temporal QA across five watershed groups from the published annual series: does the BULK split generalise? #62's body was edited before the run.

Related Issues

Scale run (m1, 64 GB, terra 1.9.34, file-backed inputs)

group cells wall s scan s peak RSS GiB
bulk 169,248,352 312.3 61.2 15.4
kotl 204,497,703 322.6 72.2 16.3
lnth 60,522,376 99.9 21.1 13.7
necr 56,246,160 137.9 22.3 14.2

Peak RSS sits at 14-16 GiB whatever the grid size — terra sizing its working set to available RAM — and the #9 run's 8.5-20 GB in-memory input floor is gone. BULK re-measured on the published grid against the #9 run: +71 valid cells, +4.62 ha changed, shares within 0.03 of a point (summary_bulk_reconcile.csv).

Test plan

  • devtools::test(): 867 pass, 0 fail, 13 skip (no R/ change)
  • Four code-check rounds plus a plan review (five agents); findings and their fixes in planning/archive/2026-09-issue-62-temporal-qa-groups/review-round{1..4}.md. The plan review rejected the per-stream segment design for Q3 before the run; rounds 2-4 each found the same mechanism one artifact further out (a prose number typed from a reading of the table, a derived cell downstream of a display rounding), reaching a filed issue body; the loop ended by enumerating every artifact that carries a number from summary_groups.csv.
  • summarize re-run after every edit; note tables verified verbatim by the script

Notes

  • The per-group stage writes two areas rounded (area_km2 2 dp, area_ha 1 dp) that ff06_over_ff02 and pct_area_artifact then divide; recomputed from unrounded sources all eight cells are unchanged. Recorded in the evidence README to fix on the next per-group run rather than re-running the batch for no change in any reported value.
  • data-raw/break_class_groups-run.sh starts Rscript alone so the RSS sampler reads R's PID; a first sampler had caught the wrapper shell.

🤖 Generated with Claude Code

https://claude.ai/code/session_01XcFmzirEsjTxQd3jzGdnPZ

NewGraphEnvironment and others added 5 commits September 5, 2026 16:33
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XcFmzirEsjTxQd3jzGdnPZ
data-raw/break_class_groups.R reads the seven classified_<year> COGs each
stac-floodplains-bc item publishes (bulk, necr, lnth, kotl; PINE was dropped
upstream), verifies them against file:checksum, and runs the BULK pipeline
minus the fetch: classify, dft_rast_break_class(), the category crosstab,
patches with artifact tags and per-patch zonal, plus floodplain-shape rows
for Q3 and per-year class frequencies. A summarize stage assembles one row
per group into summary_groups.csv/.md and a BULK reconciliation row, and
refuses to finish if the note's copy of the tables differs.

data-raw/break_class_groups-run.sh starts Rscript alone so the RSS sampler
reads R's PID, not a wrapper shell.

The per-stream _by_blue_line_key layer was rejected for Q3 before the run:
its polygons overlap 1.7-2.2x and kotl has none (plan review).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XcFmzirEsjTxQd3jzGdnPZ
bulk, kotl, lnth, necr run 2026-09-05 on m1 from the published COGs: per-group
CSVs, RSS traces (13.7-16.3 GiB peak, 100-323 s wall), summary_groups.csv/.md
and the BULK reconciliation against the #9 run (three shares identical to one
decimal on the published grid).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XcFmzirEsjTxQd3jzGdnPZ
inst/notes/temporal-qa-groups.md answers the four questions: the sustained
share of 2017-2023 change is 19.7-31.0%, flicker 39.6-48.5% and the largest
category everywhere; 2017 is the odd endpoint more often than 2023 in every
group (ratio 1.09-1.25); flicker moves 9 points across a 2.5x width range,
so it is mostly the classifier's; the geometric and temporal legs are
independent to nearly independent. Tables are summary_groups.md verbatim.

Follow-ups filed with the numbers: #64 (corrected annual series) and
stac_floodplains_bc#67 (break_n_flips / break_year assets).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XcFmzirEsjTxQd3jzGdnPZ
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XcFmzirEsjTxQd3jzGdnPZ
@NewGraphEnvironment
NewGraphEnvironment merged commit 3cd0e7d into main Sep 6, 2026
1 check passed
@NewGraphEnvironment
NewGraphEnvironment deleted the 62-temporal-qa-across-groups branch September 6, 2026 03:10
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.

Temporal QA across five watershed groups from the published annual series: does the BULK split generalise?

1 participant