Run

Event

Schema

esc

Sign out

Not available — this screenshot's bytes could not be delivered. The run may have crashed before the upload finished, or the link has expired.

How the bus works here

Five things about this platform’s connection to Pegasus. All five were learned the expensive way, and each one fails quietly — no error, no alert, just work that never happens.

The credential is not configured here

The principal and its grants live in the infrastructure repo, not in this console. What you set here is which topic a bus integration consumes; who we are on that bus is a change somebody makes to Terraform and applies.

A topic has to be registered before it exists

Defining a TopicModel does not create a topic. Only pegasus-cli topic register <topic> --env <cluster> does. All four of ours sat defined-but-absent from both clusters for days on this: a consumer started cleanly against a topic that was not there and simply received nothing.

The consumer group must equal the topic name, exactly

Our grants are literal, so the group ACL is the topic name and nothing else. Pegasus’s own guide advises prefixing the group id with the topic (<topic>.rpa-hub), which assumes prefix grants; for us that is GROUP_AUTHORIZATION_FAILED. The consumer never joins, and an unjoined consumer is indistinguishable from a topic with no traffic. That is why the field on this page is not yours to type.

Delivery is at-least-once, and we dedupe twice

The same event can arrive more than once — that is the bus working as designed, not a fault. We refuse a repeat on event_id and on action_id: the first catches a redelivery of the same message, the second catches the requester asking for the same action again through a different one. A response we publish is republished byte-identical on retry for the same reason, because rebuilding it would mint a new event_id and defeat the consumer’s own dedupe.

A bad event halts the consumer, on purpose

It is not skipped. Skipping one message on a topic carrying portal-action requests means a payer request nobody ever answers and nobody ever notices; stopping is loud, and the offset stays put so the event is still there once the cause is fixed. Expect lag to climb rather than expecting an error rate.

The schema bundle floats

The SDK downloads and imports a wheel from the topic and calls the topic owner’s transformer. That is the design — the topic ACL is the trust boundary, and floating is what makes a schema change self-heal instead of breaking us. Floating is the choice; seeing it is the control, which is why every load is recorded and a change raises an alert.