Skip to content

syntheticChemistry/airSpring

Repository files navigation

airSpring — Ecological & Agricultural Sciences

Sovereign compute for precision agriculture, irrigation science, and environmental systems. Date: March 24, 2026 Version: 0.10.0 License: AGPL-3.0-or-later

airSpring is the ecological sciences validation study in the ecoPrimals ecosystem. Where hotSpring validates nuclear physics (clean math, f64) and wetSpring validates points in a system (microbiome, mass spectra, PFAS), airSpring validates systems themselves — agricultural fields, soil-plant-atmosphere continua, irrigation networks, and land-water-energy interactions.

Paper benchmarks → Python/R baselines → Real open data → Rust (BarraCuda CPU)
     → GPU (ToadStool shaders, Titan V live) → metalForge (mixed hardware)
     → biomeOS (NUCLEUS atomics, deployment graphs) → Penny Irrigation

Current Status (v0.10.0)

Phase Status Key Metric
Phase 0: Paper baselines (Python) 1,284/1,284 PASS 60 papers: FAO-56, soil, IoT, WB, dual Kc, Richards, biochar, yield, CW2D, 8 ET₀ methods, GDD, pedotransfer, ensemble, bias correction, parity, dispatch, Anderson coupling, SCS-CN + Green-Ampt (coupled), VG inverse, full-season WB, MC ET₀ uncertainty, bootstrap/jackknife CI, SPI drought index
Phase 0+: Real data pipeline 15,300 station-days ET₀ R²=0.97 vs Open-Meteo (100 Michigan stations)
Phase 1: Rust validation 986 lib + 316 integration (1,302 barracuda) + 62 forge = 1,364 total 91 binaries + 146/146 + 32/32 provenance cross-spring benchmarks (NVK zero-output detection: CPU fallback)
Phase 1.5: CPU Benchmark 13,000× atlas-scale Rust vs Python: 10M ET₀/s, 6.8M field-days/s (34/34 parity)
Phase 2: Cross-validation 75/75 MATCH Python↔Rust identical (tol=1e-5), Richards + isotherm included
Phase 2.5: Tier B→A GPU 4 ops GPU-first Hargreaves (op=6), Kc climate (op=7), dual Kc (op=8), sensor cal (op=5) — ToadStool S70+ absorbed
Phase 2.6: Seasonal pipeline GPU Stages 1-3 ET₀ + Kc + WB GPU dispatch, multi-field gpu_step(), streaming
Phase 2.7: GPU streaming multi-field 57/57 PASS M fields × N days, Stage 3 GPU per-day, 6.8M field-days/s (Exp 070)
Phase 3: GPU live dispatch 78/78 PASS Pure GPU workload validation (Exp 055), 0.04% seasonal parity
Phase 3.1: Pure GPU end-to-end 46/46 PASS All 4 stages on GPU, 19.7× dispatch reduction (Exp 072)
Phase 3.2: Cross-spring rewire 68/68 PASS BrentGpu VG inverse, RichardsGpu Picard, full provenance (Exp 073)
Phase 3.3: Paper chain validation 79/79 PASS Full CPU→GPU→metalForge chain for 28 domains (22 GPU, 6 CPU-only) (Exp 074)
Phase 3.4: Upstream GPU lean 20 ops via BatchedElementwiseF64 Ops 0-19 all upstream, local_dispatch retired, PrecisionRoutingAdvice wired (Exp 075+078)
Phase 3.5: NPU edge AKD1000 live 3 experiments, 95/95 NPU checks, ~48µs inference
Phase 3.7: metalForge live 5 substrates discovered RTX 4070 + Titan V + AKD1000 + i9-12900K, 27 workloads route
Phase 3.8: Mixed-hardware pipeline 66/66 PASS 7-stage GPU→NPU PCIe bypass, NUCLEUS mesh routing (Exp 076: 60/60)
Phase 3.9: NUCLEUS primal 45 capabilities airSpring biomeOS primal, 45 capabilities (science + provenance + cross-spring), JSON-RPC
Phase 4.0: Cross-primal pipeline 28/28 PASS ecology domain, capability.call routing, cross-primal forwarding
Phase 4.1: Full dispatch experiment 51/51 PASS CPU vs GPU parity across all domains (Exp 064)
Phase 4.2: biomeOS graph experiment 35/35 PASS Offline ecology pipeline, deployment graph validated (Exp 065)
Phase 4.3: Paper 12 immunological Anderson 4 experiments Tissue diversity, CytokineBrain, barrier state, cross-species (Exp 066-069)
Phase 4.5: biomeOS composition 4 graphs Provenance trio, NestGate routing, niche deploy, cross-spring data exchange
Phase 4.6: neuralAPI integration 3 enhancements Structured metrics, operation dependencies, cost estimates — Pathway Learner ready
Phase 4.7: Penny Irrigation Vision Sovereign, consumer hardware
Phase 5.6: Deep debt resolution All findings resolved v0.8.4: cast lint evolution, eprintln→tracing, hardcoded primal names→constants, deny.toml wildcards=deny, Blaney-Criddle p→benchmark JSON, primal binary refactored (4 modules), Python provenance standardized (20 scripts), CI expanded (cross-compile, metalForge deny, 11 more validation binaries)
Phase 5.7: Cross-spring absorption Zero C deps achieved v0.8.5: ureq→Songbird IPC (Tower Atomic, zero C deps), IpcError+DispatchOutcome biomeOS alignment, #[expect(reason)] migration, zero-panic validation (top 9 binaries), named physical constants (FAO-56, SCS-CN, AMC), dual-format capability discovery, 58→58 warnings (0 new)
Phase 5.8: Deep execution All 47 binaries zero-panic v0.8.6: Zero-panic validation expanded from 9→47 binaries, typed compute_dispatch client (toadStool compute.dispatch.submit/result/capabilities), centralized extract_rpc_error(), Python tolerance mirror complete (60 constants), 866 lib tests
Phase 5.9: Ecosystem absorption Zero hardcoded primals v0.8.7: primal_names::BIOMEOS constant, swapped TOADSTOOL/BEARDOG docs, discovery.rs hardcoding eliminated, #[allow]#[expect] migration complete, parse_capabilities 4-format support (S156+), collapsible-if (Edition 2024 let-chains), JSON-RPC proptest fuzz (7 properties), PRIMAL_REGISTRY v0.8.7, 880 lib + 22 property tests
Phase 5.10: Cross-ecosystem absorption Health probes, circuit breaker v0.8.8: health probes, circuit breaker, OrExit, thiserror, socket_env_var, structured tracing, IpcError::is_recoverable
Phase 5.11: Cross-ecosystem evolution All absorbed v0.8.9: Canonical PRIMAL_NAME/PRIMAL_DOMAIN, OnceLock GPU probe cache, cast module (safe numeric casts), DispatchOutcome<T> library type, coralReef/Squirrel discovery, mul_add() FMA (18 sites), smart refactors (4 monoliths → 19 modules: evapotranspiration, dual_kc, biomeos, validation), composition guidance
Phase 5.12: Audit execution All findings resolved v0.9.0: #![deny(cast_*)] library strict, 3 new cast helpers (u32_usize, u64_usize, u64_f64), soil_moisture refactored (672→4 submodules), petalTongue 3-tier discovery, primal_dispatch integration tests (14), benchmark JSON provenance for all hardcoded values, CI lint config via Cargo.toml only, hardcoded socket paths removed
Phase 5.13: Deep audit execution All debt resolved v0.10.0: Provenance registry 11→63 baselines, OrExit zero-panic across all 91 binaries, centralized tolerances (R², RMSE, IA, bio-diversity), #[allow]#[expect] Rust 2024, smart refactors (data/provider→4 modules, evolution_gaps→resolved_issues), hardcoded primal names→primal_names::* constants, data accession IDs, cast helpers (f64_i32, usize_i32), determinism contract documented

