# QuickFIX C++ shared public SDK group-order descriptors

The [quantity-source measured CPU profile](RECORD_2026-10-19_quickfix_cpp_quantity_cpu.md)
retains a 38.95% inclusive MD-server snapshot-construction share, including
6.03% for the SDK array-based ordering constructor and 5.60% for its ordering
setup. Inclusive entries overlap. These observations motivate a bounded
consumer candidate; they establish no physical timing improvement.

## Consumer change and invariants

The request's entry-type/symbol groups and snapshot's MD-entry groups use the
original SDK's public `Group(int, int, const message_order&)` overload with
constant function-local SDK sorting descriptors. The previous constructors
rebuild the same descriptor from delimiter/array for each new group. Existing
message body orders already use this same public SDK metadata lifetime.

Every message, group, field/value and serialized wire remains freshly built.
No application payload, complete message or formatted number is cached.
The upstream SDK, dictionary, complete parsers and typed getters are unchanged.
Required body/field/group order, full-book extraction/owner folds, admin and
capture observations, request/reply/tick clocks, warmups and the original
10,000/s report contract are unchanged. SDK shared-array ownership uses its
original atomic reference counts; no SDK data structure is patched.

The native fixture adds eighteen original/shared metadata cases, using all
six insertion permutations for each of three descriptors. Actual original
SDK serialized field order, group count/delimiter metadata and independent
field ownership after a copy must agree. It retains 48 independently checked
wire cycles, twelve owner vectors, 43 refusals, 660 parsed-message immutability
checks, 1,000,078 price checks and 1,000,088 quantity checks. Checks throw in
release builds. The new optional marker requires exactly eighteen controls
and cannot borrow proof from absent, altered or repeated markers.

Native compilation/execution, source-specific portable controls, both public
socket/threaded functional paths, independent cold replay and fresh physical
collection remain separate gates. This candidate grants no timing, full-plan,
matched-comparison or public standalone/release admission. The failed timings
of earlier sources retain their original grades. HP uses high-priority queued
CPU leases, and both hosts check helper status/processes before heavy work.
The agreed Java/SBE extraction/manifest freeze remains untouched.

## Frozen source and complete qualification on both hosts

The runtime source is `a2485d8cb0b0c1457ba2d083c01b8f14566dd4d4` on main.
Its private archive contains 9,986 regular files, zero symlinks and source
inventory digest `2887f75915a63189f73a21c284d982a8d2dc9f6af40b045b1205616e85ba2198`.
The 70,956,635-byte capsule is
`81981670aabc43ce0a0df8102199e7fcac73ae2a272ca8b28ed229e79b08d4c4`;
its qualification worker is
`999a7662afc11c0171baa5cf19dfa1e10188cb4d1cd654aaa8ce11a68fce20a8`.

An initial local invocation omits the extraction owner's newly required inert
example root: four checks fail and 285 pass. Declaring
`LIBHFT_BENCH_INERT_EXAMPLE_ROOT` alongside the other explicit inputs gives
289 targeted passes. The public sources/guide have zero scrub findings.
The consumer does not restore implicit sibling discovery.

Each actual frozen host archive then passes its complete private portable
controller suite: **2,603 tests plus 294 subtests**, two explicit SDK-source
deselections and zero skips/failures. Each JUnit contains 2,897 passing cases,
zero errors and zero skips. This is private portable-controller qualification;
`full_suite_pass` refers only to that declared suite. The public standalone
manifest gate and other engines' actual SDK/native gates remain separate.

Both hosts independently compile five fresh native products with the pinned
GCC 15.2.1 and unchanged original QuickFIX static SDK. All 69 generation-argument
and twelve SDK vectors pass. Each socket/threaded model passes twenty bounded
and 23 legacy TCP pairs, independent 43-pair replay/76 refusal controls and
public twenty-case replay/88 refusal controls. The eighteen descriptor checks
and all original wire/owner/numeric/immutability checks pass. Every source and
SDK byte/mode remains unchanged. Twenty-two bounded payloads per host, including
the actual JUnit, are collected and independently verified.

Native receipt hashes:

- SCAN: `e7db3a3603113ef3ad29df190ac533b248e15c89eb91be37bab55378a781ea28`.
- HP: `39edf0905879d8f0e3bebdc3286ce1067ebec20ea2a06ffcf5c5ca5ea4386acc`.

Both native builds produce the same original SDK binaries: socket
`f3e0932069a672835cc2bf438e07b86eeb13c96431ed4b70588dd06043a4d226`,
threaded `9e4bafb0a35d6e4250f7cbaab54833790830780640443f625ddd8a70cb364ffb`.
The focused failures of the older quantity archive remain separate. These
new native/portable passes supply no physical timing or public release grade.

