from pathlib import Path
import json
R=Path(__file__).resolve().parent
cases=json.loads((R/'fixtures/cases.json').read_text(encoding='utf-8'))['cases']
assert len(cases)==8
assert len({c['id'] for c in cases})==8
for c in cases:
    assert c['artifact_id']
    assert c['durability_class'] in ('EPHEMERAL','CACHE','WORKING','RETAINED','ARCHIVE')
    assert c['required_failure_domains']>=1
    assert isinstance(c['replicas'],list) and c['replicas']
assert any(c['observed_digest']!=c['expected_digest'] for c in cases)
assert any(len({r['failure_domain'] for r in c['replicas']})<c['required_failure_domains'] for c in cases)
assert any(any(r['state']=='CORRUPT' for r in c['replicas']) for c in cases)
assert any(c.get('path_moved') for c in cases)
assert any(c.get('eviction_requested') and c.get('downstream_reference') for c in cases)
assert any(c.get('restore_required') and c.get('restore_result')=='FAIL' for c in cases)
assert any(c.get('transfer') for c in cases)
print('PASS 8/8 synthetic vault fixture checks')
