# Explicit public managed .NET 10 consumer — 2026-10-17

Status: standalone build, actual TCP, delayed clocks and actual compiled
extraction qualification pass independently on HP and SCAN. Physical collection
and a matched QuickFIX/n comparison remain separate gates.

## Exact inputs and build distinction

- Harness source `b823053aee2ddb57b6a2c15d60ea8ec5753056c0`.
- Export: 925 files, canonical bytes/modes inventory SHA-256
  `a572f4d228f8003f4b40be5f2c17d5810bb395dd0bf2df5a05b79e69851b960b`.
- The explicit `ManagedCanonical.Net10.Bench` application targets net10.0,
  links the original canonical managed implementation and retains
  `TieredCompilation=false`. The separately supplied open SDK retains its
  supported net8.0 target; it is loaded by the actual .NET 10.0.12 process.
- Exact driver DLL on both hosts:
  `ee5a5d762b31fe57fa2ebd295496ed707fc4f1e12c383c40a2b43f26da09f3a4`.
- The SDK source pin remains
  `uncommitted-functional-source-26310f12584fd0f392af231da8c2ea10067f50bb337db118cc79a2895da54386`.
  Actual SDK DLL on both hosts:
  `0ee3e4b6ff0f365143993caebeccb71d13dae2bf9e051aeeb6b7c72facb5ccfc`.
  This exact built artifact is qualified; no equality to an older build is inferred.
- SDK sources, native artifact, shared build-property APIs and original .NET 8
  consumers are unchanged. The managed processes explicitly prove the native
  engine is not loaded. No native rebuild or SDK binary swap is performed.

The v1 command-line target-framework override failed NETSDK1005 because restore
lacked the root application's net10 target. Adding a global TargetFrameworks
in v2 instead left the referenced SDK without its required net8 target. Both
failed outputs remain untouched. Neither attempt ran a target benchmark.
The v3 explicit application and cold-checker projects resolve each project's
own target correctly, without global retargeting. Both builds have zero
errors/warnings. The framework-dependent runtimeconfig declares net10.0 and
Microsoft.NETCore.App 10.0.0; actual observations on every endpoint are
.NET 10.0.12. The deps graph also declares the net10 application target.

## Actual qualification

Each host passes four separate configurations: inherited/first-allowed-CPU
foreground placement, ordinary/deliberately delayed clocks. Each configuration
runs all four flows with warmup counts 5, 0, 5 and 20 measured cycles per pair.
Total: **96 actual TCP pairs**, **1,920 primary** and **1,920 scheduler-delay
samples**. All 120 original body vectors per configuration are byte-identical
to the preceding canonical body qualification. Every measured owner sink/fold
matches the independent model, including all twenty book entries. Both capture
streams close after the graded ten-cycle preflight, before warmup.

CPU budgets remain HP server 8–12/client 13–17 and SCAN server 10–13/client
14–17. Actual masks prove either inheritance or the first CPU only. SDK public
ManagedSession/IFastHandler/BeforeSendGate, SDK serialization/transport, callback
and final-extraction clocks retain their qualified behaviour under the new
runtime. Ordinary configurations pass 133 independent controls each; delayed
configurations pass 28 each: **322 per host, 644 total**.

The explicit .NET 10 cold checker binds the exact loaded SDK and driver and
invokes the actual compiled ReadBook/FoldBook methods, with no target rebuild
or socket. On each host 24 valid templates pass, and 2,040 malformed full-book
templates produce **4,080 actual rejections**, **8,160 across both hosts**.
Every deepest field, wrong count/order/value and omission remains checked.
All original source bytes/modes, SDK inputs and target artifacts are preserved.

Jobs used `host-cpu-slot wait --pool isol`, high priority on HP and normal on
SCAN. These functional runs allow concurrent shared work and grant no quiet,
rate, latency, stability or Stage 5 grade. The new compact `+net10` identity
keeps prior successful .NET 8 results intact; runtime admission is not borrowed.

## Working retention and next work

Both hosts retain the v3 source/operations capsule at
`~/.cache/libhft/fullbench-dotnet-managed-net10-20261017-v3` and full working
output at `~/build/codex-fullbench/libhft/dotnet-managed-net10-20261017-v3`.
The v1/v2 failed capsules and outputs remain. Only small completion receipts
were copied locally; no raw benchmark evidence enters Git or an archive.

Next: immutable fixed-entry preparation, accepted physical DAC tiny/report
runs on both rigs, independent physical replay and full rate/delay/stability
gates. A matched .NET 10 comparison also needs the corresponding QuickFIX/n
configuration's complete physical admission. Remaining peers and whole-harness
release/export gates are unchanged.
