This file is not a constitution. The engine repository's CLAUDE.md — checked in
at the root of stellarfeline/delvewright — governs work in this repository too,
and its operating-practice half, CLAUDE.local.md, gitignored at the root of the
engine checkout on the machine this project is operated from, governs how the
deployment runs. If you have not been given those files, you are working without
the constitution: say so and ask before improvising — a memory loader loads a
missing file silently, and this repository ran without any CLAUDE.md at all for
long enough to prove that silence reads as normal.
README.md here is for players and hosts; CONTRIBUTING.md is for community
contributors and holds the layout, the community contract, and the release
procedure. Every document has one target reader (engine constitution, audience
separation) — agent material goes here, never into those two.
What follows is only what is true in THIS repository and not derivable from the engine's text.
-
campaigns/IS the content here. In the engine repository the same name is a gitignored dev symlink with zero tracked files — so a constant copied from an engine tool that names a path, a directory or a file kind is re-derived here, never carried. One carried skip list removed 27 tracked files, every campaign stage document among them, from pin discovery and a verb enumeration, and nothing was red or could have been: the counts were truthful about a smaller world than the tool claimed to cover (.github/pins.tomladmit-refandtools/check-vendored.pyboth record it). -
This repository holds no engine code; the engine revisions it is judged and built by are pins. Both live in the registry
.github/pins.toml, held to their policies bytools/check-pins.py:admit-ref(site:.github/workflows/prefab-audit.yml) names the engine commit the NBT audit is built from, andengine-release(site:versions.toml[engine].ref) names the tagged engine release a delve image is built and validated with. They are deliberately different and are never collapsed. When judging a red, ask which revision the job builds, not only which tree you were handed — a stale pin manufactures false reds that look exactly like content defects, and this repository has produced one: a zone reported red against a rule that no longer existed upstream, where the natural "repair" was to build the thing the stale gate asked for. -
Vendored files are byte-for-byte copies of engine files and are never edited here. The registry's
vendorskeys name them — todaytools/check-pins.py— andtools/check-vendored.pyholds each to the bytes at the pinned revision, plus a refusal when the upstream source has moved since review. A local fix to a vendored file is the drift the checker exists to catch: fix it in the engine and re-pin. -
A released or accepted campaign is never edited to satisfy a new engine — when it stops building, the finding is a fence defect in the engine. The complement is an obligation: a campaign that has not been released adopts the current engine, and its red under a new obligation is an adoption item on the campaign. So the triage question comes before the diagnostic is read: has this campaign been released or accepted? Engine surfaces are tested against the engine's own gallery, which lives in the engine repository and is never released or staged — a campaign here is never the engine's test surface. (Engine constitution, "A released campaign is never the engine's test surface".)
-
An in-progress campaign lives on its own
campaign/<id>branch and everything of it lands there — design of record, prefabs, stage documents, localisation sidecars, generation logs. Sort a file by which artifact it belongs to, never by what kind of file it is: if abandoning the campaign would delete it, it is the campaign. The branch reachesmainonce, after acceptance;.github/required-status-checks.toml(protect-campaign-branches) is the binding. -
.nbtprefabs are git-lfs objects (.gitattributes). A checkout without LFS materialises text pointers, and the audit fails to parse them — a tool reading such a tree is reading the wrong instrument. -
English-first and privacy apply here by name: no artifact in this repository — campaign
GENERATION.mdlogs included — records personal information or who decided something or when (engine constitution, Conventions, which names this repository's generation logs explicitly). -
tools/testsis stdlibunittest, no install step, deliberately — it must run on a creator's clone with nothing installed. The command CI runs:python3 -m unittest discover -s tools/tests -t tools/tests.