[Security] Add a durable transactional event bridge for automation triggers #270

Open
opened 2026-07-28 14:02:53 +02:00 by zemion · 1 comment
Owner

Replace direct use of the transient in-process PlatformEvent bus for automated side effects with a durable, transaction-aware event delivery bridge.

Acceptance criteria:

  • committed domain events enter a transactional outbox with stable event, tenant, actor, classification, correlation, and causation identifiers
  • allowlisted consumers receive idempotent deliveries only after the producing transaction commits
  • bounded retries, quarantine/dead-letter state, replay controls, retention, and operational metrics are persisted
  • restricted/confidential payloads cannot be subscribed to or disclosed without an explicit policy decision
  • trigger filters are constrained data comparisons, never executable expressions
  • worker loss and duplicate delivery cannot start duplicate Dataflow or Workflow executions
  • the existing in-process bus remains suitable only for non-durable observers
Replace direct use of the transient in-process PlatformEvent bus for automated side effects with a durable, transaction-aware event delivery bridge. Acceptance criteria: - committed domain events enter a transactional outbox with stable event, tenant, actor, classification, correlation, and causation identifiers - allowlisted consumers receive idempotent deliveries only after the producing transaction commits - bounded retries, quarantine/dead-letter state, replay controls, retention, and operational metrics are persisted - restricted/confidential payloads cannot be subscribed to or disclosed without an explicit policy decision - trigger filters are constrained data comparisons, never executable expressions - worker loss and duplicate delivery cannot start duplicate Dataflow or Workflow executions - the existing in-process bus remains suitable only for non-durable observers
Author
Owner

No durable Core bridge is claimed in this slice. The new automation contract and Dataflow dispatcher are in govoplan-core@26ae034, but the existing PlatformEvent bus remains transient.

Current containment:

  • Dataflow event deliveries are durable and idempotent after ingress
  • direct ingress only accepts public/internal events and exact scalar equality filters
  • confidential/restricted automation events fail closed pending this issue
  • correlation, causation, event ID, tenant, and module provenance are retained

This issue remains the blocker for transactional after-commit delivery, retries/dead letters, restricted-event Policy decisions, replay, retention, and operational metrics.

No durable Core bridge is claimed in this slice. The new automation contract and Dataflow dispatcher are in govoplan-core@26ae034, but the existing PlatformEvent bus remains transient. Current containment: - Dataflow event deliveries are durable and idempotent after ingress - direct ingress only accepts public/internal events and exact scalar equality filters - confidential/restricted automation events fail closed pending this issue - correlation, causation, event ID, tenant, and module provenance are retained This issue remains the blocker for transactional after-commit delivery, retries/dead letters, restricted-event Policy decisions, replay, retention, and operational metrics.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: GovOPlaN/govoplan-core#270
No description provided.