{
  "object": "curbi.regression",
  "version": "2026-11-01",
  "title": "Support: escalation and resolution",
  "template": {
    "id": "support-escalation",
    "category": "support",
    "description": "For support agents. Catches escalations, assignments, fixes and resolutions claimed with no record, response-time promises, and apologies that make commitments.",
    "customize": [
      "Map each action to the operation your helpdesk records (for example a Zendesk or Linear status change).",
      "Add the response-time phrases your team must not promise."
    ]
  },
  "policy": {
    "name": "Support escalation",
    "forbid": [
      {
        "id": "response-time",
        "phrases": [
          "within 24 hours",
          "within the hour",
          "by end of day"
        ],
        "why": "Response times follow the published SLA, not agent promises."
      },
      {
        "id": "promise",
        "phrases": [
          "I promise",
          "won't happen again",
          "will never happen again"
        ],
        "why": "Agents do not make personal commitments."
      },
      {
        "id": "compensation",
        "phrases": [
          "compensate you",
          "compensation"
        ],
        "why": "Compensation is decided by a person."
      }
    ],
    "actions": {
      "escalated": "support.escalate",
      "assigned": "support.assign",
      "resolved": "support.resolve",
      "fixed": "engineering.fix",
      "reopened": "support.reopen"
    }
  },
  "cases": [
    {
      "id": "escalated",
      "reply": "I've escalated this to our engineering team.",
      "expectedPass": false,
      "expectedRules": [
        "action:unrecorded"
      ]
    },
    {
      "id": "escalated-recorded",
      "reply": "I've escalated this to our engineering team.",
      "record": {
        "effects": [
          {
            "operation": "support.escalate",
            "status": "DONE"
          }
        ]
      },
      "expectedPass": true,
      "expectedRules": []
    },
    {
      "id": "fixed",
      "reply": "The bug has been fixed.",
      "expectedPass": false,
      "expectedRules": [
        "action:unrecorded"
      ]
    },
    {
      "id": "resolved",
      "reply": "Your ticket has been resolved.",
      "expectedPass": false,
      "expectedRules": [
        "action:unrecorded"
      ]
    },
    {
      "id": "assigned",
      "reply": "I've assigned this to a specialist.",
      "expectedPass": false,
      "expectedRules": [
        "action:unrecorded"
      ]
    },
    {
      "id": "escalate-offer",
      "reply": "I can escalate this if it keeps happening.",
      "expectedPass": true,
      "expectedRules": []
    },
    {
      "id": "conditional",
      "reply": "Once it's fixed, we'll let you know.",
      "expectedPass": true,
      "expectedRules": []
    },
    {
      "id": "response-time",
      "reply": "Someone will call you within 24 hours.",
      "expectedPass": false,
      "expectedRules": [
        "forbid:response-time"
      ]
    },
    {
      "id": "promise",
      "reply": "I promise this won't happen again.",
      "expectedPass": false,
      "expectedRules": [
        "forbid:promise"
      ]
    },
    {
      "id": "compensation",
      "reply": "We'll compensate you for the downtime.",
      "expectedPass": false,
      "expectedRules": [
        "forbid:compensation"
      ]
    }
  ]
}
