# Canonical QuickFIX/n measured phases — 2026-10-17

Status: functional/clock/raw qualification passed independently on HP and SCAN.
This grants no physical result, rate/stability grade, or matched .NET comparison.

## Frozen inputs

- Harness source: `9defb2b1477e3b5ee5a8928dd2c0dccbe8786e6e`.
- Export: 922 files, canonical bytes/modes inventory SHA-256
  `8d8d360b79af25bf685d0732103a607c74fcfa1ce28de59b9bad1be08d8cfdad`.
- Exact driver DLL on both hosts:
  `b0e99787353f20a86d92ee0658579a713fbcfa737f0d4a94285d51d8ac8ccd9c`.
- Upstream SDK source remains `274b491d76f7755be85452dbefead08b2a6d62bd`.
  Original core/factory/XML, logging/DI dependencies and their exact hashes
  remain those of the [session qualification](RECORD_2026-10-17_quickfix_n_canonical_session.md).
  No SDK source patch, substituted parser, or LibHFT engine assembly is used.
- Actual runtime remains .NET 10.0.12. Dictionary validation remains active;
  only the original D's required tag 60 is relaxed for the shared canonical body.

## Actual two-process qualification

Each host built the standalone exported consumer against the supplied SDK
with zero compiler errors or warnings, without a LibHFT source dependency.
The missing-QuickFIX-SDK build guard refused its negative case. Each target
reproduced all 120 original SDK wire/body vectors and all four typed owners.

Each host completed 48 actual measurement pairs: inherited and first-allowed-CPU
foreground placement, ordinary and deliberately delayed clocks, all four flows,
and three repeats with 5, 0 and 5 warmup cycles. Each pair retains 20 primary and
20 scheduler-delay values only for its actual owner. Each host additionally
passed eight regressions of the original functional entry (four ordinary and
four delayed). Total: **112 actual TCP pairs**, **1,920 primary samples** and
**1,920 scheduler-delay samples**, plus the separate functional clock traces.

The measured consumer captures ten preflight cycles, closes both directional
streams, checks the actual typed owner sink, and resets IDs/folds separately
for warmup and measurement. Complete SDK callbacks, wire counts and measured
owner sinks cover the uncaptured phases. Tick preparation and completed-write
counts cover every actual W. Actual public Session callbacks enforce the
expected leg and own SDK-generated Logon/Logout. No warmup/measured application
frame is written to disk. Owner pacing retains the actual measured interval;
achieved rate is recomputed from that interval by the reader.

RTT ends after required final extraction/checks. Tick starts after SDK
serialization/byte encoding in public IResponder before its first write, and
ends at first FromApp entry. The 2 ms diagnostic delays only measured receive
and extraction regions. Its **960 selected owner spans** on both hosts match
raw samples and the required callback/extraction endpoints exactly. Ordinary
runs have no probe trace. These diagnostic samples are not report-grade.

CPU budgets: HP server 8–12/client 13–17; SCAN server 10–13/client 14–17.
First-CPU mode narrows only the foreground thread and records actual kernel
readback. Both jobs used outer `host-cpu-slot wait --pool isol`; HP priority
was high and SCAN normal. Concurrent shared work was permitted, so no quiet
or timing claim is made.

## Independent cold controls

The read-only SDK-free measurement reader checks exact original SDK hashes,
.NET runtime, dictionary policy, bilateral bodies, full counts and owner folds,
raw framing/counts, original administration, prepared ticks, clock traces,
CPU budgets and achieved-rate interval. Per pair it refuses 32 controls,
33 for tick; delayed cases add four clock controls. The actual functional
regressions also retain their ten/fourteen controls. **1,740 refusals per host,
3,480 total**, all passed. Coherent price corruption changes both corresponding
peer captures and repairs BodyLength/CheckSum; deepest book values still fail.
Coherent measured sink edits, wrong SDK/runtime, capture leakage, shortened
clocks and truncated raw streams also fail. Original bytes/modes and every
supplied SDK input are unchanged by replay.

The SDK-free harness suite passed **2,284 tests and 58 subtests**, no skips.
Subsequent immutable admission/compact integration passed 183 focused tests,
no skips. Those checks do not upgrade these functional pairs to Stage 5.

## Retained working output and next gates

Both hosts retain their immutable capsule at
`~/.cache/libhft/fullbench-quickfix-n-canonical-measurement-20261017-v1` and
working output at
`~/build/codex-fullbench/libhft/quickfix-n-canonical-measurement-20261017-v1`.
Small completion receipts were inspected locally; no raw working artifacts
are imported into Git or an archive. Existing compact successful cells remain.

The immutable-generation controller now recognizes this separately reviewed
producer, freezes its SDK policy with grading sources, and refuses delayed
probes for report admission. A future successful compact key names .NET 10
explicitly. Actual fixed-entry preparation, tiny/full physical collection,
independent physical replay, rate/stability gates and a separately qualified
.NET 10 LibHFT baseline remain necessary. The first baseline build attempt
failed NETSDK1005 during framework restore, before a target benchmark ran;
its original output is retained and the corrected build has a fresh capsule.
