Resolution provenance delivered to the waiting workflow alongside the resolver payload, under the reserved $resolution key. Present exactly when the resolving caller supplied resolvedBy — without it the signal payload passes through byte-identical, so existing waiters are unaffected. The $-prefixed key namespace is reserved for control data riding the signal (like $escalation_id on the legacy routing path); consumer payload fields never collide with it. The stored resolver_payload row column stays clean — provenance rides the signal only.

A waiting workflow declares the key in its condition() payload generic:

const decision = await Durable.workflow.condition<{
approved: boolean;
$resolution?: EscalationResolution;
}>(signalId, config);
decision.$resolution?.resolvedBy; // who resolved it
interface EscalationResolution {
    escalationId: string;
    resolvedBy: string;
    resolvedByEmail?: string;
}

Properties

escalationId: string

The id of the escalation row whose resolve delivered this signal.

resolvedBy: string

Resolver's user id.

resolvedByEmail?: string

Resolver's email — present when supplied alongside the id.