# Java benchmark framework standalone JNI build

The Java benchmark framework Makefile now uses the existing exported
`common/native-build.mk`, retaining the development compiler policy and its
standalone settings. JNI source, compiler flags, affinity behavior and Maven
configuration are unchanged. Both layouts keep the published build-root suffix
`bench/java/hft-bench/target`, so Maven and native consumers agree.

## Actual stripped archive verification

Source **ee9c28196ceb6f83e0d559e29a74d78ea2e884b7** is retained on
`s/codex-fullbench-java-affinity-source-20261003`. A complete **748-file**
stripped archive is materialized with exact Git modes on HP, inside an unrelated
Git repository and engine marker. The original Makefile fails because its
development-only toolchain include is absent. The corrected build succeeds
even with a deliberately failing toolchain in that enclosing repository.

The foreground qualification first finds shared CPUs occupied, then queues
through `host-cpu-slot wait --pool shared --priority high`. Once admitted it
builds the native library and Maven module from fresh outputs outside the
archive. **All 80 JUnit tests pass, with zero failures, errors or skips.**
Two separate JVMs load the actual new library through an explicit path and
`java.library.path`. Both execute the JNI CPU query on a leased CPU and check
the native invalid-core refusal. A third JVM selects a nonexistent explicit
library while a valid library is available on the default path: availability
remains false, proving it does not silently fall back.

The native build uses GCC, C++11, `-O3 -march=native -mtune=native -fPIC` and
the original warning/linker settings. The Java build uses JDK 17 with Java 8
release compilation. Exact tool versions, commands, JUnit XML and library hash
are retained. Every materialized source byte/mode remains unchanged, no output
lands inside the archive, and the disposable materialization is removed.

Evidence is sealed in `~/archive/libhft/java-affinity-20261003-ee9c28196ceb`
and [repository evidence](evidence/java-affinity-20261003/SHA256SUMS).
The receipt's fixed scope wording about concurrent isolated SDK preparation
is not a concurrency observation: the retained preflight reports the isolated
pool free. This is shared-pool functional verification, not a timing run.

Readiness selects **745 source files**, with zero scrub findings, private or
unresolved references and dead links; textual root escapes decrease to **83**.
This qualifies the engine-free Java framework build and JNI ABI loading only.
Engine SDK producers, complete harness closure, physical Stage 5, report and
public release admission remain open.
