aps-agent/docs/round-83-c3-calendar-segmen...

38 lines
3.9 KiB
Markdown
Raw Permalink Normal View History

# Round 83:C3 班次日历分段 CP 模型
## 目标
把 operation-level CP-SAT 从连续分钟轴升级为真实班次有效窗口模型:工序只能在扣除休息段后的工作窗口内加工,长工序可在窗口边界暂停并跨班续作;同时把 C3 整约束移除诊断、父子进程拓扑校验、物化偏差阻断和真实 Web 诊断收口。
## 模型语义
- `cp-calendar-segmented.v1` 以 shiftCalendar 的有效窗口为加工域,扣除休息段、非工作日和无效覆盖;正常模式为 `calendar-boundary-only`。
- 长工序按多个 processing segment 表达,只能在窗口边界暂停/续作;`operationSlots` 输出 `segments`、`processingMinutes`、`elapsedSpanMinutes`、`pauseMinutes`、`segmentCount`、`calendarCompliant` 和 `calendarMode`。
- C1 使用逻辑工序包络维持先后序;C2 与 C12 使用实际 processing segments。C2 按逻辑工序身份计实例,同一工序的多个段不会互相误判为资源冲突。
- C3 removal 使用互斥的 `continuous` 模式,恢复单个连续区间;baseline/removal 共用相同输入与模型拓扑,只有 `selectedMode` 和 `active` 按预期变化。
- C7 保持 `start-day-full-duration.v1`:仍按逻辑工序开工日整笔记账,不在本轮迁移自然日分摊、RHS 或现场费率语义。
- 日历 segment selector 估算超过 50,000 时失败关闭,避免诊断请求形成不可控模型规模。
## 协议与失败关闭
- C3 元数据绑定 anchor、horizon、coverage、`normalizedCalendarDigest`、bucket/window/segment 数、模型 identity 和 segment 上限。
- solver parent 对 protocol v2 的 baseline/removal 响应逐字段校验;digest、拓扑、模式、assumption、operation 或 invocation 任一漂移均拒绝。
- 主求解不固定启发式 hint。仅当第一次求解返回 UNKNOWN 时,才允许使用已验证的固定可行 hint 做 fallback;触发状态和时间均写入 `solverMeta`。
- 现阶段 Rule 仍负责最终物化,尚未直接消费 CP segments。`materializedC3Validation.cpTimingApplied=false`;连续物化若跨休息或停工窗口,会产生 `CALENDAR` / `C3_calendar` 硬冲突并关闭 publish/dispatch,但保留原 CP solve status。
## 验收
- C3 专项:`11 passed / 1 warning`。
- CP/协议/诊断扩展回归:`245 passed / 1 warning`;独立审计聚焦:`117 passed / 1 warning`,4 项 P0/P1/P2 findings 全部关闭,`AUDIT PASS`。
- 全量黄金:首次发现累积工作区 `PoolEngine` 未接受已声明的 `KITTING_FIRST/SKILL_FIRST`,最小修复后原失败 `3 passed`、Pool/Flex/导出相邻回归 `62 passed / 1 warning`,最终 `1522 passed / 5 warnings`。
- Node:`60 passed`;Web build:4,853 modules,通过,仅既有大 chunk 提示。
- 冻结 Sidecar:CPython 3.13.12、OR-Tools 9.15.6755;`aps-sidecar.exe` 23,897,019 bytes,SHA-256 `F2DB84E8C8D1D7F834165C5DFB902ECE94435D31D64D849D16673E6DABCEC2A7`。真实 protocol v2 baseline 为 2 段/暂停 60 分钟/`calendar-boundary-only`,removal 为 1 段/暂停 0/`continuous`,二者 `runtimeSafe=true`、拓扑一致。
- 隔离 Web `18183/15183`:真实任务显示 C3 有界改善 `[0, 489,000]`;API baseline `FEASIBLE`、removal `OPTIMAL`,digest、87 buckets、每线 80 windows、3,040 segment intervals 一致,console warning/error 为 0。临时端口已关闭,主 `8003/5173` 及前端代理均 HTTP 200。
- 四个受保护业务文件在本轮最终全量与隔离验证前后 SHA-256 一致;`server/data/**` 与 `.env` 无 Git 状态。
## 边界
- CP segments 尚未作为 Rule 物化的唯一时间事实源;下一本地优先级是经验证地直接物化 CP 时间,同时保持工单、资源、发布和回滚契约。
- 真实 MySQL 多主机、MES/WMS/SAP 厂商联调、现场费率/罚则、签名、Defender 和干净离线机仍需外部环境或业务输入。
- 未提交、推送、合并或发布。