23 KiB
EM Planner Execution Progress
Current State
- Current stage: 7 — ST model and longitudinal optimization
- Stage status: Completed
- Current branch:
trajplanner - Last checkpoint commit:
510bf97(last Stage 7 functional commit; this file is the Stage 7 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 1–11 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. |
| 6 | 2026-08-03-em-planner-lateral-ls-implementation.md |
Task 4 — Sequential Convex Outer Loop and Feasible-Candidate Fallback | f19df53 |
RED: lateral-integration failed to build with missing SequentialConvexOptimizer and LateralPlanner; GREEN: PASS lateral-integration scripted validation-before-fallback, invalid-vector rejection, SolvedInaccurate residual/geometry rejection, 0.05 m trust centering, complete-primal warm starts, five-call cap, cancellation, timeout and facade behavior. |
| 6 | 2026-08-03-em-planner-lateral-ls-implementation.md |
Task 5 — Real-OSQP Lateral Scenarios and Gate | 4d83ed2 |
RED: lateral-all reached the real forward scenario but rejected the empty initial warm start; the subsequent loader diagnosis confirmed the host output bundle intentionally lacks osqp.dll. GREEN: the solver-neutral full initial primal and a clean copied plugin-bundle probe produced PASS lateral-model, PASS lateral-integration, and PASS lateral-real-osqp for deterministic forward/reverse straight, gentle curve, seed-connected obstacle narrowing, gear-switch, and rolling scenarios. |
| 7 | 2026-08-03-em-planner-longitudinal-st-implementation.md | Task 1 — Speed Envelope over Actual PathS | 62ea9db, correction 25742ab | RED: longitudinal-model first failed with missing longitudinal input/speed-envelope types; the sparse stopping chord and then the discrete jerk-release tail checks also failed before refinement. GREEN: PASS longitudinal-model proves actual strictly increasing LS PathS consumption, finite curvature/curvature-rate/stopping limits, stopping-distance precheck, dense actual-PathS stations, and discrete deceleration/jerk tail stations. |
| 7 | 2026-08-03-em-planner-longitudinal-st-implementation.md | Task 2 — Time-Knot Layout, Dynamics, Objective, and Hard Constraints | c01d0d5 | RED: longitudinal-model failed with missing ST candidate/layout/constraint types. GREEN: PASS longitudinal-model inspects normalized objective coefficients, solver-neutral QuadraticProgram assembly, exact constant-jerk dynamics, monotonic progress, finite physical bounds, exact start state, and hard terminal s_N/u_N. |
| 7 | 2026-08-03-em-planner-longitudinal-st-implementation.md | Task 3 — Longitudinal Outer Loop and Strict Validation | 510bf97 | RED: longitudinal-integration failed first with missing optimizer/validator/facade types; focused checks then exposed invalid fallback acceptance, sparse envelope probes, noncanonical endpoints, and loss of a strictly validated initial seed on immediate timeout. GREEN: PASS longitudinal-integration covers scripted statuses, strict residual/physical validation, deep-copy last-feasible fallback, complete-primal warm starts, the five-iteration cap, cancellation, and deterministic real OSQP forward/reverse/curvature/jerk-stop/short/zero-start scenarios in a clean copied plugin bundle. |
Current Verification
- Commands:
dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- longitudinal-modeldotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- longitudinal-integrationdotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- lateral-integrationdotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- lateral-alldotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- lateral-model1..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 -- optimizationdotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- osqp-loaderdotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- all-foundationC:\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-probefrom a separate working directory. git diff --check
- Result: The Stage 5
lateral-modelgate exited 0 after all three Task commits. It proves the4N-1layout, 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 fourall-foundationgroups exited 0. The dependency list remainsKERNEL32.dll,VCRUNTIME140.dll, and API-set CRT DLLs only—no MKL, CUDA or external QDLDL.git diff --checkhad no whitespace diagnostics; immediately before this checkpoint update the staging area was empty and no Stage 5 scope files were uncommitted. - Result: Stage 6 exit commands all exited 0 at
4d83ed2:lateral-integration;lateral-all(model, scripted SQP, and clean-plugin real OSQP groups);optimization;osqp;all-foundation; andgit diff --check. The real OSQP gate runs every fixed scenario twice and compares status, point count, and all lateral-path numeric fields within1e-10; the obstacle scenario stays in the negative, seed-connected corridor interval. The LS implementation remains dependent only onIQpSolver/QuadraticProgram; no LS P/Invoke, UI, hardware object, or current-working-directory dependency was added. - Result: Stage 7 exit commands all exited 0 from the repository root at
510bf97:longitudinal-model;longitudinal-integration;lateral-integration;lateral-all;optimization;osqp;all-foundation; andgit diff --check. ST consumes only actual LSPathSand reaches OSQP only throughIQpSolver/QuadraticProgram; no ST P/Invoke, UI, hardware object, or current-working-directory dependency was added. The jerk-stop case retains only the independently validated initial seed when OSQP reaches its 4000-iteration limit; the timed-out solver vector is not accepted. - Baseline note: invoking the pre-existing
lateral-alltest from theClumsyPilotsubdirectory fails its pinned-DLL lookup because that Stage 6 test constructs the source path fromDirectory.GetCurrentDirectory(). Running the documented command from the repository root exits 0. Stage 7 does not modify or bypass the completed LS test. - Normal-project baseline:
dotnet build ClumsyPilot/ClumsyPilot.csproj --no-restoreexits 1 only for the legacyauto_avoidance/MultiWheelAutoAvoidance.csmissingNetTopologySuite(3) andOpenCvSharp(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,0c48a7d,f5c69c2,f19df53,4d83ed2,62ea9db,c01d0d5,25742ab, and510bf97
Preserved Workspace State
- The workspace continues to contain the same unrelated Map, CoarsePath, PathSmoothing, project-file, report, and documentation changes captured at Stage 6 entry. 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.csprojremains preserved. Do not clean, rewrite, or stage it. - The normal
ClumsyPilot.csprojbuild remains blocked by legacyauto_avoidance/MultiWheelAutoAvoidance.csreferences toNetTopologySuiteandOpenCvSharp; do not delete or bypass legacy functionality to change this baseline.
Decisions Needed
- None. Stage 7 completed within scope.
Prior Stage 7 Entry Record
- Stage: 7 — ST model and longitudinal optimization
- Readiness: Ready for Stage 7 entry checks after this checkpoint is committed.
- Plan:
docs/superpowers/plans/2026-08-03-em-planner-longitudinal-st-implementation.md - Tasks:
- Task 1 — Speed Envelope over Actual PathS
- Task 2 — Time-Knot Layout, Dynamics, Objective, and Hard Constraints
- Task 3 — Longitudinal Outer Loop and Strict Validation
- Entry checks:
- Confirm branch
trajplanner,a957fda,61dfa79,c225b17,f703d41,0c48a7d,f5c69c2,f19df53, and4d83ed2are ancestors ofHEAD, and the Stage 6 progress checkpoint is present. - Capture
git status --shortbefore editing and preserve every unrelated user change. - Read the two EM Planner design documents, this progress file, and the longitudinal-ST implementation plan in full.
- Run
lateral-integration,lateral-all,optimization,osqp, andall-foundationbefore Task 1. - ST must consume actual, strictly increasing LS
PathSand keep the OSQP boundary solver-neutral throughIQpSolver.
- Confirm branch
- Exit gate:
- Tasks 1–3 each have an independent commit and their prescribed RED/GREEN evidence.
- The actual-PathS speed envelope, stopping precheck, ST dynamics/QP, and strict longitudinal validation pass.
- The Stage 7 plan's full exit gate and
git diff --checkpass; the staging area is empty; a Stage 7 progress checkpoint is committed alone.
Prior Stage 7 Window Prompt (Historical)
请继续 ParkingRobot 仓库的 EM Planner 多窗口实施。
工作目录:D:\Users\Desktop\项目\prakrobot\ParkingRobot
本窗口只执行阶段 7:ST 模型与纵向优化。唯一授权范围是:
`docs/superpowers/plans/2026-08-03-em-planner-longitudinal-st-implementation.md` 的 Task 1、Task 2、Task 3。
不要开始轨迹发布、单次规划服务、滚动执行、控制适配、动态障碍物或任何后续阶段。
开始前必须完整读取:
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-longitudinal-st-implementation.md`
使用 `executing-plans`、`test-driven-development` 和 `verification-before-completion`;不要使用子代理。只在 `trajplanner` 上工作。Stage 4–6 提交必须可从 `HEAD` 追溯:`a957fda`、`61dfa79`、`c225b17`、`f703d41`、`0c48a7d`、`f5c69c2`、`f19df53` 和 `4d83ed2`;随后是本进度文件的独立 Stage 6 checkpoint。若这些提交、进度记录或入口验证任一不一致,停止实施并先报告事实,不要猜测或重做已提交工作。
开始 Task 1 前:
- 保存完整 `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-integration
dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- lateral-all
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 1、2、3 各自形成独立功能提交;提交前用
git diff --cached --check和git diff-tree核对文件集合。 - ST 只能消费 LS 输出的实际、严格递增
PathS,并且只能通过既有 solver-neutralIQpSolver/QuadraticProgram边界使用 OSQP;不能向 ST 引入 P/Invoke、当前工作目录依赖、UI 或硬件对象。 - 不修改无关的 Map、CoarsePath、PathSmoothing、旧
auto_avoidance、已完成 LS 或 OSQP 后端;不实现轨迹发布、滚动执行、控制适配或动态障碍物。
阶段结束条件:
- 仅在 Task 1–3 均有独立提交、各自 RED/GREEN 证据和该计划全部出口验证通过后,运行 Stage 7 规定的 LS/ST/优化/OSQP/Foundation 回归及
git diff --check。 - 检查暂存区为空、用户的起始
git status --short修改仍被保留;然后只更新并单独提交docs/superpowers/progress/em-planner-progress.md。 - 最终报告必须给出实际提交、命令/退出码、未处理基线问题,并提供阶段 8(仅轨迹发布与单次规划服务 Task 4–6)的精确下一窗口提示词。
## Next Stage
- Stage: 8 — complete trajectory publication and pure one-shot planning service
- Readiness: Ready for Stage 8 entry checks after this checkpoint is committed.
- Plan: `docs/superpowers/plans/2026-08-03-em-planner-longitudinal-st-implementation.md`
- Authorized tasks only:
- Task 4 — Complete Trajectory Assembly and Redundant-Field Consistency
- Task 5 — Independent World-Space Publication Validator
- Task 6 — Pure One-Shot EmPlanningService
- Explicit exclusions: rolling execution, controller adaptation, dynamic obstacles, UI/hardware integration, and every later phase.
## Next-Window Prompt
```text
请继续 ParkingRobot 仓库的 EM Planner 多窗口实施。
工作目录:D:\Users\Desktop\项目\prakrobot\ParkingRobot
本窗口只执行阶段 8:完整轨迹发布与纯单次规划服务。唯一授权范围是:
docs/superpowers/plans/2026-08-03-em-planner-longitudinal-st-implementation.md 的 Task 4、Task 5、Task 6。
不要开始滚动执行、控制适配、动态障碍物、UI/硬件集成或任何后续阶段。
开始前必须完整读取:
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-longitudinal-st-implementation.md
使用 executing-plans、test-driven-development 和 verification-before-completion;不要使用子代理。只在 trajplanner 上工作。
开始 Task 4 前:
- 确认 a957fda、61dfa79、c225b17、f703d41、0c48a7d、f5c69c2、f19df53、4d83ed2、62ea9db、c01d0d5、25742ab、510bf97 以及紧随其后的 Stage 7 进度 checkpoint 均可从 HEAD 追溯。
- 保存完整 git status --short 基线,确认暂存区为空,并保留所有既有用户修改。
- 从仓库根目录运行并确认退出码为 0:longitudinal-model、longitudinal-integration、lateral-all、optimization、osqp、all-foundation。
- 不使用 git add .、git add -A、清理命令或破坏性 Git 命令;每次仅显式暂存计划指定文件。
- 不修复、删除、屏蔽或绕过旧 auto_avoidance/MultiWheelAutoAvoidance.cs 基线依赖失败。
- 已完成的 Stage 6 lateral-all 测试夹具使用当前工作目录定位固定 DLL,因此必须从仓库根目录运行;不要修改已完成 LS 来改变该基线。
执行要求:
- 严格逐任务 TDD;Task 4–6 各自独立提交,提交前运行 git diff --cached --check,并用 git diff-tree 核对范围。
- Task 4 只创建 EMPlanner/Trajectory 下的轨迹组装代码、TrajectoryChecks.cs,并修改验证宿主 Program.cs。必须保证方向符号、速度分量、yaw rate、严格递增时间、不递减 PathS、精确零速终端及 0.20 s hold tail 一致。
- Task 5 只创建 EmTrajectoryValidator.cs 并修改 TrajectoryChecks.cs。必须独立重算运动学与冗余字段,使用姿态和 0.025 m 最大步长的 swept collision 检查,不得把求解器状态当成发布证据。
- Task 6 只创建 IEmPlanningService.cs、EmPlanningService.cs、EmPlanningServiceChecks.cs,并修改 Program.cs 与 EMPlanner/README.md。按计划规定的唯一顺序组织纯 Plan(request, cancellationToken) 管线,使用请求时间戳,不读系统时钟,不发布部分求解向量,不修改请求所有的列表。
- 只能通过 IQpSolver/QuadraticProgram 使用 OSQP;禁止新增 P/Invoke、当前工作目录依赖、UI 或硬件对象。
- 不修改无关 Map、CoarsePath、PathSmoothing、旧 auto_avoidance、已完成 LS/ST/OSQP 后端;不实现滚动执行、控制适配或动态障碍物。
阶段结束时:
- 仅在 Task 4–6 均有独立 RED/GREEN 证据和计划出口验证后,连续两次运行 em-core-all,并运行 longitudinal-model、longitudinal-integration、lateral-all、optimization、osqp、all-foundation 及 git diff --check。
- 确认暂存区为空、起始用户修改仍保留;只更新并单独提交 docs/superpowers/progress/em-planner-progress.md。
- 返回提交、RED/GREEN 证据、命令/退出码、未处理基线问题,并明确停在 Task 6。