Skip to main content

support.triage/1

Triage one support ticket: read it at its current revision, know who raised it, have a proposed classification reviewed, and route it under authority; escalate under authority when its service-level target is breached, and hand it to a person when it cannot be triaged.

Dependency graph​

Which actions may produce which evidence, which claims that evidence establishes, and which outcomes and obligations rest on those claims. Hover or focus a node to trace what it rests on.

Protocol · revision 1

support.triage/1

Triage one support ticket: read it at its current revision, know who raised it, have a proposed classification reviewed, and route it under authority; escalate under authority when its service-level target is breached, and hand it to a person when it cannot be triaged.

  • Actions7
  • Evidence kinds6
  • Claims9
  • Outcomes3
  • Obligations1
  • Claim supports claim
  • Precondition, traced on hover
  • Needs authority
ACTION · NONEclassification.reviewACTION · WRITEescalation.requestACTION · WRITEreply.draftACTION · READrequester.lookupACTION · NONEticket.classifyACTION · READticket.readACTION · WRITEticket.routeEVIDENCE KINDclassificationEVIDENCE KINDclassification_reviewEVIDENCE KINDescalation_recordEVIDENCE KINDrequester_profileEVIDENCE KINDrouting_recordEVIDENCE KINDticket_snapshotCLAIMclassification.proposedCLAIMclassification.reviewedCLAIMescalation.requestedCLAIMrequester.knownCLAIMsla.breachedCLAIMticket.classifiedCLAIMticket.currentCLAIMticket.routedCLAIMticket.triagedOUTCOMEescalatedOUTCOMEneeds_humanOUTCOMEtriagedOBLIGATIONescalate_sla_breach

Hover or focus a node to trace what it rests on and what rests on it. Press Enter to pin it, Escape to clear.

Protocol as text
Actions
NameDescriptionRuleLeads to
classification.reviewapprove or reject the proposed classification, under authorityclaim classification.proposed needs classification.review effect noneproduces classification_review
escalation.requestrequest an escalation; needs a current read showing the target breached, and authorityclaim sla.breached needs escalation.request effect writeproduces escalation_record
reply.draftdraft a reply to the requester for a person to send; needs the classification decided and authorityclaim ticket.classified needs reply.draft effect write—
requester.lookuplook up the person who raised the ticketclaim ticket.current effect readproduces requester_profile
ticket.classifypropose a category and priority for the ticket; changes nothing outside the caseclaim ticket.current effect noneproduces classification
ticket.readread the ticket at its current revisioneffect readproduces ticket_snapshot
ticket.routeroute the ticket to a queue or owner; only after the classification is decided (step order, decision record 0084) and the requester is known, and only under authorityall of claim requester.known claim ticket.classified needs ticket.route effect writeproduces routing_record
Evidence kinds
NameDescriptionRuleLeads to
classificationa proposed category and priority for one ticket revision, each one the deployment declares—establishes classification.proposed (about ticket)
classification_reviewa review of the proposed classification; its result is approved or rejected—establishes classification.reviewed (approved about ticket)
escalation_recordthe record that an escalation was requested for the ticket, naming where it went—establishes escalation.requested (about ticket)
requester_profilethe requester looked up; its result is identified or unidentified—establishes requester.known (identified about requester)
routing_recordthe record that the ticket was routed to a queue or owner, naming the target—establishes ticket.routed (about ticket)
ticket_snapshotthe ticket read at one revision: its id, revision, a digest and its service-level status when read, never its text; its result is breached or within_target. A read older than 15 minutes no longer says whether the target is breached—establishes sla.breached (breached about ticket); establishes ticket.current (about ticket)
Claims
NameDescriptionRuleLeads to
classification.proposeda category and priority are proposed for the current ticket revisionany evidence: classificationsupports ticket.classified; gates classification.review
classification.reviewedthe classification of the current ticket revision is reviewed and approvedevidence = approved: classification_reviewsupports ticket.classified; requires needs_human (false)
escalation.requestedan escalation is requested for the current ticket revisionany evidence: escalation_recordrequires escalated; requires escalate_sla_breach
requester.knownthe requester is identifiedevidence = identified: requester_profilesupports ticket.triaged; requires needs_human (false); gates ticket.route
sla.breachedthe ticket's service-level target is breached, by a current read of the ticketevidence = breached: ticket_snapshotrequires escalated; requires triaged (false); requires escalate_sla_breach (false); gates escalation.request
ticket.classifiedcategory and priority are decided on current evidence: the current ticket revision is read, a classification is proposed for it and the review approved itall of claim classification.proposed claim classification.reviewed claim ticket.currentsupports ticket.triaged; gates reply.draft; gates ticket.route
ticket.currentthe ticket has been read at its current revision, recently enough to trustany evidence: ticket_snapshotsupports ticket.classified; gates requester.lookup; gates ticket.classify
ticket.routedthe current ticket revision is routed to a queue or ownerany evidence: routing_recordsupports ticket.triaged
ticket.triagedcategory, priority and route are decided on current evidence, for an identified requesterall of claim requester.known claim ticket.classified claim ticket.routedrequires triaged
Outcomes
NameDescriptionRuleLeads to
escalatedthe ticket's service-level target is breached and an escalation is requestedall of claim escalation.requested claim sla.breached—
needs_humanthe ticket goes to a person: the review rejected the proposed classification, or the requester could not be identifiedany of claim is false: classification.reviewed claim is false: requester.known—
triagedthe ticket is triaged: category, priority and route decided on current evidence, with its service-level target not breachedall of claim is false: sla.breached claim ticket.triaged—
Obligations
NameDescriptionRuleLeads to
escalate_sla_breacha breached service-level target needs escalation; discharged once a current read shows the target not breached, or once an escalation is requestedany of claim escalation.requested claim is false: sla.breached—

