# Current standalone Java SDK qualification — 2026-10-17

## Original public SDK run

The complete 993-file public Java SDK export at
`2d94a107cfaa403a5255254831045bdc3cdb43c5` has no closure/link/scrub findings.
SCAN builds its open JNI library with GCC 14 and runs the actual standalone
Maven test command under an outer `isol` lease. All outputs leave the source.
The default suite completes **7,448 tests: 7,443 pass, one fails, four skip**.
There are zero errors. `NativeLibraryRequiredTest` passes with zero skips;
`libhft.require.native=true` prevents a missing JNI library from becoming a
smaller passing suite. This complete operation remains failed.

The failure is `AcceptorDurableStoreProviderParityTest.eitherProviderResumesTheOthersStore`:
a QuickFIX C++ layout written by Pure Java resumes through JNI at sender
sequence 4 rather than 3. Its application replay is present; the final gap
also ends one number later. No failing assertion or original raw output is
removed. The four explicit skips are three counters-disabled-only cases
(the default build has counters enabled), plus the unavailable open-edition
mmap-store refusal case. There is no missing-library skip.

The worker stops on the failed Maven command. The other five public manifest
commands (native units, tuner/profile/frontier selectors and the FIXP process
owner) have not acquired a passing grade from this operation. HP's same old
source verification was still queued at this checkpoint.

## Shutdown race in the fixture

The fixture promises exactly Logon and the application response before
resuming the store. It closes the peer socket and immediately calls graceful
`session.stop()`. The implementation's ruled stop contract sends a Logout
before disconnecting when the worker still sees a logged-on peer. EOF and
stop race: that Logout can legitimately consume and persist sequence 3
before EOF is processed, while the test assumes no Logout was emitted.

The corrected fixture calls the existing public `session.stop(true)` while
the peer socket is still open. It explicitly ends this no-Logout exchange
before socket teardown. All original expected frame lists, exact sequence
numbers, every replayed application value and store-path assertions remain
unchanged. No runtime, store, JNI, native header, setting, helper or benchmark
clock changes. Default graceful Logout behavior remains exercised by its
separate SDK tests.

## Qualification against the original compiled SDK and JNI

SCAN compiles only the corrected fixture and a small qualification runner,
then executes it against the exact original default-suite Java classes,
native library and dependency JARs. The new fixture class must precede the
original class on the classpath; both real providers must be present.
Every repetition includes `NativeLibraryRequiredTest`, with native loading
required and the original library explicitly selected in its original build
location. No native file is moved or replaced.

Three repetitions pass: **six JUnit tests, 36 provider/store combinations,
72 session legs, zero failures/skips**. Every combination of JNI/Pure writer
and reader is covered for QuickFIX C++, QuickFIX/J and async-file stores.
All 1,777 original compiled input files remain byte-identical afterward.
This targeted regression qualification does not change the failed full-suite
result or admit the whole SDK/release.

Corrected fixture SHA-256:
`dde0e7208736d9bef5bd7a76271ebf3d7ad7f906eb06e4e1f8ddfb9bb6e19726`.
Qualification runner SHA-256:
`2dde0eba68bc169ac30183bcb36a50e6ac934f70137eda931179db5e676512e5`.
Actual unchanged JNI SHA-256:
`1c1ac43d7dc6581226c4ae875eb62673d0a6f7513d923f2c5ebdc5183c4f8e2b`.

Original full-suite output remains at
`~/build/codex-fullbench/libhft/java-current-sdk-standalone-20261017-v1` on SCAN.
Targeted qualification and input inventories remain at
`~/build/codex-fullbench/libhft/java-store-fixture-qualification-20261017-v1`.
No JUnit files, logs, native binaries or raw run data enter Git.
A fresh source export and complete six-command standalone verification
remain required. Timing, current Java minimum, other SDKs/licences and the
coordinated public release remain separate gates.

## Corrected complete standalone verification on SCAN

The new immutable 993-file SDK export at
`a697b542bebca49f86a5b070fb1f29d48a675948` passes all six public manifest
commands on SCAN, under an outer `isol` lease with builds limited to two
jobs and outputs outside the exported source. Source bytes and modes stay
unchanged. Its inventory SHA-256 is
`0828c6b5db3a4fac860ed0dc5ec9e2d3b21f471481dc5ae70a1aa6341124abc4`.

