d11dcb77c5
Flow Debugger (design 2026-09-05 §7.1): FlowDebugRunMethodCommand / FlowDebugRunValueChangeCommand / FlowDebugReplayCommand on the per-node ManagementActor (Deployer role; the two run commands are long-running), all delegating to FlowDebugRunner. RunMethod refuses on a standby with STANDBY_NODE (ManagementCommandException now carries an optional Code that replaces COMMAND_FAILED), validates parameters through the real ParameterValidator/SchemaRefResolver (made public), synthesizes the inbound row (actor = operator, Extra.source = flow-debugger) and runs the method through InboundScriptExecutor with a trace-sink RouteHelper so the reply carries the RouteCall row + the site's inline events. RunValueChange does a traced routed write via IInstanceRouter, then polls IPullTraceEventsClient (interface moved to Commons so ManagementService can consume it) until a ScriptRun parented to the root settles, else NO_TRIGGER_WITHIN_WINDOW. Replay reads IAuditLogRepository.GetTraceEventsAsync. Claude-Session: https://claude.ai/code/session_01GSLkkHKz9JrAtmJjmQK3cP
211 lines
4.7 KiB
JSON
211 lines
4.7 KiB
JSON
{
|
|
"planPath": "docs/plans/2026-09-05-flow-debugger.md",
|
|
"tasks": [
|
|
{
|
|
"id": 0,
|
|
"subject": "Task 0: Amend the design doc with the four planning corrections",
|
|
"status": "completed"
|
|
},
|
|
{
|
|
"id": 1,
|
|
"subject": "Task 1: Audit enums — ScriptTrace channel and four kinds",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
0
|
|
]
|
|
},
|
|
{
|
|
"id": 2,
|
|
"subject": "Task 2: Additive Trace / trace-payload fields on the message records",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
0
|
|
]
|
|
},
|
|
{
|
|
"id": 3,
|
|
"subject": "Task 3: ApiMethod.TraceAllCalls — entity, EF migration, management command, CLI flag",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
0
|
|
]
|
|
},
|
|
{
|
|
"id": 4,
|
|
"subject": "Task 4: FlowStep projection + FlowGraph model + FlowGraphBuilder (pure)",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
1,
|
|
2
|
|
]
|
|
},
|
|
{
|
|
"id": 5,
|
|
"subject": "Task 5: FlowTraceCollector (site, per run)",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
0
|
|
]
|
|
},
|
|
{
|
|
"id": 6,
|
|
"subject": "Task 6: ScriptRuntimeContext — traced flag, trace emission for writes and waits, flag inheritance",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
4,
|
|
5
|
|
]
|
|
},
|
|
{
|
|
"id": 7,
|
|
"subject": "Task 7: ScriptRunLauncher + ScriptActor — ScriptRun rows, ExecutionId + events, value-change inheritance",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
6
|
|
]
|
|
},
|
|
{
|
|
"id": 8,
|
|
"subject": "Task 8: InstanceActor — trace arm for data-sourced writes; Trace on published changes",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
2
|
|
]
|
|
},
|
|
{
|
|
"id": 9,
|
|
"subject": "Task 9: DeploymentManagerActor routing — pass Trace, return child id + events",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
7,
|
|
8
|
|
]
|
|
},
|
|
{
|
|
"id": 10,
|
|
"subject": "Task 10: Wire — site_command.proto trace fields, mapper, golden samples",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
2,
|
|
11
|
|
]
|
|
},
|
|
{
|
|
"id": 11,
|
|
"subject": "Task 11: Wire — sitestream.proto source_execution_id/trace + PullTraceEvents RPC; site SQLite read by execution ids",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
2
|
|
]
|
|
},
|
|
{
|
|
"id": 12,
|
|
"subject": "Task 12: RouteHelper — always-on RouteCall audit row, WithTrace, inline trace sink",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
1,
|
|
2,
|
|
4
|
|
]
|
|
},
|
|
{
|
|
"id": 13,
|
|
"subject": "Task 13: InboundScriptExecutor.ExecuteAsync(trace) + endpoint honours TraceAllCalls",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
12
|
|
]
|
|
},
|
|
{
|
|
"id": 14,
|
|
"subject": "Task 14: IAuditLogRepository.GetTraceEventsAsync(rootExecutionId)",
|
|
"status": "completed",
|
|
"blockedBy": [
|
|
1
|
|
]
|
|
},
|
|
{
|
|
"id": 15,
|
|
"subject": "Task 15: Management commands — FlowDebugRunMethod / RunValueChange / Replay",
|
|
"status": "pending",
|
|
"blockedBy": [
|
|
9,
|
|
10,
|
|
11,
|
|
12,
|
|
13,
|
|
14
|
|
]
|
|
},
|
|
{
|
|
"id": 16,
|
|
"subject": "Task 16: CLI flow-debug command group",
|
|
"status": "pending",
|
|
"blockedBy": [
|
|
15
|
|
]
|
|
},
|
|
{
|
|
"id": 17,
|
|
"subject": "Task 17: FlowShapePredictor (Script Analysis)",
|
|
"status": "pending",
|
|
"blockedBy": [
|
|
4
|
|
]
|
|
},
|
|
{
|
|
"id": 18,
|
|
"subject": "Task 18: Central UI service — IFlowDebugService / FlowDebugService",
|
|
"status": "pending",
|
|
"blockedBy": [
|
|
15,
|
|
17
|
|
]
|
|
},
|
|
{
|
|
"id": 19,
|
|
"subject": "Task 19: FlowGraphView — custom SVG swimlane renderer",
|
|
"status": "pending",
|
|
"blockedBy": [
|
|
4
|
|
]
|
|
},
|
|
{
|
|
"id": 20,
|
|
"subject": "Task 20: Flow Debugger page — toolbar, inputs, predicted graph, run, detail panel",
|
|
"status": "pending",
|
|
"blockedBy": [
|
|
18,
|
|
19
|
|
]
|
|
},
|
|
{
|
|
"id": 21,
|
|
"subject": "Task 21: Drill-ins and the TraceAllCalls checkbox",
|
|
"status": "pending",
|
|
"blockedBy": [
|
|
3,
|
|
20
|
|
]
|
|
},
|
|
{
|
|
"id": 22,
|
|
"subject": "Task 22: Rig — retention override, redeploy, verification step H",
|
|
"status": "pending",
|
|
"blockedBy": [
|
|
16,
|
|
20,
|
|
21
|
|
]
|
|
},
|
|
{
|
|
"id": 23,
|
|
"subject": "Task 23: Documentation sweep",
|
|
"status": "pending",
|
|
"blockedBy": [
|
|
22
|
|
]
|
|
}
|
|
],
|
|
"lastUpdated": "2026-09-06T03:58:13.917546+00:00"
|
|
} |