- formatTime 改用固定 30 字节布局(9 位小数秒),让 TEXT 列的字典序与时间序一致(RFC3339Nano 会去掉尾随零产生变宽字符串,秒内会反序) - memory_items / project / project_chapter 的 ORDER BY 全部补 rowid 兜底,消除同 tick 打平时的顺序不确定 - 开库时幂等归一化变宽的历史值;无法解析的行原样保留,不阻塞开库 - 回归测试:变宽排序反例、同一时间戳插入序、归一化幂等与跳过
根因:gateway.Server 定义 SessionStore/PersonaStore/MemoryStore 接口但生产从未满足: - 底层 manager 无 List() 方法; - wireFrontend 的 gateway.Deps{} 未传 Session/Personas/Memories。 → /api/v1/sessions|personas 与 /api/v1/admin/{sessions,personas,memories} 恒返回 []。 改动: - persona/registry:Registry.List() []Character(并发安全、值拷贝)。 - channel/session:SessionManager.List(ctx)(查 channel_sessions 表+按 actor_role 重建)。 - runtime/memory:Store.List(ctx)(全表,复用 scanItems)。 - gateway 三 Store 接口改为返回域类型(Character/MemoryItem),映射统一放 collect* 侧。 - cmd/cyrene/wire.go:Deps 补传 Session/Personas/Memories。 - .gitignore:cyrene→/cyrene(锚定根,不再误伤 cmd/cyrene 目录)。 实机验证:/api/v1/admin/personas 返回 {id:cyrene,name:昔涟,isDefault:true}。