Session 15. Defend the capstone — Fri 02 Oct
Reading your buyer under pressure
Why the output is the whole defence
Six minutes is not long enough to reason from first principles about what just went wrong. It is long enough to read the buyer's output out loud, line by line, because every line says which step it came from:
[ ok] pin 1 x 'Espresso', budget 2000000, mint Eoqdd43n.. -> intents/...
[ ok] prepare simulated: pass, expires in 150 blocks
[ NO] check REFUSED on quantity: asked 2, prepared 1
Nothing was signed.
The diagnosis, in order
When the card lands, resist explaining. Read instead.
- Where did it stop? The step with
NOorSTOP, and whether it is a refusal the buyer chose or a failure it fell into. - Which field decided? A refusal names one field and both values: what was asked, from the pin, and what was found, in the bytes or from verify or the signer.
- Was anything signed or sent? The last line says
Nothing was signedorNothing was submitted. That line is the pass. - Where is it written down?
refusals/<stamp>-<field>.json. Open it: it is the evidence that outlives the screen.
STOP is different from NO. STOP means the buyer could not reach what a step needed:
the network, Gecko, or a file. Say so, and switch to the recorded lane with
GECKO_SOURCE=recorded. Nothing was signed either way.
Rehearse the card, not the demo
Run all four before Friday: uv run buyer --cards --recorded offline, then each one live
on devnet. You will find at least one you did not expect. That is the point of finding it
on Thursday rather than on stage.