← Files LegalQuants TransactionalARCHIVED FILE

skills/closing-bible/references/selection-plan.schema.json

2.83 KB · Oct 3, 2026 · 06:34 UTC

↓ Download file

{
  "$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