aps-agent/docs/round-80-cp-one-at-a-time-r...

37 lines
3.1 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.

# Round 80 CP 整约束 one-at-a-time 重解记录
## 已完成
- solver process 协议升级为 `aps.solver-process.v2`;普通 `optimize_line_assignment` 与诊断 baseline/removal 为独立 operation。
- 普通排产 schema 禁止 relaxed 字段;诊断 baseline 只允许空集合,removal 只允许一个 allowlist 约束,且禁止 warm start。
- 每次诊断请求携带随机 invocationId,requestId 绑定完整请求摘要;响应回显 operation/invocation/relaxed IDs,父进程在所有 solve 状态下校验。
- 诊断固定 `numSearchWorkers=1`、`randomSeed=0`、显式 startDate,并绑定 world/entries/params/objectiveSpec 四类摘要。
- C1/C2/C10/C11/C12-team/C12-tooling 记录实际约束实例数;没有实例的约束不重解。C11 同一 literal 同时控制起点门槛与冻结工单障碍。
- OPTIMAL/OPTIMAL 输出精确整约束移除目标改善;任一 FEASIBLE 只输出 incumbent/bound 改善区间;恢复可行、UNKNOWN、MODEL_INVALID 和单调性违反分别处理。
- 结果明确 `isDualValue=false` / `isUnitMarginalValue=false` / 跨约束不可加;不把整条硬约束移除冒充影子价。
- `cp-marginal.recompute` 使用 JobQueue tenant/project/actor/并发门禁,fixed 轨、日期、时限、约束 allowlist 均在线程创建前 422。
## 安全与失败关闭
- worker 严格检查顶层字段,未知字段、重复/未知/多 relaxed IDs、v1/v2 混跑均拒绝。
- 父进程验证 objective/bestBound/gap、OPTIMAL 零 gap、assumption 分区、active 与实例数、baseline/removal 模型身份。
- 可行基线移除后 INFEASIBLE 或负改善均按单调性违反使整份报告失败关闭;solver error/unavailable 使报告为 partial。
- cancel 在每次子进程前后检查,不会中断正在运行的 child。结果分列 active solve 监督上限 `max(15, timeLimit+12)`、最多 11 秒清理预算及两者相加的取消延迟上限。
- solver child 改为 stdout.buffer 直接写 UTF-8,修复冻结 EXE 中文载荷导致 responseDigest 漂移。
## 验收
- CP marginal 专项 36 passed;协议/CP/Sidecar/Job 扩展回归 144 passed;全量黄金 1435 passed / 5 warnings(497.58 秒);Node 60 passed;Web build 通过。
- 冻结 Sidecar 当前代码重建;父进程指定冻结 EXE 后真实完成 protocol v2 baseline/removal,C2 objective 精确改善 28000。
- 隔离 8020/5190 Web:baseline 1,081,000;C1/C11/C2 精确改善 1,008,000/432,000/28,000;C10/C12 未激活;console warning/error=0。
- 独立协议/数学审计逐项关闭后 `AUDIT PASS`。
- 四个受保护业务文件 SHA-256 前后不变;最终 GitNexus 在完成矩阵回填。
- GitNexus:13,718 nodes / 63,141 edges / 636 clusters / 300 flows;`compare main` 累计 CRITICAL(73 files / 575 symbols / 90 flows)。
## 边界
- 本轮是完整移除单一约束的离散反事实,不是单位 RHS 导数或业务金额价值。
- 下一本地项应对容量/交期等参数做受控 RHS 增量重解,并接现场加班成本、罚则和替代资源价值。
- 仅 fixed CP-SAT 支持;flex 调度仍需独立模型。
- 未 commit、push、merge 或 publish。