GeoStep 0.5 release validation protocol

This protocol is frozen before the 0.5 release screen runs. Its SHA256 is retained in the resulting evidence. Changes require a new version and a separate run. This is a bounded private-release screen, not a claim of nominal coverage on all data.

Scope and invariants

The candidate is 0.5.0. Primary scope is two-arm complete or prespecified stratified randomisation with equal-geo parallel DiD or Lift. Analytic intervals, BCa intervals and sharp-null tests receive separate evidence assessments. CRT and staircase inference remain experimental. CRT power is unsupported. Original trial allocations must remain unchanged when upgrading.

The 0.5 release rejects unsupported analyser options, isolates CRT model columns from caller schemas, preserves named strata in placebo checks, and removes the undocumented factory, migration, generic cache, generic parallel and generic pipeline modules. These are intentional contract changes.

Numerical references

Check public parallel analysers against independently computed stratum-weighted contrasts, variance, degrees of freedom and intervals. Enumerate a small finite population to check unbiasedness, the Neyman variance identity and sharp-null randomisation size. Check BCa against independently assembled bootstrap and delete-one jackknife calculations. These are numerical references, not a general calibration claim.

Simulation matrix

Use 250 repetitions in each of twelve data-generating cells. Each panel is analysed with DiD and Lift using analytic and BCa intervals, giving 12,000 public analysis calls. The analytic call requests a sharp-null randomisation test. Use 999 bootstrap and randomisation draws per applicable method.

All panels have eight dates, four baseline and four test periods. Untreated outcomes contain a geo intercept, common linear trend and AR(1) disturbances with coefficient 0.6. Allocation is independent of potential outcomes with fixed arm counts within each stratum. Each scenario has zero and positive intervention cells.

Scenario

Geos

Distinctive condition

Role

regular

40

Normal errors, positive stable baselines

Core

unequal_strata

40

Strata of 17 and 23, different trends and variances

Core

few_geos

12

Six geos per arm

Stress

unequal_variance

40

Geo error scales from 2 to 15

Stress

heterogeneous_effect

40

Geo effects from zero to twice the nominal effect

Stress

unstable_baseline

40

Positive baselines spanning several orders of magnitude

Stress

Use master seed 20260912. Retain every replicate’s estimate, truth, interval, p-value, input hash and failure status, plus software versions and source hashes.

Decision rules

  • Numerical references and input-contract checks must pass.

  • Unexpected failed fits in a core simulation cell block that method’s core approval. Stress failures restrict scope and must be disclosed.

  • Bias must be within four Monte Carlo standard errors of zero.

  • A 95% Wilson coverage lower bound of at least 0.90 passes this minimum screen; an upper bound below 0.90 fails; other results are inconclusive.

  • A sharp-null rejection Wilson upper bound of at most 0.10 passes; a lower bound above 0.05 requires methodological review.

  • These are bounded release-screen tolerances, not a certification of nominal 95% coverage or 5% size. BCa, stratified DiD, CRT and staircase inference remain experimental unless separate evidence changes their stated status.

Packaging gates

Run the full suite, CLI analysers, saved-allocation workflow, strict documentation build, clean installed-wheel tests on Python 3.11 and 3.12, source and wheel builds, and metadata validation. Retain resolved dependency versions. The release must remain private and distributed only through the authorised GitHub repository and release assets.