Update the workflow map to what is actually running

Read from the running containers on 2026-08-28, not from the plan.

Both AI steps move from "stood in for" to running: the model account arrived
on 27 August, the dropdown and the placeholder wording are gone, and the
documents are indexed so search works by meaning. Two of the three items in
section 3a are now closed; the historian login is the only blocker left.

The map records what switching the model on cost, because that is the part
worth telling somebody who was not here: five faults inside an hour, every one
hidden by the stand-in that replaced the model. The interlock finding is
written out in full - the assistant was handing the answer writer the step list
while withholding the title block - because it is the one a safety reviewer
should see.

The Unclear lane no longer says it cannot be exercised. It was, by the
zero-confidence fault, and it failed to the cautious side, which is how it was
designed to fail.

The model-account card stays honest about the small deployment that was asked
for and not provided: labelling runs on the flagship model, works correctly,
and costs about ten times the estimate per question.

Note: this file already carried uncommitted changes from a previous session.
Those are included here and have not been separately reviewed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Claude 2026-08-28 10:54:49 +10:00
parent 7ea8636264
commit 5f00628dfe

View file

@ -34,6 +34,7 @@ h2{font-size:20px;margin:46px 0 4px;padding-top:18px;border-top:1px solid var(--
.dot{width:10px;height:10px;border-radius:50%;flex:none;display:inline-block} .dot{width:10px;height:10px;border-radius:50%;flex:none;display:inline-block}
.d-live{background:var(--live)} .d-built{background:var(--built)} .d-live{background:var(--live)} .d-built{background:var(--built)}
.d-blocked{background:var(--blocked)} .d-none{background:var(--none)} .d-blocked{background:var(--blocked)} .d-none{background:var(--none)}
.d-partial{background:var(--accent)}
.flow{display:flex;flex-direction:column} .flow{display:flex;flex-direction:column}
.step{display:grid;grid-template-columns:118px minmax(0,1fr);gap:18px;align-items:start} .step{display:grid;grid-template-columns:118px minmax(0,1fr);gap:18px;align-items:start}
@ -43,6 +44,7 @@ h2{font-size:20px;margin:46px 0 4px;padding-top:18px;border-top:1px solid var(--
border-radius:10px;padding:14px 16px} border-radius:10px;padding:14px 16px}
.card.live{border-left-color:var(--live)} .card.built{border-left-color:var(--built)} .card.live{border-left-color:var(--live)} .card.built{border-left-color:var(--built)}
.card.blocked{border-left-color:var(--blocked)} .card.blocked{border-left-color:var(--blocked)}
.card.partial{border-left-color:var(--accent)}
.card h3{margin:0 0 5px;font-size:16.5px;display:flex;flex-wrap:wrap;align-items:center;gap:9px} .card h3{margin:0 0 5px;font-size:16.5px;display:flex;flex-wrap:wrap;align-items:center;gap:9px}
.card p{margin:0 0 6px;color:var(--muted);font-size:14.5px} .card p{margin:0 0 6px;color:var(--muted);font-size:14.5px}
.card p:last-of-type{margin-bottom:0} .card p:last-of-type{margin-bottom:0}
@ -59,6 +61,7 @@ h2{font-size:20px;margin:46px 0 4px;padding-top:18px;border-top:1px solid var(--
.b-built{color:var(--built);background:var(--built-bg)} .b-built{color:var(--built);background:var(--built-bg)}
.b-blocked{color:var(--blocked);background:var(--blocked-bg)} .b-blocked{color:var(--blocked);background:var(--blocked-bg)}
.b-none{color:var(--none);background:var(--none-bg)} .b-none{color:var(--none);background:var(--none-bg)}
.b-partial{color:var(--accent);background:var(--none-bg)}
.arrow{grid-column:2;color:var(--line);padding:5px 0 5px 22px;font-size:19px;line-height:1} .arrow{grid-column:2;color:var(--line);padding:5px 0 5px 22px;font-size:19px;line-height:1}
.arrow span{color:var(--muted);font-size:12.5px;padding-left:10px} .arrow span{color:var(--muted);font-size:12.5px;padding-left:10px}
@ -104,13 +107,29 @@ ul.next b{color:var(--ink)}
assistant answers it from plant records and controlled documents, and shows its evidence. This page 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 follows one question through the assistant, names the piece of software doing each job, and marks
what already exists.</p> what already exists.</p>
<p class="stamp">Status as observed on the live host, 21 August 2026.</p> <p class="stamp">Status as observed on the live host, 28 August 2026, mid-morning.
Every status below was read from the running containers, not from the plan.</p>
<div class="note stop"><b>What changed in the last week:</b> two of the three things this project
was waiting on arrived. The network names came on 27 August, and the AI model account the same day.
<b>Both AI steps now run</b> &mdash; the assistant sorts the question itself and writes the answer
in its own words &mdash; and the documents are indexed so search works by meaning rather than
keyword. The dropdown and the placeholder wording are gone.
<p style="margin:.7em 0 0">Switching the model on was not the end of the work. <b>Five faults
surfaced within the hour, and every one had been hidden by the stand-in</b> that replaced the model.
The most important: asked how to lift an interlock, the assistant was handing the answer writer
<em>the step list</em> &mdash; the one thing it must never reproduce &mdash; while withholding the
title block it actually needed. All five are fixed, each is pinned by a test, and the exam grew from
67 questions to 75 to cover them.</p>
<p style="margin:.7em 0 0">One thing remains outstanding, and it is the one furthest outside this
project&rsquo;s control: <b>a read-only login to the plant historian.</b> Until it exists every
figure on screen is a stand-in, and says so.</p></div>
<div class="legend"> <div class="legend">
<span class="key"><i class="dot d-live"></i> Running now</span> <span class="key"><i class="dot d-live"></i> Running now</span>
<span class="key"><i class="dot d-built"></i> Built and tested, not yet switched on</span> <span class="key"><i class="dot d-partial"></i> Running, on stand-in data</span>
<span class="key"><i class="dot d-blocked"></i> Waiting on someone else</span> <span class="key"><i class="dot d-blocked"></i> Waiting on someone else</span>
<span class="key"><i class="dot d-none"></i> Not started</span> <span class="key"><i class="dot d-none"></i> Not started, or cannot start yet</span>
</div> </div>
<h2>1 &middot; The question&rsquo;s journey</h2> <h2>1 &middot; The question&rsquo;s journey</h2>
@ -122,10 +141,14 @@ use and what it is allowed to say.</p>
<div class="step"> <div class="step">
<div class="stepnum">Ask</div> <div class="stepnum">Ask</div>
<div class="card built"> <div class="card live">
<h3>The question box <span class="badge b-built">Built, not switched on</span></h3> <h3>The question box <span class="badge b-live">Running now</span></h3>
<p>A web page with a question box and an answer pane, opened in an ordinary browser on the <p>A web page with a question box and an answer pane, opened in an ordinary browser on the
control-room PC. Nothing to install.</p> control-room PC. Nothing to install. It is running on the host and has been driven by hand in
a browser.</p>
<p>It cannot yet be reached by its name: <b>ai.yokogawa.tech</b> does not exist as a network
record, so today it is opened down an engineer&rsquo;s secure tunnel. Three names are outstanding —
the screen, the assistant behind it, and the data translator.</p>
<div class="tool">Application: <b>ai-web</b> — the operator&rsquo;s screen</div> <div class="tool">Application: <b>ai-web</b> — the operator&rsquo;s screen</div>
</div> </div>
</div> </div>
@ -133,29 +156,39 @@ use and what it is allowed to say.</p>
<div class="step"> <div class="step">
<div class="stepnum">Sort</div> <div class="stepnum">Sort</div>
<div class="card built"> <div class="card live">
<h3>What kind of question is this? <span class="ai">AI step</span> <h3>What kind of question is this? <span class="ai">AI step</span>
<span class="badge b-built">Built, not switched on</span></h3> <span class="badge b-live">Running now</span></h3>
<p>A small, fast AI model reads the question and labels it as one of four kinds — or says it is <p>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 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.</p> whole assistant, because the label decides everything downstream.</p>
<p>Two rules are built in: if it is not confident, it asks the operator to rephrase rather than <p>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 guessing; and if two labels are close, it takes the more cautious one — a question that is
partly advice is treated as advice.</p> partly advice is treated as advice.</p>
<div class="tool">Application: <b>ai-api</b> &middot; the classifier, using a small AI model</div> <p><b>This step now runs.</b> The model account arrived on 27 August 2026 and all four kinds
are labelled correctly with high confidence. The dropdown it replaced is gone.</p>
<p>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 <em>every</em>
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.</p>
<div class="tool">Application: <b>ai-api</b> · the classifier, using a small AI model</div>
</div> </div>
</div> </div>
<div class="arrow">&darr;</div> <div class="arrow">&darr;</div>
<div class="step"> <div class="step">
<div class="stepnum">Translate</div> <div class="stepnum">Translate</div>
<div class="card built"> <div class="card live">
<h3>What is &ldquo;Pump 02&rdquo;, exactly? <span class="badge b-built">Built, not switched on</span></h3> <h3>What is &ldquo;Pump 02&rdquo;, exactly? <span class="badge b-live">Running now</span></h3>
<p>Operators say &ldquo;Pump 02&rdquo; or &ldquo;the wet well&rdquo;. The plant records call <p>Operators say &ldquo;Pump 02&rdquo; or &ldquo;the wet well&rdquo;. The plant records call
those PU-302 and WW-101. This step converts everyday names into the plant&rsquo;s official those PU-302 and WW-101. This step converts everyday names into the plant&rsquo;s official
ones by looking them up in a list — no AI, no guessing. When it gets a name wrong, the fix is 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.</p> to add the nickname to the list.</p>
<div class="tool">Application: <b>ai-api</b> &middot; the name resolver, reading the equipment <p>Live on the host with 8 pieces of equipment and 56 measurement points loaded, and exercised
by real questions travelling the chain.</p>
<div class="tool">Application: <b>ai-api</b> · the name resolver, reading the equipment
and tag list in <b>pg-ai</b></div> and tag list in <b>pg-ai</b></div>
</div> </div>
</div> </div>
@ -167,47 +200,67 @@ use and what it is allowed to say.</p>
<p class="q">&ldquo;How many high level alarms last week?&rdquo;</p> <p class="q">&ldquo;How many high level alarms last week?&rdquo;</p>
<p>Counts and measurements taken from the plant&rsquo;s recorded history. If there are no <p>Counts and measurements taken from the plant&rsquo;s recorded history. If there are no
records, the answer says so — it never estimates a figure.</p> records, the answer says so — it never estimates a figure.</p>
<div class="uses">Looks in: <b>Cube</b> &rarr; the plant historian</div> <div class="uses">Looks in: <b>Cube</b> &rarr; the plant historian.
<br>Proven on the host against stand-in figures — 145 alarm records, 309 pump
operations and about 130,000 level readings.</div>
</div> </div>
<div class="lane"> <div class="lane">
<h4>Reference — what does this mean?</h4> <h4>Reference — what does this mean?</h4>
<p class="q">&ldquo;What does the level fault alarm mean?&rdquo;</p> <p class="q">&ldquo;What does the level fault alarm mean?&rdquo;</p>
<p>Explains a signal, alarm or piece of equipment from the manuals and alarm records, quoting <p>Explains a signal, alarm or piece of equipment from the manuals and alarm records, quoting
the document it came from.</p> the document it came from.</p>
<div class="uses">Looks in: <b>document search</b> + the equipment and tag list</div> <div class="uses">Looks in: <b>document search</b> + the equipment and tag list.
<br>Proven on the host, but only against three fabricated demo documents.</div>
</div> </div>
<div class="lane"> <div class="lane">
<h4>Procedural — how do I do it?</h4> <h4>Procedural — how do I do it?</h4>
<p class="q">&ldquo;How do I lift the interlock on Pump 02?&rdquo;</p> <p class="q">&ldquo;How do I lift the interlock on Pump 02?&rdquo;</p>
<p>Finds the approved procedure and identifies it — document number, revision, date — and <p>Finds the approved procedure and identifies it — document number, revision, date — and
quotes its prerequisites word for word. It never writes the steps itself.</p> quotes its prerequisites word for word. It never writes the steps itself.</p>
<div class="uses">Looks in: <b>document search</b>, procedures only</div> <div class="uses">Looks in: <b>document search</b>, procedures only.
<br>Proven on the host: it locates the demo procedure and identifies it. It cannot yet quote
prerequisites word for word — pulling those out of a document needs the model.</div>
</div> </div>
<div class="lane"> <div class="lane">
<h4>Advisory — what should we do?</h4> <h4>Advisory — what should we do?</h4>
<p class="q">&ldquo;What discharge rate avoids a spill?&rdquo;</p> <p class="q">&ldquo;What discharge rate avoids a spill?&rdquo;</p>
<p>Shows what has been run before, what happened when, and the documented limits — then hands <p>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.</p> the decision back to a competent person. It never gives a number as the answer.</p>
<div class="uses">Looks in: <b>Cube</b> and <b>document search</b> together</div> <div class="uses">Looks in: <b>Cube</b> and <b>document search</b> together.
<br>Proven on the host, with the deferral banner in place.</div>
</div> </div>
<div class="lane unclear"> <div class="lane unclear">
<h4>Unclear — I need more</h4> <h4>Unclear — I need more</h4>
<p class="q">&ldquo;Is the pump alright?&rdquo;</p> <p class="q">&ldquo;Is the pump alright?&rdquo;</p>
<p>When the sorting step is not confident, the assistant stops and asks a clarifying question. <p>When the sorting step is not confident, the assistant stops and asks a clarifying question.
No sources are searched and no answer is drafted.</p> No sources are searched and no answer is drafted.</p>
<div class="uses">Looks in: <b>nothing</b> — it asks instead</div> <div class="uses">Looks in: <b>nothing</b> — it asks instead.
<br>Now exercisable, and it was: for a short period after the model was switched on, a fault
in the sorting step scored <em>every</em> question at zero confidence, so every question
landed in this lane. Wrong, but it failed to the cautious side — which is how it was designed
to fail.</div>
</div> </div>
</div> </div>
<div class="arrow" style="grid-column:1/-1">&darr;<span>evidence gathered</span></div> <div class="arrow" style="grid-column:1/-1">&darr;<span>evidence gathered</span></div>
<div class="step"> <div class="step">
<div class="stepnum">Word it</div> <div class="stepnum">Word it</div>
<div class="card built"> <div class="card live">
<h3>Turn the evidence into a readable answer <span class="ai">AI step</span> <h3>Turn the evidence into a readable answer <span class="ai">AI step</span>
<span class="badge b-built">Built, not switched on</span></h3> <span class="badge b-live">Running now</span></h3>
<p>The larger AI model is used here and only here: to put the gathered evidence into plain <p>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 English. It cannot go looking for anything else — it only sees what its lane collected. It
supplies wording, not facts.</p> supplies wording, not facts.</p>
<p><b>This step now runs</b>, 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 <em>fact</em> 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.</p>
<p>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.</p>
<div class="tool">Application: <b>ai-api</b> &middot; the answer writer, using the larger AI model</div> <div class="tool">Application: <b>ai-api</b> &middot; the answer writer, using the larger AI model</div>
</div> </div>
</div> </div>
@ -216,7 +269,7 @@ use and what it is allowed to say.</p>
<div class="step"> <div class="step">
<div class="stepnum">Check</div> <div class="stepnum">Check</div>
<div class="card built"> <div class="card built">
<h3>Is this answer allowed to leave? <span class="badge b-built">Built, not switched on</span></h3> <h3>Is this answer allowed to leave? <span class="badge b-live">Running now</span></h3>
<p>Every draft is checked against a fixed rulebook before the operator sees it: no invented <p>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 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 found, and every claim carrying its citation. A draft that fails is rewritten once and then
@ -224,6 +277,9 @@ use and what it is allowed to say.</p>
<p>These are ordinary software checks written in code, not instructions given to the AI. That <p>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 distinction is the point: an AI can be talked out of an instruction, and cannot be talked out
of a check.</p> of a check.</p>
<p>This is the part the current stand-in arrangement proves best. The placeholder answers are
put through exactly the same rulebook as a generated one would be, and a refusal is a correct
result rather than a fault. The rulebook is running today.</p>
<div class="tool">Application: <b>ai-api</b> &middot; the answer contracts and guardrails</div> <div class="tool">Application: <b>ai-api</b> &middot; the answer contracts and guardrails</div>
</div> </div>
</div> </div>
@ -232,11 +288,14 @@ use and what it is allowed to say.</p>
<div class="step"> <div class="step">
<div class="stepnum">Show</div> <div class="stepnum">Show</div>
<div class="card built"> <div class="card built">
<h3>The answer, and its working <span class="badge b-built">Built, not switched on</span></h3> <h3>The answer, and its working <span class="badge b-live">Running now</span></h3>
<p>Beside the answer the operator sees how it was reached: which kind of question it was judged <p>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 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 documents were cited with their revision and date. Procedural and advisory answers carry a
visible banner stating plainly what the assistant did <em>not</em> do.</p> visible banner stating plainly what the assistant did <em>not</em> do.</p>
<p>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.</p>
<div class="tool">Application: <b>ai-web</b> &middot; the &ldquo;show working&rdquo; panel</div> <div class="tool">Application: <b>ai-web</b> &middot; the &ldquo;show working&rdquo; panel</div>
</div> </div>
</div> </div>
@ -248,7 +307,8 @@ use and what it is allowed to say.</p>
<h3>Everything is written down <span class="badge b-live">Running now</span></h3> <h3>Everything is written down <span class="badge b-live">Running now</span></h3>
<p>Each question, the kind it was judged to be, the sources used, the rulebook result and how <p>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 long it took are all recorded, so any answer can be reviewed afterwards and any mistake traced
to the step that caused it.</p> to the step that caused it. Live since early on, and recording the trial questions being put
through the chain now.</p>
<div class="tool">Application: <b>Langfuse</b> — the assistant&rsquo;s logbook</div> <div class="tool">Application: <b>Langfuse</b> — the assistant&rsquo;s logbook</div>
</div> </div>
</div> </div>
@ -266,8 +326,8 @@ lane is fixed before any searching starts.</div>
<p class="sub">The assistant has no free access to anything. These four, and nothing else.</p> <p class="sub">The assistant has no free access to anything. These four, and nothing else.</p>
<div class="cols"> <div class="cols">
<div class="card blocked"> <div class="card partial">
<h3>Cube — the data translator <span class="badge b-blocked">Waiting on the historian</span></h3> <h3>Cube — the data translator <span class="badge b-partial">Running on stand-in figures</span></h3>
<p>Turns &ldquo;high level alarms last week&rdquo; into an exact query over the plant&rsquo;s <p>Turns &ldquo;high level alarms last week&rdquo; into an exact query over the plant&rsquo;s
recorded history. The definitions that make an answer right — what counts as an alarm, what recorded history. The definitions that make an answer right — what counts as an alarm, what
&ldquo;last week&rdquo; means, what counts as a fill — are written down in files an engineer can &ldquo;last week&rdquo; means, what counts as a fill — are written down in files an engineer can
@ -275,26 +335,46 @@ lane is fixed before any searching starts.</div>
common questions never hammer the live historian.</p> common questions never hammer the live historian.</p>
<p>The assistant never writes database code itself. It fills in a request form; Cube does the <p>The assistant never writes database code itself. It fills in a request form; Cube does the
rest.</p> rest.</p>
<div class="tool">Reads: the <b>imh</b> plant historian, read-only. Definitions live in <p>It is running on the host and answering the data lane&rsquo;s questions. It reads stand-in figures,
<b>cube/model/</b> — alarms, process values, operations, equipment.</div> 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&rsquo;s screen. The definitions
it uses are the real ones and will not change when the historian arrives; only the source will.</p>
<div class="tool">Reads: today the stand-in tables in <b>pg-ai</b>. Eventually the <b>imh</b>
plant historian, read-only. Definitions live in <b>cube/model/</b> — alarms, process values,
operations, equipment. Ready-made summaries are being rebuilt on a schedule.</div>
</div> </div>
<div class="card"> <div class="card partial">
<h3>Document search <span class="badge b-none">No documents loaded yet</span></h3> <h3>Document search <span class="badge b-partial">Searching by meaning, on demo documents</span></h3>
<p>Searches the controlled documents by meaning rather than keyword, so &ldquo;lift the <p>Searches the controlled documents by meaning rather than keyword, so &ldquo;lift the
interlock&rdquo; finds the right procedure even when the document says &ldquo;interlock interlock&rdquo; finds the right procedure even when the document says &ldquo;interlock
override&rdquo;. Two rules are permanently on: withdrawn revisions are never returned, and every override&rdquo;. 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 result carries its document number, revision, date, page and section — a passage that cannot be
cited cannot be used.</p> cited cannot be used.</p>
<div class="tool">Reads: document sections stored in <b>pg-ai</b></div> <p>Search by meaning now works: the documents were indexed on 27 August 2026, once the model
account arrived. What it has to search is still the problem &mdash; three fabricated demo
documents, written so the document lanes had something to find. They carry deliberately
impossible document numbers and made-up figures so that nothing in them can be mistaken for
plant content.</p>
<p>Procedures are now handled differently from everything else, and deliberately so. Ranking a
procedure&rsquo;s sections by how closely they match &ldquo;how do I lift the interlock&rdquo;
returned <em>the step list</em> &mdash; the one part that must never be reproduced &mdash; and
left out the title block. So the assistant now identifies <em>which</em> procedure governs the
question first, then returns that document&rsquo;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.</p>
<div class="tool">Reads: document sections stored in <b>pg-ai</b> — 14 sections across
3 demo documents. No controlled document has been loaded.</div>
</div> </div>
<div class="card built"> <div class="card live">
<h3>The name list <span class="badge b-built">Built, loaded</span></h3> <h3>The name list <span class="badge b-live">Running now</span></h3>
<p>Every piece of equipment and every measurement point, with the everyday names operators <p>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 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.</p> same way every time and can be corrected by editing one row.</p>
<div class="tool">Reads: the equipment and tag tables in <b>pg-ai</b></div> <div class="tool">Reads: the equipment and tag tables in <b>pg-ai</b> — 8 pieces of
equipment, 56 measurement points, live and in use.</div>
</div> </div>
<div class="card live"> <div class="card live">
@ -310,15 +390,21 @@ lane is fixed before any searching starts.</div>
<p class="sub">Two supply lines feed those tools. Neither is finished.</p> <p class="sub">Two supply lines feed those tools. Neither is finished.</p>
<div class="cols"> <div class="cols">
<div class="card"> <div class="card partial">
<h3>Documents in <span class="badge b-none">Not started</span></h3> <h3>Documents in <span class="badge b-partial">Proven, on demo documents</span></h3>
<p>Procedures, manuals, alarm rationalisation and design documents are read, split into sections, <p>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 and converted into a searchable form. Three habits matter: a numbered step sequence is never cut
in half; the document&rsquo;s type comes from the folder it was filed in, not from a guess; and in half; the document&rsquo;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 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.</p> revision on a procedure is a safety problem, not a tidiness one.</p>
<p>The whole path has now been run on the host, end to end, with a person confirming each
header at a terminal — but on three fabricated demo documents, not real ones. That was
deliberate: it exercises the reading, splitting, header confirmation and storage without any
real document being handled before the reviewing arrangement is agreed. It also runs without the
AI model, which is why it could be proven now.</p>
<div class="tool">Application: <b>ai-ingest</b>, run by hand when documents change &rarr; stored <div class="tool">Application: <b>ai-ingest</b>, run by hand when documents change &rarr; stored
in <b>pg-ai</b>. Written and tested; no documents loaded onto the host yet.</div> in <b>pg-ai</b>. The demo documents are marked so they can be removed in one step before real
ones arrive.</div>
</div> </div>
<div class="card blocked"> <div class="card blocked">
@ -326,14 +412,60 @@ lane is fixed before any searching starts.</div>
<p>The station&rsquo;s control system records levels, pump runs and alarms into the plant <p>The station&rsquo;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 historian. The assistant reads that history through Cube — read-only, never writing to it, and
never touching the control system itself.</p> never touching the control system itself.</p>
<div class="tool">Source: the <b>imh</b> historian. That server is still being built, so a <div class="tool">Source: the <b>imh</b> historian. That server is still being built. A login
read-only login and the agreed table names are still outstanding.</div> name has been proposed and the connection settings are in place waiting for it, but the password,
the database name and the agreed table names are all still outstanding.</div>
</div> </div>
</div> </div>
<div class="note"><b>Worth knowing:</b> until the real historian is available, the data lanes run on <div class="note"><b>Worth knowing:</b> until the real historian is available, the data lanes run on
stand-in figures. Every answer produced that way carries a warning label all the way to the stand-in figures, and until the model account is issued the wording is a placeholder. Both facts are
operator&rsquo;s screen, so it cannot be mistaken for a real plant number.</div> labelled on the operator&rsquo;s screen, on every answer, all the way through — so nothing produced
today can be mistaken for a real plant number or for the assistant&rsquo;s own words. Neither label
is something an operator can turn off.</div>
<h2 id="waiting">3a &middot; What was being waited on</h2>
<p class="sub">Two of the three arrived in the last week. One remains, and it is the one furthest
outside this project&rsquo;s control.</p>
<div class="cols">
<div class="card live">
<h3>An AI model account <span class="badge b-live">Arrived 27 August 2026</span></h3>
<p>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, every one of them
invisible while the stand-in was in place, and all five are now fixed and pinned by tests. The
parts a safety reviewer most needs to examine can now actually be examined.</p>
<p><b>One difference from what was asked for.</b> Two model deployments were provided rather
than three &mdash; 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.</p>
<div class="tool">Have: <b>gpt-4o</b> and <b>text-embedding-3-small</b>. Still wanted: a small
model deployment, so the cost figures hold.</div>
</div>
<div class="card blocked">
<h3>A read-only login to the historian <span class="badge b-blocked">Waiting on someone else</span></h3>
<p>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 &mdash; but an engineer must independently confirm its first real numbers before
anybody trusts one.</p>
<div class="tool">Needed: the <b>imh</b> server, a read-only login, and the agreed table names.</div>
</div>
<div class="card live">
<h3>Three network name records <span class="badge b-live">Arrived 27 August 2026</span></h3>
<p>All three names resolve and all four addresses now hand the visitor to the sign-in page
first. The operator&rsquo;s page and the assistant behind it were moved onto a single address,
because the assistant&rsquo;s own name does not resolve from inside the plant network and a
control-room browser would have failed on every question.</p>
<p><b>What is still unproven is the part no check from here can reach:</b> an operator sitting
at a control-room PC, signed in, getting an answer end to end. Names resolving is not the same
as a person succeeding.</p>
<div class="tool">Have: <b>ai</b>, <b>api</b> and <b>cube</b> under <b>yokogawa.tech</b>, plus
the internal record for <b>ai</b>.</div>
</div>
</div>
<h2>4 &middot; What exists, and the order the rest gets built</h2> <h2>4 &middot; What exists, and the order the rest gets built</h2>
<p class="sub">Each step ends in a check that must pass before the next begins — so that when an <p class="sub">Each step ends in a check that must pass before the next begins — so that when an
@ -344,32 +476,50 @@ answer comes out wrong, there is one place to look, not four.</p>
<thead><tr><th>Step</th><th>What it delivers</th><th>Status</th><th>What it needs</th></tr></thead> <thead><tr><th>Step</th><th>What it delivers</th><th>Status</th><th>What it needs</th></tr></thead>
<tbody> <tbody>
<tr><td class="ph">1</td><td><b>The store</b> — where documents, equipment names and ready-made summaries live</td><td><span class="badge b-live">Running now</span></td><td>Done. Live, checks passed.</td></tr> <tr><td class="ph">1</td><td><b>The store</b> — where documents, equipment names and ready-made summaries live</td><td><span class="badge b-live">Running now</span></td><td>Done. Live, checks passed.</td></tr>
<tr><td class="ph">2</td><td><b>The logbook</b> — recording of every question, put in early on purpose so every later experiment is traceable</td><td><span class="badge b-live">Running now</span></td><td>Done. Live.</td></tr> <tr><td class="ph">2</td><td><b>The logbook</b> — recording of every question, put in early on purpose so every later experiment is traceable</td><td><span class="badge b-live">Running now</span></td><td>Done. Live, and recording the trial questions going through the chain now.</td></tr>
<tr><td class="ph">3</td><td><b>The documents</b> — the real procedures and manuals, read in and searchable</td><td><span class="badge b-none">Next up</span></td><td>The documents themselves, and someone to confirm each one&rsquo;s revision and date. Needs nothing from the historian — which is why it goes next.</td></tr> <tr><td class="ph">3</td><td><b>The documents</b> — the real procedures and manuals, read in and searchable</td><td><span class="badge b-partial">Proven and indexed, on demo documents</span></td><td>Reading, splitting, human header confirmation, storage <b>and search by meaning</b> have all been run on the host — on three fabricated demo documents, indexed 27 August 2026. The header now also captures the document&rsquo;s title and authorising role, because the answer writer was being asked for facts it had never been shown. What is outstanding is the real documents, and someone to confirm each one&rsquo;s revision and date.</td></tr>
<tr><td class="ph">4</td><td><b>Access to plant history</b> — a read-only login to the historian</td><td><span class="badge b-blocked">Blocked</span></td><td>The historian server, a read-only login and agreed table names. <b>The only true blocker — start that conversation now, alongside step 3.</b></td></tr> <tr><td class="ph">4</td><td><b>Access to plant history</b> — a read-only login to the historian</td><td><span class="badge b-blocked">Blocked</span></td><td>The historian server, a read-only login and agreed table names. <b>Still outstanding, and now the only blocker</b> — the model account arrived on 27 August 2026.</td></tr>
<tr><td class="ph">5</td><td><b>Cube</b> — the data translator, with every definition written down</td><td><span class="badge b-built">Built, not switched on</span></td><td>Step 4 — though it can be proven on stand-in data first. An engineer must independently confirm its first numbers before anyone trusts them.</td></tr> <tr><td class="ph">5</td><td><b>Cube</b> — the data translator, with every definition written down</td><td><span class="badge b-partial">Running on stand-in figures</span></td><td>Running and answering questions. Two of its definitions were found to be wrong and fixed while proving it, which is what proving it is for. Two further questions about them are deliberately left until the real historian settles them. An engineer must independently confirm its first real numbers.</td></tr>
<tr><td class="ph">6</td><td><b>The assistant itself</b> — the sorting step, the four lanes, the answer writer and the rulebook</td><td><span class="badge b-built">Built, not switched on</span></td><td>Steps 3 and 5, so that a wrong answer can only be the assistant&rsquo;s own fault.</td></tr> <tr><td class="ph">6</td><td><b>The assistant itself</b> — the sorting step, the four lanes, the answer writer and the rulebook</td><td><span class="badge b-live">Running, with both AI steps</span></td><td>All four lanes answer end to end on the host with a real model, through the rulebook. Five faults surfaced within an hour of switching the model on — every one of them hidden by the stand-in, every one now fixed and pinned by a test. The exam set grew from 67 questions to 75 to cover them.</td></tr>
<tr><td class="ph">7</td><td><b>The operator&rsquo;s screen</b> — the question box, the answer, the working</td><td><span class="badge b-built">Built, not switched on</span></td><td>Step 6, plus one network name record so control-room PCs can reach it — <b>ask for that early</b>, it depends on someone else and will not surface as a problem until the day it is tried.</td></tr> <tr><td class="ph">7</td><td><b>The operator&rsquo;s screen</b> — the question box, the answer, the working</td><td><span class="badge b-partial">Reachable by name, not yet used by an operator</span></td><td>The name records arrived on 27 August 2026 and all four addresses hand the visitor to sign-in first. What remains unproven is the only part no check from here can reach: a person at a control-room PC, signed in, getting an answer.</td></tr>
<tr><td class="ph">8</td><td><b>The exam</b> — 62 engineer-checked questions run end to end and scored</td><td><span class="badge b-built">Written, not run</span></td><td>Everything above. Pass mark: 85% correct overall, 95% on the two dangerous kinds, and <b>zero</b> breaches of the rulebook.</td></tr> <tr><td class="ph">8</td><td><b>The exam</b> — 75 engineer-checked questions run end to end and scored</td><td><span class="badge b-partial">Now runnable, not yet run</span></td><td>No longer blocked: the model account exists, so the sorting step and the wording can both be scored. Eight questions were added covering the five faults found on switch-on. Pass mark unchanged: 85% correct overall, 95% on the two dangerous kinds, and <b>zero</b> breaches of the rulebook.</td></tr>
<tr><td class="ph">9</td><td><b>Document management by operators</b> — uploading and withdrawing documents from a screen instead of a terminal</td><td><span class="badge b-none">Designed, not built</span></td><td>Designed and deliberately held back until step 8 passes. Its settings are in place but switched off.</td></tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<h2>5 &middot; The short version</h2> <h2>5 &middot; The short version</h2>
<ul class="next"> <ul class="next">
<li><b>Live today:</b> the store and the logbook — the foundations, not yet anything an operator <li><b>Running today:</b> the store, the logbook, the name list, the data translator, document
would see.</li> search, all four lanes, the rulebook and the operator&rsquo;s screen. A question typed in the box
<li><b>Written and tested, waiting to be switched on:</b> the sorting step, all four lanes, the comes back as an answer, with its evidence and its working, in well under a second.</li>
answer writer, the rulebook, Cube and the operator&rsquo;s screen. The software exists; it has not <li><b>Running, on stand-in data:</b> the figures are stand-ins, not plant data, and the documents
been put into service.</li> are three fabricated demo documents rather than controlled ones. Both are labelled on screen. The
<li><b>Not started:</b> loading the real documents. This is the nearest useful milestone — it needs two AI steps are no longer on this list &mdash; they run.</li>
nothing from the historian, and it is what makes &ldquo;find me the procedure&rdquo; work, a <li><b>What switching the model on actually taught us.</b> Five faults appeared within the hour,
demonstration that stands on its own.</li> and not one of them could have been found any earlier, because the stand-in had been quietly
<li><b>Needs other people, so ask today:</b> the read-only historian login, and the network name supplying the very things that turned out to be missing. Four were the same mistake in four places:
record for the control room. Both take days of someone else&rsquo;s time and neither can be hurried the answer writer was being asked for a <em>fact</em> &mdash; which revision, what the document is
at the end.</li> called, which document a limit came from &mdash; and it answered with something empty or invented.
Every one is now taken from the retrieved document instead, so the wording step cannot influence it
at all.</li>
<li><b>The one worth telling a safety reviewer.</b> Asked how to lift an interlock, the assistant
was ranking the procedure&rsquo;s sections by similarity to the question &mdash; which handed the
answer writer <em>the step list</em>, the one thing it must never reproduce, while withholding the
title block it actually needed. It now identifies which procedure governs the question, then
returns that document&rsquo;s heading, purpose and prerequisites and withholds the steps entirely.
The rulebook already refused instruction language and still does; this removes the temptation
rather than relying on catching it.</li>
<li><b>What it still does not prove:</b> whether the labelling and wording are <em>good enough</em>.
They work; they are not yet scored. The 75-question exam can now be run and has not been. And no
operator has yet sat at a control-room PC and got an answer &mdash; the one check that cannot be
done from here.</li>
<li><b>Needs other people, so ask today:</b> the model account, the read-only historian login, and
three network name records. All three are now on the critical path, and none can be hurried at the
end.</li>
<li><b>Before any operator sees this:</b> what the assistant will and will not say must be reviewed <li><b>Before any operator sees this:</b> what the assistant will and will not say must be reviewed
with an OT/safety representative.</li> with an OT/safety representative. That review needs the model in place to be meaningful, which is
one more reason the account is the item to chase first.</li>
</ul> </ul>
<p class="foot">Sign-in, network routing and hosting are handled by platform services already running <p class="foot">Sign-in, network routing and hosting are handled by platform services already running