Story: Read each tenant's cache partition inside its tenant

Table of Contents

This page documents a story in Sprint 27. It captures the goal, current status, acceptance criteria, and the tasks that compose it.

1. Goal

Every tenant's partition of a generated event cache loads inside that tenant with a token for that tenant obtained by Token Exchange, and the parties policy and read are strict again.

2. Status

Field Value
State DONE
Parent sprint Sprint 27
Now Nothing.
Waiting on Nothing.
Next Nothing.
Last touched 2026-10-13

3. Acceptance

  • The generated event caches take a token provider per partition, keep one token per tenant, renew it before expiry and re-exchange once on token_expired.
  • IAM mints each partition token in-process: tenant, the tenant's system party, IAM as the actor, read on parties only, a short lifetime, and every issue logged.
  • The parties policy scopes to the current tenant alone, the party read uses the default tenant scope, and a database test shows the root tenant lists only its own parties.
  • The Cache-Aside pattern page states the use, including the per-partition identity rule.

4. Tasks

Task State Start End Description
Scaffold story: Read each tenant's cache partition inside its tenant DONE 2026-10-05 2026-10-06 Story scaffolding rides this task: documents, sprint wiring, and the scaffold PR. Close it before merging that PR.
Give the event cache facet a partition-scoped identity DONE 2026-10-05 2026-10-06 Initial task for: Read each tenant's cache partition inside its tenant
Mint each cache partition's token in IAM DONE   2026-10-06 Task for: Read each tenant's cache partition inside its tenant
Restore strict tenant scoping on parties DONE   2026-10-06 Task for: Read each tenant's cache partition inside its tenant
Write the Cache-Aside pattern page DONE   2026-10-06 Task for: Read each tenant's cache partition inside its tenant

5. Decisions

6. Out of scope

Emacs 29.3 (Org mode 9.6.15)