feat: add _Template and New-Engine.ps1 for starting new engines

Each engine-building run started from a hand-copied scaffold (Qwen's),
which carried that engine's name and stale notes. _Template holds the
generic scaffold with a __NAME__ placeholder, and New-Engine.ps1 stamps
out a named copy. The template's starter tests go through the
benchmark's NestValidator, so a model gets a real pass/fail target
instead of a plumbing-only check; they were verified to pass against
Opus55.

Directory.Build.props now also detects when it sits in an Engines/
folder inside an OpenNest checkout, so an engine stamped there with
-IncludeBuildFiles builds without passing OpenNestRoot.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
aj
2026-09-24 10:10:24 -04:00
co-authored by Claude Opus 5.5
parent cfce484952
commit 70ae0cc155
8 changed files with 352 additions and 3 deletions
+5 -3
View File
@@ -4,11 +4,13 @@
OpenNest.Engine.<Name>/ with an optional tests/ subproject; both import this.
AssemblyName and RootNamespace default to the project file name.
Engines build against an OpenNest checkout. By default that is a sibling clone
(../OpenNest next to this repo); override with /p:OpenNestRoot=<path> or an
OpenNestRoot environment variable.
Engines build against an OpenNest checkout, found in this order: /p:OpenNestRoot=<path>
or an OpenNestRoot environment variable; the parent folder, when these build files sit
in an Engines/ folder inside an OpenNest checkout; otherwise a sibling clone
(../OpenNest next to this repo).
-->
<PropertyGroup>
<OpenNestRoot Condition="'$(OpenNestRoot)' == '' and Exists('$(MSBuildThisFileDirectory)../OpenNest.Engine/OpenNest.Engine.csproj')">$(MSBuildThisFileDirectory)../</OpenNestRoot>
<OpenNestRoot Condition="'$(OpenNestRoot)' == ''">$(MSBuildThisFileDirectory)../OpenNest/</OpenNestRoot>
<OpenNestRoot>$([MSBuild]::EnsureTrailingSlash('$(OpenNestRoot)'))</OpenNestRoot>
<TargetFramework>net8.0</TargetFramework>