# Feature Availability (Shared Contract) This document defines the shared, cross-app system for enabling and disabling capabilities. Feature availability is not authorization. Shared contract: - Blockers and Guards: [`docs/architecture/shared/BLOCKERS_AND_GUARDS.md`](docs/architecture/shared/BLOCKERS_AND_GUARDS.md:1) ## 1) Core principle (non-negotiable) Availability is decided once, then applied in multiple places. - API Guards enforce availability. - Website Blockers reflect availability for UX. ## 2) Capability model (strict) Inputs to evaluation: - operational mode (normal, maintenance, test) - capability key (stable string) - action type (view, mutate) - actor context (anonymous, authenticated) Outputs: - allow or deny - a public reason (maintenance, disabled, coming_soon, hidden, not_configured) ## 3) Non-negotiable rules 1. Default is deny unless explicitly enabled. 2. The API is authoritative. 3. The website is UX-only.