Make participant ports and hierarchical model navigation discoverable

Add focused containment browsing, contextual paged search, clear outline depth and direct component-port creation and connection actions. Share exact boundary feasibility checks to avoid whole-project validation for each picker candidate. Preserve source/property drafts and interrupted-save recovery state, document source-project behavior, and record Windows/Linux native verification and independent review fixes.
This commit is contained in:
2026-09-05 23:17:17 +03:00
parent 60131e610a
commit d364d3c058
16 changed files with 1829 additions and 324 deletions
+31 -8
View File
@@ -996,16 +996,23 @@ entries receive formatted syntax. These rules preserve comments without silently
attaching new semantic identity to an ambiguous list entry.
Retained declaration UUIDs and source ownership remain unchanged. Records match
by UUID, not display name or alias; an explicit UUID replacement is a removal
and creation, retaining the removed record's comments in its original file. The
by UUID, not display name or alias. The model-only ``update_bundle`` treats an
explicit UUID replacement as removal and creation. The desktop instead uses
``update_bundle_with_identity_map`` with the surviving-record provenance from
``prepare_command``: explicit identity edits and sequential identity swaps MUST
preserve each original declaration's owning file and attached source trivia.
New records have no original identity mapping. The mapping MUST be injective,
refer to existing records and preserve record classes. The
result is recompiled, reindexed and checked for equality with the requested
model before return. Source changes needed for undo are workspace history data;
callers should retain complete compiled workspace snapshots rather than infer
past omission/layout choices from a model-only undo.
Canonical modular export is a distinct, explicit operation and does not promise
original comment/layout preservation. No native multi-file editor, project save
transaction or REST bundle endpoint is claimed by the pure core APIs.
original comment/layout preservation. The native editor integrates per-file
drafts and source-project saves as specified below. The pure compiler performs
no filesystem access. REST source endpoints currently exchange a canonical
model; they do not yet exchange the multi-file source bundle.
``parse`` returns a complete structurally validated candidate or error
diagnostics and no model. Engineering warnings alone MUST NOT reject a valid
@@ -1054,8 +1061,9 @@ will occur. Reparenting work must not silently change its performer. A computed
parent summary must remain distinguishable from direct allocation. A collapse
operation hides presentation detail without deleting the children.
Applying complete source is one model transaction. Graphical edits regenerate
the matching canonical source. Both paths validate their candidate before
Applying a reachable source bundle is one model transaction. Graphical edits
update its owning declarations through the source-preserving updater. Both
paths validate their candidate and model/source equality before
adoption; failure preserves the committed model, save baseline, and history.
Incomplete but structurally safe references and coverage gaps produce warnings
that allow continued authoring and saving.
@@ -1064,7 +1072,11 @@ Source and property drafts contribute to unsaved-work state. Invalid drafts
MUST NOT be replaced by generated text or lost on ordinary navigation. Undoing
source-buffer edits and undoing committed model changes are distinct operations.
Successful source Apply creates one model-history entry. Undo/redo restores
the full stored model, including aliases, trace links, and occurrence identity.
the full stored model and exact accepted source bundle, including aliases,
trace links, occurrence identity, comments and file ownership. Each open file
retains its own unapplied draft across file navigation. Located lint diagnostics
refer to the raw draft bytes rather than an identity-stabilized intermediate.
Property editing MUST NOT silently discard a pending source draft.
Changing a graphical UUID must atomically update map keys and every reference.
Alias changes preserve UUID identity. Deletion must account for owned elements,
@@ -1079,10 +1091,21 @@ explicitly before Apply succeeds.
Loading detects JSON from its first non-whitespace ``{``; other input is parsed
as Arcadia source regardless of filename. Saving an ``.arcadia`` suffix uses
canonical V3 text (``arcadia 3``); other suffixes use V3 JSON. Both forms preserve the same
the accepted V3 source bundle (``arcadia 3``); other suffixes use V3 JSON. Both forms preserve the same
complete model. JSON rejects unknown fields throughout typed payloads,
duplicate maps, unsupported versions, and structural errors.
Native source Save All checks the original contents of observed dependencies
before staging writes. Existing target files are replaced individually and the
entry is installed last. A transaction journal records originals and intended
writes; explicit recovery restores originals only when current bytes match a
known transaction state. Unrelated external contents MUST NOT be overwritten
by recovery. Missing entry files and lint updates MUST NOT hide a detected
pending-recovery action. This is not cross-process compare-and-swap or atomic
multi-file visibility. Save failures retain the accepted model and drafts.
Detached dirty buffers MUST be reattached or reverted before source saving;
JSON export does not replace the source project's saved baseline or location.
The frozen schema-2 reader retains staged compatibility defaults. Old Scenario bodies without a
``viewpoint`` retain MixedLegacy, and old Exchange occurrence bodies without
``message_kind``, ``reply_to`` or ``values`` retain Asynchronous, none and [].