Execution envelope
One run object per correlation — trigger, hops, result.
Portal Runs expose a single envelope for every correlation. Fact stores stay specialized; the envelope is the summary.
Stores
| Store | Table | Role |
|---|---|---|
| Audit | audit_log | Ops trail |
| Outbox | outbox_events | Reliable publish |
| Consume | message_history | Consumer outcomes |
| Webhook inbound | partner_webhook_event | Ingress dedupe |
| Webhook outbound | delivery_attempt | Signed delivery evidence |
| Result | execution_result | Per-correlation summary (required for jobs and workflow parents) |
execution_result never copies payloads from the fact stores.
Envelope fields
trigger—{ kind, ref, source }(API·MESSAGE·WEBHOOK·SCHEDULE·MANUAL)result—outcome,durationMs, counters,customlinks— parent/child correlationsevents[]— hops from the fact storesgraph/waits[]— workflows
A workflow is not a “style”. It is a composition of hops under this envelope.
Runtime
Catalog workflows run on Temporal. Kafka carries events. PostgreSQL holds catalog, runs, outbox, and webhook rows. APISIX is the Experience edge. Process APIs (Temporal internals) are not public.
Next: History