# QuickFIX/n parsing-only physical outcomes and strict .NET comparison

The public [parsing-metadata/full-request profile](RECORD_2026-10-17_quickfix_n_parsing_profile.md)
completes all **96 physical tiny/report pairs** across HP and SCAN. The separately
matched actual managed .NET 10 baseline passes all four Stage 5 flows on both
rigs. QuickFIX/n first CPU passes NOS and tick on HP; HP MD/mixed and every
SCAN peer flow retain rate failures. Some also miss delay/stability. Inherited
peer placement remains separately diagnostic on both rigs.

Ten successful producer-written compact cells are imported byte-exactly: two
new HP peer keys and eight latest .NET 10 baseline replacements, giving **653
compact cells**. All other successful bytes remain unchanged. The newly
qualified full-request/parsing profile cannot borrow older validated results.
Failed fresh cells replace nothing. The independent two-rig .NET comparison is
**blocked**: only HP NOS/tick have comparable metrics; all failed flow metrics
are empty. No whole-language minimum, QuickFIX anchor pass or other release
goal is inferred.

| Rig | Configuration | Flow | Full grade | Achieved cycles/s, min–max | Blockers |
|---|---|---|---|---:|---|
| hp | qfn-inherit | nos_er | S5 diag | 9787.974–9788.513 | achieved_rate_below_98pct |
| hp | qfn-inherit | md | S5 diag | 7044.091–7053.032 | achieved_rate_below_98pct;scheduler_delay_above_interval |
| hp | qfn-inherit | md_nos_er | S5 diag | 4615.340–4622.223 | achieved_rate_below_98pct;scheduler_delay_above_interval |
| hp | qfn-inherit | tick_to_trade | S5 diag | 9778.063–9779.972 | achieved_rate_below_98pct |
| hp | qfn-first | nos_er | S5 pass | 9872.390–9872.869 | none |
| hp | qfn-first | md | S5 diag | 6990.713–7020.304 | achieved_rate_below_98pct |
| hp | qfn-first | md_nos_er | S5 diag | 4584.030–4603.238 | achieved_rate_below_98pct;scheduler_delay_above_interval |
| hp | qfn-first | tick_to_trade | S5 pass | 9865.535–9866.711 | none |
| hp | managed-first | nos_er | S5 pass | 9983.338–9983.495 | none |
| hp | managed-first | md | S5 pass | 9951.617–9951.980 | none |
| hp | managed-first | md_nos_er | S5 pass | 9950.302–9950.759 | none |
| hp | managed-first | tick_to_trade | S5 pass | 9983.091–9983.227 | none |
| scan | qfn-inherit | nos_er | S5 diag | 9144.259–9207.118 | achieved_rate_below_98pct |
| scan | qfn-inherit | md | S5 diag | 4440.025–4537.360 | achieved_rate_below_98pct;scheduler_delay_above_interval |
| scan | qfn-inherit | md_nos_er | S5 diag | 2778.336–2924.054 | achieved_rate_below_98pct;scheduler_delay_above_interval |
| scan | qfn-inherit | tick_to_trade | S5 diag | 8775.530–9037.077 | achieved_rate_below_98pct;full_percentile_stability |
| scan | qfn-first | nos_er | S5 diag | 8891.129–9411.979 | achieved_rate_below_98pct |
| scan | qfn-first | md | S5 diag | 4467.022–4524.737 | achieved_rate_below_98pct;scheduler_delay_above_interval |
| scan | qfn-first | md_nos_er | S5 diag | 2813.499–2907.783 | achieved_rate_below_98pct;scheduler_delay_above_interval |
| scan | qfn-first | tick_to_trade | S5 diag | 8727.342–8995.481 | achieved_rate_below_98pct |
| scan | managed-first | nos_er | S5 pass | 9975.234–9975.433 | none |
| scan | managed-first | md | S5 pass | 9974.707–9974.889 | none |
| scan | managed-first | md_nos_er | S5 pass | 9801.438–9853.993 | none |
| scan | managed-first | tick_to_trade | S5 pass | 9974.378–9974.572 | none |

## Frozen products and actual accepted topology

Physical source `3024702418a916e809c495ba053a0352532aa6d9`; 925 source files,
canonical inventory SHA-256
`aa63969eb9e2f5a6e702bb4cd940798f6e76eab41d00a44e7faf2dac007a5bad`.
The peer DLL is `d23f28cf968a57ed0a2fe6c375d1319dcfb1b96293ae5dae130a09f1537defb3`,
with the original supplied SDK core/factory/dictionary/dependencies unchanged.
The actual managed DLL and exact SDK are those of the separately qualified
[explicit net10 application](RECORD_2026-10-17_dotnet_managed_net10.md). All
actual compilation inputs and runtime files are bound to their qualification
and immutable root-installed generation. Both actual processes use .NET
10.0.12. No SDK/private API patch, new root helper, sudo rule or target rebuild.

