# Evidence guide

## Lineage

The public evidence set is intentionally small:

1. [`gms-selected-ids-0-99.json`](gms-selected-ids-0-99.json) is the
   historical stored result: 100 ordered Gaussian-mixture records, the selected
   configuration, source provenance, and reported aggregates.
2. [`validate_gms_selected_result.py`](validate_gms_selected_result.py) is the
   separate post-hoc validator, copied byte-for-byte from the local study.
3. [`gms-selected-ids-0-99-validation.json`](gms-selected-ids-0-99-validation.json)
   is the historical output from that validator.
4. [`verify_stored_gms_evidence.py`](verify_stored_gms_evidence.py) is a new,
   standard-library-only verifier for the preserved JSON record.
5. [`test_verify_stored_gms_evidence.py`](test_verify_stored_gms_evidence.py)
   is its focused standard-library test suite.

The validator is intentionally separate from the JAX numerical runner. It
recomputes strict-JSON checks, the 100 ordered raw records, aggregate statistics,
paired intervals, and the recorded hashes of released source files. It does not
run the numerical evaluation.

## Portability

The validator is preserved as an audit artefact, not as a standalone Space
application. It expects the released DiffRes checkout layout at the recorded
commit and checks its Git identity and eight source/input hashes. The upstream
source is deliberately not vendored in this package. Consequently, the bundled
historical validation JSON is the inspection record for this static package;
running the validator requires a separately obtained clean checkout at the
recorded pin and a Python environment with SciPy.

The self-contained verifier fills the package-only gap without changing the
historical artefacts. From the package root, run:

```sh
python3 evidence/verify_stored_gms_evidence.py
python3 evidence/test_verify_stored_gms_evidence.py
```

It strictly parses the raw JSON, rejects duplicate keys and non-finite values,
checks the declared configuration and ordered IDs `0`–`99`, and recomputes the
method/metric aggregates, paired aggregates, and lower-counts. It has no
network, source-checkout, third-party-package, numerical-run, or output-file
dependency. It cannot validate the claimed source hashes against a checkout,
prove execution provenance, or establish a paper result, statistical
significance, or outperformance claim.

## Interpretation limits

The stored result covers the selected 100-ID Gaussian-mixture configuration and
the multinomial baseline. It does not supply a full Table 1 or Table 2 result,
an independent numerical rerun, other baseline comparisons, a significance
claim, or an outperformance claim. The paired 95% t intervals recorded by the
validator cross zero for both metrics.

## Asset integrity

Each transferred asset is listed with its source path, SHA-256, and transfer
mode in the repository-root [manifest](../MANIFEST.md). The package-level
[SHA-256 manifest](../MANIFEST.sha256) enables a local integrity check without
executing either validator. The focused verifier tests run only with the Python
standard library.
