How AI is used
Deterministic first, model second, human approval always.
An AI agent in this system is an operator with a badge. It reads through the same API as a browser, proposes rather than acts, and everything it does is recorded under its own name and the name of the person it worked for. Nothing in the control path depends on a model being right.
TRIGGERS
Conditions are data, not code
A trigger is a row: a tag, a condition, a sustain time, a cooldown, and an action from a fixed catalogue such as opening a non-conformance or raising a maintenance order. An agent may draft one; a person approves it before it evaluates a single reading.
RECOMMENDATIONS
The agent proposes, an engineer approves, the PLC follows
A write to a setpoint passes three independent guards: the tag map must declare it writable, the value must sit inside declared bounds, and a human must approve it on screen. After the write, the process value is checked and the verdict is recorded.
EVALS
Agents are graded against known truth
The simulator scripts a fault and the eval asks a question with a known answer. The agent answers through the tools alone and is scored strictly: naming the symptom alongside the cause fails. Agent usability becomes a trend, the way honesty already is.
One loop, end to end, on the bottling demo
The washer drifts three degrees hot. Scrap climbs at the washer and, with no alarm of its own, the filler downstream starts short-filling by nine grams. Fill-weight checks fail.
An agent, asked which machine caused the failures, reads the alarm history and the tag trends and answers WASH01, not the filler where the checks were taken.
It proposes lowering the wash temperature setpoint from 71 to 68 with the evidence attached. An engineer approves on screen. Six seconds later the agent writes 68.0 to the simulated PLC. Four and a half minutes later the verification runs, and the receipt on the right is what it recorded.
Recorded verification, adjustment ADJ-00001, tag WASH01.WashTempSP
{
"proposed_by": "AGENT on behalf of scott",
"approved_by": "ADMIN",
"written_after_approval_s": 6,
"setpoint": 68.0,
"pv_before": 71.6,
"pv_after": 67.6,
"followed": true
}
Eval: "Which machine caused the failed fill-weight checks?" → answer WASH01, pass. The filler was a distractor.
Floor assistantRoutes a question, quotes the approved procedure, points at the right guide. Runs on a local model; falls back to plain text matching when the model is down.
Instruction draftingDrafts work instructions from facts the plant already holds. Every draft arrives unapproved and stays that way until a supervisor signs it.
Nightly narrationOne note a day. The model is handed computed numbers and asked only what changed; it never computes a number itself.
No cloud requiredThe local model runs on an ordinary GPU on the same box. A hosted model is optional, and the control path never depends on either.