Code Quality

Check Status
cargo test --lib (barracuda) 986 passed, 0 failures
cargo test --tests --all-features (barracuda) 316 passed (integration + doc tests)
cargo test --lib (metalForge) 62 passed, 0 failures
cargo llvm-cov --lib --fail-under-lines 90 90.56% line coverage
cargo clippy (pedantic + nursery, -D warnings) 0 warnings (both crates)
cargo fmt --check Clean
cargo doc --no-deps Clean (both crates)
cargo-deny check Clean (AGPL-3.0-or-later, cargo-deny 0.19)
bench_cross_spring_evolution 146/146 PASS (release, S87 sync)
validate_cross_spring_provenance 32/32 PASS — CPU↔GPU benchmark, 5-spring shader provenance
validate_dispatch_experiment 51/51 PASS — CPU/GPU/batch/absorption/pipeline
validate_biome_graph 35/35 PASS — graph topology, capabilities, offline pipeline

Hardware Validated

Component Specification Status
CPU Intel i9-12900K (16C/24T, AVX2) Live — all CPU paths
GPU #1 NVIDIA RTX 4070 (12 GB, Vulkan, f64) Live — wgpu adapter 0
GPU #2 NVIDIA TITAN V (GV100, NVK/Mesa, f64) Live — 24/24 PASS, BARRACUDA_GPU_ADAPTER=titan
NPU BrainChip AKD1000 (/dev/akida0) Live — 95/95 NPU checks
RAM 64 GB DDR5-4800
OS Pop!_OS 22.04 (kernel 6.17.9)