| Command | Observed result |
|---|---|
| Open Maven suite, JNI loading required | Default execution: 7,448 tests, zero failures/errors, four skips; separate configured executions: 6, 12 and 3 tests, each with zero failures/errors/skips |
| Open native units, GCC 14 | Eight native test executions pass, including both TLS variants |
| Tuner decision self-test | 20 properties pass |
| Profile selector | Three tests pass |
| Frontier selector | 14 tests pass |
| FIXP process owner | 22 tests pass; five cross-language tests explicitly skip because no C++/Rust owner was supplied |

The default Maven execution's three counters-disabled-only skips are covered
by the final configured execution with counters disabled: all three pass.
The fourth skip is the open edition's unavailable mmap-store refusal case.
`NativeLibraryRequiredTest` runs and passes without a skip. The resulting JNI
library, at its normal `java/native/libhftjava.so` output path, has SHA-256
`2abe161cc202d217e4c5f25e32109619516c14eab6da41862ccdaf71c54c6287`.

Surefire overwrites reports when the configured executions select the same
class again. The final directory therefore contains 375 suite reports with
7,463 tests and one remaining skip; this is a final report inventory, not
the default execution count or the sum of every Maven execution. Original
per-execution summaries remain in `maven-open-jni-and-tests.log` (SHA-256
`a10c4baf6c836fb9d82719f0704fee88b4ddb430913ec05eb412d2ec393d4f72`).

The complete receipt is
`~/build/codex-fullbench/libhft/java-current-sdk-standalone-20261017-v2/completed.json`
on SCAN, SHA-256
`23d9001acc305600217fd26ad45e12be4b073b0bdc0f9e2ef5398cc595268a1a`.
This closes the selected standalone Java manifest commands for this source
on SCAN. It does not qualify FIXP cross-language interoperability, timing,
licences, other SDKs or a coordinated public release. HP's identical source
remains queued with high priority; the old failed run remains failed.

## Separately qualified Java callback reply profile

SCAN also passes the existing public SDK's explicit
`java-pure+callback+epsilon-gc+nio-rw+split+reply-cb` consumer: 56 Java checks,
12 actual TCP session pairs and 107 cold refusal controls. The original
public SDK JAR is unchanged, SHA-256
`9bd36323547631a8eb27ac43a6137bdb9d07642c3f812a18fb610d5a6ce5e9f1`.
This consumer uses the separately frozen `2d94a107c` SDK/harness generation;
it neither borrows the poll owner's qualification nor changes a clock boundary.
The 993 SDK and 927 harness input inventories remain unchanged.
Its qualification receipt at
`java-current-sdk-callback-qualification-20261017-v2/completed.json` has SHA-256
`6a929027f70234277e8d232d181cf9d05ebaadd4a9217b63a07a5461cd59365e`.
Physical preparation/run is queued separately; this functional pass supplies
no timing grade. HP's matching qualification remains queued with high priority.

On resumption, five old HP requests still waited but their local SSH/queue
controllers no longer existed. Checks found no timing outputs or SDK/callback
target roots. Only those owned, unstarted requests were dequeued and replaced
with durable controllers and explicit transport/payload timeouts. The two
prepared immutable generations and all other sessions' work are preserved.
The independent comparison is deferred until both physical producers finish.

## Complete standalone verification also passes on HP

HP completes the same six commands from the identical 993-file `a697b542b`
export under a high-priority `isol` lease. Its original Maven summaries are
identical to SCAN's: 7,448 default cases with zero failures/errors and four
explicit skips, then 6, 12 and 3 configured cases with zero failures/errors/
skips. The three counters-disabled cases therefore execute and pass in their
own fork. The final Surefire directory again holds 375 reports / 7,463 tests
with only the unavailable open mmap case skipped; the native load guard runs
without skips. These final report counts are distinguished from execution
counts.

All eight native units, 20 decision properties, three profile and 14 frontier
tests pass. FIXP again has 22 passes and five explicit missing-other-language
skips. All source bytes and modes remain unchanged. HP's exact completion
receipt at the same `java-current-sdk-standalone-20261017-v2/completed.json`
relative path has SHA-256
`765bb57e67bb9c79bcc35c549778b3037ae2edaf539d324b57dc755afe2dea81`;
its original Maven log has SHA-256
`0d4e4754b33e9d45bf4404ca6916bd624e4a32f5ec7d97aa9b5d90ac69d5dda7`.
The actual loaded JNI library remains in its normal output directory,
SHA-256
`49a8b6d4317308ae10c524b191efa7e38cd55f18852e1688168563f303561d61`.

Both hosts now close the selected public Java standalone manifest commands
for this pinned source. FIXP cross-language cases, licences, other SDKs,
current Java timing/minimum and the coordinated release still need their
own evidence. The original failed run and benchmark failures retain their
grades.
