docs: record EM full-direction phase 09 handoff

This commit is contained in:
梁薄云
2026-08-07 11:32:39 +08:00
parent 88a66b8b2a
commit b76de20faf
@@ -0,0 +1,83 @@
# EM 完整方向段可视化修复 - Phase 09 交接
## 状态
自动验收完成但实车待验(2026-08-07)。本窗口完成了主计划 Task 11 和分阶段执行计划 Task 9 的文档、全量自动化与本地确定性 smoke;受监督实车清单未执行,`phase-09-vehicle.md` 未创建,整体验收不能视为完成。
## 目标与非目标
- 更新 MovementTest、EMPlanner、Web 三份 README,记录 full/rolling 开关、`s_end/T_end` 来源、速度与终端容差、图表语义、缩放、停止清理和 `OBSERVE_ONLY` 边界。
- 提交三份 README 后运行 Node DOM、可视化宿主、`trajectory-observation``em-all`、完整 build、执行器审计、`git diff --check` 和 60 秒本地 smoke。
- 未修改 Web/Painter 实现,未扩展规划功能,未进入 Phase 08 之前实现,未派生子智能体,未重新 brainstorming。
- 未执行实车观察;未把自动化或合成 smoke 证据写成实车验收。
## 入口事实
- 分支:`trajplanner`
- 入口 HEAD`26b6246360dd2ac7e3d54ba57207a753b9bc70a7`
- 上一阶段实现提交:`37c27bdb1b41502ad23783a041a42512b3a49648`
- 上一阶段交接提交:`26b6246360dd2ac7e3d54ba57207a753b9bc70a7`
- 祖先检查:`37c27bd``26b6246` 均为入口 HEAD 的可追溯祖先
- 本阶段文档实现提交:`88a66b8b2a1a4b548d5733d21e94f2fad73df1fe``docs: explain full-direction EM observation`
## 修改文件
- `ClumsyPilot/ParkrobTrajplanner/tarjplanner_movementtest/README.md`
- `ClumsyPilot/ParkrobTrajplanner/EMPlanner/README.md`
- `ClumsyPilot/TrajectoryPlanningVisualization/README.md`
## 文档事实
- `UseFullDirectionSegmentPlanning=true` 是 MovementTest 默认值,映射到 `EmPlanningScope.FullDirectionSegment`;每个活动方向段只发起一次冻结优化,随后重复发布同一轨迹与新鲜观察状态。
- `DistanceHorizonMeters``TimeHorizonSeconds` 只用于 `RollingHorizon` 截断;full 模式保留兼容字段但不使用它们截断。
- `s_end` 来自实际 Local G2 `PathS``T_end` 由可行加速度、巡航、jerk 限速停止和零速 hold 推导。
- 前进期望/硬上限为 `1.0 m/s`,倒车期望/硬上限为 `0.5 m/s`
- 真实边界成功需要终端停止、世界位置误差不超过 `0.03 m`、归一化 yaw 误差不超过 `5 deg``5 * PI / 180 rad`)。
- Web 是主观察界面;Native Painter 仅作为可选正确性/审计输出。
- README 记录了各图轴/单位、jerk `N-1` 规则、语义图层、边界标记和视口缩放;缩放只改变浏览器本地视口,不修改快照或向规划器发送参数。
- 关闭或断开浏览器不会停止观察;MovementTest 停止会回收 HTTP/SSE、端口和可选 Painter。
- MovementTest 不写底盘、转向、制动、电机或挡位命令,全程保持 `OBSERVE_ONLY`
## 自动化证据
| 命令 | 结果 |
| --- | --- |
| `npm test --prefix ClumsyPilot/tests/TrajectoryPlanningVisualizationWebDom` | 11/11 通过 |
| `dotnet run --project ClumsyPilot/tests/TrajectoryPlanningVisualizationVerificationHost/...` | `PASS trajectory-planning-visualization` |
| `dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/... -- trajectory-observation` | `PASS trajectory-observation`,仅两个既有 obsolete 警告 |
| `dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/... -- em-all` | 20 个组件全部 `PASS` |
| `dotnet build ClumsyPilot/ClumsyPilot.csproj -p:ExcludeLegacyAutoAvoidance=true` | 0 警告、0 错误 |
| `rg -n "SendXYThSpeed\|SendMotion\|DriveStop\|PredefinedDriveStop\|AccumulateSpeed\|SetGear\|SetBrake" ClumsyPilot/ParkrobTrajplanner/tarjplanner_movementtest` | 无匹配,退出码 1 |
| `git diff --check` | 退出码 0,无新空白错误;仅仓库既有 LF/CRLF 提示 |
| 本地 smoke `--smoke-seconds 60` | 退出码 0,输出带 token 的 `http://127.0.0.1:1403/...`;结束后 `1403` 无监听 |
测试依赖 `jsdom` 使用 `npm ci` 按锁文件安装,运行后已删除生成的 `node_modules``package.json``package-lock.json` 未改动。
## 警告与已知偏差
- MovementTest UI 字段 `EnableNativePainterVisualization` 当前默认值为 `true`,而 `TrajectoryObservationSettings` 契约默认值为 `false`。文档已如实记录,并要求受监督车辆清单在实车会话前显式设为 `false`,除非另行审查。
- MovementTest UI 字段 `TimeHorizonSeconds` 当前默认值为 `20.0`,而设置契约默认值为 `2.0`full 模式推导 `T_end`,该值仅保留为滚动兼容输入。
- 未进行人工浏览器截图或真实 Painter 窗口检查;自动化证据来自 DOM 测试、C# 契约宿主和确定性 smoke 宿主。
- `trajectory-observation` 保留两个既有 obsolete 警告(`Lidar2dDetect2LegTray.LegWidth``MultiWheelChassis.GetSteerWheels()`),非本阶段引入。
## 保留的脏工作区与暂存内容
入口时已有的 `.gitignore``ClumsyPilot.csproj``EmPlannerConfiguration.cs`、PathSmoothing/CoarsePath 相关修改或删除、未跟踪目录及报告等全部保留,未回退或覆盖。本阶段未修改这些内容;提交 README 后暂存区为空。除本次 `phase-09.md` 外没有新增应跟踪文件。
## 未运行项与原因
- 受监督实车清单未运行:当前无可确认的受监督安全车辆环境。
- `phase-09-vehicle.md` 未创建:设计明确禁止用自动化或合成证据替代实车验收。
- 未进行人工浏览器/截图检查:smoke 仅作为确定性本机宿主证据。
## Phase 09 实车续验事实
下一窗口是 Phase 09 的实车续验窗口,不是新阶段:
- 仓库根目录:`D:\Users\Desktop\项目\prakrobot\ParkingRobot`
- 期望分支:`trajplanner`
- 启动时核对 `88a66b8b2a1a4b548d5733d21e94f2fad73df1fe` 与 Phase 09 handoff 提交均为祖先。
- 必读:本 handoff、主计划 Task 11 Step 4-6、分阶段执行计划 Task 9 Step 5-6;如相关代码在 handoff 后变化,先重跑受影响的自动化。
- 只允许创建 `docs/superpowers/handoffs/em-full-direction-visualization/phase-09-vehicle.md`,不得修改规划、Web、Painter、MovementTest 或 README。
- 按主计划八项清单执行;MovementTest 必须保持 `OBSERVE_ONLY`,不得通过操作真实底盘促成观察条件。
- 全部通过时状态写“完成”,提交消息 `docs: record EM visualization vehicle acceptance`;出现真实回归时状态写“阻塞”,提交消息 `docs: record blocked EM visualization vehicle acceptance`,并只输出同阶段恢复提示词。