# Portable canonical physical reader and QuickFIX/J configuration experiment

2026-10-12. The [full-bench plan](../../../docs/bench/PLAN_FULL_BENCH.md)
still requires actual new Native/C++ physical reports and their matched
comparison. This adds their independent offline reader while installation
and host CPU queues remain active.

## SDK-free offline reader

`check_canonical_dac_results.py` accepts fixed C++ CORE and .NET Native
policies. It checks original fixtures/owners, both raw distributions,
quantiles/extrema, peer exits, actual namespace commands, distinct ports
and run identities, exact profile and runtime declarations, captured
grading-source hashes, counter identities/deltas/polling and every retained
grade. The supplied deployment declaration must match captured configuration.
Original bytes/modes remain unchanged. The reader builds no SDK, opens no
sockets, executes no captured source and performs no live-host operation.
It reproduces the producer's recorded achieved-rate value and decisions;
the current producer result does not retain a separate wall-duration field.
It creates no new source attestation or physical traffic proof.

Twelve public counter tests pass, including interface changes, counter
resets, unknown/duplicate namespaces, missing attempts, changed final reads,
probe injection and claimed advancement. A complete **809-file stripped
harness** passes local consumption against **eight retained actual SDK
cases** (four C++ and four Native). These cases retain original bodies,
admin, raw samples and owner folds. Their physical commands, counters,
runtime admission and quiet flags are explicitly synthetic; all replayed
rows are tiny diagnostics, never new physical reports. The reader refuses
**28 additional altered-evidence controls**, including wrong profiles,
runtime/topology, run identity, raw quantile, grade, source binding, peer
exit, counter delta, namespace, missing raw and owner fold.

The source inventory is
`uncommitted-canonical-cold-reader-da9eed52d5eff76c967f86bdc4afab563048a9227e6f61a124a417105e847a0b`.
Source readiness selects 806 files plus templates with zero scrub, private
reference, unresolved-reference or dead-link findings. Both-host SDK-free
reader checks are queued under shared leases, high priority on HP. The
new actual physical reports still require separate complete replay.

## Stock QuickFIX/J synchronous writes

A separate frozen experiment enables stock `SocketSynchronousWrites=Y`
and records that setting in observations. It preserves the SDK JARs,
canonical bodies, capture hooks, owner folds and clock boundaries. It changes
no maintained default or installed runtime. The source inventory is
`experiment-quickfixj-canonical-synchronous-writes-698c4fd6224f51a75ecad0a882f10e9bfc9a4dfb7fc7f30a8e2afdfcbf230a39`.

HP's fresh five-source Java build passes all twelve functional pairs,
retaining 240 primary/delay samples and 700 original frames per peer.
A high-priority exclusive lease then completes twelve full local pairs:
1,000 warmups, 10,000 measured cycles and 10,000/s offered rate.
All original fixtures and measured owner folds pass. The report retains
**120,000 primary/delay samples and 330,000 original frames per peer**.

| Flow | Achieved cycles/s across three runs | Timing result |
|---|---:|---|
| NOS/ER | 3,720–3,767 | rate/delay fail |
| MD | 2,836–2,983 | rate/delay fail |
| Mixed | 1,915–1,996 | rate/delay fail |
| Tick | 3,844–4,017 | rate/delay fail |

There is no full stability failure in this cohort. Synchronous writes do
not resolve the report-rate gate, so the default remains the qualified
asynchronous generation. Independent exact full replay is queued on HP;
no physical result or lower-rate promotion is inferred from this experiment.

HP's exact full replay now passes: all twelve fixture receipts, raw quantiles,
extrema and failed grading decisions match with original bytes/modes unchanged.
HP's complete stripped-reader consumption also passes the eight retained SDK
cases and 28 controls; SCAN's corresponding check remains queued.

## Immutable checkpoint retention

[Import](evidence/canonical-dac-cold-reader-and-sync-20261012/import-receipt.json)
and [seal](evidence/canonical-dac-cold-reader-and-sync-20261012/retention-seal.json)
retain **2,881 files / 186,213,401 bytes**, seal SHA-256
`89564771e82c6aa93abbfef0c9c16504cc7c5e08251a5c34c69c2df5937c4a58`.
All 2,882 originals including the seal are imported; both host copies verify
every byte/mode. The seal records its earlier pending checkpoints. Completed
HP full replay and host-reader follow-ups will be a separate supplement.
The new actual work is 24 SDK process pairs, 120,240 primary/delay samples
and 330,700 original application frames per peer. Eight retained reader cases
and their synthetic physical controls add no new SDK pairs or physical runs.

## Installation scope

SCAN's currently queued terminal command selects the original nine bundles.
Those earlier installs were already verified. The new Native/Rust/C++
prefixes remain absent on both hosts. The corrected original home filename,
`~/install-fullbench-stage5.sh`, selects the three remaining bundles; the
user has been told to run that filename after the current command finishes.
The six benchmark waiters retain their frozen inputs without CPU leases.
HP requests high priority once the new prefixes are admitted.

## Both-host completion and disk continuation

Both hosts now pass the complete stripped-reader check against eight retained
SDK cases and 28 altered-evidence controls each. HP's exact synchronous-write
full replay reproduces all twelve original fixture receipts, every raw
quantile/extremum and every failed timing decision. Neither check creates
new SDK pairs or physical traffic.

SCAN's first queued reader check failed before execution with `ENOSPC` in
the CPU helper's queue-directory creation. The home filesystem was full,
with 157 MB free; inodes remained available. This session's earlier
`canonical-physical-dac-20261011-cold-inputs` duplicated immutable retained
inputs. SHA-256, size, mode, ownership, device and modification time were
checked against the original retained tree before deduplication. **6,070
identical files / 2,258,832,188 bytes** now share inodes with those originals.
Every path, byte and mode remains available and unchanged. The archived
copies are immutable; later mutation fixtures must be separate copies.
The successful reader continuation uses the unchanged source inventory.
The original queue failure remains retained. No other session's paths,
staged payloads or source checkout were changed.

[Follow-up import](evidence/canonical-dac-cold-reader-followups-20261012/import-receipt.json)
and [seal](evidence/canonical-dac-cold-reader-followups-20261012/retention-seal.json)
retain **5,048 files / 17,070,076 bytes**, seal SHA-256
`4691be7ae967be8ea22c42dd929b4208841f2ee04ab5f96fe6ea495dfa718313`.
Both hosts verify the new originals. The earlier pending-checkpoint seal is
unchanged. The user-run nine-bundle installer has finished; the new three
root prefixes still require the corrected original home command.
