# Reproduction and verification

Verify SHA-256 entries in `manifest.json`. The frozen `protocol.json` and executed `run.py` hashes are in `frozen-sha256.txt`. The runner expects its directory at `runs/2026-10-29/visual-factor-v01`, the original spiking baseline under `runs/2026-10-26/2026-10-26_fly-baseline_v01`, prior visual bridge membership and pathway inputs under `runs/2026-10-28/visual-steering-v01`, and `runs/2026-10-29/visual-rectify-analysis-v02/comparison.npz`. Copies of the three smaller upstream inputs are in `sources/`; the original spiking model and its full connectivity data are not included. Reconstruct the expected directory tree and pinned dependencies using the earlier public visual-bridge evidence; use a new run folder to avoid overwriting results.

`results-v01/injected-rates.npz` contains per-cell rates for all patterns; `candidate.parquet` and `driver.parquet` contain sampled events, and `spikes.parquet` contains ordered network events. `audit.py` verifies saved hashes, readout counts, source before/after records and expected-rate swap/flat invariants; it does not rerun neural dynamics or compare unrecorded membrane trajectories. A common uniform random draw was used across patterns for each seed, but different rates produce different actual events; equal eye totals are equal expected rates, not identical realized spike counts or a measured biological rate. Public logs normalize local filesystem paths; private originals remain on Linux.

Protocol clarification: the executed runner inherited the prior bridge setting `neu.rfc[exc]=0 ms` for all targeted T4 cells; other cells retain the original model default. The frozen protocol refers to the previous bridge but does not separately spell out that refractory setting. This is disclosed after the run; the original frozen protocol and runner hashes remain unchanged. The 27 full weight arrays were unchanged, which does not mean every neuron parameter had the default value.
