Skip to content

Validation Evidence

This page organizes the test suite by what each kind of evidence proves. A passing suite shows that these specific claims still hold; it does not show scientific completeness. Tests that compare the engine with itself (for example superposition or chunk equivalence) protect contracts but are not independent evidence about the science.

Evidence matrix

Kind of evidence What it establishes Tests Scenario / tolerance Known limits
Source-cell fidelity Exported dose, skin and inhalation-class tables equal the original workbook cells, read with xlrd independently of the loader tests_export_excel_data/test_dose_source_audit.py, test_workbook_loader.py All three registered workbooks, fresh and packaged databases; exact Stored formula results only: xlrd cannot show whether a workbook was recalculated
Import transformations Every default, fallback, skip and omission is recorded with its cell; the registered workbooks have a fixed baseline tests_export_excel_data/test_import_diagnostics.py Baseline: one synthesized value per workbook (turf resuspension/soil intake = 0) Plain transcriptions are not individually diagnosed
Database normalization Canonical SQLite reproduces the legacy parameter snapshot; exports are deterministic; packaged databases are reproducible exports test_canonical_export.py, test_legacy_snapshot.py, test_parameter_sets.py Logical digest equality The legacy snapshot is the historical loader's interpretation
Dataset integrity Loaded databases have a supported schema; strict validation checks integrity, foreign keys, finite values and digest tests/data/test_dataset_validation.py Exact A digest is provenance, not scientific validity
Analytic kernel limits Kernels equal closed forms and limits computed independently of production code tests/kernels/test_soil_compartments.py (matrix-exponential reference, repeated root, nearby rates), test_exponential_integrals.py, test_decay.py, test_ground_dose.py, test_root_uptake.py, tests/domain/test_numeric_boundaries.py rtol 1e-12 to 1e-8 Kernel algebra is checked, not the choice of model equations
Independently derived integrated pathways Complete engine runs equal hand-derived results from transcribed constants and documented formulas tests/validation/test_end_to_end_matrix.py with end_to_end_reference.py: Cs-137 cloud inhalation, ground external, and potato ingestion through root uptake, harvest stock, storage and processing rtol 1e-12 / 1e-9 Constants are transcribed from the canonical database, so import errors are caught by the source-cell tests instead
Shared-cohort aging A cohort's age at an absolute instant does not depend on the output origin or on which event is evaluated tests/integration/test_cohort_aging.py Origin shift by exactly four Julian years; rtol 1e-12 Engine compared with itself under an exact invariance
Original-model compatibility Engine food-chain concentrations match preserved runs of the Excel-for-ECOSYS-87 1.4D workbook tests/validation/test_vm_foodchain_exports.py (tests/artifacts_ecosys_for_excel/run1–3.XLS) Valley set, Cs-137, three dates in 1986; per-checkpoint tolerances Valley set only; intentional differences in the development history
Numerical convergence The default support is within 1% of a daily refinement for iodine, child age transitions, deposition near harvest, ration transitions and regional seasons tests/validation/test_support_convergence.py Measured maximum 0.69% (child cohort, three years) A daily grid is a refinement, not the exact integral
Contracts Units, shapes, masks, chunking, superposition, immutability, provenance, import boundaries tests/domain, tests/integration, tests/performance, tests/reporting, tests/test_architecture_boundaries.py Exact Not scientific evidence
External scientific / measurement evidence — none — No comparison with field measurements exists

Qualifications

  • The mountain and Ticino/Valais parameter sets are not validated against runs of the original model (ParameterSet.validated is False). Reproducible exports and shared tables do not establish their seasonal results.
  • The soil desorption term is a later-model extension. The 1993 paper has no desorption term, and the match to the original Fesenko source is still unverified (model reference, chapter 5). Agreement between the kernel and its independent two-state reference validates the algebra, not the extension against ECOSYS-87.
  • Ingestion combines endpoint concentration means with sampled age-dependent coefficients and interval-averaged seasonality (SD-18). The convergence cases bound the effect for the default support; custom sparse supports can differ by much more.