elsa-core/src
Sipke Schoorstra d085b536f0
docs(core): document FaultSignal self-receipt and pin it with a test
Review raised that TrySendSignalAsync delivers to the faulting activity before
walking ancestors, so an activity that throws and also handles FaultSignal can
claim its own fault and suppress the incident strategy.

That is real, but it is the channel's existing dispatch, which #7911 chose
deliberately over a variant of it, and SignalContext.IsSelf exists so handlers
can discriminate. It also grants no capability: an activity that catches its own
exception never faults at all, ending Finished/Finished with zero incidents,
which is a cleaner suppression than self-handling (incident still recorded,
activity left Running, workflow suspended).

So dispatch is unchanged. What was missing is that none of this was written
down: the contract describes the handler as an enclosing container and never
mentioned self-receipt. Document it on FaultSignal, including how a handler
that wants ancestors-only semantics opts out, and add a test so the behavior is
pinned rather than incidental.

Refs #7911

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 03:04:49 +02:00
..
apps Add operational dashboard API 2026-06-02 02:33:11 +02:00
clients/Elsa.Api.Client Harden output converter contracts 2026-07-31 13:29:01 +02:00
common [codex] Fix diagnostics live feed regressions (#7548) 2026-05-31 09:40:02 +02:00
extensions/Elsa.Testing.Extensions
modules docs(core): document FaultSignal self-receipt and pin it with a test 2026-08-11 03:04:49 +02:00
Directory.Build.props Code cleanup and typo fix (#7393) 2026-04-14 15:17:26 +02:00