# HP llfix physical-core placement preparation

2026-10-08. Continues the [idle-control diagnostic](RECORD_2026-10-08_llfix-hp-idle.md).

The previous client and server already run on distinct physical cores, 17/16.
HP currently exposes eighteen physical cores, one socket and one NUMA node,
with no SMT siblings. Both selected NIC PCI functions report NUMA node zero.
The next generation compares core choice and reversed endpoint placement.
It does not compare two processor packages or two hosts.

## Prepared comparison

| Placement | Client CPU | Server CPU |
| --- | ---: | ---: |
| Previous baseline | 17 | 16 |
| Reversed baseline | 16 | 17 |
| Second isolated pair | 9 | 8 |
| Reversed second pair | 8 | 9 |

Each placement runs original-rx16 and rate-100000 once forward and once in
reverse: sixteen fresh pairs with 1000000 measured calls and 1000 warmups
each. Buffers are fixed within each lane. The original sender requests the
larger receive buffer; the paced framework retains its default receive buffer.
The previously installed original sender, peer, framework and paced binaries
are reused directly, without rebuilding or changing any native bytes.

The physical SFC9220 DAC, namespace addresses, unpatched llfix 1.0.7 SDK,
compiler, RDTSCP/frequency conversion, fixtures, journals and fixed Onload
environments retain their old identities. Both accelerated TCP loopback
shortcuts remain disabled. There is no persistent OS change or temporary
idle constraint. These are local construction/send-return service times;
remote delivery latency and RTT are not measured.

## Verification before installation

Source checkpoint `c0ebc14b585c2a6c37ddf035a2063fa8d15cd551` is preserved on
`s/codex-llfix-reference-placement-source-20261008`. Local and actual HP tests
pass eleven checks with zero skips. The complete 66-file capsule contains
the sixty unchanged load-generation source files, the existing options audit
continuation and five new placement files. Every byte, size and permission
mode is checked before and after qualification. The old capsule is separately
checked unchanged. [HP proof](evidence/llfix-hp-placement-20261008/metadata/hp-source1.json)
retains the complete source map and actual topology; its
[test log](evidence/llfix-hp-placement-20261008/metadata/hp-tests1.log) records all eleven checks.

Each new launcher changes only the old launcher's fixed CPU assignment.
Reversing that assignment yields the exact old executable AST, including
namespace, privilege drop, binary/configuration checks and environment.
Twelve fixed launchers cover four placements and three unchanged environment
profiles. They use the old protected native payload. A separate new manifest
and hash-bound installer admit thirteen new files, with no overwriting of old
payloads or launchers. The installer checks all old installed file hashes,
root ownership and permission modes before writing any destination.

The generated [capture function](evidence/llfix-hp-placement-20261008/preparation/capture-policy.py)
changes only its controller CPU guard and native CPU expectation. Reversing
those two AST substitutions proves every other statement, check and calculation
retained. Native namespace metadata and all captured process-status observations
must show the selected single-core affinity. Actual established Onload sockets,
namespace/PID/start-time identities and physical port counter increases retain
their original checks. Controller and observers stay on CPUs 0-7.

The generated [audit function](evidence/llfix-hp-placement-20261008/preparation/audit-policy.py)
retains the reviewed three-constant options-display correction from the prior
generation. It independently checks every required converted value, envelope,
checksum, contiguous numeric owner and order count in both endpoint journals,
plus complete framework primary/delay CSV and HFTBRW series and actual extrema.
The original sender retains its native summary rather than per-call raw data.
Forward/reverse run medians are medians of two run statistics, not pooled
quantiles or confidence intervals; individual runs and maxima remain visible.

The existing paced runner re-anchors missed deadlines and retains scheduler
delays separately. It does not reconstruct missed arrivals. Quiet, timing,
vendor reproduction, Stage 2, full-session and release admission remain absent.
No native placement pair has run at this preparation checkpoint.

## HP command

