# Plan 完成度与验收矩阵 > 基线日期:2026-08-04(round-69) > 范围:根目录 `plan.md` 的 M-POC、M0-M6 与跨阶段治理要求。 > 判定顺序:当前可运行代码与黄金测试 > `docs/` 落地文档 > `plan.md` 目标态描述。 > 状态只使用 `Done`、`Partial`、`Missing`;Mock、代理实现和“首切片”不得标为 `Done`。 ## 1. 当前验证基线 - GitNexus 当前索引:12,035 个符号、55,247 条关系、510 个 clusters、300 条执行流(2026-08-04 Round 69 最终索引)。 - 黄金测试命令:`.\.venv\Scripts\python.exe -X utf8 -m pytest tests/golden -q`。 - Round 69 最终全量黄金为 **1120 passed / 2 warnings**(550.87 秒);Round 69 focused **49 passed**(含 26 个硬约束非法变异)。Round 67 approval migration 与 Round 66 求解器隔离证据继续保留。 - Node **60 passed**;Web build、Round 69 Ruff/compile 均通过;最终只读审计 `AUDIT PASS`;`git diff --check` 无 whitespace error;GitNexus compare main 为共享工作区累计 CRITICAL(99 files / 1,097 symbols / 212 affected)。 - 实时服务:8003 PID `77380`、5173 PID `9808` healthy;浏览器 title=`APS 智能排产工作台`、主 UI 可见、console warning/error 为 0。 - 求解器隔离真实运行:复制 `world.json` 的 CP/HYBRID 均 `OPTIMAL`、1 PO / 10 WO / 10 operationSlots、协议 `aps.solver-process.v1`、`runtimeSafe=true`;fatal/timeout 均失败关闭且父进程存活。 - 源码 Sidecar `--solver-child -I` 首次冒烟发现源码 import root 被隔离;GitNexus LOW impact 修复为仅 bootstrap trusted source root,新测试覆盖,实际 CP `OPTIMAL`、1/10/10。现有冻结 EXE 未重建,不能把源码通过冒充打包通过。 - MOM 复制数据 CP/HYBRID 求解为 `OPTIMAL`,但现有主数据阻断导致 0 PO/WO、1 slot/1 conflict;这不是现场工厂主数据完成证明。 - 审批迁移真实运行:文件后端 P3 grant -> 单事务 DB 迁移 -> request=APPROVED、token 仅存 digest、consume=true/false;损坏 JSON 明确失败且 DB 不变。 - 数据保护:`world.json` hash `C6E7FF...52FA`、MOM hash `6B64AD...3F7D` 前后不变,`server/data/**` 与 `.env` 无 Git 状态。`master.db` 可因 license `last_seen` 等运行元数据变化,不以文件 hash 声称数据库完全不变。 - 矩阵保持 **50 Done / 10 Partial / 0 Missing**。10 个 Partial 的最终验收仍依赖真实外部系统、设备、凭据或构建环境;最终外部步骤见 [external-acceptance.md](./external-acceptance.md),不得因本地首切片、源码冒烟或 Mock 证据虚假标记 `Done`。 ## 1.1 Round 69 新增验收资产(不改变外部系统 Partial 判定) - `server/shipyard_synthetic/` 和 `beihai-shipyard-aps-data/` 提供确定性船厂 APS 全链路模拟数据:合同/WBS/BOM/MRP/MAKE-BUY-OUTSOURCE/有限资源/质量返工/场景/Skill/RAG。 - Full 精确规模、51 CSV、world 投影、manifest/哈希和独立校验均通过;`validation-report` 为 PASS/FEASIBLE/0 hard violations。 - 26 类硬约束具有非零样本和 26 个非法变异测试;140 条委外和 50 条返工均完成跨表时间/产能闭环;7 方案和 15 场景为真实 schedule delta。 - WorldStore 隔离加载后 `flex_overview`、`flex_gantt_view`、`list_mrp`、`infer_material_sourcing` 可消费,且 `server/data` 未污染。 - 该资产增强本地开发/回归能力,但不替代真实 MES/WMS/ERP/PLM/QMS、信创打包、生产数据库和现场验收,因此矩阵原有外部依赖 Partial 不翻转为 Done。 ## 2. M-POC:左说右动验证 | 需求 | 状态 | 当前证据路径 / 测试 | 剩余验收标准 | 建议责任边界 | | --- | --- | --- | --- | --- | | 中文指令经确定性解析器转为结构化视口命令,不依赖 LLM | Done | `poc/workbench.html`:`parseNL`、`applyCommand` | 固定验收口令集回放结果稳定;离线打开可用 | 产品定义验收口令;开发维护解析与命令协议 | | 甘特、负荷热力、交期承诺三视图可由同一命令通道切换 | Done | `poc/workbench.html`:`viewport.mode`、`renderGantt`、`renderLoad`、`renderDue` | 每种口令和手动页签产生同构命令与一致视图 | 产品验收交互一致性;前端负责渲染 | | 过滤、聚焦、高亮、时间粒度和重置命令可联动右侧视口 | Done | `poc/workbench.html`:`viewport.filter/focus/highlight/timescale/reset` | 命令顺序组合可回放,重置后无残留视口状态 | 前端负责状态机;测试负责组合回放 | | 甘特拖拽与自然语言口令使用同构命令 | Done | `poc/workbench.html` 拖拽处理与结构化 command | 拖拽吸附、冲突提示和命令载荷形成固定验收样例 | 产品定义调程语义;前端实现;算法校验可行性 | ## 3. M0:工程地基 | 需求 | 状态 | 当前证据路径 / 测试 | 剩余验收标准 | 建议责任边界 | | --- | --- | --- | --- | --- | | Monorepo 骨架覆盖 Web、桌面、Python Gateway、Agent Core、领域、状态、共享契约和黄金测试 | Done | `apps/web/`、`apps/desktop/`、`server/`、`shared/`、`tests/golden/`、根 `package.json` | 新模块继续遵守分层边界,不从 UI 直接写世界状态 | 架构/开发负责 | | UIBlock、ViewportCommand、Intent、排产问题/结果具备跨层类型契约 | Done | `shared/schemas/*.schema.json`、`server/contracts.py`、`apps/web/src/api/types.ts`、`server/aps_domain/scheduling_dto.py`、`server/agent_core/plan_runtime.py`;`test_contract_sync.py` 校验全部 7 个 schema 的字段/必填/枚举三方一致(含 scheduling_problem/scheduling_solution/plan_node),并有 schema 清单门禁与不兼容消费者漂移测试 | 无(本轮验收完成) | 开发负责契约生成与校验;测试负责漂移门禁 | | 契约版本握手与不兼容显式失败 | Done | 公共 `/api/health` 返回 `interfaceVersion`;`InterfaceGate.tsx` 在认证和业务界面前严格比对本地版本,不兼容/不可用时阻断并显示可重试错误;契约与认证定向 `11 passed` | 保持不兼容版本回归测试;未来多版本窗口必须显式定义兼容策略 | 开发负责 | | KIMI/DeepSeek/OpenAI 兼容模型可配置切换,失败可降级 | Done | `server/agent_core/providers.py`、`.env.example`、`tests/golden/test_gov_api.py` | 用受控端点做一次 KIMI、DeepSeek 契约测试;密钥不得出现在设置响应和日志 | 开发负责 Provider;测试负责契约与安全 | | Gateway SSE 会话流打通 | Done | `server/gateway/app.py` 的 `/api/chat`、`StreamingResponse`;`apps/web/src/chat/ChatPanel.tsx` | 断线重连、取消、超时、事件顺序和大响应背压有集成测试 | 开发负责;测试负责网络故障注入 | ## 4. M1:核心排产闭环 | 需求 | 状态 | 当前证据路径 / 测试 | 剩余验收标准 | 建议责任边界 | | --- | --- | --- | --- | --- | | 规则快路 + LLM JSON 两级意图识别,低置信进入澄清/降级 | Done | `server/agent_core/intent.py`、`dialog.py`;`test_dialog_clarify.py`、`test_schedule_wizard.py` | 核心生产口令离线可用;LLM 非法 JSON 不产生写动作 | 开发负责意图与对话;产品维护口令/澄清验收集 | | Rule 引擎生成 DRAFT 版本、PO/WO、冲突与 KPI | Done | `server/engines/rule_engine.py`、`server/aps_domain/workflow.py`;`test_rule_engine.py` | 黄金算例固定工序顺序、资源独占、日历和交期结果 | 算法负责求解;开发负责装配与持久化 | | 左说右动正式 UI:聊天驱动甘特/负荷/交期视图 | Done | `apps/web/src/chat/ChatPanel.tsx`、`viewport/ViewportPanel.tsx`、`server/contracts.py` | 浏览器端主旅程通过,命令和按钮行为一致 | 产品定义旅程;前端实现;测试做 E2E | | P2 发布必须先出确认卡,批准后写入并刷新世界 | Done | `server/agent_core/harness.py`、`server/gateway/app.py`、`workflow.py`;`test_gov_api.py`、`test_constraints.py` | P2 无法绕过唯一确认入口;确认令牌一次性且绑定租户/项目/用户 | 开发负责门禁;审计/测试负责绕过测试 | | 证据链 v1:排产结果包含 run-id,RAG/报告可携带来源 | Done | `server/contracts.py` 的 `evidenceRefs`;`harness.stage_confirmation` 冻结 `evidenceRefs`/`beforeSnapshot`/`beforeFingerprint`;`execute_confirmed` 统一证据强校验(版本证据绑定、前置快照存在、版本可解析,fail closed);全部 P2/P3 写审计携带 `beforeSnapshot`+`evidenceRefs`;`mes.dispatch` 强绑定保持不变;`tests/golden/test_evidence_contract.py` 9 项覆盖漂移/缺证据/版本替换/审计字段 | 无(本轮验收完成) | 开发负责证据基础设施;算法负责 run 元数据;产品定义可解释口径 | | 设计系统 v1 与紧凑工作台交互 | Done | `apps/web/src/styles.css`、Ant Design 组件、`docs/product/features.md` | 桌面/常用浏览器关键视口无重叠;主要流程键盘和错误态可用 | 产品/设计验收;前端负责 | ## 5. M2:探索与治理 | 需求 | 状态 | 当前证据路径 / 测试 | 剩余验收标准 | 建议责任边界 | | --- | --- | --- | --- | --- | | 项目和会话服务端持久化、成员权限与租户隔离 | Done | `server/state/projects.py`、`server/db/models.py`、`apps/web/src/projects/`;`test_workspace.py`、`test_auth_tenant_isolation.py`、`test_chat_ensure_session.py` | 并发成员操作、角色变更和跨设备恢复通过 E2E;数据库迁移可回滚 | 开发负责状态/auth;测试负责隔离与并发 | | 项目 -> 会话 -> 分支三级树及分支生命周期 | Done | `server/state/branches.py` BranchStore + `/api/sessions/{id}/branches` 端点 + 前端 `BranchPanel.tsx` 分支树 UI(fork/rename/switch/discard/merge 操作、活动分支高亮、禁用规则与后端一致)+ `client.ts` 分支 API client;`test_branch_tree.py` 3 项;**分支合并世界差异 diff**:`compute_world_diff` 基于两分支锚定 checkpoint 世界侧计算稳定 JSON 差异(版本/KPI/工序时间/柔性版本/产能池+changed,深拷贝不改世界),merge 响应附 `diff` 并随 `branch.merge` 审计落库,前端合并前预览(接口不可用降级原确认);`test_branch_merge_diff.py` 4 项 | 无(本轮验收完成) | 开发负责状态模型/API/UI;产品定义生命周期 | | 对话状态与世界状态真正成对快照、成对切换和成对回滚 | Done | `server/state/checkpoints.py` 成对快照(conversationSide)+ 分支切换成对恢复 + 回滚;**PlanStore 可恢复接口**:`plans_snapshot(branch_id, checkpoint_id)` / `restore_for_branch`(plan 视图随 checkpoint 归档物化,切换自动回退/恢复,latest/node_at/versions/create/regenerate/transition_status 视图感知,无锚定完全兼容);gateway switch 响应附 planView + 审计;`test_plan_branch_restore.py` 5 项 + `test_branch_checkpoint_link.py` 3 项 + `test_m2_state.py` 6 项 | 无(本轮验收完成;plan 视图为 store 级单例,多会话并行切换以最后一次为准——文档化简化) | 开发负责原子状态与事务;测试负责破坏/恢复验证 | | P2/P3 前自动 Checkpoint,手动建档和回滚 | Done | `server/state/checkpoints.py`、`server/agent_core/harness.py`、`TimelineRail.tsx`;`test_checkpoint_roundtrip`、`test_checkpoint_capacity_eviction` | 外部事件重排前和所有写动作前均强制建档;回滚本身可撤销 | 开发负责;审计/测试核对覆盖面 | | 时间线宏观/中观/微观导航、分支 diff 与回放 | Done | `TimelineRail.tsx` 版本/Checkpoint + 分支树(BranchPanel)+ 微观层分组;`AlgoReplayPanel.tsx` ALGO_RUN 动作链逐步回放(复位/上一步/播放/下一步/末步);`WorldDiffView.tsx` 两个世界并排对比(基准 A × 对比 B:当前世界/版本快照/检查点/回放定位)逐字段 diff 高亮;**检查点世界侧投影接口**:`checkpoints.world_projection(pair_id)` + `GET /api/checkpoints/{pairId}`(单查 200/404 中文)与 `GET /api/checkpoints?pairIds=&branchIds=&sessionId=`(分支锚定批量,缺失上报),固定轨工单/柔性工单/产能池投影;前端 `fetchCheckpointWorld` 优先投影做逐字段全量 diff,失败自动回退元数据+近似快照降级并保留提示(缓存+不重试);`test_checkpoint_projection.py` 5 项 + 回放面板/世界徽标;`npm run build` 无类型错误 | 无(本轮验收完成) | 产品定义信息层级;前端负责;开发提供审计投影 | | Explore 与 Runtime 数据边界 | Done | `explore_boundary.py` 统一通道(`readonly_view` fail closed + `run_explore` 深拷贝沙盒,5+3 项测试);前端 `WorldModeBadge.tsx` 世界种类徽标(Runtime 主世界/沙盒试排/只读分析 + 只读角标)、ViewportPanel 工具栏徽标 + 画布按世界种类着色(world-explore/runtime/analysis)、时间线根节点徽标、FlexPanel「沙盒试排」徽标;Explore(flex/pool/compare/diff/plan)与 Runtime(gantt/load/util/due)一眼可辨 | 无(本轮验收完成;真实影子价需 LP 对偶重解) | 开发负责通道/权限;测试负责越权与污染测试 | | 多策略方案卡组、采用后进入受控流程 | Done | `scenario.py` 输出唯一 `recommendationId`;`ChatPanel.tsx` 不再自行重排并禁用 `HARD_REJECTED`;`test_scenario_selection.py` 覆盖无推荐与前端门禁 | 方案输入、引擎版本、KPI 和证据持续可复现;采用动作有审计 | 算法负责方案生成;开发负责卡片与采用流程 | ## 6. M3:知识、上下文与偏好 | 需求 | 状态 | 当前证据路径 / 测试 | 剩余验收标准 | 建议责任边界 | | --- | --- | --- | --- | --- | | RAG 资产、导入、混合检索和来源/版本返回 | Done | `server/knowledge/assets.py`、`ingest.py`、`retrieval.py`、`embedding.py`;`test_knowledge_ingest.py`、`test_embedding_fallback.py`、`test_m3_knowledge.py` | 审批状态、版本替换、租户隔离和未命中不编造持续通过 | 开发负责知识平台;产品维护回答验收集 | | `@会话`、`@方案`、`@版本`、`@报告` 结构化引用并按时点取值 | Done | `server/agent_core/session_ref.py`:parse_refs 解析 4 类引用 + 第 5 类 `@知识`(强制命中:命中→资产正文+出处 assetId/title/kind/version+证据 ref,未命中→显式 RefResolutionError 中文「知识库未命中…(未编造)」,未接线→显式 not-wired 报错);`resolve_ref`/`resolve_all` 新增 keyword-only `knowledge_lookup`(既有 4 类调用零破坏);workflow `handle_intent` 入口自动解析注入本轮上下文(`_refs`)+ SESSION 审计 evidenceRefs,失败 fail-closed 中文明文回复;`test_ref_knowledge.py` 9 项 + `test_session_ref.py` 6 项 | 无(本轮验收完成) | 开发负责模型/解析;产品定义引用 UX | | 固定/项目/会话/检索四层上下文、滚动摘要、钉住与预算 | Done | `server/agent_core/context_policy.py`:ContextBudget 四层限额 + 确定性 token 估算(超限 fail closed 可预测拒绝)、assemble_context 四层组装、pin_message 钉住、scroll_summary 带 sourceMessageIds/supersedes 链可溯源 + 可选 `summarizer`(落 compressedBy 溯源);**`summarizer.py` LLM 压缩生成方**(`compress_scroll_summary` 固定中文提示词 + ModelProvider.chat_text,provider 不可用/异常/超预算 → 确定性回退,绝不编造)+ gateway chat 每轮预算门控钩子(autoSummarize 配置开关,长会话开启,try/except 兜底不阻断对话);越权上下文 fail closed 测试补齐;`test_scroll_summary_llm.py` 14 项 + `test_context_policy.py` 9 项 | 无(本轮验收完成;summaries 历史上限裁剪留待后续) | 开发负责;测试做长会话与越权上下文测试 | | 交期承诺看板与乐观/预计/悲观模拟 | Done | `apps/web/src/viewport/DueView.tsx`、`server/aps_domain/flex.py`;`test_kangni_flex.py` | 区间口径与产能/物料输入一致,关键缺口可追溯 | 算法负责区间计算;产品验收业务口径 | | 偏好学习影响默认策略 | Done | `server/knowledge/preferences.py`:按用户/项目隔离、explain(cold/medium/high 置信)、reset、冷启动回退、**时间衰减加权评分**(采用2/试排1 × 2^(-age/半衰期14天));**多特征规则归纳**:`extract_features(world)`(订单数/VIP占比/急单占比/品种数/硬冲突数)、分箱条件规则 `induced_rules`(采用2/试排1 条件得分+支持度)、`preferred_strategy_with_features`(规则投票命中→回退全局)、`explain_features` 中文规则依据;workflow/gateway 调用点已传 world_key + features;`test_preference_features.py` 6 项 + 既有偏好测试 | 无(本轮验收完成) | 算法负责偏好模型;开发负责隔离/存储/UI | | 日报、版本对比和方案报告基于冻结快照并可导出 | Done | `server/aps_domain/reports.py`、报告 API/UI;`test_m3_knowledge.py`、`test_master_query_kb.py` | 增加模板管理、交期承诺函 P2、Word/PDF 输出和审阅状态 | 产品定义模板;开发负责导出;审计校验快照口径 | ## 7. M4:外部集成与自动化 | 需求 | 状态 | 当前证据路径 / 测试 | 剩余验收标准 | 建议责任边界 | | --- | --- | --- | --- | --- | | 真实 MES MCP 下发、状态和报工回流 | Partial | `mes_stub`/`mes.py`(P3 门禁+幂等+回执+补偿)+ **HTTP MES 适配器**(round-45:config-driven HttpMesClient,鉴权/幂等/超时/重试/回流/撤单/fail-closed,stub 测试)+ **对接就绪检查(round-46)**:`readiness(probe)`(configured/baseUrl/tokenPresent/connectivity/lastError/message 稳定字段,未配置 fail-closed 提示不 500,可选轻量连通探测短超时绝不抛错)+ `GET/POST /api/integrations/mes/readiness[/probe]`;`test_mes_readiness.py` 8 项 + `test_mes_http.py` 9 项 | 真实 MES 工厂对接(填 base_url+token,现场联调端点路径/报文;健康端点路径不同需调 _probe_health) | 开发/集成负责适配器;测试负责故障注入;产品验收闭环 | | 真实 WMS 缺料/库存事件接入 | Done | `server/integrations/wms_stub.py` MockWmsClient(库存台账+缺料事件流+幂等 idem_key+单调 inventoryVersion)+ `server/aps_domain/wms_events.py` 事件消费管线(eventId 全局一次消费、乱序 seq 缓冲排空、重复写 `wms.event.duplicate` 证据、库存版本随事件更新并入证据链 `inventory-version:N`、flexMaterials 库存同步 + WMS-EVENT 冲突);`POST /api/wms/events`(幂等上报)/ `GET /api/wms/replay`(可重放)/ `GET /api/wms/inventory`(P0 只读);`test_wms_events.py` 3 项 + `test_wms_replay.py` 3 项 | 无(本轮验收完成,Mock 形态;真实 WMS 适配器接入留待集成环境) | 开发/集成负责;算法消费标准事件,不直接连 WMS | | MCP 插件管理与权限面板 | Partial | `mcp_bus.py` 总线(manifest/工具契约/power 门禁/健康/启停/版本兼容)+ 前端 SkillConsole「MCP 插件」页签 + **mes.http 真实适配器注册(round-45)**:mes.http_dispatch(P3)/status(P0)/report(P2)/cancel(P2),默认 deny 需显式放行;`test_mcp_bus.py` 9 项 | 真实 MES/WMS 现场对接(配置+权限放行即可;端点路径/报文现场对齐) | 开发负责插件总线/UI;安全测试负责越权 | | 房间内事件/定时/阈值自动化与 G0-G4 档位 | Done | `server/agent_core/automation.py`:Gear 状态机 + AutomationGate 升权门禁 + RuleExecutor(事件/定时 cron/阈值)+ **业务动作注册表**(BusinessActionBinding:commit→schedule.publish 发布、reschedule→flex.reschedule 重排,含意图槽位与门禁路径)+ **调度器持久化**(snapshot/restore/save/load,宽容加载,重启恢复)+ **网关定时驱动**(`POST /api/automation/tick` 手动 + lifespan 后台自动 tick,APS_AUTOMATION_DRIVER/TICK_SECONDS 可配)+ G4 受控自动经业务桥走真实动作(未登记 P2/P3 动作即使 G4 也按 P3 fail-closed 拦截,G2/G3 出确认卡);`run_automation_intent`(workflow,auto=True 出卡后经 execute_confirmed 执行,真实写入始终过 harness);`test_automation_gateway.py` 6 项 + `test_automation_gears.py` 8 项 | 无(本轮验收完成;规则 CRUD UI 与规则管理端点留待后续) | 产品定义档位语义;开发实现调度与治理 | | 缺料触发重排端到端闭环 | Done | `wms_events.py` 全链:WMS 缺料(event.consume)→ 影响半径(深拷贝沙盒+PoolEngine 差分只读)→ Explore 方案卡(复用 `flex.reschedule` P2 动作,wmsTriggered 护栏防重复触发)→ 人工确认(execute_confirmed L4 重排 DRAFT)→ MES 下发(P3 双人 SOD 门禁 mes.dispatch)→ 回执(wmsReceipts 镜像 + 审计 `wms.mes.receipt` 带全链证据引用);`test_wms_events.py` 闭环用例(含驳回不重排) | 无(本轮验收完成,Mock 全链) | 开发负责事件编排和门禁;算法负责影响半径 | | 跨内部世界状态与外部系统的 Saga/补偿 | Done | `server/aps_domain/saga.py` SagaCoordinator:状态机(PENDING/RUNNING/WAITING_HUMAN/SUCCEEDED/FAILED/COMPENSATING/COMPENSATED/MANUAL_TAKEOVER)+ SagaStep(name/action/idem_key/timeout_sec/max_retries/compensation_action/gate)+ 恢复队列(world["sagas"] 持久化、宽容加载、resume_all 重放)+ 补偿注册表(失败逆序补偿链,补偿失败→MANUAL_TAKEOVER)+ 超时/重试 + 审计(saga.step.* 含 idemKey/status/compensation)+ 写前快照回滚锚点;WMS 缺料闭环接入 `build_wms_shortage_saga`/`run_shortage_saga`(事件级 dedupe);`GET /api/saga`(中间态列表)/详情/retry/compensate/takeover;`test_saga.py` 13 项 + `test_saga_wms_closure.py` 6 项 | 无(本轮验收完成;P3 双人确认自动代行需生产接真实操作员授权,auto_approve=False 停 WAITING_HUMAN) | 开发/集成负责;产品定义业务补偿边界 | ## 8. M5:算法与求解升级 | 需求 | 状态 | 当前证据路径 / 测试 | 剩余验收标准 | 建议责任边界 | | --- | --- | --- | --- | --- | | 真 CP-SAT 与 Hybrid 求解 | Done | `cp_engine.py` 工序级模型(C1 工艺串联/C2 NoOverlap/C10 换型/C11 冻结窗)+ **Cumulative 班组/工装聚合容量**(C12:跨工位并行工序占用 ≤ 班组/工装可用容量,teamId/toolingId 主数据接线,personnel+世界剖面双闸开关,solverMeta.cumulative 含 enabled/capacity/resources[peakConcurrent]/unwired 诚实报告);**gap/时限/性能基线**(objective/bestBound/gap 元数据含 None 语义、timeLimitSeconds 确定性超时 FEASIBLE 契约、n=12 固定算例 <30s 壁钟基线);`test_cp_cumulative.py` 8 项 + `test_cp_operation_level.py` 6 项 | 无(本轮验收完成;FEASIBLE 目标随 4 worker 壁钟略有波动,位级可复现需 num_search_workers=1+seed;物化层仍走 RuleEngine 班次占槽未统一) | 算法负责模型;开发仅负责引擎装配 | | 真 GA/NSGA-II 多目标求解 | Done | `server/engines/nsga2_engine.py`(新):标准 NSGA-II——快速非支配排序(Deb 2002)+ 拥挤度距离(边界 inf+归一化边长)+ 锦标赛选择(rank 优先拥挤度次之)+ 精英保留;工序级染色体(sequence 沿工艺路线保序 + lines 产线,OX/PMX 交叉保可行性 + 工序交换/资源迁移变异);3 目标(加权总延迟/容量溢出冲突/负载均衡取负)输出 Pareto 解集;`nsga2_defaults` 参数模板 + `build_nsga2_manifest`(algolib manifest 对齐);`get_engine("NSGA2")` 集成 + `solve_nsga2` entrypoint;`nsga2_solutions_to_cards` 衔接 rank_scenarios;大算例基线(35 订单:50 代/40 种群 <15s,Pareto 互不支配且不劣于单目标 GA 基线);**时间预算确定性**(小预算跑满固定代数与 GA 口径一致,大预算墙钟兜底);algolib nsga2 条目翻转为可用;`test_nsga2_engine.py` 11 项 | 无(本轮验收完成;ScheduleResult.engineType 复用 GA 槽位以 solverMeta 标注 NSGA2,字面 Literal 扩展留待契约轮) | 算法负责;测试维护黄金算例 | | 独立算法库注册表与 A-E 资产分类 | Done | `server/agent_core/algolib.py` AlgorithmRegistry:A-E 分类(启发式/精确/元启发/ML/集成)、AlgorithmManifest 元数据(输入输出 schema/版本/随机种子/测试/健康)、register/query/health/version/next_seed;**ML/元启发目录资产如实登记**(milp/nsga2/ml.* available=False + 健康检查如实报告未就绪);**LNS 随 round-36 交付翻转为真实可用**(entrypoint=server.aps_domain.lns:lns_local_repair + test_rush_lns.py 黄金测试);`test_algolib.py` 5 项 + `test_algolib_catalog.py` 4 项(A-E 齐全/ML元启发如实登记/query 过滤) | 无(本轮验收完成) | 算法定义元数据;开发实现注册/调用接口 | | 参数优化闭环、评测、灰度生效和回滚 | Done | `server/agent_core/param_opt.py` ParameterOptimizer:split 隔离/回放/GRAY 灰度/退化自动 ROLLED_BACK/敏感性衔接 + **propose**(P1 触发)+ **record_observation 线上观测**(生产 KPI 对比生效前基线、连续劣化默认 2 次可配自动回滚 + 审计 param.experiment.auto_rolled_back、观测落盘 paramObservations)+ **P2 门禁接线**(promote 经 harness 确认卡:实验摘要/候选参数/回放 KPI,批准执行验证回放 finalize GRAY→FULL、拒绝留 GRAY;harness _POWER_MAP 登记 param.* 动作);`GET /api/params/experiments` + `POST /api/params/optimize|observations` + `POST /api/params/experiments/{id}/promote|rollback`;`test_param_opt_gateway.py` 9 项 + `test_param_opt.py` 13 项 | 无(本轮验收完成;观测入口为接口驱动,每次排产自动采样可后续一行接线) | 算法负责调优;开发负责版本和灰度;产品定义 KPI | | What-if/Tornado/Monte Carlo 与鲁棒性评分 | Done | `sensitivity.py` OAT/Tornado + `robustness.py` 蒙特卡洛;**可配置分布/相关性/置信区间**:`distributions`(normal/uniform/triangular 逐维可配 + shockProbability)、`correlation`(-1..1 需求-效率扰动相关,rho=0 随机流与旧实现种子兼容)、`confidence_level`(经验分位置信区间 tardinessCI/mean/std + config 透明元信息);`async_jobs.py` JobQueue 异步重算 + `/api/jobs*` + SkillConsole「异步任务」页签;`test_monte_carlo_config.py` 7 项 + `test_async_jobs.py` 5 项 | 无(本轮验收完成) | 算法负责;开发负责异步任务与可视化 | | 紧约束/影子价、IIS 与冲突归因 | Done | `server/aps_domain/attribution.py`:`detect_iis()` 约束级 IIS 最小冲突集检测(黄金用例验证删除任一约束后恢复可行;可行输入返回空+说明)、`attribution_for_schedule()` 结构化归因报告(证据 conflictId+versionId+日志描述可复核)、中文归因文案(约束名/订单号/资源/短日期/解开方式,不含数学术语)、近似影子价代理量(isShadowPriceProxy 显式标注);`test_attribution.py` 7 项 | 真实 LP/CP 对偶影子价需线性化模型重解;CP-SAT 原生 IIS(solverMeta 层)与 flex 轨接入留待算法侧;归因未接 /api 与前端(后续接线) | 算法负责;产品定义可理解的归因文案 | | LNS 插单局部修复和影响半径 | Done | `server/aps_domain/lns.py`:`lns_local_repair`(P1 沙盒评估)/ `apply_lns_local`(P2 落主干,DRAFT+LNS_RUSH+LOCAL_REPAIR,窗口外订单冻结)/ `format_lns_text`+UI 块;固定窗口(默认交期±36h)内最小扰动(movedOrderCount/shiftedHours/tardinessDelta/disturbanceRatio 度量),受影响数/扰动率/窗口宽度超阈值 → ESCALATE 升级信号;`rush.evaluate` 附加 impact.lns、`rush.apply` 出卡携带 lns、`execute_confirmed` 路由 LOCAL→apply_lns_local / ESCALATE→apply_rush 全量重排(audit 记录 mode+escalateReasons);`test_rush_lns.py` 9 项 + test_rush.py 3 项兼容 | 跨产线邻域与强制选线修复需引擎 forcedLineId 支持;网关 rush.apply 透传 lns 参数(当前默认全量安全兜底) | 算法负责;开发负责事件编排和门禁 | | 可重生算法流水线 | Done | `server/agent_core/rebuild_orchestrator.py`(新):可重生流水线执行器——候选构建(scan_modules 解析 moduleId + 源文件/依赖/黄金测试映射)、隔离运行(subprocess + 全部 APS_* 指向随机临时目录跑 pytest 子集)、安全扫描(S1 可重生声明阻断 + S2 动态执行/S3 硬编码路径/S4 未登记写路径告警)、灰度(GRAY shadow 并存 + gray_probe 扩展点)、失败自动回滚(黄金失败/灰度探针失败恢复基线 + autoRolledBack)、审计(rebuild.started/passed/failed/gray/rolled_back,链式哈希兼容);registry.py 候选版本登记 + 激活指针 + 基线恢复;`/api/rebuild/{module_id}` 触发/`GET /api/rebuild` 状态/promote/rollback;`test_rebuild_pipeline.py` 10 项 + `test_registry.py` 6 项 | 无(本轮验收完成;激活版本为注册表逻辑指针,物理源码替换需接发布机制) | 开发负责流水线;算法负责验收基准;测试拥有发布门禁 | ## 9. M6:双形态、私有化与完整治理 | 需求 | 状态 | 当前证据路径 / 测试 | 剩余验收标准 | 建议责任边界 | | --- | --- | --- | --- | --- | | Web 与桌面共用前端 | Done | `apps/web/`、`apps/desktop/`、根构建脚本 | 双端同一版本前端的关键旅程一致 | 开发负责 | | Tauri 桌面壳 | Done | **架构决策(round-40):接受 Electron 为当前桌面壳**——`apps/desktop/`(Electron 43.2.0 + electron-builder 26.15.3 + NSIS + Sidecar 随包分发,打包冒烟通过);`plan.md` 目标态已同步修订(桌面端=Electron 已实现,Tauri 列为未来迁移备选不阻塞);文档漂移门禁 `test_doc_drift.py` 通过;`docs/architecture/desktop.md` 与实现一致 | 无(本轮决策收口;Tauri 迁移需另行立项评估) | 产品/架构决策;开发实施 | | 自包含 Python Sidecar、守护、随机端口和离线运行 | Partial | 本地冒烟全覆盖:sidecar-local(20 冷启动/端口冲突/崩溃重启/看门狗/中文空格路径 5/5)+ Defender 静态扫描 4/4 clean + 真实 APS 求解(黄金测试)+ **NSIS 真装临时目录冒烟(round-44 scripts/nsis-install-smoke.mjs:/S /D=随机临时目录安装 2 次 PASS,33.6s/30.9s、567MB 解包、布局校验、卸载清理、无系统残留,验证 updater /S /D= 约定)**;`tests/node/nsis-smoke.test.mjs` 13 项 | 干净 Win10/11 离线机实机安装(%LOCALAPPDATA% 落点/快捷方式/冷启动/升级回滚)、perMachine 路径、Defender 实时防护真实拦截演练(需外部验证机/策略) | 开发/发布工程负责;测试拥有安装门禁 | | 桌面许可证和设备隔离 | Done | `server/auth/licenses.py`、数据库迁移、`test_desktop_license_auth.py` | 密钥轮换、吊销、时钟回拨、防复制和离线续期策略通过安全测试 | 开发/安全负责;产品定义授权策略 | | 语音、图片、文件多模态与低置信确认 | Partial | `multimodal.py` 管线框架(Extractor 协议/注册表/低置信 P2 确认门禁)+ stub 文本/文件提取器 + **ImageMetaExtractor(round-45)**:文件名/元数据级结构化候选(订单/物料/日期/附件类型,置信 ≤0.6 + requiresVlm,无线索不编造返回空、9 位数字守卫),走既有低置信确认门禁;真实 VLM 经 register(replace=True) 覆盖切换(测试断言 stub→VLM);`test_multimodal_image.py` 10 项 | 真实 ASR/VLM/OCR 模型服务接入(注册接口已就绪,需外部模型);attachments 批次确认后域表写入语义(真实 VLM 接入时接线) | 产品定义交互;开发负责管线;模型/算法负责质量评测 | | 国产化/信创多架构交付 | Partial | **依赖矩阵与检测脚本(round-45)**:`docs/architecture/platform-matrix.md`(Python >=3.11、Windows/Linux × x86-64/ARM64、ortools/cryptography/uvicorn 等平台 wheel 覆盖标注、信创关键依赖说明)+ `scripts/platform-deps-check.py`(检测 python/平台/架构/requirements 全依赖可导入与版本下限,本地 16/16 PASS);无 GPU 依赖 | 麒麟/统信 × x86-64/ARM64 四组合实机安装、求解性能基线、离线依赖包、安全软件兼容性(需外部信创环境) | 发布工程主责;算法验证求解器兼容性 | | CI/CD、构建矩阵、签名、SBOM、漏洞扫描和离线升级 | Partial | 可复现本地构建+打包冒烟;CI 6-job 矩阵;离线升级+失败自动回滚(upgrade-manifest + updater.cjs);health version + 审计上报端点(round-45)+ 升级 nonce 续接收口(round-46)+ applyUpdate 竞态根治(round-47)+ **pending 跨进程持久化(round-48)**:upgrade-nonce.cjs statePath 持久化 upgrade-state.json(setPending/markInstalled/settle/clear 原子写盘),应用重启后新协调器恢复未过期 pending 为 verifying 并随新 sidecar 补验,过期自动丢弃;main.cjs 接线;node 48/48 | 签名 Authenticode/SBOM 上链/provenance(外部证书);真实 GitHub CI 跑通;NSIS 真装到用户落点 | DevOps/开发负责;测试拥有门禁规则 | | 全审计:独立存储、Merkle/WORM、保留脱敏、导出和异常检测 | Partial | 链+锚定+镜像+脱敏导出+告警+通知+Merkle+WORM 归档模拟+归档加密(AES-256-GCM 双层哈希);**审计查询与报表前端(round-46)**:GovConsole「审计统计」分区(AuditStatsView:分类计数/动作 Top8/近 7 天趋势/告警概览含 traceAlerts 断链明细,中文标签+空态提示,前端聚合 limit=300 零后端改动);`test_audit_worm.py` 7 项 + `test_audit_encryption.py` 12 项 | WORM 物理介质(光盘/WORM 盘)与 HSM/KMS 真实密钥管理/轮换(需外部介质/密钥设施);审计量达万级后引入 /api/gov/audit/stats 端点 | 安全/开发负责;产品定义审计查询与报表 | ## 10. 跨阶段治理要求 | 治理要求 | 状态 | 当前证据路径 / 测试 | 剩余验收标准 | 建议责任边界 | | --- | --- | --- | --- | --- | | L0-L3 Plan 是不可变、可版本化、可局部重生对象 | Done | `server/agent_core/plan_runtime.py`、`server/gateway/plan_api.py`、`plan_node.schema.json`;HTTP 来源派生 USER 拒伪造;node_at 时间线版本化;replay_verify 动作级重放校验;transition_status 合法流转+审计;plan_orchestration 自动编排;round-38 分支维度回退(restore_for_branch);`test_plan_runtime.py` + `test_plan_replay.py` 4 + `test_plan_transition.py` 4 + `test_plan_orchestration.py` 4 + `test_plan_branch_restore.py` 5 项 | 无(矩阵 110 行收口,状态补正为 Done) | 开发负责状态/编排;产品定义审批;算法提供 L1/L2 建议 | | LLM 只有提议权 | Done | Provider 只返回文本/JSON;Harness 控制已登记动作;`tool_runtime.py` 统一工具运行时(gateway 聊天唯一执行入口)+ **异步入口 `run_tool_async` 接入其余直连端点**(scenario.apply 由直连 handle_intent 改为经工具运行时,未登记拒绝+TOOL 审计,响应契约保留;盘点确认其为唯一直连端点,chat _run_intent 已门禁);**前端工具调用可视化**:GovConsole「工具调用」视图(TOOL 审计条目:意图/等级/执行者/时间/结果 放行·确认卡·拒绝,中文标签);`test_tool_runtime_gateway.py` 5 项(含 source-level 无直连绕过盘点断言) | 无(本轮验收完成;chat _run_intent 收敛到 run_tool_async 属整洁性事项,建议下轮) | 开发/安全负责 | | P3 外部副作用二次确认 | Partial | 文件后端默认原子持久化 + 显式 database 后端(request/grant/event 规范化表、revision CAS、token 摘要、全局一次消费、失败关闭);P3 双人 SOD;**文件→DB 存量迁移首切片**(approval_migrate.py 幂等/dry_run/fail-closed);**WORM 归档模拟**(audit_ledger 归档即密封 + verify_archive);`test_approval_migration.py` 6 项 + `test_audit_worm.py` 7 项 | 下一 P0 需补迁移 token 摘要一致性、损坏源 fail-closed、DB clock/TTL 与 CAS 并发可靠性;最终仍需 WORM 物理介质、MySQL 实机多主机与断连/死锁故障注入 | 产品定义确认 UX;开发负责门禁 | | 硬约束不可被 LLM 或软权重关闭 | Done | `constraints.py` 13 类约束目录齐全(C1-C13:工艺先后序/工位独占/班次日历/维保窗口/选线/物料齐套/产能上限/交期/客户优先级/换型/冻结窗口/班组工装/SOP;新增 C9、C12 归位、goldenCase/kindConfigurable)+ `constraint_catalog()` 只读接口;四引擎(RULE/CP/HYBRID/GA)硬约束语义一致黄金测试(EQUIPMENT/CAPACITY/MATERIAL 三态一致,未发现不一致);**关闭请求被拒并审计**:`ConstraintProfileDenied` 门禁(enabled=False 落硬约束/硬→软降级/对硬约束设权重三类路径拒绝)+ write_audit DENIED(action=constraint.profile.save,LLM 提案同门禁);`test_constraint_catalog.py` 19 项 + `test_engine_constraint_semantics.py` 19 项 | 无(本轮验收完成;API/LLM 拒绝分支的 store.save 持久化建议补,属整洁性) | 算法负责语义;开发负责配置/门禁 | | 结论、动作、报告可追溯和复算 | Done | `server/agent_core/evidence.py` 统一 EvidenceItem + trace_chain/verify_chain + **verify_audit_trace**(遍历 ALGO_RUN 审计链哈希逐条重算比对,产出 broken 列表 expected/actual/reason,旧记录无 traceItems 不误报);workflow `_build_run_trace`/`_build_external_trace` 落 traceItems(canonical 全量条目供精确重算);`/api/gov/audit` 扩展 traceAlerts/traceChecked/traceOk + `GET /api/gov/trace/verify`;GovConsole「可追溯链」列 ⚠断链徽标(期望 vs 实际哈希)+ 顶部提示条;**EXTERNAL 真实 HTTP skill 端到端验收**:test_trace_external_http.py(uvicorn stub + HTTP skill → flex.schedule.external 真实 POST → trace 可复算);`test_trace_break_visual.py` 6 项 + `test_trace_external_http.py` | 无(本轮验收完成) | 开发负责协议/存储;算法负责复算信息 | | 未登记动作默认最高风险 | Done | `server/agent_core/harness.py` 的 `power_of` 默认 P3;`test_unregistered_action_defaults_to_p3` | 保持白名单测试;新增动作必须同步门禁文档 | 开发负责;测试/审计把关 | | 审计 append-only 且可检测篡改 | Partial | 链式哈希+独立锚定根+镜像+跨进程锁+清理归档+**WORM 归档模拟与篡改检测**(round-42)+**归档加密模拟**(round-43:AES-256-GCM+scrypt 派生+双层哈希校验+密钥缺失/错误显式失败);`test_audit_encryption.py` 12 项 + `test_audit_worm.py` 7 项 + `test_audit_appendonly_guard.py` 4 项 + `test_audit_merkle.py` 6 项 | WORM 物理介质与归档密钥管理(HSM/KMS)需外部设施 | 安全/开发负责 | | 跨层契约和文档同轮同步 | Done | `docs/README.md`、`docs/CHANGELOG.md` 有规则;`test_contract_sync.py` schema 清单门禁与不兼容消费者测试;`test_doc_drift.py` 文档技术选型漂移门禁;`scripts/generate_contract_types.py` 契约 TS 类型生成器 + `test_contract_generation.py` 5 项(确定性、必填/枚举/手写关键面与 schema 一致) | 无(本轮验收完成;pydantic 端自动生成与复杂嵌套类型完整支持留待扩展) | 开发维护;测试/审计拥有门禁 | | 黄金测试是发布门禁 | Partial | Round 67 migration **29 passed**、approval related **74 passed**、最终全量黄金 **1053 passed / 2 warnings**;Round 66 focused **80 passed**;Node **60 passed**;Web build、ruff/compile/node check/diff-check 通过;8003/5173 与浏览器真实健康。响应 `responseDigest`、条目完整排列/业务字段、pipeline/status 与可行槽位覆盖均失败关闭;源码 Sidecar `--solver-child -I` 已通过 | 重建冻结 Sidecar 后验收真实 EXE `--solver-child`;继续完成干净离线机、Defender for Endpoint、签名/provenance 和真实 GitHub CI | 测试主责;开发/算法修复各自失败 | | 世界状态与真实外部系统提交具有明确补偿语义 | Done | `saga.py` 每个 P3 动作定义:幂等键(mes.dispatch step 用 `dispatch:{eventId}`)、超时(timeoutSec)、重试(maxRetries 指数退避简化)、补偿(`mes.cancel_dispatch` 外部工单撤销 + 回执 VOIDED + 世界回滚;重排 step 用 `flex.reschedule.rollback` 写前快照回滚)、人工接管(补偿失败→MANUAL_TAKEOVER + takeover 端点)、审计事件(saga.step.*);`mes_stub.cancel_work_order` + `mes.cancel_dispatch` 幂等;`test_saga_wms_closure.py` 6 项(全链成功/重排失败回滚/下发失败撤销/补偿失败人工接管/gate 暂停/入口幂等) | 无(本轮验收完成;P3 自动代行身份与真实操作员授权接线留待生产) | 产品定义业务补偿;开发/集成实现 | ## 11. 建议交付顺序 | 批次 | 用户价值 | 范围 | 批次验收出口 | | --- | --- | --- | --- | | P0 可信试点基线 | 计划员敢发布,企业敢留痕 | 全量 P2/P3 evidence 封套、审批迁移可靠性、审计前置快照;Windows 求解器 fatal 已本地隔离关闭但冻结产物待构建后验收 | P0/P1/P2/P3 权力路径自动化验收;证据全动作一致;审批迁移故障关闭;冻结 solver-child/契约三方一致 | | P1 安全探索与长期会话 | 试排不污染、后悔可恢复、多人可协作 | 分支树、真正成对状态、时间线 diff/回放、会话引用、四层上下文 | 任意分支切换/回滚后对话和世界逐字段一致;跨租户隔离 | | P2 真实现场闭环 | 从“能演示”升级为“能接厂” | WMS 事件、MES MCP、房间自动化、幂等重试、Saga | 缺料 -> 重排 -> 审批 -> 下发 -> 回执全链通过;断网可恢复且不重复下单 | | P3 算法可信升级 | 提升可行率、交期和方案质量 | 工序级 CP、GA/NSGA-II、LNS、Pareto、调参、Monte Carlo、主控约束 | 每个引擎是真实现;固定基准集报告可行率/KPI/gap/性能/稳定性 | | P4 私有化产品化 | 可在客户内网稳定安装、升级和审计 | 桌面技术路线决策、自包含 Sidecar、信创、CI/CD、签名/SBOM、多模态、WORM | 干净离线机器可运行;签名产物可追溯;升级失败回滚;合规审计可导出 | 最高优先级未完成项仍是 **P0 可信试点基线**。审批迁移 B1 已完成 grant digest、损坏源 fail-closed、稳定快照和原子事务;下一本地优先级为 **R67-B2 数据库权威 clock/TTL/CAS**,以及 **sap.sync.outbound P3 evidence envelope**。随后处理 folder.schedule TOCTOU 与 Automation G4 payload 绑定;真实 MySQL 多主机和旧节点停写编排仍需外部环境。 ## Round 65 专项:闭环 APS 排产内核 | 能力 | 状态 | 直接证据 | 剩余边界 | |---|---|---|---| | 跨订单 BOM/库存/供应净算 | Done (local) | `closed_loop_problem.py`、`supply_netting.py`、`test_closed_loop_scheduling.py`、`test_closed_loop_provenance.py` | 真实供应承诺仍需 SAP/WMS | | 制造需求准入与原子排产 | Done (local) | `closed_loop_runtime.py`、`test_flex_atomic_schedule.py`;MOM 新版本 0 VL/WO | 39 缺工艺、67 模板/缺能力待现场补齐 | | `SchedulingProblemV2` + 多资源 Validator | Done (local) | `test_closed_loop_resource_adapter.py`:设备/班组/模具/组织层级/容量/寿命正负用例 | 外部 V1 Skill 必须补多资源分配,否则按设计拒绝 | | P2/P3 完整证据绑定 | Done (local) | `test_mes_evidence_v2.py`、`test_flex_publish_mes_gate.py`;身份/维保/能力/班组/模具漂移失败关闭 | 真实 MES 仍需凭据/白名单 | | WMS 重排精确新版本 | Done (local) | `test_saga_wms_closure.py`:确认拒绝且已有旧 DRAFT 时不发布 | 真实 WMS 事件源待接入 | | 6 阶段持久状态与真实浏览器 E2E | Done (local) | `OrderPanel.tsx`、`closed-loop-scheduling.spec.ts`;MOM 刷新恢复 + 正向 P2/P3/MES | 现场操作仍受真实主数据和厂商系统约束 | | 订单 GET 读语义与现场保护 | Done (local) | `sync_flex_orders_to_sales` 幂等、MRP 预览深拷贝、`test_orders_flex_pool.py`、`test_closed_loop_gateway.py` | 历史 world 漂移未擅自回退 | 验收:2026-08-03 全量黄金测试 979 passed、Node 60 passed、Web build passed、真实隔离 Playwright 2 passed。首轮审计 7 个阻断已修复,最终独立复审 `AUDIT: PASS`;本项不改变原有 P0 跨主机审批存储、真实厂商对接、签名/离线机等剩余优先级。 ## Round 66 专项:Windows 求解器进程隔离 | 能力 | 状态 | 直接证据 | 剩余边界 | |---|---|---|---| | 子进程协议与父进程校验 | Done (local) | `solver_process.py`、`solver_worker.py`、`test_solver_subprocess.py`;协议 `aps.solver-process.v1` | 干净 Windows/真实 CI 仍需重复 | | CP/HYBRID 失败关闭 | Done (local) | fatal/timeout 均 `UNAVAILABLE`、0 PO/WO、不可发布、父存活、业务原子、无 RULE 降级 | 外部监控/告警接线可继续扩展 | | 健康正向求解 | Done (local) | 复制 `world.json`:CP/HYBRID `OPTIMAL`、1 PO/10 WO/10 slots、`runtimeSafe=true` | MOM 真实主数据仍阻断,不得外推 | | 进程树回收 | Done (local) | timeout 15.633s,grandchild 随进程树回收 | 真实压力/长期 soak 待 CI/客户机 | | 运行时来源门禁 | Done (local) | 默认 Anaconda 稳定拒绝;`.venv`/`.sidecar-venv` 各 5 次通过 | 发布 runtime 仍需冻结产物与签名 | | 源码 Sidecar `--solver-child -I` | Done (source) | trusted source root bootstrap + `test_source_solver_child_entry_runs_under_isolated_python`;实际 CP 1/10/10 | 不等同于冻结 EXE 打包通过 | | 冻结 Sidecar 新入口 | Partial | 现有 EXE 仅旧 `--probe-child` 通过 | 重建后验证新 `--solver-child`,并做干净机/Defender/签名验收 | | Round 66 最终全量黄金 | Done (local) | focused 80;full golden 1029 passed / 2 warnings;首轮假绿复现现被 `SOLVER_RESPONSE_INVALID` 拒绝 | 冻结 EXE 重建与干净机仍属构建后验收 | | 成功响应完整性与业务语义 | Done (local) | 临时文件 stdin 消除 Windows pipe 写入背压并恢复有界 timeout; 父进程重算 `responseDigest`;条目缺失/多余/重复/字段改写、错误 pipeline/status/slots 均拒绝 | 无;真实冻结制品仍需重建后复验同一协议 | 数据边界:`world.json` 与 MOM JSON 业务源 hash 验收前后不变,`server/data/**`/`.env` 无 Git 状态;`master.db` 的 license `last_seen` 等运行元数据允许变化,不能拿文件 hash 冒充业务不变。矩阵总计仍为 **50 Done / 10 Partial / 0 Missing**。 ## Round 67 专项:审批迁移 Fail-Closed | 能力 | 状态 | 直接证据 | 剩余边界 | |---|---|---|---| | grant digest 归一化与 consume once | Done (local) | `approval_migrate.py`、`test_real_file_p3_grant_migrates_as_digest_and_consumes_once` | 真实 MySQL 多主机待验收 | | corrupt/schema/record fail-closed | Done (local) | 10 类非法源 + corrupt JSON,数据库零写 | 外部切换编排需运维停写 | | 单事务与稳定源快照 | Done (local) | QUIESCED + 同锁 + source digest;late event/flush/drift 故障整体回滚 | 跨主机共享文件锁不冒充完成 | | 终态 request 重建与状态单调 | Done (local) | grant+terminal history 重建 APPROVED;状态前进/回退测试 | DB clock/TTL 属 B2 | | legacy raw-token 修复与 payload 身份 | Done (local) | 一致行原子修复并 consume once;列/payload 冲突零变化 | 生产遗留量需实际盘点 | | canonical event digest | Done (local) | 同秒近似事件保留、重跑幂等 | WORM 物理介质仍外部 | 验收:migration 29 passed;approval related 74 passed;full golden 1053 passed / 2 warnings;真实临时 SQLite 闭环通过;最终独立复审 `AUDIT: PASS`。