Scaffold the per-repo configuration the engineering skills expect, and put
the three-way split of work into standing law:
- Live work -> wayfinder maps + Gitea issues (closeable, assignable,
queryable).
- Settled decisions -> ADR files in docs/adr/ (immutable, findable, never
closed).
- Standing law -> DOCTRINE.md / AGENTS.md / CONTEXT.md.
Adds docs/agents/{issue-tracker,triage-labels,domain}.md and an
"Agent skills" section in AGENTS.md. The tracker doc records Gitea via the
tea CLI, the wayfinder map/ticket/blocking operations, and the rule that
issues follow ownership: file work in the repo that owns it, not the one you
happen to be standing in.
ADR-0001 (markdown is reference, law, or an ADR - nothing else) is adopted
from sow-codebase so the rule is local to every repo.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Contact sheet confirms 8-slot palette is dark/cool and consistent, plaza/
sidewalk/cobble read distinct, water is near-black. Bridge was regraded
darker/cooler (was near-identical to sidewalk, both from tcn01_stone04)
so it reads distinct at a glance per Task 6 acceptance criteria.
`nix run .#dev-install` runs build.py, export_mdl.py and make_set.py into
./build, then stages the loose .mdl/.wok/.set into ~/Documents/Neverwinter
Nights/development/ for toolset testing without packing a .hak. Replaces only
twu01* files there; keeps build/ for inspection. gitignore build/ + *.blend.
Verified: 40 .mdl + 40 .wok + twu01.set (CRLF intact) staged into development/.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
STATUS.md: what the generator kit produces, the pipeline commands, what's
verified (build/export/set), first-pass caveats, git state, and next passes.
AGENTS.md §6.3: test tilesets without packing a .hak by dropping loose .set/
.mdl/.wok into ~/Documents/Neverwinter Nights/development/ (toolset reads it).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Neverblender is installed + enabled in this machine's Blender 4.0.2 config and
confirmed working headless via the flake. Add generator/export_mdl.py:
assembles each tile as a Neverblender-native model (AuroraBase dummy/tile,
trimesh, single aabb walkmesh) in its own scene and calls scene.nvb_mdlexport
to emit real ASCII <resref>.mdl + <resref>.wok for all 40 tiles.
Walkmesh surfacemats via create_wok_materials() slot order (walkable Stone=4,
Nonwalk=7) -> verified correct per tile (CP1 all 4, CN1 all 7, BR_1/CE_S mixed).
flake.nix: add `export` app (nix run .#export -- <blend> <outdir> [CODE...]).
AGENTS.md: record the Neverblender node/surfacemat facts and the kit's tools;
note the slot-index (not material-name) surfacemat gotcha.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
AGENTS.md: NWN:EE tileset construction reference (constraints, .mdl/.wok
walkmesh rules, .set format, Blender->NWN pipeline, prototype->NWN mapping).
wgt01/: Westgate Urban Foundation MVP kit.
- generator/tiles.py: single source of truth (40-tile table, materials,
12x12 test map, pure paint/height/walkmesh/.set derivations).
- generator/build.py: Blender 4.0.2 scene generator (VIS_/WOK_/BLOCK_ per
tile, edge metadata, library grid + 12x12 district previews).
- generator/make_wok.py: ASCII walkmesh emitter (verts+faces+surfacemat+AABB
tree) from the same geometry.
- generator/make_set.py: first-pass twu01.set (CRLF) from the tile grammar.
- flake.nix: build/wok/set apps + dev shell (pinned Blender 4.0.2, NWN tools).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>