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
req_case={'id','name','scheduler_version','workload','nodes'}
req_work={'workload_id','artifact_digest','runtime_requirement','license_required','accelerator_requirement','memory_requirement_gib','policy_constraint'}
req_node={'node_id','artifact_replica_state','artifact_digest','runtime_capability','license_state','accelerator_type','device_memory_gib','policy_domain','capability_freshness','preference','live_telemetry'}
for c in cases:
    assert req_case.issubset(c), c.get('id')
    assert req_work.issubset(c['workload']), c['id']
    assert c['nodes'], c['id']
    for n in c['nodes']: assert req_node.issubset(n), (c['id'],n.get('node_id'))
print('PASS 8/8 learner fixtures structurally ready')
