{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://qrtrust.example/contracts/production-evidence-requirements.schema.json",
  "title": "QR Trust Production Evidence Requirements",
  "type": "object",
  "required": [
    "artifact_type",
    "requirements_id",
    "generated_at",
    "scope",
    "controls",
    "guardrails",
    "reviewer"
  ],
  "properties": {
    "artifact_type": {
      "const": "production_evidence_requirements"
    },
    "requirements_id": {
      "type": "string",
      "minLength": 1
    },
    "generated_at": {
      "type": "string",
      "format": "date-time"
    },
    "scope": {
      "type": "object",
      "required": ["claim_mode", "root_program_id", "environment", "boundary"],
      "properties": {
        "claim_mode": {
          "const": "production_candidate"
        },
        "root_program_id": {
          "type": "string",
          "minLength": 1
        },
        "environment": {
          "type": "string",
          "minLength": 1
        },
        "boundary": {
          "type": "string",
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "controls": {
      "type": "array",
      "minItems": 12,
      "maxItems": 12,
      "items": {
        "type": "object",
        "required": [
          "control_id",
          "layer",
          "title",
          "minimum_refs",
          "required_ref_scheme",
          "evidence_owner",
          "minimum_review_role",
          "retention_policy",
          "why_required",
          "required_artifacts"
        ],
        "properties": {
          "control_id": {
            "enum": [
              "postgres_source_of_truth",
              "migration_ledger",
              "restore_automation",
              "packaged_deployment_ownership",
              "nats_propagation",
              "managed_key_material",
              "managed_signing_custody",
              "custody_audit_export",
              "runtime_safety_provider",
              "scanner_decision_persistence",
              "worker_operations_evidence",
              "operator_runbooks"
            ]
          },
          "layer": {
            "enum": [
              "source_of_truth",
              "propagation",
              "custody",
              "runtime",
              "scanner",
              "operator_readiness"
            ]
          },
          "title": {
            "type": "string",
            "minLength": 1
          },
          "minimum_refs": {
            "type": "integer",
            "minimum": 1
          },
          "required_ref_scheme": {
            "const": "ops://qrtrust/"
          },
          "evidence_owner": {
            "type": "string",
            "minLength": 1
          },
          "minimum_review_role": {
            "enum": [
              "database_operator",
              "release_owner",
              "security_reviewer",
              "operations_reviewer",
              "custody_operator",
              "runtime_operator"
            ]
          },
          "retention_policy": {
            "type": "string",
            "minLength": 1
          },
          "why_required": {
            "type": "string",
            "minLength": 1
          },
          "required_artifacts": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "additionalProperties": false
      }
    },
    "guardrails": {
      "type": "object",
      "required": [
        "requirements_are_not_evidence",
        "public_repo_contains_no_operator_secrets",
        "production_claim_requires_ops_refs",
        "operators_own_evidence_storage"
      ],
      "properties": {
        "requirements_are_not_evidence": {
          "const": true
        },
        "public_repo_contains_no_operator_secrets": {
          "const": true
        },
        "production_claim_requires_ops_refs": {
          "const": true
        },
        "operators_own_evidence_storage": {
          "const": true
        }
      },
      "additionalProperties": false
    },
    "reviewer": {
      "type": "object",
      "required": ["name", "role", "reviewed_at"],
      "properties": {
        "name": {
          "type": "string",
          "minLength": 1
        },
        "role": {
          "type": "string",
          "minLength": 1
        },
        "reviewed_at": {
          "type": "string",
          "format": "date"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
