diff --git a/OpenNest.Engine.Qwen/OpenNest.Engine.Qwen.csproj b/OpenNest.Engine.Qwen/OpenNest.Engine.Qwen.csproj
deleted file mode 100644
index 1c0be6e..0000000
--- a/OpenNest.Engine.Qwen/OpenNest.Engine.Qwen.csproj
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/OpenNest.Engine.Qwen/QwenNestingEngine.cs b/OpenNest.Engine.Qwen/QwenNestingEngine.cs
deleted file mode 100644
index 8b7bbe6..0000000
--- a/OpenNest.Engine.Qwen/QwenNestingEngine.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-using System;
-using System.Threading;
-using OpenNest.Engine.Jobs;
-
-namespace OpenNest.Engine.Qwen;
-
-///
-/// TODO: name and describe the actual placement strategy here (e.g. "skyline packer with
-/// greedy shelf assignment", "NFP-based sliding placement with simulated-annealing order
-/// search", etc). This must be an independently designed algorithm — see README.md.
-///
-public sealed class QwenNestingEngine : INestingEngine
-{
- public NestJobResult Solve(
- NestJob job,
- IProgress? progress = null,
- CancellationToken token = default
- )
- {
- ArgumentNullException.ThrowIfNull(job);
-
- // TODO: implement independent placement logic here.
- //
- // Do NOT call NestingEngineRegistry.Create(...), PlateNesterFactory, PlateFillService,
- // or any built-in INestingEngine, and do not run several and keep the best. The
- // Fill/ and pattern components (FillLinear, PairFiller, PatternTiler, Compactor, ...)
- // and OpenNest.Core geometry ARE fair game as tools; the decisions are yours.
- //
- // job.Parts -> requested parts (PartGeometrySnapshot geometry, quantity, priority, rotation policy)
- // job.Plates -> candidate stock sheets (size, spacing, quadrant, quantity)
- // job.Options -> job-wide options
- //
- // Return a NestJobResult built from NestJobPlateResult (one per used sheet, holding
- // ordered NestJobPlacement values), PartFulfillment (requested vs placed per part id),
- // and StockUsage (sheets used per stock id).
-
- throw new NotImplementedException(
- "Qwen nesting engine placement logic not yet implemented."
- );
- }
-}
diff --git a/OpenNest.Engine.Qwen/README.md b/OpenNest.Engine.Qwen/README.md
deleted file mode 100644
index 1d843ef..0000000
--- a/OpenNest.Engine.Qwen/README.md
+++ /dev/null
@@ -1,70 +0,0 @@
-# OpenNest.Engine.Qwen
-
-An independent `INestingEngine` implementation. It must not be a wrapper, ensemble, or
-selector over OpenNest's built-in engines. `Solve()` must not call, instantiate, or
-delegate to any existing `INestingEngine` (`StockLadderNestingEngine`,
-`FixedStrategyNestingEngine`), `NestingEngineRegistry`, `NestJobRunner`, or the whole-plate
-nesters/fillers behind `PlateNesterFactory` (`DefaultPlateNester`, `StripPlateNester`,
-`RemnantPlateNester`, `PlateFillService`, `DefaultPlateFiller`, ...). It must also never run
-several of them and keep the best result.
-
-The decisions that make it an engine must be yours: which sheet(s) to use, which parts go
-where and in what order, which pattern/strategy to apply to which region, and when to stop.
-
-## Allowed building blocks
-
-Reuse is encouraged. These are tools you drive, composed by your own decision logic:
-
-- `OpenNest.Core` geometry: `Polygon`, `Shape`, `BoundingBox`, `Vector`, `Box`, `ConvexHull`,
- `ConvexDecomposition`, `RotatingCalipers`, `Collision`, `NoFitPolygon`, `ShapeProfile`,
- `SpatialQuery`.
-- Fill and pattern components in `OpenNest.Engine.Fill`: `FillLinear`, `FillExtents`,
- `PairFiller`, `ShrinkFiller`, `RemnantFiller`/`RemnantFinder`, `Compactor`, `FillScore`,
- `Pattern`/`PatternTiler`, `PartBoundary`, `RotationAnalysis`, `AngleCandidateBuilder`,
- `BestCombination`.
-- `OpenNest.Engine.BestFit` (`BestFitFinder`, `PairEvaluator`, ...), `RectanglePacking`,
- `CirclePacking`.
-
-If you find a faster or better way to do something a shared component already does (for
-example linear patterning), implement it inside this engine's own project and leave the
-shared code untouched. Do not edit `OpenNest.Core` or `OpenNest.Engine`. Call it out in your
-report (what it replaces, why it is better, measured numbers) so it can be generalized and
-upstreamed for every engine later.
-
-## What to fill in
-
-`QwenNestingEngine.cs` — implement `Solve()`. Pick and document an actual
-placement strategy (NFP-based sliding placement, skyline/shelf packer,
-simulated-annealing/genetic layout search, guillotine-cut packer,
-physics/gravity-settling, etc). It's fine to be simpler or worse than the built-in
-engines to start; it must not be the same algorithm re-derived through indirection.
-
-## Build
-
-```bash
-dotnet build OpenNest.Engine.Qwen/OpenNest.Engine.Qwen.csproj
-```
-
-This project is intentionally **outside** `OpenNest.sln` (same pattern as the
-`OpenNest.Engine.Aurora` plugin) — it's discovered at runtime as a plugin, not built
-as part of the main solution.
-
-## Try it out with the benchmark
-
-`OpenNest.Benchmark` auto-loads plugin engines from an `Engines/` folder next to its
-own build output:
-
-```bash
-dotnet build OpenNest.Engine.Qwen/OpenNest.Engine.Qwen.csproj -c Release
-dotnet build OpenNest.Benchmark/OpenNest.Benchmark.csproj -c Release
-
-mkdir -p ../OpenNest/OpenNest.Benchmark/bin/Release/net8.0/Engines
-cp OpenNest.Engine.Qwen/bin/Release/net8.0/OpenNest.Engine.Qwen.dll ../OpenNest/OpenNest.Benchmark/bin/Release/net8.0/Engines/
-
-dotnet ../OpenNest/OpenNest.Benchmark/bin/Release/net8.0/OpenNest.Benchmark.dll
-```
-
-Or build and deploy in one step with `./Build-Engines.ps1 -Engines Qwen`.
-
-Your engine will show up in the report under its CLR type name (`QwenNestingEngine`),
-competing on equal footing against the built-in engines.
diff --git a/OpenNest.Engine.Qwen/tests/OpenNest.Engine.Qwen.Tests.csproj b/OpenNest.Engine.Qwen/tests/OpenNest.Engine.Qwen.Tests.csproj
deleted file mode 100644
index 1deae75..0000000
--- a/OpenNest.Engine.Qwen/tests/OpenNest.Engine.Qwen.Tests.csproj
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
- false
- true
-
-
-
-
-
-
-
-
-
-
-
diff --git a/OpenNest.Engine.Qwen/tests/QwenNestingEngineTests.cs b/OpenNest.Engine.Qwen/tests/QwenNestingEngineTests.cs
deleted file mode 100644
index 4043aee..0000000
--- a/OpenNest.Engine.Qwen/tests/QwenNestingEngineTests.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using System;
-using System.Collections.Generic;
-using OpenNest.Engine.Jobs;
-using OpenNest.Geometry;
-
-namespace OpenNest.Engine.Qwen.Tests;
-
-public class QwenNestingEngineTests
-{
- [Fact]
- public void SolveReturnsAResultForASingleSimplePart()
- {
- // TODO: replace with a real fixture once Solve() is implemented — this only
- // proves the plumbing (project reference, constructor, interface) is wired up.
- var engine = new QwenNestingEngine();
-
- Assert.NotNull(engine);
- Assert.IsAssignableFrom(engine);
- }
-}
diff --git a/README.md b/README.md
index 2d55cc7..d19b692 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,6 @@ the OpenNest app or `OpenNest.Benchmark` build output.
|--------|----------|
| [Gpt6Astra](OpenNest.Engine.Gpt6Astra/) | Contact-based placement |
| [Opus55](OpenNest.Engine.Opus55/) | Frontier-advance no-fit-polygon packing |
-| [Qwen](OpenNest.Engine.Qwen/) | Scaffold — not yet implemented |
## Building