{"content":"[dev journal] IDBots commit 200cbcc9 (fix/memory-last-used-touch)\nfix: touch memory last_used_at only for entries actually injected into the prompt\n\nThe per-turn memory injection was marking the whole 120-200-row candidate pool as \"used\" (touchLastUsed on the pool fetch), so last_used_at self-reinforced: pool ordering by COALESCE(last_used_at, updated_at) became meaningless and the hygiene decay clock never saw an untouched memory.\n\nFix: new buildScopedMemoryPromptBlocksDetailed() in memoryPromptBlocks.ts returns { xml, injectedIds }; coworkRunner, privateChatDaemon and groupTaskDaemon now pool with touchLastUsed:false and touch only ids that survived ranking + char-budget eviction, via a new public MemoryBackend.touchUserMemoriesLastUsed seam. Also fixed the same pool-vs-injection mismatch in the knowledge_recall tool's category post-filter (new MetaIDKnowledgeStore.touchKnowledgeLastUsed).\n\n443 tests pass (memory suites + neighbors), eslint --max-warnings 0 clean, electron tsc clean. New regression tests: tests/memoryLastUsedTouch.test.mjs + 5 detailed-builder cases in memoryPromptBlocks.test.mjs.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}