# Benchmark placement-profile boundary — 2026-10-02

The [export migration](PLAN_BENCHMARK_EXPORT.md) now keeps actual host placement
declarations under `internal/bench/load/`. The public harness carries an inert
example, selected only through an explicit external input. This changes source
organisation and discovery, with no new measured timing or physical grade.

## Preserved declarations

Both moved profiles have identical bytes to their previous `bench/load/` files:

| Profile | SHA-256 |
|---|---|
| HP | `006ca449c8f215aebdffed9339fe7cb03298b5679e703df9ab716249e112e79d` |
| SCAN | `2520e73c8f4c68b5929cf46691da3ef2c24f831784ca52f21d3d6608b7b5be56` |

CPU lists, hardware-epoch comments, tuning policy, NIC choice and profile
fingerprints are unchanged. The profile/tuning assertions also move under
`internal/bench/load/`, preserving all 22 tests.

Shell and Python consumers find existing local profiles, development internal
profiles and installed profiles in that order. Explicit missing profile inputs
cannot borrow a different declaration. A stripped archive with its own shared
support cannot borrow private profiles from an enclosing development checkout.
The generic example is omitted from hostname lookup and rendered inventories.
All profiles remain parsed data; none is sourced as shell code.

The live placement watcher and sitting capture use the selected profile. Source
manifests and source patches now retain `internal/bench/load` so moving a file
cannot remove its provenance. Handbook/matrix pinning tables continue using the
same declarations, and all existing generated pages remain byte-identical.

The versioned root installer and private Rust rig reference the new source
location. Existing installed profile names and bytes remain unchanged. **Refresh
the installed root helper through the normal deployment before its next
`bench-machine` install**: an older helper expects the former source path. No
root deployment was performed here, and no frozen host payload was rewritten.

## Verification

- The full 225-test fixture sweep passes with one existing skip: the British
  UTF-8 locale is unavailable. These are inert logs, mocked launches and source
  renderings; no engine builds, network benchmark or installed writes occur.
- All 139 affected profile/controller/helper checks pass without skips.
- After relocating the private test module, all 22 tests pass again.
- Six profile-discovery checks cover overrides, archive isolation, example
  exclusion, precedence and agreement between shell/Python consumers.
- The original matrix-rendering test incorrectly treated a capacity-diagnostic
  TSV as a published matrix input. The same failure reproduced from unchanged
  HEAD sources. It now enumerates inputs belonging to actual published pages;
  strict renderer schema validation and the byte-for-byte page check remain.
- New example, discovery/helper tests and public guide text have zero scrub
  findings. Shell syntax and scenario-view drift checks pass.

Original fixture logs and inventory remain under
`~/archive/libhft/profile-migration-20261002`. Engine-source admission, remaining
portable configuration, commercial-input licence review, root installation and
physical/report gates are separate outstanding work.
