aps-agent/docs/product/plan-completion-matrix.md

321 lines
62 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Plan 完成度与验收矩阵
> 基线日期:2026-08-20(Round 84 经父进程验证的 CP 时间直接物化;Round 83 C3、Round 82 C7 与更早证据继续保留)
> 范围:根目录 `plan.md` 的 M-POC、M0-M6 与跨阶段治理要求。
> 判定顺序:当前可运行代码与黄金测试 > `docs/` 落地文档 > `plan.md` 目标态描述。
> 状态只使用 `Done`、`Partial`、`Missing`;Mock、代理实现和“首切片”不得标为 `Done`。
## 1. 当前验证基线
- GitNexus 当前索引:13,991 个节点、63,793 条关系、620 个 communities、300 条执行流(2026-08-20 Round 84 重建)。
- 黄金测试命令:`.\.venv\Scripts\python.exe -X utf8 -m pytest tests/golden -q`。
- Round 84 最终全量黄金为 **1540 passed / 5 warnings**;直接物化既有聚焦 **142 passed / 1 warning**,CP/RHS 收口 **81 passed / 1 warning**,CP/子进程/C3/C7 扩展 **171 passed / 1 warning**。Round 83 C3、Round 82 C7 与更早证据继续保留。
- Node **60 passed**;Web build 通过(4853 modules);隔离图纸 Playwright **3 passed** 证据继续保留;`py_compile` 与 `git diff --check` 通过。GitNexus `compare main` 为 **82 files / 727 changed symbols / 109 affected processes / CRITICAL**,不把共享累积脏工作区风险降级。
- 实时服务:8003、5173 与 5173 `/api/health` 均 HTTP 200,5173 显式代理 8003。Round 84 隔离 18184/15184 浏览器真实执行 CP/HYBRID 两版,各 7 PO / 30 WO / 30 slots,页面可见且 console warning/error=0;结构化结果为 C3 精确对齐 30/30、C7 passed、无 CALENDAR/CAPACITY/ENGINE_UNAVAILABLE。
- 求解器隔离真实运行:protocol v2 的普通 CP/HYBRID、整约束诊断和 RHS 诊断 operation 分离;Round 84 可行解由父进程重验后直接物化,`placement=cp-calendar-segmented-direct`、`directlyConsumedByMaterializer=true`、`operationTimingValidation.passed=true`;runtimeSafe=true,fatal/timeout/digest/operation/invocation/扰动篡改继续失败关闭。
- 冻结 Sidecar 已用 CPython 3.13.12/58 个哈希锁包重建;首次真实构建暴露 SciPy Sobol direction npz 漏打包并拒绝作为通过证据,spec 精确收集后第二次冻结 `--probe-child` 输出 `scipy=1.18.0`、无缺文件异常,冻结健康冒烟通过。
- MOM 复制数据 CP/HYBRID 求解为 `OPTIMAL`,但现有主数据阻断导致 0 PO/WO、1 slot/1 conflict;这不是现场工厂主数据完成证明。
- 审批迁移真实运行:文件后端 P3 grant -> 单事务 DB 迁移 -> request=APPROVED、token 仅存 digest、consume=true/false;损坏 JSON 明确失败且 DB 不变。
- 数据保护:最终全量前后 `sap_mirror.json=923A05...E1EB1`、`approvals.json=95184E...ECB4D`、`world.json=36E479...EB6E06`、`world-proj_712276ba.json=6B64AD...53F7D` 均不变。`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:核心排产闭环
| 需求 | 状态 | 当前证据路径 / 测试 | 剩余验收标准 | 建议责任边界 |
| --- | --- | --- | --- | --- |
| 自然语言统一交给 Pi Agent(无规则快路 / 关键词意图层) | Done | `server/agent_core/fallback_lane.py`、`server/integrations/pi_bridge.py`;`test_pi_primary_chat.py`、`test_fallback_lane.py` | Pi 只能调用封闭 `IntentName` 工具目录;P2 确认卡与 P3 白名单门禁不变;契约外工具名不产生写动作 | 开发负责 Pi 接线与工具目录;产品维护口令验收集 |
| 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 壁钟基线);Round 84 由父进程严格验证 `operationSlots` 后将 CP 时间/segments 直接绑定到 WO,RuleEngine 仅承担业务对象持久化;`test_cp_cumulative.py`、`test_cp_operation_level.py`、`test_cp_c3_calendar.py` | 无(本轮验收完成;FEASIBLE 目标随多 worker 壁钟略有波动,位级可复现需 num_search_workers=1+seed) | 算法负责模型;开发仅负责引擎装配 |
| 真 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/Sobol 与鲁棒性评分 | Done | `sensitivity.py` OAT/Tornado + 独立 Sobol/Jansen(2d scrambled、5 因子、8~64 基础样本、显式 seed/startDate/variance、一阶/总效应,零方差返回不可识别 null)+ `robustness.py` 可配置分布/相关性/置信区间蒙特卡洛;JobQueue tenant/project/actor/并发/取消门禁 + `/api/jobs*` 严格 422 + SkillConsole 异步任务 UI;SciPy 已同步 runtime/requirements/Sidecar lock 和冻结 probe;`test_sobol_sensitivity.py` 23 项 | 无(本轮本地验收完成;真实现场参数范围仍需业务校准) | 算法负责;开发负责异步任务与可视化 |
| 紧约束/影子价、IIS 与冲突归因 | Done | Round 74 IIS/API/UI;Round 75 CP-SAT sufficient assumption core(非最小 IIS);Round 79 GLOP;Round 80 整约束;Round 81 C8/C12 RHS;Round 82 C7 line/day;Round 83 `cp-calendar-segmented.v1`;Round 84 直接消费父进程验证后的 CP timing,C3 `cpTimingApplied=true` 且 C7 复核同源,`test_cp_c3_calendar.py` | 真实现场费率/罚则需业务确认;整约束与有限差分均不是 CP 对偶 | 算法负责;产品定义可理解的归因文案 |
| 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、Defender 静态扫描、真实 APS 求解与 NSIS 临时目录真装;Round 78 用 CPython 3.13.12 + require-hashes 58 包重建冻结 EXE,SciPy/qmc 确定性 probe 与健康 smoke 通过,Sobol direction npz 打包合同已覆盖 | 干净 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;迁移 grant digest/损坏源 fail-closed/稳定快照/原子事务已完成;Round 70 MySQL 权威 clock/TTL/expiry-CAS/DOUBLE epoch/Alembic 本地合同已完成;Round 68 SAP outbound P3 冻结 evidence envelope;Round 72 全 P2/P3 决策前重算 paramsHash/envelopeHash | 真实 MySQL 8 多节点时钟偏移、隔离级别并发、deadlock/断连/HA 故障注入,以及 WORM 物理介质仍需外部环境 | 产品定义确认 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 84 full golden **1540 passed / 5 warnings**、CP 扩展171、Node **60 passed**;Web build、compile/diff-check、8003/5173 与隔离浏览器 CP/HYBRID 真实链;4 个受保护业务文件哈希与既有基线一致 | 继续完成干净离线机、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 可信试点基线的外部验收**。P0 本地清单已闭合;Round 84 已让物化层直接消费经父进程验证的 CP 时间,Round 83 遗留的本地优先项完成。当前矩阵没有新的 Missing,本地可独立闭合项已收口;真实 MySQL 多主机、旧节点停写编排、厂商联调、现场费率/罚则、签名/Defender/干净离线机均需外部环境或授权。
## Round 82 专项:C7 产线/日容量 CP 模型
- C7 assumption 以产线/自然日为实例,工序 setup+run、激活换型及既有已发布/冻结负荷按开工日整笔记账;容量来自 shiftCalendar 有效分钟,效率不重复折算。
- 日历缺失、跨午夜/重叠班次和非法休息段失败关闭;非工作日容量 0,不能用 RHS 增量替代日历变更。
- `C7_line_day_capacity_minutes` 显式绑定 `line-day:{id}:{date}`;实例增量/费率、strict 422、单线程 seed0、摘要/拓扑/RHS 差值和取消边界完整。
- CP/Hybrid 物化后 exact C7 复核;Rule 5% 展示阈值未覆盖的超载补 CAPACITY 冲突,模型 status 与物化偏差分开。
- 隔离 Web 实测 L001/#1 2026-08-19:869→929(+60),无费率未配置、实例费率 2 时 CNY120,console0。
- 验收:C7 专项26、联合206、Node60、Web build;full golden 1504 passed / 5 warnings;冻结 Sidecar C7 改善51000/runtimeSafe;GitNexus 76/621/104 CRITICAL;独立审计 findings 已关闭。
## Round 83 专项:C3 班次日历分段 CP 模型
- `cp-calendar-segmented.v1` 以扣休息后的有效窗口表达加工时间;长工序只在窗口边界暂停/续作,C1 用逻辑工序包络,C2/C12 用 processing segments。
- C3 baseline 为 `calendar-boundary-only`,removal 为互斥 `continuous`;父进程严格绑定 calendar digest、anchor/horizon/coverage、bucket/window/segment 数和 model identity,50,000 segment 门禁失败关闭。
- `operationSlots` 输出完整 segment/processing/elapsed/pause/compliance 契约;UNKNOWN 后的固定可行 hint fallback 与主求解隔离并留痕。
- Rule 尚未直接消费 CP 时间;`materializedC3Validation.cpTimingApplied=false`,跨休息/停工窗口生成 C3 硬冲突并阻断发布/MES,但不覆盖 CP status。
- 验收:C3 专项11、扩展245、审计117、full golden1522/5warnings、Node60、Web build;冻结 Sidecar 和隔离 Web 均确认 runtimeSafe、模式和 topology,console0,受保护哈希不变,`AUDIT PASS`。
- 下一本地优先级为 CP 时间直接物化;真实现场费率/罚则和外部 P0/P4 验收边界不变。
## Round 84 专项:经父进程验证的 CP 时间直接物化
- 可行 CP/HYBRID 结果经父进程重验稳定订单身份、路线双射、产线/工位/班组/工装、segments、前后序、资源容量、C3/C7 后,绑定 `_cpOperationTiming`;预检失败不创建版本、PO 或 WO。
- RuleEngine 不再重算可行 CP 工序时间,只把 plannedStart/End、`plannedSegments`、processing/elapsed/pause/count 和逻辑工序键原样持久化;`placement=cp-calendar-segmented-direct`,C3 `cpTimingApplied=true`。
- 父校验器识别诊断 C2/C12 合法松弛与 C12 RHS 有效容量,同时继续拒绝未授权重叠、容量伪造和日历窗口漂移。
- 隔离浏览器 CP/HYBRID 各 7 PO / 30 WO / 30 slots;C3 30/30 精确对齐、0 violation,C7 passed,无 CALENDAR/CAPACITY/ENGINE_UNAVAILABLE;页面和 console 通过。
- 验收:既有聚焦142、CP/RHS81、扩展171、full golden1540/5warnings、Node60、Web build、compile/diff-check;8003/5173/前端代理健康。主项目 V006 为 0 条目 `TRIVIAL`,不冒充正向求解证据。
- 剩余仅为真实 MySQL、厂商系统、现场费率/罚则和发布环境外部验收;矩阵保持 **50 Done / 10 Partial / 0 Missing**。
## Round 81 专项:CP RHS 参数增量与现场成本口径
- protocol v2 新增 RHS baseline/perturbation operation,与生产排产和整约束移除 strict schema 隔离;随机 invocation、request/response digest、单个扰动和 RHS 参数状态绑定。
- C8 只增加延期目标 due RHS 分钟,不改变可行性;C12 只增加真实 `AddCumulative` 的具体班组/工装资源 capacity;C7 未进当前 CP 可行模型,不生成结果。
- OPTIMAL 输出精确有限差分,FEASIBLE 仅输出改善界限;拓扑/RHS 漂移、区间矛盾和单调性异常失败关闭。无费率时货币字段全 null,显式容量费率按本次计划期计,目标与成本不可直接相减。
- JobQueue/API/UI 已接;隔离 Web 真实完成无费率和有费率任务,C8 60 分钟费率 2 -> CNY 120,C12 无实例不重解且不估算成本。
- 验收:专项 43、扩展 180、Node60、Web build、冻结 RHS C8=18000;full golden 1478 passed / 5 warnings;GitNexus 累计 CRITICAL(73 files / 591 symbols / 90 flows)保持诚实。
## Round 80 专项:CP 整约束 one-at-a-time 重解
- protocol v2 严格隔离生产/诊断 operation;诊断单元素约束、invocation、所有 solve 状态回显与实例集合绑定。
- OPTIMAL 给精确目标差,FEASIBLE 只给界限区间;C11 双门控、active 实例、单调性/partial/取消语义完整。
- JobQueue/API/UI 已接;冻结 EXE diagnostic C2 精确改善 28000;隔离 Web 显示 C1/C11/C2 改善和未激活项,console0。
- 验收:专项 36、扩展 144、Node60、Web build;full golden 1435 passed / 5 warnings;独立复审 `AUDIT PASS`。
## Round 79 专项:诊断 LP 局部边际率与归因校准
- GLOP 诊断冲突松弛仅支持 C4/C7/C8 分钟 RHS;有限差分为主值,cap dual 只作数值证据,CP-SAT 边界和不可加性明确。
- conflictId 全局失败关闭;一致重复、物理 RHS 去重和不一致重复独立留痕;solver error/unsupported 分开。
- API 加法兼容;浏览器真实显示 rate=1、1分钟收益=1、coverage=1/1、proxy/非CP/不可加标签,console 0。
- 验收:专项 26、扩展 108、Node 60、Web build、冻结 `glop=GLOP`;full golden 1399 passed / 5 warnings;独立复审 `AUDIT PASS`。
## Round 78 专项:Sobol 全局敏感性与冻结 Sidecar
- 2d scrambled Sobol + Jansen 一阶/总效应,5 因子、8/16/32/64 基础样本;日期确定性、逐评估取消、退化不可识别语义完整。
- `/api/jobs` 严格 422,JobQueue tenant/project/actor/并发门禁继续生效;Web 真实提交 8 样本完成 56 次评估,console 0。
- SciPy 同步三份依赖和 Sidecar lock;真实冻结构建发现并修复 direction npz 漏打包,第二次冻结 probe/health 通过。
- 验收:focused 61、相邻 62、Node 60、Web build;full golden 1381 passed / 2 warnings;受保护哈希不变;独立复审 `AUDIT PASS`。
## Round 77 专项:异步分析任务安全基础设施
- tenant/project/认证 actor 绑定 submit/list/poll/cancel;默认并发 2、在途线程 8,饱和在创建线程前拒绝。
- pending 取消仍计入线程配额;取消成功不得被 done/failed 覆盖;thread.start 失败原子回滚记录和配额。
- 验收:专项 11 passed;相邻 20 passed;full golden 1358 passed / 2 warnings;受保护哈希不变;独立复审 `AUDIT PASS`。
## Round 75 专项:CP-SAT 原生不可行核心 solverMeta
- C1/C2/C10/C11/C12 约束族通过 assumptions 保持全 true 时原模型语义;INFEASIBLE 才读取原生核心。
- solverMeta `nativeIis` 使用规范约束 ID,可直接衔接归因目录;C2 统一为 `C2_no_overlap`。
- 核心明确为 sufficient assumption core,不冒充最小 IIS。
- 验收:CP focused 24 passed;solver affected 79 passed;full golden 1302 passed / 2 warnings;受保护哈希不变;独立复审 `AUDIT PASS`。
## Round 74 专项:归因 API 与冲突中心接线
- `GET /api/attribution` 严格绑定当前项目世界、fixed/flex 轨道和单一版本;无版本/错轨版本失败关闭。
- fixed/flex 产能证据分别读取 `conflicts`/`flexConflicts`,禁止跨轨归因污染。
- IIS 提供稳定 `iisId`,逐条 attribution 返回 evidence;前端展示主控约束、最小冲突集和证据详情。
- 项目/会话 scopeKey 变化自动重载,请求开始或失败即清旧报告;“近似影子价”显式保留,不冒充 LP 对偶值。
- 验收:focused 12 passed / 1 warning;Web build;full golden 1301 passed / 2 warnings;受保护哈希不变;独立复审 `AUDIT PASS`。
## 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`;protocol v2 strict schema、生产/诊断 operation 隔离、invocation、relaxed/assumption/实例集合和 objective/bound/gap 校验 | 干净 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`。
## Round 71 专项:未完成功能补齐本地切片
| 能力 | 状态 | 直接证据 | 剩余边界 |
|---|---|---|---|
| DXF 上传/项目内选择/批量解析 | Done (local) | `app.py` drawing routes、`DrawingPanel.tsx`、`test_dxf_api.py`、`drawing-upload-flow.spec.ts` | 现场真实图纸与侧栏 accept 已同步,仍需现场复验 |
| 图纸理解与 drawingLink 证据 | Done (local) | `drawing_understanding.py`、`test_drawing_understanding.py`、`test_drawing_links.py` | DWG/STEP/扫描件 OCR 依赖真实多模态接入 |
| PDF 图纸解析与 PNG 预览 | Done (local) | `drawing_pdf.py`、`test_drawing_pdf.py`、`DrawingCanvas.tsx` | 扫描件/图片型 PDF 需真实 OCR |
| 工艺/工序与细节识别 | Done (local) | `drawing_process.py`、`test_drawing_process.py` | 标准工时/资源仍需人工或工艺数据 |
| 图纸管理与 AI 精确解析 | Done (local) | `drawing_ai.py`、`test_drawing_manage.py`、`DrawingPanel/DrawingAnalysisBlock` | 真实视觉模型/OCR 仍需 R71.6 |
| 中文工艺文档结构化 | Done (local) | `drawing_process.recognize_process_text`、`/api/drawings/analyze-text`、`DrawingAnalysisBlock` | 真实视觉模型/OCR 仍需 R71.6 |
| 主数据维护与版本发布 | Done (local) | `masterdata.py`、`masterdata_api.py`、`MasterPanel.tsx`(「工位·版本·日历」页签,R71 能力已并入唯一入口)、`test_masterdata_api.py` | 现场 39 缺工艺/67 缺能力需数据补齐 |
| MPS/计划层切片 | Partial (local) | `mps_planning.py`、`test_mps_planning.py`、`/api/mps/*` | 与发布/执行回流接线待 R71.7 |
| 治理规则与审计统计 | Done (local) | `governance_rules.py`、`governance_api.py`、`GovernancePanel.tsx`、`test_governance_api.py` | 真实模型服务/多模态不属本项 |
验收(2026-08-17):四个审计修复文件 focused 37 passed,相邻回归 74 passed;全量黄金 1276 passed / 2 warnings;Web build、Node 60/60、隔离图纸 Playwright 3/3、8003/5173 与浏览器主界面均通过;最终独立复审 `AUDIT PASS`。图纸绝对路径脱敏、显式项目不接受全局根扩权、文件与元数据失败补偿、`PENDING_REVIEW` 证据门禁,MPS 租户/项目/世界隔离及 trace/L2 双向失败补偿,治理真实 P2、主数据漂移失败关闭、齐套/技能策略口令均纳入回归。矩阵总计仍为 **50 Done / 10 Partial / 0 Missing**;真实外部系统、模型服务、发布制品和现场数据边界不因本地通过而翻为 Done。
## Round 72 专项:工程目录排产 P2 安全闭环
| 能力 | 状态 | 直接证据 | 剩余边界 |
|---|---|---|---|
| SQL 完整数据不绕 P2 | Done (local) | `workflow.handle_intent`、`test_sql_folder_schedule_stage_is_read_only_and_always_p2` | 无 |
| Stage 主业务世界零污染 | Done (local) | `prepare_folder_schedule` 深拷贝沙盒;SQL/Excel/DXF 混合分析不写主世界 | 无 |
| Manifest 与 payload 同源字节 | Done (local) | `read_folder_source_snapshots`;SQL/Excel/CSV 共用 immutable bytes;临时 ORD1→ORD2→ORD1 攻击回归 | 无 |
| P2/P3 通用确认信封完整性 | Done (local) | `paramsHash` + `envelopeHash` 决策前重算;action/project/world/session/evidence/snapshot 绑定 | 旧确认卡升级后失败关闭,需重新发起 |
| Import/schedule/save 原子失败语义 | Done (local) | `_FolderCandidateStore` 候选世界;三点故障注入均 DENIED 且业务指纹不变 | 无 |
验收:专项 14 passed;审批/folder 相邻回归 108 passed / 1 warning;全量黄金 1290 passed / 2 warnings;Web build、Node 60/60、8003/5173、浏览器与数据哈希通过;独立复审 `AUDIT PASS`。矩阵仍为 **50 Done / 10 Partial / 0 Missing**。
## Round 73 专项:Automation G4 授权载荷绑定
| 能力 | 状态 | 直接证据 | 剩余边界 |
|---|---|---|---|
| G4 完整授权快照 | Done (local) | `automation_authorization` / `validate_automation_authorization`;完整 Rule + Binding schema | 无 |
| Grant 与当前规则/Binding 一致 | Done (local) | `EscalationGrant.authorization_digest`;7 类漂移撤销测试 | 无 |
| G4 写动作只走真实业务桥 | Done (local) | 无 `business_bridge` 或 Binding 预先按 P3 DENIED;删除 handler 直通 | 无 |
| 真实 API 双人审批铸 grant | Done (local) | `/api/actions/confirm`/batch `_confirm_one`;TestClient 两身份后真实发布 PUBLISHED | 无 |
| RuleId 替换与 grant 重放 | Done (local) | 消费前 scope 校验、一次性 executionGrant 回归 | 无 |
验收:Automation focused 24 passed / 1 warning;审批/治理相邻回归 92 passed / 1 warning;全量黄金 1300 passed / 2 warnings;受保护哈希、8003/5173、浏览器通过;独立复审 `AUDIT PASS`。矩阵仍为 **50 Done / 10 Partial / 0 Missing**。
## Round 76 专项:康尼真实数据 Web 全流程试排
| 能力 | 状态 | 直接证据 | 剩余边界 |
|---|---|---|---|
| 10 订单工艺/BOM/工时导入 | Done (local) | `kangni_intake.py`、`test_kangni_intake.py`、`test_kangni_real_data_gate.py`;10/72/26/965 | 现场源表结构变化需重新验证映射 |
| 浏览器上传目录到 P2 trial | Done (local) | `folder_pack.py`、`workflow.py`、`test_kangni_folder_schedule.py`、浏览器 9 文件全链 | 仅本地 trial,不等同生产发布 |
| 五策略可信比较 | Done (local) | `flex.py`、`analytics.py`;DEGRADED/PARTIAL 不推荐,状态 `TRIAL_ONLY` | 齐套/技能/能力字段仍需现场补齐 |
| MPS 保存、版本关联与 gap | Done (local trial) | `/api/mps/*`、`PlanBucketsView.tsx`、`test_mps_planning.py`;`OPEN -> SCHEDULE -> ADOPT` | 自动发布/执行反馈仍属 R71.7 外部闭环 |
| 订单/设备版本化 XLSX | Done (local) | `reports.py`、`test_schedule_exports.py`、Web 两个下载入口 | 生产版本导出仍须现场发布流程 |
| 设备/模具生产映射 | Partial | 41 台设备、40 套模具已读取;共享设备覆盖 26 工序 | 40 台真实设备无能力;40 套模具缺工序/设备/寿命 |
验收:focused **136 passed / 2 warnings**;full golden **1352 passed / 2 warnings**;Node **60 passed**;Web build、真实浏览器和双下载通过;9 份源 Excel 与 4 个受保护业务文件哈希不变;独立复审 `AUDIT PASS`。矩阵总计仍为 **50 Done / 10 Partial / 0 Missing**,现场资源映射、真实 MES/WMS/SAP 与外部发布环境不因本地 trial 翻为 Done。