Waterloo Road Pump Station. An operator types a question in plain English; the assistant answers it from plant records and controlled documents, and shows its evidence. This page follows one question through the assistant, names the piece of software doing each job, and marks what already exists.
Status as observed on the live host, 28 August 2026, end of day. Every status below was read from the running containers and probed by hand, not taken from the plan. Where this page and the build documents disagree, this page is the later reading.
Switching the model on was not the end of the work. Five faults surfaced within the hour, and every one had been hidden by the stand-in that replaced the model. The most important: asked how to lift an interlock, the assistant was handing the answer writer the step list — the one thing it must never reproduce — while withholding the title block it actually needed. Three more followed that afternoon, when the first real document was uploaded and found faults no fabricated one could. All eight are fixed, each is pinned by a test, and the exam grew from 67 questions to 75 to cover them.
Two more things changed later the same day, both at the customer’s direction, and both are worth understanding before the next demo. The operator’s screen no longer asks anyone to sign in — it now admits the SCADA machine by its network address alone and refuses everything else. And document management was built and put live, out of order, ahead of the exam it was meant to follow. Operators can now add and withdraw documents from a screen. Both are explained in section 3b.
One thing remains outstanding, and it is the one furthest outside this project’s control: a read-only login to the plant historian. Until it exists every figure on screen is a stand-in, and says so. A fresh instance of that gap surfaced today — see “the question that cannot be answered” in section 2.
Seven stages. The important thing to notice: the assistant decides what kind of question it is before it looks anything up, and that decision fixes both which sources it may use and what it is allowed to say.
A web page with a question box and an answer pane, opened in an ordinary browser on the control-room PC. Nothing to install. It is running on the host and has been driven by hand in a browser.
It cannot yet be reached by its name: ai.yokogawa.tech does not exist as a network record, so today it is opened down an engineer’s secure tunnel. Three names are outstanding — the screen, the assistant behind it, and the data translator.
A small, fast AI model reads the question and labels it as one of four kinds — or says it is unsure. It does no answering; it only labels. This is the most safety-relevant step in the whole assistant, because the label decides everything downstream.
Two rules are built in: if it is not confident, it asks the operator to rephrase rather than guessing; and if two labels are close, it takes the more cautious one — a question that is partly advice is treated as advice.
This step now runs. The model account arrived on 27 August 2026 and all four kinds are labelled correctly with high confidence. The dropdown it replaced is gone.
Switching it on immediately exposed a fault nothing else could have found. The worked examples the model is shown returned only the label, not the confidence figure beside it — so the model copied that shape, every question scored zero confidence, and every question fell below the caution threshold and came back as “unsure”. The stand-in had been supplying its own confidence all along, which hid the fault completely. That is the lesson worth keeping: a stand-in proves the plumbing, never the step it stands in for.
Operators say “Pump 02” or “the wet well”. The plant records call those PU-302 and WW-101. This step converts everyday names into the plant’s official ones by looking them up in a list — no AI, no guessing. When it gets a name wrong, the fix is to add the nickname to the list.
Live on the host with 8 pieces of equipment and 56 measurement points loaded, and exercised by real questions travelling the chain.
“How many high level alarms last week?”
Counts and measurements taken from the plant’s recorded history. If there are no records, the answer says so — it never estimates a figure.
“What does the level fault alarm mean?”
Explains a signal, alarm or piece of equipment from the manuals and alarm records, quoting the document it came from.
“How do I lift the interlock on Pump 02?”
Finds the approved procedure and identifies it — document number, revision, date — and quotes its prerequisites word for word. It never writes the steps itself.
“What discharge rate avoids a spill?”
Shows what has been run before, what happened when, and the documented limits — then hands the decision back to a competent person. It never gives a number as the answer.
“Is the pump alright?”
When the sorting step is not confident, the assistant stops and asks a clarifying question. No sources are searched and no answer is drafted.
The larger AI model is used here and only here: to put the gathered evidence into plain English. It cannot go looking for anything else — it only sees what its lane collected. It supplies wording, not facts.
This step now runs, and the split it was designed around held under test. Three faults appeared the moment a real model wrote the words, and every one was the same mistake: the model had been asked for a fact that should have come from the evidence — which revision of a procedure it was, what the document was called, which document a limit came from. Each time it supplied something empty or invented, and each time the rulebook refused the answer rather than showing it.
The fix in all three was the same, and it was not a better instruction: those facts now come from the retrieved document itself, so the wording step cannot influence them at all. It supplies English and nothing else — which is what it was always meant to do, now enforced rather than asked for.
Every draft is checked against a fixed rulebook before the operator sees it: no invented steps for safety-critical work, no recommended setpoint, nothing beyond the evidence actually found, and every claim carrying its citation. A draft that fails is rewritten once and then refused — it is never shown.
These are ordinary software checks written in code, not instructions given to the AI. That distinction is the point: an AI can be talked out of an instruction, and cannot be talked out of a check.
The rulebook earned its keep today, on a real question. Asked how many high level alarms there had been last week, the assistant produced an answer with a number in it — and the check refused to let it out, twice, because no records had come back to support it. The operator saw an error rather than a figure nobody could stand behind. A refusal is a correct result, not a fault; what it exposed was a fault one layer below, in how the alarm is filed. See section 2.
Beside the answer the operator sees how it was reached: which kind of question it was judged to be, what data was counted and over what period, how many records were found, and which documents were cited with their revision and date. Procedural and advisory answers carry a visible banner stating plainly what the assistant did not do.
Two further banners are on screen today: one saying the figures are stand-ins rather than real plant data, and one saying no AI model was involved in the wording. Neither can be switched off from the screen.
Each question, the kind it was judged to be, the sources used, the rulebook result and how long it took are all recorded, so any answer can be reviewed afterwards and any mistake traced to the step that caused it. Live since early on, and recording the trial questions being put through the chain now.
The assistant has no free access to anything. These four, and nothing else.
Turns “high level alarms last week” into an exact query over the plant’s recorded history. The definitions that make an answer right — what counts as an alarm, what “last week” means, what counts as a fill — are written down in files an engineer can read and check, instead of being invented per question. It also keeps ready-made summaries so common questions never hammer the live historian.
The assistant never writes database code itself. It fills in a request form; Cube does the rest.
It is running on the host and answering the data lane’s questions. It reads stand-in figures, because the real historian is still not available — so no number it produces today means anything about the plant, and every answer built on one says so on the operator’s screen. The definitions it uses are the real ones and will not change when the historian arrives; only the source will.
The question that cannot be answered. Asked today, on the running system: “how many wet well high level alarms were there between 1 and 7 August?” — the most obvious question anyone would ask at this station. It came back as an error. The alarm is filed in the name list against the station; every one of its recorded occurrences is filed against the wet well. The two never meet, so the count comes out as nothing at all. Counted by equipment, that week holds 100 alarms.
What did work is the part that matters most: the assistant had written an answer with a number in it, and the rulebook stopped it leaving, because there were no records behind it. The operator got an error rather than a figure nobody could stand behind. This is the third place the same underlying mismatch has appeared, and none of the three can be fixed here — the stand-in tables were built from the same name list, so “correcting” either side would only make the two agree with each other and prove nothing. All three wait on the real historian.
Searches the controlled documents by meaning rather than keyword, so “lift the interlock” finds the right procedure even when the document says “interlock override”. Two rules are permanently on: withdrawn revisions are never returned, and every result carries its document number, revision, date, page and section — a passage that cannot be cited cannot be used.
Search by meaning works, and it now has real material to search. Four real documents were loaded on 28 August — three control descriptions and an instrument document — alongside the three fabricated demo ones that were written so the document lanes had something to find at all. The demo documents carry deliberately impossible document numbers and made-up figures, and say so on every passage, so nothing in them can be mistaken for plant content. What is outstanding is the rest of the real set, not the ability to hold it.
Procedures are now handled differently from everything else, and deliberately so. Ranking a procedure’s sections by how closely they match “how do I lift the interlock” returned the step list — the one part that must never be reproduced — and left out the title block. So the assistant now identifies which procedure governs the question first, then returns that document’s heading, purpose and prerequisites in order, and withholds its step sections entirely. The wording step never receives them. The rulebook still refuses instruction language independently; withholding is the first line, not the only one.
Every piece of equipment and every measurement point, with the everyday names operators actually use. Deliberately a plain list rather than something the AI works out, so it behaves the same way every time and can be corrected by editing one row.
Not a source of answers — the record of them. Every question and every step it took is stored so the assistant’s behaviour can be audited and improved from evidence rather than impressions.
Two supply lines feed those tools. Neither is finished.
Procedures, manuals, alarm rationalisation and design documents are read, split into sections, and converted into a searchable form. Three habits matter: a numbered step sequence is never cut in half; the document’s type comes from the folder it was filed in, not from a guess; and a person confirms the document number, revision and date before anything is stored. A wrong revision on a procedure is a safety problem, not a tidiness one.
The whole path has been run on the host end to end, first at a terminal on three fabricated demo documents, and since 28 August through the new upload screen on four real ones.
The first real document was worth more than the entire demo set, and this is the part worth repeating. An eight-page control philosophy exposed three faults in a single upload, none of which any test or any demo document had caught, and every one of which left the screen looking perfectly correct. The whole document had become one passage, because the PDF reader produces no blank lines and the splitter had nothing to split on — eight pages behind a single search entry, every citation reading “untitled, page 1”. Every passage was labelled with the document’s revision instead of its title, because a cover page collapses into a column of labels and the matcher ran past the line break. And publishing the same document twice quietly duplicated it, leaving the same passage quotable twice with nothing on screen to show it. All three are fixed; the document now splits into 19 sections that match its own headings.
The lesson is not that the code was careless. It is that fabricated documents are shaped like what the code expects. Real ones are not, and only a real one could have shown it.
The station’s control system records levels, pump runs and alarms into the plant historian. The assistant reads that history through Cube — read-only, never writing to it, and never touching the control system itself.
Two of the three arrived in the last week. One remains, and it is the one furthest outside this project’s control. Nobody outside this project is holding up anything else.
Both AI steps now run, and the documents are indexed for search by meaning. Switching them on was not the end of the work: five separate faults surfaced within the hour, and three more followed that afternoon when the first real document was uploaded. Every one of the eight was invisible while the stand-in was in place; all eight are now fixed and pinned by tests. The parts a safety reviewer most needs to examine can now actually be examined.
One difference from what was asked for. Two model deployments were provided rather than three — there is no small, cheap model, so the labelling step runs on the large one. It works correctly, but it costs roughly ten times the estimate per question, because labelling is by far the most frequent call. A second deployment on the same account fixes it; no new account and no new key.
Until this exists every figure the assistant produces is a stand-in. The data translator is running and its definitions are written down, so the switch-over is a change of source rather than a rebuild — but an engineer must independently confirm its first real numbers before anybody trusts one.
All three names resolve. The operator’s page and the assistant behind it were moved onto a single address, because the assistant’s own name does not resolve from inside the plant network and a control-room browser would have failed on every question.
Only the operator’s address works from inside the plant network. The other three — and, importantly, the sign-in page itself — have no internal record, so a browser on the plant network resolves them, gets correctly handed to sign-in, and then fails there. It went unnoticed for weeks because the equipment that talks to this host never opens a browser. It no longer affects the operator, who does not sign in at all, but it will catch the next protected service anyone tries to open from the plant floor.
The part no check from here could reach has now happened: an operator sat at a control-room PC and got an answer end to end. The screen’s own access log records the control-room machine opening the page on 28 August and asking questions on 31 August. Names resolving is not the same as a person succeeding — and this time the person succeeded.
Both were asked for by the customer, both are reversible, and both trade a protection for convenience. Neither is a mistake — but neither should reach a wider audience undescribed.
An operator at the console should not have to complete a phone prompt to ask a question, and nobody outside the plant should reach the assistant at all. So the operator’s screen now admits one machine, by its network address, and refuses everything else — plant network, remote access and internet alike.
What it costs. This is an address list on a flat network with no boundary between the office and plant sides, so anything that can take that address inherits the same unquestioned access. It is a demonstration convenience, not a security control, and it is the first thing proper network separation would replace. Two further consequences are easy to miss: the logbook can no longer record who asked a question, only that somebody did; and engineers can no longer open the assistant in a browser over the remote connection.
The assistant behind the screen is unchanged and still fully protected — document management depends on that and must stay there. Undoing this is a single configuration reload; the sign-in rule was deliberately left in place.
Step 9 was designed to follow the exam, for a reason: adding a way for more documents to arrive makes a wrong answer harder to diagnose, not easier. It was built and put live first, at the customer’s direction. Upload, convert, review, approve, withdraw and restore all work, and four real documents have been through it.
What it costs. Four things, all deliberate and all reversible. Nobody is checked: the publisher is a name typed into a box, checked against a one-entry list with no password, so anyone who reaches the page can claim it — rows are permanently marked as unverified so they stay tellable apart once real sign-in goes on. Scanned documents cannot be read at all and are refused rather than stored empty, because the proper document reader needs software this host must not run. The two ways of loading a document must not be used on the same one, or the older path cannot see what the screen loaded. And the conversion happens inside the request, so a large document holds up its own upload.
What has not moved is the judgement: nothing is quotable until a named person has confirmed the document’s number, revision and date, and the database itself refuses an approved document without them.
Each step ends in a check that must pass before the next begins — so that when an answer comes out wrong, there is one place to look, not four. Two of those checks have never been run, and step 9 was built before step 8 rather than after it. Status below is what was read off the running host on 28 August 2026, in the evening.
| Step | What it delivers | Status | Where it actually stands |
|---|---|---|---|
| 1 | The store — where documents, equipment names and ready-made summaries live | Running now | Healthy for eight days. It holds 92 passages from seven documents, the 8 equipment items and 56 tags that turn “Pump 02” into a real tag, and — since step 9 — the upload queue and a permanent audit trail that nothing in the system is allowed to delete from. Five database logins with the split that matters: the answer path can only read, and only the loading job can write documents. Checked by hand, not assumed: the reading login was proven unable to write. |
| 2 | The logbook — a record of every question, put in early on purpose so every later experiment is traceable | Running now | Both parts healthy for seven days, and every question since has been recorded: how it was sorted and with what confidence, what was retrieved, how long it took, and whether the rulebook passed or refused it. Every refusal is kept with the wording that caused it. One thing changed on 28 August: now that the operator does not sign in, the logbook no longer knows who asked — only that somebody did. |
| 3 | The documents — the real procedures and manuals, read in and searchable | Running on real documents | Four real documents have now been through it — three control descriptions and an instrument document — alongside the three fabricated demo ones, for 92 passages in total. The first real document was worth more than all the testing before it: an eight-page control philosophy exposed three silent faults in one upload, every one of which left the screen looking perfectly correct. The whole document had become a single passage, because the PDF reader emits no blank lines and the splitter had nothing to split on. Every passage was titled “Revision”, because a cover page flattens into a column of labels and the title matcher ran on past the line break. And re-publishing the same document quietly duplicated it, leaving the same passage quotable twice. All three are fixed, and the two loading paths are now held identical by a test rather than by good intentions. What is outstanding is the rest of the real document set, and a named reviewer for each. |
| 4 | Access to plant history — a read-only login to the historian | Blocked — the only one | The only thing this project still needs from anybody. The server is still being built and the read-only login has not been created; the connection settings sit on the host waiting, with the password and database name blank. Also outstanding: the agreed table names, the firewall rule, and confirmation of whether the historian stores time as UTC or local. That last one is not a formality — three separate findings cannot be settled without the answer, and one of them decides whether an alarm time on screen is right or a day out. |
| 5 | Cube — the data translator, with every definition written down | Running on stand-in figures | Running as two containers — the translator and its own store, which is a hard dependency rather than an optimisation — and answering the data lane against 145 stand-in alarms, 129,603 level readings and 309 pump operations. Two of its definitions were found wrong and fixed while proving it by hand, which is what proving it is for. Three findings are deliberately left open until the real historian settles them, the newest found today: see section 2. Two further gate items are ours, not anybody else’s — no number has been independently confirmed by an engineer, and the ready-made summaries are not being written back into the store as the design specifies. |
| 6 | The assistant itself — the sorting step, the four lanes, the answer writer and the rulebook | Running, with both AI steps | All four lanes answer end to end on the host with a real model, through the rulebook. Proven again today: an interlock question came back in 3.96 seconds with the governing procedure’s identity, its prerequisites quoted word for word, its steps withheld entirely, and the scope banner attached. Eight faults have been found and pinned since the model went on — five within an hour of switching it on, and three more when the first real document went through. Every one was invisible while the stand-in was in place. The exam grew from 67 questions to 75 to cover them. |
| 7 | The operator’s screen — the question box, the answer, the working | Used from the control room, end to end | The screen has been used from the SCADA machine, end to end. It is live, and since 28 August it admits that machine by its network address with no sign-in at all — see section 3b for what that costs. The refusing half of that rule was checked from the host and works: this host, the remote connection and the internet are all shut out. The admitting half has now been confirmed the only way it could be — from the console. The screen’s own record shows the control-room machine opening the page on 28 August, the day the rule went in, and asking three questions on 31 August, each answered. |
| 8 | The exam — 75 engineer-checked questions run end to end and scored | Runnable, and never run | Nothing is blocking this and it has still not been done. The model account arrived on 27 August, so both AI steps can be scored; no scorecard has ever been produced. The set covers 28 historical, 18 procedural, 14 advisory and 13 reference questions plus 2 that should be refused as unclear, every data question with its time window pinned so the answer does not drift between runs. Pass mark unchanged: 85% correct overall, 95% on the two dangerous kinds, and zero breaches of the rulebook. Two questions fail by design until step 4 lands. |
| 9 | Document management by operators — uploading and withdrawing documents from a screen instead of a terminal | Live, built ahead of step 8 | Built on 28 August at the customer’s direction, before step 8 rather than after it. It was sequenced after the exam for a reason: adding a way for more documents to arrive makes a wrong answer harder to diagnose, not easier. Upload, convert, review, approve, withdraw and restore all work and have been used on four real documents. Five deliberate shortcuts come with it — see section 3b — the most important being that the publisher is a name typed into a box with no password. What has not moved is the judgement: nothing is quotable until a named person has confirmed the document’s number, revision and date, and the database itself refuses an approved document without them. The one part of the design deliberately left out is choosing which documents are in the searchable set. |
Sign-in, network routing and hosting are handled by platform services already running on the demo host. They are deliberately left off this map — they protect the assistant, but they are not part of how it answers a question.