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

38 lines
3.9 KiB
Markdown
Raw Permalink 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 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 和干净离线机仍需外部环境或业务输入。
- 未提交、推送、合并或发布。