dsh-mneme v0.3.6 — 镜像债务建模
🩹 v0.3.6 — 镜像债务建模(audit peer 4 类阻断修复)
安全审计 peer 在 v0.3.2 复验中发现 4 类运行时阻断,已全部修复:
1. COMMIT→dirty 崩溃窗口
- SQLite 提交后、markMirrorDirty 前进程退出 → DB=New/mirror=Old/dirty=false
- 修复:recoverMirror 触发条件扩为
dirty || generation > applied_generation,desired/applied 不一致也能恢复
2. markMirrorDirty 自身失败
- 镜像失败 + 状态写失败同时发生 → false-clean 终态
- 修复:generation 债务模型——即使状态写失败,desired 与 applied 的差距仍可被下次 recover 捕获
3. 全局状态丢失
- mirror_state 只有 id=main,无 generation/fence/CAS;双 worker 交织时一个成功清掉另一个未恢复故障
- 修复:
markMirrorCleanForGenerationCAS/fence 语义(旧 gen 清新故障被拦截);type_status逐 type 表达部分成功
4. health fail-open
- /health 未鉴权 + 泄漏 last_error + 读失败返回 dirty=false
- 修复:requireAuth 鉴权 + 脱敏错误码(no-space/permission/sync-failed)+ 读失败 fail-closed(status: unknown)
测试
- 新增 14 个回归测试(
test/mirror-generation.test.js):崩溃窗口 / 双 worker fence / 逐 type / health 脱敏 / 迁移幂等 - 修复随包 mirror-dirty 测试旧断言(5 列→8 列)
- 443 / 443 全绿