{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "ghostlight.corpus_coverage.schema.json", "title": "Ghostlight Corpus Coverage Ledger", "type": "object", "required": [ "schema_version", "coverage_id", "coverage_targets", "entries" ], "properties": { "schema_version": { "const": "ghostlight.corpus_coverage.v0" }, "coverage_id": { "type": "string", "minLength": 1 }, "coverage_targets": { "type": "object", "required": [ "major_powers", "minor_powers", "movements", "pre_elysium_flashpoints", "defunct_absorbed_powers", "practical_first_broad_target", "major_power_requirement", "collision_requirement" ], "properties": { "major_powers": { "type": "integer", "minimum": 0 }, "minor_powers": { "type": "integer", "minimum": 0 }, "movements": { "type": "integer", "minimum": 0 }, "pre_elysium_flashpoints": { "type": "integer", "minimum": 0 }, "defunct_absorbed_powers": { "type": "integer", "minimum": 0 }, "practical_first_broad_target": { "type": "object", "required": ["minimum", "maximum"], "properties": { "minimum": { "type": "integer", "minimum": 0 }, "maximum": { "type": "integer", "minimum": 0 } }, "additionalProperties": false }, "major_power_requirement": { "type": "string", "minLength": 1 }, "collision_requirement": { "type": "string", "minLength": 1 } }, "additionalProperties": false }, "entries": { "type": "array", "items": { "type": "object", "required": [ "fixture_id", "status", "timeline_lane", "story_type", "primary_subjects", "secondary_subjects", "collision_axes", "tonal_modes", "training_targets", "training_usability", "artifacts", "review", "economy_hooks", "open_lore_gaps", "notes" ], "properties": { "fixture_id": { "type": "string", "minLength": 1 }, "status": { "enum": ["planned", "draft", "accepted_as_draft", "accepted", "needs_revision", "rejected", "superseded"] }, "timeline_lane": { "enum": ["historical_grounded", "transition_grounded", "future_branch"] }, "canon_status": { "enum": ["single_history", "branch_local", "promoted_branch", "template", "draft"] }, "story_type": { "enum": [ "founding_era_story", "day_in_the_life_story", "flashpoint_story", "movement_story", "future_branch_story", "trade_life_story" ] }, "era": { "type": "string" }, "location": { "type": "string" }, "flashpoint": { "type": "string" }, "primary_subjects": { "$ref": "#/$defs/nonemptyStringArray" }, "secondary_subjects": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "collision_axes": { "$ref": "#/$defs/nonemptyStringArray" }, "tonal_modes": { "$ref": "#/$defs/nonemptyStringArray" }, "training_targets": { "$ref": "#/$defs/nonemptyStringArray" }, "training_usability": { "type": "object", "required": ["overall"], "additionalProperties": { "enum": [ "training_ready", "reference_only", "not_training_data" ] } }, "artifacts": { "type": "object", "additionalProperties": { "type": "string", "minLength": 1 } }, "review": { "type": "object", "additionalProperties": { "enum": ["not_run", "accepted", "accepted_as_draft", "needs_revision", "rejected", "blocked"] } }, "economy_hooks": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "open_lore_gaps": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "notes": { "type": "string" } }, "additionalProperties": false } } }, "additionalProperties": false, "$defs": { "nonemptyStringArray": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 } } } }