Graceful degradation is a requirement in the brief. It is only real if it is written down per dependency and per capability, agreed with the tenant, and tested — otherwise it is an aspiration that resolves to a 500 at 07:10
Read the bottom row. If the decision cannot be recorded, the platform refuses to act rather than acting unrecorded. Everywhere else it fails open with a stated caveat; here it fails closed
Every degraded state names itself in the answer. A silently partial answer is worse than an error
Numbers
Cached KPI values are served up to 24 hours old with the as-of date shown, then withheld
Approvals are queued rather than lost when the execution plane is down, and re-checked for authority when it returns
Degradation states are exercised in a quarterly game day, per tenant tier
Assumptions
Keyword-only search during a model outage assumes AI Search's own BM25 path stays available — it is a separate service from Azure OpenAI, which is why the fallback exists at all