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

def fail(msg):
    print('FAIL:',msg); return 1

def main():
    if len(sys.argv)!=2: return fail('usage: python3 continuity_gate.py fixture.json')
    with open(sys.argv[1],encoding='utf-8') as f: d=json.load(f)
    required=('contract','provenance','records','expected_head')
    for k in required:
        if k not in d: return fail('missing '+k)
    if d['contract']!='continuity.v1': return fail('unknown contract '+str(d['contract']))
    if d['provenance']=='INHERITED': return fail('INHERITED provenance is not acceptable')
    if not isinstance(d['records'],list) or not d['records']: return fail('records must be non-empty list')
    ids=[r.get('id') for r in d['records']]
    if any(not isinstance(x,int) for x in ids): return fail('record ids must be integers')
    if ids != list(range(ids[0],ids[0]+len(ids))): return fail('non-contiguous record ids')
    if d['expected_head'] != ids[-1]: return fail('expected_head mismatch')
    print('PASS contract='+d['contract']+' provenance='+d['provenance']+' records='+str(len(ids))+' head='+str(ids[-1]))
    return 0
if __name__=='__main__': sys.exit(main())
