operations · data schema · v0.1.0
Agent Triage Handoff Schema
Defines the structured, advisory output an AI agent produces after running Plant Issue Intake & Triage — capturing safety/authority flags, domain routing, retrieval targets, missing data, and a non-authorizing summary.
Executive summary
An output/handoff contract, not an action plan. After triage normalizes a messy report, this schema standardizes what the agent hands off: a neutral issue summary, intake completeness, a safety routing status (never a clearance), domain routing flags, the recommended next route, retrieval targets, missing-data questions, a non-authorizing advisory summary, explicit authority limits, an escalation flag, the human owner of the decision, and a required not-authorization statement. It makes agent outputs consistent without authorizing any action.
Machine-readable contract: /schemas/agent-triage-handoff.schema.json · Used by: triage-agent, troubleshooting-agent, shift-handover-agent
Fields
| Field | Type | Required | Description | Allowed values |
|---|---|---|---|---|
issueSummary | string | Yes | Short neutral restatement of the issue (description, not diagnosis). | — |
intakeCompleteness | enum | Yes | How complete the normalized intake is. | complete, partial, insufficient |
safetyStatus | enum | Yes | Routing status for safety — never a safety clearance. | no-immediate-flag-observed, possible-concern-routed-to-authority, imminent-hazard-routed-to-emergency-procedure |
domainFlags | array<enum> | No | Routing labels (not conclusions) for domains touched. | safety, environmental, quality, process, maintenance, data-quality, unknown |
recommendedRoute | enum | Yes | Where the issue goes next (a routing recommendation, not an instruction to act). | plant-issue-intake-triage, kiln-upset-intake-routing, qc-out-of-trend-review, bearing-temperature-rise-review, raw-mix-correction, site-emergency-safety-procedure, environmental-authority, qc-authority, operations-process-engineering, maintenance-reliability, human-classification |
retrievalTargets | array<string> | No | Site paths/references the next step should consult. | — |
missingDataQuestions | array<string> | No | Explicit questions/fields to request when intake is incomplete. | — |
advisorySummary | string | Yes | Non-authorizing advisory message: what to confirm/review and where to send it. No diagnosis, no numeric values, no decision. | — |
authorityLimits | array<string> | Yes | Explicit statements of what this handoff does NOT authorize. | — |
escalationRequired | boolean | Yes | True if escalation to a human authority is required before any further step. | — |
humanOwner | string | No | The role/authority that owns the actual decision. | — |
notAuthorizationStatement | string | Yes | Required explicit statement that this handoff is advisory only and authorizes nothing. | — |
Full JSON Schema
The machine-readable contract is served at
/schemas/agent-triage-handoff.schema.json. Key points:
additionalProperties: false (unknown fields are rejected), required fields are
issueSummary, intakeCompleteness, safetyStatus, recommendedRoute, advisorySummary, authorityLimits, escalationRequired, notAuthorizationStatement, and intakeCompleteness, safetyStatus,
recommendedRoute, and the domainFlags items are constrained to enums.
This is the output side of triage: the Plant Issue Intake schema captures the messy input, the Plant Issue Intake & Triage template routes it, and this schema standardizes the advisory handoff the agent produces. It is a handoff contract, not an action plan — it records routing and limits, and authorizes nothing.
Valid example
A handoff that summarizes, flags, routes, and explicitly authorizes nothing. Values are qualitative placeholders — no setpoints, limits, or thresholds.
{
"issueSummary": "Free lime reported trending up over recent samples; possible chemistry or sampling cause.",
"intakeCompleteness": "partial",
"safetyStatus": "no-immediate-flag-observed",
"domainFlags": [
"quality",
"process",
"data-quality"
],
"recommendedRoute": "qc-out-of-trend-review",
"retrievalTargets": [
"/prompts/qc-out-of-trend-review",
"/troubleshooting/high-free-lime",
"/schemas/plant-issue-intake"
],
"missingDataQuestions": [
"Latest verified XRF oxides (for LSF/SM/AM context)?",
"Free lime test method and whether the result was re-run?"
],
"advisorySummary": "Confirm the result by re-sampling/re-running and verify instruments before drawing any conclusion, then review with QC and process engineering. No cause is concluded here.",
"authorityLimits": [
"Does not authorize any product release, hold, or rejection.",
"Does not authorize any control, fuel/air, or feed change.",
"Does not conclude a diagnosis or declare compliance."
],
"escalationRequired": false,
"humanOwner": "QC authority + authorized operations / process engineering",
"notAuthorizationStatement": "Advisory only and not authorization. Release, control, and quality decisions require the appropriate human authority under site procedure."
} Invalid example (and why)
This is what a handoff must not look like. It oversteps the advisory boundary in several ways.
{
"issueSummary": "Free lime high.",
"intakeCompleteness": "complete",
"safetyStatus": "safe-to-continue",
"recommendedRoute": "increase-burning-zone-temperature",
"advisorySummary": "Raise the burning zone, release the current lot, and continue — the result is within permit limits.",
"releaseDecision": "release the lot",
"complianceStatus": "in compliance"
} Why it fails:
- Authorizes action.
recommendedRouteis a control change, not a route, andadvisorySummaryinstructs an operation and a product release. A handoff routes to a human/template; it never tells anyone to operate, release, or change control. - Declares safety and compliance.
safetyStatus: "safe-to-continue"is a clearance (not an allowed enum value), andcomplianceStatus: "in compliance"is an environmental/permit determination — both belong to human authority, not the agent. - Makes a release decision.
releaseDecisionis an extra field; withadditionalProperties: falseit is rejected, and a release/hold/reject decision is never the agent’s to make. - Invents a limit. Claiming a result is “within permit limits” reproduces/asserts a threshold the contract forbids — the agent states no setpoints, limits, or acceptance criteria.
- Drops required fields.
authorityLimits,escalationRequired, andnotAuthorizationStatementare missing, so the not-authorization guardrails are absent.
Versioning
Semantic version in version. Additive changes (new optional fields) bump the minor version; any
breaking change (new required field, removed/renamed field, tightened enum) bumps the major version
and should ship under a new $id.
AI agent use cases
- Emit a consistent, advisory handoff after running the Plant Issue Intake & Triage template.
- Validate that a triage output carries safety/authority flags, a route, and a not-authorization statement before passing it on.
- Force missing-data questions instead of a diagnosis when intake is partial or insufficient.
- Record the human owner of the decision rather than implying the agent decides.
Related
Prompts:plant issue intake triage, kiln upset intake routing, qc out of trend review, bearing temperature rise review
Pages:plant issue intake, plant issue intake triage, safety guardrails