Skip to main content

Flow: Policy Lifecycle

This flow covers dynamic grants and platform OPA policy. Status: grant storage/outbox and OpenFGA event consumption are Partially implemented; normalized projection, OPA bundles, and complete reconciliation are Planned.

policy_lifecycle · author, publish, decide, revoke01 / 08
A provider authors a grant. Policy Service validates it with Catalogue facts, commits it with an outbox event, and RabbitMQ delivers it to authorization projections. Consumers receive decisions at an enforcement point. Revocation denies before cleanup, and reconciliation compares source records with projections.author grantcanonical factsatomic commitpublishproject + activateprotected requestcheck revisionsrevoke / expiredeny firstcompare authority ↔ projectionsProvider / adminauthor · revokePolicy Serviceauthority · versionIMPLEMENTEDCatalogue / Userresource · org · subject factsPARTIALOutboxstable event identityPARTIAL ADOPTIONRabbitMQconfirm · retry · DLQAuthorizationOpenFGA projectionplanned OPA data/bundlecache invalidationPARTIALConsumerexercise grantEnforcement pointapply every obligationPARTIAL
policy authordurable distributiondecision stateactive enforcementexpiry/revocation

Platform policy bundles

OPA policy code follows a separate lifecycle: review → tests → immutable signed bundle → environment promotion → verification → readiness-gated activation → revision in every decision → rollback to a previous signed revision. The bundle authority, signer, and distribution mode remain open decisions and are not implied to exist.

Audit and observability

Grant ID and version, author, organization, resource, permission, condition schema version, outbox/event ID, projector state, OpenFGA model/store revision, OPA bundle revision, decision IDs, expiry/revocation time, and reconciliation result form the audit chain. Alerts cover outbox age, DLQ depth, projection lag, tuple/model failure, bundle mismatch, and stale-grant decisions.