{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://zinvyl.example/schemas/commerce-contract-v1.json",
  "title": "Zinvyl Agent Commerce Contract",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "contract_version",
    "generated_at",
    "provider",
    "currency",
    "state_machine",
    "offers"
  ],
  "properties": {
    "$schema": { "type": "string" },
    "contract_version": { "const": "1.0.0" },
    "generated_at": { "type": "string", "format": "date-time" },
    "provider": { "$ref": "#/$defs/provider" },
    "currency": { "const": "USD" },
    "state_machine": { "$ref": "#/$defs/stateMachine" },
    "offers": {
      "type": "array",
      "minItems": 2,
      "maxItems": 2,
      "items": { "$ref": "#/$defs/offer" },
      "allOf": [
        {
          "contains": {
            "type": "object",
            "required": ["offer_id"],
            "properties": { "offer_id": { "const": "zinvyl.freight.workflow-audit.v1" } }
          },
          "minContains": 1,
          "maxContains": 1
        },
        {
          "contains": {
            "type": "object",
            "required": ["offer_id"],
            "properties": { "offer_id": { "const": "zinvyl.api.workflow-failure-rescue.v1" } }
          },
          "minContains": 1,
          "maxContains": 1
        }
      ]
    }
  },
  "$defs": {
    "nonEmptyString": { "type": "string", "minLength": 1 },
    "stringList": {
      "type": "array",
      "minItems": 1,
      "items": { "$ref": "#/$defs/nonEmptyString" }
    },
    "provider": {
      "type": "object",
      "additionalProperties": false,
      "required": ["legal_name", "brand", "seller_of_record", "supplier_mode"],
      "properties": {
        "legal_name": { "const": "G.B. Industry LLC" },
        "brand": { "const": "Zinvyl" },
        "seller_of_record": { "const": "G.B. Industry LLC d/b/a Zinvyl" },
        "supplier_mode": {
          "const": "AI-assisted delivery with accountable human review"
        }
      }
    },
    "stateMachine": {
      "type": "object",
      "additionalProperties": false,
      "required": ["initial_state", "terminal_state", "states", "transitions", "funding_gate"],
      "properties": {
        "initial_state": { "const": "discovered" },
        "terminal_state": { "const": "accepted" },
        "states": {
          "type": "array",
          "prefixItems": [
            { "const": "discovered" },
            { "const": "funded" },
            { "const": "delivered" },
            { "const": "accepted" }
          ],
          "minItems": 4,
          "maxItems": 4
        },
        "transitions": {
          "type": "array",
          "prefixItems": [
            { "$ref": "#/$defs/discoveredToFunded" },
            { "$ref": "#/$defs/fundedToDelivered" },
            { "$ref": "#/$defs/deliveredToAccepted" }
          ],
          "minItems": 3,
          "maxItems": 3
        },
        "funding_gate": { "$ref": "#/$defs/nonEmptyString" }
      }
    },
    "discoveredToFunded": {
      "type": "object",
      "additionalProperties": false,
      "required": ["from", "to", "condition", "evidence"],
      "properties": {
        "from": { "const": "discovered" },
        "to": { "const": "funded" },
        "condition": { "$ref": "#/$defs/nonEmptyString" },
        "evidence": { "$ref": "#/$defs/nonEmptyString" }
      }
    },
    "fundedToDelivered": {
      "type": "object",
      "additionalProperties": false,
      "required": ["from", "to", "condition", "evidence"],
      "properties": {
        "from": { "const": "funded" },
        "to": { "const": "delivered" },
        "condition": { "$ref": "#/$defs/nonEmptyString" },
        "evidence": { "$ref": "#/$defs/nonEmptyString" }
      }
    },
    "deliveredToAccepted": {
      "type": "object",
      "additionalProperties": false,
      "required": ["from", "to", "condition", "evidence"],
      "properties": {
        "from": { "const": "delivered" },
        "to": { "const": "accepted" },
        "condition": { "$ref": "#/$defs/nonEmptyString" },
        "evidence": { "$ref": "#/$defs/nonEmptyString" }
      }
    },
    "offer": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "offer_id",
        "name",
        "price",
        "delivery",
        "purchase_url",
        "scope",
        "inputs",
        "acceptance_tests",
        "exclusions",
        "evidence_boundaries",
        "economics_estimate"
      ],
      "properties": {
        "offer_id": {
          "enum": [
            "zinvyl.freight.workflow-audit.v1",
            "zinvyl.api.workflow-failure-rescue.v1"
          ]
        },
        "name": { "$ref": "#/$defs/nonEmptyString" },
        "price": {
          "type": "object",
          "additionalProperties": false,
          "required": ["amount", "currency", "pricing_model", "funding_required_before_work"],
          "properties": {
            "amount": { "enum": [149, 199] },
            "currency": { "const": "USD" },
            "pricing_model": { "const": "fixed_price" },
            "funding_required_before_work": { "const": true }
          }
        },
        "delivery": {
          "type": "object",
          "additionalProperties": false,
          "required": ["business_days_after_complete_inputs", "revision_count"],
          "properties": {
            "business_days_after_complete_inputs": { "type": "integer", "minimum": 1 },
            "revision_count": { "type": "integer", "minimum": 0 }
          }
        },
        "purchase_url": { "type": "string", "format": "uri", "pattern": "^https://zinvyl\\.com/marketplace/intake" },
        "scope": { "$ref": "#/$defs/stringList" },
        "inputs": {
          "type": "object",
          "additionalProperties": false,
          "required": ["required", "constraints", "secrets_policy"],
          "properties": {
            "required": { "$ref": "#/$defs/stringList" },
            "constraints": { "$ref": "#/$defs/stringList" },
            "secrets_policy": { "$ref": "#/$defs/nonEmptyString" }
          }
        },
        "acceptance_tests": {
          "type": "array",
          "minItems": 1,
          "items": { "$ref": "#/$defs/acceptanceTest" }
        },
        "exclusions": { "$ref": "#/$defs/stringList" },
        "evidence_boundaries": { "$ref": "#/$defs/stringList" },
        "economics_estimate": { "$ref": "#/$defs/economics" }
      },
      "allOf": [
        {
          "if": {
            "properties": { "offer_id": { "const": "zinvyl.freight.workflow-audit.v1" } },
            "required": ["offer_id"]
          },
          "then": {
            "properties": {
              "price": {
                "properties": { "amount": { "const": 199 } },
                "required": ["amount"]
              }
            }
          }
        },
        {
          "if": {
            "properties": { "offer_id": { "const": "zinvyl.api.workflow-failure-rescue.v1" } },
            "required": ["offer_id"]
          },
          "then": {
            "properties": {
              "price": {
                "properties": { "amount": { "const": 149 } },
                "required": ["amount"]
              }
            }
          }
        }
      ]
    },
    "acceptanceTest": {
      "type": "object",
      "additionalProperties": false,
      "required": ["test_id", "assertion", "pass_condition", "evidence_artifact"],
      "properties": {
        "test_id": { "type": "string", "pattern": "^[a-z0-9][a-z0-9._-]+$" },
        "assertion": { "$ref": "#/$defs/nonEmptyString" },
        "pass_condition": { "$ref": "#/$defs/nonEmptyString" },
        "evidence_artifact": { "$ref": "#/$defs/nonEmptyString" }
      }
    },
    "economics": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "label",
        "gross_amount_usd",
        "assumed_payment_fee_rate_range",
        "estimated_net_before_tax_range_usd",
        "estimated_funds_availability",
        "withdrawal_settlement",
        "caveat"
      ],
      "properties": {
        "label": { "const": "estimate_not_guarantee" },
        "gross_amount_usd": { "type": "number", "exclusiveMinimum": 0 },
        "assumed_payment_fee_rate_range": {
          "type": "object",
          "additionalProperties": false,
          "required": ["minimum", "maximum"],
          "properties": {
            "minimum": { "const": 0 },
            "maximum": { "const": 0.15 }
          }
        },
        "estimated_net_before_tax_range_usd": {
          "type": "object",
          "additionalProperties": false,
          "required": ["minimum", "maximum"],
          "properties": {
            "minimum": { "type": "number", "minimum": 0 },
            "maximum": { "type": "number", "minimum": 0 }
          }
        },
        "estimated_funds_availability": { "$ref": "#/$defs/nonEmptyString" },
        "withdrawal_settlement": { "$ref": "#/$defs/nonEmptyString" },
        "caveat": { "$ref": "#/$defs/nonEmptyString" }
      }
    }
  }
}
