docs: snapshot Local G2 detector report order
This commit is contained in:
@@ -1194,14 +1194,26 @@ git commit -m "feat: validate local G2 candidate quality"
|
||||
- Create: `ClumsyPilot/tests/verify_path_smoothing_local_g2_integration.ps1`
|
||||
- Modify: `ClumsyPilot/tests/verify_path_smoothing_service.ps1`
|
||||
|
||||
**Planned imports:**
|
||||
|
||||
```csharp
|
||||
using System.Collections.ObjectModel;
|
||||
```
|
||||
|
||||
**Interfaces:**
|
||||
|
||||
- Consumes: validated request, prepared path and fair raw baseline.
|
||||
- Consumes `LocalG2RegionWorkOrder.TryCreate(...)`; pipeline iteration must not use report-order regions directly.
|
||||
- Publishes region reports in the detector's original ascending order, independently of processing order.
|
||||
- Snapshots detector-order regions into an immutable read-only `reportOrder` before
|
||||
calling `LocalG2RegionWorkOrder.TryCreate(...)`; work-order creation does not
|
||||
mutate this snapshot, and pipeline iteration must not use report-order regions
|
||||
directly.
|
||||
- Publishes region reports by indexed iteration over `reportOrder` in the
|
||||
detector's original ascending order, independently of processing order.
|
||||
- Produces:
|
||||
|
||||
```csharp
|
||||
private readonly LocalG2RegionWorkOrder _workOrder = new LocalG2RegionWorkOrder();
|
||||
|
||||
internal PathSmoothingResult Smooth(
|
||||
PathSmoothingRequest request,
|
||||
PreparedPath preparedPath,
|
||||
@@ -1291,8 +1303,11 @@ Expected: fail because the service cannot resolve `LocalG2Quintic`.
|
||||
Pipeline pseudocode must be implemented directly:
|
||||
|
||||
```csharp
|
||||
IReadOnlyList<LocalG2SmoothingRegion> reportOrder =
|
||||
new ReadOnlyCollection<LocalG2SmoothingRegion>(new List<LocalG2SmoothingRegion>(regions));
|
||||
|
||||
if (!_workOrder.TryCreate(
|
||||
regions,
|
||||
reportOrder,
|
||||
out IReadOnlyList<LocalG2SmoothingRegion> workRegions,
|
||||
out string orderReason))
|
||||
{
|
||||
@@ -1350,9 +1365,9 @@ foreach (LocalG2SmoothingRegion region in workRegions)
|
||||
}
|
||||
}
|
||||
|
||||
var reports = new List<PathSmoothingRegionReport>(regions.Count);
|
||||
for (int reportIndex = 0; reportIndex < regions.Count; reportIndex++)
|
||||
reports.Add(reportsByRegion[regions[reportIndex]]);
|
||||
var reports = new List<PathSmoothingRegionReport>(reportOrder.Count);
|
||||
for (int reportIndex = 0; reportIndex < reportOrder.Count; reportIndex++)
|
||||
reports.Add(reportsByRegion[reportOrder[reportIndex]]);
|
||||
```
|
||||
|
||||
Regions are disjoint after merging, so successful earlier replacements remain when a later region fails.
|
||||
|
||||
Reference in New Issue
Block a user