Files
ARCADIA-Studio/harness/fixtures/release1-native/communication-means
..

Communication means native QA fixtures

Acceptance remains scoped by the native reports. The actual drawn baseline has independently passed the draw+rename oracle below; this does not accept every transition variant. These deterministic source-6 fixtures and direct core oracles cover participant communication, explicit SA endpoint choices and a reverse boundary Call/correlated Reply. They do not simulate native drawing or establish readability. Root is the native operator. Work on isolated copies; never overwrite the tracked bases with native saves.

Fixtures and expected behavior

  • cm-draw.arcadia: OA Rescue team / Control centre, independently owned activities Report rescue status / Assess rescue status, two allocations and Rescue status Interaction. There is no CommunicationMean. Open the saved Draw operational communication Overview: participant rectangles (80,70,250,160) / (550,70,250,160), work rectangles at y330; horizontal gap 220. SA Rescue radio / Control radio already have one Standard/Unset component socket each, and explicit participant traces. No interfaces, PortAllocations or ExchangeAllocations are invented.
  • cm-transition-ready.arcadia: same base plus unoriented Rescue radio channel from Rescue team to Control centre. This isolates transition QA if drawing is investigated separately. Existing traces are Team radio correspondence and Control radio correspondence.
  • cm-reuse.after-template/entry.arcadia: both SA sockets explicitly reused; no new element, one BoundaryExchange and its Exchange trace added.
  • cm-create.after-template/entry.arcadia: source Existing team socket reused; destination explicitly creates a Standard/Unset port under Control radio. Exactly one new element, one BoundaryExchange and its Exchange trace added; Existing control socket is retained unused. Created name follows the GUI: Rescue radio channel · target port, empty description.
  • cm-reverse-scenario.arcadia: existing mapped unoriented channel/boundary plus SA BoundaryInterface scenario Reverse rescue request. Control radio lifeline calls Team radio lifeline, opposite the stored boundary endpoints; Reply with rescue report returns and explicitly correlates to Request rescue report. All ports are Standard/Unset.
  • cm-reverse-scenario.after-template/entry.arcadia: legacy desktop policy whole-subtree SA→OA transition preserves the existing source scenario/messages, maps the boundary to the existing OA mean and participants, creates the five OA scenario/lifeline/ occurrence counterparts and five traces, and creates zero OA ports. Call resolves Control centre→Rescue team; Reply resolves Rescue team→Control centre and points to the mapped Call identity. Legacy desktop Apply also adds five placements to the existing OA diagram. The oracle independently predicts all five placements, rather than discarding presentation differences.

Template after directories are complete source bundles, including generated traceability.arcadia and other modules. Copy entire directories. Their fresh counterpart/trace IDs are deterministic reference IDs, not the UUIDs a native transition will allocate. manifest.json supplies all stable base identities. Each request JSON is a complete core request; destination_diagram is None. Under the legacy desktop policy used by these original templates, this does not disable placement: the GUI selects the first target-layer diagram and places changed elements that are not already shown. The corrected behavior-root policy uses the separate reverse-behavior mode below and preserves every saved view.

