# AIE-005 Lab — Local-first route policy

Implement `evaluate(case)` in `starter.py`. The function must return at least these eight auditable fields: `qualified_eligible_count`, `capability_eligible_count`, `placement_eligible_count`, `operational_eligible_count`, `final_eligible_count`, `selected_route`, `final_decision`, and `reason_class`.

Apply hard gates in order. Qualification must match the exact request task/locale/risk and candidate model version. Required capabilities must be present. Remote placement must respect `egress_allowed`. Availability must be `AVAILABLE`, and measured latency must be within the request SLO. Only after those gates may local-first preference influence selection. Do not invent qualification, capability, latency, availability, or cost evidence.

Run `python run_checks.py` for learner-visible structural checks. The hidden evaluator tests deterministic states and changed-context transfer.
