Event inbox

Every inbound event from every source · raw payload, classification trace, ledger rows, replay · idempotency scoped (source_system, idempotency_key)

Deliveries and events are different counts, and both reconcile. 1,924 HTTP deliveries today = 1,847 accepted + 71 duplicate (409) + 6 rejected (2 signature, 1 oversize, 1 unknown topic, 2 stale timestamp). i2 processed every duplicate delivery in full because it discarded the ON CONFLICT result. Rejections →
View Modes: Stream · Table · Rule frequency · cycle with V
All 1,847
Shopify 1,204
ops2 352
CSD 44
IWMS 161
RFID 71
GRN 12
Influencer 3
Needs attention 8
Live · 1s · pauses on hover
3 events selected replay re-runs the classifier at the current ruleset and creates a new decision row · the old trace is kept, never overwritten approval required above 10 events · reason mandatory

Topic health · 43 registered

A topic i3 is ready for but the sibling cannot emit reads as awaiting sibling, never as stale. Ruling L18.

fresh 31 stale 3 idle 3 awaiting sibling 6
orders/create
12s ago284
orders/paid
1m ago261
orders/updated
40s ago312
fulfillments/create
28s ago198
fulfillments/update
4m ago62
refunds/create
18m ago38
orders/cancelled
52m ago14
products/update
3m ago29
inventory_levels/update
3h ago6
draft_orders/create
> 24h0
iwms carton.moved
2m ago118
iwms carton.qc_outcome
26m ago31
ops2 dispatch.scanned
1m ago312
ops2 returns.scanned
not emittable0
ops2 ndr.raised
not emittable0
ops2 rto.confirmed
not emittable0
ops2 duplicate.voided
not emittable0
csd reservation.placed
11m ago14
csd refund.decided
34m ago9
csd case.merge
not emittable0
rfid GATE_READ
6m ago44
rfid CYCLE_COUNT
1h ago18
rfid WRITE_OFF
2d ago0
grn receipt.posted
2h ago12

Events per minute · last 60 min

30 two-minute buckets · all sources · peak 19 at 14:24

14 ev/min now
13:4414:1414:44
matched 1,612 noop 207 shadow only 20 unmatched 5 blocked 3
  • matched, posted to ledger1,612
  • noop, no inventory consequence207
  • shadow only, wrote nothing20
  • unmatched, drift case opened5
  • blocked, retryable3

Receive to classified, per topic

p50 fill · p95 marker · red line is that topic's own budget. A global percentile hides a single slow topic.

4 over budget
orders/create0.4s / 0.8s
fulfillments/create0.6s / 1.1s
refunds/create0.8s / 1.4s
orders/updated1.7s / 2.6s
products/update0.3s / 0.6s
ops2 dispatch.scanned0.7s / 1.2s
iwms carton.moved1.9s / 2.9s
csd reservation.placed0.5s / 1.0s
rfid GATE_READ2.1s / 3.1s
rfid CYCLE_COUNT0.9s / 1.5s
grn receipt.posted2.3s / 3.4s
inf shipment.dispatched0.4s / 0.7s
p50 p95 lag budget GATE_READ's budget is 3s because a gate that lags is a dispatch that ships unverified.

Stream

Newest first · click a row for the full trace · score is the winning rule's confidence against its 0.800 threshold

