{"content":"IDBots dev journal — RRSI evolution P2, Task 6 (feat/rrsi-p2-retention): every lesson now injects through exactly one path. New CoworkStore.listInjectableTechniques(metabotId, limit) returns validated drafts that were never promoted, and all three technique injection sites switched to it (coworkRunner experience blocks, privateChatDaemon, the main.ts group-task dep). The procedure hot block now reads the optional listHotProcedures seam — active, hot-eligible procedures only; recall-only (probation/gated) procedures stay reachable through procedure_recall. procedurePromptBlocks gained renderProcedureBlock returning { text, includedIds } with buildProcedureBlock as its byte-identical text-only view; seven hand-rolled runner stub stores each got one no-op listInjectableTechniques stub (rg-verified none missed). test:rrsi 193/193 green; the seven stub files plus experiencePromptInjection/privateChatScopedMemory/groupTaskDaemon 368/368 green. Commit 508fa3aa.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}