Evolution Architecture: Write → Absorb → Lean

  airSpring eco:: (CPU, validated against FAO-56 papers)
       │
       ▼
  airSpring gpu:: wrappers (domain-specific batched API)
       │
       ▼
  barracuda::ops/linalg/stats/pde/optimize (GPU dispatch + CPU fallback)
       │
       ▼
  BarraCuda WGSL shaders (f64 canonical, precision per silicon — 767 shaders)
       │
       ▼
  metalForge (mixed CPU + GPU + NPU)
       │
       ▼
  bingoCube/nautilus (evolutionary reservoir, drift detection, NPU export)

airSpring domain code (eco::) is validated against papers, then wrapped by GPU orchestrators (gpu::) that bridge to barracuda primitives. The primitives dispatch to ToadStool WGSL shaders for GPU or fall back to CPU. metalForge stages upstream absorption candidates following the "Write → Absorb → Lean" cycle. bingoCube/nautilus provides evolutionary reservoir computing for time-series prediction (ET₀ forecasting, drift detection) with AKD1000 NPU export.

Cross-Spring Shader Evolution

BarraCuda contains 767+ WGSL shaders (pure math + precision per silicon). airSpring uses 6 shared shader families, contributed 3 upstream fixes, and had all local GPU ops absorbed upstream (Write→Absorb→Lean complete):

Spring Shaders What airSpring Gets What airSpring Gave Back
hotSpring 56 df64 core, pow/exp/log/trig f64, df64_transcendentals — VG, atmospheric TS-001: pow_f64 fractional exponent fix
wetSpring 25 kriging_f64, fused_map_reduce, moving_window, ridge, diversity metrics TS-004: reduce buffer N≥1024 fix
neuralSpring 20 nelder_mead, multi_start, ValidationHarness TS-003: acos precision boundary fix
groundSpring MC ET₀ uncertainty propagation shader
airSpring Domain consumer + all 6 local ops absorbed upstream (ops 14-19) Richards PDE (S40), stats metrics (S64), SCS-CN/Stewart/Makkink/Turc/Hamon/Blaney-Criddle (ops 14-19)

50+ cross-spring absorptions. All metalForge and local GPU ops absorbed. DF64 transcendentals complete (15 functions). PrecisionRoutingAdvice routes f64 dispatch per-hardware (F64Native, F64NativeNoSharedMem, Df64Only, F32Only). Upstream provenance registry (barracuda::shaders::provenance) provides cross-spring evolution tracking. See specs/CROSS_SPRING_EVOLUTION.md.

BarraCuda Integration (25 Tier A + 6 GPU-universal + 3 pipeline)

