# SCAN DAC full-bench follow-up, 2026-10-01

This record separates physical runs from local adapter checks. SCAN's `mlxA`
and `mlxB` namespaces cross its physical mlx5 loopback DAC; the topology is
`scan/mlx5-DAC/same-host-netns`. Both physical ports had positive TX deltas and
the recorded FIX cycles passed the canonical audit where a row completed.

## Philadelphia-fast physical report profile

The [complete report bundle](evidence/scan-dac-20261001/philadelphia-fast-medium/summary.csv)
contains one process pair per flow with three internal runs, with 1,000
excluded warmups and 10,000 measured samples in each run. Achieved rates were 9,925–9,984/s, and
all four wire audits passed. Every row failed the run stability gate, including
the server-owned `tick_to_trade` gate. The result is four `S5 diag` rows, with
no new report-grade Philadelphia-fast number. Raw samples, Java logs,
manifests, audits and physical counter snapshots are retained beside the
summary. The SCAN original is
`~/archive/libhft/fullbench/scan-philadelphia-fast-medium/phfast_20261001_185107/`.

A later [50,000-warmup probe](RECORD_2026-10-02_scan_philadelphia_warmup.md)
passes `nos_er` and server-clock `tick_to_trade`, but fails market-data
stability and times out on the combined flow. It does not establish a
four-flow comparison on SCAN.

## Native physical report attempt before the rate correction

The [native report attempt](evidence/scan-dac-20261001/native-medium-before-rate-fix/results/stage5_native_summary_20261001_193015_332468.csv)
ran NexusFIX and libtrading with 10,000 samples per run and three process
pairs per flow. Its controller printed four NexusFIX rows and two libtrading
rows as `S5 pass`. **Those six pass labels are invalid for publication.** The
native adapters printed the requested 10,000/s as their achieved rate in
paced runs; the rate gate therefore had no independent observation of
saturation. The code was corrected in `6e4a72f94` to divide each run's actual
sample count by the shared harness's measured wall time. The pre-fix raw
samples, process logs, port counters and manifests remain available to audit
the mistake, but none of these rows changes [COVERAGE.csv](COVERAGE.csv).
Libtrading's `md_nos_er` and `tick_to_trade` also failed during this attempt.

## Corrected local preflights

The [QuickFIX C++ local summary](evidence/scan-dac-20261001/quickfix-local-ratefix/results/stage5_native_summary_20261001_194159_487765.csv)
passed four 20-sample, 100/s TCP flows with canonical audits, measured rates
of 99.826–99.905/s, and zero server exit codes. Its pinned acceptor had
previously crashed in `SocketServer::close()` after client logout; the
disconnect-driven adapter now flushes the result and exits after logout,
avoiding the upstream close race. This is local functional evidence, not a
physical Stage 5 row.

The [SCAN NexusFIX local summary](evidence/scan-dac-20261001/native-local-ratefix/results/stage5_native_summary_20261001_195556_583748.csv)
passed four tiny flows with canonical audits and measured rates of
99.970–99.985/s. SCAN's local bundle also retains QuickFIX C++ and
libtrading diagnostics; libtrading's local `tick_to_trade` did not pass.
The source checkout for NexusFIX remains pinned and clean; its GCC 11
compatibility headers are in the session build root.

Corrected native binaries are hash staged on SCAN and HP, and the read-only
installer check passes on both hosts. A root install and fresh physical
report run are required before any native status promotion. The HP native
runner waits for both its base installation and the corrected native install,
then requests a high-priority isolated CPU slot.