Native steps

  1. Open a copy of cm-draw.arcadia, select Operational / Draw operational communication. Fit, then use working zoom at 1440×900 and 1100×700. Start Communication means, click Rescue team then Control centre. Confirm the endpoint tool excludes Activity targets and creates one participant-level relation without OA ports. Rename it Rescue radio channel. Confirm the channel is unoriented (oriented false), with no items. Save this complete before-transition project in a new trial directory; preserve its entire source bundle for Undo. The Interaction and its existing allocations must remain unchanged.
  2. Select the mean and open transition to System. Keep the initial Required references scope while explicitly selecting Rescue team→Rescue radio and Control centre→Control radio in their participant pickers. Seeing an existing trace candidate is not the same as authoring its mapping. The original instructions switched to Selected only too early, hiding both participant rows and their existing port choices. This was an instruction error. Once both mappings are authored, switch Include → Selected only; mapping and endpoint drafts survive the scope change. This preserves the selected-only request's exact boundary: participant names/baselines are not updated. If target Name review is shown while Required references is selected, Keep target is consistent; it need not appear after switching. Before both communication endpoints are chosen, Apply must remain blocked.
  3. In System communication endpoints, source uses Existing team socket. Target uses Create Standard port · bidirectional. Verify the new port is under Control radio and no existing socket disappears. Do not change other port metadata. Selected-only forward creation adds no standalone node placement: the exchange is the plan change and the component port belongs to its owner. One Apply then Save As must match the check create oracle below. One Undo/Save must equal the full captured before bundle; one Redo/Save must equal the after bundle exactly, retaining generated UUIDs.
  4. In a separate clean copy, repeat with both Existing team socket and Existing control socket. Run check reuse. There must be no new port. These are alternative trials, not successive edits to one counterpart.
  5. Legacy binary reproduction: open a copy of cm-reverse-scenario.arcadia. In System Behavior select Reverse rescue request. Inspect both named lifelines, reverse Call and correlated Reply. Transition the scenario to Operational with Whole subtree; map the boundary to the existing Rescue radio channel and both participants to their existing OA counterparts. Keep target Names for differing participants. The legacy GUI automatically places new target elements in its first OA diagram; no placement opt-out is exposed. One Apply/Save must pass check reverse; inspect operational lifelines, mapped Reply-to identity, both message directions and absence of OA ports. Repeat exact Undo/Redo saves.

If a UI choice produces a different result, preserve the full trial bundle and record the exact choice. Do not modify the expected contract to make it pass. Exchange allocation authoring, Flow-port directional refusal, crash recovery and other communication transition variants are separate gates unless exercised.

Generator and exact oracle checker

Compile outside Cargo/shared target, after the owner confirms these libraries are stable. The matching serde_json fingerprint matters; another feature graph with the same crate version will fail Rust trait identity checks.

. .local/toolchain/env.ps1
rustc --edition 2024 -C linker=clang.exe --extern oa_core=.local/target-gnullvm/debug/deps/liboa_core-6c8da57367eec642.rlib --extern serde_json=.local/target-gnullvm/debug/deps/libserde_json-da2c4f333fc47818.rlib -L dependency=.local/target-gnullvm/debug/deps harness/fixtures/release1-native/communication-means/generate-communication-means.rs -o .local/native-fixtures/generate-communication-means.exe
.local/native-fixtures/generate-communication-means.exe generate .local/native-fixtures/cm-fresh
.local/native-fixtures/generate-communication-means.exe check create BEFORE_ENTRY.arcadia AFTER_ENTRY.arcadia .local/native-fixtures/cm-native-oracle

Use reuse or reverse instead of create for the other cases. The checker loads real complete source bundles. It constructs the independent expected core request from the preserved before model, with the specified choices above. Actual output supplies only the created port UUID (create trial) and the new target/trace UUIDs matched by exact source identity. New placement UUIDs are matched only by exact destination diagram and mapped element identity. Typed reference visitors plus identity-field rekeying perform those substitutions; no names, aliases, metadata, history, orientations, bindings or reply fields are copied from actual output. Existing identities cannot be normalized away. Placement order/geometry is independently predicted from the plan's changes and prior diagram: starting with four existing OA nodes, positions are (340,210), (620,210), (60,360), (340,360), (620,360), each size224×94, unfolded with no port anchors. Existing placements remain unchanged. Names/aliases follow the same core placement primitive, with no observed native metadata copied into the expected result. The complete resulting Project must equal actual, then every reachable source module must equal the production updater's output byte-for-byte. Only the entry filename is aligned for Save As; contents and all included paths remain exact. Successful checking writes expected JSON, the complete expected bundle and native request into the supplied output folder.

Direct-rustc validation passed generation, complete JSON/source round trips and all three checker modes against their template bundles. Forward modes substitute two generated target/trace UUIDs and no placement IDs; reverse substitutes ten target/trace and five placement UUIDs. All six initial source/JSON fixture files remain byte-for-byte unchanged by this correction. Regenerating every output in a fresh directory was byte-exact. Temporary counterfactuals with changed placement x coordinate, width, alias or swapped element assignments were each rejected by the full-model oracle; an added source newline was separately rejected by exact bundle comparison. The earlier changed-name after bundle was also rejected. Ignored trial evidence is under .local/native-fixtures/cm-placement-falsifiers/. These are core/tool checks, not native passes. Core test contracts reused: communication_transition_requires_explicit_ports_and_preserves_participant_mapping, communication_reverse_transition_projects_owners_without_oa_ports, and reverse_boundary_scenario_transition_keeps_call_orientation_and_reply_identity.

