# Current-main Java JNI cursor rerun — 19 October 2026

The unchanged cursor optimization reduces equal-weight six-cursor-cell process-p50 latency by **26.81%**, nominal 95% interval **25.86–27.60%**, on the newly integrated source. Every cursor cell has nominal support for more than a 5% improvement. Pure-Java cursor aggregate is 1.0004 [0.9904, 1.0104]. No material >5% index-p50 or batch-p99 regression is confirmed by the predeclared nominal guard, but two index batch-p99 point increases remain unresolved. This is shared-VM diagnostic evidence, not exclusive-host or tail-equivalence qualification.

[Full report](../jni-cursor-current-20261019/measurement-tools/JNI_CURSOR_REPORT.md) · [24 paired rows / 48 variant cells](../jni-cursor-current-20261019/measurement-tools/JNI_CURSOR_CELLS.csv) · [Analysis/input seals](../jni-cursor-current-20261019/measurement-tools/JNI_CURSOR_ANALYSIS.json) · [Historical absolute p50 table](../jni-cursor-current-20261019/HISTORICAL_ABSOLUTE_P50.csv)

## Source and comparison

Pulled private main first to `4ad5d263e96e188275b3879e3a8b1c02a3ffde05`, then merged it into the published cursor branch as `389adc431426828b65f1f52a4b06e27e750dbaa4`. This incorporates 340 upstream commits beyond the original controlled baseline and 134 beyond the earlier integration smoke. The native file merged automatically; the generated remaining-root inventory was regenerated. These are pinned revisions as of the pull, not a promise that main stops advancing.

The core Java/C++ cursor and index sources remain byte-identical to the original baseline. The resolver helper and focused Java/native tests remain byte-identical to implementation commit `8b7128c5bc2170ae2d93cdf86a9f33b732141665`. Reversing its original native-wrapper patch in an external source copy produces the exact pinned-main wrapper; that is the baseline native build. The candidate is the normal merged SDK. Both builds use identical normal O3/LTO/native compiler arguments apart from the output-library path, with 320 common source inputs verified equal. There is one shared freshly compiled Java class tree. [Source comparison](../jni-cursor-current-20261019/integration-source.json) · [Implementation match](../jni-cursor-current-20261019/implementation-match.json) · [Compiler/source proof](../jni-cursor-current-20261019/native-build-equivalence.json).

Surrounding session/feed and private-root/build work changed SDK/native bytes and the JNI signature. The fresh build fingerprint is `2d916434ca069d9ab765b8272411ee5b22edded54b55d1c380d57019f59f58a2`; release 8 Java/C++11 sources ran on JDK 21 (update 12, patch 1). No new Java 8 runtime validation is claimed. Java classes SHA256 `c1e2ed282694e13e7c76f8aedf112b7f1b0d190ea78a7377bb4f12e564f6c0da`; baseline DSO `1194fbb1d68b4121dc4a0745069df30e6659dfbab7862344dcbed7a1c3ff5877`; candidate DSO `7a6690f5696e851d38d6e49a9ea913b7e93f6ea052a5f43c39eb9db5804ba7ff`.

Both frozen runtimes use identical normal/probe classpaths in the same order, Java SDK and adapter class bytes, JVM options, JDK inventories, workload/observer definitions and adapter compile-recipe seals. Only the selected JNI DSO payload differs. The original one-field lazy cursor semantics, full Init/traversal/END scope, state/bounds checks and unchanged observer remain. SDK instances are reused outside timing; no parse-ahead or cursor/index substitution is used.

## Current results

Actual primary UTC **2026-10-19T13:20:15Z–2026-10-19T13:37:11Z**. Ten shuffled rounds, 480 timed processes, 96 expected-negative rechecks; 200,000 warmup and 10,000 batches of 32 operations per timed process. Timed children use CPU4, launcher CPUs0–3; building, test compilation and admission finished before timing. All samples/outliers/drift flags remain included. The analyzer checked raw chronology/counts, metrics, process commands, receipts, schedule, negative markers, source/bytecode/runtime identities and consumed-file hashes after final verification and telemetry shutdown.

Absolute columns are medians of ten process p50 values. Ratios are geometric means of round-paired process-statistic ratios and need not equal ratios of the absolute columns. Nominal 95% intervals use 5,000 complete-round bootstrap draws, without multiplicity correction or an exclusive-host guarantee. Batch-p99 is a statistic of 32-operation averages, not single-message tail latency.

| JNI operation | Fixture | Baseline p50 ns | Candidate p50 ns | Paired p50 ratio [nominal 95%] | Paired batch-p99 ratio [nominal 95%] |
|---|---|---:|---:|---:|---:|
| cursor_parse_only | D | 1031.5 | 721 | 0.7044 [0.6985, 0.7104] | 0.5256 [0.3433, 0.7292] |
| cursor_parse_only | 8 | 1128.5 | 816 | 0.7236 [0.7092, 0.7399] | 0.7128 [0.6046, 0.8579] |
| cursor_parse_only | W | 3559 | 2588.5 | 0.7176 [0.7015, 0.7311] | 0.6802 [0.5275, 0.8908] |
| cursor_parse_extract | D | 1170 | 881 | 0.7560 [0.7476, 0.7638] | 0.5854 [0.4054, 0.8339] |
| cursor_parse_extract | 8 | 1372.5 | 1046 | 0.7774 [0.7606, 0.7991] | 0.9319 [0.6836, 1.3060] |
| cursor_parse_extract | W | 4582 | 3256 | 0.7152 [0.6949, 0.7371] | 0.8754 [0.6985, 1.0868] |
| index_parse_only | D | 271 | 270 | 0.9970 [0.9937, 1.0004] | 1.1099 [0.9239, 1.3566] |
| index_parse_only | 8 | 297.5 | 304.5 | 1.0195 [1.0072, 1.0289] | 0.9922 [0.8166, 1.2431] |
| index_parse_only | W | 868 | 864.5 | 0.9953 [0.9940, 0.9967] | 0.8934 [0.6260, 1.2761] |
| index_parse_extract | D | 382 | 382 | 1.0003 [0.9943, 1.0057] | 0.8725 [0.6821, 1.0975] |
| index_parse_extract | 8 | 455.5 | 464 | 1.0164 [1.0127, 1.0200] | 1.2121 [0.9992, 1.5105] |
| index_parse_extract | W | 1537.5 | 1524 | 0.9911 [0.9811, 0.9998] | 0.9064 [0.5634, 1.4632] |