airSpring Module BarraCuda Primitive Op/Shader Status
gpu::et0 batched_elementwise_f64 op=0 GPU-FIRST
gpu::water_balance batched_elementwise_f64 op=1 GPU-STEP
gpu::sensor_calibration batched_elementwise_f64 op=5 Integrated
gpu::hargreaves HargreavesBatchGpu dedicated Integrated
gpu::kc_climate batched_elementwise_f64 op=7 Integrated
gpu::dual_kc batched_elementwise_f64 op=8 Integrated
gpu::van_genuchten batched_elementwise_f64 op=9,10 Integrated (S79)
gpu::thornthwaite batched_elementwise_f64 op=11 Integrated (S79)
gpu::gdd batched_elementwise_f64 op=12 Integrated (S79)
gpu::pedotransfer batched_elementwise_f64 op=13 Integrated (S79)
gpu::kriging kriging_f64::KrigingF64 dedicated Integrated
gpu::reduce fused_map_reduce_f64 dedicated GPU N≥1024
gpu::stream moving_window_stats dedicated Integrated
gpu::richards pde::richards::solve_richards dedicated Integrated
gpu::isotherm optimize::nelder_mead + multi_start dedicated Integrated
gpu::mc_et0 mc_et0_propagate_f64.wgsl dedicated Integrated
gpu::jackknife JackknifeMeanGpu dedicated Integrated (S79)
gpu::bootstrap BootstrapMeanGpu dedicated Integrated (S79)
gpu::diversity DiversityFusionGpu dedicated Integrated (S79)
gpu::stats linear_regression_f64 + matrix_correlation_f64 dedicated Integrated
gpu::runoff batched_elementwise_f64 op=17 GPU-FIRST (v0.7.2, absorbed upstream)
gpu::yield_response batched_elementwise_f64 op=18 GPU-FIRST (v0.7.2, absorbed upstream)
gpu::simple_et0 batched_elementwise_f64 ops 14-16, 19 GPU-FIRST (v0.7.2, absorbed upstream)
eco::correction::fit_ridge linalg::ridge::ridge_regression CPU Integrated
eco::richards::inverse_vg_h optimize::brent CPU Integrated
eco::diversity stats::diversity CPU Leaning
eco::drought_index special::gamma::ln_gamma CPU New (v0.7.4)
gpu::seasonal_pipeline Chains ops 0→7→1→yield fused CPU + GpuPipelined
gpu::atlas_stream UnidirectionalPipeline streaming CPU chained

Also wired: validation::ValidationHarness (neuralSpring), stats::pearson, spearman, bootstrap_ci, stats::metrics re-exports (airSpring→upstream S64).

25 Tier A GPU modules (ops 0-19 all upstream via BatchedElementwiseF64) + jackknife/bootstrap/diversity uncertainty stack. local_dispatch retired (v0.7.2 Write→Absorb→Lean complete). PrecisionRoutingAdvice wired (v0.7.3). Upstream provenance registry integrated. See barracuda/src/gpu/evolution_gaps.rs and barracuda/EVOLUTION_READINESS.md for the full roadmap.

CPU Benchmarks: Rust vs Python (14.3× geometric mean speedup, 24/24 parity)

Run cargo run --release --bin bench_cpu_vs_python. 24 algorithms, same f64 precision, same inputs, same outputs. 14.3× geometric mean includes the seasonal pipeline (ET₀→Kc→WB→Yield chain) and Paper 12 immunological modules. Individual algorithm speedups range from 5× to 124× for pure compute, with 21/21 CPU-GPU parity modules validated via validate_cpu_gpu_comprehensive.

Quick Start

# Python baselines (Phase 0)
pip install -r control/requirements.txt
python scripts/download_open_meteo.py --all-stations --growing-season 2023
bash run_all_baselines.sh

# Rust validation (Phase 1)
cd barracuda && cargo test
cargo run --release --bin validate_et0

# Benchmarks
cargo run --release --bin bench_cpu_vs_python
cargo run --release --bin bench_airspring_gpu

No institutional access required. Zero synthetic data in the default pipeline.

Data Strategy

