sots-re/verify/results/research-completion-abi-independent/verification-plan.md

3.3 KiB

Independent ABI verification plan

Session run-6c7a726f5a2849ef0407876f; verifier research-abi-independent; requested model openai/gpt-5.6-sol.

This plan was fixed before running the independent objdump reproductions. The object is the owner-supplied dumps/sots.exe whose required SHA-256 is 970b7de729956a53094c7eb98aba4270aee98e2fed5daf0d39e290013c90c841.

Falsifiers

  1. Stop if the executable hash, GNU objdump identity, paired baseline HEAD/common-directory, or source-binding differs from the handoff.
  2. Reject the dedup interpretation if complete independent windows do not show: both description string addresses passed to 0x0046f8c0; caller cleanup; helper result tested; zero selecting the match return; and the helper/callees implementing byte-and-length inequality with independent inline/heap selection at capacity 0x10.
  3. Reject an ownership claim if append/growth paths use raw element-header transfer, if the 0x2c and 0x74 strides collapse to one shape, if long-string destruction does not call the recorded delete thunk, or if old elements are not destroyed/freed after deep copy.
  4. Reject archived record-value claims if an independent parser does not recover the stated event IDs, nested turn buckets, strings, action/location, and exact 0x7f7fffff position words from the named save.
  5. Reject acceptance on zero instruction output, nonzero command exit, missing requested address ranges, unexpected skips, hash mismatch, or reliance on counters without inspecting bytes/state.

Required branch exposures and distinct states

Static instruction exposures required in this quantum: dedup null/empty return, scalar mismatch continuation, description equal match, description unequal continuation, short/long selection for both operands, byte mismatch, length mismatch, and equal return; ObservedTech spare/full append and deep copy; PlayerEvent spare/full append, three-string copy, and long cleanup; TurnEvents hit/miss, outer spare/full growth, nested empty/nonempty copy, and destruction; prune zero/one/two leading stale plus stale-after-fresh control flow.

Distinct semantic states to keep separate: empty/short/long descriptions; equal versus description-only-different events; new versus existing tech name; spare versus full capacity; empty versus nonempty nested vectors; duplicate versus no duplicate; zero/one/two leading stale buckets; stale-after-fresh; duplicate turn buckets versus miss. Static branch exposure is not live execution of these states.

Independent challenge

Held-out negative control: inspect unordered/NaN position behavior in the dedup comparator, which the handoff summarizes as finite-position fixtures. Prediction from x87 fucompp plus test ah,0x44; jp mismatch: otherwise-identical records containing NaN in any compared coordinate must not deduplicate, including two records carrying the same NaN payload. This challenges any implicit whole-bit-equality interpretation without using a live allocator.

Scope labels will remain separate: this quantum can establish an independent static reproduction and an archived-save value cross-check. It is not original-assisted runtime execution, full live compare, independent replacement, or integrated replay, and makes no live allocator-safety or replacement-acceptance claim.