# Immutable native DAC payloads and complete QuickFIX C++ capture

2026-10-04. Functional qualification and installation preparation. **No new
physical Stage 5, report timing or driver release admission.**

## Changes

Native machine configuration v1 retains its original filenames and hashes.
A separate private v2 declaration binds a generation directory, entrypoint,
every runtime file, compiled source commit, observation capabilities and
QuickFIX dictionary. Admission checks root ownership, non-writable modes,
regular files, symlink refusal and every declared SHA-256. Older pins and
installed binaries are not replaced.

The new namespace entrypoints drop to the benchmark user with `runuser` before
executing the SDK. The installer uses fixed inputs and destinations, refuses
a different existing generation, verifies copied bytes before atomic directory
publication and supports read-only `--check`. Actual namespace execution still
requires root installation. Staging does not prove wrapper execution.

`installed_sha256` identifies the admitted launcher; the `installed_payloads`
file map separately identifies its ELF, provenance and dictionary. Actual
machine facts and root assets stay outside the portable export.

QuickFIX C++'s streaming SDK Log previously accepted at most 1,000 cycles,
while a medium warmup/measured pair needs 11,000. The bounded limit is now
1,000,000; the default one-cycle dump stays unchanged. The controller requires
fixed runs, retains both peers' complete original serialized application bytes
and admin windows, rejects incomplete/failed retrievals, checks every canonical
body and independently checks owner sinks, folds and prepared tick boundaries.
The tick owner emits one result per external process and omits `runs`; that
case is explicitly constrained. Existing fixture/report flags remain false.

## Frozen sources and actual checks

| Input | Identity |
|---|---|
| Compiled QuickFIX adapter source | `66e02ff8dd5e7e7b47a87507a1d2190e3299eeca` |
| Corrected controller and complete 756-file archive | `f23b1a5ab121b087e52d1f96f5f303c600082588` |
| Reused QuickFIX SDK source | `386ce46e917ae494ab6e90b1be90fd421cdbe3f9` |
| Reused source-built static SDK | `93ba126bd531479aa5f503c179235ec15ee0165f85fc0fc3ebf858d742730c1a` |
| QuickFIX production ELF | `112fb757558e2f7579d957c35d512217d66f6c0948c32dfb6c90fc83e1e50dfb` |
| Unchanged QuickFIX cold fixture | `89a9545e214dfdd02c3f9f5d7b8320a2eadb51dab50778fb5e354de58f856846` |
| FIX44 dictionary | `a82655b54363aa9c6d1b2f21f294f1198c0d7125d7b44c26d93d3179f3358425` |
| Reused NexusFIX compiled source | `ce5ae1074a25242cb4197f8e063105e01569d4f0` |
| Unchanged NexusFIX ELF | `68cc831af7f0a9790ffa2783e714c8c9b7591db83b306a6b8a538c0fe71398cc` |

Both new commits have preserved private qualification branches. QuickFIX's
adapter is freshly compiled with GCC 14/C++17 at the first pin. The corrected
controller reuses those bytes only after comparing every archive C/C++ source
and header input. The SDK and all source bytes stay unchanged. NexusFIX reuses
the unchanged ELF qualified against 91 unpatched headers in the
[full-order record](RECORD_2026-10-04_nexusfix_orders.md). This is not a new SDK
build or a new NexusFIX compilation.

HP jobs use high-priority `host-cpu-slot` isolated leases with shared work
allowed. They are local TCP functional diagnostics. Host status, process and
memory checks are retained. No quiet host or disjoint peer placement is inferred.

- The existing cold/session checker passes **48 SDK wire cycles, 12 owner
  vectors, 43 malformed payload rejections and 23 actual session pairs**, with
  zero skips. The final continuation reuses already verified unchanged results.
- The corrected generic controller completes **four flows for each engine**.
  Admin observations and original bilateral captures pass; each flow retains
  twelve primary and twelve delay samples.
