# SCAN complete canonical physical matrices

All five new canonical generations complete sixteen actual pairs each on
`scan/mlx5-DAC/same-host-netns`. The frozen controllers hold normal-priority
`isol-no-shared` leases. Both physical port counters advance during each pair;
all original administration, complete canonical bodies and typed owner/counts
are retained. These are two namespace processes on SCAN's physical DAC.

| Generation | NOS/ER | Market data | Mixed | Tick-to-trade |
|---|---|---|---|---|
| .NET Native canonical | S5 pass | S5 pass | S5 diag: achieved rate | S5 diag: full stability |
| C++ CORE canonical | S5 pass | S5 pass | S5 pass | S5 pass |
| Rust open canonical | S5 pass | S5 pass | S5 pass | S5 pass |
| TrueFix current-thread canonical | S5 pass | S5 diag: achieved rate | S5 diag: achieved rate and scheduler delay | S5 pass |
| NanoFIX public-transport canonical | S5 pass | S5 pass | S5 pass | S5 pass |

Each retains 120,080 primary samples, 120,080 delay samples and 330,250
application frames per peer. Together: **80 actual pairs, 600,400 primary and
delay samples each, and 1,651,250 original application frames per peer**.
Source and runtime byte/mode inventories remain unchanged. Failed report gates
are preserved; none is rerun or relaxed to obtain promotion.

## Independent cold replay

Ten original tiny/full matrices pass the SDK-free same-host reader. Its first
helper referred to a controller snapshot absent from SCAN and stopped before
replay. The separate v2 helper uses the already available frozen runtime source
archive; no producer source or raw input changes. That correction and both
helpers are retained.

All original datasets are exported under SCAN's shared CPU-slot leases with
bytes and modes preserved. Ten relocated matrices then pass independently on
BEELINK2, without SDK builds, sockets or live hosts. Every complete original
body, owner sink/count, raw quantile, extremum, physical counter/poll sequence
and report decision is reproduced exactly, including the Native and TrueFix
failures. This also verifies the maintained absolute-path portability fix.

## Retention and comparison

[evidence/scan-complete-canonical-physical-20261014](evidence/scan-complete-canonical-physical-20261014/retention-seal.json)
contains **6,203 files, 962,307,108 bytes**, seal
`7691f45dd0891cd38ac9f38b2f6a22f83ec77f1265951d74020b84beb4c5b2f7`.
It includes the complete original physical data, frozen stripped producer
inputs/inventories, queue transcripts, both sets of cold receipts and readers.
Earlier seals and historical campaign cells remain unchanged.

The actual single-rig SCAN Rust/NanoFIX comparison passes all four flows after
replaying both full arms. SCAN TrueFix remains blocked on MD and mixed. The
two-rig Rust campaign awaits HP's matching comparison reader. The separately
retained C++/NexusFIX review admits three flows on both rigs and withholds tick
ratios for differing receive spans. Neither pending comparison is inferred from
individual producer passes. Remaining language and release gates stay open.
