Seed a start node when a new workflow is created
Fixes #3607015.
A workflow needs exactly one start node, but both editors opened a brand-new model on an empty canvas, so the author's first act was always the same piece of boilerplate. Now a new model arrives with its start already placed, in both authoring paths, under the same id and label the shipped examples use (n_start / Start).
Complete modeler
OrchestraCmForm::buildForm() seeds the node into the working structure on the first build of a new, unsaved model with no nodes, and points cm_start at it so the row is treated as the start straight away (machine name locked, no type select, no clone or remove). Nothing is written until Save.
BPMN.io canvas
LayoutAwareBpmnIo::edit() draws the start event onto the diagram when the model is new and the owner is Orchestra. The guard matters: the same method renders existing workflows too, and BpmnIo::convert() reuses the empty diagram as the base its components are added onto, so seeding unconditionally would draw a second, unmanaged start event that the save then refuses.
The element carries what it needs to survive the round trip: the pluginid property, without which bpmn_io's parser skips a start event and the saved workflow would have no start node at all, the element template the property panel reads, and a shape with bpmn-js's own new-diagram bounds. It uses the diagram's own namespace prefixes, because they vary (bpmn2: from bpmn_io, bpmn: from bpmn-js, or a default namespace), and it no-ops on a diagram that already has a start event, on an existing model, and on data that does not parse.
The add-node control is deliberately unchanged
The issue summary proposed simplifying the control back to an unconditional exclusion of the start type once a start always exists. That is not done here, on purpose: keeping the existing conditional is what lets a model that arrives without a start, from a config import or a hand-edited YAML, still be repaired in the form. Authoring never reaches the offer now, since a new model opens with one seeded. The summary's third remaining task should be dropped.
Tests
SeededStartEventTest(new, kernel): the seeded element's shape, that it is never doubled, that an existing model and unparsable data are untouched, and that the diagram parses back into exactly one start component carrying the start task type.NewModelCanvasTest(new, functional): the create page's canvas carries the start event, an existing workflow's page does not. This is what pins the new-model condition to the actual routes.OrchestraCmFormTest::testNewModelSeedsItsStartNode(new, kernel): the seeded row, recognized as the start, with the type no longer offered.OrchestraCmAuthoringTestandOrchestraCmFeatureAuthoringTestno longer add a start node; they assert the seeded one instead.
Both new kernel tests were confirmed to fail against the unchanged code and to pass with the change.
Docs updated in the same commit: a BPMN.io adaptation entry in docs/modeling.md and an authoring note in docs/integrations.md. No new interface string, so no translation change.
AI-Generated: Yes (Claude Code was used to write this change, its tests and this description. I reviewed them, and both new kernel tests were confirmed to fail against the unchanged code and to pass with the change.)