Match rate · last 30 days
Denominator is matched plus unmatched. Blocked and noop are excluded and reported separately, because a match rate that hides blocked events flatters itself.
Per-rule hit rates, shadow divergence, never-fired rules as liabilities, and where the unmatched went · the gate metric is match rate ≥ 99.5%
Denominator is matched plus unmatched. Blocked and noop are excluded and reported separately, because a match rate that hides blocked events flatters itself.
31 unmatched in 7 days · 31 drift cases · zero dropped. R-14.13 makes the second number impossible to be smaller than the first.
Amber bar = zero hits in 30 days · violet = shadow · click a bar to filter the event stream
A shadow rule writes to classifier_shadow_postings and never to the ledger. The write path checks the mode; the UI toggle cannot leave a rule posting. Promotion needs 7 clean days, ≥30 decisions, worst day < 0.1%, zero P1 divergences and a second approver.
Uses fulfillments[].location_id instead of order.physicalLocation. This is the 1,205-order attribution defect. Shadow shows 122 decisions where the two differ and the fulfilment location is right every time.
Posts nothing and opens a drift case, instead of crediting stock. INV1 credits here; the RFID app's own P0 says it must not, because a no-restock refund means the unit was damaged, kept or never returned.
The ruling L17 replacement for v2 scenario 16. Posts no ledger row and records a fulfilment obligation against the inbound PO line. Two thin days block the streak: 22 and 19 decisions, both under the 30-sample floor.
Draft v5 emits a zero-quantity RESERVED row alongside the sale. The ledger rejects quantity_delta = 0 under ruling L14, so this would error after promotion. One P1 divergence, streak reset to zero today.
Heat is the 7-day hit concentration. An empty cell means no rule covers that topic at all, which is the only way an uncovered topic becomes visible before it produces an unmatched event.
| orders/* | fulfillments/* | refunds/* | products/* | inv_levels | ops2/* | csd/* | iwms/* | grn/* | rfid/* | inf/* | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Sale | 2,296 | 4,924 | |||||||||
| Cancel | 204 | 46 | |||||||||
| Refund | 578 | 62 | |||||||||
| Exchange | 54 | 38 | 88 | 44 | |||||||
| Fulfilment | 296 | 368 | 1,214 | ||||||||
| Catalog | 142 | 6 | |||||||||
| ops2 | 1,214 | ||||||||||
| CSD | 168 | ||||||||||
| GRN + IWMS | 782 | 64 | |||||||||
| RFID | 418 | ||||||||||
| Programme | 18 | 0 | |||||||||
| Terminal | 14 | 6 | 18 | 4 | 8 | 3 | 2 | 2 |
Rows sorted by 7-day hits · FP is the false-positive rate measured against resolved drift cases
| Rule | Group | Origin | 24h | 7d | 30d | Share | Avg ms | FP | Last matched | Mode | Health |
|---|---|---|---|---|---|---|---|---|---|---|---|
| C-01 straight_sale_online | sale | both | 612 | 4,182 | 17,904 | 32.6% | 14 | 0.02% | 14:41 | live v4 | healthy |
| C-02 multi_line_sale | sale | both | 381 | 2,594 | 11,118 | 20.2% | 21 | 0.04% | 14:39 | live v2 | healthy |
| C-03 pos_sale | sale | both | 288 | 2,008 | 8,602 | 15.6% | 11 | 0.01% | 14:24 | live v3 | healthy |
| C-70 known_noop | terminal | INV1 | 207 | 1,506 | 6,444 | 11.7% | 4 | - | 14:40 | live v1 | healthy |
| C-41 ops2_dispatch_scan | ops2 | v2 | 176 | 1,214 | 5,208 | 9.5% | 28 | 0.11% | 14:38 | live v2 | widened 05-07 |
| C-08 split_shipment_line | fulfilment | both | 106 | 742 | 3,182 | 5.8% | 19 | 0.03% | 14:31 | live v1 | healthy |
| C-55 iwms_carton_moved | grn_iwms | v2 | 92 | 628 | 2,692 | 4.9% | 34 | 0.06% | 14:29 | live v1 | healthy |
| C-16 refund_restock | refund | both | 66 | 462 | 1,980 | 3.6% | 24 | 0.08% | 14:22 | live v3 | healthy |
| C-12 bundled_sku_expand | sale | INV1 | 54 | 378 | 1,620 | 2.9% | 62 | 0.14% | 14:36 | live v2 | recipe pin required |
| C-61 rfid_gate_read | rfid | v2 | 44 | 296 | 1,268 | 2.3% | 9 | 0.00% | 14:39 | live v1 | authoritative |
| C-33 cross_location_fulfilment | fulfilment | INV1 | 18 | 122 | 522 | 1.0% | 16 | 0.00% | 13:58 | shadow v2 | 7/7 ready |
| C-17 refund_no_restock | refund | both | 8 | 58 | 248 | 0.5% | 18 | 0.00% | 14:20 | shadow v3 | 7/7 ready |
| C-27 ghost_exchange | exchange | INV1 | 6 | 44 | 188 | 0.3% | 22 | - | 14:31 | live v1 | posts nothing by design |
| C-11 preorder_backorder | sale | i3 new | 3 | 22 | 94 | 0.2% | 13 | 0.00% | 12:04 | shadow v1 | 3/7 · 2 thin days |
| C-10 b2b_consignment | sale | v2 | 0 | 0 | 0 | 0.0% | - | - | never | live v1 | liability · 62 tags absorbed by C-01 |
| C-31 order_edit_add_line | fulfilment | v2 | 0 | 0 | 0 | 0.0% | - | - | never | live v1 | liability · 5,019 edited orders in the audit |
| C-42 ops2_returns_scan | ops2 | v2 | 0 | 0 | 0 | 0.0% | - | - | never | disabled | awaiting sibling · L18 |
| C-44 carrier_status_change | ops2 | INV1 | 0 | 0 | 0 | 0.0% | - | - | never | disabled | awaiting sibling · L18 |
| C-11x preorder_from_production | sale | removed | - | - | - | - | - | - | never built | removed | ruling L17 |
Auto-mined from 30 days of unmatched events · approve to promote a candidate into shadow mode, never straight to live
| Candidate | Pattern | Would cover | Confidence | Proposed action | |
|---|---|---|---|---|---|
| cand-114 | line_items[].sku matches CUSTOM-* | 8 | 0.86 | noop, record custom line | |
| cand-118 | refunds[].transactions > 0 AND refund_line_items = 0 AND note contains "exchange" | 12 | 0.74 | C-27 variant, widen the evidence | |
| cand-121 | source = csd AND lines[].length > 1 | 3 | 0.68 | multi-line reservation, fixes D16 | |
| cand-125 | source = rfid AND epc not in sku_epc_index | 2 | 0.61 | unmatched read, route to module 12 |
Eight states, switched from the selector at the top right
72 rules are registered and none has been evaluated. Either ingestion is paused or the window is wrong. Zero-filter lists the chips doing the hiding.
Classification is unaffected. Promotion needs role >= manager plus i3.classifier_promote; a viewer sees every number and no buttons.
Thirteen rules read awaiting sibling rather than dead, because their topic is not emittable upstream. During the nightly chain verify the page is read-only and says so.