Author a Mesh Model Test Case
Scaffold an asset-generation test case for
a static meshed model: a model composites a continuous signed-distance field of
CSG primitives and meshes it with the mc, sn, or dc binary, one recorded
operation at a time. Read
Authoring a Mesh Model Test Case
for the full procedure;
Voxel cases is the
authoritative schema.
For a rigged, animated mesh see Author a Mesh Animation Test Case. For discrete cube voxels see Author a Voxel Model Test Case.
Layout
Section titled “Layout”A version lives at
test-cases/asset-generation/<difficulty>/<slug>/<version>/. A version with runs
recorded against it is frozen; revise a case by adding a new version.
test-cases/asset-generation/<difficulty>/<slug>/<version>/ test-case.toml # manifest: type, asset_kind, voxel, tool, output variants/ # one standalone TOML file per variant prompt.hbs # rendered into the harness instruction; not seeded changelog.md # required per-version entry; not seeded description.md # site blurb; not seeded specs/brief.md # what to sculpt and how the tool behaves; seededA run seeds the brief, <binary>.config.json, an empty action log, and a blank
preview, with the meshing binary on PATH. Its --help is the operation
contract. The case declares no [[reference]] and carries no target model.
- Pick a catalog slug and the subject to sculpt. It should read clearly at the
volume size from silhouette and palette alone and be achievable by
compositing CSG primitives with
add-*,subtract-*,--blend, andmirror. - Pick the algorithm for the surface you want. It fixes both
asset_kindand[tool].binary:mcfor a low-poly faceted surface,snfor a smooth watertight one,dcfor crisp sharp edges. Onlydcexposes the per-primitive--sharptag that preserves a primitive’s edges and corners. The algorithm is a property of the whole version rather than a variant axis. - Write
specs/brief.md: the subject, silhouette, orientation, the exact opaque#rrggbbpalette, the volume, and which extractor meshes the field. State the extractor’s behavior factually and leave the look to the model. Keep the brief self-contained. - Write
prompt.hbs. It renders in strict mode against{{variant.*}},{{#each specs}},{{workspace}},{{time_limit_hours}}, and{{voxel.*}}. Point the model at the binary’s--helpand require arenderbefore finishing so the mesh is emitted. - Write
test-case.toml: metadata (name,difficulty,tagsincluding3d,mesh, and the algorithm), the requiredchangelog,type = "asset-generation",asset_kind("mc-model","sn-model", or"dc-model"), and thevariantslist. It is a root key, so it precedes the first table header, and the first entry is the default variant. - Declare
[voxel]for the field bounds. It replaces[canvas], which resolution rejects on a meshed case. - Declare
[tool]with the meshing binary and apreviewsuch asmodel.png, and[output]with anactionslog. Both name single files; the{part}token is rejected on a static case. Core emits the extractedmesh.glbonrender, so the manifest never names it. - Declare the single
overall[[domain]]a human rates the model under. The model is judged as a whole against its brief on that one rating, so the case declares no[[review_item]]checklist, no[model]rig, no[[reference]], no[build], and no[[check]].
The Aegis Bastion walking fortress is the worked example, authored once per
algorithm as aegis-mc, aegis-sn, and aegis-dc. Read the one matching your
surface.
Validate
Section titled “Validate”Run these for every variant.
npm run lint:specstcab prompt --test-case <slug> --version <version> --variant <variant>tcab seed --test-case <slug> --version <version> --variant <variant>prompt catches strict-mode template and manifest errors. seed writes the
seeded repository under tmp/, where you confirm the seeded set is
self-contained. After editing, force a re-ingest so a backend-driven run picks up
the change; see
Running the Local Service Stack.
Next steps
Section titled “Next steps”- Create a Mesh Model Variant to add a brief variation.
- Run a Test Case to exercise it end to end.
- Review a Run to assess the result.