# Rust workbench and parser parity — 2026-10-14

## Scope and source

Five existing conformance stages exercise actual Rust sessions and the shipped
monitoring workbench/FIX parser. They all pass at the initial pin
`57b21edde57106fff5fcd388edac54e30ecbcfad`. A subsequent plain-field survey
optimization in `wire.rs` makes a repeat appropriate for these wire-driven
scenarios. The repeat is pinned at
`f3db6e910fcea2285f5fa87ad710c2b56df004c9`.

All five stages also pass on the repeated pin, with zero failures and zero
skips. The 478 captured tracked Rust/workbench/parser/helper inputs match
before and after each run. The first and repeated captures are kept separately;
no first-run result is presented as a rerun result.

| Stage | What its existing assertions exercise |
|---|---|
| `workbench-protocol-validation-rust` | Enum-invalid order rejected; session stays logged on, cumulative validation evidence shows DEGRADED |
| `workbench-protocol-validation-browser-rust` | The same live endpoint renders validation counters and operator guidance in Chromium |
| `simulator-workbench-rust` | Actual Logon/order/cancel flow, known advanced inbound sequence, final peer-disconnected snapshot |
| `simulator-workbench-order-entry-browser-rust` | Real order-entry session and health facts in the ordinary Chromium UI |
| `simulator-parser-workflow-rust` | Engine audit wire log yields complete Logon/order/cancel/ExecutionReport frames in the exact shipped client-side FIX parser core |

The helpers retain the C++ lane's existing checks for the shared workbench and
parser contracts. The Rust simulator owns its inbound sequence, which that
checker explicitly requires known and advanced. Expectations and UI code are
unchanged in this review. Each process exits 0, and each stage reports one run,
zero failures and zero skips. The wrapper exits 2 for its selected-stage
PARTIAL result (one of 362 stages), so this is five passing selected stages,
not a complete monorepo conformance sweep. Both browser cases actually run;
Chromium is installed, with no browser skip.

## Resource controls and retained evidence

HP runs one exclusive `isol-no-shared` job at a time with an 8 GiB start /
5 GiB stop memory guard. Probe/simulator builds use one Cargo build thread;
the controlling environment caps builds at two. `LIBHFT_BUILD_ROOT` points to
`/home/yann/build/codex-rust-ibv/libhft`. BEELINK2 starts no heavy build. Scan
has only 4.5 GiB available on `/home` at preflight, so no new build runs there.

The packet at `~/archive/libhft/rust-workbench-parity-20261014`, verified on
BEELINK2, HP and Scan, retains commands, process outputs, stage JSON reports,
source/input pins and hashes, the integration diff and source bundle.
`first-hp/` is the first authoritative capture; `hp/` is the repeated capture.
The repeat's first preparation attempt was rejected by the pinned-HEAD check
before any conformance stage ran: the C++ preflight issue below stopped the
initial checkout preparation. Its diagnostic directory holds the earlier
outputs beside mismatched preparation metadata and is not a qualification.
The C++-only rule was reviewed, a clean fast-forward checkout prepared, and
the repeat run from its exact pin.

## Separate C++ CORE registration proposal

`StoreOccupancy.h`, introduced by `03ac49e2d`, is tagged CORE but was left out
of `CORE_TIER_HEADERS`. The existing tag checker fails on that omission. The
one-line registration proposal is retained in `core-header-registration.patch`;
`git apply --check` succeeds. Running the existing tag checker against the
proposed list passes (91 tagged/listed headers). On HP at the initial pin,
`make -f <scratch-proposed-Makefile> core-gate -j2` also passes its C++11
loopback Logon round-trip: 51 reachable headers, zero CONFORMANCE/ENTERPRISE
includes. This result belongs to the proposed list, not to the ordinary gate
on main. All outputs stay under the owned build root.

The repository Makefile is reserved by the separate binary codec session.
Its file is unchanged by this review; the concrete proposal and measured
failure are handed to that owner in `docs/WIP_AGENT_CLAIMS.md`.

## Remaining parity inputs

The static Rust scores remain 82/82 applicable APIs, 27/27 protocol rows and
43 complete, two partial and one not applicable subsystem. These loopback
integration checks supply no live production venue or FIXP certification.
Those two rows still require authorised endpoint/pilot configuration and the
venue's test plan. This review requests those missing inputs while continuing
the independent engineering checks.
