Align E2.M3 In Progress status, backlog checkboxes, perks map doc; reject unreferenced PerkDef rows; tier-2 branch displayNames; review Done. |
||
|---|---|---|
| .. | ||
| mastery | ||
| schemas | ||
| skills | ||
| README.md | ||
README.md
Content data
Data-driven definitions (skills, items, recipes, quests) validated in CI with JSON Schema.
| Path | Purpose |
|---|---|
schemas/ |
JSON Schema files (*.schema.json) |
skills/ |
Skill catalogs; each row matches schemas/skill-def.schema.json — stable id, allowedXpSourceKinds for E2.M1 / E2.M2 |
mastery/ |
Mastery catalogs; each file matches schemas/mastery-catalog.schema.json — stable branchId / perkId, tier gates via skill level (E2.M3) |
Prototype Slice 1 (NEO-33): CI expects exactly three skill rows with ids salvage, refine, intrusion (gather + process + tech). Each row must declare allowedXpSourceKinds (non-empty); see E2.M1 — Designer note: allowedXpSourceKinds for what each kind means for grant wiring.
Prototype Slice 4 (NEO-45): CI expects exactly one MasteryTrack for salvage only (refine / intrusion have no mastery rows yet). Tier 1 @ skill level 2 is a mutually exclusive branch pick (scrap_efficiency vs bulk_haul) with no perks; tier 2 @ level 4 unlocks one perk per branch path. Do not rename branchId / perkId after ship—change displayName only. See E2.M3 — Designer note and freeze table.
Server load path and hot-reload policy are TBD; keep files versioned here as the source of truth.
Validate locally (same as PR gate):
pip install -r scripts/requirements-content.txt
python scripts/validate_content.py
python scripts/check_decomposition_language.py