# Policy Engine Contracts > **Contracts only.** No policy evaluation engine in this wave. > Targets: [policy-targets.md](policy-targets.md) > Contract version: `policy-engine.v1` > ADR: [ADR-023](../architecture/adr/ADR-023.md) (v1.2) --- ## 1. Purpose **Policies** are independent commercial/governance rules that may constrain eligibility, licensing, pricing application, activation, visibility, quotas, marketplace behavior, compliance, and related concerns. Policies are **not** products, bundles, assets, or capabilities. They attach by reference. --- ## 2. PolicyDefinition | Field | Type | Meaning | | --- | --- | --- | | `registry_object_id` | uuid | Universal ID | | `policy_code` | string | Stable open code | | `policy_kind` | string | Open kind — see §3 | | `display_name` | string | | | `status` | enum | `draft` \| `active` \| `deprecated` \| `retired` | | `version_code` | string | | | `priority` | int | Higher wins on conflict (future engine) | | `effect` | enum | `allow` \| `deny` \| `require` \| `transform` \| `inform` | | `targets[]` | PolicyTargetBinding | See [policy-targets.md](policy-targets.md) | | `conditions` | object | Open predicate bag (unevaluated here) | | `parameters` | object | Open parameters | | `metadata_ref` | uuid? | | | `documentation_ref` | string? | | | `ext` | object | | --- ## 3. Policy kinds (examples — open registry) | policy_kind | Meaning | | --- | --- | | `eligibility` | Who may acquire/activate | | `licensing` | License grant constraints | | `commercial` | General commercial rules | | `regional` | Country/region gates | | `pricing` | Which pricing items apply | | `tax` | Tax class / inclusivity hints | | `promotion` | Promotional windows | | `discount` | Discount class application | | `activation` | Activation pipeline constraints | | `feature_visibility` | UI/API surface visibility | | `capability_access` | Capability enable rules | | `quota` | Quota ceilings | | `marketplace_rules` | Marketplace listing/commerce rules | | `compliance` | Regulatory/compliance | | `security` | Security posture rules | | `support` | Support tier rules | | `trial` | Trial eligibility/duration | | `renewal` | Renewal behavior | | `expiration` | Expiry / sunset | Unlimited future `policy_kind` values MAY be registered without architecture changes. --- ## 4. Policy evaluation (future — documented only) Logical interface (not implemented): ``` EvaluatePolicies(context) → { decisions[], deny_reasons[], transforms[] } ``` Context MAY include tenant, workspace, product, bundle, subscription, license, region, industry, asset, metadata snapshots. --- ## 5. Invariants 1. Policies never write foreign service databases directly — they inform Core commercial / activation decisions. 2. Payment L2/L3 remain owned by Payment; policies may *gate* L1 or commercial packaging only. 3. Tax/discount/promotion engines are **not** authorized by these contracts alone. 4. No ownership transfer to Marketplace or Experience via policy kinds.