Conservation law
mass
Residual equation
I'd like to contribute the roadmap's mass/time-origin-invariance probe, including implementation, validation and the methods write-up. My background is in ML evaluation and reproducible testing; I'd need your team's review of the hydrology assumptions before settling the scope.
For identical forcing, initial state, catchment parameters and seasonal inputs, changing only the calendar year should preserve outputs at corresponding elapsed timesteps.
For x in {evspsbl, mrro, mrso, snw, canopy}, define r_x(t) = x_shifted(t) - x_control(t). Flux differences have units mm/day; state differences have units mm. Compare row positions after identical spinup.
Also check each run's water budget: R(t) = pr(t) - evspsbl(t) - mrro(t) - [S(t) - S(t-1)]/dt, where S = mrso + snw + canopy and R has units mm/day.
Tolerance and its denominator
Proposed starting tolerance, pending reference-model validation and physics review:
max_t |r_x(t)| <= 1e-9 * max(mean_t |x_control(t)|, 1 native unit), where a native unit is 1 mm/day for fluxes or 1 mm for states. This provides an explicit 1e-9 native-unit absolute floor near zero. The strict tolerance tests an exact symmetry; it is not a measured result.
The current criterion uses a 1e-12 denominator floor. I'd discuss configurable absolute-tolerance handling and report exact-model deviations before fixing the threshold.
For separate water-budget closure, use |sum_t R(t) dt| / sum_t pr(t) dt <= 0.05. Require positive accumulated precipitation in the scored window; zero-rain cases cannot pass through an undefined denominator.
How would an unphysical model fail this?
reference_calendar is the main negative control: its calendar-year-dependent recession factor can conserve mass while changing the paired outputs. It must fail invariance specifically. reference_bucket should pass every declared criterion.
Zero or constant outputs can satisfy equality without useful hydrology. Retain non_degenerate checks and require reference_degenerate to fail there. Verify the declared failure mapping across seeds and reject missing or misaligned output rows. A passing result establishes this symmetry only, not complete physical correctness.
How is the case generated?
Start from the invariance template. Generate seeded daily precipitation, temperature and PET with wet/dry periods and varied storms. Reuse exactly the same numerical forcing, static attributes, initial state and model random seed for both variants.
Use 4,015 rows: 365 spinup plus 3,650 scored steps. Start calendars on 2000-01-01 and 1972-01-01. The 28-year shift preserves month/day, day-of-year, weekday and leap-day positions over this window; these calendar properties were checked with Python datetime.
Assert equal non-time inputs, row counts, daily intervals, seasonal features and spinup treatment. Exclude year-specific changes in land use, infrastructure or physical parameters. Resolve any adapter-derived date-dependent inputs with the maintainer before interpreting failures.
Deliver one seeded generator, probe.yaml, reproducibility checks, CPU reference validation and a methods/limitations write-up. No model runs or probe implementation have been completed.
Could you confirm availability, the proposed scope under the merged-probe authorship policy, and the intended paper timeline and venue?
Will you build it?
Yes — assign it to me
Conservation law
mass
Residual equation
I'd like to contribute the roadmap's mass/time-origin-invariance probe, including implementation, validation and the methods write-up. My background is in ML evaluation and reproducible testing; I'd need your team's review of the hydrology assumptions before settling the scope.
For identical forcing, initial state, catchment parameters and seasonal inputs, changing only the calendar year should preserve outputs at corresponding elapsed timesteps.
For x in {evspsbl, mrro, mrso, snw, canopy}, define r_x(t) = x_shifted(t) - x_control(t). Flux differences have units mm/day; state differences have units mm. Compare row positions after identical spinup.
Also check each run's water budget: R(t) = pr(t) - evspsbl(t) - mrro(t) - [S(t) - S(t-1)]/dt, where S = mrso + snw + canopy and R has units mm/day.
Tolerance and its denominator
Proposed starting tolerance, pending reference-model validation and physics review:
max_t |r_x(t)| <= 1e-9 * max(mean_t |x_control(t)|, 1 native unit), where a native unit is 1 mm/day for fluxes or 1 mm for states. This provides an explicit 1e-9 native-unit absolute floor near zero. The strict tolerance tests an exact symmetry; it is not a measured result.
The current criterion uses a 1e-12 denominator floor. I'd discuss configurable absolute-tolerance handling and report exact-model deviations before fixing the threshold.
For separate water-budget closure, use |sum_t R(t) dt| / sum_t pr(t) dt <= 0.05. Require positive accumulated precipitation in the scored window; zero-rain cases cannot pass through an undefined denominator.
How would an unphysical model fail this?
reference_calendar is the main negative control: its calendar-year-dependent recession factor can conserve mass while changing the paired outputs. It must fail invariance specifically. reference_bucket should pass every declared criterion.
Zero or constant outputs can satisfy equality without useful hydrology. Retain non_degenerate checks and require reference_degenerate to fail there. Verify the declared failure mapping across seeds and reject missing or misaligned output rows. A passing result establishes this symmetry only, not complete physical correctness.
How is the case generated?
Start from the invariance template. Generate seeded daily precipitation, temperature and PET with wet/dry periods and varied storms. Reuse exactly the same numerical forcing, static attributes, initial state and model random seed for both variants.
Use 4,015 rows: 365 spinup plus 3,650 scored steps. Start calendars on 2000-01-01 and 1972-01-01. The 28-year shift preserves month/day, day-of-year, weekday and leap-day positions over this window; these calendar properties were checked with Python datetime.
Assert equal non-time inputs, row counts, daily intervals, seasonal features and spinup treatment. Exclude year-specific changes in land use, infrastructure or physical parameters. Resolve any adapter-derived date-dependent inputs with the maintainer before interpreting failures.
Deliver one seeded generator, probe.yaml, reproducibility checks, CPU reference validation and a methods/limitations write-up. No model runs or probe implementation have been completed.
Could you confirm availability, the proposed scope under the merged-probe authorship policy, and the intended paper timeline and venue?
Will you build it?
Yes — assign it to me