from pathlib import Path
import json, ast
P=Path(__file__).resolve().parent
cases=json.loads((P/'fixtures/cases.json').read_text(encoding='utf-8'))['cases']
assert len(cases)==8 and len({c['id'] for c in cases})==8
ast.parse((P/'starter.py').read_text(encoding='utf-8'))
required=['platform','manager','os_managed','desired','process_alive','readiness','watchdog','failure_count','failure_limit','within_reset_window','single_instance','stop_requested','drain_complete','stop_timeout_expired','transfer']
for c in cases:
    for k in required: assert k in c,(c['id'],k)
assert any(c['id']=='case_08' and c['transfer'] and c['platform']=='windows' and c['manager']=='SCM' for c in cases)
print('PASS learner structural checks: 8 synthetic cases, Windows transfer present, starter parses, no hidden labels required')
