# Paired native T4 input and joint route intervention

Executed on Linux on 2026-10-28: 21 fresh full-network trials, one CPU/nice15.
Frozen protocol SHA256 e2398ebbd067e4a7c6cd1a53ffdbf0b87f2c4c85e7ff0b8d3bfd683058a01a00.
Direction and fresh restoration pass; complete abolition after route cut FAILS
for B on all three new seeds. This is not a validated visual interface or behavior.

## Sources and layout

Original model: https://github.com/philshiu/Drosophila_brain_model/tree/91bdd1e7dcf193f3e7ca5a8933497fcef63b7960
Prior native-input evidence: https://dropkit-contents.pages.dev/research/t4-channel-specificity-v01/REPRODUCE.md
Route source: https://www.nature.com/articles/s41593-025-01948-9

Keep this portable dated layout; the enclosing `runs` folder may live anywhere:

```
runs/2026-10-26/2026-10-26_fly-baseline_v01/source/
runs/2026-10-26/2026-10-26_fly-baseline_v01/source-manifest.json
runs/2026-10-28/t4-specificity-v01/results-v01/
runs/2026-10-28/paired-t4-v01/
```

The original source/data manifest and all seven upstream Git blobs must match the
pinned source. Install the original spiking environment from requirements-spiking.txt.
No Flyvis inference, new visual checkpoint or new training is invoked by this run.
The runner reads the parent's input-membership.csv, pathway-neurons.csv and summary.json.
The first two tables are copied in this bundle's results-v01, and the parent summary
is copied byte-exact as reference-parent-summary.json. Their bindings are recorded
in preflight.json. Restore those parent files at the paths above when reproducing.
Later subtype labels select the same 2,701 eligible original IDs as the prior run;
exact original-index and unique-v630-side membership do not establish independent
biological identity or individual retinotopy.

## Actual execution

Use a fresh experiment copy and output/cache folders: runners refuse to overwrite.
From the paired-t4-v01 folder, using the original-model environment's Python:

```
OMP_NUM_THREADS=1 OPENBLAS_NUM_THREADS=1 MKL_NUM_THREADS=1 NUMEXPR_NUM_THREADS=1 nice -n 15 python -u run.py
python validate.py --source-root ../../2026-10-26/2026-10-26_fly-baseline_v01
OMP_NUM_THREADS=1 OPENBLAS_NUM_THREADS=1 nice -n 15 python analyze.py
```

The runner pins itself to one allowed CPU and saves package versions/priority in
preflight.json. It records full actual driver monitors and full-network events
for every condition, including quiet gate0. Keep the executed runner unchanged;
this public copy is byte-identical and already uses relative paths.

`validate.py --no-write` provides a read-only saved-data audit. Without --source-root,
258 checks are expected; the original Linux receipt has 265 including seven live
original-source hashes. The auditor imports NumPy/Pandas, not the simulator. It
checks saved events, shared streams, exact row identities and recorded weight
hashes; it does not independently rerun dynamics or export full runtime weight arrays.

## Frozen controls

Seeds 20261121/22/23 × quiet/A/B/A-cut/B-cut/A-fresh-restore/B-fresh-restore.
A=T4a-left+T4b-right; B=T4a-right+T4b-left. Two independent SeedSequence child
streams per seed; each has expected 50,000 candidates/s over 200–700 ms. Count
schedules are Binomial(min group size,50000*0.0001/min group size); shared uniform
random keys select distinct cells within each 0.1 ms step. Aggregate times/counts
match exactly across patterns. Within a pattern, all driver neuron assignments
and times match across cut/restoration. Candidate keys are regenerated from the
frozen seed/environment, not separately archived. All six count arrays and all
actual driver events are archived. Unequal populations imply unequal per-cell rates.

Every potential T4 input cell uses refractory 0 ms in every condition; other cells
retain 2.2 ms. The 68.75 mV model pulse and synthetic 100,000 Hz combined candidate budget
are uncalibrated diagnostic conventions. No food, direct HS/H2/DN drive or external
action policy is used. Anatomical labels are not a physical turning calibration.

The exact eight route rows / 346 positive contacts are saved in route-edges.parquet
and specified in protocol.json. Runtime assertions check every native weight against
the expected original/cut array. Restore trials zero and reinstate the same values
in a fresh original initial state before running, rather than reversing a lesion
mid-trajectory. Exact equality concerns ordered full-network spikes, actual drivers
and full weight hashes; membrane trajectories or biological recovery are not measured.

All six intact direction tests pass. A cuts give 0/0 on every seed; B cuts give 0/5,
0/6,0/8. Thus the predeclared complete-abolition control fails in 3/6, while driven-side
reductions and all six exact fresh restores pass. Never infer universal route or
individual-edge necessity from the prior visual bridge or the successful A cuts.
The B residual cause remains unresolved. It has not been fixed by fitting an encoder.

Original/private logs remain intact; selected public logs replace private run roots
with role names. Scientific arrays, CSVs, executed code and recorded outcomes remain
unchanged. No new body, learning, live visual projection, autonomy or driving was run.
