Files
ParkingRobot/docs/superpowers/progress/em-planner-progress.md
T

118 lines
14 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 Planner Execution Progress
## Current State
- Current stage: 5 — LS model and geometry validation
- Stage status: Completed
- Current branch: `trajplanner`
- Last checkpoint commit: `0c48a7d` (last Stage 5 functional commit; this file is the Stage 5 checkpoint)
- Protocol design baseline: `554c84f`
- Implementation-plan baseline: `8dd8ff0`
## Completed Tasks
| Stage | Plan | Tasks | Commits | Verification |
|---:|---|---|---|---|
| 1 | `2026-08-03-em-planner-foundation-implementation.md` | Task 1 — Verification Host and Immutable Contracts | `e12eb31` | RED: `foundation` failed with missing `VehicleMotionState`/`EmTrajectoryPoint`; GREEN: `foundation` printed `PASS foundation` with exit 0. |
| 1 | `2026-08-03-em-planner-foundation-implementation.md` | Task 2 — Configuration, Diagnostics, and Request Validation | `b326431` | RED: `foundation` failed with missing configuration/validation types; GREEN: `foundation` printed `PASS foundation` twice with byte-identical stdout and exit 0. |
| 1 | `2026-08-03-em-planner-foundation-implementation.md` | Task 3 — Direction Segmentation and Exact Boundary Anchors | `e492e16` | RED: `segmentation` failed with missing `ReferencePathSegmenter`; GREEN: `foundation` and `segmentation` each printed their PASS line with exit 0. |
| 2 | `2026-08-03-em-planner-foundation-implementation.md` | Task 4 — Reverse-Safe Frenet Projection and Reconstruction | `06687e2` | RED: `frenet` failed with missing Frenet types including `FrenetProjector`; GREEN: `PASS frenet` with forward/reverse sign, yaw-wrap, bounded U-branch, singular-denominator, and reconstruction checks. |
| 2 | `2026-08-03-em-planner-foundation-implementation.md` | Task 5 — Topology-Preserving Static Corridor | `2d252ff` | RED: `corridor` failed with missing static-corridor types; GREEN: `PASS corridor`, followed by `all-foundation` with all four PASS lines. |
| 2 | `2026-08-03-em-planner-foundation-implementation.md` | Task 6 — Foundation Documentation and Gate | `aa62d6b` | RED: Foundation README was absent; GREEN: README contract scan passed. Placeholder/format scans passed, `all-foundation` passed twice with identical four-line stdout, and the normal-project baseline contained only legacy `auto_avoidance` errors. |
| 3 | `2026-08-03-em-planner-osqp-backend-implementation.md` | Task 1 — Solver-Neutral Sparse QP Contracts | `104081e` | RED: `optimization` failed with missing `SparseTripletBuilder`; GREEN: `PASS optimization` covered deterministic CSC canonicalization, duplicate summation, zero dropping, upper-triangular Hessians, QP validation, and defensive copies. |
| 3 | `2026-08-03-em-planner-osqp-backend-implementation.md` | Task 2 — Reproducible OSQP 1.0.0 Native Package | `2abb465` | RED: the planned package script was absent; GREEN: the fixed-tag build printed `OSQP v1.0.0 win-x64 package ready`. The package contains the pinned DLL, license files, version/build flags, and lowercase SHA-256 manifest; `dumpbin` verified x64 and the four required exports. |
| 3 | `2026-08-03-em-planner-osqp-backend-implementation.md` | Task 3 — Absolute-Path Native Loader and ABI Structures | `39c1708` | RED: `osqp-loader` failed with missing `OsqpNativeLoader`; GREEN: `PASS osqp-loader` verified missing/corrupt DLL diagnostics, real `1.0.0` loading from a copied plugin directory, and one stable handle across 16 parallel first-use calls. |
| 4 | `2026-08-03-em-planner-osqp-backend-implementation.md` | Task 4 — OSQP Solve Lifecycle and Status Mapping | `a957fda` | RED: `osqp-loader` failed with missing `OsqpNativeSolver`; GREEN: fixed bounded, equality, infeasible and one-tick time-limit QPs pass inside a copied clean-plugin process. Status values 111 map to the planner-neutral contract, with finite metrics and captured native status. Twenty exact `osqp` solve/cleanup cycles printed `PASS osqp-solve` and `PASS osqp-loader` on every iteration. |
| 4 | `2026-08-03-em-planner-osqp-backend-implementation.md` | Task 5 — Backend Completion Gate | `61dfa79` | RED: `osqp` was rejected by the verification-host command parser; GREEN: it runs the full solver/loader group. README now records the pinned package, deployment layout, absolute-load rule, ownership and status mapping. `dumpbin /dependents` found only Windows/runtime DLLs; an externally located working directory still loaded a copied clean plugin bundle and solved the micro QPs. |
| 5 | `2026-08-03-em-planner-lateral-ls-implementation.md` | Task 1 — Variable Layout and Exact Discrete Lateral Dynamics | `c225b17` | RED: `lateral-model` failed to build with missing `LateralVariableLayout`; GREEN: `PASS lateral-model` covered contiguous `4N-1` indices, range checks, unequal-S exact integration, station/corridor/start validation, defensive copies, and the lateral result publication contract. |
| 5 | `2026-08-03-em-planner-lateral-ls-implementation.md` | Task 2 — Normalized Objective and Linear Hard Constraints | `f703d41` | RED: `lateral-model` failed to build with missing `LateralObjectiveBuilder`; GREEN: `PASS lateral-model` inspected normalized P/q coefficients with `1e-12` comparisons, exact integration equalities, finite hard bounds, goal/gear versus rolling terminal behavior, empty-intersection early failure, and the solver-neutral fake-QP boundary. |
| 5 | `2026-08-03-em-planner-lateral-ls-implementation.md` | Task 3 — Nonlinear Geometry Evaluation and Independent Validation | `0c48a7d` | RED: `lateral-model` failed to build with missing `LateralGeometryEvaluator`; GREEN: `PASS lateral-model` covered straight and constant-curvature references in forward/reverse, full Frenet curvature, actual strictly increasing PathS, curvature/yaw-rate signs, and rejection of denominator, curvature, non-finite, and independently recomputed world-geometry violations. |
## Current Verification
- Commands:
- `dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- lateral-model`
- `1..20 | ForEach-Object { dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- osqp; if ($LASTEXITCODE -ne 0) { throw "OSQP verification failed on iteration $_" } }`
- `dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- optimization`
- `dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- osqp-loader`
- `dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- all-foundation`
- `C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.44.35207\bin\Hostx64\x64\dumpbin.exe /dependents ClumsyPilot/ThirdParty/OSQP/win-x64/osqp.dll`
- Clean copied plugin bundle: run `EMPlannerVerificationHost.exe osqp-probe` from a separate working directory.
- `git diff --check`
- Result: The Stage 5 `lateral-model` gate exited 0 after all three Task commits. It proves the `4N-1` layout, exact unequal-station dynamics, immutable lateral inputs/results, normalized OSQP-convention P/q assembly, finite hard corridor/derivative/trust/denominator bounds, terminal distinction, full forward/reverse world reconstruction, actual PathS, and independent validation. `optimization`, `osqp`, and all four `all-foundation` groups exited 0. The dependency list remains `KERNEL32.dll`, `VCRUNTIME140.dll`, and API-set CRT DLLs only—no MKL, CUDA or external QDLDL. `git diff --check` had no whitespace diagnostics; immediately before this checkpoint update the staging area was empty and no Stage 5 scope files were uncommitted.
- Normal-project baseline: `dotnet build ClumsyPilot/ClumsyPilot.csproj --no-restore` exits 1 only for the legacy `auto_avoidance/MultiWheelAutoAvoidance.cs` missing `NetTopologySuite` (3) and `OpenCvSharp` (1) references, plus that legacy file's duplicate-using warning. There are no EM Planner errors.
- Verified commits: `104081e`, `2abb465`, `39c1708`, `a957fda`, `61dfa79`, `c225b17`, `f703d41`, and `0c48a7d`
## Preserved Workspace State
- The workspace continues to contain many unrelated Map, CoarsePath, PathSmoothing, project-file, report, and documentation changes. They belong to the user and remain untouched and unstaged.
- Use explicit file paths for every `git add`; never stage the whole workspace.
- The existing user hunk in `ClumsyPilot/ClumsyPilot.csproj` remains preserved. Do not clean, rewrite, or stage it.
- The normal `ClumsyPilot.csproj` build remains blocked by legacy `auto_avoidance/MultiWheelAutoAvoidance.cs` references to `NetTopologySuite` and `OpenCvSharp`; do not delete or bypass legacy functionality to change this baseline.
## Decisions Needed
- None. Stage 5 completed within scope.
## Next Stage
- Stage: 6 — LS SQP and real scenarios
- Readiness: Ready for Stage 6 entry checks after this checkpoint is committed.
- Plan: `docs/superpowers/plans/2026-08-03-em-planner-lateral-ls-implementation.md`
- Tasks:
- Task 4 — Sequential Convex Outer Loop and Feasible-Candidate Fallback
- Task 5 — Real-OSQP Lateral Scenarios and Gate
- Entry checks:
- Confirm branch `trajplanner`, `a957fda`, `61dfa79`, `c225b17`, `f703d41`, and `0c48a7d` are ancestors of `HEAD`, and the Stage 5 progress checkpoint is present.
- Capture `git status --short` before editing and preserve every unrelated user change.
- Read the two EM Planner design documents, this progress file, and the lateral-LS implementation plan in full.
- Run `lateral-model`, `optimization`, `osqp`, and `all-foundation` before Task 4.
- Keep the OSQP boundary solver-neutral; SQP must consume `IQpSolver` rather than native OSQP types.
- Exit gate:
- Tasks 45 each have an independent commit and their prescribed RED/GREEN evidence.
- SQP trust-region/last-feasible fallback tests and fixed real-OSQP lateral scenarios pass; the output uses actual PathS.
- `lateral-integration`, `lateral-all`, `optimization`, `osqp`, `all-foundation`, and `git diff --check` pass; the staging area is empty; a Stage 6 progress checkpoint is committed alone.
## Next-Window Prompt
```text
请继续 ParkingRobot 仓库的 EM Planner 多窗口实施。
工作目录:D:\Users\Desktop\项目\prakrobot\ParkingRobot
本窗口只执行阶段 6:LS SQP 与真实场景。唯一授权范围是:
`docs/superpowers/plans/2026-08-03-em-planner-lateral-ls-implementation.md` 的 Task 4、Task 5。
不要开始 ST、轨迹发布、滚动执行、控制适配、动态障碍物或任何后续阶段。
开始任何检查或编辑前,必须完整读取:
1. `docs/superpowers/specs/2026-08-03-em-planner-ls-st-design.md`
2. `docs/superpowers/specs/2026-08-03-em-planner-windowed-execution-design.md`
3. `docs/superpowers/progress/em-planner-progress.md`
4. `docs/superpowers/plans/2026-08-03-em-planner-lateral-ls-implementation.md`
使用 `executing-plans`、`test-driven-development` 和 `verification-before-completion`;不要使用子代理。只在 `trajplanner` 上工作。Stage 5 的功能提交必须可从 `HEAD` 追溯:`c225b17`LS 模型)、`f703d41`LS QP 装配)与 `0c48a7d`(LS 几何验证);随后是本进度文件的独立 Stage 5 checkpoint。若这些提交、进度记录或入口验证任一不一致,停止实施并先报告事实,不要猜测或重做已提交工作。
开始 Task 4 前:
- 保存完整 `git status --short` 基线,确认暂存区为空;工作区已有大量与 EM 无关的 Map、CoarsePath、PathSmoothing、报告、文档、项目文件和未跟踪修改,必须完整保留。
- 不得使用 `git add .`、`git add -A`、`git reset --hard`、`git checkout --` 或任何清理命令;每次只用显式路径暂存计划指定文件。
- 运行以下隔离入口验证,并确认全部退出码为 0:
```powershell
dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- lateral-model
dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- optimization
dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- osqp
dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- all-foundation
```
- `ClumsyPilot.csproj` 中有既有用户 hunk;正常项目构建仍会因旧 `auto_avoidance/MultiWheelAutoAvoidance.cs` 缺少 `NetTopologySuite` 与 `OpenCvSharp` 失败。不要修改、删除、屏蔽或绕过该旧模块,也不要把它当成 EM 回归。
实施约束:
- 严格逐任务 TDD:先增加该任务的最小失败检查,观察其因缺少目标行为而失败,再写最小生产代码,并运行计划指定 GREEN 验证。
- Task 4、5 各自形成独立功能提交;提交前用 `git diff --cached --check` 和 `git diff-tree` 核对文件集合。
- LS 只能通过既有的 solver-neutral `IQpSolver`/`QuadraticProgram` 边界使用 OSQP,不能向 LS 引入 P/Invoke、当前工作目录依赖、UI 或硬件对象。
- 不修改无关的 Map、CoarsePath、PathSmoothing、旧 `auto_avoidance` 或 Stage 4 已完成的 OSQP 后端,除非该 LS 计划明确列出且变更为完成 Task 4–5 所必需。
阶段结束条件:
- 仅在 Task 45 均有独立提交、各自 RED/GREEN 证据和该计划全部出口验证通过后,运行 `lateral-integration`、`lateral-all`、`optimization`、`osqp`、`all-foundation` 及 `git diff --check`。
- 检查暂存区为空、用户的起始 `git status --short` 修改仍被保留;然后只更新并单独提交 `docs/superpowers/progress/em-planner-progress.md`。
- 最终报告必须给出实际提交、命令/退出码、未处理基线问题,并提供阶段 7(仅 ST Task 1–3)的精确下一窗口提示词。
```