139 lines
4.5 KiB
JSON
139 lines
4.5 KiB
JSON
{
|
|
"$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 }
|
|
}
|
|
}
|
|
}
|