This becomes this

The artifact your agent is handed, and the call graph Gecko derives from it. Every line on both sides is real.
what the agent gets — the anchor IDL
# make_purchase, verbatim from the program's own on-chain IDL
name: make_purchase
discriminator: [193,62,227,136,105,212,201,20]
accounts:
 - name: receipts
   writable: true
   pda:
    seeds:
     - kind: const
       value: [114,101,99,101,105,112,116,115]
     - kind: arg
       path: store_name
 - name: signer
   writable: true  signer: true
 - name: authority  # who is this?
 - name: mint
 - name: sender_token_account  # ?
 - name: recipient_token_account # ?
 - name: token_program
 - name: system_program
 - name: associated_token_program
args: [store_name, product_name, table_number]

# and the store itself: 4,908 opaque bytes
# AAAB9v8Kq2Zn0uQ4… base64
It names the accounts. It does not say which address each one is, which order to derive them in, or what happens next.
what gecko derives — the call graph
chain: sell_and_deliver
make_purchase
store_name · product_name · table_number
9 accounts, dependency-ordered
6 derived · 3 pinned program ids
mark_as_delivered
receipt_id
settles a receipt_id only a
LANDED make_purchase wrote
edge: receipts — a DATA dependency, not an ordering preference. extracted
refuted by: a mark_as_delivered that settles a receipt_id no make_purchase wrote.
derive plan — every account, with its origin
receipts  PDA(['receipts', store_name]) extracted
sender_token_account  ATA(signer, mint) extracted ← DEBITED
recipient_token_account  ATA(authority, mint) extracted ← CREDITED
+ 6 more · all extracted
GECKO • CHECK THE CALL BEFORE IT COUNTS every account derived offline · provenance on every edge