import json
from pathlib import Path
p=Path(__file__).parent
read=lambda f:json.loads((p/f).read_text())
b=read('crud-original-B.json');c=read('crud-create-by-green-time-red-C.json')
for lane,r in [('B',b),('C',c)]:
    assert r['failure'] is None and len(r['cases'])==20 and r['retained_owned_rows']==2
    assert all(r['natural_tables_unchanged'].values()) and r['staff_user_reference_unchanged']
    for case in r['cases']:
        if 'create_time_length' in case:assert case['create_time_length']==(19 if lane=='B' else 26) and case['all_source_fields_equal']
    f=read(f'finish-{lane}.json');assert f['failure'] is None and len(f['cases'])==12 and len({x['path'] for x in r['cases']+f['cases']})==10
    assert f['business_dml']==2 and f['fixture_dml']==0 and all(f['natural_tables_returned_to_original'].values()) and all(v==0 for v in f['rows_remaining'].values())
    assert f['staff_user_reference_unchanged'] and all(all(x.values()) for x in f['source_checks'].values())
    for case in f['cases']:
        if 'create_time_length' in case:assert case['create_time_length']==19 and case['all_original_fields_types_source_equal'] and (lane!='B' or case['B_original_same_input_wire_unchanged'])
    a=read(f'independent-audit-{lane}.json');assert a['independent_new_connection'] and a['all_passed'] and all(a['checks'].values()) and a['business_dml']==a['ddl']==a['retained_rows']==0
    cl=read('cleanup.json')[lane];assert cl['worker_stopped'] and cl['port_not_listening'] and cl['private_source_and_copied_config_removed'] and cl['private_responses_and_lease_removed']
    assert cl['private_cache_files_remaining']==cl['private_runtime_files_remaining']==cl['archive_rows_retained']==cl['staff_user_business_dml']==0
for module in ['education','experience']:
    red=read(f'crud-original-{module}-C.json');assert red['failure'] is not None and len(red['cases'])==2 and red['cases'][1]['code']==1 and red['retained_owned_rows']==0 and all(red['natural_tables_unchanged'].values())
assert read('source-operator-oracle-B.json')['original_operator_uuid_length']==36
assert read('source-operator-oracle-C.json')['original_operator_uuid_length']==36
assert read('unit-create-by-result.json')['private_candidate']['checks']==22 and read('unit-time-result.json')['private_candidate']['checks']==38
assert read('wire-comparison.json')['passed'] and read('wire-comparison.json')['complete_wire_cases']==12
print('PASS: 10 actual Store POST keys, original CREATE_BY and time reds retained, same-actor real CRUD + 12 complete wire pairs green, B complete wire unchanged, two independent source/object audits and resource cleanup')
