From e7a584cc60dac69c40baffc475956e11b3d04849 Mon Sep 17 00:00:00 2001 From: slaguru666 <111923774+slaguru666@users.noreply.github.com> Date: Wed, 23 Sep 2026 00:44:01 +0100 Subject: [PATCH] CREATURE_FORGE_PLAN: mark all five phases built MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It opened "Status: plan only. Nothing below is built" while four of the five phases had shipped, and its state table described a repo of 76 statblocks with no simulator and no portraits — 204, six measuring guards and 47 plates ago. A plan that misreports what exists sends the next reader to build it again. The table is kept rather than deleted because the design argues from it, with a second column saying where each row landed. Part 5 is marked built and NOT yet run in a world, which is the honest state. Co-Authored-By: Claude Opus 5 --- docs/CREATURE_FORGE_PLAN.md | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/docs/CREATURE_FORGE_PLAN.md b/docs/CREATURE_FORGE_PLAN.md index abf3cec..b1e131f 100644 --- a/docs/CREATURE_FORGE_PLAN.md +++ b/docs/CREATURE_FORGE_PLAN.md @@ -4,7 +4,26 @@ A tool for making NPCs and monsters that are **correct by construction, measured lethality, and never baseline-human by default**. Plus art that costs nothing and cannot contradict the statblock. -Status: plan only. Nothing below is built. +Status: **all five phases built** (23 September 2026). The table below is the state this +plan was written against in September; it is kept because the reasoning depends on it, and +every row of it has since moved: + +| then | now | +|---|---| +| 76 statblocks | 204, including 100 written in one pass | +| 0 statblocks not `baseline` | non-baseline bodies are reachable and the forge defaults to them by role | +| no combat simulator | `tools/simulate.mjs`, and six guards that measure against it | +| no NPC portraits | 47 Midjourney plates and derived tokens in `art/portraits/` and `art/tokens/` | +| ad-hoc validation | `creature-schema.mjs` plus `check-creatures`, `check-forge`, `check-armed` | + +Part 3 is `forge.mjs` (the derivation, at the root) and `tools/forge.mjs` (the CLI). +Part 5 is `generateCreature` and the **Forge creature** button on the Actors sidebar. The +two share one derivation, and `check-forge` requires them to agree when fed from their two +different catalogues — see R-310 and the commit history for what that caught. + +**The in-Foundry panel has not been exercised in a running world.** The derivation is +covered by 450 guarded combinations; `Actor.create`, the pack reads and the dialog are the +part `check-behaviour` says outright it cannot reach. --- @@ -205,13 +224,13 @@ gets authored properly in the morning. ## Order of work -| Phase | Deliverable | Why here | -|---|---|---| -| 1 | Schema + validator, guards rewired | Pure safety net. No new content, no risk, pays off immediately. | -| 2 | Simulator + `check-lethality`, tables regenerated | Turns published claims into results. Biggest single win. | -| 3 | Forge CLI | Needs 1 to validate against and 2 to tune against. | -| 4 | Procedural portraits | Independent of 1–3; could move earlier if wanted. | -| 5 | Foundry importer | Needs built packs carrying lethality data, so it goes last. | +| Phase | Deliverable | Why here | | +|---|---|---|---| +| 1 | Schema + validator, guards rewired | Pure safety net. No new content, no risk, pays off immediately. | done | +| 2 | Simulator + `check-lethality`, tables regenerated | Turns published claims into results. Biggest single win. | done | +| 3 | Forge CLI | Needs 1 to validate against and 2 to tune against. | done | +| 4 | Procedural portraits | Independent of 1–3; could move earlier if wanted. | done, and since replaced for 47 creatures by drawn plates | +| 5 | Foundry panel | Needs built packs carrying lethality data, so it goes last. | built, **not yet run in a world** | Phases 1 and 2 are worth doing even if 3–5 never happen.