10 KiB
Native endpoint attachment acceptance
This is a prepared plan, not a record of passed native checks. native-fixture.arcadia is a deliberately small schema-7 source fixture with 49 explicit stable UUIDs. The parent must parse and validate it with the candidate before staging a working copy. No GUI, compilation, or evaluator has been run for this preparation.
Bind the run
Record the exact candidate commit, source/worktree cleanliness, GUI/runtime hashes, successful gate receipts, fixture hash and recipe hash. Keep an immutable baseline and a separate mutable working source; use an isolated profile. Record launch, normal close, stdout/stderr, saved checkpoints, and captures. Compile baseline and checkpoints to full typed Project values with the same pinned source evaluator. Use a baseline-derived expected Project with only the named field changes; compare the entire Project, not a JSON subset or screenshot. Source text formatting may differ after save; source must parse to the exact expected Project. Save/reopen comparisons must use the same expected Project. Preserve raw files and integer precision.
The fixture contains two OA activities and their one interaction, one small SA state machine, and a separate two-function semantic-port regression view. Its controller is semantic ownership, not a large canvas placement. The State view places the machine, region, and all five vertices. Two saved views per edited graph expose view-isolation failures. View 05 is separate to keep the main workflows uncluttered.
Identities and geometry
Every ID has prefix ea202922-0033-4000-8000-; the twelve-digit suffix below is decimal-padded. The source file is authoritative for all fields.
| Object / alias | ID suffix | Purpose |
|---|---|---|
dispatch_request |
20 | Stored source receive_report (10), target dispatch_crew (11) |
dispatch_view / dispatch_reference |
100 / 101 | Edited OA view / untouched OA view |
readiness / main_region |
31 / 32 | Machine / region membership |
start, ready, active, decision, finished |
33–37 | Initial, two stable states, choice, final |
activate |
41 | Stored Ready source → Active target |
initialize / finish |
40 / 44 | Circle-source / diamond-source contour checks |
refresh / internal_check |
45 / 46 | External self-transition / internal row |
readiness_view / readiness_reference |
200 / 201 | Edited State view / untouched State view |
status_exchange / ports_view |
54 / 300 | Real semantic ports regression |
Coordinates below are diagram coordinates, not assumed native screen coordinates. After Fit, identify bounds and zoom/pan from actual UI; map window = canvas origin + pan + zoom × diagram. State canvas includes a guidance strip in its offset. Confirm painted handles before pressing; retain screenshots documenting the mapping. Source and target describe stored ends, regardless of arrow appearance.
| View / endpoint | Baseline attachment / contour point | Intended destination |
|---|---|---|
OA dispatch_request source |
Right 0.5 → (340,240) | Top 0.25 → (160,180) |
OA dispatch_request target |
Left 0.6 → (600,252) | Bottom 0.75 → (780,300) |
State activate source |
Right 0.5 → (430,270) | Top 0.25 → (250,210) |
State activate target |
Left 0.6 → (570,294) | Bottom 0.75 → (750,350) |
State initialize initial source |
Right 0.5 → (126,260) | Top 0.5 → (118,252) |
State finish choice source |
Right 0.5 → (698,444) | Top 0.5 → (684,430) |
Real status_out / status_in |
Right 0.5 → (340,240) / Left 0.5 → (600,240) | No attachment editing permitted |
For rounded corners, the quarter-width points are on the straight section. Circle and diamond checks intentionally use contour extrema with unambiguous 0.5 offsets. Native drag input may quantize to adjacent hundredths: if the intended fraction is not attained, do not change the expected oracle to match output. Repeat from the prior checkpoint using the painted geometry, or record the observed limitation and narrow the claim.
OA workflow and exact expectations
- Open view 01 Dispatch — edit attachments and Fit. Select
Dispatch requeston its line. Confirm distinct endpoint handles and context actions. Save baseline checkpoint00before edits; full Project equals baseline B. - Drag source handle from (340,240) to (160,180), inspect live preview and release. Save
01. Expected O1 = B with onlydiagrams[100].routes[edge20].source_attachment = {Top,0.25}. Target sentinel{Left,0.6}, waypoint(440,340), label{fraction:0.5,offset:(12,-18)}, relation description/direction, nodes and all other views remain exact. - Undo and save
02: B exactly. Redo and save03: O1 exactly. One Undo must remove the entire drag, not a partial movement. - Drag target to (780,300), save
04: O2 = O1 with only target{Bottom,0.75}. Open source and target context actions to ensure end identity is clear. Use Reset source attachment, save05: O3 = O2 with source None; preserve target, waypoint and label. Undo returns O2, redo returns O3. - Start a drag, move away and return within three screen pixels of the press, then release: no source/history change. Repeat a drag canceled with Escape; repeat with right click, middle pan, wheel/camera change, focus loss, and release outside. Save a checkpoint after each meaningful cancellation; expect O3 exactly. Camera-only state is outside Project. After these checks, one Undo still reverses the last real reset (O2), showing no hidden history entry; Redo restores O3.
- Open view 02 Dispatch — untouched reference: its independent target
{Bottom,0.25}and placements remain baseline. Return to 01, save, close normally, reopen the saved working file and save06: O3 exactly. Confirm the saved source contains the attachment and existing waypoint/label.
State workflow and exact expectations
Continue from saved O3 so the State trial also proves preservation of the prior OA edits. The frozen expected catalog composes State changes on O3; B remains the unchanged comparison for view 201.
- Open Rescue readiness in Behavior / State diagram and choose 03 Readiness — edit attachments. Check source-defined membership is visible, with Ready and Active readable and no nested hierarchy. Select
Activate; choose Adjust source attachment from its actions, then drag the highlighted source to (250,210). SaveS01: S1 = O3 with onlydiagrams[200].routes[edge41].source_attachment={Top,0.25}. Preserve target{Left,0.6}, waypoint(500,310), label{fraction:0.5,offset:(8,-16)}, all semantic transitions and view 201. - Undo → O3, redo → S1. Adjust target to (750,350), save
S02: S2 adds only target{Bottom,0.75}. Reset target and saveS03: S3 has target None, preserves source/bend/label. Cancel an attachment gesture with Escape and perform away-return and wheel interruption; checkpoints remain S3. View 04 Readiness — untouched reference stays B exactly. - Choose
Initialize→ Adjust source attachment, drag the initial circle source to (118,252), saveS04: S4 = S3 with only route edge40 source{Top,0.5}. ChooseFinish→ Adjust source, drag the choice source to (684,430), saveS05: S5 = S4 with only route edge44 source{Top,0.5}. Capture both painted contours; the typed checkpoint is the persistence oracle. Undo/redo each as practical. Save/normal-close/reopen final checkpoint: S5 exactly. - Inspect external
Refresh: Active → Active: both Adjust source and Adjust target must be discoverable and identify the corresponding end even on a self-transition. InspectInternal status checkrow: it must not offer external attachment handles/actions. Do not infer every symbol was exercised from these checks. - Separate reversible reconnect trial from S5: with Select / move, drag the selected
Activatetarget handle from Active toDispatch decision(or use explicitly labelled Reconnect target). Expected R1 differs from S5 only in relation41's semantic target: 35 → 36. Route presentation fields and every other relation field remain unchanged. Undo must restore S5. This distinguishes semantic reconnect from Adjust; do not mix its checkpoint with S5. If cardinality/validity blocks the trial, record it and do not claim reconnect success without a valid alternative approved against source rules.
Real semantic ports regression
Open 05 Status — semantic ports regression. Select the Readiness status functional exchange. Both attachment Move/Reset actions must be disabled or absent because source_port52 and target_port53 remain authoritative. Drag Status output to its owner's Top/0.25 position through the established port-layout interaction, then Undo. That trial may change only the emitting node's port_anchor and must restore S5 exactly on Undo; relation/source_port/target_port identities must never change. No edge-attachment record should be created by port dragging. Record UI hit selection and full saved Project, then leave this trial out of the final OA/State checkpoint.
Acceptance and limits
Require exact full-Project checks for every named checkpoint, normal-close/reopen retention, source/target discoverability, useful previews, and cancellation without hidden history. Inspect native fit/readability and any port/label/handle overlap; reduce claim or fix defects rather than interpreting screenshots as model proof. This fixture does not establish Process/Scenario authoring support, all state symbols, every projection, promoted/folded endpoints, continuous held-motion performance, or exact camera persistence. Those require separate evidence; targeted automated tests remain complementary. Runtime source parsing/validation and native execution are pending parent gates.
Prepared layout clearance correction
The edited State view places Ready and Active at y=210 and Startup at y=252. The reference view intentionally retains its earlier positions. Region header clearance reaches y=180 (104 + 64 + 12); the planned Ready top lead now ends at y=192 (210 - 18), above the card but below the header obstacle. This changes only the three edited-view placements; the manual waypoint (500,310), both route labels, semantic objects, and reference view are preserved. crates/oa-core/tests/attachment_workshop.rs validates the fixture and routes the named edited edges at every planned checkpoint. Test execution is pending the parent gate; no clear-path claim is made from static inspection alone.