# Native .NET monotonic public-handler DAC collection

## Outcome

The [qualified monotonic public handler](RECORD_2026-10-17_dotnet_native_handler_clocks.md)
completes all four tiny and all twelve report pairs on each accepted physical
rig. HP passes all four full Stage 5 flows. SCAN passes NOS, MD and mixed;
tick-to-trade fails the unchanged percentile-stability gate. Seven separate
`dotnet-native+handler+complete-rtt` compact cells are admitted. No previous
result key or failed row is replaced, and there is no unchanged timing retry.
A current .NET peer minimum is not admitted by these individual cells.

| Rig | Flow | Full grade | Achieved cycles/s, min–max | Blockers |
|---|---|---|---:|---|
| hp | nos_er | S5 pass | 9893.9–9894.5 | none |
| hp | md | S5 pass | 9866.8–9887.7 | none |
| hp | md_nos_er | S5 pass | 9880.1–9880.4 | none |
| hp | tick_to_trade | S5 pass | 9891.7–9892.1 | none |
| scan | nos_er | S5 pass | 9979.8–9981.0 | none |
| scan | md | S5 pass | 9892.3–9892.6 | none |
| scan | md_nos_er | S5 pass | 9800.7–9816.1 | none |
| scan | tick_to_trade | S5 diag | 9976.6–9980.8 | full_percentile_stability |

SCAN tick's original three p50s are 25.773, 26.341 and 28.869 microseconds.
Their sample CV is 6.105584%, above the 5% p50 bound. Its p99 and p99.9
sample CVs are 4.402560% and 5.093956%, below their respective 10% and 25% bounds.
All three original rates pass. That failed flow has no new compact result
or comparison ratio. The gate is retained rather than relaxed.

## Source, products and actual hardware

- Physical source pin: `18806f203a0b3c2cb795ea508fb796529167e9a4`.
- Complete stripped source: 903 files, inventory SHA-256
  `a705e9f0a24bb2bddf45ec7b7b6141ab5e5164039fa225fd06f8be2436e4cf8a`.
- Qualified driver DLL, identical on both hosts:
  `5162e8cd8eb9f36e461a8b6c0d76631d5bb2a638aa239c6842945413bcdc129b`.
- Existing native library:
  `91bdc88f8cd2d375262daafdc233ce2b16bc49e8fcae0789da12af999c737dc9`.
- Installed HP generation:
  `e52ac8598eb0dd21a1c62494cc38d658bd612a3f9816e18c5eda9021e5b15f59`.
- Installed SCAN generation:
  `6dd7542cba8a49dbdac6faac4ffdc2d2a5a298d0f735dec4c0a3b2ba3bce2c9d`.

The six actual harness compilation inputs match the qualified generation
byte-for-byte. Managed runtime assets and original native library match the
passing functional manifests. The runtime bundle binds those assets, the
SDK content pin, source pin, actual `dotnet --info` and the unchanged original
qualification receipts. Its fixed wrapper explicitly selects handler clocks,
zero probe and the supported `LIBHFTNET_LIBRARY` binding to its immutable
bundled library. No SDK/native rebuild or source patch is made.

Root helpers are unchanged. The generic installer admits only the bounded
manifest data; the fixed entry chooses the namespace and CPU budget and
runs the application as the benchmark user. No further password/registration
step is required. Each sitting binds actual kernel, NIC, firmware and both
port namespace/CPU observations through the independent host-probe generation.
HP uses Solarflare with server 8–12/client 13–17; SCAN uses Mellanox with
server 10–13/client 14–17. Preparation uses `isol`; physical collection uses
`isol-no-shared`, high priority on HP and normal on SCAN. Host slot/process
state and disk are checked before work.

## Full functional and cold proof

The 32 actual pairs include 24 full report pairs: 1,000 warmups, 10,000
measured cycles per run, three runs per flow, target 10,000 cycles/s. Every
endpoint exit, independent canonical body/owner/fold, measured admin,
normal-user entry, physical wire counter and complete primary/delay sample
check passes, including the timing-diagnostic SCAN tick. Each endpoint
captures only ten pre-warmup cycles and closes before warmup. Measured
application capture is zero and boundary probe is integer zero.

Tick uses the same process-local monotonic domain before the prepared public
batch flush and immediately after public polling delivery, before the
benchmark message view/extraction. RTT ends after final parsing, extraction,
fold and checks. The old native UTC receive endpoint remains a separate
historical profile and supplies no clock admission to this generation.

Both complete tiny and report cold replays pass. Per host, tiny reproduces
80 primary/80 delay samples and 350 application frames per peer; full report
reproduces 120,000 primary/120,000 delay samples and 330,300 application frames
per peer. Every original quantile, true extremum, fixture proof and promotion
decision is exact. Both source and report bytes/modes stay unchanged. No cold
replay compiles an SDK, opens a socket or repeats timing. Seven successful
producer-written compact results are imported byte-exactly; their CDFs have
at most 2,000 points per latency kind and pass the schema/path gate.

## Retention and remaining work

On both hosts the original source and working directories remain at:

- `~/.cache/libhft/fullbench-dotnet-native-handler-physical-20261017-v1`
- `~/build/codex-fullbench/libhft/dotnet-native-handler-physical-20261017-v1`

Only successful compact cells and this record enter Git/website data. No
raw capture, sample stream, runtime log or source tarball enters a new archive.
SCAN tick stability, fresh managed .NET bounded-clock qualification and
QuickFIX/n/FIX Antenna rate/fixture/comparison gates remain open. Historical
and separately configured results retain their original identities/grades.
