Appearance
Step 5 · Observe and diagnose
Available now When a run goes wrong, you need to answer "what happened to thisstory, and which system did it?" in minutes. The portal and your observer give you that.
The portal's views
| View | Shows | Use it to |
|---|---|---|
| Overview | Bus health; accepted, duplicate, refused and error totals; top rejection rules for your own apps; counts per vendor connection | Check the bus is healthy before blaming a system |
| Story timeline | Every accepted message on a story, of every family, in order, with its producer and system_id; for a snapshot, what changed since the previous one; the raw JSON | Walk a run step by step; find which system sent what; spot unintended changes |
| Activity | Every gateway decision on your own apps' messages in a window, with its rules, never payloads; counts per vendor connection | Find refusals the timeline can't place on a story |
| Routing map | Who may publish each message type, and whose filters receive it | Explain why a system did or didn't receive something (Routing map) |
| Playground | A dry run of any message against your house's story state, and who would receive it | "Would this snapshot have been accepted?" (Playground) |
A refusal only lands on a story's timeline when the bus could read the story id from it. A message that isn't JSON, or fails the envelope, shows under Activity only.
Your vendors' detail is theirs
For a vendor's connection you see counts (accepted, refused, duplicate, last seen), never its rule ids or refused messages: see Who sees what in a house. The vendor sees its own decisions in full, under Your activity here on its Houses you're in page. When a vendor's count of refusals grows, ask it for the rule ids and message_ids; it can look them up itself.
Diagnosing a run
| Symptom | Look at | Usually means |
|---|---|---|
| A system shows old content | Timeline: is the newer snapshot there? | There: that system didn't apply it, or merged instead of replacing. Missing: the owner never sent it, or it was refused |
A refusal for sequence_number.not_increasing | Its producer and system_id | A second writer, or an owner that lost its sequence after a restart |
A story.not_owner warning | Its system_id against your story ownership hand-offs | A system writing a story it doesn't own, or a hand-off you haven't listed |
A refusal for snapshot.members_missing or snapshot.assets_dropped | What changed, and the rule's path | The owner sent a delta, or dropped something |
| A reaction you can't explain | Its causation_id in the raw JSON | Which message triggered it. If it's missing, ask the producer to set it |
| A system says it sent something the timeline doesn't have | Activity (your apps), or the vendor's own activity | Refused before the bus could read it, or never arrived: 401 or 403 means credentials or grants |
| A system didn't receive something | The Routing map, then the connection's filters | Its filter doesn't match, or no connection may publish that type |
| Everything's slow or failing | Overview: errors and bus health | A bus problem: tell RND with the time window |
Your observer
If you set one up (step 2), it holds a copy of every message in your house, in order per story, with the producer's connection in the producer_id attribute and the envelope's system_id beside it. Keep your own evidence beyond the portal's 7 days, and compare what each system should have received, by its filter, with what it did. Acknowledge only what you've stored: a message is gone from the queue once acknowledged.
Start again
- Replay a time range from the bus's archive into one of your own consumer connections, to rebuild a system's state after an outage or to test that it's idempotent. See Dead-letter queues and replay. You can't replay into or redrive a vendor's connection in your house: the vendor does it itself, from its own workspace, so ask the vendor. You see on Consumer connections that it happened, when, and how it ended, never more of its messages than you already could (Your connections in a house).
- Reset your house between rehearsals Available now, to clear story state, the timeline and waiting messages: see Rehearse a workflow.
Be told
- Your own apps: a rotation's overlap ending, a daily allowance nearly used, a consumer queue lagging or dead-lettering, a replay finishing. Choose who gets which email under Notifications.
- Your vendors' connections going quiet, coming back, or having too many messages refused: a Vendor connections email Available now, with counts, never rule ids. See Bring your vendors into your house.
Asking RND
Send the story_id, the time window and the message_ids involved, through Ask RND (Ask RND). RND sees every gateway decision's metadata (ids, producers, rule ids), never payloads, unless an owner of your workspace grants support access Available now: RND then reads the workspace as one of its viewers does, payloads included, for the time the owner chose (7 days at most), and can't change anything. Your vendors' connections show as counts, as they do for you. Every page RND opens is recorded in your audit log. See Let RND look.