Every opcode of the vault script, executed against the real mainnet witness. 880 script elements, 57 witness elements, no branches. The stack is exact at every step; the hash checks are recomputed here; the 24 ECDSA checks are Bitcoin Core's to verify.
302 elements, zero opcodes. Each commitment is HASH160 of a secret preimage the vault owner holds. Each dummy signature is a valid 9-byte DER signature for some pubkey the spender will compute. Stack climbs to 357.
13 elements, 9 opcodes. The spender's index reaches its commitment and its same-numbered dummy signature through fixed offsets. The preimage proves ownership; the dummy signature becomes one of the ten the multisig will check, and so gets deleted from the scriptCode before the sighash.
MIN with 152: our reading is a bounds clamp so an out-of-range index cannot roll outside the pool. D1 confirms.The 32-byte hash must parse as strict DER with a recoverable r. Random bytes do that with probability 2^-46.01 per recovery (Core-verified kernel predicate, r or r+N; 2026-09-11 recompute). That failure rate is one factor of the grind. Every pubkey in the round is recovered by the spender from the sighash, so the chosen subset is bound to this exact transaction.
Key recovery. For any signature bytes and any sighash there is exactly one pubkey that validates, and the spender can compute it. Every pubkey in the witness is such a recovered key, so CHECKSIG becomes a transaction-hash oracle inside Script.
FindAndDelete. Legacy CHECKMULTISIG deletes the signatures it checks from the scriptCode before hashing. Choosing 9 of 150 dummies changes the sighash, so the recovered pubkeys, so the puzzle. The choice is the digest; the preimages sign it.