When a user added a DataPoint.Graph node as a child of a DataPoint, the
graph editor opened showing “No data sources configured” and the user had to
manually add the parent DataPoint as a source. The auto-linking only happened
asynchronously on the server after creation.
ScreenCore.executeCommand() created every child node with default metadata
from type.meta(). For KrillApp.DataPoint.Graph this produced a bare
GraphMetaData() with sources = emptyList(). The server-side
ServerGraphProcessor.process() fills in sources on first CREATED-state
fire, but the SSE round-trip means the UI briefly shows the unconfigured
state — and for local DataPoints (where the server won’t process at all) the
auto-link never fires.
In ScreenCore.executeCommand(), detect when KrillApp.DataPoint.Graph is
being created as a child of a KrillApp.DataPoint node and pre-populate
GraphMetaData.sources with NodeIdentity(n.id, n.host) before sending the
node to the server. The server-side guard (if (meta.sources.isNotEmpty())
return true) skips the redundant update.
ScreenCore, not delegated entirely to server-side async processing.ScreenCoreTest.executeCommand_graph_under_dataPoint_presetsSource
asserts sources are pre-set on the created node — will catch any future
regression that reverts the else { type.meta() } path.