#!/usr/bin/env python3
import json, sys

def validate(c):
    kind=c['kind']
    if kind=='singleton':
        offered=c.get('offered'); submitted=c.get('submitted')
        if not isinstance(offered,int) or not isinstance(submitted,int): return 'REFUSE_MALFORMED'
        return 'ACCEPT' if submitted==offered else 'REJECT_CURSOR_NOT_BOUND_TO_READ'
    if kind=='batch':
        # Exact processed-set provenance requires a server-bound token/list.
        if c.get('server_token') and c.get('token_valid') is True: return 'ACCEPT'
        return 'UNKNOWN_BATCH_PROVENANCE'
    return 'REFUSE_UNKNOWN_CONTRACT'

def main():
    cases=json.load(sys.stdin); out=[]; failed=[]
    for c in cases:
        got=validate(c); ok=got==c['expected']; out.append({'name':c['name'],'expected':c['expected'],'got':got,'ok':ok})
        if not ok: failed.append(c['name'])
    print(json.dumps({'cases':out,'passed':len(out)-len(failed),'failed':failed},sort_keys=True))
    return 1 if failed else 0
if __name__=='__main__': raise SystemExit(main())
