Extend Memory/EF conformance for leftover runtime store tenant isolation
Author: sfmskywalkerCreated Sep 15, 2026Updated Sep 15, 2026
Labelscorepersistenceprio lowtech debtelsa 3maintenancetriaged
Summary
#8088 / PR #8115 locked a shared Memory/EF matrix for triggers, definitions, bookmarks (tenant + TenantAgnostic), dead-letter uniqueness, and activity-execution / execution-log Find filter semantics.
It does not assert ambient-tenant isolation (or TenantAgnostic where the filter exposes it) for the leftover Memory stores still drifting after #8087:
IWorkflowInstanceStore(Memory vs EF)IActivityExecutionStoreIWorkflowExecutionLogStoreIBookmarkQueueStore(TenantAgnostic)IBookmarkQueueDeadLetterStore(TenantAgnosticon FindMany/Page — uniqueness already locked)
Concrete drift tracked in the companion implementation issue.
Evidence
WorkflowStoreConformanceTests today:
- Tenant isolation: triggers, definitions, bookmarks only
- Dead-letter:
OriginalQueueItemIduniqueness / AddOrGet idempotency - Activity execution / execution log: Find / summaries / order — no cross-tenant hide/show rows
Default registration still wires Memory for these contracts until EF persistence features replace them — unit/integration hosts never fail closed on the durable tenant modes.
Why it matters
- Without matrix rows, the next
#8087-style partial fix can leave another store behind unnoticed. - Subtractive: extend the existing
#8088harness — do not invent a second persistence abstraction.
Proposed direction
- Add shared scenarios: ambient tenant hide/show + stamp on Save;
TenantAgnosticbypass for bookmark queue + dead-letter; Delete/FindMany cannot see or remove another tenant’s rows. - Run against Memory and EF (Sqlite is enough).
- Keep uniqueness / Find / order rows already present; do not duplicate
#8120order coverage.
Out of scope
- Implementing the Memory tenant fix itself (companion bug).
- Labels / Alterations / Secrets / ExtAuth / identity matrices (already tracked or closed).
- Multi-node distribution (Memory is single-node).
Milestone
Unset — Issue Triage / Crew Lead decide placement.
Refs
test/integration/Elsa.Workflows.Persistence.ConformanceTests/WorkflowStoreConformanceTests.cstest/integration/Elsa.Workflows.Persistence.ConformanceTests/WorkflowStoreScenario.cs- Companion leftover Memory tenant bug (same research pass)
- Pattern:
#8088,#8094,#8091
Source: elsa-workflows/elsa-core