Files
ARCADIA-Studio/harness/experiments/canvas-editing-followup-20260912/bound-fixture-preparation.md
T

3.8 KiB

Bound native activation fixture — source handoff

Generator: .local/nested-call-bound-fixture-20260912.rs. Source-only; no compiler, Cargo, native UI, Git or Gitea calls. Root owns compilation/execution and acceptance. Rustfmt only checks/formats Rust syntax; it does not establish type correctness or fixture admission.

Root's first version compiled with -D warnings but generation failed before writing output (exit 101). The exact failed source is preserved as .local/native-qa/nested-bound-b250-core/probe-source.rs, SHA256 c5a5ce13c1910ecde13ff3e4ae9f551db521e2818ae28f4b5bded9da69c37102, verified against build.json before editing. The first failed constructor was Kind::Actor in SA: the actual public kind is Kind::SystemActor. Generic make_element(Kind::Port, ...) would also fail intentionally; revised source now uses ports::make_port with explicit owner and Standard component contract. Validation, operation proof, values and whole-Project equality checks remain unchanged. Revised source awaits root's new compile/run receipts; this correction is not yet a runtime pass.

The fresh Project contains three compact scenarios, each two lifelines/four messages in exact order C1,C2,R2,R1:

Scenario Binding
OA Nested pressure checks Two Activity lifelines; actual Interaction carrying an Information/Operation item; In requested_pressure and Return measured_pressure, both Real kPa.
SA Nested pressure checks Actor/System lifelines; concrete Standard component ports; required/provided interface; synchronous InterfaceItemAllocation; BoundaryExchange carrying that operation; both Calls explicitly select that exact allocation, Replies derive it from their correlated Calls.
OA Reentrant pressure review C1 L1→L2; C2 L2→L1 through an explicit reverse Interaction; R2 L1→L2; R1 L2→L1. All four remain bound to the correct channel/item and carry values.

C1 requests 420.0 and R1 returns 418.0; C2 requests 380.0 and R2 returns 378.0. Every message carries one nonempty expression. IDs use the deterministic 21b00d00-0000-4000-8000-... namespace; Call UUID order is deliberately opposite to semantic sequence order. Scenario numeric ID suffixes are 1000, 2000, and 3000; the generated TSV records actual UUID strings. Unicode Δ pressure · 戻り値 is retained in the project description and whole-Project round trip.

Contract evidence read: crates/oa-core/tests/source7_contract.rs operation fixture/resolution and operation_edit; crates/oa-core/src/operations.rs exact allocation, channel, provider/caller port and reply derivation checks; crates/oa-core/tests/r6_data.rs OA Interaction carrying an Operation item with directional parameters/values; current model.rs constructors and field shapes. The OA case deliberately stores no OperationUse, which core limits to SA BoundaryInterface. It still has a real bound operation-item data contract.

Execution takes exactly one nonexistent output directory argument and refuses existing evidence. It validates zero Errors, resolves all four SA messages to their exact Call/allocation/ports, checks values and ordered IDs, then formats/parses through actual core and asserts complete Project equality plus canonical stability before writing. Expected completeness warnings remain recorded rather than suppressed. Outputs: bound-nested-calls.arcadia, scenario-identities.tsv, diagnostics.txt, and README.md.

Open the .arcadia entry and inspect the three named Behavior scenarios. Native acceptance still needs unselected/selected bar paint, exact reply ends, labels, selection, values/correlation Properties, Undo/Redo and save/reopen. Fixture admission is not activation-renderer or minimum-scale raster acceptance. No second include file is introduced: this fixture targets compact native activation behavior; comments/include preservation already has separate evaluators.