The Production Data Plane
Make durable state authoritative, acceleration disposable, and every storage split earn its operational cost.
The enterprise problem and today’s slice
Enterprise problem: A user expects the email agent to honor “no meetings before 10:00” while arranging Alice’s architecture review, but a restart, stale cache, cross-tenant vector result, or lost background job can produce the wrong proposal and destroy trust.
Whole-course context: The incoming artifact is a controlled email workflow that separates request-scoped graph state from semantic, episodic, and procedural memory and governs who may write each type.
Today’s slice: We turn that workflow into a durable generated-application data plane: PostgreSQL owns truth, specialized stores serve bounded roles, and queues isolate background learning.
End-of-day evidence: A reviewer receives a store-ownership matrix, an Alice-request trace, a tenant-isolation probe, a restore result, a cache-invalidation check, and a measured vector-scaling rule.
Still unsolved: Release evaluation, rollout, telemetry, incident ownership, and governance evidence remain for the shipping slice.
Version, degrade, and prove recovery
An apparently healthy service can return corrupted rankings or invent context during an outage, so migrations and degraded modes must be explicit before production traffic. Rule: every vector carries provider, model, dimension, normalization, content hash, and version; every dependency has a bounded fallback.
A simple migration builds a parallel index and changes one read-version pointer after evaluation. For Alice’s request, both versions must retrieve the active 10:00 preference inside the tenant boundary before cutover. Re-embedding in place is the failure mode because incompatible vectors mix silently and rollback disappears. Decision rule: switch only after labelled quality, latency, filtering, deletion, and rollback checks pass; retire the old index after the rollback window.
If semantic retrieval times out, a low-risk draft may continue using current-thread context while declaring durable preferences unavailable. A high-impact schedule action must stop because its safety depends on memory. If Redis fails, fall back to rate-protected PostgreSQL; if the queue fails, retain the outbox event. The operator’s final action is to run four probes: cross-tenant retrieval returns zero, replay produces one outcome, cache epoch change exposes the new preference, and a restore reconstructs the active memory plus its audit chain.
Key takeaways
A production data plane is safe when truth, acceleration, and asynchronous delivery have different owners and different failure behavior.
- Keep PostgreSQL authoritative for checkpoints, memory records, idempotency, outbox events, and version pointers.
- Filter by authenticated tenant and lifecycle state before vector ranking; a similarity score never grants authority.
- Treat Redis or Valkey, queues, object storage, and dedicated vector indexes as bounded specialists, not interchangeable databases.
- Add Qdrant or another vector service only after labelled quality, latency, recovery, and operating-cost evidence justifies the split.
- Version embeddings, preserve rollback, define degraded modes, and prove restoration before trusting the architecture.
Checklist
A production data plane is ready for the next slice only when its safety claims are executable rather than architectural promises.
- [ ] Trace Alice’s request from authenticated identity to one committed 14:00 proposal.
- [ ] Prove a cross-tenant retrieval returns zero and leaves the positive control intact.
- [ ] Retry a pending outbox event and observe one terminal memory-policy decision.
- [ ] Advance a memory epoch and prove the stale cache cannot win.
- [ ] Benchmark a parallel embedding index, reject a failing cutover, and restore PostgreSQL from backup.