# Changelog ## 0.3.0 - 2026-09-28 First public release under MIT. - `effectivePlan()`, `hasEntitlement()`, `planRank()` and `meetsPlan()` resolve a principal's plan from the product-scoped entitlement row only. - `explainPlan()` separates a real grant from a fail-open on an unknown plan, and names the subscription status behind a denial. `toReport()` and `formatAccess()` render decisions in the `@extant2000/evidence-record` format. - `planWriteQuota()` gives per-plan write quotas with global and per-product environment overrides. - `createLimiter()` and `createSyncLimiter()` build a per-account sliding-window limiter with a pluggable counter store.