# V4.3 工程升级与验证

本轮把辅助工具接入了实际项目：SimPy 校验流程，OR-Tools 生成网页消费的调度计划，Rapier/MuJoCo 校验独立机构，Blender 与网页共享布局和可播放模型。范围仍为仓库内部。

## 实际改变

- 缺货订单独立排队并保留，其他库存充足的订单继续释放；按四类来源库存缺口补货。Hercules、Titan 新增实体接收工位及 18 条接驳路径。
- 使用 8 个合成 SKU 的尺寸、重量、易碎属性决定包装兼容性；订单目的地决定对应 Pegasus 装笼线路，拥堵时选择同目的地设备。当前订单为单行 SKU，库存仍按来源池汇总。
- OR-Tools CP-SAT 输出 42 组商品与目的地的分配，网页直接加载并根据实时队列调整。20 秒求解预算返回 FEASIBLE，未证明全局最优，也未复现 Amazon DeepFleet。
- 修复分层连接使用设备中心判断方向的问题，改用实际入口/出口端口，消除一处相反方向输送造成的死锁。
- 统一 521 个资源、725 条路径的数据契约；网页启动时核对布局及计划哈希，防止模型与逻辑分别修改后失配。
- 新增独立升降台接触实验，提供暂停、扰动、重置。Rapier 负责重力、接触、摩擦、升降；MuJoCo 为两关节代表性机构和箱体接触检查。
- 修复实例化设备的回放导出，保留动画节点、部件及米制坐标；过滤轮组剥离后无三角面的空网格，防止导出成无效三角面。新增原生 Geometry Nodes 接收台，跟随相同资源位置。

## 验证结果

| 检查 | 本轮结果 | 能说明什么 |
|---|---|---|
| 网页完整引擎 | 2 小时到达，480/480 单出库，停止到达后于仿真 11790 秒排空 | 此场景无丢单、无残留任务 |
| 货物、料箱 | 质量差额 0，360/360 空箱归还 | 台账守恒；不是现场盘点 |
| 独立 SimPy | 8 个场景，17,280 单完成，包括缺货与 480 单/h 峰值 | 独立聚合排队模型通过；不验证浏览器共享输送段的所有冲突 |
| 位置审计 | 725 条路径，立柱/通行带/升降口/设备占地等已检查类别冲突为 0 | 静态几何范围检查，不是连续刚体碰撞认证 |
| 基础网页模型 | 33,633,768 → 11,791,824 字节，减少 64.9% | 文件缩小，不等于帧率或加载时间同比改善 |
| 几何与变换 | 顶点坐标误差 0；矩阵分量最大差 0.000003815 | 节点与部件保留；写入器微小浮点归零已计量 |
| 可下载 GLB | 70,862,088 字节，校验 0 错误 / 0 警告 | 12 秒可编辑回放，交互改参数仍用网页 |
| Blender 回放 | 1048 个动画对象，跨 8 秒 1014 个实际位姿变化 | 已在 Blender 5.2.1 导入、保存、渲染和逐帧核对 |
| 本地浏览器 | 主仓运动、暂停、单步、订单追踪、手机布局、接触实验通过；0 页面异常 / 0 失败请求 | 实际 Chrome 验收，性能数值仅代表测量条件 |

三种种子的独立模型中，优化策略 P95 分别为 544.26、544.47、540.25 秒，兼容轮询基线为 563.85、565.04、560.84 秒。该比较只能用于此合成聚合模型，不能换算为实际 Amazon 仓库收益。

压缩 GLB 的 Meshopt 扩展不在当前 glTF Validator 的完整支持范围内，因此另外做了解码后的逐节点、逐几何与三角面拓扑比较。三角形循环换序不改变面方向。下载回放为未压缩扩展的标准 GLB，单独校验。

## 使用

- [运行仓内仿真](viewer/)
- [工程验证与下载](viewer/engineering.html)
- [升降与接触实验](viewer/contact-lab.html)
- [当前可编辑 Blender 文件](amazon_fulfillment_interior_v43.blend)
- [当前 GLB 与 12 秒回放](amazon_fulfillment_interior_v43.glb)
- [本轮机器可读证据](engineering-evidence.json)

网页“运行仿真”中可追踪一单、设负荷或故障、导出当前状态及 12 秒回放。合理的设备状态包含等待、堵塞、充电与故障，不以全部设备每一帧都运动作为验收。

## 可复现工具入口

在项目根目录运行；依赖已隔离并记录在 `engineering/requirements.lock` 和 `engineering/package-lock.json`。

```sh
node engineering/export-contract.mjs
engineering/.venv/bin/python engineering/plan_dispatch.py
engineering/.venv/bin/python engineering/validate_flow.py
WAREHOUSE_HOURS=2 node engineering/validate-runtime.mjs
node v4/qa/audit-layout.mjs
node engineering/validate-contact.mjs
engineering/.venv/bin/python engineering/validate-mechanism.py
node engineering/optimize-assets.mjs
```

网页使用 `v4/viewer/export-engineering.js` 生成同步 GLB 后，运行 `FRESH_REPLAY=1 node engineering/prepare-replay.mjs` 与 `engineering/build-synchronized-blend.py`（由 Blender 后台执行）。`engineering/browser-check.js` 为本地/线上浏览器复验入口。模型契约哈希为 `36c42e0ee046153c734039017f3d3e33c55eacf0e95959605204fad4c444a62a`。

专用技能已写入本机 Codex 技能目录：`warehouse-equipment-fidelity`、`warehouse-logistics-validation`、`warehouse-release-gate`；三个 SKILL.md 均通过格式校验。当前会话未必会刷新新技能列表，新会话可按名称调用。

## 仍然存在的还原边界

这是公开设备参考的单层 240×150 m 概念方案，不是某座 Amazon 站点的测绘复刻。Hercules、Sequoia、Titan 等仍有局部示意搬运，尚未替换为完整库位级路网与实测避障调度；没有多行订单合流、完整库存货格、真实班次人员与故障分布。Rapier 仅接入独立工作站；MuJoCo 示例不等于 Vulcan 触觉、真空与视觉系统。STARK 保持试点标识。

未购买商业资产、FlexSim/AnyLogic、Isaac Sim GPU 硬件或付费云服务。需要将项目用于真实产能承诺、控制对接或工程设计时，下一步必须取得测量数据，并开展库位、节拍、失败率与现场规则校准。
