# 调查实验规划(PR08) `ig5_workspace` 的 `workspace={action:"plan",id:"任务 UUID",max_bytes:12288}` 从当前调查状态生成最多三项建议。必须指定已打开的静态 target;max_bytes 为 4096..32768 个 UTF-8 字节。规划只读已有状态,不启动引擎、不保存研究修订、不执行草稿。Core8/Full43(P2 拆分后)和审批入口不变。 brief 使用同一规划器,短预览可能省略建议;按 `planning.fullRef` 读取完整计划。plan 返回当前身份和任务/研究修订、理由、证据引用、预期区分结果、前置条件、成本及原工具请求。两次有界读取仍不一致时返回 SNAPSHOT_INCONSISTENT。 ## 选择顺序和执行边界 先处理原执行资源清理与过期研究上下文,再考虑有确切历史函数地址的 dossier 补查、完整失败回执、竞争假设、限定验证及已有证据复用。验证顺序参考直接阻塞的下游义务数,不把它称为概率收益估计。 静态建议要求真实 catalog 就绪、同身份及原会话可用;数据验证要求原 AnalysisJobs 可用且清理已确认。资源车道独立,繁忙车道不阻止另一兼容车道的只读准备。没有完整前提的比较输入、检查反例、定位首次分歧模板只给 research-get 准备草稿;调用者文字不会生成代码、地址或执行动作。 公共调用最多三次、验证输入合计最多 8 MiB,并只读查询现有共享剩余额度。这里只是规划提示;计划本身及后续原工具调用仍由原 dispatcher 计费和检查,读取计划不预留额度、不重置计数。所有建议 executionAuthorized=false;清理建议只指向原 owner,不提供新执行通道。 ## 失败和重复识别 固定 dossier 补查请求的 planningKey 绑定目标、数据库修订、attachment、provider、函数地址、归一化默认预算及宿主收集规则摘要,忽略 task_id 关联字段。它是宿主规则身份,不是原生实现认证。持久索引最多扫描 4096 条元数据、查询 64 个请求键、读取匹配的完整失败回执及最近三条诊断;每份回执重验 SHA 且最多 64 KiB。旧记录缺少键时只能使用近期诊断,completeHistory 始终 false,不能称全历史去重。 相同请求和相同或未知运行身份失败后不机械重试。证据、作用域或明确规则/运行身份发生变化时才重新判断。历史验证只读取既有有界窗口,遗漏或损坏保留未知;规则/运行身份变更单独报告 VERIFIER_IDENTITY_CHANGED,不能把旧 pass 继续当有效。 VM 候选等价摘要去除新报告 UUID 包装,绑定候选内容和已验证的直接类型父报告内容;保留真实 recording 身份、观察、投影及 sourceFlow。它用于识别相同输入的别名,不证明跨运行独立性或任意传递父链等价。重复别名不会获得新覆盖,也不会替另一义务完成验收。 ## 狭义验证与验收 只生成已有 `research-verify` 入口支持的 vm-context-audit-v1 草稿,属性限定为候选派生与来源,scope 必须是 evidence:UUID;要求当前合同、未决义务、已关闭依赖、完整有效输入及原资源预算。已经完成的同输入审计不重复推荐;fail/unknown/unsupported/error 先阅读完整反馈。候选验证通过不等于 VM 角色、完整函数或业务恢复。 验收覆盖确定性、无状态写入、过期身份、竞争假设、预算、能力与资源阻断、依赖、重复 UUID、失败持久恢复及快照漂移。真实旧录制验收由测试程序显式读取草稿,再经原 workspace 入口执行,之后确认不重复提出相同审计;这不是规划器自动执行或真实模型同预算对照。PR09 的 LCM 消融仍待实施。 ## 元数据故障回执 并发回归观察过一次 Windows EPERM。ProjectStore 错误现在保留 metadataPublished、metadataStage 和清理状态:发布前失败检查发布原因,发布后失败先读取当前元数据,禁止假设未提交而盲目重试。发布及锁清理故障注入验证原数据和原错误保留;没有增加自动重试,也不声称已经消除操作系统瞬态故障。 回滚时移除 workspace plan 与 brief 规划桥接,保留旧任务和独立 sidecar 数据;planningKey 为可选索引字段,旧失败记录仍可读取。安装发布及桌面冷重载需分别验收。