---
name: project-pump-worker-seam
description: "Architecture card 1 (top rec): pump-worker seam in peerloop.rs — grilling queued for next session"
metadata: 
  node_type: memory
  type: project
  originSessionId: cc79a59c-0bab-41ea-bc42-b5ea01b111e4
---

Top architecture recommendation for spt-core post-restoration: extract worker seam from `run_peer_pump` in `spt-daemon/src/peerloop.rs` (1036L, `:288`).

**Current shape:** `run_peer_pump` hard-wires schedule + cadence + call order for ~8 consumers — registry advertise/evict (+ `consume_repair_evictions` drain `:389/:591`), sync pull `:458`, notif feed `:438`, update check `:490`, orphan teardown. No injectable clock. Pump choreography E2E-only (8 unit tests cover supervisor backoff only, NOT pump behavior).

**Proposed deepening (grilling decides):** each consumer = worker module owning its own cadence behind one small worker interface; pump = generic scheduler iterating workers, injectable clock. Model on D6 TrialEnv (injectable env) + D5 pure kernels (next_fire/advance_after_fire).

**Load-bearing constraint (ADR-0018 V4):** cadences must NOT be deadline-converted — idempotent stagger-from-due-now. Worker seam must NOT reintroduce per-loop timing writes. KH 7.4 (per-agent scheduling non-blocking) also bears.

**Grilling side-effects:** new term for worker concept → add to CONTEXT.md; rejection with load-bearing reason → offer ADR.

**Why top rec:** v0.4.0 shipped TrialEnv injectable pattern + D5 pure kernels proving exact shape. Must land BEFORE spt-claude-code piles new consumers onto old pump architecture.

**Status as of 2026-06-10:** Queued — next session's first action is the grilling loop.

See also: [[project-restoration-milestone-closed]]