Layer Source Purpose API Key
Benchmark FAO-56 tables, Dong 2020/2024 Ground truth (digitized) None
Open Data Open-Meteo archive 80+ yr Michigan weather None (free)
Open Data OpenWeatherMap Current + 5-day forecast testing-secrets/
Open Data NOAA CDO (GHCND) Historical daily testing-secrets/
Open Data USDA Web Soil Survey Soil properties None
Fallback Synthetic generation Only if API unreachable N/A

Research Context

Track 1: Precision Irrigation & Soil Science

Younsuk Dong, PhD — Assistant Professor & Irrigation Specialist, Biosystems and Agricultural Engineering, Michigan State University.

The Problem: Agricultural irrigation consumes ~70% of global freshwater withdrawals. Current precision irrigation relies on proprietary sensor systems ($500-$5000/field) and vendor-locked software.

Computational Methods: FAO-56 PM ET₀, Topp equation soil calibration, IoT field monitoring, FAO-56 Ch 8 water balance scheduling, FAO-56 Ch 7 dual Kc with cover crops and no-till mulch.

Track 2: Environmental Systems & Land Treatment

Richards equation (unsaturated flow — open-source alternative to HYDRUS), biochar adsorption isotherms (Langmuir/Freundlich), long-term water balance (60-year reconstruction via ERA5).

Key Publications

  • Dong et al. (2020) "Soil moisture sensor evaluation in Michigan soils" Agriculture 10(12), 598
  • Dong & Hansen (2023) "Affordable weighing lysimeter design" Smart Ag Tech 4, 100147
  • Dong et al. (2024) "In-field IoT for precision irrigation" Frontiers in Water 6, 1353597
  • Ali, Dong & Lavely (2024) "Irrigation scheduling vs yield" Ag Water Mgmt 306, 109148
  • Dong et al. (2019) "Land-based wastewater modeling using HYDRUS CW2D" J. SWBE 5(4)
  • Kumari, Dong & Safferman (2025) "Phosphorus adsorption using biochar" Applied Water Sci 15(7)

Directory Structure

airSpring/
├── control/                     # Phase 0: Python baselines (1284/1284, 47 scripts)
│   ├── fao56/ ... drought_index/  # 47 paper controls
│   ├── coupled_runoff_infiltration/   # Coupled SCS-CN + Green-Ampt (292/292)
│   ├── mc_et0/                  # Monte Carlo ET₀ uncertainty propagation (47/47)
│   ├── bootstrap_jackknife/     # Bootstrap & Jackknife CI (20/20)
│   ├── drought_index/           # SPI drought index (20/20)
│   └── requirements.txt
├── barracuda/                   # Phase 1+3: Rust validation + GPU dispatch (943 lib + 316 integration/doc = 1,259 tests, 91 binaries, barraCuda 0.3.7 / wgpu 28, Edition 2024)
│   ├── src/
│   │   ├── biomeos/                # biomeOS socket resolution + primal discovery (3 sub-modules)
│   │   ├── eco/                 # Domain modules (22 validated, 8 ET₀ + runoff + infiltration + VG + Anderson + tissue + cytokine + drought_index)
│   │   ├── gpu/                 # ToadStool/BarraCuda GPU bridge (25 Tier A, ops 0-19 upstream + BrentGpu + RichardsGpu)
│   │   ├── data/                # Data provider abstraction (HttpProvider, BiomeosProvider, NestGateProvider)
│   │   ├── ipc/                 # Inter-primal communication (provenance trio integration)
│   │   ├── nautilus.rs          # bingoCube/nautilus evolutionary reservoir (NautilusBrain v0.1.0)
│   │   ├── rpc/                 # JSON-RPC 2.0 IPC (error.rs, transport.rs, mod.rs)
│   │   ├── npu.rs               # BrainChip AKD1000 NPU (feature-gated)
│   │   ├── tolerances/          # Domain-specific validation tolerances (58 named, 4 submodules)
│   │   └── bin/                 # validate_*, bench_*, airspring_primal (91 declared)
│   ├── tests/                   # Integration + property tests (15 files + common/)
│   └── Cargo.toml               # v0.10.0 (barraCuda 0.3.7, wgpu 28)
├── niches/                      # BYOB niche definitions (airspring-ecology.yaml)
├── metalForge/                  # Mixed hardware dispatch (CPU+GPU+NPU)
│   ├── deploy/                  # biomeOS deployment graphs (airspring_deploy.toml)
│   └── forge/                   # airspring-forge (62 tests, 6 binaries, live hardware probe)
├── specs/                       # Specifications and requirements
│   ├── PAPER_REVIEW_QUEUE.md    # Paper reproduction queue (87 experiments)
│   ├── BARRACUDA_REQUIREMENTS.md# GPU + NPU kernel requirements
│   └── CROSS_SPRING_EVOLUTION.md # Cross-spring shader provenance (S87)
├── whitePaper/                  # Methodology and study documentation
│   └── baseCamp/                # Per-faculty research briefings + baseCamp extensions
├── experiments/                 # Experiment protocols and results (87 experiments)
├── wateringHole/                # Spring-local handoffs to ToadStool/BarraCuda
│   └── handoffs/                # Versioned handoffs (V010 current)
├── graphs/                      # biomeOS deployment graphs (eco pipeline, provenance pipeline, niche deploy, cross-primal)
├── CHANGELOG.md                 # Keep-a-Changelog versioned history
├── CONTROL_EXPERIMENT_STATUS.md # Detailed experiment log
└── LICENSE                      # AGPL-3.0-or-later

