diff --git a/docs/superpowers/handoffs/em-full-direction-visualization/phase-08.md b/docs/superpowers/handoffs/em-full-direction-visualization/phase-08.md new file mode 100644 index 0000000..a0dee69 --- /dev/null +++ b/docs/superpowers/handoffs/em-full-direction-visualization/phase-08.md @@ -0,0 +1,82 @@ +# EM 完整方向段可视化修复 - Phase 08 交接 + +## 状态 +完成(2026-08-07)。 + +## 目标与非目标 +完成主计划 Task 10、分阶段执行计划 Task 8:Native Painter 几何与语义修复。 +实现世界路径 x/y 等比例、LS 横轴 `ReferenceS (m)`、ST 纵轴真实 `PathS (m)`、小车轮廓与细朝向线、`s_end`/换向/最终目标语义。 +未进入 Task 11 或 Phase 09;未修改 Web 或规划器;未做跨段规划扩展、实车操作或 Painter 重设计。 +MovementTest 保持 `OBSERVE_ONLY`,本阶段未新增底盘、转向、制动、电机或换挡写输出。 + +## 入口事实 +- 分支:`trajplanner` +- 入口 HEAD:`d019b080746a083fc3c655e21b229e082051706a`(Phase 07 handoff) +- 上一阶段实现提交:`8a51629edbe682de8a0fd30a82894e0420ac6c86` +- 祖先检查:`8a51629` 与 `d019b08` 均为入口 HEAD 可追溯祖先 +- 入口暂存区为空;既有脏工作区与未跟踪内容全部保留 + +## 实现提交 +`37c27bdb1b41502ad23783a041a42512b3a49648` - `fix: correct EM observation painter geometry` + +仅提交白名单文件: +- `ClumsyPilot/ParkrobTrajplanner/tarjplanner_movementtest/TrajectoryObservationPresentation.cs` +- `ClumsyPilot/tests/EMPlannerVerificationHost/TrajectoryObservationChecks.cs` +- `ClumsyPilot/tests/EMPlannerVerificationHost/TrajectoryObservationVisualizationChecks.cs` + +## 新接口与语义 +- `TrajectoryObservationLsPresentationModel.HorizontalAxisLabel` 为 `ReferenceS (m)`,`VerticalAxisLabel` 为 `l (m)`。 +- `DrawPose` 接受 `VehicleParameters`,按车辆长宽绘制四角旋转轮廓,并用 `endArrow: false` 绘制长度不超过半车长的细朝向线。 +- 世界路径使用同一 `MillimetersPerMeter` 转换 x/y;粗路径、Local G2、当前轨迹线宽收窄。 +- `DrawBoundaryMarkers` 绘制换向点 `换向点 N / s_end`(小菱形)与最终目标 `终点 / s_end`(小叉形),车辆标记为 `车辆`,计划起点为 `计划起点`。 +- ST Painter 增加 `t (s)` 与 `PathS (m)` 轴标签。 +- 未新增 Painter 图层、主题或生命周期;三个 Painter 窗口与清理路径保持原状。 + +## RED 证据 +先写入 Task 10 失败测试,再执行: +```powershell +dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- trajectory-observation +``` + +首次有效失败: +`observer painter removes the large terminal arrow was false` +位置:`TrajectoryObservationChecks.VerifiesPainterPoseGeometryReplacesLargeArrow`。 +确认 RED 是当前 Painter 仍使用旧的大终端箭头,而不是环境或测试自身错误。 + +期间测试新增的 `using System.Text` 编译缺失已修复,修复后重新取得上述行为 RED。 + +## GREEN / 回归证据 +```powershell +dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- trajectory-observation +rg -n "SendXYThSpeed|SendMotion|DriveStop|PredefinedDriveStop|AccumulateSpeed|SetGear|SetBrake" ClumsyPilot/ParkrobTrajplanner/tarjplanner_movementtest +git diff --check +``` + +- `trajectory-observation`:退出码 0,输出 `PASS trajectory-observation` +- 执行器审计:无匹配(命令无输出,退出码 1) +- `git diff --check`:退出码 0,仅仓库既有 LF/CRLF 提示,无新空白错误 + +## 执行器审计与清理 +MovementTest/observer 运行时源未出现任何指定执行器写调用。 +实现提交仅显式暂存上述 3 个白名单文件;提交后 `git diff --cached --name-only` 为空。 +未执行 `git reset --hard`、`git checkout --`、`git clean`、`git add .` 或 `git add -A`。 + +## 保留的脏工作区 +入口时已存在的 `.gitignore`、`ClumsyPilot.csproj`、`EmPlannerConfiguration.cs`、PathSmoothing/CoarsePath 修改或删除、未跟踪目录及报告等全部保留,本阶段未触碰。 + +## 已知警告与偏差 +- 构建输出保留两个既有 obsolete 警告:`Lidar2dDetect2LegTray.LegWidth` 与 `MultiWheelChassis.GetSteerWheels()`。 +- `git diff --check` 持续输出仓库既有 LF/CRLF 提示,不影响本阶段空白检查结论。 +- 本阶段未做真实 Painter 窗口截图或浏览器人工验证;自动化验证为源码/模型检查。 + +## 未运行项 +- 未进入 Phase 09 文档、全量自动化、本地 Web smoke 或实车验收。 +- 未运行 `em-core-all`、`em-all`、Node DOM 测试或可视化验证宿主。 +- 未重跑 Phase 07 Web 验证;本阶段未修改 Web 文件。 + +## Phase 09 事实 +- 下一阶段:Phase 09,对应主计划 Task 11、分阶段执行计划 Task 9。 +- 允许修改:MovementTest/EMPlanner/Web 三个 README;创建 `docs/superpowers/handoffs/em-full-direction-visualization/phase-09.md`;实车验收通过后才创建 `phase-09-vehicle.md`。 +- Phase 09 自动验收命令包括 Node DOM 测试、可视化宿主、`trajectory-observation`、`em-all`、完整 build、执行器审计和 `git diff --check`。 +- 无监督安全环境时,Phase 09 自动窗口状态写 `自动验收完成但实车待验`,不得声称整体完成。 +- 本 handoff 提交的真实哈希由 Phase 09 调用方在最终回答中提供。