# Bilateral steering identification · 2026-10-28

This release contains two separate, saved full-model sensory screens and one direct-excitability diagnostic. `prepared-not-run` in each protocol is the frozen pre-execution status. Actual completion and timestamps are in its results/summary.json. A completed run does not mean its scientific criterion passed.

## Download and audit saved results

Download every relative path listed in manifest.json, plus manifest.json, retaining directories. Verify SHA-256 and byte lengths against that manifest. Use a Python environment containing the pinned packages from requirements.lock.txt and analysis-requirements.lock.txt. The audit imports NumPy/Pandas and reads Parquet, without importing Brian or running the neural model.

```sh
python broad/validate.py broad --receipt validation-repeat-v01.json
python dm1/validate.py dm1 --receipt validation-repeat-v01.json
```

Receipts use exclusive creation: choose a new receipt name to repeat an audit. Broad validation checks its 24 sensory trials and six direct-diagnostic trials; DM1 validation checks its own 24 sensory trials. `auditStatus: pass` means saved-data consistency. `scientificLateralizationCriterion` separately reports the prespecified left/right hypothesis. An audit is not an independent simulation or biological validation.

`all-trials.csv` contains all 54 trials, including zero-input, bilateral, cut and restore conditions. Raw spike Parquets retain every recorded full-network event, with exact integer 0.1ms steps and integer FlyWire IDs. Treat IDs as strings in JavaScript to avoid losing precision. Each neuron-index.parquet maps circuit indices back to FlyWire IDs. Candidate inputs, sensory selections, seeds, source hashes, weights hashes, and exact full-event restore comparisons are retained.

## Recreate the model and selection

Use the official Shiu/Spiller repository commit 91bdd1e7dcf193f3e7ca5a8933497fcef63b7960. Download the seven original source/data files listed in source-manifest.json, verifying their Git blob hashes. The original author source is MIT; see SOURCE-LICENSE.txt. This release does not redistribute the complete author dataset or complete annotation tables.

Source-provenance.json pins the annotation repository commit df6bb136f5b3d91c3992df4e8de2642329e2a384 (v1.1.0). Download its supplemental_files/Supplemental_file1_annotations.tsv as sources/annotations-v1.1.0.tsv in each fresh run directory. The pinned Supplemental_files_columns.md explicitly states that root_id is the 630 release and defines side. Verify its saved annotation SHA-256. The later v2.1 crosscheck preserves both DNa02 IDs/sides; it is not used as a replacement 630 sensory dataset.

Each prepare.py selects from the published table and excludes IDs absent from the original 127,400-neuron model. Broad selection: all sensory/olfactory/AN cells with known left/right entry; 1,037 left and 1,052 right, two absent IDs recorded. This is not a verified Orco-only optogenetic preparation. DM1 selection: hemibrain_type ORN_DM1, 35 left and 33 right, none absent. DNa02 uses soma side: left720575940629327659, right720575940604737708.

## Fresh simulation

Use a new Linux directory and preserve these saved results. Set BASE/B in the runners and prepare.py to the verified author source environment; a path edit changes the runner digest and must be recorded as a new execution. The saved run.py is byte-identical in both screens; their protocols and neuron selections differ. Do not import a runner to inspect it: it executes at top level. Each runner refuses to reuse an existing results directory.

```sh
python prepare.py
env OMP_NUM_THREADS=1 OPENBLAS_NUM_THREADS=1 MKL_NUM_THREADS=1 NUMEXPR_NUM_THREADS=1 nice -n 15 python -u run.py > run.log 2>&1
python validate.py . --receipt independent-validation.json
```

For a fresh broad diagnostic, copy diagnostic.py and diagnostic-protocol.json alongside broad run.py, then execute diagnostic.py under the same finite one-thread command. It creates diagnostic-results/ and retains default motor-cell refractory periods. Validate again under a new receipt name. Direct suprathreshold motor-cell stimulation tests excitability only and must never replace the sensory pathway in an apparent steering demonstration.

Every sensory trial starts a fresh original full model, retains 14,687,178 synaptic rows, and runs 1 simulated second (200ms quiet, 500ms drive, 300ms settling). The prespecified readout is DNa02 left minus right spikes during200–1000ms, positive for left. It is never fitted or sign-flipped. Broad population aggregate candidate rate is50,000Hz/side; DM1 is4,950Hz/side. Normalization equalizes aggregate expected pulse rates, not biological odor strength. The same schedules and RNG seed are used across intact/cut/restore conditions. Sensory cells use the author's zero-refractory stimulation convention. Both DNa02 incoming weight sets (742left/751right rows) are zeroed in cuts and restored exactly before fresh restore runs.

No learning rule, fitted readout, navigation policy, body controller or kinematic plant is included. Exact restoration is tested within the recorded environment; reproduction on another dependency/hardware configuration has not been demonstrated. No driving, odor navigation or physical angular velocity is established by these experiments.

Protocols are locally frozen execution plans, not registrations in an external study registry.