- A further QuickFIX NOS pair uses **1,000 warmup and 10,000 measured cycles**.
  It retains **22,000 exact canonical frames per peer** and **10,000 primary
  plus 10,000 scheduler-delay samples**. One localhost pair does not satisfy
  report topology, quiet-host or stability requirements.
- A separate frozen read-only regrade checks all nine controller cases:
  **22,340 frames per peer**, **10,096 primary** and **10,096 delay samples**.
  Every body, envelope, sender sequence and independent owner fold matches.
- **67 configuration/orchestration and 100 retained semantic checks pass,
  with zero skips.** Payload bytes and dynamic-library resolution match on
  both hosts. Both real installer `--check` invocations pass.

## Retained failures

Original packets, logs, captures, settings, raw series and grades stay unchanged.

1. The first synthetic v2 helper used an example containing no installed pins;
   23 cases failed with the same setup error. Explicit fictional pins fix it.
   A command naming a nonexistent test file ran zero tests; its corrected
   four-file command records the 100 semantic passes.
2. The first real controller NOS capture passes, then its outer helper wrongly
   expects scheduler-delay samples from an explicitly closed-loop run. Its
   primary-only series and failing outer report are retained.
3. A separately paced packet passes NOS, MD and mixed flow, then exposes the
   controller's incorrect requirement for a tick owner's absent `runs` field.
   The corrected controller does not rewrite that original failed audit.
4. The corrected controller passes all four QuickFIX flows and NexusFIX NOS,
   then its helper incorrectly requests QuickFIX's fixture marker from NexusFIX.
   NexusFIX emits `fixture_pass=false` and `required-values-diagnostic`. The
   final continuation checks each actual marker, retains the four already
   passing QuickFIX cases and completes the five remaining cases.
5. The first staging collector compares seven local files with the eight-file
   remote bundle, which also contains the exact installer. Adding that same
   installer locally fixes the inventory without changing payload bytes.
   This first tool invocation produced no saved preflight receipt. The passing
   eight-file preflight and collector source are retained.

## Evidence and installation state

- [Final continuation](evidence/native-dac-generations-20261004/passing4-preserved/results/build-report.json)
- [Independent regrade](evidence/native-dac-generations-20261004/checks/native-dac-independent-regrade-20261004.json)
- [Staging/root preflight](evidence/native-dac-generations-20261004/checks/native-dac-staging-preflight-20261004.json)
- [Archive seal](evidence/native-dac-generations-20261004/sha256-archive.json)
- [Import seal](evidence/native-dac-generations-20261004/sha256-import.json)
- [Both-host verification](evidence/native-dac-generations-20261004/replication-receipt.json)

The archive retains **914 named completed inputs**, plus seals and replication
receipt, at `~/archive/libhft/native-dac-generations-20261004` on BEELINK2, HP
and SCAN. Its seal is
`a837c8db0f92f2e3b38e1c42952c3fe3af6f46eefd54fa79bc67e403d63e71f3`.
The private import has **908 files**. Four source tarballs and five ELF copies
remain archive-only; their original hashes are retained.

Both hosts have the staged bundle at
`~/.cache/libhft/fullbench-native-canonical-v1-20261004`. Both new root generation
directories are absent at preflight. HP also needs its pinned DAC counter.
The namespace rule allows installed entrypoints; the password-free fixed
installer has no native-peer arm. This install requires the user's sudo password:

```sh
for host in hp scan; do
  ssh -t "$host" 'sudo /bin/bash /home/yann/code/libhft/private/ops/scripts/install-dac-native-canonical-v1-stage5.sh' || break
done
```

Select the private `native-canonical-v1-machine-config.json` through
`LIBHFT_NATIVE_MACHINE_CONFIG` after installation. Verify root hashes and actual
user/port observations before fresh DAC diagnostics. Runtime fixture admission,
full physical rate/delay/stability and SDK/driver release review remain open.
