{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "anu_v3.coordinator_profile_binding.v1",
  "title": "task-2553+39 coordinator ← profile decision output binding contract",
  "description": "batch coordinator 가 policy_profile_engine decision.v1 output 을 read-only 소비하는 파일레벨 contract. closeout/merge 자동확정 0 (hard-pinned).",
  "type": "object",
  "required": [
    "binding_schema",
    "binding_module",
    "binding_version",
    "consumed_decision_schema",
    "decision_logic",
    "track_consumption_view",
    "consumption_decision",
    "auto_confirm_invariant"
  ],
  "properties": {
    "binding_schema": { "const": "anu_v3.coordinator_profile_binding.v1" },
    "binding_module": { "const": "anu_v3.coordinator_profile_binding" },
    "binding_version": { "type": "string", "minLength": 1 },
    "consumed_decision_schema": {
      "const": "anu_v3.policy_profile_engine.decision.v1"
    },
    "decision_logic": { "type": "string", "minLength": 1 },
    "source_engine": { "type": ["string", "null"] },
    "source_engine_version": { "type": ["string", "null"] },
    "track_consumption_view": { "$ref": "#/definitions/consumptionView" },
    "consumption_decision": { "$ref": "#/definitions/consumptionDecision" },
    "auto_confirm_invariant": { "type": "string", "minLength": 1 },
    "fail_closed": { "type": "boolean" },
    "error_code": { "type": "string" }
  },
  "additionalProperties": true,
  "definitions": {
    "consumptionView": {
      "type": "object",
      "required": [
        "coordinator_role",
        "closeout_authority",
        "merge_authority",
        "auto_confirm"
      ],
      "properties": {
        "goal_id": { "type": "string" },
        "goal_type": { "type": "string" },
        "profile_id": { "type": "string" },
        "engine_status": { "type": "string" },
        "gate_condition_names": {
          "type": "array",
          "items": { "type": "string" }
        },
        "gate_semantics": { "type": "string" },
        "hold_trigger_conditions": {
          "type": "array",
          "items": { "type": "string" }
        },
        "allowed_actions": {
          "type": "array",
          "items": { "type": "string" }
        },
        "forbidden_actions": {
          "type": "array",
          "items": { "type": "string" }
        },
        "completion_packet_meta_ref": { "type": ["string", "null"] },
        "evidence_meta_ref": { "type": ["string", "null"] },
        "coordinator_role": { "const": "decision_consumer_only" },
        "closeout_authority": { "const": false },
        "merge_authority": { "const": false },
        "auto_confirm": { "const": false }
      },
      "additionalProperties": true
    },
    "consumptionDecision": {
      "type": "object",
      "required": [
        "signal",
        "reason",
        "authority",
        "auto_confirm",
        "closeout_authority",
        "merge_authority"
      ],
      "properties": {
        "signal": {
          "enum": [
            "CONSUME_OK",
            "ENGINE_DECISION_HOLD",
            "RUNTIME_HOLD_OBSERVED",
            "DECISION_UNAVAILABLE"
          ]
        },
        "reason": { "type": "string" },
        "authority": { "const": "judgment_assist_only" },
        "auto_confirm": { "const": false },
        "closeout_authority": { "const": false },
        "merge_authority": { "const": false },
        "hold": { "type": "object" }
      },
      "additionalProperties": true
    }
  }
}
