ValueExpr:
| { type: "literal"; value: unknown }
| {
field: string;
path?: string;
scope?: "workflow" | "stage";
type: "fieldRead";
}
| { param: string; type: "param" }
| { type: "actor" }
| { type: "now" }
| { type: "self" }
| { type: "stage" }
| {
fields: Record<
string,
| { type: "literal"; value: unknown }
| {
field: string;
path?: string;
scope?: "workflow" | "stage";
type: "fieldRead";
}
| { param: string; type: "param" }
| { type: "actor" }
| { type: "now" }
| { type: "self" }
| { type: "stage" }
| ({ type: "object"; fields: Record<string, ValueExprInternal>; }),
>;
type: "object";
}
An operation's write value, resolved when the operation applies.
paramreads a caller-supplied action argument;actorrecords the acting identity.nowsupplies the operation's ISO timestamp,selfits instance's GDR URI, andstagethe current stage name.objectresolves its fields recursively.A
fieldReadwith no scope searches activity, stage, then workflow fields. An explicit scope searches only that scope. A pathless read from a subject ordoc.refinto another subject ordoc.refpreserves the stored reference. Other reads use the referenced snapshot document, or only its_idand_typewhen it is not loaded. No additional documents are fetched. Initialization uses FieldSource, whose field-read scope rules differ.