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

53 lines
3.3 KiB
Markdown

# 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.