Docs / Reference
Policy states
Policy states communicate whether a capability is open, restricted, approval required, audited, blocked, or revoked.
Plain English
Policy state is the visible rule status before a caller asks the host to act.
Why it exists
Independent callers need to distinguish safe execution from expected denial, audit, approval, or blocked behavior.
Formal definition
Policy states are host-declared and host-enforced governance labels that shape invocation outcomes and evidence.
Concrete example
Ground the concept before the schema.
manager_approval is approval_required for schedule_technician.
Policy boundary
Approval requiredmanager_approval
A manager must approve technician scheduling before the host returns a confirmed appointment.
{ "invocation_id": "inv_session_abc_001", "capability_id": "schedule_technician", "capability_version": "1.0.0", "correlation": { "correlation_id": "session-abc" }, "outcome": "denied", "success": false, "data": null, "error": null, "denial": { "code": "approval_required", "message": "manager_approval must approve before execution.", "retryable": true, "details": { "policy": "manager_approval" } }, "evidence_ids": ["evt_8f3a1c"], "started_at": null, "completed_at": "2026-06-16T15:14:22.104Z"}Developer reference
Policy state reference
CHP v0.1 leaves full policy engines to hosts, but policy state still needs stable manifest metadata, denial records, and evidence semantics.
Execute after normal schema, lifecycle, and mode validation.
Require host-recognized subject attributes, grants, or entitlements before execution.
Return a denied result with denial.code approval_required until approval exists.
Allow execution but require evidence records suitable for review and replay.
Return a denied result before side effects, commonly with policy_block_pattern_matched or invariant_failed.
Deny a previously authorized subject with entitlement_denied and details explaining the revoked grant.
Relationships
Where this sits in the protocol.
Each concept should explain its neighbors so implementation teams can preserve the boundary across manifests, invocation, evidence, and tests.
Policy state is part of the manifest and registry view.
Policy enforcement happens during invocation validation.
Policy outcomes should be reflected in evidence.
Visual model
- 01Open permits execution after validation.
- 02Restricted requires entitlement.
- 03Approval required pauses or denies until approved.
- 04Blocked returns a structured denial.
Implementation notes
- Keep policy labels visible as text.
- Use stable denial codes for blocked and approval_required.
- Plan revoked state before product surfaces depend on policy tables.
Common mistakes
- Using color as the only policy signal.
- Merging approval_required and blocked.
- Failing open when policy metadata is missing.
Related concepts