← Files AkinatorARCHIVED FILE

templates/examples/context-map.md

2.5 KB · Oct 3, 2026 · 06:33 UTC

↓ Download file

<!--
GENERATED FILE - DO NOT EDIT BY HAND.
Generated by `scripts/extract_entitlements.py`. Edit the extractor, then
regenerate.
-->

# Entitlements map

> Filled example of `templates/context-map.md`, written for the fictional Nimbus
> product described in `templates/examples/README.md`. Paths here are
> illustrative and do not exist in this repository.

## Scope

- **Covers:** every entitlement constant defined in the codebase, the plan it
  belongs to, where it is defined, and every call site that enforces it.
- **Does not cover:** what the entitlements *mean* commercially, or what happens
  at the boundary - that is `docs/business/quotas.md`. This map holds facts; the
  business doc holds rules.

## The map

| Entitlement | Plan | Value | Defined in | Enforced at |
|---|---|---|---|---|
| `SEATS` | free | 3 | `src/plans/free.ts:8` | `src/team/invite.ts:41` |
| `SEATS` | starter | 5 | `src/plans/starter.ts:8` | `src/team/invite.ts:41` |
| `SEATS` | pro | 25 | `src/plans/pro.ts:8` | `src/team/invite.ts:41` |
| `EXPORT_QUOTA` | free | 3 / month | `src/plans/free.ts:12` | `src/quota/apply.ts:22` |
| `EXPORT_QUOTA` | starter | 10 / month | `src/plans/starter.ts:12` | `src/quota/apply.ts:22` |
| `EXPORT_QUOTA` | pro | 30 / month | `src/plans/pro.ts:12` | `src/quota/apply.ts:22` |
| `RETENTION_DAYS` | free | 7 | `src/plans/free.ts:16` | `src/exports/purge.ts:15` |
| `RETENTION_DAYS` | starter | 30 | `src/plans/starter.ts:16` | `src/exports/purge.ts:15` |
| `RETENTION_DAYS` | pro | 365 | `src/plans/pro.ts:16` | `src/exports/purge.ts:15` |

### Entitlements defined but never enforced

The extractor flags these separately, because a defined-but-unenforced
entitlement is a customer-visible promise nothing keeps.

| Entitlement | Plan | Defined in | Note |
|---|---|---|---|
| `API_RATE_LIMIT` | pro | `src/plans/pro.ts:20` | No call site found. Raised as an open question in `docs/business/quotas.md` on 2026-08-19. |

## Regenerate when

- Extractor: `scripts/extract_entitlements.py`
- Regenerate with: `python scripts/extract_entitlements.py --write`
- Drift check: `python scripts/extract_entitlements.py --check` in CI -
  regenerates in memory and diffs against this file; exits non-zero if they
  differ.
- Regenerate when: a plan file under `src/plans/` changes, an entitlement
  constant is added or removed, or an enforcement call site moves.

## Related

- Docs: `docs/business/quotas.md` - what these numbers mean commercially
- Rules: `rules/07-quota-mutations.md` - the single-writer constraint
- Skills: `akinator-business-map`

SHA-256: 0a6477aec243aa1828f34fcc8cf7bfadb3d9180c593da176e7fe039d073ea7cd