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

46 KiB
Raw Blame History

Plan 完成度与验收矩阵

基线日期:2026-08-20(round-67,承接 round-66)
范围:根目录 plan.md 的 M-POC、M0-M6 与跨阶段治理要求。
判定顺序:当前可运行代码与黄金测试 > docs/ 落地文档 > plan.md 目标态描述。
状态只使用 Done、Partial、Missing;Mock、代理实现和“首切片”不得标为 Done。

1. 当前验证基线

  • GitNexus 当前索引:10,340 个符号、54,203 条关系、300 条执行流(round-66 当前索引)。
  • 黄金测试命令:.\.venv\Scripts\python.exe -X utf8 -m pytest tests/golden -q。
  • Round 66 最终全量黄金为 1029 passed / 2 warnings(最新源码,300.23 秒);post-fix focused 为 80 passed,覆盖源码 Sidecar -I、响应摘要与业务语义假绿负向用例。
  • Round 67(2026-08-20):审批迁移 focused 19 passed;审批相关套件 88 passed;全量黄金三批合计 1065 passed / 1 failed(test_preference_features::test_extract_features_from_world 为 DXF-01 轮已记录的既有失败,与 round-67 无关);ruff、diff-check 通过。
  • Node 60 passed;Web build、ruff、Python compile、Node syntax check、git diff --check 均通过。
  • 实时服务:8003 PID 21576、5173 PID 9808 healthy;浏览器 title=APS 智能排产工作台、root=true、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;这不是现场工厂主数据完成证明。
  • 数据保护: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,不得因本地首切片、源码冒烟或 Mock 证据虚假标记 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.py9 项 +test_param_opt.py` 13 项
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 存量迁移(round-67 R67-B1 收口):grant 只落 token_digest、损坏/schema/记录非法 fail-closed、单事务整体回滚、不可变身份冲突拒绝、单调状态不回退、legacy raw-token 行原子修复/冲突拒绝、history canonical digest 去重、终态 request 重建、APS_APPROVAL_MIGRATION_QUIESCED=1 停写门禁 + 同源锁 + 源 SHA-256 漂移回滚;WORM 归档模拟(audit_ledger 归档即密封 + verify_archive);test_approval_migration.py 19 项 + test_audit_worm.py 7 项 下一 P0:R67-B2 数据库权威时钟与 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 66 focused 80 passed;最终全量黄金 1029 passed / 2 warnings;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 可信试点基线。Windows 求解器 fatal 已在源码/运行层形成子进程隔离与 fail-closed,本地风险收口;冻结产物仍需构建后验收。审批迁移可靠性(R67-B1:digest 归一化、损坏 fail-closed、单事务回滚、quiesced 停写门禁)已于 2026-08-20 本地收口。下一本地优先级调整为:把当前强证据扩展为全量 P2/P3 evidence 封套(SAP outbound、folder.schedule TOCTOU、Automation G4 payload 绑定),以及 R67-B2 数据库权威时钟与 TTL/CAS 跨主机语义。若这些项未闭环,继续扩展真实外部集成会放大不可审计、不可恢复与错误授权风险。

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。