# QuickFIX migration assessment coverage

The cold migration tools now reflect the current C++ benchmark builders and
file-store settings. These changes repair evidence and startup validation;
they do not change an engine send path, introduce locks or establish a latency gain.

## C++ builder inventory

The benchmark moved its four generic QuickFIX builders into
`quickfix_cpp_canonical.h`. The reporter still scanned the old driver, excluded
headers and assumed the receiver was named `msg`. Its unchanged implementation
returned a passing report with zero sites. The expanded six-test suite reproduced
four failures against source `d3c8e946b` plus the regression patch.

The default subject is now the actual canonical header. Header files are valid
subjects, fields are classified against the receiver whose header sets MsgType,
and numeric group fields resolve through the tracked XML dictionary. The live
inventory has four sites: two required-scalar factories plus manual fields, one
required-scalar factory plus groups, and one base factory plus fields and groups.
MarketDataRequest has two source addGroup sites; the entry-type loop executes
one of them twice. Source counts are explicitly not runtime group counts.

Both inventory stages now record the canonical header among their prerequisites,
so evidence hashes identify the source actually scanned. A new manifest assertion
fails without this input; the obsolete driver alone is insufficient provenance.

## File-store settings

The assessor's unconditional FileStoreSync refusal and its old file-to-mmap
heuristics were stale. It also missed contradictory explicit policies, conflicting
file-mode aliases and missing checkpoint-store paths. Nineteen regression tests
produced 118 failing subcases against the unchanged assessor.

FileStoreSync is now reported as a parsed durability control, with its value,
store capability and explicit-policy conflicts checked separately. A bare
FileStorePath selects a QuickFIX-compatible directory store, not mmap. The
DEFAULT async-file/sync-file policy survives a SESSION mode override, while an
explicit SESSION FileStoreSync can replace it, matching current runtime parsers.
The report does not fabricate an implicit setting into its input inventory.

The shared .NET settings parser permits synchronized file journals, but
`hftnet_session_create` currently accepts sync-before-send only with mmap.
The assessor therefore refuses that file shape for dotnet-native before a runtime
attempt. This does not fix the reserved native implementation or its separately
reported test failures; it makes the assessment honest about them.

## Verification

At `d3c8e946b` plus this patch, 229 tests passed with zero skips: 21 settings
assessment tests, six C++ inventory tests, dependent trial/oracle/evidence/readiness
tests and the conformance-stage manifest suite. This is functional source-scan
and control-plane coverage, not a full conformance sweep or NIC result.

Baseline and final logs are retained in
`~/archive/libhft/migration-assessment-review-20261003/`. Post-rebase verification
is recorded separately there so results are not silently attributed to a later
source pin.
