refactor(engine): align namespaces with directory layout under OpenNest.Engine

All 132 OpenNest.Engine source files now declare namespaces matching
their nested directories: Jobs/, Jobs/Placement/, Jobs/Adapters/,
Fill/, RectanglePacking/, CirclePacking/, and engine-root types moved
from 'OpenNest' to 'OpenNest.Engine'. RootNamespace updated accordingly.
Consumers (Api, Console, Mcp, Benchmark, Training, desktop app, tests)
gained the explicit usings the move requires; CLAUDE.md updated.
This commit is contained in:
aj
2026-09-21 13:18:34 -04:00
parent fd3375cde6
commit 451841401a
114 changed files with 142 additions and 69 deletions
@@ -1,7 +1,7 @@
using System;
using OpenNest.CNC;
namespace OpenNest;
namespace OpenNest.Engine.Jobs.Adapters;
/// <summary>Explicit-ID input mapping and exact supported-geometry reconstruction. Never retains caller objects.</summary>
public static class DrawingJobMapper
@@ -2,7 +2,7 @@ using System;
using System.Collections.Generic;
using System.Threading;
namespace OpenNest;
namespace OpenNest.Engine.Jobs.Adapters;
/// <summary>
/// A fresh private legacy plate/drawing/item graph for each call. Only returned poses cross the boundary;
@@ -4,7 +4,7 @@ using System.Collections.ObjectModel;
using System.Linq;
using OpenNest.Geometry;
namespace OpenNest;
namespace OpenNest.Engine.Jobs.Adapters;
/// <summary>A detached mutable domain nest plus explicit requirement identity (never inferred from names).</summary>
public sealed class MaterializedNestResult
@@ -1,6 +1,6 @@
using System;
namespace OpenNest;
namespace OpenNest.Engine.Jobs;
/// <summary>
/// Bridges legacy <see cref="IProgress{NestProgress}"/> reporting into job progress while a candidate
@@ -1,7 +1,7 @@
using System;
using System.Threading;
namespace OpenNest;
namespace OpenNest.Engine.Jobs;
/// <summary>
/// Adapts one fixed IPlateNester strategy to the whole-job INestingEngine contract, so it can compete
+1 -1
View File
@@ -1,7 +1,7 @@
using System;
using System.Threading;
namespace OpenNest;
namespace OpenNest.Engine.Jobs;
/// <summary>Synchronous whole-job solver. Cancellation throws, rather than returning partial success.</summary>
public interface INestingEngine
+1 -1
View File
@@ -1,7 +1,7 @@
using System;
using System.Threading;
namespace OpenNest;
namespace OpenNest.Engine.Jobs;
/// <summary>Places on one sheet only. Must not change stock, demand, or caller-owned domain objects.</summary>
public interface IPlateNester
+1 -1
View File
@@ -2,7 +2,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
namespace OpenNest;
namespace OpenNest.Engine.Jobs;
/// <summary>One material/unit system's requirements. Collections are copied; all nested values are immutable.</summary>
public sealed class NestJob
@@ -2,7 +2,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
namespace OpenNest;
namespace OpenNest.Engine.Jobs;
/// <summary>Ranks independent plate trials: priority fulfillment, sheet area, placement envelope, then input order.</summary>
public sealed class NestJobCandidateComparer
+1 -1
View File
@@ -1,6 +1,6 @@
using System;
namespace OpenNest;
namespace OpenNest.Engine.Jobs;
/// <summary>Immutable per-job options; selection never changes the legacy global registry.</summary>
public sealed class NestJobOptions
+1 -1
View File
@@ -1,6 +1,6 @@
using System;
namespace OpenNest;
namespace OpenNest.Engine.Jobs;
/// <summary>An immutable requirement, independent of drawing names, UI state, and drawing quantity counters.</summary>
public sealed class NestJobPart
@@ -4,7 +4,9 @@ using OpenNest.Converters;
using OpenNest.Geometry;
using OpenNest.Math;
namespace OpenNest;
using OpenNest.Engine.Jobs.Adapters;
using OpenNest.Engine.Jobs.Placement;
namespace OpenNest.Engine.Jobs;
/// <summary>Validates a trial against immutable job geometry before the runner commits accounting.</summary>
internal static class NestJobPlacementValidator
+1 -1
View File
@@ -1,4 +1,4 @@
namespace OpenNest;
namespace OpenNest.Engine.Jobs;
public enum NestJobStage
{
+1 -1
View File
@@ -1,7 +1,7 @@
using System;
using System.Collections.Generic;
namespace OpenNest;
namespace OpenNest.Engine.Jobs;
public enum NestJobStatus
{
+1 -1
View File
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading;
namespace OpenNest;
namespace OpenNest.Engine.Jobs;
/// <summary>
/// Physical-sheet allocation. Every available stock entry is tried independently and only the selected
+1 -1
View File
@@ -2,7 +2,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
namespace OpenNest;
namespace OpenNest.Engine.Jobs;
/// <summary>Basic input and candidate accounting checks, NOT a geometry/clearance safety gate.</summary>
public static class NestJobValidator
+1 -1
View File
@@ -1,7 +1,7 @@
using System;
using OpenNest.Geometry;
namespace OpenNest;
namespace OpenNest.Engine.Jobs;
/// <summary>Immutable stock settings. Size and spacing are copied value types, not caller-owned settings.</summary>
public sealed class NestPlateStock
+1 -1
View File
@@ -1,6 +1,6 @@
using System;
namespace OpenNest;
namespace OpenNest.Engine.Jobs;
/// <summary>Display metadata plus a fresh-instance factory for one registered whole-job engine.</summary>
public class NestingEngineInfo
@@ -5,7 +5,7 @@ using System.IO;
using System.Linq;
using System.Reflection;
namespace OpenNest;
namespace OpenNest.Engine.Jobs;
/// <summary>
/// Registry of whole-job INestingEngine implementations, parallel to NestEngineRegistry (which is for
+1 -1
View File
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using OpenNest.CNC;
namespace OpenNest;
namespace OpenNest.Engine.Jobs;
/// <summary>Exact immutable CNC motion values. Rapid moves retain contour/hole boundaries; arcs are not tessellated.</summary>
public sealed record PartGeometryMotion(
@@ -3,7 +3,8 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading;
namespace OpenNest;
using OpenNest.Engine.Jobs.Adapters;
namespace OpenNest.Engine.Jobs.Placement;
/// <summary>
/// Migrated built-in placement strategy for the whole-job runner. Reuses <see cref="DefaultNestEngine"/>
@@ -5,7 +5,8 @@ using System.Threading;
using OpenNest.Engine.Fill;
using OpenNest.Geometry;
namespace OpenNest;
using OpenNest.Engine.Jobs.Adapters;
namespace OpenNest.Engine.Jobs.Placement;
/// <summary>Constrained-order linear fills in conservative rectangular free regions.
/// Regions are only search hints; every accepted pose passes the job geometry validator.</summary>
@@ -2,7 +2,8 @@ using System;
using System.Collections.Generic;
using System.Threading;
namespace OpenNest;
using OpenNest.Engine.Jobs.Adapters;
namespace OpenNest.Engine.Jobs.Placement;
/// <summary>
/// Migrated built-in placement strategy for the whole-job runner. Reuses <see cref="StripNestEngine"/>
+1 -1
View File
@@ -1,6 +1,6 @@
using System.Collections.Generic;
namespace OpenNest;
namespace OpenNest.Engine.Jobs;
/// <summary>Owned candidate poses only; not committed fulfillment or inventory accounting.</summary>
public sealed class PlateCandidate
+3 -1
View File
@@ -1,6 +1,8 @@
using System;
namespace OpenNest;
using OpenNest.Engine.Jobs.Adapters;
using OpenNest.Engine.Jobs.Placement;
namespace OpenNest.Engine.Jobs;
/// <summary>
/// Instance-scoped strategy resolution for the whole-job runner. Default and Strip resolve to the
@@ -1,7 +1,7 @@
using System;
using System.Collections.Generic;
namespace OpenNest;
namespace OpenNest.Engine.Jobs;
/// <summary>Read-only stock settings and remaining requirements for a single candidate trial.</summary>
public sealed class PlatePlacementRequest
+1 -1
View File
@@ -1,6 +1,6 @@
using System;
namespace OpenNest;
namespace OpenNest.Engine.Jobs;
public enum RotationPolicyKind
{
@@ -3,7 +3,9 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading;
namespace OpenNest;
using OpenNest.Engine.Jobs.Adapters;
using OpenNest.Engine.Jobs.Placement;
namespace OpenNest.Engine.Jobs;
/// <summary>
/// Caller-stock-only allocation followed by bounded adjacent-sheet repacking. All replacements