{
  "format": "minctrl.process/v1",
  "graph": {
    "edges": [
      {
        "id": "e0___start____intake",
        "source": "__start__",
        "target": "intake"
      },
      {
        "id": "e1_intake__intake-triage-gate",
        "source": "intake",
        "target": "intake-triage-gate"
      },
      {
        "id": "e2_intake-triage-gate__split-telemetry",
        "label": "proceed to diagnosis",
        "source": "intake-triage-gate",
        "target": "split-telemetry"
      },
      {
        "id": "e3_intake-triage-gate__monitor",
        "label": "suppress (known outage, duplicate, or non-technical issue)",
        "source": "intake-triage-gate",
        "target": "monitor"
      },
      {
        "id": "e4_split-telemetry__read-device",
        "source": "split-telemetry",
        "target": "read-device"
      },
      {
        "id": "e5_split-telemetry__read-network",
        "source": "split-telemetry",
        "target": "read-network"
      },
      {
        "id": "e6_read-device__diagnose",
        "source": "read-device",
        "target": "diagnose"
      },
      {
        "id": "e7_read-network__diagnose",
        "source": "read-network",
        "target": "diagnose"
      },
      {
        "id": "e8_diagnose__expert-escalation-check",
        "source": "diagnose",
        "target": "expert-escalation-check"
      },
      {
        "id": "e9_expert-escalation-check__fault-type",
        "label": "routine diagnosis (node fault, common premises issue)",
        "source": "expert-escalation-check",
        "target": "fault-type"
      },
      {
        "id": "e10_expert-escalation-check__expert-review",
        "label": "complex or unknown fault (rare device, cross-carrier, ambiguous classification)",
        "source": "expert-escalation-check",
        "target": "expert-review"
      },
      {
        "id": "e11_expert-review__fault-type",
        "source": "expert-review",
        "target": "fault-type"
      },
      {
        "id": "e12_fault-type__autoclear-node",
        "label": "node / outage fault (no physical work)",
        "source": "fault-type",
        "target": "autoclear-node"
      },
      {
        "id": "e13_fault-type__remediate",
        "label": "premises fault (remotely fixable or physical)",
        "source": "fault-type",
        "target": "remediate"
      },
      {
        "id": "e14_remediate__line-healthy",
        "source": "remediate",
        "target": "line-healthy"
      },
      {
        "id": "e15_line-healthy__monitor",
        "label": "resolved — line restored",
        "source": "line-healthy",
        "target": "monitor"
      },
      {
        "id": "e16_line-healthy__diagnose",
        "label": "still impaired — re-diagnose (rework)",
        "source": "line-healthy",
        "target": "diagnose"
      },
      {
        "id": "e17_line-healthy__recommend",
        "label": "unresolved — physical root cause",
        "source": "line-healthy",
        "target": "recommend"
      },
      {
        "id": "e18_recommend__dispatch-gate",
        "source": "recommend",
        "target": "dispatch-gate"
      },
      {
        "id": "e19_dispatch-gate__commit-dispatch",
        "label": "approve truck roll",
        "source": "dispatch-gate",
        "target": "commit-dispatch"
      },
      {
        "id": "e20_dispatch-gate__monitor",
        "label": "reject truck roll — issue deemed non-physical or deferred to next window",
        "source": "dispatch-gate",
        "target": "monitor"
      },
      {
        "id": "e21_commit-dispatch__monitor",
        "source": "commit-dispatch",
        "target": "monitor"
      },
      {
        "id": "e22_autoclear-node__monitor",
        "source": "autoclear-node",
        "target": "monitor"
      },
      {
        "id": "e23_monitor____end__",
        "source": "monitor",
        "target": "__end__"
      }
    ],
    "nodes": [
      {
        "agent": null,
        "confidential": false,
        "gate": null,
        "gateway": null,
        "human": null,
        "id": "__start__",
        "interrupt_before": false,
        "kind": "terminal",
        "label": "Start",
        "position": {
          "x": 0,
          "y": 0
        },
        "reversible": true,
        "sla": null,
        "sla_spec": null,
        "tier": "terminal",
        "tools": []
      },
      {
        "agent": "intake",
        "confidential": false,
        "gate": null,
        "gateway": null,
        "human": null,
        "id": "intake",
        "interrupt_before": false,
        "kind": "agent",
        "label": "Pull the trouble ticket and customer/service record, and enrich with account and prior-truck-roll history",
        "position": {
          "x": 0,
          "y": 120
        },
        "reversible": true,
        "sla": null,
        "sla_spec": null,
        "tier": "low",
        "tools": [
          "servicenow",
          "amdocs",
          "oss-inventory"
        ]
      },
      {
        "agent": null,
        "confidential": false,
        "gate": "gate:intake-classification",
        "gateway": null,
        "human": "Field-ops triage specialist",
        "id": "intake-triage-gate",
        "interrupt_before": true,
        "kind": "gate",
        "label": "Is this ticket worthy of remote diagnosis, or should it be auto-suppressed (duplicate, known outage, customer behavior issue)? Gate prevents diagnostic effort waste on non-technical tickets.",
        "position": {
          "x": 0,
          "y": 240
        },
        "reversible": false,
        "sla": null,
        "sla_spec": null,
        "tier": "high",
        "tools": []
      },
      {
        "agent": null,
        "confidential": false,
        "gate": null,
        "gateway": "parallel",
        "human": null,
        "id": "split-telemetry",
        "interrupt_before": false,
        "kind": "gateway",
        "label": "Gather device and network telemetry concurrently",
        "position": {
          "x": 0,
          "y": 360
        },
        "reversible": true,
        "sla": null,
        "sla_spec": null,
        "tier": "gateway",
        "tools": []
      },
      {
        "agent": "analyzer",
        "confidential": false,
        "gate": null,
        "gateway": null,
        "human": null,
        "id": "read-device",
        "interrupt_before": false,
        "kind": "agent",
        "label": "Read live device and line telemetry: modem/ONT status, DSL/PON sync, SNR/RxPower, error counters",
        "position": {
          "x": 0,
          "y": 480
        },
        "reversible": true,
        "sla": null,
        "sla_spec": null,
        "tier": "low",
        "tools": [
          "acs-tr069",
          "ems-dslam-olt"
        ]
      },
      {
        "agent": "analyzer",
        "confidential": false,
        "gate": null,
        "gateway": null,
        "human": null,
        "id": "read-network",
        "interrupt_before": false,
        "kind": "agent",
        "label": "Read surrounding node/network health and active outage/alarm state for the serving DSLAM/OLT",
        "position": {
          "x": 0,
          "y": 600
        },
        "reversible": true,
        "sla": null,
        "sla_spec": null,
        "tier": "low",
        "tools": [
          "netcracker",
          "pagerduty"
        ]
      },
      {
        "agent": "diagnostician",
        "confidential": false,
        "gate": null,
        "gateway": null,
        "human": null,
        "id": "diagnose",
        "interrupt_before": false,
        "kind": "agent",
        "label": "Correlate both telemetry streams to a root cause, separate node/outage faults from premises faults, and classify remotely-fixable vs needs-physical-work",
        "position": {
          "x": 0,
          "y": 720
        },
        "reversible": true,
        "sla": null,
        "sla_spec": null,
        "tier": "medium",
        "tools": [
          "netcracker",
          "ems-dslam-olt"
        ]
      },
      {
        "agent": null,
        "confidential": false,
        "gate": null,
        "gateway": "exclusive",
        "human": null,
        "id": "expert-escalation-check",
        "interrupt_before": false,
        "kind": "gateway",
        "label": "Does the diagnosis require expert review (rare fault, cross-carrier, unknown device, or unusual classification)?",
        "position": {
          "x": 0,
          "y": 840
        },
        "reversible": true,
        "sla": null,
        "sla_spec": null,
        "tier": "gateway",
        "tools": []
      },
      {
        "agent": null,
        "confidential": false,
        "gate": "gate:expert-diagnosis-approval",
        "gateway": null,
        "human": "Senior Network Engineer",
        "id": "expert-review",
        "interrupt_before": true,
        "kind": "gate",
        "label": "Senior network engineer reviews diagnosis, approves fault classification and remediation strategy before proceeding",
        "position": {
          "x": 0,
          "y": 960
        },
        "reversible": false,
        "sla": null,
        "sla_spec": null,
        "tier": "high",
        "tools": []
      },
      {
        "agent": null,
        "confidential": false,
        "gate": null,
        "gateway": "exclusive",
        "human": null,
        "id": "fault-type",
        "interrupt_before": false,
        "kind": "gateway",
        "label": "Fault type?",
        "position": {
          "x": 0,
          "y": 1080
        },
        "reversible": true,
        "sla": null,
        "sla_spec": null,
        "tier": "gateway",
        "tools": []
      },
      {
        "agent": "diagnostician",
        "confidential": false,
        "gate": null,
        "gateway": null,
        "human": null,
        "id": "autoclear-node",
        "interrupt_before": false,
        "kind": "agent",
        "label": "Self-healing or known node/outage fault: suppress dispatch, attach the outage ticket, and queue for outage-restore monitoring (no premises work)",
        "position": {
          "x": 0,
          "y": 1200
        },
        "reversible": true,
        "sla": "High-priority or enterprise SLA customers may warrant human confirmation before auto-suppress; triage specialist should intervene if SLA tier is strict",
        "sla_spec": null,
        "tier": "low",
        "tools": [
          "netcracker",
          "pagerduty"
        ]
      },
      {
        "agent": "remediator",
        "confidential": false,
        "gate": null,
        "gateway": null,
        "human": null,
        "id": "remediate",
        "interrupt_before": false,
        "kind": "agent",
        "label": "Run guided remote remediation (modem reboot, line/profile resync, config or firmware push) and re-verify the line; auto-roll back on regression",
        "position": {
          "x": 0,
          "y": 1320
        },
        "reversible": true,
        "sla": null,
        "sla_spec": null,
        "tier": "medium",
        "tools": [
          "acs-tr069",
          "ems-dslam-olt"
        ]
      },
      {
        "agent": null,
        "confidential": false,
        "gate": null,
        "gateway": "exclusive",
        "human": null,
        "id": "line-healthy",
        "interrupt_before": false,
        "kind": "gateway",
        "label": "Line healthy after remediation?",
        "position": {
          "x": 0,
          "y": 1440
        },
        "reversible": true,
        "sla": null,
        "sla_spec": null,
        "tier": "gateway",
        "tools": []
      },
      {
        "agent": "recommender",
        "confidential": false,
        "gate": null,
        "gateway": null,
        "human": null,
        "id": "recommend",
        "interrupt_before": false,
        "kind": "agent",
        "label": "Draft the dispatch recommendation with root cause, evidence, skill/parts needed, and a truck-roll-vs-defer rationale",
        "position": {
          "x": 0,
          "y": 1560
        },
        "reversible": true,
        "sla": null,
        "sla_spec": null,
        "tier": "low",
        "tools": [
          "servicenow",
          "oss-inventory"
        ]
      },
      {
        "agent": null,
        "confidential": false,
        "gate": "gate:dispatch-authorization",
        "gateway": null,
        "human": "Field-ops dispatch manager",
        "id": "dispatch-gate",
        "interrupt_before": true,
        "kind": "gate",
        "label": "Review the evidence and authorize (or reject) the truck roll",
        "position": {
          "x": 0,
          "y": 1680
        },
        "reversible": false,
        "sla": null,
        "sla_spec": null,
        "tier": "high",
        "tools": []
      },
      {
        "agent": "submit",
        "confidential": false,
        "gate": null,
        "gateway": null,
        "human": null,
        "id": "commit-dispatch",
        "interrupt_before": false,
        "kind": "agent",
        "label": "Commit the authorized field work order, reserve the technician slot and parts, and notify the customer of the appointment",
        "position": {
          "x": 0,
          "y": 1800
        },
        "reversible": false,
        "sla": null,
        "sla_spec": null,
        "tier": "high",
        "tools": [
          "servicenow",
          "amdocs",
          "workforce-mgmt"
        ]
      },
      {
        "agent": "monitor",
        "confidential": false,
        "gate": null,
        "gateway": null,
        "human": null,
        "id": "monitor",
        "interrupt_before": false,
        "kind": "agent",
        "label": "Track dispatch/restore outcome and SLA, capture no-fault-found feedback, and update the diagnostic model and ticket",
        "position": {
          "x": 0,
          "y": 1920
        },
        "reversible": true,
        "sla": null,
        "sla_spec": null,
        "tier": "low",
        "tools": [
          "servicenow",
          "pagerduty"
        ]
      },
      {
        "agent": null,
        "confidential": false,
        "gate": null,
        "gateway": null,
        "human": null,
        "id": "__end__",
        "interrupt_before": false,
        "kind": "terminal",
        "label": "Done",
        "position": {
          "x": 0,
          "y": 2040
        },
        "reversible": true,
        "sla": null,
        "sla_spec": null,
        "tier": "terminal",
        "tools": []
      }
    ]
  },
  "hash": "72ca4f955ccb38470b2ac8193954034c34f2670b9422de07f0406e595323c2a3",
  "name": "Truck-roll avoidance autopilot",
  "slug": "tech-triage-truckroll-avoidance",
  "source": "example",
  "version": null,
  "violations": []
}
