# Rust private accelerator providers — 2026-10-19

## Status: functional provider qualification passed

The physical split left the native TCPDirect and SocketXtreme drivers in the
private companion without implementations of the OSS provider/driver contracts.
Its former runner qualification was parked as uncompiled fragments. This slice
adds explicit provider adapters and restores executable private qualification.
The complete companion suite now passes. This does not claim full Rust parity
or accelerator hardware certification.

## Frozen baseline and prepared source

Baseline: `ac3366c9b` (pulled main). The external
`tests/provider_contract.rs` is frozen before execution, SHA-256
`85e65d2e73aaf0d55ee23b1a7b72ef5eb97c5dcd47f2e9be36a42a688235cf12`.
Cargo exits 101 with E0432: the private crate has no `AcceleratorProvider`.

Initial prepared source: `bbbce315cafe5fcc3f8361ea90477954a0c0ec35`.
The only engine sources changed are in
`private/rust/libhft-rust-pro-accelerators`; the OSS engine is unchanged.
`AcceleratorProvider` supplies exactly TCPDirect and SocketXtreme, and does not
advertise ibverbs. Registration loads neither native SDK. First use delegates
to the existing native loader; every SocketXtreme request adopts its descriptor.
Thread-local opaque wrappers retain the original owners' process lifetime and
identity without taking ownership of them twice. Loader errors propagate without
selecting another transport.

The restored tests exercise public OSS runner/session APIs with private fake SDK
callbacks. SocketXtreme tests use real loopback sockets and observe only the
private fake's routing table to locate listeners. No public test hook, implicit
source discovery, source move, manifest or conformance-runner change is added.
The high-descriptor child checks that its exact subprocess test actually ran.

## Initial qualification

On Scan, a shared CPU lease, resource guard, serial Cargo (`-j1`) and one test
thread run the complete default companion command. The library reports
**26 passed / 1 failed / 0 ignored**, Cargo exit 101. Cargo stops before its
integration and documentation tests; these are not complete-suite pass totals.
All eight SocketXtreme ownership cases and both acceptor tests pass. TCPDirect
initiator Logon, interruptible connect, proxy refusal, resource lifetime and
bounded SocketXtreme staging cases pass.

The failure is
`qualification::initiator::socketxtreme_owner_dials_and_sends_logon_over_an_adopted_socket`:
`Initiator::set_socketxtreme_ring` returns `SocketXtreme is part of libhft pro`
before dialing. The explicit setter calls the implicit `set_socketxtreme`,
which unconditionally checks the unconfigured OSS capability. A proposed small
setter patch is retained separately; it preserves TLS/transport exclusivity and
lets an explicitly supplied ring select the transport. `oss/rust/src/initiator.rs`
was claimed by `claude-rust-settings`, so the patch was initially held.
After the scoped patch request, the user's **Continue** authorised applying
that setter-only exception. The other owner's HA/default changes remain reserved.

Warnings-denied Rustdoc passes on the prepared source. The first Clippy command
finds no subcommand in Scan's default PATH; that is a tool availability failure,
not a successful lint run. The repeat uses the existing cached 1.92.0 Clippy
package and passes all-target strict lint (`-D warnings`). The independently
selected external registration regression passes **1/1**, and the `no_run`
provider documentation example compiles and passes **1/1**, both with zero
failures or ignored tests. These commands do not rerun or fix the failing
library case. No test has been disabled or weakened to hide that failure.

All 256 selected tracked inputs (OSS Rust, the private accelerator companion
and explicit Cargo config) have identical hashes before and after the lint /
contract / example run. New and adapted test/provider sources pass targeted
rustfmt; whitespace checks pass. Cargo outputs remain below the session build
root. No heavy build runs on BEELINK2.

## Authorised setter fix and complete qualification

Qualified source: `85d7d0dc0ad14548fbafb9aa48abc5c9c5110e5b`.
The explicit ring setter now performs its own existing TLS and TCPDirect guards,
then selects the supplied ring. The implicit entry point still refuses an
unconfigured provider. Compared with the initial source, the public initiator
file differs only by the proposed method-body replacement. No HA/default code
is edited. A further regression verifies transport exclusion in both directions,
unchanged owner state after refusal and continued implicit refusal.

| Complete companion test target | Passed | Failed / ignored |
| --- | ---: | ---: |
| Library | 28 | 0 / 0 |
| Explicit-registration integration test | 1 | 0 / 0 |
| Documentation example | 1 | 0 / 0 |

Cargo returns 0: **30 unique tests passed**, including real SocketXtreme
initiator Logon through the public runner and the private adapter. The final
controller also repeats the integration and example selections successfully;
those repeats are not added to the unique total. Strict all-target companion
Clippy and warnings-denied Rustdoc both pass. All five controller commands
return 0, without resource retries. All 258 selected source/configuration files
match their before/after hashes. The changed public initiator passes the export
scrub with zero findings. New/updated provider and test sources pass targeted
rustfmt. Builds remain serial on Scan under a CPU lease and resource guard.

## Retained evidence

`~/archive/libhft/rust-accelerator-providers-20261019/` retains the baseline
failure, initial qualified-source bundle/snapshot, proposed unapplied setter
fix, command logs and source hashes. All **38 files** verify on BEELINK2, Scan
and HP, manifest SHA-256
`59bd76bdc8493daf0d299fc3f3dbe427e2233d43b3c75b27f9574c1806288e12`.
The initial checkpoint was saved on `s/codex-libhft-accelerator-providers` at
`ef82184fa` before the user's continuation.

`~/archive/libhft/rust-accelerator-providers-finish-20261019/` retains the
approved patch, final qualified source pin/snapshot, complete logs, source
hashes, controller, publication mapping and its own SHA256SUMS. The tested pin
above remains the source of the runtime totals; later rebases and documentation
updates are recorded separately and compared against the frozen inputs.

## Scope still open

Native SDK/ABI checks and actual TCPDirect, SocketXtreme and ibverbs hardware
qualification remain separate from the
functional fake-driver and loopback results. Other owners' lifecycle changes
and the full-repository conformance campaign are not qualified by this slice.
