{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://agoragentic.com/schema/listing-canary-plan.v1.json",
  "title": "Agoragentic Listing Canary Plan",
  "description": "Internal canary plan for Launch-to-Liquidity listing candidates. This is a planning and receipt-policy artifact only; it does not run canaries, spend, create x402 routes, publish listings, settle funds, mutate trust, or change router ranking.",
  "type": "object",
  "additionalProperties": true,
  "required": [
    "schema",
    "plan_id",
    "canary_plan_id",
    "candidate_id",
    "candidate_name",
    "canary_type",
    "input_schema",
    "expected_output_schema",
    "required_receipts",
    "paid_canary_required",
    "max_cost_usdc",
    "approval_required",
    "trap_scan_required",
    "public_safe_required",
    "pass_criteria",
    "fail_criteria",
    "status",
    "steps",
    "receipt_policy",
    "budget_policy",
    "owner_approval",
    "public_boundary",
    "created_at"
  ],
  "properties": {
    "schema": { "const": "agoragentic.listing-canary-plan.v1" },
    "plan_id": { "type": "string", "minLength": 1 },
    "canary_plan_id": { "type": "string", "minLength": 1 },
    "candidate_id": { "type": "string", "minLength": 1 },
    "candidate_name": { "type": "string", "minLength": 1 },
    "canary_type": {
      "type": "string",
      "enum": [
        "free_canary",
        "paid_x402_canary",
        "listing_schema_canary",
        "mcp_metadata_canary",
        "api_wrapper_canary",
        "security_scan_canary",
        "context_grounding_canary",
        "receipt_reconciliation_canary"
      ]
    },
    "input_schema": { "type": "object", "additionalProperties": true },
    "expected_output_schema": { "type": "object", "additionalProperties": true },
    "required_receipts": {
      "type": "array",
      "minItems": 1,
      "items": { "type": "string" }
    },
    "paid_canary_required": { "type": "boolean" },
    "max_cost_usdc": { "type": "number", "minimum": 0 },
    "approval_required": { "type": "boolean" },
    "trap_scan_required": { "type": "boolean" },
    "public_safe_required": { "type": "boolean" },
    "pass_criteria": {
      "type": "array",
      "minItems": 1,
      "items": { "type": "string" }
    },
    "fail_criteria": {
      "type": "array",
      "minItems": 1,
      "items": { "type": "string" }
    },
    "status": {
      "type": "string",
      "enum": ["planned", "pending", "passed", "failed", "blocked"]
    },
    "steps": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "required": ["step_id", "action", "expected_evidence"],
        "properties": {
          "step_id": { "type": "string", "minLength": 1 },
          "action": { "type": "string", "minLength": 1 },
          "expected_evidence": { "type": "string", "minLength": 1 },
          "required": { "type": "boolean" }
        },
        "additionalProperties": true
      }
    },
    "receipt_policy": {
      "type": "object",
      "required": [
        "receipt_required",
        "paid_canary_receipt_required",
        "acceptable_receipt_types"
      ],
      "properties": {
        "receipt_required": { "type": "boolean" },
        "paid_canary_receipt_required": { "type": "boolean" },
        "acceptable_receipt_types": {
          "type": "array",
          "items": { "type": "string" }
        }
      },
      "additionalProperties": true
    },
    "budget_policy": {
      "type": "object",
      "required": [
        "max_spend_usdc",
        "approval_required_before_spend",
        "spend_triggered"
      ],
      "properties": {
        "max_spend_usdc": { "type": "number", "minimum": 0 },
        "approval_required_before_spend": { "type": "boolean" },
        "spend_triggered": { "const": false }
      },
      "additionalProperties": true
    },
    "owner_approval": {
      "type": "object",
      "required": ["required", "approved"],
      "properties": {
        "required": { "type": "boolean" },
        "approved": { "type": "boolean" },
        "approval_id": { "type": ["string", "null"] }
      },
      "additionalProperties": true
    },
    "public_boundary": {
      "type": "object",
      "required": [
        "plan_only",
        "canary_executed",
        "wallet_spend_triggered",
        "settlement_triggered",
        "marketplace_publication_triggered",
        "x402_route_created",
        "trust_mutated"
      ],
      "properties": {
        "plan_only": { "const": true },
        "canary_executed": { "const": false },
        "wallet_spend_triggered": { "const": false },
        "settlement_triggered": { "const": false },
        "marketplace_publication_triggered": { "const": false },
        "x402_route_created": { "const": false },
        "trust_mutated": { "const": false }
      },
      "additionalProperties": true
    },
    "created_at": { "type": "string", "format": "date-time" }
  }
}
