# Native full-session machine configuration boundary

The portable native Stage 5 controller now loads inert deployment facts from
`LIBHFT_NATIVE_MACHINE_CONFIG`. Development retains its exact existing remote
defaults, physical rig facts and three root-installed adapter pins as a
reviewed explicit configuration input.  The controller no longer discovers a
file under `internal/bench/`; private campaign callers must set the same
`LIBHFT_NATIVE_MACHINE_CONFIG` input as an exported harness.  The move
preserves both rigs and every pin byte-for-byte against the original controller
and physical-rig definitions. No installed payload, root installer, frozen
capsule, queued job or historical report changes.

The exported archive has no machine defaults or admitted deployment pins.
It accepts a reviewed JSON file and a generic `--dac-rig NAME`; the existing
DAC flags remain compatibility aliases. Missing remote endpoints, unknown
rigs, invalid configuration and absent installed pins fail before compilation
or SSH. The existing CPU separation, root ownership, executable SHA checks,
physical verification/counters, fixture and report admission remain required.
The manifest retains the effective rig and a fingerprint of the complete
configuration. Expected hashes supplied by a user do not establish provenance.

The default mutable workspace follows `LIBHFT_BUILD_ROOT`, with an explicit
`LIBHFT_BENCH_WORKSPACE` override. Its unset fallback belongs to the harness's
own `target/`; the old Windows mirror and shared `/tmp` defaults are removed.
Cached SDK products continue to enter through explicit engine input paths.

Verification passes **40 focused checks and eight archive subchecks**, with
zero skips. This includes actual CLI startup from the complete selected
archive, explicit configuration loading, refusal of an enclosing checkout's
private configuration, pre-job missing-input failures, configuration validation,
custom namespace/topology counters, unchanged legacy rig/pin checks and SDK
input behavior. There is no native compilation or timing campaign in this
boundary pass; benchmark C++ sources remain unchanged.

Readiness now selects **709 files (9.6 MB)**, with **527 scrub findings in
85 files**, **95 textual escapes** and **zero dead documentation links**.
The changed controller, new public config helper/example/tests and source-layout
guide have zero scrub findings. The remaining inventory is still a migration
worklist; no public export or release gate is satisfied by these counts.

See [portable source configuration](../../bench/docs/SOURCE_LAYOUT.md) and
[export plan](PLAN_BENCHMARK_EXPORT.md).
