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
required={'node_id','power_policy_version','desired_power_state','observed_power_state','runtime_readiness','queued_demand','active_job_count','drain_state','telemetry_freshness','idle_window_minutes','idle_threshold_minutes','minimum_on_elapsed_minutes','minimum_on_required_minutes','minimum_off_elapsed_minutes','minimum_off_required_minutes','cooldown_remaining_seconds','inhibitor_state','power_capability_declared','control_method','allowable_action','requested_action','request_result','state_confirmation','ready_probe','retry_count','retry_budget','race_detected','manual_override'}
for c in cases:
    assert required.issubset(c), (c['id'], required-set(c))
print('PASS 8/8 learner fixtures structurally ready')
