Add soft-deleted saga experiment and documentation#2503
Merged
jeremydmiller merged 1 commit intomainfrom Apr 14, 2026
Merged
Conversation
Experiment confirms that Marten's LoadAsync does not filter soft-deleted documents, so Wolverine will still load and process completed sagas. Documentation recommends using ISoftDeleted interface and guarding handlers against the Deleted property. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This was referenced Apr 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
LoadAsyncdoes NOT filter soft-deleted documents, so Wolverine will still load and process completed soft-deleted sagasdocs/guide/durability/marten/sagas.mdrecommending theISoftDeletedinterface approach and guarding handlers against theDeletedpropertyKey Findings
When a saga type is configured with
[SoftDeleted]:MarkCompleted()→session.Delete()→ Marten soft-deletes the documentsession.LoadAsync()still returns the soft-deleted saga (it does NOT filter)The documentation recommends implementing
ISoftDeletedand explicitly checking theDeletedproperty in handlers.Test plan
saga_is_soft_deleted_when_completed— confirms LoadAsync returns soft-deleted sagasend_message_to_completed_soft_deleted_saga— confirms saga resurrection behavior🤖 Generated with Claude Code