P10 审查核实的三处缺陷: - 块外比较原先逐行 trim_end 并丢弃全部空行,项目在块外删空行(Markdown 两段 并成一段)或加行尾空格(硬换行)时判为无改动,升级后不预警却产生混合文件。 改为 CRLF 统一为 LF、托管块原位换成占位符,只把文末占位符连同其前空白按 trim_end 归一(正好抵消炼境追加托管块时的 trim_end + 空行);文中托管块两侧 的空行与行尾空格照常比较——炼境只原位替换文中的块,不碰两侧。 - dispatch_templates_with_mixed_file_check 先 `then()?` 后标注:buff 先同步蓝图 规则改写了 AGENTS.md/CLAUDE.md、再写 DB 失败时,预警随 Err 一起丢失。改为 无论成败先标注,失败时把混合文件名并入错误信息;无混合文件则原样返回错误。 - 「块外有未提交改动但托管块已是最新、本次不改写」组合没有测试,删掉 annotate 的改写判断测试照样全绿。主场景测试补情形三。 测试:新增 outside_managed_whitespace_edits_count_as_changes、 mixed_file_warning_survives_failure_after_write,主场景补情形三;纯函数测试的 期望值随归一化收窄更新("# 标题\n项目内容" → "# 标题\n\n项目内容",保留「之前 追加的块尚未提交、只多出块前空行」不算改动的断言)。变异自检:三处修复逐一回退, 对应测试各自失败,已还原。cargo test --locked:lib 272 passed / 5 ignored,0 failed; pnpm typecheck 通过。契约文档 project-context.yaml 与蓝图 P10 卡同步。 Rules-Applied: R07,R12 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| modules | ||
| CONVENTIONS.md | ||
| manifest.yaml | ||
| notes-archive.jsonl | ||
| rules.md | ||
| usage.json | ||