# Rust private ibverbs provider restoration — 2026-10-19

## Scope

Restore the existing native driver and probe after their physical separation
from the OSS engine. The implementation remains in the private accelerator
companion. No OSS source, transport policy, packet parser, C shim, source move
or conformance-runner change is included.

`AcceleratorProvider` now supplies `IbverbsProvider` only with its own
`ibverbs` feature enabled. `IbvReceiver::open_with` selects this factory through
the explicit registry. Its opaque OSS handle delegates to the native owner;
normal close/drop retains that owner's resource cleanup. The ordinary build
continues to refuse ibverbs, and the implicit OSS open remains unavailable.
The private probe now explicitly registers the factory before opening.

## Frozen baseline

Source: `9d1a1ff9acdb20bd15bae4e71a416c64fb7125d3`. The frozen external regression is
`private/rust/libhft-rust-pro-accelerators/tests/ibverbs_provider.rs`, SHA-256
`298cdaed1738c08142e8933ef6b6cb5711136f68283017b9bdac5053f2d8c0cc`.
The actual real-SDK feature command returns 101: **0 passed / 3 failed /
0 ignored**. The factory is unregistered, native setup returns the OSS
unavailable error, and the probe prints that same unavailable error. Compiling
the feature's C archive alone had not connected the native Rust driver.

## Candidate review

Initial candidate: `d93d5d255`. Explicit OSS imports replace the disconnected
module's former parent-module imports; the two private helper bodies match
the portable validation/MAC helpers. A rustfmt-normalised comparison confirms
that the existing native receiver structure and open/poll/close/drop code are
unchanged. The C shim is unchanged. This is provider/driver wiring and probe
activation, rather than a replacement native receive implementation.

New regressions cover feature-sensitive factory selection, validation before
setup, continued implicit refusal, the real native setup diagnostic, actual
probe dispatch, closed native owner state through the OSS handle, idempotent
close and multicast/unicast MAC selection. Linux loopback has no RDMA device;
the native setup diagnostic therefore exercises dispatch without requesting
raw-packet privileges or touching a physical port.

## Qualification

Qualified source: `d93d5d255`. Complete companion targets on Scan:

| Target | Default | Real `ibverbs` feature |
| --- | ---: | ---: |
| Library | 28 | 31 |
| Probe binary unit test | not selected | 1 |
| Integration tests | 2 | 4 |
| Documentation examples | 2 | 2 |
| **Total passed** | **32** | **38** |

Both complete Cargo commands return 0, with zero failures or ignored tests.
The three frozen regressions now pass. Strict all-target Clippy passes in
both configurations; warnings-denied feature Rustdoc passes. All five
controller commands return 0 without resource retries.

Both configurations use the explicit Cargo config, session build root, one
Cargo job/test thread, a CPU lease and memory/process guard. Native execution
explicitly removes the link-stub flag. `readelf -d` records an actual
`NEEDED libibverbs.so.1` dependency in the rebuilt probe. The native header and
probe SHA-256 values are retained. No heavy job runs on BEELINK2.
All 259 selected Rust/private-source/configuration hashes match before and
after qualification. Targeted rustfmt and whitespace checks pass.

## Retained evidence

`~/archive/libhft/rust-ibverbs-provider-20261019/` retains the baseline failures,
frozen regression, qualified source snapshot and bundle, actual command logs,
compiler versions, native linkage/header evidence, before/after hashes,
normalised native-owner/helper review and publication mapping. SHA256SUMS
covers its retained files; the archive is copied and verified on all three
hosts before scratch is removed. Runtime totals belong to the qualified pin
above; later documentation/rebase commits are compared with its frozen inputs.

## Limits

These functional and SDK checks do not claim a new physical-port run or
hardware timestamps. Earlier physical proofs retain their own source pins;
this slice does not republish them as current hardware evidence. Full Rust
parity, other owners' lifecycle/default work and repository-wide conformance
remain outside these companion results. The conformance-runner edit freeze
is respected; this slice adds no new standing runner stage.
