Skip to content

fix(fixtures): recover corrupt lane1_submit_request frame (green make verify)#74

Merged
mdheller merged 1 commit into
mainfrom
fix/ci-lane1-fixture-hex
Jul 4, 2026
Merged

fix(fixtures): recover corrupt lane1_submit_request frame (green make verify)#74
mdheller merged 1 commit into
mainfrom
fix/ci-lane1-fixture-hex

Conversation

@mdheller

@mdheller mdheller commented Jul 4, 2026

Copy link
Copy Markdown
Member

Problem

CI ci job (make verify) red on main: tools/verify_fixtures_strict.py aborted with ValueError: non-hexadecimal number found at the fixtures step. Cause: the lane1_submit_request frame in fixtures/vectors_hex_prophet_lane1.txt was odd-length (1561 hex chars) — a single nibble was dropped when the vector was first committed (bee3137), so this job has been red since. The other 5 lane1 frames verify cleanly.

Recovery (verified, not fabricated)

The frame carries a BLAKE2b-MAC AEAD tag → a strong recovery oracle. Brute-forcing a single-nibble insertion at every position (16 × 1562 candidates) yields exactly one reconstruction whose recomputed blake2b(aad, key=0) equals its embedded tag: a dropped f at hex position 1035. Uniqueness (false match ≈ 2⁻¹²⁸) makes this the original frame. It now passes the same AEAD check as lane1 frames 2–6.

Verification

  • make verifyexit 0: rust-test, go-test, fixtures (all AEAD tags OK), aux-shape, avro-lom-diagrams all green.
  • Diff is 1 line in 1 fixture.

Note (not addressed here)

verify_fixtures_strict.py's sets list references vectors_hex_pathB_stream.txt, which does not existverify_file silently returns early, so that lane is currently unverified. Flagging separately; not a CI failure.

…bble)

`make verify` (CI `ci` job) was red on main: verify_fixtures_strict.py aborted
with "non-hexadecimal number found" because the lane1_submit_request frame in
fixtures/vectors_hex_prophet_lane1.txt was odd-length (1561 hex chars) — a single
hex nibble was dropped when the vector was first committed (bee3137), so this job
has been red since. The other five lane1 frames verify cleanly.

The frame carries a BLAKE2b-MAC AEAD tag, which acts as a strong recovery oracle:
brute-forcing a single-nibble insertion at every position yields exactly one
reconstruction whose recomputed blake2b(aad, key=0) equals its embedded tag —
a dropped 'f' at hex position 1035. That uniqueness (false-match ~2^-128) makes
this a verified recovery of the original frame, not a fabricated value. The frame
now passes the same AEAD check as lane1 frames 2-6.

make verify green end-to-end.
@mdheller mdheller merged commit 161f344 into main Jul 4, 2026
8 checks passed
@mdheller mdheller deleted the fix/ci-lane1-fixture-hex branch July 4, 2026 15:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant