Generic PARC (Principal, Action, Resource, Context) authorization contract, independent of any policy framework.
The contract and engine:
Parc.Request: the authorization request a decision is made on.Parc.RequestPreparer: the behaviour for a pipeline step that prepares the request (enrich, telemetry, validate, trace) before the decision.Parc.PolicyDecider: the behaviour for the single decision point that turns a request into an allow/deny/challenge/error verdict.Parc.Pipeline: runs the declared request preparers, then the decider; also theuse Parc.Pipelinebuilder for declaring a pipeline (prepare/decide).
A host adapter builds a Parc.Request from its own action representation and runs
it through the pipeline, mapping the verdict back to the host policy framework.
Nothing here depends on the adapter or that framework. A decider or preparer is
written against Parc.* alone.