Files
ARCADIA-Studio/harness/navigation-draft-contract-20261001.md
T

9.2 KiB

Saved Architecture inspection and contextual drawing contract

This bounded desktop contract refines the peer projection/navigation decision for #43 and #42. It describes intended correction behavior against peer source 6520a89dc042dd433454f6cc63cb23b0e6df7911, based on 715036e132677dd2bc2fb37ed316d93dc9987aec. It is not a runtime result, integration claim or live task ledger. Parent owns integration and source/evidence attribution.

Inspection and accepted property edits

Inspection and explicit navigation are distinct intents. Selecting a visible Architecture card, edge, label or port, or opening its Properties, retains the saved canvas and displayed perspective even when the semantic target belongs to the other layer. Explicit Select/Open-owner/Open-endpoint navigation may follow the target's layer.

Applying an ordinary property draft must not accidentally turn inspection into navigation. Preserve the saved Architecture surface through the accepted transaction and reconciliation. If the user intentionally changes that active diagram's identity or layer, follow the accepted new identity/layer; do not overwrite it with the old surface. An accepted placement Diagram change is also explicit navigation: follow the actual destination, including a different diagram on the same layer or a simultaneous placement UUID change. Determine relocation from the actual pre-edit and accepted post-edit owners, not the requested draft text or the currently displayed canvas. Position, alias and UUID edits that keep the placement in its existing owner retain the current saved canvas, even when that canvas differs from the placement owner. Complete model/source changes and their history remain those of the accepted property transaction.

A pending click captured before Apply is not automatically valid afterward. If the accepted edit changes its target, diagram or projection membership, do not replay a stale selection or gesture against the new document. Retain the accepted edit and require another selection. Invalid drafts remain uncommitted with recoverable draft state and no target change. This contract is scoped to saved Architecture surfaces; typed StateMachine/Scenario representations and their existing navigation/owner guards are not broadened.

Contextual Draw

Draw from a visible semantic source is contextual to the actual current diagram, whether its menu originated on the canvas or in the Model explorer sidebar on the Architecture page. The dedicated Model explorer page does not offer Draw. A matching validated menu action must not navigate to a preferred same-layer view before starting. In Traceability, an OA source may start its OA tool in an SA view and vice versa. The source must exist, belong to a tool-supported semantic family/layer and be projected visibly in that current saved Architecture diagram. Opposite-layer latent records in ordinary projections are not actionable sources.

Targets remain compatible visible endpoints under the existing semantic validators. Allocation still requires a projection supporting performer and work, and same-layer compatible work; mixed visibility does not authorize cross-layer Allocation or bypass leaf/direct-assignment rules. Capabilities may show a performer while excluding work: its Draw allocation action must not be enabled. Overview, Decomposition, Allocation and Traceability support both endpoint categories.

The active-perspective palette retains its existing tool family. Contextual admission does not expand that palette. Restart of an already admitted, still-current session resets that same tool against the captured view rather than routing it back through palette-layer eligibility. Escape cancels without creating a relation. Old menu tokens, document revisions, diagram/epoch contexts and pre-restart endpoints cannot act on a newer session. Dirty property/source edits retain their existing refusal behavior.

This does not redefine the separate relationship form workflow: opening a contextual form retains the canvas; successful reviewed Apply keeps its existing explicit post-review navigation. It also does not repair the separately documented opposite-layer performer Add activity/function menu limitation.

Rationale and rejected shortcuts

The recorded defects join unlike intents: ordinary model selection during property application can switch the inspected surface, and routing contextual Begin through palette Choose can reject an enabled Draw action. Repair the intent-specific boundary and reuse semantic admission checks between menu enabledness and Begin.

Blindly restoring the old layer/diagram after an edit is rejected: it can erase the effect of an intentional diagram-layer/identity edit or revive a stale gesture. Temporarily switching layer to arm a tool risks preferred-view navigation and stale context. Broadening every palette to both layers is a separate UI decision and does not fix stale menus or mismatched enabledness. Injecting a Session in a test bypasses the menu-to-Begin defect.

Evaluators and evidence boundaries

Use actual generated token-wrapped popup actions for both OA-in-SA and SA-in-OA Traceability, from canvas and non-canvas Architecture sidebar Model explorer requests. Begin must retain surface and full model/source/history; completion may add only its one relation plus the exact two newly referenced SA function ports when FunctionalExchange requires them. Verify complete Project equality against that permitted delta, source recompilation parity and one-step Undo/Redo. Cover Allocation enabledness, visible compatible/hidden/wrong-layer endpoints, cancellation, restart and stale messages.

For draft inspection, cover a valid property edit applied while clicking another visible opposite-layer object, invalid drafts, accepted edits invalidating the captured target, and deliberate active-diagram layer/identity edits. Compare complete source/model/history; do not accept a preserved screenshot alone. Existing frozen-version admission, reversible projection and typed State/Scenario negative controls retain their original scope.

Native acceptance must exercise actual pointer selection, menu opening, Apply/reselect feedback, visible target highlights, Escape/restart, Save and fresh reopen on an identified build. Source review and handler tests do not establish native or usability acceptance. No repaired runtime pass, fresh native acceptance, release or issue closure is claimed here.

The initial correction was reviewed against the frozen source manifest for repaired-targets: all 554 input hashes matched the independent archive review. The parent executed 20 canvas-selection tests and five real-menu connection regressions successfully, with formatting passing and inputs unchanged. These are bounded handler/source results, not native acceptance. Complete workspace gates, the saved-source evaluator, actual Windows interaction and persisted history checks remain pending at this source checkpoint. A later validation record must identify the tested commit and publish the retained baseline failures, corrected raw gates, independent reviews, native observations and model/source comparisons. The original peer topic remains authoritative for its earlier evidence and limitations; failed or interrupted commands retain their actual outcomes.

Placement relocation regression boundary

The full workspace run on c7065db76ecca3faa733ccb5f09b87fd0a0958be exposed the existing tests::placement_relocation_follows_cross_layer_traceability_view regression: the destination expected SA but the retained surface remained OA. Desktop reported 1552 passed, 1 failed and 7 ignored; preceding core/CLI tests passed, while server tests, doctests and Clippy were not reached. This is a failed workspace gate, not acceptance. The original regression remains unchanged.

The scoped correction distinguishes actual owner changes from ordinary same-owner placement edits, including inspection from a different current saved canvas. Evaluate full expected Project and source bundle against explicit core EditNode/RelocateNode transactions, one-step Undo/Redo, invalid destinations, and refusal of queued old canvas hits with reselect feedback and no old target in multiselect. The test-only c706 baseline reports two passing controls and three failures, including the unchanged original regression. Failing loops stop at their first failed combination; this is not evidence that every later combination failed.

On 2026-10-02 UTC, the applied correction's frozen relocation-repaired-targets gate passed formatting, all five relocation tests, all 20 canvas-selection tests and all five contextual-Draw tests. All 555 archived source inputs remained unchanged. Independent applied-source review checked every archive/current hash and found no new blocker. The relocation checks compare complete independently expected Projects and explicit-command source bundles, one-step history, same/cross-layer destinations, optional UUID changes, invalid destinations and queued-hit feedback. This bounded pass does not establish a complete corrected workspace, Clippy, fresh native build or release; the earlier c706 native observations retain their separate executable identity.