Alert Types

Last updated on July 22, 2026

TofuPilot watches six things. Each type has an automatic mode that calibrates itself against your own history, and a custom mode where you set fixed thresholds per severity. Run failed is the one exception: it is custom-only.

TypeFamilyAutomatic modeScope by
Yield dropTrendYesProcedure, station, part
Measurement driftTrendYesProcedure, station, part
Golden sample failedEventYesProcedure, station, part
Failing sample passedEventYesProcedure, station, part
Unit retest thresholdEventYesProcedure, station, part
Run failedEventNo, custom onlyProcedure, station, part

For the trend types, scope is not only a filter — it changes what is measured. A rule scoped to a station grades that slice of the data against the slice's own baseline, so a drift or a yield drop confined to one fixture fires even when the pooled numbers still look fine. Parts go further for measurement drift: each part is its own series by default, scoped rule or not.

Yield drop

First-pass yield dropped significantly below the procedure's own baseline.

The automatic detector compares recency-weighted FPY against the spread this procedure normally shows, so a line that habitually wanders 50–60% is not judged like a stable 55% line. See Automatic detection.

Alert copy quotes raw counts alongside the smoothed figure, so a sharp collapse stays readable:

8 of the last 50 units failed first try. Recency-weighted FPY is 93.2%, vs 97.8% ±0.9% on this procedure's own history.

Custom metrics

Pick one metric per rule.

MetricThresholdPrefills (critical / warning / info)Counts
First Pass YieldFPY drop ≥ %10 / 5 / 2Units whose first-ever run on the procedure falls in the window and passed. A serial already tested never counts again, so retests cannot improve it.
Last Pass YieldLPY drop ≥ %10 / 5 / 2Units whose last run in the window passed, over units tested. The state after rework.
Run pass rateRun pass rate drop ≥ %10 / 5 / 2Passing runs over all runs. Every retest counts, so retest storms drag it down fast.

The threshold is a drop in percentage points against the mean of the preceding 3× window. With a 1-week window, "this week versus the previous three weeks"; 95% falling to 85% is a drop of 10.

Custom yield criteria need at least 10 runs in the window and 100 in the baseline before they grade anything.

Measurement drift

A measurement drifted from its own baseline — mean shift, Cpk drop, or Cpk floor.

The automatic detector tracks each measurement series, identified by procedure, phase, measurement name, and part — product variants tested on one procedure are separate series with separate baselines, and an alert names the part it fired on. Stations, by contrast, are pooled into the series; see Automatic detection for the trade-off.

A custom rule scoped to parts sets your own thresholds for those variants' series; one scoped to stations grades each station's slice against the slice's own baseline. The station slice is the tool for per-fixture drift — probe wear or a fixture offset on one bench fires without having to move the station-pooled mean.

Custom metrics

MetricThresholdPrefills (critical / warning / info)Needs spec limits
Cpk driftCpk drop ≥ %40 / 25 / 15Yes
Mean driftMean shift ≥ σ3 / 2 / 1No
Cpk floorCpk < (value)0.67 / 1 / 1.33Yes
  • Cpk drift compares the window's Cpk to the preceding baseline as a percentage drop. Being relative, it judges each measurement against its own baseline, and it catches spread widening, not only mean shifts.
  • Mean drift expresses the shift in process sigmas. It works on every numeric measurement, with or without limits.
  • Cpk floor is an absolute escape-risk threshold rather than a drift. It is inverted: lower is worse, so critical must trip at a value at or below warning (0.67 ≤ 1.00 ≤ 1.33).

Custom drift criteria need at least 30 baseline samples and 10 recent samples. Cpk metrics need 30 on both sides.

Cpk metrics read limits from the measurement's validators. If your procedure encodes limits as separate min and max measurements rather than validators, use Mean drift, which needs no limits.

Golden sample failed

A known-good reference unit failed, or its check did not complete.

Applies to Units flagged golden. Automatically:

Run outcomeResult
FAILCritical. The station measured a known-good reference out of limits, so production failures may be slipping through.
ERROR, TIMEOUT, ABORTEDWarning. The station could not be validated against its reference.
PASSResolves the open alert.

Custom metrics

This type picks its metric per severity line, because both metrics share the same unit.

MetricThresholdCounts
Result is FAILn consecutive runsExplicit FAIL only. Incomplete runs neither count nor break the streak.
Result is not PASSn consecutive runsAny non-PASS outcome, including ERROR, TIMEOUT, and ABORTED.

Defaults mirror the automatic behavior: critical on Result is FAIL ≥ 1, warning on Result is not PASS ≥ 1. Thresholds count runs of the reference unit, not time, and cap at 200.

Failing sample passed

A known-faulty reference unit passed, or its check did not complete.

The mirror image, for units flagged failing. A PASS is critical, because the test is no longer detecting the seeded defect and escapes are likely. An incomplete run is a warning. A FAIL resolves the alert.

Custom metrics are Result is PASS and Result is not FAIL, with the same per-line selection, streak semantics, and cap of 200.

Unit retest threshold

A unit was tested too many times on the same procedure.

The counter is per unit per procedure, lifetime, and passing runs count too. Automatic mode learns each procedure's normal retest rate and sets the threshold just above it, then escalates to critical at twice that count. Real retest rates span 0% to 99% across procedures, so a fixed number would be wrong nearly everywhere.

Retest storm protection. At most three individual retest alerts open per procedure per day. Past that, further units are folded into one aggregated warning telling you to investigate the line rather than the units.

Custom mode takes a single threshold, Tested ≥ n times on the same procedure, prefilled 5 / 3 / 2. There is no metric selector and no window.

Retest alerts never auto-resolve. Close one once you have reviewed the unit's history. Resolving also resets that unit's counter on that procedure.

On a retest alert you also get View unit and Mark the serial as ignored. Marking a unit ignored excludes it from analytics and every alert, retroactively for analytics, and resolves the alert. It is the right move for a bench-check serial that was never real production.

Run failed

Consecutive failed production runs on a procedure, station, or part.

Opt-in and custom-only: no automatic mode exists, the default rule never covers it, and you must create a rule that selects it explicitly.

The threshold counts consecutive non-PASS production runs, prefilled 3 / 2 / 1 with all three severities enabled. Streaks are counted on the run's stream: always the procedure, plus station and part where your rule scopes them. Cap 200.

Use this on near-perfect lines where a single failure is genuinely an exception, scoped narrowly. On a line with normal failures it will flood your alerts. For quality regressions on ordinary lines, Yield drop is the right type.

How is this guide?

On this page