feat: preserve nested source projects across desktop and REST

This commit is contained in:
2026-09-06 00:17:20 +03:00
parent d364d3c058
commit 4e8575bd11
32 changed files with 4283 additions and 417 deletions
@@ -0,0 +1,11 @@
// A separate functional aggregate provides a cross-file reparenting example.
// Move Assess report here through Properties, then inspect both source files.
sa_function assure_response "Assure response quality" id "00000000-0000-4000-8000-000000000411" {
description "Review the service response independently of report transport.";
sa_function review_response "Review response" id "00000000-0000-4000-8000-000000000412" {
description "Check that a coordinator can review the received information.";
}
}
allocation system_reviews "System supports response review" id "00000000-0000-4000-8000-000000000504" {
source @rescue_system; target @review_response;
}
@@ -0,0 +1,22 @@
// System Analysis identifies one system of interest and its external participant.
sa_system rescue_system "Rescue coordination system" id "00000000-0000-4000-8000-000000000301" {
description "The selected system receives reports and supports the coordinator.";
// A component port belongs to its participant, not to an allocated function.
sa_port reporting_input "Reporting input" id "00000000-0000-4000-8000-000000000303" {
contract { Component { kind Flow; orientation In; }; };
}
}
sa_actor vessel_service "Vessel communication service" id "00000000-0000-4000-8000-000000000302" {
description "An external service sends distress information across the system boundary.";
sa_port reporting_output "Reporting output" id "00000000-0000-4000-8000-000000000304" {
contract { Component { kind Flow; orientation Out; }; };
}
}
// The boundary exchange connects actual participant ports. Function realization
// is declared separately in reporting.arcadia using port/exchange allocations.
boundary_exchange radio_reporting "Radio reporting" id "00000000-0000-4000-8000-000000000501" {
source @reporting_output; target @reporting_input;
oriented true;
items [@sa_report_data];
}
@@ -0,0 +1,52 @@
// Functional containment is independent of the participant allocations below.
sa_function handle_reports "Handle distress reports" id "00000000-0000-4000-8000-000000000401" {
description "A functional decomposition of reporting and assessment.";
sa_function transmit_report "Transmit report" id "00000000-0000-4000-8000-000000000402" {
description "Encode and send the vessel's distress report.";
sa_port report_out "Report output" id "00000000-0000-4000-8000-000000000404" {
contract { FunctionOutput { outgoing_items [@sa_report_data]; }; };
}
}
// Assessment rationale travels with this declaration when it is reparented.
sa_function assess_report "Assess report" id "00000000-0000-4000-8000-000000000403" {
description "Validate the received report and present it to the coordinator.";
sa_port report_in "Report input" id "00000000-0000-4000-8000-000000000405" {
contract { FunctionInput { incoming_items [@sa_report_data]; }; };
}
} // Assessment remains performed by rescue_system after a hierarchy edit.
}
// This group comment stays in this file; it is not attached to the function above.
sa_exchange_item sa_report_data "Digital distress report" id "00000000-0000-4000-8000-000000000406" {
kind Information;
sa_data_field encoded_latitude "Encoded latitude" id "00000000-0000-4000-8000-000000000407" {
type_ref Real;
unit "degrees north";
}
}
sa_capability coordinate_response "Coordinate distress response" id "00000000-0000-4000-8000-000000000408" {}
allocation vessel_transmits "Vessel service transmits" id "00000000-0000-4000-8000-000000000502" {
source @vessel_service; target @transmit_report;
}
allocation system_assesses "System assesses report" id "00000000-0000-4000-8000-000000000503" {
source @rescue_system; target @assess_report;
}
functional_exchange validated_report "Validated report" id "00000000-0000-4000-8000-000000000505" {
source @transmit_report; source_port @report_out;
target @assess_report; target_port @report_in;
items [@sa_report_data];
}
port_allocation output_realization "Reporting output realizes function output" id "00000000-0000-4000-8000-000000000506" {
source @reporting_output; target @report_out;
}
port_allocation input_realization "Reporting input realizes function input" id "00000000-0000-4000-8000-000000000507" {
source @reporting_input; target @report_in;
}
exchange_allocation report_transport "Radio reporting carries the function exchange" id "00000000-0000-4000-8000-000000000508" {
source @radio_reporting; target @validated_report;
}
capability_involvement system_contribution "Assessment supports coordination" id "00000000-0000-4000-8000-000000000509" {
source @assess_report; target @coordinate_response;
}