{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://agent.pricerightdigital.com/routing-incident-schema.json",
  "title": "Price Right Digital Routing Incident Packet",
  "description": "Preparation-only routing incident packet. It documents suspected failures, evidence, workarounds, resolution requirements, and handoff status without claiming a fix or downstream completion.",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "incident_id",
    "created_at",
    "source_system",
    "source_url",
    "affected_asset",
    "incident_summary",
    "suspected_failure",
    "evidence",
    "impact",
    "workaround",
    "resolution",
    "validation",
    "handoff",
    "downstream_status"
  ],
  "properties": {
    "incident_id": {
      "type": "string",
      "description": "Unique incident identifier."
    },
    "created_at": {
      "type": "string",
      "description": "ISO timestamp when incident packet was created."
    },
    "source_system": {
      "type": "string",
      "description": "System that prepared packet."
    },
    "source_url": {
      "type": "string",
      "description": "Source URL for packet."
    },
    "affected_asset": {
      "type": "object",
      "description": "Affected asset.",
      "additionalProperties": false,
      "required": [
        "asset_name",
        "asset_type",
        "asset_url",
        "owner_team",
        "current_status"
      ],
      "properties": {
        "asset_name": {
          "type": "string",
          "description": "Affected asset name."
        },
        "asset_type": {
          "type": "string",
          "enum": [
            "landing_page",
            "show_page",
            "contact_form",
            "inventory_form",
            "newsletter_form",
            "review_form",
            "lead_router",
            "apps_script_router",
            "crm_sync",
            "google_sheet",
            "webhook",
            "alerting_flow",
            "internal_reference",
            "unknown"
          ],
          "description": "Affected asset type."
        },
        "asset_url": {
          "type": "string",
          "description": "Affected asset URL."
        },
        "owner_team": {
          "type": "string",
          "description": "Owner team."
        },
        "current_status": {
          "type": "string",
          "enum": [
            "active",
            "unverified",
            "failed",
            "partially_working",
            "disabled",
            "archived",
            "unknown"
          ],
          "description": "Current asset status."
        }
      }
    },
    "incident_summary": {
      "type": "object",
      "description": "Incident summary.",
      "additionalProperties": false,
      "required": [
        "incident_title",
        "discovered_at",
        "discovered_by",
        "issue_description",
        "first_observed_behavior",
        "expected_behavior"
      ],
      "properties": {
        "incident_title": {
          "type": "string",
          "description": "Incident title."
        },
        "discovered_at": {
          "type": "string",
          "description": "Discovery timestamp."
        },
        "discovered_by": {
          "type": "string",
          "description": "Discovering person or system."
        },
        "issue_description": {
          "type": "string",
          "description": "Issue description."
        },
        "first_observed_behavior": {
          "type": "string",
          "description": "First observed behavior."
        },
        "expected_behavior": {
          "type": "string",
          "description": "Expected behavior."
        }
      }
    },
    "suspected_failure": {
      "type": "object",
      "description": "Suspected failure classification.",
      "additionalProperties": false,
      "required": [
        "failure_class",
        "failure_notes",
        "suspected_system",
        "confidence_level"
      ],
      "properties": {
        "failure_class": {
          "type": "string",
          "enum": [
            "stale_endpoint",
            "wrong_sheet",
            "missing_hidden_field",
            "alert_missing",
            "webhook_mismatch",
            "crm_destination_unknown",
            "route_key_missing",
            "form_unavailable",
            "page_unavailable",
            "destination_mismatch",
            "evidence_missing",
            "other"
          ],
          "description": "Failure class."
        },
        "failure_notes": {
          "type": "string",
          "description": "Failure notes."
        },
        "suspected_system": {
          "type": "string",
          "description": "Suspected system."
        },
        "confidence_level": {
          "type": "string",
          "enum": [
            "low",
            "medium",
            "high",
            "unknown"
          ],
          "description": "Confidence level."
        }
      }
    },
    "evidence": {
      "type": "object",
      "description": "Available and missing evidence.",
      "additionalProperties": false,
      "required": [
        "available_evidence",
        "missing_evidence",
        "live_submission_evidence",
        "test_submission_evidence",
        "log_or_screenshot_reference",
        "evidence_collected_at",
        "evidence_limitations"
      ],
      "properties": {
        "available_evidence": {
          "type": "array",
          "description": "Available evidence.",
          "items": {
            "type": "string",
            "description": "One item."
          }
        },
        "missing_evidence": {
          "type": "array",
          "description": "Missing evidence.",
          "items": {
            "type": "string",
            "description": "One item."
          }
        },
        "live_submission_evidence": {
          "type": "string",
          "description": "Live submission evidence or not_provided."
        },
        "test_submission_evidence": {
          "type": "string",
          "description": "Test submission evidence or not_provided."
        },
        "log_or_screenshot_reference": {
          "type": "string",
          "description": "Log or screenshot reference."
        },
        "evidence_collected_at": {
          "type": "string",
          "description": "Evidence collection timestamp."
        },
        "evidence_limitations": {
          "type": "array",
          "description": "Evidence limitations.",
          "items": {
            "type": "string",
            "description": "One item."
          }
        }
      }
    },
    "impact": {
      "type": "object",
      "description": "Incident impact.",
      "additionalProperties": false,
      "required": [
        "customer_impact",
        "lead_capture_impact",
        "reporting_impact",
        "urgency",
        "affected_channels"
      ],
      "properties": {
        "customer_impact": {
          "type": "string",
          "description": "Customer impact."
        },
        "lead_capture_impact": {
          "type": "string",
          "description": "Lead capture impact."
        },
        "reporting_impact": {
          "type": "string",
          "description": "Reporting impact."
        },
        "urgency": {
          "type": "string",
          "enum": [
            "monitor",
            "fix_next",
            "fix_now",
            "critical",
            "unknown"
          ],
          "description": "Urgency."
        },
        "affected_channels": {
          "type": "array",
          "description": "Affected channels.",
          "items": {
            "type": "string",
            "description": "One item."
          }
        }
      }
    },
    "workaround": {
      "type": "object",
      "description": "Temporary workaround status.",
      "additionalProperties": false,
      "required": [
        "workaround_needed",
        "temporary_workaround_message",
        "manual_routing_instruction",
        "workaround_owner",
        "workaround_status"
      ],
      "properties": {
        "workaround_needed": {
          "type": "boolean",
          "description": "Whether workaround is needed."
        },
        "temporary_workaround_message": {
          "type": "string",
          "description": "Temporary workaround message."
        },
        "manual_routing_instruction": {
          "type": "string",
          "description": "Manual routing instruction."
        },
        "workaround_owner": {
          "type": "string",
          "description": "Workaround owner."
        },
        "workaround_status": {
          "type": "string",
          "enum": [
            "not_needed",
            "drafted",
            "ready_for_handoff",
            "active_confirmed",
            "expired",
            "unverified"
          ],
          "description": "Workaround status."
        }
      }
    },
    "resolution": {
      "type": "object",
      "description": "Resolution status. Do not mark resolved without evidence.",
      "additionalProperties": false,
      "required": [
        "resolution_status",
        "resolution_summary",
        "fixed_by",
        "fixed_at",
        "required_resolution_evidence",
        "confirmation_notes"
      ],
      "properties": {
        "resolution_status": {
          "type": "string",
          "enum": [
            "open",
            "investigating",
            "workaround_ready",
            "awaiting_fix",
            "fix_claimed_unverified",
            "resolved_confirmed",
            "closed_no_action",
            "failed_downstream"
          ],
          "description": "Resolution status."
        },
        "resolution_summary": {
          "type": "string",
          "description": "Resolution summary."
        },
        "fixed_by": {
          "type": "string",
          "description": "Who fixed it, if confirmed."
        },
        "fixed_at": {
          "type": "string",
          "description": "When fixed, if confirmed."
        },
        "required_resolution_evidence": {
          "type": "array",
          "description": "Evidence required to confirm resolution.",
          "items": {
            "type": "string",
            "description": "One item."
          }
        },
        "confirmation_notes": {
          "type": "string",
          "description": "Confirmation notes."
        }
      }
    },
    "validation": {
      "type": "object",
      "description": "Incident validation state.",
      "additionalProperties": false,
      "required": [
        "routing_qa_required",
        "hard_contract_required",
        "validation_status",
        "missing_evidence",
        "next_validation_step"
      ],
      "properties": {
        "routing_qa_required": {
          "type": "boolean",
          "description": "Whether routing QA is required."
        },
        "hard_contract_required": {
          "type": "boolean",
          "description": "Whether hard contract is required."
        },
        "validation_status": {
          "type": "string",
          "enum": [
            "draft",
            "unverified",
            "failed",
            "blocked_missing_evidence",
            "awaiting_downstream_confirmation",
            "downstream_confirmed",
            "resolved_confirmed"
          ],
          "description": "Validation status."
        },
        "missing_evidence": {
          "type": "array",
          "description": "Missing evidence.",
          "items": {
            "type": "string",
            "description": "One item."
          }
        },
        "next_validation_step": {
          "type": "string",
          "description": "Next validation step."
        }
      }
    },
    "handoff": {
      "type": "object",
      "description": "Handoff details. Handoff is not downstream completion.",
      "additionalProperties": false,
      "required": [
        "handoff_name",
        "source_run_id",
        "owner_team",
        "target_system",
        "payload_summary",
        "required_fields",
        "missing_fields",
        "validation_state",
        "next_human_or_system_action",
        "handoff_status"
      ],
      "properties": {
        "handoff_name": {
          "type": "string",
          "description": "Handoff name."
        },
        "source_run_id": {
          "type": "string",
          "description": "Source run ID."
        },
        "owner_team": {
          "type": "string",
          "description": "Owner team."
        },
        "target_system": {
          "type": "string",
          "description": "Target system."
        },
        "payload_summary": {
          "type": "string",
          "description": "Payload summary."
        },
        "required_fields": {
          "type": "array",
          "description": "Required fields.",
          "items": {
            "type": "string",
            "description": "One item."
          }
        },
        "missing_fields": {
          "type": "array",
          "description": "Missing fields.",
          "items": {
            "type": "string",
            "description": "One item."
          }
        },
        "validation_state": {
          "type": "string",
          "description": "Validation state."
        },
        "next_human_or_system_action": {
          "type": "string",
          "description": "Next action."
        },
        "handoff_status": {
          "type": "string",
          "enum": [
            "drafted",
            "ready_for_handoff",
            "handed_off",
            "awaiting_downstream_confirmation",
            "downstream_confirmed",
            "failed_downstream",
            "archived"
          ],
          "description": "Handoff status."
        }
      }
    },
    "downstream_status": {
      "type": "string",
      "enum": [
        "not_sent",
        "handed_off",
        "awaiting_confirmation",
        "confirmed",
        "failed"
      ],
      "description": "Downstream status."
    }
  }
}
