feat(script-analysis): predict outbound calls as ApiCall/DbCall/Notify on the External lane

FlowShapePredictor emits ExternalSystem.Call/CachedCall → ApiCall ('{s}.{m}'),
Database.Execute/Query/QuerySingle/CachedWrite → DbCall ('{conn} · {member}'),
Notify.Send(list) and Notify.To(list).Send() → Notify ('Notify {list}'), all on
FlowLane.External; Async-suffixed spellings map identically. PredictedEdge gains
an additive Async flag; an async edge (cached call, notify) does not advance the
chain, mirroring FlowGraphBuilder.IsAsync (D4/D8). Database.Connection() raw
handles no longer predict a node (command count is not statically knowable).

Claude-Session: https://claude.ai/code/session_01NcMG6xXdsJbmD2wYAgkK29
This commit is contained in:
Joseph Doherty
2026-09-06 01:51:42 -04:00
parent f394f58405
commit 3b9def5a09
3 changed files with 175 additions and 22 deletions
@@ -26,7 +26,7 @@
{
"id": 3,
"subject": "Task 3: Site runtime \u2014 outbound rows flow through the trace collector",
"status": "in_progress",
"status": "completed",
"blockedBy": [
0
]
@@ -50,7 +50,7 @@
{
"id": 6,
"subject": "Task 6: FlowShapePredictor \u2014 three kinds on the External lane, async edges",
"status": "pending",
"status": "in_progress",
"blockedBy": [
0
]
@@ -58,7 +58,7 @@
{
"id": 7,
"subject": "Task 7: FlowGraphView \u2014 External lane, status pills, async/spawn edge styles, pending state",
"status": "pending",
"status": "in_progress",
"blockedBy": [
0,
1,
@@ -96,5 +96,5 @@
]
}
],
"lastUpdated": "2026-09-06T05:47:05.104042+00:00"
"lastUpdated": "2026-09-06T05:51:19.355720+00:00"
}