docs(engines): template on shared services and a determinism rule

New engines start from the shared test kit (the template's tests are a
one-line EngineContractTests subclass) and the host APIs, so they don't
re-derive geometry reading, work areas or validator tolerances.
BENCH-RULES.md now forbids clocks, unseeded randomness and environment
variables from influencing placement (budgets count work; wall time only
through the host's cancellation token) and lists the kit as read-only.
Build-Engines.ps1 deploys only OpenNest.Engine.* folders, and
New-Engine.ps1 -IncludeBuildFiles copies the kit.

Co-Authored-By: Codex <noreply@openai.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
aj
2026-09-25 09:29:28 -04:00
co-authored by Codex Claude Opus 5.5
parent 0cdef009f8
commit 33cc2ee810
8 changed files with 63 additions and 92 deletions
+8 -2
View File
@@ -32,6 +32,12 @@ dotnet test OpenNest.Engine.Opus55/tests/OpenNest.Engine.Opus55.Tests.csproj
Each engine's README covers its algorithm and benchmark results.
`Engine.Testing/` contains shared xUnit contract tests, shapes, job builders and layout
assertions backed by `NestLayoutCheck`. It is a test dependency, not a plugin;
`Build-Engines.ps1` only deploys projects in `OpenNest.Engine.*` directories. All engines
require the shared-services APIs in the sibling host checkout. See
[the PR 5 migration report](MIGRATION-PR5.md) for validation and benchmark results.
## Writing a new engine
```powershell
@@ -41,10 +47,10 @@ Each engine's README covers its algorithm and benchmark results.
This copies `_Template/` to `OpenNest.Engine.Nova/`: an `INestingEngine` stub, a README
spelling out what counts as an independent engine, `BENCH-RULES.md` (how a model's run
works: workspace limits, git, the real-part archive, reporting), and starter acceptance tests checked by
the benchmark's own `NestValidator` (they fail until `Solve()` is implemented).
the shared `NestLayoutCheck` (they fail until `Solve()` is implemented).
To work inside an OpenNest checkout instead, stamp it into an `Engines/` folder there and
bring the shared build files along; they detect that layout automatically:
bring the shared build files and test kit along; they detect that layout automatically:
```powershell
./New-Engine.ps1 -Name Nova -Destination <OpenNest>/Engines -IncludeBuildFiles