| Rig | Configuration | Immutable installed generation |
|---|---|---|
| hp | qfn-inherit | `bdeb75bea778b1d5c088d4f532a5ce6d808c5df9310e7e5bb01179c6cf486431` |
| hp | qfn-first | `97c5df54f6cf8bf09a85c82b9e9199c23a71710fe44040fb50b12acde19a390a` |
| hp | managed-first | `c6eb8e8453d12dc542e21b82100daf8055cd96e460a03f03d46f18405812aadc` |
| scan | qfn-inherit | `0633c550d46ea338cb98e2de170db1d6dfba73cb6c88e01be6c91ef900a58a4c` |
| scan | qfn-first | `b5fc05399a1e58f64f27b86a5c265eb6d57e0e817e2d312e6916eaee5a389c93` |
| scan | managed-first | `e6e3341b5a87ef111310a1c4a812c725ff6795f898baf817df622fe2d41d2d94` |

Each full matrix has ten graded preflight cycles, 1,000 warmups and three
10,000-cycle runs at target 10,000 cycles/s. Both capture streams close before
warmup; IDs and complete typed owner folds reset at each phase. Exact SDK
serialization/parsing/callback/Logon/Logout and all book values/counts pass.
Every actual primary/delay sample is retained. Twelve independent tiny/full
replays check **720,480 primary**, **720,480 scheduler-delay samples**
and **1,983,900 application frames per peer**, reproducing all original
quantiles/extrema, physical counters and grade decisions exactly.

HP uses Solarflare sfcA/sfcB, server 8–12/client 13–17; SCAN Mellanox mlxA/mlxB,
10–13/14–17. First-CPU readbacks are 8/13 and 10/14, within those budgets.
Both fixed entry and original physical NIC TX counters pass for every pair.
Actual kernel/PCI NIC/firmware/namespace/CPU probes are retained. Preparation
holds `isol`; timing holds `isol-no-shared`, HP high/SCAN normal priority,
after CPU/process/disk checks. Port ranges 64500–64515, 64520–64535 and
64540–64555 are disjoint. Only existing fixed helpers use root; applications
execute as the benchmark user.

## Independent matched reader and combination

The SDK-free reader independently replays both full first-CPU arms per rig,
binds the complete frozen source archive/inventory, grader/config/entry facts,
exact .NET patch runtime, actual all-endpoint clocks/CPU masks, disabled value
validation and the peer's original group-parser metadata. Original host probes
bind actual same-rig hardware facts. Request preparation must be inside RTT;
tick endpoints must use prepared wire and first callback. No compile, socket,
physical rerun or input mutation is performed.

The first cold-reader v1 refused the metadata collector because its engine ID
intentionally sits outside the benchmark registry. Its failure is retained.
Corrected v2 binds the metadata collector's exact one-file/source/generation,
root-helper and endpoint configuration directly, without granting it benchmark
admission. Both v2 readers reproduce all original physical decisions and return
blocked comparisons with explicit failed-flow reasons. The reader/combiner and
unchanged Rust consumer tests pass **62 controls**, no skips.

Matched reader source `9031daf561acf5e3ee635ff470c6388fa8b9f370`; stripped
929-file inventory SHA-256
`33d59ea5ebb9474be2883084697c594c5277a8ff338a6b6a6c1981d76a0d3dfa`.
The two original per-rig comparison receipt hashes are
`1ed977a19c908223ec4c5eefa0d5d54d40f84dd615cf27c5f8328e44c5c8c296`
and `90e92cf8849861ecb89bed18113dec30a1504b9a5b557de3587d0e8e21030923`.
The committed compact decision is
[dotnet-callback-parsing-first-cpu-20261017.json](comparisons/dotnet-callback-parsing-first-cpu-20261017.json).
It is 20,447 bytes. The combiner verifies every receipt hash, complete raw/count/
extrema/decision proof, matching exact executable/SDK/runtime products and
source. Full generation IDs retain different host qualification provenance;
executable bytes must still match across rigs. Failed flows have no ratios.

Both hosts retain physical source/operations at
`~/.cache/libhft/fullbench-dotnet-quickfix-n-parsing-physical-20261017-v1` and
working outputs under `~/build/codex-fullbench/libhft/dotnet-quickfix-n-parsing-{qfn-inherit,qfn-first,managed-first}-physical-20261017-v1`.
Independent v1/v2 reader capsules/working output remain under the corresponding
`fullbench-dotnet-callback-cold-20261017-v*` cache and `dotnet-callback-cold-20261017-v*`
build roots. Only small receipts/manifests, ten compact cells and the bounded
comparison decision were copied locally; no new raw Git/archive import.
