mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-09-21 09:28:14 +00:00
两个修复之间产生了耦合:TestArchiveColdDocs_KeepsDocWhenGraphWriteEmpty 的前提是「三元组全被 validEntityName 拒绝」,而同批引入的 mediaTriplesFromText 会为正文里的 [image/png <digest>] 标记产出合规的 「图片 <digest>」三元组,于是 ec=4 rc=2、绑定成功、释放引用变成正确行为, 用例的前提消失。 (注意当时 GC 断言并未触发——内容没丢,只是"引用被释放"这条断言不再 适用于该构造。) 改法:正文不再含媒体标记,媒体引用直接 AddRef 挂上。这模拟的是更危险的 组合——文档持有媒体引用,但正文里的媒体标记已在清洗中丢失,于是有引用 要释放却没有句子能承载它。那正是这个守卫要防的情形。 反向验证重做后仍成立:回退守卫 → FAIL(引用被释放 + GC 删掉了本该保留的 内容);恢复修复 → ok。 教训:只跑针对性测试不足以发现修复之间的耦合。提交前我跑的是 internal/agent/core 与 internal/memory,当时通过是因为缺陷二尚未修完; 两个修复都落地后的第一次全仓回归才暴露它。