3.1 KiB
3.1 KiB
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。