Files
ParkingRobot/docs/superpowers/handoffs/em-full-direction-visualization/phase-01.md
T

120 lines
7.1 KiB
Markdown
Raw 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.
# EM 完整方向段规划与可视化修复:阶段 01 交接
## 状态
阻塞。
## 执行环境与入口
- 执行时间:2026-08-06T19:59:49.4938469+08:00Windows / PowerShell.NET 10.0.302 SDK)。
- 仓库:`D:\Users\Desktop\项目\prakrobot\ParkingRobot`
- 入口分支:`trajplanner`
- 入口 HEAD`57ea36b8595c621783aba844e18d9969bccea378``docs: plan staged EM full-direction execution`)。
- 暂存区入口时为空,且在本交接创建前仍为空。
## 前置祖先核验
以下提交均以 `git merge-base --is-ancestor <commit> HEAD` 返回退出码 0
- `c354f113060a5f95aa3b06c6f2b0be2d0c7d5da1``docs: design full-direction EM trajectory visualization repair`
- `dff223c33a439d545537c803cb3531a673c7f2a3``docs: plan full-direction EM visualization repair`
- `46d5f9762d3d9972daea918c9fb43562ce25ce3b``docs: design staged EM full-direction execution`
- `57ea36b8595c621783aba844e18d9969bccea378``docs: plan staged EM full-direction execution`
## 读取与范围
已读取执行、TDD 与完成前验证技能;首次遇到 DLL 文件锁和编译异常后也完整读取并使用系统化调试技能。已读取功能设计第 1–6、9–12 节、总计划 Task 1–2、阶段执行设计第 2–11 节及阶段执行计划的全局约束/公共协议/Phase 01。
本窗口没有实现或提交 Task 1、Task 2。没有实现阶段 02 的自适应 knot/T_end,也没有修改静止起步、MovementTest、Web 或 Painter。
## TDD RED 证据
先在 `FoundationChecks.cs` 添加了 Task 1 所需的 scope、配置、复制、校验、状态和 rolling/full 兼容性测试,再运行:
```powershell
dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- foundation
dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- em-planning-service
```
首次输出包含预期的 `CS0246`/`CS0103``EmPlanningScope` 不存在;同时包含一次非预期的 `TrajectoryPlanningVisualization.dll` 写入锁(`CS2012`)。按系统化调试协议,随后单独重跑 foundation;文件锁未复现,预期的缺少 `EmPlanningScope` 编译错误稳定复现。因此 DLL 锁判定为瞬时外部构建竞争,不能作为本阶段 RED 或阻塞原因。
在仅应用 Task 1 契约/配置/验证的最小实现后,运行:
```powershell
dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- foundation
```
退出码为 1。除本次试探性实现中缺少 `System.Math` 引用外,首个有效范围阻塞是:
```text
ClumsyPilot/ParkrobTrajplanner/tarjplanner_movementtest/TrajectoryObservationPipeline.cs(255,27):
CS7036: EmPlanningRequest(..., EmPlanningScope) 缺少必需 planningScope 参数
ClumsyPilot/ParkrobTrajplanner/EMPlanner/Facade/EmPlanningService.cs(104,32):
CS7036: EmTrajectoryMetadata(..., EmPlanningScope) 缺少必需 planningScope 参数
```
## 阻塞原因与已排除项
总计划 Task 1 明确要求 `EmPlanningRequest``EmTrajectoryMetadata` 增加**必填** `EmPlanningScope` 构造参数、更新**每一个**构造调用,并禁止使用隐式默认值。仓库检索还发现未传播的调用位于:
- `ClumsyPilot/ParkrobTrajplanner/tarjplanner_movementtest/TrajectoryObservationPipeline.cs`(生产调用;阶段 04 文件,明确不属于阶段 01 允许范围)。
- `ClumsyPilot/tests/EMPlannerVerificationHost/CoordinatorChecks.cs`
- `ClumsyPilot/tests/EMPlannerVerificationHost/ExecutorChecks.cs`
- `ClumsyPilot/tests/EMPlannerVerificationHost/TrajectoryChecks.cs`
- `ClumsyPilot/tests/EMPlannerVerificationHost/TrajectoryObservationChecks.cs`
- `ClumsyPilot/tests/EMPlannerVerificationHost/TrajectoryObservationSegmentChecks.cs`
- `ClumsyPilot/tests/EMPlannerVerificationHost/TrajectoryObservationVisualizationChecks.cs`
`EmPlanningService.cs` 是总计划 Task 2 的文件,仍在本窗口总体允许文件清单中;但 `TrajectoryObservationPipeline.cs` 既不在阶段 01 允许清单中,也属于后续阶段 04。要继续只能:
1. 违反“必填且无默认值”的批准接口要求;或
2. 修改后续阶段/范围外文件。
两项均不被批准,因此未继续。未尝试通过默认参数、额外重载或改变接口设计绕过该冲突。
## 已撤销的试探性修改与脏工作区保护
所有本窗口添加的失败测试和试探性 Task 1 生产代码均已用 `apply_patch` 撤销。以下回退核验返回退出码 0,表示这些文件相对 HEAD 无差异:
```powershell
git diff --quiet -- \
ClumsyPilot/ParkrobTrajplanner/EMPlanner/Contracts/EmPlanningRequest.cs \
ClumsyPilot/ParkrobTrajplanner/EMPlanner/Contracts/EmPlanningStatus.cs \
ClumsyPilot/ParkrobTrajplanner/EMPlanner/Contracts/EmTrajectoryMetadata.cs \
ClumsyPilot/ParkrobTrajplanner/EMPlanner/Configuration/SchedulingConfiguration.cs \
ClumsyPilot/ParkrobTrajplanner/EMPlanner/Configuration/LongitudinalConfiguration.cs \
ClumsyPilot/ParkrobTrajplanner/EMPlanner/Configuration/ValidationConfiguration.cs \
ClumsyPilot/ParkrobTrajplanner/EMPlanner/Validation/EmPlanningRequestValidator.cs \
ClumsyPilot/tests/EMPlannerVerificationHost/FoundationChecks.cs
```
已在编辑前保存并在回退后重新检查用户既有的 `EmPlannerConfiguration.cs` 完整 diff。它仍只包含:
- `TimeHorizonSeconds = 6d` 后的中文说明;
- `DistanceHorizonMeters``5d` 改为 `500d` 及中文说明。
这两行未暂存、未提交、未改写。`MovementTest.TrajectoryObservationTest.cs` 的用户既有修改未编辑、未暂存。整个既有脏工作区保持原状;没有使用 `git stash``git reset --hard``git checkout --``git add .``git add -A`
## 提交与验证状态
- Task 1 实现提交:无(阻塞前未创建)。
- Task 2 实现提交:无(未开始)。
- GREEN、`longitudinal-model``em-planning-service` GREEN、`em-core-all`:均未运行成功;原因是批准的必填构造参数无法在阶段 01 允许范围内传播。
- 本交接创建前暂存区为空。
## 安全与兼容性影响
当前分支保持原行为,没有发布任何部分 scope 实现或改变 MovementTest。若强行采用默认 scope,会使旧调用静默选择行为,违反设计中“显式范围、禁止隐式混用”的兼容与安全边界。若修改 `TrajectoryObservationPipeline.cs`,会越过阶段 01 并提前触及阶段 04。
## 精确恢复范围
恢复窗口只能处理这一范围矛盾。开始前必须再次核验入口提交、现有交接提交、脏工作区和暂存区;重新阅读功能设计、总计划 Task 1–2、阶段执行设计与本交接。
在用户明确批准以下任一项之前,不得实现阶段 01:
1. 扩大阶段 01 允许文件,至少包括所有必需的 `EmPlanningRequest`/`EmTrajectoryMetadata` 构造调用传播文件,特别是 `TrajectoryObservationPipeline.cs`;或
2. 修订批准接口,使调用兼容方式不再要求阶段外文件变更。
批准后从 Task 1 的失败测试重新开始,重新收集 RED 证据;不要沿用任何已撤销的试探性实现。阶段 02 仍未实现,且在阶段 01 完成前不得开始。