db37f404e2
agent.db 是纯 append、全仓没有 rotation,而有界尾窗的记录数上限(16384)比写侧 的扫描上限(100 万)低两个数量级。截断掐掉的永远是更旧的记录,所以「命中」与截 断无关;只有「没命中」时才真的分不清「没写过」和「没看见」。 - plan_gdd_decision_audit_state_locked:截断判断从遍历前的无条件 Err 挪到遍历后、 且只在没命中时报。原先任何写够记录的项目都会永久停在 needs-reconciliation—— audit 明明就在窗口里,函数照样报错,文案还指向「identity 不一致」。 - approval_terminal_observation_exists_locked:不再把截断位丢给 `_`。没命中且截 断时返回 Err 而不是 Ok(false),交给调用方既有的具名 projection gap 分支,不再 让一次视野缺失冒充恢复缺口被反复重放。 - 收束闸 Err 分支标题改为「Fast GDD decision audit 无法确认」。Err 现在有 identity 冲突和尾窗截断两种来源,具体原因由 detail 里的 error 原文给出。 - AGENT_DB_MAX_BOUNDED_RECORDS 改 pub(crate),让回归测试能精确把 fixture 撑过截 断线,不必在测试里埋魔数。 新增 truncated_tail_scan_still_confirms_records_inside_the_window 钉住这两处:把 任一处改回旧行为都会让它失败。 recovery_scan.rs 的七槽审计是同样的形状,但它断言的是精确基数而非存在性,截断确 实证不了基数,另行处理。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>