Actual native drawing baseline oracle

check draw BEFORE_ENTRY AFTER_ENTRY OUTPUT_DIRECTORY constructs an independent CreateRelation using the GUI's initial engineering name/alias rule, then an EditRelation changing only the name to Rescue radio channel. The production source updater runs after each command. Actual output supplies only the one new relation UUID; the checker compares the complete Project and every reachable source byte, aligning only the entry filename for Save As.

Actual .local/native-qa/cm-create-before/entry.arcadia passed against tracked cm-draw.arcadia. The new UUID is 3e576659-3455-4fb5-811e-5f4a326948f4; expected alias is communication_means_rescue_team_control_centre, empty description/items, oriented false, endpoints cm10→cm11. The complete native entry and independent expected entry both hash to 40363373B2443714F38D5825F8FAF53183CF004962059E0B611D01DB8E7F7F7E. Log: .local/native-fixtures/cm-native-draw-check.log; full expected model/source and serialized commands: .local/native-fixtures/cm-native-draw-oracle/. Changed orientation and alias were independently rejected by full-model equality; added source whitespace was rejected by exact-source comparison. The native files and existing tracked fixture/oracle models were read-only during this verification.

. .local/toolchain/env.ps1
.local/native-fixtures/generate-communication-means.exe check draw harness/fixtures/release1-native/communication-means/cm-draw.arcadia .local/native-qa/cm-create-before/entry.arcadia .local/native-fixtures/cm-native-draw-oracle

Behavior navigation policy: separate reverse oracle

The original check reverse and cm-reverse-scenario.after-template remain the legacy automatic-placement oracle: ten target/trace UUIDs plus five placement UUIDs. Root verified that policy natively, including exact Save/Undo/Redo. It is retained to explain the earlier binary's accepted result, not silently revised.

For a binary containing the behavior-transition navigation correction, repeat the same reverse scenario review from the unchanged cm-reverse-scenario.arcadia baseline. After Apply, Behavior should show the explicit OA counterpart of Reverse rescue request, with the Call and correlated Reply. It must not switch to an unrelated architecture view or add placements there. All saved diagrams, including geometry, routing and metadata, must remain exactly equal to baseline. Save, Undo/save and Redo/save remain one complete transition operation.

Use the distinct checker (replace NEW_NATIVE_AFTER_ENTRY with the saved entry):

. .local/toolchain/env.ps1
.local/native-fixtures/generate-communication-means.exe check reverse-behavior harness/fixtures/release1-native/communication-means/cm-reverse-scenario.arcadia NEW_NATIVE_AFTER_ENTRY .local/native-fixtures/cm-native-reverse-behavior-oracle

cm-reverse-behavior.after-template is the new complete expected bundle. Its generation mode takes the original source bundle and uses the production source updater; it does not rewrite the legacy fixture or templates:

.local/native-fixtures/generate-communication-means.exe generate-reverse-behavior harness/fixtures/release1-native/communication-means/cm-reverse-scenario.arcadia NEW_OUTPUT_DIRECTORY

The new policy calls the shared core planner/application with the explicit scenario root and no destination diagram, independently asserts unchanged diagrams, and preserves existing reverse Call/Reply/binding/no-OA-port assertions. Only ten generated target/trace UUIDs are normalized; no placement identity or property is copied from native output. Full Project and complete source-byte comparisons still apply. This mode covers this explicit scenario fixture, not arbitrary behavior root types or explicit destination requests.

Direct-rustc checks passed the new template and the unchanged legacy template. The new checker rejected the legacy placements; the legacy checker rejected their omission; the new checker also rejected an added source newline. Regeneration was byte-exact. Negative logs are in .local/native-fixtures/cm-reverse-behavior-falsifiers/. These are fixture-tool checks; native acceptance of the corrected navigation policy remains pending.