Data & Event Platform — workflows¶
Target
This page describes intended behaviour or structure. No implementation is claimed unless a section is explicitly marked Current implementation or Evidence.
W1 — A topic and a schema version reach the registry¶
sequenceDiagram
participant M as Architecture model (generated catalogs)
participant REL as Release pipeline
participant E as EnvelopeRegistryService
participant C as Consumer services
REL->>E: ModelSync (topics, producers, consumers, schema refs)
E->>E: compare each payload schema with the current version
alt backward or full compatible
E-)C: SchemaVersionPublished
else breaking
E-->>REL: refused, unacknowledged consumers listed
C->>E: acknowledge (after their release)
E-)C: SchemaVersionPublished
end
W2 — A host publishes and a consumer deduplicates (Orleans profile)¶
sequenceDiagram
participant S as Producer service (aggregate)
participant OB as Outbox (same transaction)
participant D as Outbox dispatcher grain
participant IB as Inbox grain (consumer)
participant H as Consumer handler
S->>S: state transition
S->>OB: envelope + payload (ResolveTopic cached)
Note over S,OB: one transaction: transition + outbox row
D->>IB: deliver (at-least-once)
IB->>IB: dedup on eventId within 72 h
IB->>H: handle once
Note over H: an external effect is never assumed exactly-once, uncertain outcomes are recorded and reconciled
The MassTransit and NServiceBus profiles carry the same envelope with their own outbox and inbox contracts; the port and the envelope do not change (ADR-0012).
W3 — A store is bound under residency¶
sequenceDiagram
participant P as Provisioning (Runtime Cloud)
participant ST as StoreProfileService
participant R as RetentionResidencyService
participant SB as SecretBrokerService
P->>ST: SetStoreBinding (knowledge-sql, tenant, profile, region israelcentral)
ST->>R: EvaluateResidency (tenant, class, region)
R-->>ST: allowed
ST->>SB: key and connection reference
ST-)P: StoreBindingChanged (Provisioned)
P->>ST: migrations applied → Active
W4 — A tenant is deleted¶
flowchart LR
REQ[Workspace admin: IssueGovernanceOrder TenantDeletion] --> AP[approval, production class]
AP --> O1[tasks: derived stores · projections, indexes, memory, cache]
O1 --> O2[tasks: artifacts and authoritative stores · control, runtime, model, tools, integration]
O2 --> O3[audit redaction · never purge]
O3 --> CM[FactoryCommercialService closes the subscription]
CM --> DONE[DeletionOrderCompleted + evidence]
O1 & O2 & O3 -. no acknowledgement by due date .-> OV[Overdue · alert · evidence]
W5 — A tenant exports its data¶
Export orders fan out like deletions; every owner contributes a bundle in open formats (JSON Lines, Parquet, Markdown) and the Exporter assembles one archive with a manifest of what was and was not included (audit evidence is included redacted). ExportCompleted carries the artifact reference; the Studio notifies the requester.
W6 — Retention expiry¶
Nightly, RetentionSweeper computes expiry per rule and legal hold and issues purge tasks (delete, redact or archive) to owning services with receipts; traces expire in the backend by its own policy (30 days), everything else by the Factory's orders.