Summary
I would like to claim mass/multi-decadal-drift from the roadmap. I propose a
50-year synthetic experiment targeting small reporting errors that accumulate
into physically impossible storage while the reported water budget still closes.
The first version will reuse existing criteria, particularly state_bounds and
closure. It will not classify every long-term storage trend as unphysical.
Conservation law
Mass.
Residual equation
For a daily timestep:
r_t = P_t + G_t - ET_t - Q_t - (S_t - S_(t-1)) [mm per step],
where G is any declared external water exchange and S includes every reported
water store. The budget uses the supplied precipitation rather than a modified
driver echoed by the model. The initial state for a scored interval is the state
immediately before that interval.
The principal discriminating check is an existing physical bound, for example
0 <= mrso <= soil_capacity_mm. This checks absolute storage, not just its change.
Tolerance and its denominator
- Retain the existing closure rule:
abs(sum(r_t)) / sum(P_t) <= 0.05.
The generator supplies positive accumulated precipitation, so this denominator
does not approach zero.
- Reuse the current
state_bounds tolerance of 1e-6 mm and the case's declared
physical capacities. This is an absolute bound check with no precipitation
denominator.
- Do not tighten closure merely to force the new negative control to fail.
Extending a constant fractional leak from ten to fifty years does not itself
increase its precipitation-normalized residual. The added discrimination here
comes from accumulated storage exceeding physical capacity.
How would an unphysical model fail this?
Use an exact bucket as the positive control. A proposed negative control reports
Q'_t = Q_t - epsilon and S'_t = S_t + epsilon * elapsed_days, with a fixed
epsilon = 0.012 mm/day. The true internal bucket evolves normally. The invented
storage compensates the runoff deficit, so the reported budget still closes.
The offset accumulates from the first input timestep, including spinup. The model
does not inspect the requested horizon, probe identity, seed, or future inputs.
Its runoff must remain nonnegative for the tested cases.
A standalone feasibility experiment using the existing local reference_bucket
adapter and seeds 0 through 19 produced:
- Exact bucket: maximum soil storage 163.68 mm, below the 320 mm capacity.
- Biased reporter: maximum soil storage over the ten-year scored prefix 225.06 mm.
- Same biased reporter over fifty scored years: peak storage 387.18-400.26 mm.
- First capacity violation occurred 31.18-33.24 years into the scored interval.
- All tested closure ratios were below
1e-10.
These are preliminary local results, not an acceptance-gate result or validation
against all physical baselines. They establish a concrete short/long distinction.
Implementation will map the new negative control explicitly to state_bounds
under baselines.must_fail.
A model that fabricates bounded states and compensating fluxes could still pass.
Existing forcing-fidelity, ET-plausibility, and non-degeneracy checks should be
retained where applicable, but passing this probe alone cannot establish physical
understanding or detect every hidden leak.
How is the case generated?
Generate a five-year block of daily precipitation, temperature, and PET from a
recorded seed, then repeat it for five years of spinup and fifty scored years.
This gives exactly repeated block totals without an imposed secular forcing trend.
The initial case is warm and snow-free, with variable rainfall every third day
and a seasonal PET cycle, to isolate finite soil/canopy storage behavior.
The prototype uses 365-day model years and continuous Gregorian timestamps;
seasonality follows the forcing index rather than calendar-year boundaries.
This convention will be documented explicitly. It is a controlled periodic case,
not a claim of realistic stochastic weather or strict statistical stationarity.
The implementation will return the repository's required DataFrame/static-dict
pair, respect its length contract, and be deterministic for a given seed. No
generated forcing dataset will be committed. Five years of spinup is provisional;
settling sensitivity will be checked with a longer warmup.
Implementation and acceptance
- Add
probe.yaml, generate.py, and a physics README under
probes/mass/multi-decadal-drift/.
- Require the full 18,250-day scored interval through the probe's minimum-window
mechanism; verify submitted-model evaluation cannot reduce it to an event window.
- Add the fixed-bias negative reference model and focused discrimination tests.
- Check reproducibility, prefix consistency, units, boundary indexing, and warmup
sensitivity. Keep the same error magnitude across all seeds and horizons.
- Validate the applicable physical baselines, including the bucket and the physical
baselines used by catchment-closure. Confirm any storage-capacity assumptions are
valid for their state definitions before finalizing the manifest.
- Measure runtime/output size, set suitable limits, run
ht validate, the targeted
ht gate, and relevant regression/documentation checks.
The first version detects eventual physical-bound violations. Detecting bounded
secular drift would require an additional, separately justified criterion.
Will you build it?
Yes - assign it to me. I will develop the contribution after the proposal is
accepted and assigned, following the repository contribution process.
Summary
I would like to claim
mass/multi-decadal-driftfrom the roadmap. I propose a50-year synthetic experiment targeting small reporting errors that accumulate
into physically impossible storage while the reported water budget still closes.
The first version will reuse existing criteria, particularly
state_boundsandclosure. It will not classify every long-term storage trend as unphysical.Conservation law
Mass.
Residual equation
For a daily timestep:
r_t = P_t + G_t - ET_t - Q_t - (S_t - S_(t-1))[mm per step],where
Gis any declared external water exchange andSincludes every reportedwater store. The budget uses the supplied precipitation rather than a modified
driver echoed by the model. The initial state for a scored interval is the state
immediately before that interval.
The principal discriminating check is an existing physical bound, for example
0 <= mrso <= soil_capacity_mm. This checks absolute storage, not just its change.Tolerance and its denominator
abs(sum(r_t)) / sum(P_t) <= 0.05.The generator supplies positive accumulated precipitation, so this denominator
does not approach zero.
state_boundstolerance of1e-6mm and the case's declaredphysical capacities. This is an absolute bound check with no precipitation
denominator.
Extending a constant fractional leak from ten to fifty years does not itself
increase its precipitation-normalized residual. The added discrimination here
comes from accumulated storage exceeding physical capacity.
How would an unphysical model fail this?
Use an exact bucket as the positive control. A proposed negative control reports
Q'_t = Q_t - epsilonandS'_t = S_t + epsilon * elapsed_days, with a fixedepsilon = 0.012 mm/day. The true internal bucket evolves normally. The inventedstorage compensates the runoff deficit, so the reported budget still closes.
The offset accumulates from the first input timestep, including spinup. The model
does not inspect the requested horizon, probe identity, seed, or future inputs.
Its runoff must remain nonnegative for the tested cases.
A standalone feasibility experiment using the existing local
reference_bucketadapter and seeds 0 through 19 produced:
1e-10.These are preliminary local results, not an acceptance-gate result or validation
against all physical baselines. They establish a concrete short/long distinction.
Implementation will map the new negative control explicitly to
state_boundsunder
baselines.must_fail.A model that fabricates bounded states and compensating fluxes could still pass.
Existing forcing-fidelity, ET-plausibility, and non-degeneracy checks should be
retained where applicable, but passing this probe alone cannot establish physical
understanding or detect every hidden leak.
How is the case generated?
Generate a five-year block of daily precipitation, temperature, and PET from a
recorded seed, then repeat it for five years of spinup and fifty scored years.
This gives exactly repeated block totals without an imposed secular forcing trend.
The initial case is warm and snow-free, with variable rainfall every third day
and a seasonal PET cycle, to isolate finite soil/canopy storage behavior.
The prototype uses 365-day model years and continuous Gregorian timestamps;
seasonality follows the forcing index rather than calendar-year boundaries.
This convention will be documented explicitly. It is a controlled periodic case,
not a claim of realistic stochastic weather or strict statistical stationarity.
The implementation will return the repository's required DataFrame/static-dict
pair, respect its length contract, and be deterministic for a given seed. No
generated forcing dataset will be committed. Five years of spinup is provisional;
settling sensitivity will be checked with a longer warmup.
Implementation and acceptance
probe.yaml,generate.py, and a physics README underprobes/mass/multi-decadal-drift/.mechanism; verify submitted-model evaluation cannot reduce it to an event window.
sensitivity. Keep the same error magnitude across all seeds and horizons.
baselines used by catchment-closure. Confirm any storage-capacity assumptions are
valid for their state definitions before finalizing the manifest.
ht validate, the targetedht gate, and relevant regression/documentation checks.The first version detects eventual physical-bound violations. Detecting bounded
secular drift would require an additional, separately justified criterion.
Will you build it?
Yes - assign it to me. I will develop the contribution after the proposal is
accepted and assigned, following the repository contribution process.