Stage Boundaries and Canonical Artifacts
Purpose
This page is the source of truth for the main pipeline boundaries and which artifacts are authoritative at each step.
Pipeline Boundary Map
Stage |
FEMIC owns |
Canonical artifacts |
Boundary notes |
|---|---|---|---|
Stage 00 |
inventory prep, stratification inputs, geospatial support artifacts |
instance |
Can depend on canonical public-data fallback when instance-local copies are absent. |
Stage 01a |
top strata, SI splits, VDYP fitting, BTC/BatchTIPSY handoff generation |
|
Stops intentionally at the BTC runtime boundary. |
BTC / BatchTIPSY |
external Windows runtime step launched unattended by FEMIC |
returned |
FEMIC owns the handoff/output contract and validates freshness/coherence on resume. |
Stage 01b |
post-TIPSY parsing, managed-vs-untreated comparison, bundle tables |
bundle tables, QA plots, refreshed downstream tables |
Resumes only after canonical BatchTIPSY output is available. |
Export |
Patchworks/Woodstock package synthesis |
|
Export correctness is separate from runtime launch success. |
Runtime |
preflight, build-blocks, Matrix Builder / Beanshell launch |
runtime logs, manifests, tracks, blocks/topology outputs |
Depends on proprietary Patchworks tooling and host-specific runtime assumptions. |
Canonical Artifact Rules
03_input-*.csvis the canonical BTC/BatchTIPSY input artifact.tipsy_params_tsa*.xlsxis a human-readable mirror only, not the authoritative freshness artifact.04_output-*.csvis the required returned BTC output for Stage 01b, paired with04_error-*.csv.Legacy
02_input-*.dat/04_output-*.outfiles remain compatibility artifacts only and are no longer the default supported seam.Canonical SiteProd mode prefers a paired
siteprod.tif+siteprod.bandmap.json.Export-time Patchworks artifacts prove package synthesis, not runtime readiness.
tracks/*/groups.csvshould be treated as a post-matrix-builder user-overlay surface unless a specific instance explicitly documents otherwise. Editing group assignments in that file does not, by itself, imply thatforestmodel.xmlor the other compiled track tables need to be regenerated.AOI-scoped TSR GIS acquisitions are only canonical for the extent they were fetched for. A clipped smoke/test overlay is not automatically a valid production/full-TSA source layer just because it lives under the instance
data/tree.
TSR AOI Acquisition Contract
For TSR source-layer workflows that acquire public GIS data by bbox/order:
record the requested AOI with the acquired artifact;
distinguish reviewed production/full-TSA acquisitions from smoke-scale or otherwise AOI-scoped exploratory downloads;
keep smoke-scale downloads segregated under a smoke-specific subtree such as
data/downloads/bcdc/smoke/instead of mixing them into the production GIS library; andtreat obvious bbox-coverage mismatches against the active checkpoint extent as blockers for full-TSA netdown execution rather than as silent no-op or generic missing-source conditions.
Operational rule:
do not promote a smoke-clipped overlay into later full-TSA THLB validation without reacquiring or otherwise reviewing a production-valid extent.
Minimal Functional Patchworks Instance
When FEMIC or an instance doc says “functional Patchworks instance”, be explicit about which readiness tier you mean.
Matrix-Builder-ready minimum:
Patchworks runtime config for the target instance (for example
config/patchworks.runtime.windows.yaml)compiled
forestmodel.xmlfull fragments shapefile sidecar set:
fragments.shp,fragments.dbf,fragments.shx,fragments.prj, andfragments.cpghost/runtime prerequisites that let
femic patchworks preflightpass
Post-matrix-build compiled minimum:
everything in the Matrix-Builder-ready tier
compiled track tables under
tracks/including at least:curves.csv,features.csv,products.csv,treatments.csv,protoaccounts.csv, andaccounts.csv
Standalone launch-ready published minimum:
everything in the post-matrix-build compiled tier
blocks/blocks.shpplus the full shapefile sidecar set used by the shipped runtime surfacethe topology CSV used by the shipped analysis surface
the analysis/PIN launch surfaces required to open the compiled model
Editable anti-lock-in publication tier:
the standalone launch-ready published minimum
the validated
forestmodel.xmlplus validatedfragmentssidecar set preserved as the user-visible rebuild/overlay starting point even when the compiled model could technically launch without revisiting them
If you are rebuilding forestmodel.xml from FEMIC bundle outputs, the
minimum upstream compile inputs are also:
data/model_input_bundle/au_table.csvdata/model_input_bundle/curve_table.csvdata/model_input_bundle/curve_points_table.csv
Operational rule:
do not treat a thin instance that only contains
forestmodel.xmlplus a placeholderfragments/README.mdas Patchworks-functional;restore or regenerate the actual fragments sidecar set before preflight or Matrix Builder work;
do not treat a compiled model surface with tracks but no shipped
blocks/blocks.shppayload as standalone launch-ready;if an instance is published as a runnable standalone Patchworks model, make the shipped blocks/topology/analysis surfaces explicit alongside the editable XML/fragments escape hatch;
do not claim a rebuilt Patchworks input layer is sane until you have inspected the concrete compiled track outputs directly.
VDYP Runtime Layout Note
Treat the local vdyp_io/ tree as three different contracts, not one pile:
vdyp_io/VDYP.INIandvdyp_io/VDYP_CFG/**are durable local runtime prerequisites;vdyp_io/logs/is for VDYP-specific event/stdout/stderr evidence;vdyp_io/scratch/is cleanup-safe raw per-batch spill (vdyp_ply_*.csv,vdyp_lyr_*.csv,vdyp_out_*.out,vdyp_err_*.err).
Operational rule:
do not treat raw per-batch scratch under
vdyp_io/scratch/as canonical evidence or durable runtime input;do not delete
VDYP.INIorVDYP_CFG/**when cleaning runtime spill.
Canonical-source note:
FEMIC-level VDYP runtime assets are the preferred canonical shared source during ordinary source-checkout development;
instance-local copies of
VDYP.INI/VDYP_CFG/**are mainly justified when an instance is being frozen or published as a more standalone runtime package that should not depend on the parent FEMIC checkout being present;if both surfaces exist, treat unnecessary duplication as a maintenance risk and keep the intended source of truth explicit in the instance/operator docs.
Patchworks Track Overlay Note
Not every file under a compiled tracks/ directory has the same rebuild
contract.
curves.csv,features.csv,products.csv,treatments.csv,protoaccounts.csv, andaccounts.csvare compiled outputs and should normally be refreshed through the normal export / matrix-build path.groups.csvmay be a deliberate user-edited overlay applied after Matrix Builder has generated the main track package.
Agent/developer consequence:
if a request is specifically about swapping or editing
groups.csvin an already-built Patchworks surface, do not assume the right next step is a rebuild;first verify the runtime contract for how that instance consumes the groups overlay;
do not invent BeanShell
calculateGroups("GROUP")-style fixes unless the instance docs or runtime contract explicitly say that is required.
Freshness and Resume Rules
Stage 01b treats canonical BTC input CSV content as authoritative when deciding whether returned BTC output is stale.
If CSV content has not changed and the output remains coherent, FEMIC can resume without regenerating Stage 01a inputs.
If CSV content has changed, refresh the BTC output before rerunning post-TIPSY stages.
Use
FEMIC_STRICT_TIPSY_TIMESTAMP_MISMATCH=1only when you want coherent timestamp mismatch to fail hard.Use
FEMIC_ALLOW_STALE_TIPSY_OUTPUT=1only for explicit debugging on the legacy DAT/OUT seam.
Quick Decision Table
Question |
Answer |
|---|---|
Which file is authoritative for the BTC/BatchTIPSY input boundary? |
|
Does changing the XLSX mirror alone require a rerun? |
No. The XLSX is not the authoritative freshness contract. |
Can FEMIC continue into Stage 01b without |
No. |
Does a successful Patchworks export mean Matrix Builder will run? |
No. Runtime prerequisites are a separate boundary. |