XXH3-64 0.8.3: scored 24-byte pair under a random secret; 32-byte block-1 complement pair with the default secret

Two key models, one program (xxh3_64_pair_check.c, xxHash 0.8.3 embedded verbatim):

W0 (scored, random secret)
M  = 000000000000000000000000000000000000000000000000
M' = ffffffffffffffff00000000000000000000000000000000
192-byte witness secret = c9eb2c4bbc54b9cd...0a9dad3752ee254a   (full hex in the C file)
XXH3_64bits_withSecret output = 24453ecc9793506c for both messages

NAF (default-secret caveat)
M  = 0000000000000000000000000000000051151210404400000000008204000105
M' = 00000000000000000000000000000000aeeaedefbfbbffffffffff7dfbfffefa
key words = 2468b3bc26a44073
output = dd686b61e2f6dc69

W0 complements bytes 0..7; at 24 bytes those bytes feed only block 0, so under a uniform secret the pair collides exactly when fold(x, y) == fold(~x, y) for the two uniform keyed words of that block (the (M, 0) differential of lo ⊕ hi of a 64x64-bit product). It does not use the secret value. For the NAF pair, seed 0 does not collide; the first 16 bytes are zero and the second block consists of the positive/negative digit sums of the non-adjacent form of K2+K3+1 for the default-secret words K2, K3. Complementing it cancels exactly when fold(A,B) == fold(~A,~B); the construction does not transfer to an independently random secret, where the pair is an ordinary block complement at 2^-26.6.

cc -O3 -std=c11 xxh3_64_pair_check.c -lm -o check
taskset -c 24-31 nice -n 10 ./check 20                 # default secret: NAF pair over seeds, lengths 16/24/32/128
taskset -c 24-31 nice -n 10 ./check random-secret 20   # random secret: W0 through withSecret, plus the controls
taskset -c 24-31 nice -n 10 ./check random-secret 30   # 2^30 keys, about 4 min

Default mode, observed: 725 / 2^20 at 32 bytes and the same 725 events at 128 bytes; 0 at 24 bytes. The 16-byte prefixes are identical and are deliberately not sampled. SMHasher3 verification 0x1AAEE62C, recorded witness checks, 32/128 event agreement and folded-product equivalence all pass. Complete observed output, also saved as expected output. make check reads the collisions= counts of this mode: 0 725 725.

Random-secret mode, observed (run_2p20_random_secret.txt, Xeon 2026-09-19): startup asserts the recorded W0 witness through XXH3_64bits_withSecret; then, per trial, one seed and 24 secret words are drawn from one xoshiro256** stream (default salt 0x2026091901000477) and four counts are taken: W0 through withSecret 0 / 2^20 (expected 2^-26.96 x 2^20 = 0.008); the NAF pair through withSeed 746 / 2^20 (default-secret control); the NAF pair through withSecretandSeed with the same seed and a fresh secret 746 / 2^20, with 0 outputs differing from withSeed (the custom secret is ignored at 32 bytes; the program exits non-zero otherwise); W0 through withSeed 0 / 2^20 (default-secret control). At 2^30 keys (run_2p30_random_secret.txt) the same four counts were 8 (W0 withSecret, 2^-27.0, sampled cap 28.58), 754,374 (NAF withSeed, 2^-10.475), 754,374 with 0 differing outputs (NAF withSecretandSeed) and 7 (W0 withSeed); the 8/2^30 sample is consistent with the pooled 2^-26.96.

The standalone source embeds xxHash 0.8.3 with its license notices intact. In default mode two sequential xoshiro256** streams are seeded by SplitMix64; the sampler calls the full hash API. CHECK_32B.md describes the length controls of the default mode.

The old xxh3_64_verify.c, historical_base1143_check.c, supplied_rows.json and HISTORICAL.md retain pair A / base-1143 for historical controls. They do not supply the selected score. Selected row is current.

Random-secret measurement and independent verification: ../../records/witness-searches/random-secret/xxh3-64/ (searcher) and ../../records/witness-searches/random-secret/xxh3-64/verify/ (verifier, with the W0 witness log verify/logs/w0_secret_2p35.txt).

All page-pass executions were run on the Xeon on 2026-09-19 with taskset -c 24-31 nice -n 10. These small reruns validate the package and deterministic counts; the larger independently reproduced records linked above supply the published estimates. Messages are fixed before the key is sampled.