{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:literate-ai:schema:v5:source-translation-semantics-contracts",
  "oneOf": [
    { "$ref": "urn:literate-ai:schema:v2:source-to-specification-model-output" },
    { "$ref": "urn:literate-ai:schema:v3:source-to-specification-model-call-journal" },
    { "$ref": "urn:literate-ai:schema:v5:source-to-specification-translation-run" }
  ],
  "$defs": {
    "text": { "type": "string", "minLength": 1 },
    "identity": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
    "stringArray": { "type": "array", "uniqueItems": true, "items": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/text" } },
    "capabilityContract": {
      "type": "object", "additionalProperties": false,
      "required": ["name", "contract", "evidence_ids"],
      "properties": {
        "name": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/text" },
        "contract": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/text" },
        "evidence_ids": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/text" } }
      }
    },
    "entrypoint": {
      "type": "object", "additionalProperties": false,
      "required": ["name", "kind", "path", "evidence_ids"],
      "properties": {
        "name": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/text" },
        "kind": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/text" },
        "path": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/text" },
        "evidence_ids": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/text" } }
      }
    },
    "node": {
      "type": "object", "additionalProperties": false,
      "required": ["coordinate", "title", "kind", "profiles", "provided_capabilities", "capability_contracts", "entrypoints", "build_needs", "source_paths", "observation_indexes", "evidence_ids"],
      "properties": {
        "coordinate": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/text" },
        "title": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/text" },
        "kind": { "enum": ["library", "cli", "service"] },
        "profiles": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/text" } },
        "provided_capabilities": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/text" } },
        "library_imports": { "$ref": "urn:literate-ai:schema:v2:component-authoring-lock-contracts#/$defs/authoring/properties/library_imports" },
        "capability_contracts": { "type": "array", "minItems": 1, "items": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/capabilityContract" } },
        "entrypoints": { "type": "array", "items": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/entrypoint" } },
        "build_needs": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/text" } },
        "source_paths": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/text" } },
        "observation_indexes": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "integer", "minimum": 0 } },
        "evidence_ids": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/text" } }
      },
      "allOf": [{
        "if": { "properties": { "kind": { "const": "library" } }, "required": ["kind"] },
        "then": { "properties": { "entrypoints": { "maxItems": 0 } } },
        "else": { "properties": { "entrypoints": { "minItems": 1 } } }
      }]
    },
    "graph": {
      "type": "object", "additionalProperties": false,
      "required": ["root_coordinate", "nodes", "edges"],
      "properties": {
        "root_coordinate": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/text" },
        "nodes": { "type": "array", "minItems": 1, "items": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/node" } },
        "edges": { "type": "array", "items": { "$ref": "urn:literate-ai:schema:v1:source-translation-contracts#/$defs/modelComponentEdge" } }
      }
    },
    "output": {
      "$id": "urn:literate-ai:schema:v2:source-to-specification-model-output",
      "type": "object", "additionalProperties": false,
      "required": ["schema", "language", "observations", "component_graph"],
      "properties": {
        "schema": { "const": "urn:literate-ai:schema:v2:source-to-specification-model-output" },
        "language": { "$ref": "urn:literate-ai:schema:v1:source-translation-contracts#/$defs/language" },
        "observations": { "type": "array", "minItems": 1, "items": { "$ref": "urn:literate-ai:schema:v1:source-translation-contracts#/$defs/modelObservation" } },
        "component_graph": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/graph" }
      }
    },
    "isolation": {
      "type": "object", "additionalProperties": false,
      "required": ["profile", "clean_configuration", "filesystem_boundary", "hermetic", "limitations"],
      "properties": {
        "profile": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/text" },
        "clean_configuration": { "type": "boolean" },
        "filesystem_boundary": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/text" },
        "hermetic": { "type": "boolean" },
        "limitations": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/stringArray" }
      }
    },
    "journal": {
      "$id": "urn:literate-ai:schema:v3:source-to-specification-model-call-journal",
      "type": "object", "additionalProperties": false,
      "required": ["schema", "call_id", "language", "coding_cli", "executable", "executable_identity", "model", "command", "prompt", "response", "response_text", "stdout", "stderr", "request_identity", "response_identity", "command_identity", "selection_identity", "tool_binding_identity", "isolation", "environment_keys", "skill_refs", "intelligence_identity", "egress_policy_id", "evidence_ids", "partition_ordinal", "partition_count"],
      "properties": {
        "schema": { "const": "urn:literate-ai:schema:v3:source-to-specification-model-call-journal" },
        "call_id": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/identity" },
        "language": { "$ref": "urn:literate-ai:schema:v1:source-translation-contracts#/$defs/language" },
        "coding_cli": { "enum": ["codex", "claude", "cursor-agent", "opencode"] },
        "executable": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/text" },
        "executable_identity": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/identity" },
        "model": { "type": ["string", "null"], "minLength": 1 },
        "command": { "type": "array", "minItems": 1, "items": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/text" } },
        "prompt": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/text" },
        "response": { "$ref": "urn:literate-ai:schema:v2:source-to-specification-model-output" },
        "response_text": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/text" },
        "stdout": { "type": "string" }, "stderr": { "type": "string" },
        "request_identity": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/identity" },
        "response_identity": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/identity" },
        "command_identity": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/identity" },
        "selection_identity": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/identity" },
        "tool_binding_identity": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/identity" },
        "isolation": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/isolation" },
        "environment_keys": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/stringArray" },
        "skill_refs": { "type": "array", "minItems": 1, "items": { "$ref": "urn:literate-ai:schema:v2:source-to-specification-contracts#/$defs/skillRef" } },
        "intelligence_identity": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/identity" },
        "egress_policy_id": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/text" },
        "evidence_ids": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "urn:literate-ai:schema:v5:source-translation-semantics-contracts#/$defs/text" } },
        "partition_ordinal": { "type": "integer", "minimum": 0 },
        "partition_count": { "type": "integer", "minimum": 1 }
      }
    },
    "run": {
      "$id": "urn:literate-ai:schema:v5:source-to-specification-translation-run",
      "type": "object", "additionalProperties": false,
      "required": ["schema", "mode", "intelligence", "journals"],
      "properties": {
        "schema": { "const": "urn:literate-ai:schema:v5:source-to-specification-translation-run" },
        "mode": { "enum": ["deterministic-static", "source-intelligence-coding-cli"] },
        "intelligence": { "oneOf": [{ "$ref": "urn:literate-ai:schema:v3:source-to-specification-intelligence" }, { "type": "null" }] },
        "journals": { "type": "array", "items": { "$ref": "urn:literate-ai:schema:v3:source-to-specification-model-call-journal" } }
      }
    }
  }
}
