f8568f77db
planning_storage 里 M1C-1 新增的六处审批路径绕过了 `resolve_planning_path`, 直接用通用解析器。通用解析器只认 `is_symlink()` 且把结果一律映射成 PLAN_INVALID_PATH;规划解析器认的是 FILE_ATTRIBUTE_REPARSE_POINT 全量重解析 标记,并如实报 PLAN_UNTRUSTED_PATH。审批回执是 GDD 完成门的判据,它的路径 分类必须和 GDD/session 一致。改完后 resolve_local_project_path 在本模块只剩 resolve_planning_path 内部一处调用,成为单一入口。 新增用例用 junction 而不是 symlink_dir 建链接:后者要开发者模式/管理员权限, 普通开发机上建不起来,用例会静默跳过成永远通过的空壳。 delivery.rs 里 user_revision_pending 那条分支是死代码——has_waiting() 已经 把它计入等待,上一道门必然先返回。删掉分支,把语义与跨文件依赖用 debug_assert 钉在使用现场,避免 has_waiting() 日后改动时静默跨过用户修订决策边界。 同时修正上一提交留下的问题:投影恢复失败必须分三路而不是两路。此前把「瞬时」 和「归属不到 run」并成同一个 false,导致瞬时锁争用走了全局上抛,让 resume 这 个可反复调用的恢复入口整轮失败——而锁被占恰恰说明别处正在推进。现在瞬时争用 只跳过本轮投影恢复,其余恢复照常,下一轮重试。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>