feat(memory): 留痕表正式迁移 0025 + 保留期清扫(W5)
CI / Backend (build / vet / test / cross-compile) (push) Has been cancelled
CI / Frontend (tsc + vite build) (push) Has been cancelled

- 迁移 0025_memory_ingest_reviews(幂等,既有部署重跑不炸/不丢行)
- GC:保留期 720h + 条数上限 10 万行,挂进审查服务生命周期(Start 起 / Stop 停 / 启动先扫)
- 过期即硬删(RevertMerged 只读 memory_items,删留痕不损失回滚能力)
- 偏离一处并给理由:表只留 created_at(先例 0017;append-only;加 updated_at 需三份 DDL 真源)
- 3 个变异自检(边界 <=/元组比较方向/Retention=0)
This commit is contained in:
AskaEth committed 2026-10-06 15:59:16 +08:00
1 parent ddd3d00d09
commit ffe2518bf4
7 files changed
+861 -9

No files matched your search

+7 -5
View File
@@ -14,11 +14,13 @@ import (
// 语义不同、生命周期也不同 —— 审查是已经生效的事实留痕,不是待批准的提议。
// 两表共用同一套 id/时间戳口径(主键 id、created_at),词表口径见各列注释。
//
// 表结构的权威机制仍是 internal/db 的迁移(tidy 的 0019 是范例);本表**尚未
// 登记迁移**,改由 NewStore 幂等前滚,与 memory_items / tidy 两表同一手法
// (store_schema.go 的口径:记忆存储必须自包含、可在任意 *sql.DB 上使用)。
// 迁移登记留给主会话(见 MTB-report.md 的「未做」一节),以免与并行切片
// 抢迁移编号。
// 表结构的权威机制是 internal/db 的迁移(`0025_memory_ingest_reviews`,切片 W5 补登记);
// 本处仍保留幂等前滚,与 memory_items / tidy 两表同一手法(store_schema.go 的口径:
// 记忆存储必须自包含、可在任意 *sql.DB 上使用)。两份 DDL **必须逐字同形**:
// 少一列就是「新库有、老库无」的漂移(既有部署的表是这里建的,`CREATE TABLE
// IF NOT EXISTS` 不会给它们补列),由 preinsert_migration_test.go 逐列/逐索引比对钉住。
//
// 保留期清扫(按 created_at 删过期行 + 条数上限)见 preinsert_gc.go。
// createMemoryIngestReviewsTable 是入库前审查的结构化留痕(design/23 §15 D3-8)。
// 刻意**不存记忆正文**:命中的既有 id 足以让 owner-only 的读侧回表取正文,