{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://github.com/welkaim/ea-codex/schemas/v1/continuous-architecture-contract.json",
  "title": "ContinuousArchitectureContract",
  "description": "Living contract that binds intent, capability, policies, quality attributes, design decisions, specifications, controls, and feedback for a single architectural unit. Introduced in Chapter 2. All sub-fields use camelCase.",
  "type": "object",
  "required": ["apiVersion", "kind", "metadata", "spec"],
  "properties": {
    "apiVersion": { "$ref": "_common.json#/$defs/apiVersion" },
    "kind": { "type": "string", "const": "ContinuousArchitectureContract" },
    "metadata": { "$ref": "_common.json#/$defs/metadata" },
    "spec": {
      "type": "object",
      "required": ["businessObjective", "capability", "designDecisions", "specifications", "feedback"],
      "properties": {
        "businessObjective": {
          "type": "object",
          "description": "Generalized objective field that links the contract to a measurable enterprise outcome. Links to a measurable outcome.",
          "required": ["objectiveRef", "measurableOutcome"],
          "properties": {
            "objectiveRef": { "$ref": "_common.json#/$defs/objectiveRef" },
            "measurableOutcome": { "type": "string" }
          },
          "additionalProperties": true
        },
        "capability": {
          "type": "object",
          "required": ["name"],
          "properties": {
            "name": { "type": "string" },
            "businessFlow": {
              "type": "array",
              "items": { "type": "string" }
            },
            "businessObjects": {
              "type": "array",
              "items": { "type": "string" }
            }
          },
          "additionalProperties": true
        },
        "policies": {
          "type": "object",
          "description": "Policy constraints expressed as a map from policy domain to constraint. Domains include data residency, retention, audit trail, integration traceability, human review.",
          "additionalProperties": true
        },
        "qualityAttributes": {
          "type": "object",
          "description": "Map from quality attribute name (resilience, security, auditability, performance, ...) to a structured scenario.",
          "patternProperties": {
            "^[a-z][a-z_]*$": {
              "type": "object",
              "required": ["scenario", "requiredResponse", "tradeOff"],
              "properties": {
                "scenario": { "type": "string" },
                "requiredResponse": { "type": "string" },
                "tradeOff": { "type": "string" }
              },
              "additionalProperties": true
            }
          }
        },
        "designDecisions": {
          "type": "array",
          "description": "Architectural decisions that resolve how the capability is realized.",
          "minItems": 1,
          "items": {
            "type": "object",
            "required": ["id", "title", "status", "rationale"],
            "properties": {
              "id": { "$ref": "_common.json#/$defs/decisionRef" },
              "title": { "type": "string" },
              "status": { "$ref": "_common.json#/$defs/decisionStatus" },
              "rationale": { "type": "string" },
              "principlesApplied": {
                "type": "array",
                "items": { "type": "string" }
              }
            },
            "additionalProperties": true
          }
        },
        "specifications": {
          "type": "object",
          "minProperties": 1,
          "description": "Map from specification name to its structured content. Each specification should be consumable by delivery platforms or policy engines."
        },
        "controls": {
          "type": "object",
          "description": "Controls grouped by lifecycle stage (intake, design, delivery, runtime).",
          "properties": {
            "intake": { "type": "array", "items": { "type": "string" } },
            "design": { "type": "array", "items": { "type": "string" } },
            "delivery": { "type": "array", "items": { "type": "string" } },
            "runtime": { "type": "array", "items": { "type": "string" } }
          },
          "additionalProperties": true
        },
        "feedback": {
          "type": "object",
          "required": ["evidenceStore", "decisionReviewTriggers"],
          "properties": {
            "evidenceStore": { "type": "string" },
            "decisionReviewTriggers": {
              "type": "array",
              "items": { "type": "string" },
              "minItems": 1
            }
          },
          "additionalProperties": true
        }
      },
      "additionalProperties": true
    }
  },
  "additionalProperties": false
}
