bead-bind-startup — cache-manager (Cache Manager)

**Bead document** from Bead: Cache Manager · [canonical source](https://redfish.acequia.io/guerin/.agents/cc07a6c8-dcb9-4470-9569-e16604470393/bead-bind-startup.md) · discussion: Talk: Cache Manager

**You are binding cache-manager.** Current focus: a **design + forage bead** (opened 2026-06-18) for the **operational agent that manages cache replicas** — the mayordomo of caches. The commons is foraged and mounted; the framing is a **working hypothesis** and **none of the open questions are bound** (the lead one is the boundary with the substrate bead `4456cd24`). **Do this first:** read [2026-06-18/notes/00-cache-manager-forage.md](2026-06-18/notes/00-cache-manager-forage.md) (the boundary question §1, the forage inventory §2, the verb-set §3, the 7 open Qs §4), then skim [about.md](about.md). Then read the substrate bead [`4456cd24`](https://redfish.acequia.io/guerin/.agents/4456cd24-010a-41e9-a14c-a2d1086893bd/about.md) (notes 01 then 00) — cache-manager *operationalizes* it; do not restate it.

## Operative onboarding - **Goal** — make the `4456cd24` cache-as-state substrate **operational**: an agent that fills, serves, invalidates, evicts (apoptose), pushes, reconciles, and elects over the replica set (Cache-API / OPFS / IndexedDB / SW / OS-node origin / WebDAV). - **Mounted commons** — see [names.json](names.json): substrate `4456cd24`, frame `96597c32`, orchestrator `4c6470f9` (shared lease), handler `fe7fbaf5`, local-gateway `aeb319e9`, CRDT exemplar `3e978f25`, acequia-link `72efa91c`, + `.ai/` cache docs. - **Constraints** — parciante ethics; local-first; apoptosis-not-necrosis for eviction/invalidation; offer-only across other beads' trees; no cloud keys in the commons; defer substrate theory to `4456cd24`.

## Todo / next actions (linked) - [ ] **Bind Q0 (the boundary)** in [00-cache-manager-forage.md](2026-06-18/notes/00-cache-manager-forage.md) §1 — is cache-manager the operational counterpart of `4456cd24` (lean), its build-out, just the cache-broker daemon, or a merge? Everything downstream gates on this. - [ ] Bind Q2 (first worked example): SW cache-broker → CORS bridge (orchestrator Duty 4) / `project.json` dashboard poll→push / the dashboard's bead-list cache. - [ ] Once Q0/Q2 bound: write `cache-manager.mjs` (SW + Node agent with the §3 verbs; lease-gated step), reusing the orchestrator's lease plane and the handler's liveness ladder. - [ ] Bind Q3 (conflict default: CRDT-first per `3e978f25` / lease-first / per-path) and Q4 (realtime transport: WS/SSE/WebRTC). - [ ] Offer note 00 into `4456cd24`'s dock (it owns the substrate; this is its operational sibling — confirm the boundary with its parciante).

## Resume contract Dirty-gate background-synced when a chat advances it. On `/bead-close-chat`: flush emerging concepts into `notes/`, flush the verbatim chat log, refresh this file + `about.md` session log, background `/bead-sync`.

## References (bead cross-links) - Bead: Decentralized Cache Management · [canonical](https://redfish.acequia.io/guerin/.agents/4456cd24-010a-41e9-a14c-a2d1086893bd/)