The [home wrapper](evidence/llfix-hp-placement-20261008/metadata/run-llfix-cpu-placement.sh)
is installed as `~/run-llfix-cpu-placement.sh`. Run it on HP:

```sh
~/run-llfix-cpu-placement.sh
```

The one sudo step is needed because namespace launchers must be protected,
root-owned files and the existing scoped policy does not authorize this new
installer. The wrapper checks source/installer hashes, installs the reviewed
generation, then runs the unprivileged capture under a high-priority
`isol-no-shared` queue lease. It writes a unique retained log. Independent
cold audits will use a separate high-priority shared lease after capture.

Active input capsule:
`~/.cache/libhft/llfix-reference-hp-placement-v1-c0ebc14b585c-g2`.
New protected manifest directory:
`/usr/local/libexec/llfix-reference-hp-placement-v1-45ccb0d88977`.
Runtime:
`~/build/codex-llfix-reference/libhft/onload-load-generation1/captures/cpu-placement1`.
The [preparation](evidence/llfix-hp-placement-20261008/preparation/prepare.json)
binds every path and hash. Installer SHA256 is
`b233198884b15ffee341b6312854245b848b23ba7618345697dc293f9d6117e4`;
home wrapper SHA256 is
`ec004c8cadfbe444be703d1a4a8f8309083299c194f90dd6e33a6b45e93fa370`.

## Retained preparation and failures

An initial source archive was refused because Git's default tar headers used
0664 while the sealed checkout files use 0644. All five content hashes and
sizes matched. A fresh archive with explicit `tar.umask=0022` passes exact
mode checks. The [original failure](evidence/llfix-hp-placement-20261008/metadata/failure1.json)
and both original/corrected archive bytes stay retained. A later metadata
selector requested the first archive's JSON filename after the corrected
qualification had selected the second; that
[retention failure](evidence/llfix-hp-placement-20261008/metadata/failure2.json)
is preserved, and a separate fresh materialization corrects only the selector.
Neither failure started native processes or changed qualified sources.

The complete archive preserves 97 files, including all source, generated
policies, launcher bytes, installer, qualification scripts/logs and failed
input records. Both [HP](evidence/llfix-hp-placement-20261008/hp-replica1.json)
and [BEELINK2](evidence/llfix-hp-placement-20261008/beelink-replica1.json)
stream-check every member's SHA256, size and mode. Each retains
`~/archive/libhft/codex-llfix-reference-20261008/hp-placement-prepared1.tar.gz`:
216806 compressed bytes, archive SHA256
`d354ac4cd6a0d08a1e43cab7ad059185fa2cd6b512dd49ed64324d884399cdf6`,
seal SHA256
`58bc394822ae55d9f93902ab985979bf478a71e7a2c5b93310abdc26e1ef4312`.

The committed metadata selection preserves exact file contents and modes;
full launcher/source/archive bytes remain in those replicas. Stage 2,
released SDKs, common clocks/build helpers, canonical full-session fixtures,
old raw data/rankings and all other sessions' jobs remain untouched.

The [integration verifier](evidence/llfix-hp-placement-20261008/verify-integration.py)
checks six qualified source files, sixteen selected evidence files, matching
replica receipts, local record links and eleven real checks with zero skips.
Its [initial passing receipt](evidence/llfix-hp-placement-20261008/integration1.json)
retains the source checkpoint. [Guarded cleanup](evidence/llfix-hp-placement-20261008/cleanup-preparation1.json)
removes only the failed own 61-file source materialization and the two own
86/97-file retention staging directories, after exact archive/source/replica
checks. The active 66-file capsule, reviewed installer, HP home wrapper,
complete retained archive and all older native/source payloads stay available.

After rebasing over concurrent session changes, the
[integrated proof](evidence/llfix-hp-placement-20261008/integration2.json)
again passes all six source checks, sixteen evidence checks and eleven real
tests with zero skips. The frozen HP capsule, native payloads and prepared
comparison retain their original identities across integration.