## HP original-placement physical matrix completes

HP's high-priority isolated preparation and quiet report finish all four tiny
and twelve full report pairs, with all 32 process exits zero. The independent
cold readers reproduce 80/120,000 primary and delay samples, exact original
raw quantiles/extrema and every grade, plus 100/300 captured application
frames per peer. Source bytes/modes, registered helpers, runtime UID/GID 1000,
original fixture/owners, exact fixed CPU/namespace identities, hardware facts
and both physical TX-counter gates pass. Twenty-three bounded files are
verified; no raw series or captures are imported.

| Flow | Achieved/s across three reports | Failed gates |
| --- | ---: | --- |
| nos_er | 7,091.267–7,110.709 | achieved rate |
| md | 5,808.867–5,868.317 | achieved rate |
| md_nos_er | 3,657.556–3,680.072 | achieved rate, scheduler delay |
| tick_to_trade | 7,038.483–7,061.438 | achieved rate, scheduler delay |

The generation is `63453b1e0283accd49638ba6064418076c38430c714646965d8137d23884643f`;
completed receipt `a73a318317bc2790e782fb9869a646802d7c63ae2dffdae847fc8db5255a54fe`.
All four flows remain S5 diagnostic at the original 10,000/s target. The writer
runs and exports zero compact cells. The separate SCAN physical preparation
remains queued; its native pass cannot supply a physical grade. No retained
good key or matched comparison changes. A separately declared CPU-placement
experiment waits for each host's original-placement independent review.

## SCAN original-placement physical matrix completes

SCAN's isolated preparation and separate quiet report complete the same sixteen
pairs and all 32 successful process exits. All original functional, UID/GID,
entry/CPU/namespace, fixture/owner, admin/capture, hardware and both physical
TX gates pass. Both cold readers reproduce every original primary/delay
sample, quantile/extremum and decision: 80 tiny and 120,000 report samples per
probe, with 100/300 captured application frames per peer. Source bytes/modes
remain unchanged. Twenty-three bounded files are checked, with no raw import.

| Flow | Achieved/s across three reports | Result |
| --- | ---: | --- |
| nos_er | 5,816.203–5,932.920 | S5 diagnostic, rate gate fails |
| md | 4,549.622–4,621.128 | S5 diagnostic, rate gate fails |
| md_nos_er | 2,489.368–2,556.504 | S5 diagnostic, rate gate fails |
| tick_to_trade | 5,566.987–5,744.229 | S5 diagnostic, rate gate fails |

The source-specific generation is
`bb6fd79cd5689b56eb1d4de9f452974b419e10a62bf552c67b5214d2e008b167`;
completed receipt `fcdf06ddde9867508664e07d3272be6508cfb922d78983cf9238a62698e70bf2`.
Full detailed blocker sets stay in the exact manifest/cold receipts. The writer
runs and exports zero cells. This completes both original-placement matrices
without promoting a comparison, replacing a good key or changing the report
contract. The separate single-CPU experiment retains its own preparation and
runtime facts, including its first failed preparation; no grade is borrowed.

## Bounded diagnostic latency summaries

These remain diagnostics under the failed original report gates. p50, p99 and
p99.9 are medians of the three run percentiles; worst is the maximum original
run extremum. Each flow retains 30,000 measured cycles after 1,000 discarded
warmups per run. CV uses sample standard deviation across the three run
percentiles, divided by their mean. Original rate/delay/stability failures
remain authoritative; these summaries grant no matched speed claim.

| Rig | Flow | p50 us | p99 us | p99.9 us | Worst us | CV p50 / p99 / p99.9 |
| --- | --- | ---: | ---: | ---: | ---: | --- |
| HP | md | 169.985 | 174.957 | 189.402 | 402.145 | 0.632% / 0.949% / 2.324% |
| HP | md_nos_er | 272.358 | 285.603 | 320.921 | 366.991 | 0.322% / 0.550% / 6.758% |
| HP | nos_er | 140.858 | 144.359 | 153.531 | 248.487 | 0.289% / 0.389% / 2.840% |
| HP | tick_to_trade | 77.599 | 81.168 | 84.738 | 91.096 | 0.443% / 0.419% / 0.829% |
| SCAN | md | 216.260 | 229.175 | 276.301 | 299.658 | 0.802% / 1.249% / 0.597% |
| SCAN | md_nos_er | 397.051 | 515.016 | 549.136 | 583.724 | 1.482% / 1.325% / 3.344% |
| SCAN | nos_er | 168.481 | 178.982 | 215.484 | 244.114 | 1.055% / 1.184% / 3.766% |
| SCAN | tick_to_trade | 99.321 | 105.438 | 114.413 | 137.564 | 3.313% / 3.061% / 3.017% |