Source: protocols/support-triage/1.yaml

Actions​

What can be done in a case: what it needs first, which authority it requires, the class of effect it has and the evidence it may produce.

ActionDescriptionPreconditionRequires capabilityEffectMay produce
classification.reviewapprove or reject the proposed classification, under authorityclassification.proposed is TRUEclassification.reviewnoneclassification_review
escalation.requestrequest an escalation; needs a current read showing the target breached, and authoritysla.breached is TRUEescalation.requestwriteescalation_record
reply.draftdraft a reply to the requester for a person to send; needs the classification decided and authorityticket.classified is TRUEreply.draftwriteno evidence
requester.lookuplook up the person who raised the ticketticket.current is TRUEno authorityreadrequester_profile
ticket.classifypropose a category and priority for the ticket; changes nothing outside the caseticket.current is TRUEno authoritynoneclassification
ticket.readread the ticket at its current revisionnoneno authorityreadticket_snapshot
ticket.routeroute the ticket to a queue or owner; only after the classification is decided (step order, decision record 0084) and the requester is known, and only under authorityall of (requester.known is TRUE; ticket.classified is TRUE)ticket.routewriterouting_record

Evidence kinds​

The kinds of evidence this protocol admits. A kind with a maximum age applies for that long after a record's observed_at: evaluated at a later instant, the record is excluded as expired.

Evidence kindDescriptionApplies forProduced byUsed by claims
classificationa proposed category and priority for one ticket revision, each one the deployment declaresno limitticket.classifyclassification.proposed
classification_reviewa review of the proposed classification; its result is approved or rejectedno limitclassification.reviewclassification.reviewed
escalation_recordthe record that an escalation was requested for the ticket, naming where it wentno limitescalation.requestescalation.requested
requester_profilethe requester looked up; its result is identified or unidentifiedno limitrequester.lookuprequester.known
routing_recordthe record that the ticket was routed to a queue or owner, naming the targetno limitticket.routeticket.routed
ticket_snapshotthe ticket read at one revision: its id, revision, a digest and its service-level status when read, never its text; its result is breached or within_target. A read older than 15 minutes no longer says whether the target is breached15m after it is observedticket.readsla.breached, ticket.current

Claims​

Each claim is TRUE, FALSE or UNKNOWN, established from evidence by its predicate. Missing or stale evidence leaves a claim UNKNOWN, never FALSE.

ClaimDescriptionTrue when
classification.proposeda category and priority are proposed for the current ticket revisionevidence classification about ticket
classification.reviewedthe classification of the current ticket revision is reviewed and approvedevidence classification_review with result approved about ticket
escalation.requestedan escalation is requested for the current ticket revisionevidence escalation_record about ticket
requester.knownthe requester is identifiedevidence requester_profile with result identified about requester
sla.breachedthe ticket's service-level target is breached, by a current read of the ticketevidence ticket_snapshot with result breached about ticket
ticket.classifiedcategory and priority are decided on current evidence: the current ticket revision is read, a classification is proposed for it and the review approved itall of (classification.proposed is TRUE; classification.reviewed is TRUE; ticket.current is TRUE)
ticket.currentthe ticket has been read at its current revision, recently enough to trustevidence ticket_snapshot about ticket
ticket.routedthe current ticket revision is routed to a queue or ownerevidence routing_record about ticket
ticket.triagedcategory, priority and route are decided on current evidence, for an identified requesterall of (requester.known is TRUE; ticket.classified is TRUE; ticket.routed is TRUE)

Obligations​

What must be done before a case can be complete, and what discharges it. An obligation stays open until its predicate is TRUE; its predicate being UNKNOWN does not discharge it.

ObligationDescriptionDischarged when
escalate_sla_breacha breached service-level target needs escalation; discharged once a current read shows the target not breached, or once an escalation is requestedany of (escalation.requested is TRUE; sla.breached is FALSE)

Outcomes​

The legitimate terminal interpretations of a case, and what each requires.

OutcomeDescriptionRequires
escalatedthe ticket's service-level target is breached and an escalation is requestedall of (escalation.requested is TRUE; sla.breached is TRUE)
needs_humanthe ticket goes to a person: the review rejected the proposed classification, or the requester could not be identifiedany of (classification.reviewed is FALSE; requester.known is FALSE)
triagedthe ticket is triaged: category, priority and route decided on current evidence, with its service-level target not breachedall of (sla.breached is FALSE; ticket.triaged is TRUE)

Artifacts​

The things whose revisions evidence is bound to.

ArtifactDescription
requesterthe person who raised the ticket, with the organization they belong to
ticketthe support request a case triages, referenced by its tracker id; its revision moves when the requester's side of the request changes, not when routing fields or internal notes change. The case stores no ticket text