{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://agla.local/schemas/carrier-aligned-predication.schema.json",
  "title": "Carrier-aligned predication projection",
  "type": "object",
  "additionalProperties": false,
  "required": ["contract_id", "contract_version", "result_id", "source_state_id", "status", "authority_effect", "runtime_effect", "records", "failures", "declared_loss", "round_trip"],
  "properties": {
    "contract_id": {"const": "AGLA_CARRIER_ALIGNED_PREDICATION"},
    "contract_version": {"const": "0.1.0"},
    "result_id": {"type": "string", "minLength": 1},
    "source_state_id": {"type": "string", "minLength": 1},
    "status": {"enum": ["COMPILED_COMPLETE", "SUSPENDED_INCOMPLETE_STATE", "SUSPENDED_AMBIGUOUS", "SUSPENDED_CONTRADICTORY", "REJECTED_UNSUPPORTED"]},
    "authority_effect": {"const": "NONE"},
    "runtime_effect": {"const": "NONE"},
    "records": {"type": "array", "maxItems": 9, "items": {"$ref": "#/$defs/record"}},
    "failures": {"type": "array", "items": {"type": "string"}, "uniqueItems": true},
    "declared_loss": {"type": "array", "items": {"type": "string"}, "uniqueItems": true},
    "round_trip": {
      "type": "object",
      "additionalProperties": false,
      "required": ["carrier_bindings_recoverable", "natural_prose_recoverable", "source_explanatory_context_recoverable"],
      "properties": {
        "carrier_bindings_recoverable": {"type": "boolean"},
        "natural_prose_recoverable": {"const": false},
        "source_explanatory_context_recoverable": {"const": false}
      }
    }
  },
  "$defs": {
    "record": {
      "type": "object",
      "additionalProperties": false,
      "required": ["record_id", "carrier", "subject", "predications", "V_status", "source_refs", "sentence_surface", "sentence_status"],
      "properties": {
        "record_id": {"type": "string", "pattern": "^PRED-[BCDEFGHIK]$"},
        "carrier": {"enum": ["B", "C", "D", "E", "F", "G", "H", "I", "K"]},
        "subject": {"type": "string", "minLength": 1},
        "predications": {
          "type": "object",
          "additionalProperties": false,
          "required": ["A", "T", "E", "K"],
          "properties": {
            "A": {"type": "string"}, "T": {"type": "string"}, "E": {"type": "string"}, "K": {"type": "string"}
          }
        },
        "V_status": {"const": "DERIVED_UNRESOLVED"},
        "source_refs": {"type": "array", "minItems": 1, "items": {"type": "string"}, "uniqueItems": true},
        "sentence_surface": {"type": "string", "minLength": 1},
        "sentence_status": {"const": "CONTROLLED_ENGINEERING_PROJECTION_NOT_SOURCE_QUOTATION"}
      }
    }
  }
}

