# Residual-CNN crossover protocol ## Scope and immutable topology This is the residual-family realization of `CROSS_ARCHITECTURE_CROSSOVER.md`. The primary validation panel contains all nine registered methods at ResNet-20, ResNet-32, and ResNet-56, hence 27 cells. A failed, nonfinite, chance, out-of-memory, or timed-out cell remains in the panel. No endpoint may remove a method or collapse a depth. Every cell uses `CIFARLocalResNet`: the standard CIFAR `6n+2` basic-block topology, base width 16, BatchNorm after every convolution, option-A identity shortcuts, residual multiplier 1, global average pooling, and a linear 10-class readout. Trainable forward tensor shapes and counts are identical within a depth. The shared data path is the stratified seed-2027 45k/5k CIFAR-10 train/validation split, standard crop/flip augmentation, batch 128, float32, model/loader seed 0, momentum 0.9, and weight decay `1e-4`. Test is loaded by the inherited data utility but never iterated, selected, or reported in P1/P2. ## Method adapters and completed R0 mechanics - BP is exact reverse mode on the common forward graph. - Ordinary FA is `CIFARHierarchicalFAResNet`: independent fixed convolutional feedback follows every child edge; option-A shortcut adjoints and local ReLU/BatchNorm Jacobians are exact. - DFA is the existing independent output-to-population spatial vectorizer. - PEPITA performs the ordinary and error-modulated presentations, with a fixed output-error-to-input He-uniform projection times 0.05. A hidden first-minus-second activity field directly multiplies the modulated presynaptic state; convolutional correlations average spatial positions. - Forward-Forward overlays a candidate label on the first ten input coordinates, normalizes each edge input, greedily trains one residual-DAG population at a time with the softplus goodness objective, and scores all candidates using layers after the first. BatchNorm updates only at the target layer. The linear readout is the final goodness layer. - Equilibrium Propagation has one hard-sigmoid state per residual-DAG population, synchronous leaky dynamics, 20 free and 4 nudged steps, `dt=0.5`, beta magnitude 0.5 with random sign, squared output cost, symmetric forward-edge transposes, and free-versus-nudged local correlations. - Dual Propagation uses the author DP-transpose setting: alpha 0, beta 0.1, 16 topological `fwK` inference passes, and the same forward edge for symmetric feedback. Each option-A shortcut contributes its exact parameter-free transpose. - clean-KP is the existing independently recomputed reciprocal-correlation rule. It never reads a forward weight or forward update. - SDIL uses that same KP substrate plus four-RMS soma-predictable traffic, a 64-example instruction-free closed-form predictor fit, and the paired neutral projection on every task minibatch. The deterministic float64 audit requires matched forward outputs or forward parameter counts and explicit local equations. Current errors are: Dual-Propagation contrastive directions `1.07e-15`; PEPITA local directions `1.52e-14`; EP contrastive directions `3.36e-14`; and Forward-Forward local objective exactly zero error with zero non-target gradients and parameter changes. Existing BP/FA/DFA/KP/SDIL mechanics remain covered by `experiments/conv_local_smoke.py`. Autograd is used only by BP, by the single detached target layer in FF, and by independent post-training alignment diagnostics. ## R1 bounded validation-only selection R1 uses ResNet-20, seed 0, ten constant-rate epochs, full 45k training data, 5k validation data, validation after every epoch, no early stopping, no alignment probe, and no test evaluation. Fixed canonical or previously validated settings are BP 0.1, FF 0.03, clean-KP 0.1, and SDIL 0.1. The complete bounded grids are: | Method | Hidden/base learning rates | Output rate | |---|---|---| | ordinary FA | 0.01, 0.03, 0.1 | 0.1 | | DFA | 0.01, 0.03, 0.1 | 0.1 | | PEPITA | 0.0003, 0.001, 0.003 | same | | EP | 0.0003, 0.001, 0.003 | same | | Dual Propagation | 0.01, 0.025, 0.05 | same | Select maximum best validation accuracy, then a finite final loss, then the lower rate. If every candidate is nonfinite, select the lowest rate and retain all failures. The selected rate is copied without depth-specific tuning to ResNet-20/32/56. R1 development records are not primary panel cells. A timeout or nonzero exit has a manifest, ranks after every finite candidate, and does not make the registry disappear. ## R2 complete 27-cell validation panel BP, ordinary FA, DFA, clean-KP, SDIL, and Dual Propagation receive 200 global epochs with 10x drops at epochs 100 and 150; their R1-selected base rates and the fixed output rates above are unchanged. PEPITA receives 100 epochs with its selected rate and 10x drops at epochs 60 and 90. FF receives 40 epochs per greedy layer at its fixed Adam rate. EP receives 100 constant-rate epochs with its selected rate and fixed relaxation parameters. Each method sees the same 45k ordinary examples per applicable global epoch; extra presentations, candidate-label passes, free/nudged relaxations, symmetric feedback, and local correlations are charged separately. Every cell records the complete command, source and protocol hashes, selector hash, split and CIFAR source hashes, final and best validation metrics, completed epochs, first nonfinite step, wall time, physical GPU, peak allocated and reserved memory, parameter count, forward MACs, ordinary examples, presentations, candidate evaluations, relaxation passes, causal task-loss queries, and method-specific invariants. A per-cell 48-hour wall cap is fixed before launch. A capped or failed cell is recorded and the shard continues. The complete analyzer rejects missing/duplicate cells, source or architecture drift, test evaluation, ordinary-example drift, and silent failure omission. The R1 selector itself uses the same source discipline: one pre-launch lock binds its complete 19-job registry to a clean commit, tracked-file hashes, and the physical-GPU5/7 allowlist. Every job rechecks the lock before starting, and its manifest records the resolved physical UUID. Formal launch occurs from a detached worktree so unrelated main-branch commits cannot mix revisions inside a shard. The R2 executable contract is `experiments/resnet_crossover_r2.py`. It refuses any selector that is not the complete 19-record P1 pass, requires the selector itself to be committed, binds its hash and selected rates into a new clean-source launch lock, and materializes all 27 method--depth cells before sharding. The two shards interleave EP, Dual Propagation, and Forward--Forward rather than assigning all expensive state methods to one GPU. `experiments/analyze_resnet_crossover_r2.py` requires every manifest, retains timeout/nonfinite outcomes, rejects test access and source/split/architecture drift, and checks method-specific presentation, relaxation, local-VJP, and logical-query counts. The registry and schedule can be checked before P1 finishes with: ```bash python experiments/resnet_crossover_r2_smoke.py ``` ## R3 untouched confirmation No R3 test endpoint opens until all 27 R2 records and the complete analyzer are committed. A later commit must freeze the untouched seeds and evaluate every method/depth cell, never an SDIL-only winner subset. Native author records remain separately labelled fidelity evidence and cannot substitute for a matched cell. ## Prespecified analyses Report all methods at all depths in accuracy-versus-wall and accuracy-versus-hardware-independent-work panels, with failure markers. Report ResNet-20 to ResNet-56 paired change, forward parameter count, and an independent fixed alignment probe. clean-KP equality in a clean task is a substrate sanity check, not an SDIL novelty result. A residual-family scaling claim requires the complete panel and cannot be inferred from the already confirmed four-method panel alone.