feat(commons): additive Trace flag + ChildExecutionId/TraceEvents on route/call/write/change records

Flow Debugger (design 2026-09-05 §5.2/§5.4): Trace rides beside ParentExecutionId on
RouteToCallRequest/RouteToSetAttributesRequest/ScriptCallRequest/SetStaticAttributeCommand/
AttributeValueChanged; RouteToCallResponse and ScriptCallResult carry the site run's
ExecutionId and its ScriptTrace AuditEvents inline. All trailing optional — zero call-site edits.

Claude-Session: https://claude.ai/code/session_01GSLkkHKz9JrAtmJjmQK3cP
This commit is contained in:
Joseph Doherty
2026-09-05 23:41:50 -04:00
parent 352e0bfa37
commit 24e595d6d9
6 changed files with 82 additions and 7 deletions
@@ -9,9 +9,11 @@ namespace ZB.MOM.WW.ScadaBridge.Commons.Messages.ScriptExecution;
/// null for normal (tag-change / timer-triggered) runs, nested <c>Script.Call</c>
/// invocations, and any request built before the field existed.
/// </param>
/// <param name="Trace">Flow Debugger trace flag — see design 2026-09-05 §5.2. Additive; defaults to untraced.</param>
public record ScriptCallRequest(
string ScriptName,
IReadOnlyDictionary<string, object?>? Parameters,
int CurrentCallDepth,
string CorrelationId,
Guid? ParentExecutionId = null);
Guid? ParentExecutionId = null,
bool Trace = false);
@@ -1,7 +1,13 @@
using ZB.MOM.WW.Audit;
namespace ZB.MOM.WW.ScadaBridge.Commons.Messages.ScriptExecution;
/// <param name="ExecutionId">Flow Debugger — the run's own <c>ExecutionId</c> (design 2026-09-05 §5.4). Additive; null from callers that predate the field.</param>
/// <param name="TraceEvents">Flow Debugger — the run's <c>ScriptTrace</c> audit events in emission order when traced (design 2026-09-05 §5.4); null otherwise.</param>
public record ScriptCallResult(
string CorrelationId,
bool Success,
object? ReturnValue,
string? ErrorMessage);
string? ErrorMessage,
Guid? ExecutionId = null,
IReadOnlyList<AuditEvent>? TraceEvents = null);