Relationship to Other Springs

hotSpring wetSpring airSpring
Domain Nuclear physics Life/analytical science Ecological systems
Scale Nucleus (fm) Cell/molecule Field/watershed
Validation Binding energies Organism/PFAS ID ET₀, yield, water balance
Baseline Python/scipy Galaxy/QIIME2/asari FAO-56/Python/R
Data AME2020 (IAEA) GenBank, MassBank Open-Meteo, NOAA, FAO
GPU layer ToadStool (wgpu) ToadStool ToadStool
Success metric chi² match Same taxonomy/PFAS Same ET₀/yield
Ultimate goal Sovereign nuclear Penny water monitoring Penny irrigation

Document Index

Document Purpose
CHANGELOG.md Versioned change history
CONTROL_EXPERIMENT_STATUS.md Detailed experiment results (87 experiments)
barracuda/EVOLUTION_READINESS.md Tier A/B/C GPU evolution, absorbed/stays-local
metalForge/ABSORPTION_MANIFEST.md 6/6 modules absorbed upstream (S64+S66), 27 workloads
metalForge/forge/ Mixed hardware dispatch: live probe + capability routing
specs/CROSS_SPRING_EVOLUTION.md Cross-spring shader provenance (S87)
specs/PAPER_REVIEW_QUEUE.md Paper reproduction queue (87 experiments)
whitePaper/baseCamp/README.md Faculty research briefings + baseCamp extensions
wateringHole/handoffs/ ToadStool/BarraCuda handoffs (V010 current)

License

AGPL-3.0-or-later


March 24, 2026 — v0.10.0. Deep audit execution complete. cargo-deny 0.19 evolved (SPDX AGPL-3.0-or-later, CC0-1.0 allowance, blake3 cc wrapper, version-pinned path deps). Coverage expanded: validation/json, ipc/provenance, ipc/compute_dispatch, niche — 90.56% line coverage (fail-under-lines 90 passes). evolution_gaps.rs synced to v0.10.0 / barraCuda 0.3.7. #[expect]#[allow] for shared test infra (tests/common/mod.rs). const assert for compile-time tolerance contract. 986 lib + 316 integration/doc = 1,302 barracuda tests; 62 forge; 1,364 total tests. 0 failures. Clippy pedantic+nursery zero warnings. Zero unsafe. Zero C deps. Zero hardcoded primals. AGPL-3.0-or-later.

About

Pure Rust FAO-56 evapotranspiration, Richards equation soil physics & precision irrigation — 1,200+ Python + 800+ Rust checks, 78 experiments, GPU + NPU via barraCuda

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages