/-- The summarizer agent may read the codebase. -/ theorem summarizer_may_read_code : evaluate agentPolicy "summarizer", "read", "/code" = .permit := evaluate agentPolicy { user := "summarizer", action := "read", resource := "/code" } = Decision.permit All goals completed! 🐙 /-- ...but is explicitly forbidden from writing to it. -/ theorem summarizer_cannot_write_code : evaluate agentPolicy "summarizer", "write", "/code" = .deny := evaluate agentPolicy { user := "summarizer", action := "write", resource := "/code" } = Decision.deny All goals completed! 🐙 /-- The deployer agent may ship to production. -/ theorem deployer_may_deploy : evaluate agentPolicy "deployer", "deploy", "/prod" = .permit := evaluate agentPolicy { user := "deployer", action := "deploy", resource := "/prod" } = Decision.permit All goals completed! 🐙 /-- An unprovisioned agent matches no rule: the policy has *no opinion* on it. -/ theorem rogue_agent_unspecified : evaluate agentPolicy "rogue", "read", "/prod" = .notApplicable := evaluate agentPolicy { user := "rogue", action := "read", resource := "/prod" } = Decision.notApplicable All goals completed! 🐙 /-- The auditor is matched *only* by an `abstain` rule: the policy speaks about it and still deliberately says nothing — a state a Bool could never capture. -/ theorem auditor_explicitly_undecided : evaluate agentPolicy "auditor", "read", "/logs" = .notApplicable := evaluate agentPolicy { user := "auditor", action := "read", resource := "/logs" } = Decision.notApplicable All goals completed! 🐙