docs: record EM planner Stage 3 checkpoint

This commit is contained in:
梁薄云
2026-08-03 23:52:06 +08:00
parent 39c1708c48
commit 2051827416
@@ -2,10 +2,10 @@
## Current State
- Current stage: 2Foundation coordinates and corridor
- Current stage: 3OSQP contracts and native loading
- Stage status: Completed
- Current branch: `trajplanner`
- Last checkpoint commit: `aa62d6b` (last Stage 2 functional commit; this file is the Stage 2 checkpoint)
- Last checkpoint commit: `39c1708` (last Stage 3 functional commit; this file is the Stage 3 checkpoint)
- Protocol design baseline: `554c84f`
- Implementation-plan baseline: `8dd8ff0`
@@ -19,20 +19,24 @@
| 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. |
## Current Verification
- Commands:
- `dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- foundation`
- `dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- segmentation`
- `dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- frenet`
- `dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- corridor`
- `dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- all-foundation` (run twice, stdout compared exactly)
- `git diff --check`
- `rg -n "NotImplementedException|throw new Exception\(\)" ClumsyPilot/ParkrobTrajplanner/EMPlanner ClumsyPilot/tests/EMPlannerVerificationHost`
- `powershell -ExecutionPolicy Bypass -File ClumsyPilot/ThirdParty/OSQP/build-win-x64.ps1`
- `dumpbin /headers ClumsyPilot/ThirdParty/OSQP/win-x64/osqp.dll`
- `dumpbin /exports ClumsyPilot/ThirdParty/OSQP/win-x64/osqp.dll`
- `dotnet run --no-build --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- optimization`
- `dotnet run --no-build --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- osqp-loader`
- `dotnet run --no-build --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- all-foundation`
- `dotnet build ClumsyPilot/ClumsyPilot.csproj --no-restore`
- Result: `foundation`, `segmentation`, `frenet`, and `corridor` pass. `all-foundation` produced exactly `PASS foundation`, `PASS segmentation`, `PASS frenet`, and `PASS corridor` twice with exit 0 and identical stdout. `git diff --check` and the placeholder scan have no diagnostics. The isolated host may display two pre-existing `TireFollowing` obsolete-API warnings during a cold implicit build; warmed direct runs contain only the four PASS lines and no EM Planner warnings or errors. The normal project build exits 1 only for the existing `auto_avoidance/MultiWheelAutoAvoidance.cs` missing `NetTopologySuite` (3) and `OpenCvSharp` (1) references, plus that legacy file's duplicate-using warning; it has no EM Planner errors.
- Verified commit: `aa62d6b`
- `git diff --check`
- Result: The pinned OSQP package built from tag `v1.0.0` with builtin algebra, shared library, double precision, int32 indices, unpacked settings, and printing/codegen/derivatives disabled. Its DLL is x64; `osqp_version`, `osqp_setup`, `osqp_solve`, and `osqp_cleanup` are exported; and the recomputed SHA-256 exactly matches `SHA256SUMS`. `optimization` and `osqp-loader` pass. The latter uses copied plugin directories to prove missing/corrupt native libraries return structured diagnostics without `BadImageFormatException` escaping, the real library reports `1.0.0`, and 16 concurrent first loads share one handle. `all-foundation` prints `PASS foundation`, `PASS segmentation`, `PASS frenet`, and `PASS corridor`. `git diff --check` has no whitespace diagnostics, and the staging area was empty before this checkpoint update.
- 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`, and `39c1708`
## Preserved Workspace State
@@ -43,61 +47,53 @@
## Decisions Needed
- None. Stage 2 completed within scope.
- None. Stage 3 completed within scope.
## Next Stage
- Stage: 3 — OSQP contracts and native loading
- Readiness: Ready for Stage 3 entry checks.
- Stage: 4 — OSQP solve lifecycle and status mapping
- Readiness: Ready for Stage 4 entry checks.
- Plan: `docs/superpowers/plans/2026-08-03-em-planner-osqp-backend-implementation.md`
- Tasks:
- Task 1Solver-Neutral Sparse QP Contracts
- Task 2Reproducible OSQP 1.0.0 Native Package
- Task 3 — Absolute-Path Native Loader and ABI Structures
- Task 4OSQP Solve Lifecycle and Status Mapping
- Task 5Backend Completion Gate
- Entry checks:
- Confirm branch `trajplanner`, commits through `aa62d6b`, and an empty staging area.
- Confirm branch `trajplanner`, commits through `39c1708`, and an empty staging area.
- Capture `git status --short` before editing and preserve every unrelated user change.
- Confirm the Stage 2 checkpoint content and run `all-foundation` before Task 1.
- Read the OSQP implementation plan and verify its required native-build tools/files before modifying code.
- Read the two EM Planner design documents, this progress file, and the OSQP implementation plan.
- Run `optimization`, `osqp-loader`, and `all-foundation` before Task 4.
- Confirm `CMake`, Visual Studio x64 Build Tools, and `dumpbin` remain available for package checks.
- Exit gate:
- Tasks 13 each have an independent commit and their prescribed RED/GREEN evidence.
- The OSQP contract, reproducible package, absolute-path loader, ABI, and failure diagnostics checks pass.
- `all-foundation` remains passing; normal-project baseline remains separately recorded.
- `git diff --check` is clean; the staging area is empty; a Stage 3 progress checkpoint is committed alone.
- Tasks 4 and 5 each have an independent commit and their prescribed RED/GREEN evidence.
- Feasible and infeasible QPs map to planner-neutral statuses; native workspace allocation/release and repeated loading are stable.
- The clean-plugin-directory loader check, `optimization`, `osqp-loader`, and `all-foundation` pass.
- `git diff --check` is clean; the staging area is empty; a Stage 4 progress checkpoint is committed alone.
## Next-Window Prompt
```text
请继续 ParkingRobot 仓库的 EM Planner 多窗口实施。
Please continue the ParkingRobot repository EM Planner multi-window implementation.
工作目录:D:\Users\Desktop\项目\prakrobot\ParkingRobot
Working directory: D:\Users\Desktop\项目\prakrobot\ParkingRobot
本窗口是阶段 3:OSQP 契约与原生加载,只执行 `docs/superpowers/plans/2026-08-03-em-planner-osqp-backend-implementation.md` 的 Task 13;不得提前执行阶段 4 或后续阶段。
This window is Stage 4: OSQP solve lifecycle and status mapping. Execute only Task 4 and Task 5 of:
docs/superpowers/plans/2026-08-03-em-planner-osqp-backend-implementation.md
Do not start LS, ST, rolling execution, dynamic obstacles, or any later stage.
开始工作前必须完整读取:
Before working, fully read:
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-osqp-backend-implementation.md
执行时使用 executing-planstest-driven-development verification-before-completion 技能,并完整读取对应 SKILL.md。不要使用子代理。
Use executing-plans, test-driven-development, and verification-before-completion. Do not use subagents.
开始前:
- 确认工作目录、分支 `trajplanner`、Stage 12 提交(含 `06687e2`、`2d252ff`、`aa62d6b`)及暂存区为空。
- 保存 `git status --short` 作为结束对照;保留所有既有用户修改,绝不清理、覆盖或顺带提交。
- 核对本进度文件与 Git;若不一致,先诊断并报告。
- 运行 `dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- all-foundation`,必须通过后才开始 Task 1。
- 记录正常项目基线:旧 `auto_avoidance/MultiWheelAutoAvoidance.cs` 缺失 `NetTopologySuite`/`OpenCvSharp` 引用仍可存在,不得通过删除旧功能规避。
Before Task 4, confirm branch trajplanner, commits through 39c1708, an empty staging area, and preserve the saved git status --short baseline. Run:
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
执行要求:
- 严格逐任务 TDD:RED、最小 GREEN、计划指定验证;每项独立提交,只显式暂存计划范围文件。
- 不修改无关 Map、CoarsePath、PathSmoothing 或旧 auto_avoidance。
- 不实现 LS、ST、滚动执行、动态障碍或阶段 4 OSQP solve lifecycle。
- 完成声明前运行计划指定验证和 `git diff --check`。
Use strict per-task TDD, explicit staging, and an independent commit for each task. Do not modify unrelated Map, CoarsePath, PathSmoothing, or legacy auto_avoidance content. The normal-project build's existing auto_avoidance dependency failure is a recorded baseline, not something to fix or bypass.
阶段结束时:
- 完成 Task 1–3 的独立提交和测试证据;执行 OSQP 阶段出口验证,并确认 `all-foundation` 仍通过。
- 按计划记录正常项目基线;暂存区为空。
- 更新并单独提交 `docs/superpowers/progress/em-planner-progress.md`,将 Stage 3 标为 Completed、Stage 4 标为 Ready。
- 返回提交、证据、遗留问题和 Stage 4 提示词。
Before completion, run the plan verification and git diff --check. Update and separately commit this progress file only after Stage 4 is genuinely complete.
```