docs: record lateral model checkpoint

This commit is contained in:
梁薄云
2026-08-04 01:06:27 +08:00
parent 0c48a7de7e
commit f5c69c252b
@@ -2,10 +2,10 @@
## Current State ## Current State
- Current stage: 4OSQP solve lifecycle and status mapping - Current stage: 5LS model and geometry validation
- Stage status: Completed - Stage status: Completed
- Current branch: `trajplanner` - Current branch: `trajplanner`
- Last checkpoint commit: `61dfa79` (last Stage 4 functional commit; this file is the Stage 4 checkpoint) - Last checkpoint commit: `0c48a7d` (last Stage 5 functional commit; this file is the Stage 5 checkpoint)
- Protocol design baseline: `554c84f` - Protocol design baseline: `554c84f`
- Implementation-plan baseline: `8dd8ff0` - Implementation-plan baseline: `8dd8ff0`
@@ -24,10 +24,14 @@
| 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. | | 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 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. | | 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 ## Current Verification
- Commands: - 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 $_" } }` - `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 -- optimization`
- `dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- osqp-loader` - `dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- osqp-loader`
@@ -35,9 +39,9 @@
- `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` - `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. - Clean copied plugin bundle: run `EMPlannerVerificationHost.exe osqp-probe` from a separate working directory.
- `git diff --check` - `git diff --check`
- Result: `OsqpNativeSolver` pins input arrays, allocates managed-owned CSC/settings blocks, calls setup/warm-start/solve, copies native solution and information before cleanup, and releases the workspace, blocks and pins in reverse acquisition order. Native statuses 1/2/34/56/7/8/911 map respectively to `Solved`/`SolvedInaccurate`/`PrimalInfeasible`/`DualInfeasible`/`MaximumIterations`/`TimeLimit`/`NativeError`; unknown values also become `NativeError`. All twenty exact `osqp` cycles exited 0 and printed both PASS lines. `optimization`, `osqp-loader`, and all four `all-foundation` groups exited 0. The dependency list is `KERNEL32.dll`, `VCRUNTIME140.dll`, and API-set CRT DLLs only—no MKL, CUDA or external QDLDL. A freshly copied host/plugin bundle run with its working directory elsewhere reported `STATUS=Solved`, `VERSION=1.0.0`, and `SOLVE_CHECKS=PASS`. `git diff --check` had no whitespace diagnostics; immediately before this checkpoint update the staging area was empty and no Stage 4 scope files were uncommitted. - 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. - 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`, and `61dfa79` - Verified commits: `104081e`, `2abb465`, `39c1708`, `a957fda`, `61dfa79`, `c225b17`, `f703d41`, and `0c48a7d`
## Preserved Workspace State ## Preserved Workspace State
@@ -48,27 +52,26 @@
## Decisions Needed ## Decisions Needed
- None. Stage 4 completed within scope. - None. Stage 5 completed within scope.
## Next Stage ## Next Stage
- Stage: 5 — LS model and geometry validation - Stage: 6 — LS SQP and real scenarios
- Readiness: Ready for Stage 5 entry checks after this checkpoint is committed. - 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` - Plan: `docs/superpowers/plans/2026-08-03-em-planner-lateral-ls-implementation.md`
- Tasks: - Tasks:
- Task 1Variable Layout and Exact Discrete Lateral Dynamics - Task 4Sequential Convex Outer Loop and Feasible-Candidate Fallback
- Task 2Normalized Objective and Linear Hard Constraints - Task 5Real-OSQP Lateral Scenarios and Gate
- Task 3 — Nonlinear Geometry Evaluation and Independent Validation
- Entry checks: - Entry checks:
- Confirm branch `trajplanner`, `a957fda` and `61dfa79` are ancestors of `HEAD`, and the Stage 4 progress checkpoint is present. - 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. - 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. - Read the two EM Planner design documents, this progress file, and the lateral-LS implementation plan in full.
- Run `optimization`, `osqp`, and `all-foundation` before Task 1. - Run `lateral-model`, `optimization`, `osqp`, and `all-foundation` before Task 4.
- Keep the OSQP boundary solver-neutral; LS must consume `IQpSolver` rather than native OSQP types. - Keep the OSQP boundary solver-neutral; SQP must consume `IQpSolver` rather than native OSQP types.
- Exit gate: - Exit gate:
- Tasks 13 each have an independent commit and their prescribed RED/GREEN evidence. - Tasks 45 each have an independent commit and their prescribed RED/GREEN evidence.
- Discrete LS dynamics, normalized objective/hard-constraint coefficients, nonlinear geometry evaluation and independent world-space validation all pass. - SQP trust-region/last-feasible fallback tests and fixed real-OSQP lateral scenarios pass; the output uses actual PathS.
- `optimization`, `osqp`, `all-foundation`, LS plan gates and `git diff --check` pass; the staging area is empty; a Stage 5 progress checkpoint is committed alone. - `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 ## Next-Window Prompt
@@ -77,9 +80,9 @@
工作目录:D:\Users\Desktop\项目\prakrobot\ParkingRobot 工作目录:D:\Users\Desktop\项目\prakrobot\ParkingRobot
本窗口只执行阶段 5LS 模型与几何验证。唯一授权范围是: 本窗口只执行阶段 6LS SQP 与真实场景。唯一授权范围是:
`docs/superpowers/plans/2026-08-03-em-planner-lateral-ls-implementation.md` 的 Task 1、Task 2、Task 3 `docs/superpowers/plans/2026-08-03-em-planner-lateral-ls-implementation.md` 的 Task 4、Task 5
不要开始该计划的 Task 4(SQP 外循环)或 Task 5(真实 OSQP 场景),更不要开始 ST、轨迹发布、滚动执行、控制适配、动态障碍物或任何后续阶段。 不要开始 ST、轨迹发布、滚动执行、控制适配、动态障碍物或任何后续阶段。
开始任何检查或编辑前,必须完整读取: 开始任何检查或编辑前,必须完整读取:
1. `docs/superpowers/specs/2026-08-03-em-planner-ls-st-design.md` 1. `docs/superpowers/specs/2026-08-03-em-planner-ls-st-design.md`
@@ -87,13 +90,14 @@
3. `docs/superpowers/progress/em-planner-progress.md` 3. `docs/superpowers/progress/em-planner-progress.md`
4. `docs/superpowers/plans/2026-08-03-em-planner-lateral-ls-implementation.md` 4. `docs/superpowers/plans/2026-08-03-em-planner-lateral-ls-implementation.md`
使用 `executing-plans`、`test-driven-development` 和 `verification-before-completion`;不要使用子代理。只在 `trajplanner` 上工作。Stage 4 的功能提交必须可从 `HEAD` 追溯:`a957fda`(原生 solve/status)与 `61dfa79`后端门禁);随后是本进度文件的独立 Stage 4 checkpoint。若这些提交、进度记录或入口验证任一不一致,停止实施并先报告事实,不要猜测或重做已提交工作。 使用 `executing-plans`、`test-driven-development` 和 `verification-before-completion`;不要使用子代理。只在 `trajplanner` 上工作。Stage 5 的功能提交必须可从 `HEAD` 追溯:`c225b17`LS 模型)、`f703d41`LS QP 装配)与 `0c48a7d`LS 几何验证);随后是本进度文件的独立 Stage 5 checkpoint。若这些提交、进度记录或入口验证任一不一致,停止实施并先报告事实,不要猜测或重做已提交工作。
开始 Task 1 前: 开始 Task 4 前:
- 保存完整 `git status --short` 基线,确认暂存区为空;工作区已有大量与 EM 无关的 Map、CoarsePath、PathSmoothing、报告、文档、项目文件和未跟踪修改,必须完整保留。 - 保存完整 `git status --short` 基线,确认暂存区为空;工作区已有大量与 EM 无关的 Map、CoarsePath、PathSmoothing、报告、文档、项目文件和未跟踪修改,必须完整保留。
- 不得使用 `git add .`、`git add -A`、`git reset --hard`、`git checkout --` 或任何清理命令;每次只用显式路径暂存计划指定文件。 - 不得使用 `git add .`、`git add -A`、`git reset --hard`、`git checkout --` 或任何清理命令;每次只用显式路径暂存计划指定文件。
- 运行以下隔离入口验证,并确认全部退出码为 0: - 运行以下隔离入口验证,并确认全部退出码为 0:
```powershell ```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 -- optimization
dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- osqp dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- osqp
dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- all-foundation dotnet run --project ClumsyPilot/tests/EMPlannerVerificationHost/EMPlannerVerificationHost.csproj -- all-foundation
@@ -102,12 +106,12 @@
实施约束: 实施约束:
- 严格逐任务 TDD:先增加该任务的最小失败检查,观察其因缺少目标行为而失败,再写最小生产代码,并运行计划指定 GREEN 验证。 - 严格逐任务 TDD:先增加该任务的最小失败检查,观察其因缺少目标行为而失败,再写最小生产代码,并运行计划指定 GREEN 验证。
- Task 1、2、3 各自形成独立功能提交;提交前用 `git diff --cached --check` 和 `git diff-tree` 核对文件集合。 - Task 4、5 各自形成独立功能提交;提交前用 `git diff --cached --check` 和 `git diff-tree` 核对文件集合。
- LS 只能通过既有的 solver-neutral `IQpSolver`/`QuadraticProgram` 边界使用 OSQP,不能向 LS 引入 P/Invoke、当前工作目录依赖、UI 或硬件对象。 - LS 只能通过既有的 solver-neutral `IQpSolver`/`QuadraticProgram` 边界使用 OSQP,不能向 LS 引入 P/Invoke、当前工作目录依赖、UI 或硬件对象。
- 不修改无关的 Map、CoarsePath、PathSmoothing、旧 `auto_avoidance` 或 Stage 4 已完成的 OSQP 后端,除非该 LS 计划明确列出且变更为完成 Task 13 所必需。 - 不修改无关的 Map、CoarsePath、PathSmoothing、旧 `auto_avoidance` 或 Stage 4 已完成的 OSQP 后端,除非该 LS 计划明确列出且变更为完成 Task 45 所必需。
阶段结束条件: 阶段结束条件:
- 仅在 Task 13 均有独立提交、各自 RED/GREEN 证据和该计划全部出口验证通过后,运行 `optimization`、`osqp`、`all-foundation`、LS 验收命令及 `git diff --check`。 - 仅在 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`。 - 检查暂存区为空、用户的起始 `git status --short` 修改仍被保留;然后只更新并单独提交 `docs/superpowers/progress/em-planner-progress.md`。
- 最终报告必须给出实际提交、命令/退出码、未处理基线问题,并提供阶段 6(仅 LS Task 45)的精确下一窗口提示词。 - 最终报告必须给出实际提交、命令/退出码、未处理基线问题,并提供阶段 7(仅 ST Task 13)的精确下一窗口提示词。
``` ```