Repair verification record

This historical record predates release-candidate preparation. See the current release verification for subsequent changes.

This record covers the approved methodological corrections in the working tree. The package version remains 0.3.0 until a separate release is prepared. No commit, push or publication forms part of this implementation task.

Changes covered

Review finding

Repair

Unidentified CRT effect

Full-rank, residual-df and finite-inference checks

Stale cached analysis

No result cache in concrete analysers

Stratification bias and singleton allocations

Fixed-count allocation, minimum supported stratum size, population-weighted contrasts

Bootstrap multiplicity

Independent arm/stratum summary resampling and distinct IDs for repeated CRT cluster draws

Empty or incorrect balance pass

Preserve covariates, reject changing summaries, report unavailable checks, handle constant differences

Invalid Rosenbaum bounds

Withdrawn with an explicit error

Invalid power windows and estimand mismatch

Calendar windows, actual parallel analyser, retained failures and Monte Carlo intervals

Small-cluster reference distributions

Welch-Satterthwaite for parallel summaries; explicitly approximate CRV1/t(G-1) for CRT

Invalid permutation distribution

Within-stratum fixed-count allocations, exact enumeration and corrected Monte Carlo counting

Incorrect units

Explicit normalised-change versus outcome-unit reporting

Uncontrolled windows and zero baselines

Shared parallel preparation and strict input gates

Lost numerical precision

Float64 statistical outcomes

Ignored confidence and seeds

Resolved settings, seed zero, constructor bootstrap counts

Missing actual-geo staircase allocation

Explicit randomisation to retained sequences

Unsupported documentation claims

Replaced with implemented estimands, assumptions and capability boundaries

Parallel CRT bootstrap preserves treatment arms. Rollout bootstrap requires recorded sequences. Stratified CRT inference is rejected because it has no implemented contract; stratified parallel trials use Lift or DiD.

Executed checks

  • Full suite: PYTHONPATH=src OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 python -m pytest -q --disable-warnings --tb=short. Result: 160 passed. Seven warnings remain, including constant-data diagnostic warnings and existing library deprecations. No tests were skipped.

  • Ruff checks passed for the rewritten analysers, inference, designers, diagnostics, power and reporting modules, the simulation script, changed statistical tests, runner and example script. This is not a claim of whole-tree lint cleanliness.

  • Black checks passed for those same twelve files.

  • git diff --check passed.

  • The complete synthetic example in documentation/getting_started.md ran.

  • Tests executed all three CLI analysers and inspected their saved JSON, including confidence level, units, input hash, warning fields and balance assessment.

  • PYTHONPATH=src python -m sphinx -b html -W --keep-going documentation /tmp/geostep-methodology-docs built the documentation with warnings treated as errors.

  • python -m build --wheel --no-isolation --outdir /tmp/geostep-methodology-dist built a wheel. This uses the existing environment, not an isolated dependency compatibility matrix. Existing package metadata still emits a setuptools licence-classifier deprecation warning.

  • A fresh Python process imported GeoStep directly from the built wheel and completed a public DiD analysis using the existing dependency environment.

  • Every source hash in the retained simulation JSON matches the final source tree.

  • The parallel simulation ran 1600 analyses with zero failures. The JSON evidence records assumptions, metrics, Monte Carlo intervals, dependency versions and source hashes.

Evidence limits

The statistical simulation covers the analytic parallel DiD procedure under its specified DGPs. It does not validate all marketing datasets, CRT coverage, bootstrap coverage, heterogeneous effects, missingness, non-adherence or interference. Exact randomisation reference examples and software tests are separate evidence from simulation calibration.

Preserve existing trial assignments when adopting these corrections. Seeds and some estimates intentionally change. The user’s existing documentation URL edit and removal of the two old documentation-build scripts were preserved.