← Files LegalQuants TransactionalARCHIVED FILE
skills/closing-bible/references/selection-plan.schema.json
2.83 KB · Oct 3, 2026 · 06:34 UTC
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "closing-bible selection plan (selection-plan.json)",
"description": "PRD §4 outputs: 'selection-plan.json mapping each index item to its selected source.' Per family: the candidates, the pick, the grouping basis and the evidence behind it — the audit trail that answers 'why this file and not that one'. Written by the reconciliation script from families.json and inspection.json.",
"type": "object",
"required": ["schema_version", "corpus_id", "families"],
"additionalProperties": false,
"properties": {
"schema_version": { "const": "1.0.0" },
"corpus_id": { "type": "string" },
"families": {
"type": "array",
"items": {
"type": "object",
"required": ["family_id", "item_id", "title_hint", "grouping_basis", "member_ids", "proposed_pick", "proposed_status", "resolved_status", "selected_id", "evidence"],
"additionalProperties": false,
"properties": {
"family_id": { "type": "string", "pattern": "^fam_[0-9a-f]{12}$" },
"item_id": { "type": ["string", "null"], "description": "The index item this family satisfies; null for unexpected families." },
"title_hint": { "type": "string" },
"grouping_basis": { "type": "array", "items": { "enum": ["hash", "normalised-title", "sigpack-agreement", "checklist-ref", "user-regrouped"] } },
"member_ids": { "type": "array", "minItems": 1, "items": { "type": "string" } },
"proposed_pick": { "type": ["string", "null"], "description": "What inspection proposed." },
"proposed_status": { "type": ["string", "null"] },
"resolved_status": { "enum": ["ready", "unsigned", "undated", "incomplete", "version-conflict", "unreadable", "not-required", "unexpected"], "description": "What reconciliation wrote after applying status-taxonomy.md. `unexpected` here means the family matched no item and is listed in closing-index.unexpected_families; it is never an index item status. Differs from proposed_status when the record was rejected or not inspected." },
"selected_id": { "type": ["string", "null"] },
"evidence": {
"type": "array",
"items": {
"type": "object",
"required": ["claim", "source", "document_id", "locator", "observation"],
"additionalProperties": false,
"properties": {
"claim": { "enum": ["version", "execution", "date", "completeness", "identity"] },
"source": { "enum": ["sigpack-ledger", "visual-inspection", "text-extraction", "filename", "checklist"] },
"document_id": { "type": ["string", "null"] },
"locator": { "type": "string" },
"observation": { "type": "string" }
}
}
}
}
}
}
}
}
SHA-256: 214b245391688c32b3e5dc5c1cbcdf36b8d86ec3179562d994a3aa9506127277