You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
🤖 feat: surface entitlements and gate provisioner reconciliation
Add CoderControlPlane status fields for license tier and external provisioner
entitlements, reconcile them from coderd, and gate CoderProvisioner
reconciliation when external provisioner daemons are not entitled.
Also add a provisioner condition for entitlement state, wire a control-plane
watch/index for faster rechecks, and extend bootstrap/tests for entitlements.
Follow-ups:
- avoid control-plane entitlements status churn by updating
`status.entitlementsLastChecked` only when first populated or when derived
entitlement/tier values change
- avoid no-op status writes on provisioner entitlement requeue paths so the
configured backoff is respected in unlicensed environments
- re-check stale control-plane entitlement cache entries (including both
entitled and not-entitled fast paths) via API before deciding gating
---
_Generated with [`mux`](https://github.com/coder/mux) • Model: `openai:gpt-5.3-codex` • Thinking: `xhigh` • Cost: `$1.23`_
<!-- mux-attribution: model=openai:gpt-5.3-codex thinking=xhigh costs=1.23 -->
|`licenseLastApplied`|[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#time-v1-meta)| LicenseLastApplied is the timestamp of the most recent successful operator-managed license upload. |
35
35
|`licenseLastAppliedHash`| string | LicenseLastAppliedHash is the SHA-256 hex hash of the trimmed license JWT that LicenseLastApplied refers to. |
36
+
|`licenseTier`| string | LicenseTier is a best-effort classification of the currently applied license. Values: none, trial, enterprise, premium, unknown. |
37
+
|`entitlementsLastChecked`|[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#time-v1-meta)| EntitlementsLastChecked is when the operator last queried coderd entitlements. |
38
+
|`externalProvisionerDaemonsEntitlement`| string | ExternalProvisionerDaemonsEntitlement is the entitlement value for feature "external_provisioner_daemons". Values: entitled, grace_period, not_entitled, unknown. |
36
39
|`phase`| string | Phase is a high-level readiness indicator. |
37
40
|`conditions`|[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#condition-v1-meta) array | Conditions are Kubernetes-standard conditions for this resource. |
0 commit comments