From 37c76a720d89f2411a01fae28a70d7655ce41e30 Mon Sep 17 00:00:00 2001 From: AJ Isaacs Date: Sun, 15 Mar 2026 23:55:16 -0400 Subject: [PATCH] docs: address spec review feedback for plate processor design Fix coordinate transforms (translate-only, no rotation), make orchestrator non-destructive (ProcessedPart holds result instead of mutating Part.Program), use readonly structs consistently, add factory mapping and known limitations. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../specs/2026-03-15-plate-processor-design.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/superpowers/specs/2026-03-15-plate-processor-design.md b/docs/superpowers/specs/2026-03-15-plate-processor-design.md index cfcd9eb..2987bf4 100644 --- a/docs/superpowers/specs/2026-03-15-plate-processor-design.md +++ b/docs/superpowers/specs/2026-03-15-plate-processor-design.md @@ -123,6 +123,10 @@ Sequencers that need configuration accept it through their constructor: - `AdvancedSequencer(SequenceParameters parameters)` — row/column grouping config - Directional sequencers and `EdgeStartSequencer` need no configuration +### Factory + +A static `PartSequencerFactory.Create(SequenceParameters parameters)` method in `OpenNest.Engine/Sequencing/` maps `parameters.Method` to the correct `IPartSequencer` implementation, passing constructor args as needed. Throws `NotSupportedException` for `RightSideAlt`. + ## Stage 2: ContourCuttingStrategy Already exists in `OpenNest.Core/CNC/CuttingStrategy/`. Only the signature and return type change: @@ -153,7 +157,7 @@ All coordinates are in plate space. ### RapidPath ```csharp -public struct RapidPath +public readonly struct RapidPath { public bool HeadUp { get; init; } public List Waypoints { get; init; } @@ -272,7 +276,7 @@ public class PlateResult public List Parts { get; init; } } -public struct ProcessedPart +public readonly struct ProcessedPart { public Part Part { get; init; } public Program ProcessedProgram { get; init; } // with lead-ins applied (original Part.Program unchanged)