The action it dispatches to — resolved here so the submitter needs no metadata lookup.
Human-readable name of that action, used for the task's name.
The MJ: Entity Actions binding that fired.
The entity whose save fired this.
Name of that entity, for a task description a person can read.
Which lifecycle event fired — AfterCreate / AfterUpdate / AfterDelete.
The record, in MJ's canonical serialized form (ToConcatenatedString()).
The action's input parameters, already redacted — the name → value record produced by
RedactParamsToRecord in ./ParamRedaction. A parameter suppressed by any redaction
rule is omitted entirely, not present with an undefined or placeholder value.
Typed as a Record<string, unknown> rather than ActionParam[] / LoggedParam[]
deliberately: Task.InputPayload is persistent, user-visible storage, and the #3408 §5.7
invariant is that no path writes a raw ActionParam[] there. It also isn't the array/log
shape RedactParams/RedactParamsToJSON produce — a positional array here is silently
wrong rather than loudly wrong: it round-trips through JSON.stringify/JSON.parse without
error, and every released build with durable dispatch (v6.1.0 onward, including 6.1.4) hit
the same failure — TaskGraphDispatcher's mergedPayload only merges plain objects, so it
silently dropped the array and the action ran with NONE of its inputs. Params named "0",
"1", … instead of their real names would only appear if the array reached
TaskGraphActionRunner.buildParams directly, bypassing that drop (MJ#4794). Taking the
redacted record shape at the boundary is what makes violating that invariant require
changing this type rather than forgetting a call.
One durable dispatch: which binding, on which record, with what already-redacted inputs.