nx_disturbance.nx
buildroot/runtime/nx_disturbance.nx
about
nx_disturbance.nx -- constructive disturbance regime per Regenerative-
Stewardship Doctrine.
Per META-CARDINAL feedback-regenerative-stewardship-doctrine-captain-moroni:
most ecosystems Earth produces REQUIRE disturbance to renew --
prairies need fire every 2-5 years; oak savannas every 1-3 years;
longleaf pine ground fire every 1-3 years; salt marshes need tidal
scouring; Pacific NW old-growth shaped by windfall + Indigenous
burning + salmon-marine-nitrogen pulses. Substrate REFUSES both
extraction-as-disturbance (clear-cut, drain, monocrop) AND
preservation-as-freeze (no-fire, no-grazing, no-coppice).
V1 ships sealed enum of disturbance types + per-ecosystem regime
frequency + Indigenous-consultation-required predicate. Operator
uses to plan stewardship actions; substrate informs, never executes
disturbance.
Composes:
nx_niche -- ecosystem niche gates which regimes apply
nx_covenant -- Indigenous fire-stewardship + ancestral-land FPIC
nx_phenology -- disturbance timing aligned with seasonal cycle
nx_pollinator -- some disturbance regimes preserve pollinator habitat
Gap list (V1 honest perf verdict):
- safety + regulatory constraints (urban/wildland-interface fire
risk, permits) are operator + jurisdiction-supplied; V2 composes
with nx_jurisdiction_egress + permitting layer
- Indigenous TEK integration requires partnership; V1 flags the
requirement, V2 (gated on nx_covenant maturity) handles workflow
- regime-frequency targets are research-derived; per-site
calibration is multi-year fieldwork
genealogy_id: nishi_metacardinal_2026-05-19_regenerative_stewardship
lineage_id: substrate_disturbance_v1
nx_safety_envelope:
intended_use: "Constructive-disturbance regime classification
+ frequency-per-ecosystem + Indigenous-
consultation-required predicate; refuses both
extraction and preservation framings"
dependencies 2 imports · 1 importers
imports: nx_syscalls.nxnx_tier.nx
imported by: nx_disturbance_test.nx
structs
| none |
consts
| 56 | const NX_DI_FIRE_PRESCRIBED: nx_int = 0 // controlled burn |
| 57 | const NX_DI_FIRE_INDIGENOUS: nx_int = 1 // TEK-managed fire (FPIC required) |
| 58 | const NX_DI_FLOOD_PULSE: nx_int = 2 // managed flood release |
| 59 | const NX_DI_HERBIVORY_ROTATIONAL: nx_int = 3 // Allan Savory-class grazing |
| 60 | const NX_DI_COPPICE: nx_int = 4 // cut-to-stump then regrow |
| 61 | const NX_DI_POLLARD: nx_int = 5 // cut top + branches above browse line |
| 62 | const NX_DI_WINDFALL_NATURAL: nx_int = 6 // accept storm-disturbance |
| 63 | const NX_DI_SELECTIVE_HARVEST: nx_int = 7 // single-tree selection |
| 64 | const NX_DI_BEAVER_REINTRO: nx_int = 8 // beaver-driven hydrology |
| 65 | const NX_DI_NONE_FROZEN: nx_int = 9 // explicit no-disturbance (rare; refused as default) |
| 66 | const NX_DI_N_TYPES: nx_int = 10 |
| 70 | const NX_ECO_TALLGRASS_PRAIRIE: nx_int = 0 |
| 71 | const NX_ECO_OAK_SAVANNA: nx_int = 1 |
| 72 | const NX_ECO_LONGLEAF_PINE: nx_int = 2 |
| 73 | const NX_ECO_PACIFIC_NW_OLDGROWTH: nx_int = 3 |
| 74 | const NX_ECO_SALT_MARSH: nx_int = 4 |
| 75 | const NX_ECO_RIPARIAN_BOTTOMLAND: nx_int = 5 |
| 76 | const NX_ECO_MIXED_HARDWOOD: nx_int = 6 |
| 77 | const NX_ECO_CONIFER_BOREAL: nx_int = 7 |
| 78 | const NX_ECO_DESERT_ARID: nx_int = 8 |
| 79 | const NX_ECO_ABORIGINAL_AUSTRALIAN: nx_int = 9 |
| 80 | const NX_ECO_N_TYPES: nx_int = 10 |
| 84 | const NX_DI_V_REGIME_OK: nx_int = 0 |
| 85 | const NX_DI_V_REQUIRES_FPIC: nx_int = 1 // Indigenous consultation |
| 86 | const NX_DI_V_REQUIRES_PERMIT: nx_int = 2 // legal/regulatory |
| 87 | const NX_DI_V_REFUSED_FROZEN: nx_int = 3 // preservation-as-freeze refused |
| 88 | const NX_DI_V_REFUSED_EXTRACTION: nx_int = 4 // extraction disguised as disturbance |
| 89 | const NX_DI_V_INCOMPATIBLE: nx_int = 5 // disturbance not appropriate for ecosystem |
| 90 | const NX_DI_V_INVALID: nx_int = 99 |
| 91 | const NX_DI_V_N_VERDICTS: nx_int = 6 |
functions
| 95 | func nx_di_type_is_valid(t: nx_int) -> nx_int |
| 103 | func nx_eco_type_is_valid(e: nx_int) -> nx_int |
| 111 | func nx_di_v_is_valid(v: nx_int) -> nx_int |
| 122 | func nx_di_requires_fpic(t: nx_int) -> nx_int |
| 133 | func nx_di_requires_permit(t: nx_int) -> nx_int |
| 150 | func nx_di_is_extraction_class(t: nx_int) -> nx_int called by 1: nx_di_classify_proposal |
| 162 | func nx_di_ecosystem_regime_frequency_years(eco: nx_int, dis: nx_int) -> nx_int |
| 234 | func nx_di_classify_proposal(eco: nx_int, dis: nx_int) -> nx_int |
| 260 | func nx_di_v_is_concerning(v: nx_int) -> nx_int |