from pathlib import Path
import json, ast
R=Path(__file__).resolve().parent
cases=json.loads((R/'fixtures/cases.json').read_text(encoding='utf-8'))['cases']
assert len(cases)==8
required={'candidate_digest','source_binding','c2pa_manifest_valid','rights_state','license_allows_use','approval_state','approval_candidate_digest','technical_qc','semantic_qc','rights_qc','aesthetic_qc'}
for c in cases:
    assert required.issubset(c), (c['id'], sorted(required-set(c)))
text=(R/'starter.py').read_text(encoding='utf-8')
tree=ast.parse(text)
assert any(isinstance(n,ast.FunctionDef) and n.name=='evaluate_candidate' for n in tree.body)
forbidden=['oracle'+'_expected','internal'+'_verification','answer'+'_key']
assert not any(x in text.lower() for x in forbidden)
print('PASS 8/8 learner fixture structural checks')
