← Engineering notes

Engineering · September 5, 2026

A memory write is not a retrieval guarantee

Build a durable read-after-write workflow with explicit indexing receipts and safe retries.

Separate acknowledgement from completion

A queued ingestion response means the service accepted work, not that every search index and graph projection is ready. Persist the returned job ID alongside the originating task. Let the agent continue independent work, but gate dependent reads on the job's terminal result. A timeout is an unknown outcome, not permission to create the same fact again.

Asynchronous jobs

Order corrections after the original write

If a correction races the initial extraction, it may not see the fact it is intended to replace. Wait for the original ingestion job before submitting the correction, then wait for the correction job before evaluating retrieval. Inspect current evidence and the superseded history separately. Include exact identifiers and scope in the test; a plausible answer about a different object is still a failure.

Production memory pattern

Verify the contract, not just HTTP 200

Use a synthetic collection to write a fact, read it, correct it, and ask both a known and an unknown question. Check memory IDs, current values, abstention metadata and scope. Test delayed indexing and retries as well as the fast path. Application authorization must remain independent of any instruction found in retrieved text.

Search evidence and grounding