{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://neon-sprawl.local/schemas/reward-table.json", "title": "RewardTable", "description": "Single reward table row for catalogs (e.g. content/reward-tables/*_reward_tables.json). IDs are stable forever—rename display in displayName only. See docs/decomposition/modules/E5_M3_EncounterAndRewardTables.md.", "type": "object", "additionalProperties": false, "required": ["id", "displayName", "fixedGrants"], "properties": { "id": { "type": "string", "pattern": "^[a-z][a-z0-9_]*$", "description": "Immutable reward table key for encounter binding and loot routing." }, "displayName": { "type": "string", "minLength": 1, "description": "Player-facing label; safe to change without migrating character data." }, "fixedGrants": { "type": "array", "minItems": 1, "items": { "$ref": "https://neon-sprawl.local/schemas/reward-grant-row.json" } } } }