Durable local outbox + opportunistic Nexus sync for Lattice consumers.
Project description
lattice-recall
lattice-recall is the durable local outbox and opportunistic Nexus sync layer for the Lattice family. It provides a synchronous SQLite write path (WAL mode) for zero-loss local capture, paired with an asynchronous background coroutine that syncs records to the Nexus POST /api/recall endpoint when connectivity allows. All records are UUID-keyed for idempotent delivery, retried with exponential backoff on transient failures, and vacuumed after a configurable retention window (default 30 days).
Quickstart
pip install lattice-recall
import lattice_recall
await lattice_recall.persist(record)
Local-Only Mode
By default, lattice-recall requires Nexus connectivity. For early consumers or offline-first workflows, disable Nexus sync:
store = RecallStore(nexus_enabled=False)
await store.persist(record)
Local-only mode uses SQLite for all durability. Full details on the Nexus dependency and migration path: docs/NEXUS_DEPENDENCY.md.
Spec
The complete design specification for v0.1.0 lives in the Lattice vault:
02_Projects/Lattice/lattice-recall/Specifications/2026-04-27 lattice-recall v1 - Design Spec.md
Acceptance Gates
All gates covered by tests. See vault spec for full detail on each gate.
| Gate | Test Path |
|---|---|
| G1 sync local write durability | tests/test_store_persist.py |
| G2 async Nexus sync | tests/test_sync_worker.py |
| G3 reachability gating | tests/test_nexus_client.py |
| G4 burst on reconnect | tests/test_net_up_event.py + smoke B2 |
| G5 idempotency | tests/test_idempotency.py + tests/test_nexus_client.py |
| G6 cross-device ordering | tests/test_store_fetch_local.py |
| G7 retention | tests/test_retention.py |
| G8 multi-source | tests/test_store_fetch_local.py + smoke B4 |
| G9 multi-tenant slot | covered via Record.tenant_id |
| G10 failure visibility | tests/test_telemetry.py |
| G11 manual drain | tests/test_store_lifecycle.py |
| G12 local-only retrieval | tests/test_store_fetch_local.py |
| A1-A10 unit tests | tests/test_*.py per gate |
| B1-B5 smoke gates | tests/smoke/test_smoke_b1_to_b5.py |
| C1-C3 perf gates | tests/perf/test_perf_c1_c3.py |
License
Proprietary. All rights reserved.
Version: 0.1.0 (2026-04-27)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lattice_recall-0.1.0.tar.gz.
File metadata
- Download URL: lattice_recall-0.1.0.tar.gz
- Upload date:
- Size: 24.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
73fd4286c766107117d90e46885ac84ba87a7325087316762409952ebb0d53dd
|
|
| MD5 |
ede545119ee5042ec3d99a5d86767ca5
|
|
| BLAKE2b-256 |
3af07aa9ded8c457f0e10f289bd3be3b6d0208d7b2866d2b94b001d7b4e9c856
|
File details
Details for the file lattice_recall-0.1.0-py3-none-any.whl.
File metadata
- Download URL: lattice_recall-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9d62af7808e80e13405965101cdc1e7562410f732247bf4cad462b456357d60a
|
|
| MD5 |
8b922731c0afa6efb901d06c47471b38
|
|
| BLAKE2b-256 |
5b75421e233f5c96c8251729f6b23baf0e2542d066b5e61433d08053d90b9835
|