Files
healer-man/scripts/runewaker-pipeline/RECIPE_SCHEMA.md
T
2026-08-14 15:56:39 -04:00

58 lines
2.3 KiB
Markdown

# RuneWaker recipe schema
Two recipes keep environment conversion separate from population/mechanics.
Paths are project-relative unless an environment variable supplies the preserved
source root.
## Environment recipe
Required top-level fields:
- `schemaVersion`: recipe format version.
- `slug`: HealerMan dungeon ID and asset directory name.
- `title`: display/source title.
- `source`: preserved WDB, primary ROS, config, and entrance evidence.
- `coordinateSystem`: source axes, units, and direction units.
- `navigation`: Recast settings.
- `review`: human review states.
- `exceptions`: known limitations retained in metadata.
`source` fields:
- `rootEnvironmentVariable` / `relativeDefault`: source-root resolution.
- `resourceRoot`: normally `Resource`.
- `wdb`: WDB path relative to the source root.
- `model`: primary ROS relative to `Resource`.
- `dungeonConfig` / `dungeonConfigId`: server catalog join.
- `entryLua` / `entryConstantPrefix`: authoritative entry constants; or
- `entryCoordinates`: explicit position/direction with `reviewRequired`.
## Population recipe
Required fields:
- `dungeonId`, `zoneId`, and `runtimeIdPrefix`.
- `expectedActiveRows` and `expectedBossSpawns` after the first refresh.
- `files`: snapshot, generated source, reports, environment/nav, actor outputs.
- `source`: source-root, catalogs, backup paths, SQL extraction instance.
- `actors`: unique reviewed source ROS models.
- `templates`: classification, display, combat, actor, and mechanics mappings.
- `deferred`: explicit later-pass list.
Template classifications are `combat`, `boss`, `deferred-object`, or
`unclassified`. Generation refuses `unclassified` rows and combat/boss rows
without a valid actor.
Optional template fields:
- `title`, `archetype`, `primaryColor`, `accentColor`, `visualScale`;
- `hasLoot`, `spawnMask`, `objectiveNamePattern`;
- `combat`: health/damage multipliers, movement, and leash overrides;
- `attacks`: reviewed HealerMan attack definitions;
- `reason`: why an object is deferred;
- `source`: forensic image/model/classification evidence.
`expected*` values may be `null` only in a fresh scaffold. The explicit
forensic refresh with `--update-recipe` pins them. A recipe should not be treated
as production-ready until all classifications/models and counts are reviewed.