1.8 KiB
1.8 KiB
Decision Record: Temporal Graph Persistence Integration
Problem
Temporal graph nodes were only held in memory; the stub persistTemporalNode never touched the SEC-SLURP 1.1 persistence wiring or the context store. As a result, leader-elected agents could not rely on durable decision history and the write-buffer/replication mechanisms remained idle.
Options Considered
- Leave persistence detached until the full storage stack ships. Minimal work now, but temporal history would disappear on restart and the backlog of pending changes would grow untested.
- Wire the graph directly to the persistence manager and context store with sensible defaults. Enables durability immediately, exercises the batch/flush pipeline, but requires choosing fallback role metadata for contexts that do not specify encryption targets.
Decision
Adopt option 2. The temporal graph now forwards every node through the persistence manager (respecting the configured batch/flush behaviour) and synchronises the associated context via the ContextStore when role metadata is supplied. Default persistence settings guard against nil configuration, and the local storage layer now emits the shared storage.ErrNotFound sentinel for consistent error handling.
Impact
- SEC-SLURP 1.1 write buffers and synchronization hooks are active, so leader nodes maintain durable temporal history.
- Context updates opportunistically reach the storage layer without blocking when role metadata is absent.
- Local storage consumers can reliably detect "not found" conditions via the new sentinel, simplifying mock alignment and future retries.
Evidence
- Implemented in
pkg/slurp/temporal/graph_impl.go,pkg/slurp/temporal/persistence.go, andpkg/slurp/storage/local_storage.go. - Progress log:
docs/progress/report-SEC-SLURP-1.1.md.