chore(plans): flow debugger script entry — task ledger complete + gate evidence (rig H/H2/I, Playwright 4/4, browser)
Claude-Session: https://claude.ai/code/session_01NcMG6xXdsJbmD2wYAgkK29
This commit is contained in:
@@ -1204,3 +1204,15 @@ git commit -am "docs: flow debugger script entry — component specs, CLAUDE.md,
|
||||
6. `dotnet test tests/ZB.MOM.WW.ScadaBridge.CentralUI.PlaywrightTests --filter "FullyQualifiedName~FlowDebuggerTests"` → all pass.
|
||||
7. Browser (Claude in Chrome): open `http://localhost:9000/deployment/flow-debugger`, pick Site script → site-a → DelmiaSim01 → `OutboundDemo`, confirm the parameter form / no-params note, Run, graph completes; then pick a ValueChange script on the same instance (if seeded) and confirm the value field names its attribute.
|
||||
8. Record outcomes in the plan ledger; hand back to the user for merge/push (finishing-a-development-branch).
|
||||
|
||||
---
|
||||
|
||||
## Gate evidence (2026-09-08, branch head `7792b76b` + text fixes)
|
||||
|
||||
- **Build:** `dotnet build ZB.MOM.WW.ScadaBridge.slnx` — 0 warnings, 0 errors.
|
||||
- **Full test run** (`dotnet test` on the slnx, 30 projects): all pass except the 11 known role-negative Playwright tests on the login-disabled rig, the 2 new script-entry Playwright tests (run against the pre-rebuild image; pass after the rebuild, below), and `SiteAlarmAggregatorActorTests.Stream_GivenUp_After_MaxRetries_Reopens_On_Reconcile_Tick`, which passes in isolation (30/30) and is untouched by this branch (load-induced flake).
|
||||
- **Targeted suites after the last fixes:** ManagementService.Tests 631/631 (FlowDebugRunnerTests 34), CentralUI.Tests 1280/1280 (FlowDebuggerPageTests 24, FlowDebugServiceTests 31), CLI.Tests 465/465, Commons.Tests (ScriptTriggerAttributeTests 15, FlowGraphBuilderTests 24).
|
||||
- **Reviews:** per-task spec + code reviews per classification; a whole-branch review (opus) found I1 (transport faults escaped without a root row), I2 (write-kind completion not script-specific) and I3 (circuit-lifetime script cache) — all fixed (`ca9be68d`, `7197c398`) and re-reviewed (approved; two Minor test gaps left: `MaxWaitSeconds` clamp and the unresolved-option Ask fallback are untested).
|
||||
- **Rig:** `bash docker/deploy.sh` rebuilt all 8 nodes; `FLOW_ONLY=1 DELMIA_API_KEY=… bash docker/verify-delmia-notifier.sh` → H YES (live 11 / replay 17), **H2 YES** (`run-script` on `DelmiaSim01`/`OutboundDemo`: kinds RouteCall,ApiCall,CachedSubmit,DbWriteCached,CachedResolve,NotifySend,ScriptRun), I YES.
|
||||
- **Playwright** `FlowDebuggerTests` on the rebuilt rig: 4/4 (incl. `ScriptEntry_LiveRunOfACallScript_InBrowser_Completes`, `ScriptEntry_WriteKindScript_ShowsTheValueFieldForTheTriggerAttribute`).
|
||||
- **Browser (Claude in Chrome, `localhost:9000`):** Site script → Test Plant A → DelmiaSim01 → picker lists `DelmiaReceiverSimulator (ValueChange: DelmiaReceiver.RecipeDownloadFlag)`, `OutboundDemo (Call)`, `ProcessRecipeDownload (Call)`; `ProcessRecipeDownload` renders the five-field `ParameterValueForm`; `OutboundDemo` shows *This script takes no parameters* and a Live run completed in 21 ms, 5 steps, 1 boundary, all External nodes Ok; `DelmiaReceiverSimulator` shows *New value for DelmiaReceiver.RecipeDownloadFlag* with Run disabled until a value is typed.
|
||||
|
||||
@@ -1,19 +1,103 @@
|
||||
{
|
||||
"planPath": "docs/plans/2026-09-08-flow-debugger-script-entry.md",
|
||||
"tasks": [
|
||||
{"id": 1, "subject": "Task 1: ScriptTriggerAttribute helper (Commons)", "status": "pending"},
|
||||
{"id": 2, "subject": "Task 2: FlowDebugRunScriptCommand record", "status": "pending"},
|
||||
{"id": 3, "subject": "Task 3: Extract WriteAndPollAsync from RunValueChangeAsync", "status": "pending"},
|
||||
{"id": 4, "subject": "Task 4: FlowDebugRunner.RunScriptAsync", "status": "pending", "blockedBy": [1, 2, 3]},
|
||||
{"id": 5, "subject": "Task 5: ManagementActor dispatch, role matrix, long-running registration", "status": "pending", "blockedBy": [4]},
|
||||
{"id": 6, "subject": "Task 6: FlowGraphBuilder RouteCall-root pin", "status": "pending"},
|
||||
{"id": 7, "subject": "Task 7: ParameterValueForm.ValidChanged", "status": "pending"},
|
||||
{"id": 8, "subject": "Task 8: IFlowDebugService / FlowDebugService script entry", "status": "pending", "blockedBy": [1, 2]},
|
||||
{"id": 9, "subject": "Task 9: Flow Debugger page script picker + inputs card", "status": "pending", "blockedBy": [7, 8]},
|
||||
{"id": 10, "subject": "Task 10: CLI flow-debug run-script", "status": "pending", "blockedBy": [2]},
|
||||
{"id": 11, "subject": "Task 11: Playwright script run + verify script leg", "status": "pending", "blockedBy": [9, 10]},
|
||||
{"id": 12, "subject": "Task 12: Documentation", "status": "pending", "blockedBy": [5, 8, 10]},
|
||||
{"id": 13, "subject": "Task 13: Gate — build, full tests, rig, browser", "status": "pending", "blockedBy": [11, 12]}
|
||||
{
|
||||
"id": 1,
|
||||
"subject": "Task 1: ScriptTriggerAttribute helper (Commons)",
|
||||
"status": "completed"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"subject": "Task 2: FlowDebugRunScriptCommand record",
|
||||
"status": "completed"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"subject": "Task 3: Extract WriteAndPollAsync from RunValueChangeAsync",
|
||||
"status": "completed"
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"subject": "Task 4: FlowDebugRunner.RunScriptAsync",
|
||||
"status": "completed",
|
||||
"blockedBy": [
|
||||
1,
|
||||
2,
|
||||
3
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"subject": "Task 5: ManagementActor dispatch, role matrix, long-running registration",
|
||||
"status": "completed",
|
||||
"blockedBy": [
|
||||
4
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"subject": "Task 6: FlowGraphBuilder RouteCall-root pin",
|
||||
"status": "completed"
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"subject": "Task 7: ParameterValueForm.ValidChanged",
|
||||
"status": "completed"
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"subject": "Task 8: IFlowDebugService / FlowDebugService script entry",
|
||||
"status": "completed",
|
||||
"blockedBy": [
|
||||
1,
|
||||
2
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"subject": "Task 9: Flow Debugger page script picker + inputs card",
|
||||
"status": "completed",
|
||||
"blockedBy": [
|
||||
7,
|
||||
8
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"subject": "Task 10: CLI flow-debug run-script",
|
||||
"status": "completed",
|
||||
"blockedBy": [
|
||||
2
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"subject": "Task 11: Playwright script run + verify script leg",
|
||||
"status": "completed",
|
||||
"blockedBy": [
|
||||
9,
|
||||
10
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"subject": "Task 12: Documentation",
|
||||
"status": "completed",
|
||||
"blockedBy": [
|
||||
5,
|
||||
8,
|
||||
10
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"subject": "Task 13: Gate \u2014 build, full tests, rig, browser",
|
||||
"status": "completed",
|
||||
"blockedBy": [
|
||||
11,
|
||||
12
|
||||
]
|
||||
}
|
||||
],
|
||||
"lastUpdated": "2026-09-08T00:00:00Z"
|
||||
"lastUpdated": "2026-09-08T05:47:49Z"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user