| 1. Request arrives | engine.evaluate(request, ctx) | — |
| 2. FREEZE check | Match against immutable rules | → DENY (FREEZE_BLOCK) or continue |
| 3. Identity check | Verify NHI status, scope, attestation | → DENY (NHI_*) or continue |
| 4. Temporal check | Session TTL, cooldowns, time-of-day | → DENY (SESSION_TTL_EXPIRED) or continue |
| 5. Module evaluation | All modules run in parallel | Each returns action + reason codes |
| 6. Merge | Most restrictive action wins | Single merged action |
| 7. Automation level | Apply per-rule automation | → ALLOW / DENY / MODIFY / PENDING |
| 8. Evidence emission | TealProof, SIEM, OTel (async) | Non-blocking |