03 Alerts, alarms and the quality-to-lot link
- Status
- direction
- Conceptual layer
- ③ risk detection and ② lot genealogy
- Repo layer
- L3 twin, L1 register intake
- Source
- architecture section 5.7, section 3.6.8 · ADR 037 · Index: README.
1. Control today#
Holds, release, acceptance, rejection and sign-off of a part, bin, basket or lot, and conformance, stay with the plant's quality lead (master document section 7). Stamped names the condition, alerts a named person and keeps the record; quality decides. Templates are checked in CI: only check, inspect, look at and call are allowed as verbs.
2. Alert lifecycle#
Alerts sit outside the action and signal budgets and follow alarm-management rules in the style of ISA-18.2.
How to read it.
- An alert becomes Active only after its on-delay; Seen acknowledges without sign-off.
- Unacknowledged P1 escalates; clearing ends the episode thread.
- Shelving is admin-only with expiry; chatter within 15 min continues the same thread.
Build now: P1–P3 rules and lot naming. Later: shadow-first prediction alerts after replay passes.
View Mermaid source
flowchart TB
%% house-style: alert-lifecycle
subgraph life["Alert states"]
direction LR
act["Active"] --> ack["Acknowledged"]
act --> esc["Escalated"]
esc --> ack
ack --> clr["Cleared"]
act --> clr
act --> shel["Shelved"]
shel --> act
end
enter(["Condition true for its delay"]) --> act
seen{{"Person taps Seen"}} --> ack
late{{"No acknowledgement in time"}} --> esc
false(["Condition false"]) --> clr
admin{{"Admin shelves with reason"}} --> shel
clr --> done(["End"])
classDef govc fill:#fff4d6,stroke:#c99a2e,color:#000
classDef agentc fill:#e8f0ff,stroke:#5b7bd5,color:#000
classDef loopc fill:#eef7ee,stroke:#4f9a4f,color:#000
class seen,late,admin govc
class enter agentc
class done loopc
| Rule | Detail |
|---|---|
| Priority | P1 quality or equipment risk now; P2 risk in minutes or a lot to inspect; P3 data and model health, to the Stamped admin |
| On-delay | Each alert waits for its condition to persist (minutes for zones, a run of parts for part risk) |
| Acknowledge | One-tap Seen; not an instruction and not a sign-off |
| Escalate | Unacknowledged P1 goes up to the shift in-charge, then the production head; P2 to the shift in-charge |
| One thread per episode | Repeats become escalations in the same thread; a close message ends it |
| Chatter | Re-raise within 15 min continues the thread |
| Shelving | Stamped admin only, with reason and expiry (at most one shift) |
| Flood | Over 10 alerts to one person in 10 min: one summary, the rest in the thread, P3 to admin |
| Target | About 1 alert per person per hour; checked by replay before go-live |
| Names the lots | Every alert names the bins, lots or baskets it affects |
| Shadow first | Prediction and residual alerts go live only after their replay test passes |
3. Genealogy#
How to read it.
- Parts usually carry no serial number; links come from order and time.
- Unlinked parts stay unlinked rather than guessed (section 5.7).
- Rejections and returns attach at bin or basket level for matching.
Build now: time-bin and basket records in L2. Later: tighter job-card keys from the plant.
View Mermaid source
flowchart TB
%% house-style: quality-genealogy
subgraph chain["Billet to customer return"]
direction LR
billet["billet push"] --> part["forged part"]
part --> bin["time bin or lot"]
bin --> basket["HT basket or charge"]
basket --> test["strength test"]
bin --> reject["register rejection"]
basket --> reject
reject --> customer["customer return"]
end
back(["↩ Every link stores method and confidence"])
classDef govc fill:#fff4d6,stroke:#c99a2e,color:#000
classDef agentc fill:#e8f0ff,stroke:#5b7bd5,color:#000
classDef loopc fill:#eef7ee,stroke:#4f9a4f,color:#000
class back loopc
4. Register intake and matching#
Fields: part, date and shift, defect type, quantity (required); forging hour or bin time, stage found, charge number (wanted). Routes: daily digital export through the edge agent's file or REST connectors; a short WhatsApp form; or a reviewed photo transcription using the connectors-doc review flow.
Matching: exact (forging hour inside one bin), shift-level (spread across bins by part count), or unmatched (kept and counted). The match rate is a health metric; a low rate prompts the quality head to add the missing field. For each defect, compare reject rates of flagged and unflagged parts of the same part and shift; a monthly Pareto shows the process condition behind each top defect.
5. Calibration loop#
Physics flags start the pilot (for forging: cold-edge billets, slow transfer, first parts after a stop or part change, press force outliers; messages only on runs of parts). Once the register is matched, thresholds are set per part and defect, flags that don't go with rejects are dropped, and a combined anomaly score goes live only when its parts are shown to reject more. New thresholds are parameter rows promoted with Stamped review (06).
6. The per-basket heat-treatment record#
Built automatically per basket and kept in L2. It covers part of CQI-9 4th edition Process Table C (continuous recording, time in furnace, quench temperature, test per batch); pyrometry status (SAT, TUS), set point and band, load size per batch, quench-tank level and agitation, and quench delay per load measured from door open to load fully immersed must come from the plant. The quench-to-ageing delay is good practice or a customer requirement, not a Table C clause (public CQI-9 4th edition form):
| Section | Fields |
|---|---|
| Identity | Campaign, basket, charge number, parts |
| Solution | Zone temperatures (continuous), time at temperature, minutes near the melting-risk band, predicted metal peak with range |
| Quench | Water temperature at quench, transfer delay, predicted quench-factor range |
| Ageing | Quench-to-ageing delay, zone temperatures and time, ageing dose |
| Tests | Linked strength and elongation results |
| Alerts and rejections | Every alert with who saw it; matched register rows |
Sent as a daily digest and returned on demand within minutes on a customer complaint. It supports the plant's audit; it does not certify conformance.
7. Alert catalog (forging sector pack templates)#
| Family | Trigger | Priority | Recipient |
|---|---|---|---|
| Solution zone high | Zone near the alloy's melting-risk band for its delay | P1 | Heat-treatment in-charge |
| Metal-risk prediction | Predicted probability of metal in the risk band high | P1 | In-charge and quality (shadow first) |
| Ageing late | Quench seen, no ageing charge within the written delay | P2 | Heat-treatment operator |
| Quench water | Water outside the plant's written range, or forecast to be | P2 | Heat-treatment operator |
| Part risk run | A run of flagged parts in a short window | P2 | Heater operator, supervisor or inspector, naming the bin |
| Heater drift | Kalman level outside the band around the aim | P2 | Heater in-charge |
| Sensor health | Misreads, frozen tags | P3 | Stamped admin |
| Utility anomaly day | Gas or power used with nothing produced | P2 | Energy head (digest) |
| Residual drift | Twin residual checks (cumulative sums) outside band | P3 | Stamped admin (shadow first) |
Limits come from the plant's written values in the site packVersioned, owner-reviewed plant configuration including topology; the plant sets them, not Stamped.
Page history: last 4 changes
- docs(technical): rewrite fast-loop/; all architecture diagrams in house style
7330f47 - docs(fast-loop): scope the per-basket record against CQI-9 Process Table C
9a91dc2 - docs(fast-loop): interfaces and ownership; one topic registry; control-today wording; amend ADR-033 and ADR-036
df796e9 - docs(decisions): add ADR-033..038 (twin runtime, fast read path, plant-side writer, message classes, alerts and quality-to-lot link, part-keyed parameters), fast-loop technical set, rebuilt index with renumbering map; fix bare-number link text and ranges
22e2872