JNI index p50 paired shifts range from −0.89% to +1.95%. Fixture 8 has small nominally supported increases: parse-only +1.95% [0.72%, 2.89%], extraction +1.64% [1.27%, 2.00%]. These do not cross the predeclared 5% material guard; describing every index case as unchanged would hide them.

Unresolved batch-p99 points are D index parse-only **1.1099 [0.9239, 1.3566]** and 8 index extraction **1.2121 [0.9992, 1.5105]**. A material tail increase is neither confirmed nor excluded. No extra tail campaign was pooled, no outlier was removed, and absence of a confirmed guard does not establish tail equivalence.

The optimized JNI/pure p50 ratios remain **3.93–3.97×** for cursor parse-only and **2.49–2.64×** for cursor extraction. The optimization is useful but does not close the per-field JNI/checked-state restoration cost. Native index is also still slower than pure on D/8: about 1.13–1.17× for structural work and 1.10–1.12× for extraction; W index ratios are approximately 0.95× and 0.99×.

## What moved relative to the earlier runs

The original controlled cursor gain was 24.57%; this independent current-source comparison gives 26.81%. The helper itself did not change, and the campaigns are not pooled. The difference between those effect estimates is not a measured additional code optimization.

Descriptively, current optimized JNI cursor p50 medians are within −2.1% to +0.6% of the original optimized medians. Current optimized JNI index p50 medians are within −1.1% to +3.3%. The integration smoke's roughly +12–14% index signals did not establish an optimization regression; this fresh same-base comparison shows much smaller index effects. Historical medians came from different windows, revisions and process designs, so they do not isolate source changes or identify a VM cause. The historical CSV retains all 24 cells, including pure controls.

The VM is a Xeon Platinum 8370C with five vCPUs and a four-CPU quota. CPU4 steal in the enclosing current campaign window is **34.30%** (original campaign 15.12%). This window includes startup, warmup, probes, gaps and verification. Aggregate counters span all VM CPUs and cgroup counters span the container; they do not attribute an individual cell or tail change. Stable pure p50 controls support the comparison's central result, but do not certify identical JIT tiers, stationarity, or reliable tails.

| Variant | Provider | Processes | Drift >5% | Throttled processes / microseconds | Aggregate steal in process windows |
|---|---|---:|---:|---:|---:|
| candidate | libhft_java_jni | 120 | 11 | 6 / 338023 | 19.55% |
| baseline | libhft_java | 120 | 3 | 7 / 3343883 | 18.16% |
| candidate | libhft_java | 120 | 5 | 5 / 621135 | 17.92% |
| baseline | libhft_java_jni | 120 | 3 | 8 / 1154358 | 18.76% |

## Validation and retained evidence

Both fresh normal native builds passed ABI and actual loaded-library mapping checks. **51 cursor/codec JUnit tests per variant passed under `-Xcheck:jni`**. SDK source export scans passed. Frozen admission separately passed **48 normal one-iteration cells and 96 expected-negative probes**. The primary campaign then passed **480 timed processes and 96 final negative probes**, complete snapshot/controller/support/source verification and clean monitor shutdown. [Tests](../jni-cursor-current-20261019/validation/) · [Frozen admission](../jni-cursor-current-20261019/frozen-admission/conditions.json) · [Primary execution receipt](../jni-cursor-current-20261019/execution.json).

The first two mutable candidate-admission attempts refused before running a cell: the first selected the baseline library in its environment; the second hit the mutable runner's path-dependent recipe check on the composed library path. A pending primary wrapper was stopped during preflight, before any primary execution/schedule/sample existed. The successful correction used the existing frozen-runtime runner; no SDK bytes or recipe seals were changed. All failed attempts and corrected commands are retained. [Admission diagnosis](../jni-cursor-current-20261019/admission-route-note.json).

The complete raw experiment is retained in the archive identified by [ARCHIVE.json](../jni-cursor-current-20261019/ARCHIVE.json), with [content/mode and gzip verification](../jni-cursor-current-20261019/ARCHIVE_INTEGRITY.json). Limited workspace space places the full archive under `/tmp/libhft-bench-evidence/jni-cursor-current-20261019`; compact private records are committed here. Exact original absolute paths and compatible host dependencies are needed for replay. Frozen JDKs, SDKs, DSOs, source/provenance, commands, probes, raw samples, telemetry and analysis are retained; compiler/Maven caches are recorded rather than distributed, so this is not an offline build kit. [Replay/scope notes](../jni-cursor-current-20261019/REPLAY.md) · [Compact hashes](../jni-cursor-current-20261019/COMPACT_SHA256.json).

This rerun covers Java pure/JNI. It supplies a fresh same-base optimizer comparison, not a new six-flavour release matrix. Remaining work is to profile per-field JNI/state restoration without changing cursor semantics, monitor the small fixture-8 index cost, and qualify the unresolved tails on a host with low steal before making tail guarantees.
