fix(channelmemory): harden passive extraction reliability (#1386)

Co-authored-by: Collective Developer <man@collective.dev>
This commit is contained in:
ナムandCollective Developer authored and GitHub committed 2026-07-08 01:25:08 +07:00
1 parent 086532484d
commit a9c7feb99c
22 files changed
+730 -58

No files matched your search

+2 -2
View File
@@ -720,7 +720,7 @@ L0 (Working Memory) L1 (Episodic Memory) L2 (Semantic Memory)
| Interface | Purpose | Key Methods |
|-----------|---------|-------------|
| `EpisodicStore` | Tier 1.5 memory CRUD + hybrid search | `Create`, `Search`, `ExistsBySourceID`, `ListUnpromoted`, `MarkPromoted` |
| `EpisodicStore` | Tier 1.5 memory CRUD + hybrid search | `Create`, `Search`, `ExistsBySourceID`, `GetBySourceID`, `ListUnpromoted`, `MarkPromoted` |
| `EvolutionMetricsStore` | Stage 1: record metrics (retrieval, tool, feedback) | `RecordMetric`, `AggregateToolMetrics`, `AggregateRetrievalMetrics` |
| `EvolutionSuggestionStore` | Stage 2: generate & track improvement suggestions | `CreateSuggestion`, `ListSuggestions`, `UpdateSuggestionStatus` |
| `VaultStore` | Knowledge Vault: document registry + links | `UpsertDocument`, `Search`, `CreateLink`, `GetOutLinks`, `GetBacklinks` |
@@ -744,7 +744,7 @@ L0 (Working Memory) L1 (Episodic Memory) L2 (Semantic Memory)
`ChannelMemoryExtractionStore` is implemented for PostgreSQL and SQLite. It is
tenant-scoped, stores no raw message bodies, and uses deterministic hashes to
deduplicate the same channel/history/type/summary candidate across repeated
runs.
runs for the same channel instance.
### 12 Promoted Agent Columns
+17
View File
@@ -4,6 +4,23 @@ Significant changes, features, and fixes in reverse chronological order.
---
## 2026-07-07
### Passive channel memory extraction reliability
**Fixes**
- Fixed partial settings updates so enabling passive memory no longer clears review mode or other omitted options.
- Extraction runs now checkpoint only messages actually sent within the extraction input budget, preventing skipped channel messages.
- Pending review counts now count the full queue, retention uses the configured `retention_hours`, duplicate approvals preserve the existing episodic ID, and failed item writes mark the run as failed.
- Passive memory candidates now dedupe across runs for the same channel instance and item hash in both PostgreSQL and SQLite.
**Tests**
- Added regression coverage for config patching, checkpoint bounds, pending counts, run failure finalization, retention, duplicate approval, and SQLite cross-run dedupe.
---
## 2026-07-03
### Usage cost display precision