Statistical outliers and pattern breaks, before any of them is a case · 14 detectors registered, 11 running, 2 in shadow, 1 dark · last sweep 2m 14s ago · nothing on this page has changed a balance
Each card states its model in one line, its class, its last run and what it found. A statistical detector that cannot declare a sample floor cannot be registered.
| Time | Severity | Detector | Class | Entity | Expected to observed | z | Baseline | Action |
|---|---|---|---|---|---|---|---|---|
| 14:12:18 | Critical | velocity_drop | stk | MSR31-07 @ HQ_319 | 18 /hr→2 /hr | −3.82 | n 14 · σ 1.7 | |
Evidence · dispatches per hour, 14-day baseline against today15-0719-0723-0727-07today
Baseline daysMean 18.2 ± σ 1.7Today, 2 per hour
Interpretation. Dispatch velocity for MSR31-07 collapsed to 11% of baseline at 14:12 and has held for 29 minutes. There is no stockout: sellable is 118 and the reorder buffer is comfortable. There is no price change and no promo ending. Webhook latency for orders/paid is normal at p95 212ms. The two remaining candidates are a Shopify listing change and a picking-area problem at HQ_319, and only one of them is an inventory fact. This is deliberately not a drift case. No number disagrees with any other number. Promoting it would create a case with no delta and nothing to correct, which is exactly the noise that makes a queue unusable. Contributing factors, ranked
Promoting carries the whole finding across: baseline, z, the factor weights and this chart become evidence rows on the new case, each with its own digest. |
||||||||
| 14:36:04 | Critical | gate_read_without_posting | stk | EPC E280 6894 0000 4021 8F3C | dispatch row→none in 15m | n/a | invariant | DRF-0142 |
| 13:58:41 | High | lead_time_outlier | ops | Supplier CIC | 32.4 days→54.1 days | +3.11 | n 22 · σ 6.9 | |
| 13:22:09 | High | negative_balance | stk | AQB01 @ MCC | >= 0→−4 units | n/a | invariant | |
| 12:47:33 | High | velocity_drop | stk | FYN01 @ HQ_319 | 11 /hr→3 /hr | −2.61 | n 14 · σ 2.1 | |
| 12:04:15 | High | impossible_transition | stk | EPC E280 6894 0000 3918 2C41 | SOLD is terminal→read at YAS floor | n/a | state graph | CNF-0011 |
| 11:31:52 | Medium | stale_in_transit | stk | TR-0937 · HQ_319 to YAS | p95 36h→96h | +2.44 | n 61 · σ 11h | |
| 10:58:20 | Medium | unmatched_rfid_read | stk | EPC E280 6894 0000 4188 91A0 | HQ_319 bay C→HQ_325 dock | n/a | invariant | |
| 10:22:07 | Medium | grn_receipt_variance | ops | INF-2319 line 4 | 48 units→46 units | +2.06 | n 18 · σ 1.1 | DRF-0127 |
| 09:54:11 | Medium | webhook_latency | ops | csd · case.transition | p95 180ms→840ms | +2.31 | n 288 · σ 44ms | |
| 09:18:44 | Medium | lead_time_outlier | ops | Supplier VJ Jewels | 18.2 days→27.6 days | +2.12 | n 14 · σ 4.4 | |
| 08:41:29 | Medium | stale_in_transit | stk | TR-0941 · HQ_319 to MCC | p95 36h→72h | +2.02 | n 61 · σ 11h | |
| 08:33:12 | Medium | webhook_latency | ops | shopify · orders/paid | p95 240ms→620ms | +1.98 | n 288 · σ 61ms | auto-closed |
| 07:56:03 | Low | unmatched_rfid_read | stk | EPC E280 6894 0000 4207 3B18 | MCC floor→MCC stockroom | n/a | invariant | |
| 07:12:40 | Info | velocity_drop | stk | MIN-DIF-012 @ BAS | 0.4 /hr→0 /hr | n/a | n 3 · below min 10 | suppressed |
| 06:48:19 | Info | lead_time_outlier | ops | Supplier LC Straps | 21 days→28 days | n/a | σ 0 · every prior order 21d | suppressed |
| 06:03:55 | Info | cover_days_outlier | stk | MIN-2159 @ HQ_319 | cover p05 6d→cover NULL | n/a | no velocity · excluded | suppressed |
| 05:41:22 | Low | damage_concentration | ops | carton MC-4471 · HQ_319 | 0 to 1 per carton→5 per carton | +2.28 | poisson λ 0.4 | shadow |
| 04:58:07 | Low | webhook_latency | ops | grn · receipt.posted | p95 140ms→310ms | +1.44 | n 288 · σ 38ms | auto-closed |
A finding becomes a case with its provenance intact, or it does not become a case at all
| On the finding | On the case | Why it has to travel |
|---|---|---|
| detector_code, version | detector_code, detector_version | Frozen, so retuning the detector later cannot rewrite the history of what raised the case |
| expected_value, observed_value | side_a_value, side_b_value | The two numbers that disagree are the case, and they need their authorities named |
| baseline_n, sigma, z_score | drift_evidence · derived_calc | An approver signing later must be able to see the statistics the machine used |
| factors JSONB | drift_explanations seed | Ranked factors become the first ranked hypotheses, mapped onto the closed catalog |
| detected_at | detected_at | The SLA clock runs from detection, not from promotion, so a slow triage cannot hide a slow response |
| entity_kind, entity_ref | sku_id, location_id or anchor | Resolved through the ref tables. A finding on an order with no knowable SKU becomes an anchored case, not a guessed one. |
| payload | drift_evidence · webhook_payload | With a content digest, so a signature binds to what was actually shown |
A finding that cannot produce a delta cannot produce a case. Today's critical velocity finding is the example: nothing disagrees with anything, so there is no compensating entry to propose and a case would be an empty box with an SLA clock on it.
Five of the eight
Detector cards keep their grid so the layout does not reflow when counts land.
All 13 enabled detectors ran within the last 15 minutes and found nothing. The 14th is dark and says so above.
The findings query timed out. Detectors are still running and still writing; only this view is blind.
3 filters are hiding all 21.
The nightly baseline rebuild has not run since 26-07. Every z on this page is computed against a stale mean, so all statistical detectors are held at can_raise_case = false until it does.