ReceivedSourceTopicEntityRule ScoreRowsIdempotency keyHMACLagOutcome
14:41:22shopify fulfillments/create#MIN10482C-01 straight_sale_online 1.0001shopify:sale:58412…:14892…:f-7741 verified412msmatched
14:40:58shopify orders/updated#MIN10482C-70 known_noop 1.0000shopify:noop:orders/updated:58412… verified1.8snoop
14:39:04rfid GATE_READE280 6894 0000 4021 8F3CC-61 rfid_gate_read 1.0001rfid:GATE:E28068940000…:1743… verified2.9smatched
14:38:12ops2 dispatch.scannedDHL 4548827193C-41 ops2_dispatch_scan 0.9400ops2:dispatch:4548827193:MIN10480:MSR31-07 verified680msnoop
14:36:41shopify fulfillments/create#MIN10479C-12 bundled_sku_expand 0.9603shopify:sale:58409…:14891…:f-7739:recipe:41 verified704msmatched
14:34:19csd reservation.placedCSD-4821C-51 csd_reservation_place 1.0004csd:res:RSV-2211:L2:1 verified520msmatched
14:31:07shopify refunds/create#MIN10402no rule ≥ 0.800 0.6100shopify:ghost:rf-2214 verified1.1sunmatched
14:29:55iwms carton.movedMC-4471C-55 iwms_carton_moved 1.0002iwms:carton.moved:MC-4471:118 verified2.7smatched
14:27:31shopify fulfillments/create#MIN10471C-01 straight_sale_online 0.9300shopify:sale:58401…:14884…:f-7731 verified440msblocked
14:24:02shopify orders/create#MIN10468 · POS MCCC-03 pos_sale 1.0001shopify:sale:58398…:14879…:pos verified380msmatched
14:22:44shopify refunds/create#MIN10390C-16 refund_restock 0.9801shopify:refund:rf-2211:14802…:restock verified920msmatched
14:20:16shopify refunds/create#MIN10388C-17 refund_no_restock v3 shadow 0.9100shopify:refund:rf-2209:14799…:norestock verified660msshadow only
14:18:33grn receipt.postedINF-2319C-54 grn_receipt_line 1.0006grn:GRN-2026-0411:L3 verified3.1smatched
14:16:08ops2 dispatch.scannedDHL 4548827044C-41 ops2_dispatch_scan 0.8801ops2:dispatch:4548827044:MIN10461:LBA01 derived key740msmatched
14:12:51shopify products/updateMSK15-B → MSK15-BLKC-37 variant_sku_change 1.0000shopify:skurename:44021…:MSK15-BLK verified290msnoop
14:09:12unknown ops2/returns.scanned-not classified -0- invalid-rejected 401
14:07:40shopify orders/paid#MIN10455suppressed, duplicate -0shopify:order:58385…:paid verified-409 dup
1,847 events · 17 shownBlocked and unmatched are separate outcomes because they need different actions: unmatched needs a rule, blocked needs a fix.
Loading

Row heights are fixed, so the stream does not reflow as events land.

Empty

No events yet.

All 43 topics are registered and 37 are verified upstream. Nothing has arrived since 00:00. If this persists past 09:00 GST the absence alarm fires.

Sibling healthAdmission budget
Error

Couldn't load the stream.

The event query timed out after 8 seconds. Ingestion is unaffected: deliveries are still accepted and persisted.

evt-3b91cc · 29-07-2026 14:32:01 GST
Zero-filter

No matches.

3 filters hide all 1,847 events.

source: grnoutcome: blockedlag over budget
Permission

Raw payloads need ops_manager.

You can see the stream and the outcomes. Payload bodies and request headers require role >= ops_manager plus the i3.events_raw feature.

Gate-blocked and maintenance

ops2 reverse topics are gated.

Four ops2 topics show awaiting sibling rather than an empty count: registered here, not emittable there. That is a state, not a bug. Maintenance pauses classification but never the 202.

The rule this page enforces

R-14.13

An event that matches no rule is never dropped. It produces an unmatched decision and a drift case, and the database will not accept one without the other:

CONSTRAINT ck_cd_unmatched CHECK (
  outcome <> 'unmatched'
  OR drift_case_id IS NOT NULL)

i2 processed every duplicate delivery in full because webhooks_in.py discarded the ON CONFLICT DO NOTHING result and called the processor unconditionally. i3 returns 409 and enqueues nothing, so the duplicate count above is a real suppression rather than an observation.

Ack latency is measured to the 202, not to classification. A 5xx to Shopify becomes a 48-hour retry storm, so under an admission hold i3 still accepts, still persists, and only defers the classifier.

Drift queue Rule catalog
Keyboard J K moveEnter open X selectR replay / filterV cycle view P pause live⌘K palette
Connected to Event detail Sibling events Classifier stats Rules Alert rules Webhook outbox Rate limits Audit log Drift ops2 events CSD events IWMS events GRN events RFID Live inventory Settings