"""Original sequential intent model; not a payment integration or concurrency test."""
import json

class Store:
    def __init__(self):
        self.requests={}
        self.orders=[]
    def submit(self,intent,payload):
        canonical=json.dumps(payload,sort_keys=True,separators=(',',':'))
        if intent in self.requests:
            old,response=self.requests[intent]
            if canonical!=old:
                raise ValueError('same intent, changed payload')
            return response
        response={'order':f'order-{len(self.orders)+1}'}
        self.orders.append((intent,canonical))
        self.requests[intent]=(canonical,response)
        return response

if __name__=='__main__':
    s=Store();basket={'item':'PAPER','quantity':1,'amountMinor':1200,'currency':'GBP'}
    first=s.submit('I17',basket)
    assert s.submit('I17',dict(basket))==first
    assert len(s.orders)==1
    changed={**basket,'quantity':2,'amountMinor':2400}
    try:s.submit('I17',changed)
    except ValueError:pass
    else:raise AssertionError('changed payload accepted')
    second=s.submit('I18',basket)
    assert second!=first
    assert len(s.orders)==2
    print('5/5 checks passed: same-intent retry reuses result; changed payload conflicts; deliberate same-basket second intent creates another order.')
