Integrate release recovery, semantic review, coverage and Windows packaging

This commit is contained in:
Codex
2026-09-06 16:31:55 -07:00
parent c091f80e6e
commit 2b2d2bc18b
174 changed files with 27635 additions and 127 deletions
+71
View File
@@ -1,5 +1,14 @@
# Architectural and product decisions
## Current continuation decisions — 2026-09-06
- Saving under another source entry basename is destination bookkeeping, not an engineering edit. Adopt an exact current save receipt without adding Undo or clearing Redo; rebase uniform entry names across retained history after collision and compilation checks. Stale receipts cannot redirect newer raw source. Native discovery and eleven focused regression results are in release-save-as-runtime-packaging.md; updated native verification remains required.
- Home Resume returns to the last actual workspace. A saved state diagram opens in Behavior with its dedicated renderer; entering Architecture explicitly remains possible. Constructor choice among UUID-ordered views is not a guarantee that an application starts in Architecture. Tests of architecture placement must enter that workspace explicitly.
- Coverage warnings describe missing engineering context while structural errors remain rejecting. Mission/capability support and work/exchange behavior coverage use actual explicit links and occurrence membership, not inferred performer allocation or descriptive state notes. The shared core diagnostics are exposed equally to source, desktop and REST; see release-coverage-diagnostics-design.md.
- Portable release contents need the selected binary's complete runtime and notice inventory. Adding the gnullvm libunwind DLL resolves its ordinary import, but the application MIT license does not replace linked dependency notices. Archive hashes and clean-PATH launch are separate checks; neither alone establishes full release acceptance.
The following older decisions retain their historical scope. Newer first-release decisions and the normative language contract supersede prototype exclusions.
- **One typed model, three Rust crates.** `oa-core` owns semantics, validation, transactions, history, references, language and projection. `oa-desktop` is an Iced editor; `oa-server` is an Axum transport/store. A second GUI/text model, event framework or runtime plugin ABI would introduce unnecessary synchronization and extension complexity.
- **Bounded OA/SA profile.** Typed element bodies determine layer/kind; separate records describe relationships, diagrams, realization traces and artifacts. SA has one System and external Actors; LA/PA deployment and executable simulation are outside V2. The normative reST contract and scope document state exact semantics instead of implying full Capella/SysML conformance.
- **Nesting derives from meaning.** Semantic containment and leaf allocation feed independent diagram projections. A placement drag changes geometry, never ownership. Shared projection drives canvas, Fit and SVG. Scenario/state graphics project the same behavior records and select them directly; numbered routes lead to full transition details.
@@ -131,3 +140,65 @@ while the diagram retains its own camera/scroll state. Nesting both under the pa
scroll supplied infinite height and clipped the fields at the supported minimum.
Real Iced layout tests verify finite field space; native recheck remains required.
## Private recovery and integrated continuation — 2026-09-06
The branch audit selects c091f80 as the integrated production baseline: side-branch
state/process/scenario/data/hosted/semantic work is present or patch-equivalent.
The stale checkout's duplicate investigation stays in its named stash. New work
continues on codex/release1-continuation rather than replacing accepted editors.
Unsaved recovery uses separate per-session, versioned private checkpoints. Store
the accepted authored source bundle and raw source/property/behavior/workflow
drafts; regenerate validation and command previews on restore. Never serialize
credentials, destination handles or reusable executable plans. Restored work is
an unsaved copy requiring an explicit destination. Undo history is deliberately
not restored: retaining a coherent current model and rejected input is the useful
recovery boundary, while persistent history would add a separate migration and
storage contract. Exact accepted-source validation precedes replacement of the
currently open document.
Checkpoint writes and restoration share workspace admission limits. A failed
checkpoint must retain the last usable file. Late completions are scoped to the
document ID, and discard/close waits for an outstanding writer before retiring
its result. Model-file Save and private recovery remain distinct operations.
Native crash/restart and exact21-file Save as evidence is recorded in
release-current-native-verification.md; larger recovery/history requirements
would justify revisiting these explicit bounds.
## Semantic rows and state-view entry — 2026-09-06
Annotation and Binding keys identify independent rows; replacing an existing row
preserves its position, an identical Keep does not modify it, removal deletes only
that row, and a new row appends. GUI composition and core materialization agree
without normalizing untouched records into a different order. Core regressions
cover Keep plus an unrelated Header Candidate in both directions and both row
families.
A persisted StateMachine diagram has one editing canvas and tool set. Opening or
selecting it routes to the existing Behavior workspace, preserving exact diagram
identity, selected object and raw property input. Explicit Architecture navigation
selects an ordinary view or its empty state. This fixes the native-observed blank
state-action header and inappropriate architecture connection tools without adding
a second state renderer. Pending drafts remain subject to the existing guards.
## OA communication means: selected representation — 2026-09-06
The existing OA Interaction describes activity exchange; ordinary participant
communication is a verified first-release gap. Independent representation and
adversarial reviews compared a new CommunicationMean, widened BoundaryExchange
endpoints and a first-class OA port contract. Select explicit CommunicationMean
with OA Entity/Actor endpoints, orientation and carried items, reusing identified
ExchangeAllocation links to Interactions. Existing BoundaryExchange keeps its
port contract; legacy OA data is preserved without automatic conversion.
This choice matches primary Arcadia/Capella method evidence and avoids inventing
technical OA ports. Known actual performer mismatches reject allocation; missing
performers are incomplete work, not inferred through role responsibility. Scenario
direction must resolve explicit lifelines, and correlated Reply reverses the
actual Call direction. OA participant/SA port counterpart choices must be scoped
explicitly per exchange rather than corrupting global participant correspondence.
See release-oa-communication-design.md and the independent critique for sources,
alternatives and falsification tests. This is a representation decision, not an
implemented or accepted feature; versioning and view contracts remain to be
integrated with it. Revisit if realistic OA workflows demonstrate separately
identified operational endpoint contracts that a participant relation cannot carry.
+3 -1
View File
@@ -4,7 +4,9 @@
Deliver the first release of Arcadia Studio for system engineers: complete Operational Analysis and System Analysis/System Architecture workflows, equivalent graphical and textual models, clear artifact traceability and a deployable/programmatically accessible Rust service. Logical/Physical Architecture and later Arcadia layers are future releases, as the new objective explicitly states.
The authoritative objective is attachment10134df9-bea2-4c02-a820-67b53d6b86f7/goal-objective.md. It retains first-release scope and source/include, drag-selection and direct behavior editing requirements, and strengthens domain coherence, alternative evaluation and target-user task evidence. TASK_LEDGER.md separates given/verified facts, assumptions and open candidates; STATE.md records progress. The accepted0.2.0 prototype is the baseline, not proof of release completeness. Its source is preserved at D:/CodexBuilds/Capella2-release1-01a06e2e/v2-source-baseline.zip and existing archives remain in dist until replacement passes acceptance.
The authoritative objective is attachment `10b0f701-1743-4de7-9ee1-225920e19649/goal-objective.md`. It retains first-release scope and strengthens domain coherence, alternative evaluation and target-user task evidence. TASK_LEDGER.md separates given/verified facts, assumptions and open candidates; STATE.md records progress. The accepted 0.2.0 prototype is a historical baseline, not proof of release completeness. Its old D:/CodexBuilds archives are unavailable on this machine; existing dist archives must not be replaced until new acceptance passes.
The user's cross-branch reminder led to an ancestry/patch/tree audit. Continue from integrated `c091f80` on `codex/release1-continuation`; direct state/scenario/process, data, hosted and semantic review work already exists here. `release-branch-integration-20260906.md` records the audit. `release-current-coverage-20260906.md` is the current measurable acceptance map and supersedes stale absence claims in older narratives below.
## Existing architecture and retained decisions
+34
View File
@@ -1,3 +1,37 @@
# Current continuation — 2026-09-06
The full first-release goal remains active. User requested that completed Git branches be accounted for: current branch codex/release1-continuation starts from integrated c091f80; the branch audit proves meaningful side-branch work is included or patch-equivalent. No stale stash is restored.
Current Windows evidence: 869 workspace tests pass with one existing ignored benchmark (.local/current-integrated-tests-corrected.log). Strict all-target Clippy and clean GUI/server builds pass (.local/current-integrated-clippy.log, .local/current-integrated-build-clean.log). Two equivalent guard rewrites and a test-only helper annotation closed Clippy findings after the passing test run. Shared Windows Cargo target is idle. Portable Rust1.90 GNU host plus gnullvm target is prepared; MSRV compilation is still pending.
Native process10896 is running from .local/native-qa/bin-20260906-corrected with isolated appdata and system-only PATH. Binary660BECC8DB96B218D12805B39661B46C9F48DF4F8F07CB3B7D42C1F803BE089F includes all behavior/Home/save/layout fixes; the later clean build differs only in the stated lint/test-helper changes. Computer Use was stopped with Escape, then explicitly reauthorized by the user's @Computer message. The unfinished timed-transition checkpoint recovered exactly, including invalid empty expression. Repair30s created one Event and changed its Internal transition atomically. Save-as to state-recovered-renamed.arcadia, one Undo, Save, Redo, Save passed: Undo entry exactly pristine; Redo entry exactly accepted; checkpoints retired. Home Continue editing returns to the same Behavior state view. Minimum1100x700 navigation shows all9pages and guide Clear is no longer clipped. Root is currently on the guide; ordered and reference-pair layout native checks remain.
REST: the staged server passed25 captured requests, twice from isolated stores, with exact five coverage warnings across source/JSON/current validation, atomic422 rejection, repaired persistence after forced restart and warning restoration by explicit replacement. Reproducible probe/fixture is tracked in harness/fixtures/rest-coverage. This is Windows service evidence, not Linux acceptance.
Packaging: scripts stage selected dependency/runtime notices and verify source copies and every ZIP entry. QA b has528files including485licensefiles; ZIP SHA256237b30ee0c704efad89ed5c371d2c965f9e7d11ea318c97ba16ee34282456f73. Iced Icons uses its declared distributed MIT plus preserved font copyright metadata and candid provenance limits; no contrary license was established. See release-windows-package-review.md for exact clean-build hashes. Earlier QA package native clean-PATH Home/example/help/close passed; final QA b native acceptance remains.
Linux: the QEMU pilot achieved actual Ubuntu SSH/cloud-init/filesystem/DNS validation with no failed units. Guest-only startup timeouts were adapted for slow emulation; no application build ran. User then installed WSL and authorized creating a distro. Our QEMU processes are stopped. WSL2 Ubuntu24.04 import failed HCS_E_SERVICE_NOT_AVAILABLE; VMP is enabled but Windows reports a pending reboot, with vmcompute/hns absent. User was asked to restart when convenient. No existing distro was touched and no Windows features/settings were changed by the agent. Verified official image and exact isolated retry command are in release-linux-validation-options.md. Recheck after restart before concluding nested virtualization is unavailable.
Required next work: ordered/keyed/native view checks and source-oracle capture; checkpoint verified work in Git; implement first-class OA CommunicationMean plus deliberate source6 admission, saved selective/category/context views, remaining attached-child/incident/artifact/multi-source review GUI, full engineering guide, MSRV/optimized packages and fresh Windows/Linux end-state acceptance. Selective-view candidate and independent critique now define family-specific category sets, global versus selected-context coverage, preserved port geometry and a dense40-edge readability gate. Nothing here narrows the original goal or marks the release complete.
The material below records earlier checkpoints. This current section takes precedence for process state, tool ownership and current evidence.
Authoritative objective: attachment `10b0f701-1743-4de7-9ee1-225920e19649/goal-objective.md`, read in full. User requested accounting for other Git branches. Current working branch is `codex/release1-continuation` from integrated `c091f80`; all meaningful side-branch production work is present or patch-equivalent. See release-branch-integration-20260906.md. Original checkout `ea2e8e9` was stale; the duplicate investigation is stashed and superseded.
Historical paths/windows/builds below are evidence from the previous environment, not current active processes. This machine has no D:/CodexBuilds or installed WSL. The first release is incomplete.
Current implementation: Home/recents, semantic Annotation/Binding review, private accepted-source/raw-draft checkpoints including workflow recovery, and typed StateAction detail rows. Independent reviews found and closed checkpoint late-write/discard races, candidate-parent picker context and literal-UUID expression rendering defects. Native acceptance is still required.
Current toolchain: user-local Rust 1.98.1 `stable-x86_64-pc-windows-gnullvm` plus official LLVM-MinGW 20260826 UCRT under ignored `.local/toolchain`; dot-source `.local/toolchain/env.ps1`. GNU test executables with installer-like filenames initially failed Windows error 740. Shared build scripts now embed an explicit `asInvoker` manifest in GNU/gnullvm binaries and tests, without changing system security or requiring elevation.
Fresh workspace tests pass **840 tests** with one existing benchmark ignored; `.local/current-workspace-tests-final.log`. Strict all-target workspace Clippy passed in `.local/current-clippy.log`. Initial keyed fixture, core row-order and state test failures are fixed; a hosted timeout test's invalid admission-timing assumption is also corrected. Independent review fixed write/restore checkpoint workspace limits before a prior valid checkpoint can be replaced.
Current native Windows evidence is in `release-current-native-verification.md`: empty Home/default/minimum layout, example, rejected raw source crash/recover, exact21-file Save as, recovery retirement, Recents reopen, rejected raw UUID crash/recover and guarded Save & continue passed. All three typed StateAction rows select the correct relation/phase/target in Behavior. Native found a saved-state-view entry bug: Architecture uses a generic renderer and wrong tools. Routing fix passed435 desktop tests and GUI/server build. Updated native process796 is running; invalid Binding crash recovery, exact repaired Save and one-step Undo/Redo passed. Annotation workflow recovered and saved exactly against the oracle; native found Save-as basename rename adds an unwanted Undo step and can clear Redo. A bounded history-preserving correction is being implemented.
Root controls native input. Semantic worker currently owns shared Cargo for ordered-review focused tests; coverage diagnostics follow. Save-as history worker must coordinate build access. All native trial data lives under ignored `.local/native-qa`, with app metadata redirected away from the user's real recents. Current uncommitted continuation still needs native semantic/binding/history and behavior/workflow acceptance, fresh routing checks and a milestone commit. It is not a complete release.
The current coverage audit is `release-current-coverage-20260906.md`. Independent OA design/critique agrees that ordinary participant communication needs a first-class CommunicationMean instead of broadening SA port-bound BoundaryExchange. Other remaining release work includes saved selective/coverage views, completeness diagnostics, ordered/attachment/artifact/multi-source review controls and final platform/package gates. These are required unfinished work, not exclusions.
---
# Current release state — 2026-09-06
The first-release goal remains active and incomplete. Authoritative objective:
+3
View File
@@ -137,3 +137,6 @@ Candidate exactProject and remaining constructors/Linux native are still pending
Strategy: finish structured parity while Home/recents progresses independently;
recovery, ordered/attachments/artifacts/multi-source and final acceptance remain.
## 2026-09-06 branch reconciliation
Verified integrated baseline c091f80 contains direct state/scenario/process editing, data contracts, schema 5 semantic review and hosted editing. Current branch codex/release1-continuation adopts it; independent ancestry/patch/tree audits found no required production transplant. Historical environment is absent here. Current user objective is attachment 10b0f701-1743-4de7-9ee1-225920e19649/goal-objective.md. See release-branch-integration-20260906.md for evidence and ownership. Assumption: portable user-local GNU tooling can verify Windows without system installation; being tested, not yet established.
@@ -0,0 +1,9 @@
# First-release native acceptance fixtures
Synthetic, identity-stable source/JSON models and direct-core expected outputs for the current source-v5 continuation. Work on copies. The first user-facing state and keyed review trials were performed with Windows binary SHA25670069D6CBBE1917E1597794B3E190FF9CF23664D458F794B3270DDBE6EE683A2; see ../../release-current-native-verification.md for exact accepted scope and open findings. Ordered fixtures are validated oracles awaiting native acceptance, not evidence that those workflows have passed.
- state-actions.arcadia: typed Entry/Do/Exit rows, legacy notes, Internal transition and nested region. Initial14elements/10relations/one8-placement state view. With the new advisory coverage pass, uncovered function warnings are expected; they do not invalidate the model.
- semantic-keyed.steps.md: Annotation Take and rejected/repaired Binding Candidate, with exact source and JSON oracles, frozen requests, plans and identities. The independent expected sources preserve the leading comment and row order.
- semantic-ordered.steps.md: ordered member insertion ambiguity and explicit final order. Main, reverse, Scenario, Branch steps and Fragment branch variants each include initial/final source and JSON, request, plan and manifest.
The steps originally name .local/native-fixtures, the isolated trial directory; use a copied directory here equivalently. Never overwrite an oracle with a native Save. Versioned source snapshots must be migrated deliberately when the normative source version changes; keep historical native evidence scoped to its actual binary. These fixtures do not replace the Rust integration tests or constitute complete release acceptance.
@@ -0,0 +1,482 @@
// Native keyed review: preserve this exact comment.
arcadia 5;
project mission "Semantic keyed native review" id "13089f56-2a58-4f42-a0e3-8c9812fb5857" {
description "";
sa_function sa_navigation_b "SA Navigation B" id "0114bf4c-343b-4a96-918c-3b4087df4c5e" {
description "";
parent none;
}
oa_data_field oa_navigation_latitude "OA Navigation latitude" id "01d025e3-ee88-4449-a613-217b44a61ae2" {
default none;
description "";
direction Unspecified;
maximum 1;
minimum 0;
parent @oa_navigation_coordinate;
storage Value;
type_ref Real;
unit "";
}
oa_data_field oa_navigation_destination "OA Navigation destination" id "02a82c95-f030-4be3-9ffe-6ebccf40fcb1" {
default none;
description "";
direction Unspecified;
maximum 1;
minimum 0;
parent @oa_navigation_item;
storage Value;
type_ref {
Named @oa_navigation_coordinate;
};
unit "";
}
sa_scenario sa_rendezvous_caller "SA Rendezvous caller" id "06ec35b3-ce60-43a7-8300-c239fa91c898" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@sa_rendezvous_use];
viewpoint Functional;
}
sa_lifeline sa_rendezvous_local "SA Rendezvous local" id "0ba127bc-cd2d-4e53-b76e-9c01025a7c3f" {
description "";
parent @sa_rendezvous_caller;
represented none;
}
sa_data_field sa_navigation_origin "SA Navigation origin" id "0cf0ba32-01c8-41f5-a44c-ed31daa3ca92" {
default none;
description "";
direction Unspecified;
maximum 1;
minimum 0;
parent @sa_navigation_item;
storage Value;
type_ref {
Named @sa_navigation_coordinate;
};
unit "";
}
oa_lifeline oa_rendezvous_referenced "OA Rendezvous referenced" id "0e3d7b11-4c0f-41a0-beae-a5440e30782f" {
description "";
parent @oa_rendezvous_callee;
represented none;
}
sa_scenario sa_rendezvous_callee "SA Rendezvous callee" id "12143ec8-bcf9-4755-809c-87b653465888" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [];
viewpoint Functional;
}
oa_data_field oa_navigation_origin "OA Navigation origin" id "19be028f-96cd-440e-bbcb-e151fbe00b45" {
default none;
description "";
direction Unspecified;
maximum 1;
minimum 0;
parent @oa_navigation_item;
storage Value;
type_ref {
Named @oa_navigation_coordinate;
};
unit "";
}
sa_lifeline sa_rendezvous_referenced "SA Rendezvous referenced" id "1cb0eb67-6fa7-414c-a2aa-155cb39da564" {
description "";
parent @sa_rendezvous_callee;
represented none;
}
oa_lifeline oa_rendezvous_extra_local "OA Rendezvous extra local" id "1f697a2c-8455-48f1-bbdf-bdf657fe8fc4" {
description "";
parent @oa_rendezvous_caller;
represented none;
}
oa_exchange_item oa_navigation_item "OA Navigation Item" id "20619f0c-4419-46b5-a15c-49b004acfa91" {
description "";
kind Information;
mechanism Unspecified;
parent none;
supertype none;
}
oa_activity oa_navigation_b "OA Navigation B" id "264ff2ee-7786-4db7-b78d-2be802c268ac" {
description "";
parent none;
}
sa_scenario sa_navigation_scenario "SA Navigation scenario" id "409c78a0-28bc-4810-86ba-300204a3513f" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@sa_navigation_message];
viewpoint Functional;
}
oa_lifeline oa_rendezvous_local "OA Rendezvous local" id "424d78d2-9145-4b34-a18f-80a335164a9b" {
description "";
parent @oa_rendezvous_caller;
represented none;
}
oa_lifeline oa_rendezvous_alternate "OA Rendezvous alternate" id "59173870-bc74-4c85-89b3-b0cfb8ad70cb" {
description "";
parent @oa_rendezvous_caller;
represented none;
}
sa_exchange_item sa_navigation_item "SA Navigation Item" id "6e8218df-2d57-4247-a401-e0458c4d5bc1" {
description "";
kind Information;
mechanism Unspecified;
parent none;
supertype none;
}
sa_data_type sa_navigation_coordinate "SA Navigation Coordinate" id "715228b2-a573-47ad-bf53-0a9b968ded96" {
default none;
definition {
Record {
supertype none;
};
};
description "";
parent none;
unit "";
}
oa_occurrence oa_navigation_message "OA Navigation message" id "73de257c-d816-4f91-b507-36f79ca49f08" {
body {
Exchange {
exchange @oa_navigation_exchange;
message_kind Asynchronous;
receiver none;
reply_to none;
sender none;
values [{
expression "latitude_deg + 0.25";
field @oa_navigation_latitude;
path [@oa_navigation_origin];
}, {
expression "second independent";
field @oa_navigation_latitude;
path [@oa_navigation_destination];
}];
};
};
description "";
parent @oa_navigation_scenario;
postcondition "";
precondition "";
}
sa_occurrence sa_rendezvous_use "SA Rendezvous use" id "7d9832e5-0288-4d04-a5df-1551d050f79e" {
body {
ScenarioUse {
bindings [{
local @sa_rendezvous_alternate;
referenced @sa_rendezvous_referenced;
}, {
local @sa_rendezvous_extra_local;
referenced @sa_rendezvous_extra_referenced;
}];
scenario @sa_rendezvous_callee;
};
};
description "";
parent @sa_rendezvous_caller;
postcondition "";
precondition "";
}
oa_scenario oa_navigation_scenario "OA Navigation scenario" id "814c985a-a8c8-409a-b11b-c9572f29eabc" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@oa_navigation_message];
viewpoint OperationalActivity;
}
sa_lifeline sa_rendezvous_extra_referenced "SA Rendezvous extra referenced" id "82798865-193a-46b0-b40d-b22ae91eba28" {
description "";
parent @sa_rendezvous_callee;
represented none;
}
oa_data_type oa_navigation_coordinate "OA Navigation Coordinate" id "85eee860-b8ee-4c14-8551-ec4ce8b84aa8" {
default none;
definition {
Record {
supertype none;
};
};
description "";
parent none;
unit "";
}
sa_data_field sa_navigation_destination "SA Navigation destination" id "8dbaedfd-4a4a-4e5d-a9f9-d040d5f144d8" {
default none;
description "";
direction Unspecified;
maximum 1;
minimum 0;
parent @sa_navigation_item;
storage Value;
type_ref {
Named @sa_navigation_coordinate;
};
unit "";
}
oa_occurrence oa_rendezvous_use "OA Rendezvous use" id "9a78b793-a987-438e-a041-233dc41f2b10" {
body {
ScenarioUse {
bindings [{
local @oa_rendezvous_local;
referenced @oa_rendezvous_referenced;
}, {
local @oa_rendezvous_extra_local;
referenced @oa_rendezvous_extra_referenced;
}];
scenario @oa_rendezvous_callee;
};
};
description "";
parent @oa_rendezvous_caller;
postcondition "";
precondition "";
}
oa_lifeline oa_rendezvous_extra_referenced "OA Rendezvous extra referenced" id "9e60984f-9ca3-4f3d-bc3f-b6b973cdc698" {
description "";
parent @oa_rendezvous_callee;
represented none;
}
sa_port sa_navigation_exchange_output "SA Navigation exchange output" id "9eb225ee-7103-5eb7-88d0-ff2128408748" {
contract {
FunctionOutput {
outgoing_items [@sa_navigation_item];
};
};
description "";
legacy none;
parent @sa_navigation_a;
}
sa_lifeline sa_rendezvous_extra_local "SA Rendezvous extra local" id "a8518771-fa4d-4e6e-bb6a-9e5f719f874a" {
description "";
parent @sa_rendezvous_caller;
represented none;
}
sa_data_field sa_navigation_latitude "SA Navigation latitude" id "ab1e449f-24f1-4bee-938c-b49510d19bf3" {
default none;
description "";
direction Unspecified;
maximum 1;
minimum 0;
parent @sa_navigation_coordinate;
storage Value;
type_ref Real;
unit "";
}
sa_port sa_navigation_exchange_input "SA Navigation exchange input" id "ad717be1-3f30-55db-94b9-7a51558b6dd6" {
contract {
FunctionInput {
incoming_items [@sa_navigation_item];
};
};
description "";
legacy none;
parent @sa_navigation_b;
}
sa_function sa_navigation_a "SA Navigation A" id "ad7dede7-59bf-4355-afec-08c905a564ff" {
description "";
parent none;
}
sa_lifeline sa_rendezvous_alternate "SA Rendezvous alternate" id "bb0ad838-eb7c-4470-bf27-f3a21e69fdf8" {
description "";
parent @sa_rendezvous_caller;
represented none;
}
sa_occurrence sa_navigation_message "SA Navigation message" id "d10ef3c1-479f-4780-9fd5-3b4d21dffe74" {
body {
Exchange {
exchange @sa_navigation_exchange;
message_kind Asynchronous;
receiver none;
reply_to none;
sender none;
values [{
expression "latitude_deg + 0.25";
field @sa_navigation_latitude;
path [@sa_navigation_origin];
}, {
expression "second independent";
field @sa_navigation_latitude;
path [@sa_navigation_destination];
}];
};
};
description "";
parent @sa_navigation_scenario;
postcondition "";
precondition "";
}
oa_activity oa_navigation_a "OA Navigation A" id "d7d34062-6820-471d-bb5f-abb7db4c8198" {
description "";
parent none;
}
oa_scenario oa_rendezvous_callee "OA Rendezvous callee" id "eacfc6df-4e22-4ebd-a90d-6b5146e56513" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [];
viewpoint OperationalActivity;
}
oa_scenario oa_rendezvous_caller "OA Rendezvous caller" id "fd6e0287-66e0-4e84-8a92-98c4c167cb88" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@oa_rendezvous_use];
viewpoint OperationalActivity;
}
interaction oa_navigation_exchange "OA Navigation exchange" id "6a5930e2-0cfb-4aff-a4a4-8c4798f1cda5" {
description "";
items [@oa_navigation_item];
source @oa_navigation_a;
target @oa_navigation_b;
}
functional_exchange sa_navigation_exchange "SA Navigation exchange" id "9c1085f2-c91d-4776-bb56-52c864a80e22" {
description "";
items [@sa_navigation_item];
source @sa_navigation_a;
source_port @sa_navigation_exchange_output;
target @sa_navigation_b;
target_port @sa_navigation_exchange_input;
}
trace rendezvous_binding_review "Rendezvous participant binding review" id "551c0dbc-ede6-42ef-ae60-2e0136ffc6e6" {
baseline {
oa {
description "";
name "OA Rendezvous use";
};
sa {
description "";
name "SA Rendezvous use";
};
semantic {
facets [{
Binding {
keys {
oa uuid "0e3d7b11-4c0f-41a0-beae-a5440e30782f";
sa uuid "1cb0eb67-6fa7-414c-a2aa-155cb39da564";
};
review {
oa {
Value {
local uuid "424d78d2-9145-4b34-a18f-80a335164a9b";
referenced uuid "0e3d7b11-4c0f-41a0-beae-a5440e30782f";
};
};
sa {
Value {
local uuid "bb0ad838-eb7c-4470-bf27-f3a21e69fdf8";
referenced uuid "1cb0eb67-6fa7-414c-a2aa-155cb39da564";
};
};
};
};
}];
};
};
description "";
kind Manual;
oa @oa_rendezvous_use;
sa @sa_rendezvous_use;
}
trace navigation_latitude_review "Navigation origin latitude review" id "b647f858-1a69-4292-8710-674b1692d54f" {
baseline {
oa {
description "";
name "OA Navigation message";
};
sa {
description "";
name "SA Navigation message";
};
semantic {
facets [{
Annotation {
keys {
oa {
field uuid "01d025e3-ee88-4449-a613-217b44a61ae2";
path [uuid "19be028f-96cd-440e-bbcb-e151fbe00b45"];
};
sa {
field uuid "ab1e449f-24f1-4bee-938c-b49510d19bf3";
path [uuid "0cf0ba32-01c8-41f5-a44c-ed31daa3ca92"];
};
};
review {
oa {
Value {
expression "latitude_deg + 0.25";
field uuid "01d025e3-ee88-4449-a613-217b44a61ae2";
path [uuid "19be028f-96cd-440e-bbcb-e151fbe00b45"];
};
};
sa {
Value {
expression "latitude_deg + 0.25";
field uuid "ab1e449f-24f1-4bee-938c-b49510d19bf3";
path [uuid "0cf0ba32-01c8-41f5-a44c-ed31daa3ca92"];
};
};
};
};
}];
};
};
description "";
kind Manual;
oa @oa_navigation_message;
sa @sa_navigation_message;
}
}
@@ -0,0 +1,895 @@
{
"schema_version": 5,
"id": "13089f56-2a58-4f42-a0e3-8c9812fb5857",
"alias": "mission",
"name": "Semantic keyed native review",
"description": "",
"elements": {
"0114bf4c-343b-4a96-918c-3b4087df4c5e": {
"id": "0114bf4c-343b-4a96-918c-3b4087df4c5e",
"alias": "sa_navigation_b",
"name": "SA Navigation B",
"description": "",
"parent": null,
"body": {
"Sa": "Function"
}
},
"01d025e3-ee88-4449-a613-217b44a61ae2": {
"id": "01d025e3-ee88-4449-a613-217b44a61ae2",
"alias": "oa_navigation_latitude",
"name": "OA Navigation latitude",
"description": "",
"parent": "85eee860-b8ee-4c14-8551-ec4ce8b84aa8",
"body": {
"Oa": {
"Shared": {
"DataField": {
"type_ref": "Real",
"minimum": 0,
"maximum": 1,
"unit": "",
"direction": "Unspecified",
"storage": "Value",
"default": null
}
}
}
}
},
"02a82c95-f030-4be3-9ffe-6ebccf40fcb1": {
"id": "02a82c95-f030-4be3-9ffe-6ebccf40fcb1",
"alias": "oa_navigation_destination",
"name": "OA Navigation destination",
"description": "",
"parent": "20619f0c-4419-46b5-a15c-49b004acfa91",
"body": {
"Oa": {
"Shared": {
"DataField": {
"type_ref": {
"Named": "85eee860-b8ee-4c14-8551-ec4ce8b84aa8"
},
"minimum": 0,
"maximum": 1,
"unit": "",
"direction": "Unspecified",
"storage": "Value",
"default": null
}
}
}
}
},
"06ec35b3-ce60-43a7-8300-c239fa91c898": {
"id": "06ec35b3-ce60-43a7-8300-c239fa91c898",
"alias": "sa_rendezvous_caller",
"name": "SA Rendezvous caller",
"description": "",
"parent": null,
"body": {
"Sa": {
"Shared": {
"Scenario": {
"viewpoint": "Functional",
"context": null,
"precondition": "",
"postcondition": "",
"steps": [
"7d9832e5-0288-4d04-a5df-1551d050f79e"
]
}
}
}
}
},
"0ba127bc-cd2d-4e53-b76e-9c01025a7c3f": {
"id": "0ba127bc-cd2d-4e53-b76e-9c01025a7c3f",
"alias": "sa_rendezvous_local",
"name": "SA Rendezvous local",
"description": "",
"parent": "06ec35b3-ce60-43a7-8300-c239fa91c898",
"body": {
"Sa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"0cf0ba32-01c8-41f5-a44c-ed31daa3ca92": {
"id": "0cf0ba32-01c8-41f5-a44c-ed31daa3ca92",
"alias": "sa_navigation_origin",
"name": "SA Navigation origin",
"description": "",
"parent": "6e8218df-2d57-4247-a401-e0458c4d5bc1",
"body": {
"Sa": {
"Shared": {
"DataField": {
"type_ref": {
"Named": "715228b2-a573-47ad-bf53-0a9b968ded96"
},
"minimum": 0,
"maximum": 1,
"unit": "",
"direction": "Unspecified",
"storage": "Value",
"default": null
}
}
}
}
},
"0e3d7b11-4c0f-41a0-beae-a5440e30782f": {
"id": "0e3d7b11-4c0f-41a0-beae-a5440e30782f",
"alias": "oa_rendezvous_referenced",
"name": "OA Rendezvous referenced",
"description": "",
"parent": "eacfc6df-4e22-4ebd-a90d-6b5146e56513",
"body": {
"Oa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"12143ec8-bcf9-4755-809c-87b653465888": {
"id": "12143ec8-bcf9-4755-809c-87b653465888",
"alias": "sa_rendezvous_callee",
"name": "SA Rendezvous callee",
"description": "",
"parent": null,
"body": {
"Sa": {
"Shared": {
"Scenario": {
"viewpoint": "Functional",
"context": null,
"precondition": "",
"postcondition": "",
"steps": []
}
}
}
}
},
"19be028f-96cd-440e-bbcb-e151fbe00b45": {
"id": "19be028f-96cd-440e-bbcb-e151fbe00b45",
"alias": "oa_navigation_origin",
"name": "OA Navigation origin",
"description": "",
"parent": "20619f0c-4419-46b5-a15c-49b004acfa91",
"body": {
"Oa": {
"Shared": {
"DataField": {
"type_ref": {
"Named": "85eee860-b8ee-4c14-8551-ec4ce8b84aa8"
},
"minimum": 0,
"maximum": 1,
"unit": "",
"direction": "Unspecified",
"storage": "Value",
"default": null
}
}
}
}
},
"1cb0eb67-6fa7-414c-a2aa-155cb39da564": {
"id": "1cb0eb67-6fa7-414c-a2aa-155cb39da564",
"alias": "sa_rendezvous_referenced",
"name": "SA Rendezvous referenced",
"description": "",
"parent": "12143ec8-bcf9-4755-809c-87b653465888",
"body": {
"Sa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"1f697a2c-8455-48f1-bbdf-bdf657fe8fc4": {
"id": "1f697a2c-8455-48f1-bbdf-bdf657fe8fc4",
"alias": "oa_rendezvous_extra_local",
"name": "OA Rendezvous extra local",
"description": "",
"parent": "fd6e0287-66e0-4e84-8a92-98c4c167cb88",
"body": {
"Oa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"20619f0c-4419-46b5-a15c-49b004acfa91": {
"id": "20619f0c-4419-46b5-a15c-49b004acfa91",
"alias": "oa_navigation_item",
"name": "OA Navigation Item",
"description": "",
"parent": null,
"body": {
"Oa": {
"Shared": {
"ExchangeItem": {
"kind": "Information",
"mechanism": "Unspecified",
"supertype": null
}
}
}
}
},
"264ff2ee-7786-4db7-b78d-2be802c268ac": {
"id": "264ff2ee-7786-4db7-b78d-2be802c268ac",
"alias": "oa_navigation_b",
"name": "OA Navigation B",
"description": "",
"parent": null,
"body": {
"Oa": "Activity"
}
},
"409c78a0-28bc-4810-86ba-300204a3513f": {
"id": "409c78a0-28bc-4810-86ba-300204a3513f",
"alias": "sa_navigation_scenario",
"name": "SA Navigation scenario",
"description": "",
"parent": null,
"body": {
"Sa": {
"Shared": {
"Scenario": {
"viewpoint": "Functional",
"context": null,
"precondition": "",
"postcondition": "",
"steps": [
"d10ef3c1-479f-4780-9fd5-3b4d21dffe74"
]
}
}
}
}
},
"424d78d2-9145-4b34-a18f-80a335164a9b": {
"id": "424d78d2-9145-4b34-a18f-80a335164a9b",
"alias": "oa_rendezvous_local",
"name": "OA Rendezvous local",
"description": "",
"parent": "fd6e0287-66e0-4e84-8a92-98c4c167cb88",
"body": {
"Oa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"59173870-bc74-4c85-89b3-b0cfb8ad70cb": {
"id": "59173870-bc74-4c85-89b3-b0cfb8ad70cb",
"alias": "oa_rendezvous_alternate",
"name": "OA Rendezvous alternate",
"description": "",
"parent": "fd6e0287-66e0-4e84-8a92-98c4c167cb88",
"body": {
"Oa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"6e8218df-2d57-4247-a401-e0458c4d5bc1": {
"id": "6e8218df-2d57-4247-a401-e0458c4d5bc1",
"alias": "sa_navigation_item",
"name": "SA Navigation Item",
"description": "",
"parent": null,
"body": {
"Sa": {
"Shared": {
"ExchangeItem": {
"kind": "Information",
"mechanism": "Unspecified",
"supertype": null
}
}
}
}
},
"715228b2-a573-47ad-bf53-0a9b968ded96": {
"id": "715228b2-a573-47ad-bf53-0a9b968ded96",
"alias": "sa_navigation_coordinate",
"name": "SA Navigation Coordinate",
"description": "",
"parent": null,
"body": {
"Sa": {
"Shared": {
"DataType": {
"definition": {
"Record": {
"supertype": null
}
},
"default": null,
"unit": ""
}
}
}
}
},
"73de257c-d816-4f91-b507-36f79ca49f08": {
"id": "73de257c-d816-4f91-b507-36f79ca49f08",
"alias": "oa_navigation_message",
"name": "OA Navigation message",
"description": "",
"parent": "814c985a-a8c8-409a-b11b-c9572f29eabc",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Exchange": {
"exchange": "6a5930e2-0cfb-4aff-a4a4-8c4798f1cda5",
"sender": null,
"receiver": null,
"message_kind": "Asynchronous",
"reply_to": null,
"values": [
{
"path": [
"19be028f-96cd-440e-bbcb-e151fbe00b45"
],
"field": "01d025e3-ee88-4449-a613-217b44a61ae2",
"expression": "latitude_deg + 0.25"
},
{
"path": [
"02a82c95-f030-4be3-9ffe-6ebccf40fcb1"
],
"field": "01d025e3-ee88-4449-a613-217b44a61ae2",
"expression": "second independent"
}
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"7d9832e5-0288-4d04-a5df-1551d050f79e": {
"id": "7d9832e5-0288-4d04-a5df-1551d050f79e",
"alias": "sa_rendezvous_use",
"name": "SA Rendezvous use",
"description": "",
"parent": "06ec35b3-ce60-43a7-8300-c239fa91c898",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"ScenarioUse": {
"scenario": "12143ec8-bcf9-4755-809c-87b653465888",
"bindings": [
{
"referenced": "1cb0eb67-6fa7-414c-a2aa-155cb39da564",
"local": "bb0ad838-eb7c-4470-bf27-f3a21e69fdf8"
},
{
"referenced": "82798865-193a-46b0-b40d-b22ae91eba28",
"local": "a8518771-fa4d-4e6e-bb6a-9e5f719f874a"
}
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"814c985a-a8c8-409a-b11b-c9572f29eabc": {
"id": "814c985a-a8c8-409a-b11b-c9572f29eabc",
"alias": "oa_navigation_scenario",
"name": "OA Navigation scenario",
"description": "",
"parent": null,
"body": {
"Oa": {
"Shared": {
"Scenario": {
"viewpoint": "OperationalActivity",
"context": null,
"precondition": "",
"postcondition": "",
"steps": [
"73de257c-d816-4f91-b507-36f79ca49f08"
]
}
}
}
}
},
"82798865-193a-46b0-b40d-b22ae91eba28": {
"id": "82798865-193a-46b0-b40d-b22ae91eba28",
"alias": "sa_rendezvous_extra_referenced",
"name": "SA Rendezvous extra referenced",
"description": "",
"parent": "12143ec8-bcf9-4755-809c-87b653465888",
"body": {
"Sa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"85eee860-b8ee-4c14-8551-ec4ce8b84aa8": {
"id": "85eee860-b8ee-4c14-8551-ec4ce8b84aa8",
"alias": "oa_navigation_coordinate",
"name": "OA Navigation Coordinate",
"description": "",
"parent": null,
"body": {
"Oa": {
"Shared": {
"DataType": {
"definition": {
"Record": {
"supertype": null
}
},
"default": null,
"unit": ""
}
}
}
}
},
"8dbaedfd-4a4a-4e5d-a9f9-d040d5f144d8": {
"id": "8dbaedfd-4a4a-4e5d-a9f9-d040d5f144d8",
"alias": "sa_navigation_destination",
"name": "SA Navigation destination",
"description": "",
"parent": "6e8218df-2d57-4247-a401-e0458c4d5bc1",
"body": {
"Sa": {
"Shared": {
"DataField": {
"type_ref": {
"Named": "715228b2-a573-47ad-bf53-0a9b968ded96"
},
"minimum": 0,
"maximum": 1,
"unit": "",
"direction": "Unspecified",
"storage": "Value",
"default": null
}
}
}
}
},
"9a78b793-a987-438e-a041-233dc41f2b10": {
"id": "9a78b793-a987-438e-a041-233dc41f2b10",
"alias": "oa_rendezvous_use",
"name": "OA Rendezvous use",
"description": "",
"parent": "fd6e0287-66e0-4e84-8a92-98c4c167cb88",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"ScenarioUse": {
"scenario": "eacfc6df-4e22-4ebd-a90d-6b5146e56513",
"bindings": [
{
"referenced": "0e3d7b11-4c0f-41a0-beae-a5440e30782f",
"local": "424d78d2-9145-4b34-a18f-80a335164a9b"
},
{
"referenced": "9e60984f-9ca3-4f3d-bc3f-b6b973cdc698",
"local": "1f697a2c-8455-48f1-bbdf-bdf657fe8fc4"
}
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"9e60984f-9ca3-4f3d-bc3f-b6b973cdc698": {
"id": "9e60984f-9ca3-4f3d-bc3f-b6b973cdc698",
"alias": "oa_rendezvous_extra_referenced",
"name": "OA Rendezvous extra referenced",
"description": "",
"parent": "eacfc6df-4e22-4ebd-a90d-6b5146e56513",
"body": {
"Oa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"9eb225ee-7103-5eb7-88d0-ff2128408748": {
"id": "9eb225ee-7103-5eb7-88d0-ff2128408748",
"alias": "sa_navigation_exchange_output",
"name": "SA Navigation exchange output",
"description": "",
"parent": "ad7dede7-59bf-4355-afec-08c905a564ff",
"body": {
"Sa": {
"Shared": {
"Port": {
"contract": {
"FunctionOutput": {
"outgoing_items": [
"6e8218df-2d57-4247-a401-e0458c4d5bc1"
]
}
},
"legacy": null
}
}
}
}
},
"a8518771-fa4d-4e6e-bb6a-9e5f719f874a": {
"id": "a8518771-fa4d-4e6e-bb6a-9e5f719f874a",
"alias": "sa_rendezvous_extra_local",
"name": "SA Rendezvous extra local",
"description": "",
"parent": "06ec35b3-ce60-43a7-8300-c239fa91c898",
"body": {
"Sa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"ab1e449f-24f1-4bee-938c-b49510d19bf3": {
"id": "ab1e449f-24f1-4bee-938c-b49510d19bf3",
"alias": "sa_navigation_latitude",
"name": "SA Navigation latitude",
"description": "",
"parent": "715228b2-a573-47ad-bf53-0a9b968ded96",
"body": {
"Sa": {
"Shared": {
"DataField": {
"type_ref": "Real",
"minimum": 0,
"maximum": 1,
"unit": "",
"direction": "Unspecified",
"storage": "Value",
"default": null
}
}
}
}
},
"ad717be1-3f30-55db-94b9-7a51558b6dd6": {
"id": "ad717be1-3f30-55db-94b9-7a51558b6dd6",
"alias": "sa_navigation_exchange_input",
"name": "SA Navigation exchange input",
"description": "",
"parent": "0114bf4c-343b-4a96-918c-3b4087df4c5e",
"body": {
"Sa": {
"Shared": {
"Port": {
"contract": {
"FunctionInput": {
"incoming_items": [
"6e8218df-2d57-4247-a401-e0458c4d5bc1"
]
}
},
"legacy": null
}
}
}
}
},
"ad7dede7-59bf-4355-afec-08c905a564ff": {
"id": "ad7dede7-59bf-4355-afec-08c905a564ff",
"alias": "sa_navigation_a",
"name": "SA Navigation A",
"description": "",
"parent": null,
"body": {
"Sa": "Function"
}
},
"bb0ad838-eb7c-4470-bf27-f3a21e69fdf8": {
"id": "bb0ad838-eb7c-4470-bf27-f3a21e69fdf8",
"alias": "sa_rendezvous_alternate",
"name": "SA Rendezvous alternate",
"description": "",
"parent": "06ec35b3-ce60-43a7-8300-c239fa91c898",
"body": {
"Sa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"d10ef3c1-479f-4780-9fd5-3b4d21dffe74": {
"id": "d10ef3c1-479f-4780-9fd5-3b4d21dffe74",
"alias": "sa_navigation_message",
"name": "SA Navigation message",
"description": "",
"parent": "409c78a0-28bc-4810-86ba-300204a3513f",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Exchange": {
"exchange": "9c1085f2-c91d-4776-bb56-52c864a80e22",
"sender": null,
"receiver": null,
"message_kind": "Asynchronous",
"reply_to": null,
"values": [
{
"path": [
"0cf0ba32-01c8-41f5-a44c-ed31daa3ca92"
],
"field": "ab1e449f-24f1-4bee-938c-b49510d19bf3",
"expression": "latitude_deg + 0.25"
},
{
"path": [
"8dbaedfd-4a4a-4e5d-a9f9-d040d5f144d8"
],
"field": "ab1e449f-24f1-4bee-938c-b49510d19bf3",
"expression": "second independent"
}
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"d7d34062-6820-471d-bb5f-abb7db4c8198": {
"id": "d7d34062-6820-471d-bb5f-abb7db4c8198",
"alias": "oa_navigation_a",
"name": "OA Navigation A",
"description": "",
"parent": null,
"body": {
"Oa": "Activity"
}
},
"eacfc6df-4e22-4ebd-a90d-6b5146e56513": {
"id": "eacfc6df-4e22-4ebd-a90d-6b5146e56513",
"alias": "oa_rendezvous_callee",
"name": "OA Rendezvous callee",
"description": "",
"parent": null,
"body": {
"Oa": {
"Shared": {
"Scenario": {
"viewpoint": "OperationalActivity",
"context": null,
"precondition": "",
"postcondition": "",
"steps": []
}
}
}
}
},
"fd6e0287-66e0-4e84-8a92-98c4c167cb88": {
"id": "fd6e0287-66e0-4e84-8a92-98c4c167cb88",
"alias": "oa_rendezvous_caller",
"name": "OA Rendezvous caller",
"description": "",
"parent": null,
"body": {
"Oa": {
"Shared": {
"Scenario": {
"viewpoint": "OperationalActivity",
"context": null,
"precondition": "",
"postcondition": "",
"steps": [
"9a78b793-a987-438e-a041-233dc41f2b10"
]
}
}
}
}
}
},
"relations": {
"6a5930e2-0cfb-4aff-a4a4-8c4798f1cda5": {
"id": "6a5930e2-0cfb-4aff-a4a4-8c4798f1cda5",
"alias": "oa_navigation_exchange",
"name": "OA Navigation exchange",
"description": "",
"body": {
"Interaction": {
"source": "d7d34062-6820-471d-bb5f-abb7db4c8198",
"target": "264ff2ee-7786-4db7-b78d-2be802c268ac",
"items": [
"20619f0c-4419-46b5-a15c-49b004acfa91"
]
}
}
},
"9c1085f2-c91d-4776-bb56-52c864a80e22": {
"id": "9c1085f2-c91d-4776-bb56-52c864a80e22",
"alias": "sa_navigation_exchange",
"name": "SA Navigation exchange",
"description": "",
"body": {
"FunctionalExchange": {
"source": "ad7dede7-59bf-4355-afec-08c905a564ff",
"target": "0114bf4c-343b-4a96-918c-3b4087df4c5e",
"source_port": "9eb225ee-7103-5eb7-88d0-ff2128408748",
"target_port": "ad717be1-3f30-55db-94b9-7a51558b6dd6",
"items": [
"6e8218df-2d57-4247-a401-e0458c4d5bc1"
]
}
}
}
},
"diagrams": {},
"artifact_links": {},
"traces": {
"551c0dbc-ede6-42ef-ae60-2e0136ffc6e6": {
"id": "551c0dbc-ede6-42ef-ae60-2e0136ffc6e6",
"alias": "rendezvous_binding_review",
"name": "Rendezvous participant binding review",
"description": "",
"oa": "9a78b793-a987-438e-a041-233dc41f2b10",
"sa": "7d9832e5-0288-4d04-a5df-1551d050f79e",
"kind": "Manual",
"baseline": {
"oa": {
"name": "OA Rendezvous use",
"description": ""
},
"sa": {
"name": "SA Rendezvous use",
"description": ""
},
"semantic": {
"facets": [
{
"Binding": {
"keys": {
"oa": "0e3d7b11-4c0f-41a0-beae-a5440e30782f",
"sa": "1cb0eb67-6fa7-414c-a2aa-155cb39da564"
},
"review": {
"oa": {
"Value": {
"referenced": "0e3d7b11-4c0f-41a0-beae-a5440e30782f",
"local": "424d78d2-9145-4b34-a18f-80a335164a9b"
}
},
"sa": {
"Value": {
"referenced": "1cb0eb67-6fa7-414c-a2aa-155cb39da564",
"local": "bb0ad838-eb7c-4470-bf27-f3a21e69fdf8"
}
}
}
}
}
]
}
}
},
"b647f858-1a69-4292-8710-674b1692d54f": {
"id": "b647f858-1a69-4292-8710-674b1692d54f",
"alias": "navigation_latitude_review",
"name": "Navigation origin latitude review",
"description": "",
"oa": "73de257c-d816-4f91-b507-36f79ca49f08",
"sa": "d10ef3c1-479f-4780-9fd5-3b4d21dffe74",
"kind": "Manual",
"baseline": {
"oa": {
"name": "OA Navigation message",
"description": ""
},
"sa": {
"name": "SA Navigation message",
"description": ""
},
"semantic": {
"facets": [
{
"Annotation": {
"keys": {
"oa": {
"path": [
"19be028f-96cd-440e-bbcb-e151fbe00b45"
],
"field": "01d025e3-ee88-4449-a613-217b44a61ae2"
},
"sa": {
"path": [
"0cf0ba32-01c8-41f5-a44c-ed31daa3ca92"
],
"field": "ab1e449f-24f1-4bee-938c-b49510d19bf3"
}
},
"review": {
"oa": {
"Value": {
"path": [
"19be028f-96cd-440e-bbcb-e151fbe00b45"
],
"field": "01d025e3-ee88-4449-a613-217b44a61ae2",
"expression": "latitude_deg + 0.25"
}
},
"sa": {
"Value": {
"path": [
"0cf0ba32-01c8-41f5-a44c-ed31daa3ca92"
],
"field": "ab1e449f-24f1-4bee-938c-b49510d19bf3",
"expression": "latitude_deg + 0.25"
}
}
}
}
}
]
}
}
}
}
}
@@ -0,0 +1,482 @@
// Native keyed review: preserve this exact comment.
arcadia 5;
project mission "Semantic keyed native review" id "13089f56-2a58-4f42-a0e3-8c9812fb5857" {
description "";
sa_function sa_navigation_b "SA Navigation B" id "0114bf4c-343b-4a96-918c-3b4087df4c5e" {
description "";
parent none;
}
oa_data_field oa_navigation_latitude "OA Navigation latitude" id "01d025e3-ee88-4449-a613-217b44a61ae2" {
default none;
description "";
direction Unspecified;
maximum 1;
minimum 0;
parent @oa_navigation_coordinate;
storage Value;
type_ref Real;
unit "";
}
oa_data_field oa_navigation_destination "OA Navigation destination" id "02a82c95-f030-4be3-9ffe-6ebccf40fcb1" {
default none;
description "";
direction Unspecified;
maximum 1;
minimum 0;
parent @oa_navigation_item;
storage Value;
type_ref {
Named @oa_navigation_coordinate;
};
unit "";
}
sa_scenario sa_rendezvous_caller "SA Rendezvous caller" id "06ec35b3-ce60-43a7-8300-c239fa91c898" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@sa_rendezvous_use];
viewpoint Functional;
}
sa_lifeline sa_rendezvous_local "SA Rendezvous local" id "0ba127bc-cd2d-4e53-b76e-9c01025a7c3f" {
description "";
parent @sa_rendezvous_caller;
represented none;
}
sa_data_field sa_navigation_origin "SA Navigation origin" id "0cf0ba32-01c8-41f5-a44c-ed31daa3ca92" {
default none;
description "";
direction Unspecified;
maximum 1;
minimum 0;
parent @sa_navigation_item;
storage Value;
type_ref {
Named @sa_navigation_coordinate;
};
unit "";
}
oa_lifeline oa_rendezvous_referenced "OA Rendezvous referenced" id "0e3d7b11-4c0f-41a0-beae-a5440e30782f" {
description "";
parent @oa_rendezvous_callee;
represented none;
}
sa_scenario sa_rendezvous_callee "SA Rendezvous callee" id "12143ec8-bcf9-4755-809c-87b653465888" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [];
viewpoint Functional;
}
oa_data_field oa_navigation_origin "OA Navigation origin" id "19be028f-96cd-440e-bbcb-e151fbe00b45" {
default none;
description "";
direction Unspecified;
maximum 1;
minimum 0;
parent @oa_navigation_item;
storage Value;
type_ref {
Named @oa_navigation_coordinate;
};
unit "";
}
sa_lifeline sa_rendezvous_referenced "SA Rendezvous referenced" id "1cb0eb67-6fa7-414c-a2aa-155cb39da564" {
description "";
parent @sa_rendezvous_callee;
represented none;
}
oa_lifeline oa_rendezvous_extra_local "OA Rendezvous extra local" id "1f697a2c-8455-48f1-bbdf-bdf657fe8fc4" {
description "";
parent @oa_rendezvous_caller;
represented none;
}
oa_exchange_item oa_navigation_item "OA Navigation Item" id "20619f0c-4419-46b5-a15c-49b004acfa91" {
description "";
kind Information;
mechanism Unspecified;
parent none;
supertype none;
}
oa_activity oa_navigation_b "OA Navigation B" id "264ff2ee-7786-4db7-b78d-2be802c268ac" {
description "";
parent none;
}
sa_scenario sa_navigation_scenario "SA Navigation scenario" id "409c78a0-28bc-4810-86ba-300204a3513f" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@sa_navigation_message];
viewpoint Functional;
}
oa_lifeline oa_rendezvous_local "OA Rendezvous local" id "424d78d2-9145-4b34-a18f-80a335164a9b" {
description "";
parent @oa_rendezvous_caller;
represented none;
}
oa_lifeline oa_rendezvous_alternate "OA Rendezvous alternate" id "59173870-bc74-4c85-89b3-b0cfb8ad70cb" {
description "";
parent @oa_rendezvous_caller;
represented none;
}
sa_exchange_item sa_navigation_item "SA Navigation Item" id "6e8218df-2d57-4247-a401-e0458c4d5bc1" {
description "";
kind Information;
mechanism Unspecified;
parent none;
supertype none;
}
sa_data_type sa_navigation_coordinate "SA Navigation Coordinate" id "715228b2-a573-47ad-bf53-0a9b968ded96" {
default none;
definition {
Record {
supertype none;
};
};
description "";
parent none;
unit "";
}
oa_occurrence oa_navigation_message "OA Navigation message" id "73de257c-d816-4f91-b507-36f79ca49f08" {
body {
Exchange {
exchange @oa_navigation_exchange;
message_kind Asynchronous;
receiver none;
reply_to none;
sender none;
values [{
expression "latitude_deg + 0.25";
field @oa_navigation_latitude;
path [@oa_navigation_origin];
}, {
expression "second independent";
field @oa_navigation_latitude;
path [@oa_navigation_destination];
}];
};
};
description "";
parent @oa_navigation_scenario;
postcondition "";
precondition "";
}
sa_occurrence sa_rendezvous_use "SA Rendezvous use" id "7d9832e5-0288-4d04-a5df-1551d050f79e" {
body {
ScenarioUse {
bindings [{
local @sa_rendezvous_local;
referenced @sa_rendezvous_referenced;
}, {
local @sa_rendezvous_extra_local;
referenced @sa_rendezvous_extra_referenced;
}];
scenario @sa_rendezvous_callee;
};
};
description "";
parent @sa_rendezvous_caller;
postcondition "";
precondition "";
}
oa_scenario oa_navigation_scenario "OA Navigation scenario" id "814c985a-a8c8-409a-b11b-c9572f29eabc" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@oa_navigation_message];
viewpoint OperationalActivity;
}
sa_lifeline sa_rendezvous_extra_referenced "SA Rendezvous extra referenced" id "82798865-193a-46b0-b40d-b22ae91eba28" {
description "";
parent @sa_rendezvous_callee;
represented none;
}
oa_data_type oa_navigation_coordinate "OA Navigation Coordinate" id "85eee860-b8ee-4c14-8551-ec4ce8b84aa8" {
default none;
definition {
Record {
supertype none;
};
};
description "";
parent none;
unit "";
}
sa_data_field sa_navigation_destination "SA Navigation destination" id "8dbaedfd-4a4a-4e5d-a9f9-d040d5f144d8" {
default none;
description "";
direction Unspecified;
maximum 1;
minimum 0;
parent @sa_navigation_item;
storage Value;
type_ref {
Named @sa_navigation_coordinate;
};
unit "";
}
oa_occurrence oa_rendezvous_use "OA Rendezvous use" id "9a78b793-a987-438e-a041-233dc41f2b10" {
body {
ScenarioUse {
bindings [{
local @oa_rendezvous_local;
referenced @oa_rendezvous_referenced;
}, {
local @oa_rendezvous_extra_local;
referenced @oa_rendezvous_extra_referenced;
}];
scenario @oa_rendezvous_callee;
};
};
description "";
parent @oa_rendezvous_caller;
postcondition "";
precondition "";
}
oa_lifeline oa_rendezvous_extra_referenced "OA Rendezvous extra referenced" id "9e60984f-9ca3-4f3d-bc3f-b6b973cdc698" {
description "";
parent @oa_rendezvous_callee;
represented none;
}
sa_port sa_navigation_exchange_output "SA Navigation exchange output" id "9eb225ee-7103-5eb7-88d0-ff2128408748" {
contract {
FunctionOutput {
outgoing_items [@sa_navigation_item];
};
};
description "";
legacy none;
parent @sa_navigation_a;
}
sa_lifeline sa_rendezvous_extra_local "SA Rendezvous extra local" id "a8518771-fa4d-4e6e-bb6a-9e5f719f874a" {
description "";
parent @sa_rendezvous_caller;
represented none;
}
sa_data_field sa_navigation_latitude "SA Navigation latitude" id "ab1e449f-24f1-4bee-938c-b49510d19bf3" {
default none;
description "";
direction Unspecified;
maximum 1;
minimum 0;
parent @sa_navigation_coordinate;
storage Value;
type_ref Real;
unit "";
}
sa_port sa_navigation_exchange_input "SA Navigation exchange input" id "ad717be1-3f30-55db-94b9-7a51558b6dd6" {
contract {
FunctionInput {
incoming_items [@sa_navigation_item];
};
};
description "";
legacy none;
parent @sa_navigation_b;
}
sa_function sa_navigation_a "SA Navigation A" id "ad7dede7-59bf-4355-afec-08c905a564ff" {
description "";
parent none;
}
sa_lifeline sa_rendezvous_alternate "SA Rendezvous alternate" id "bb0ad838-eb7c-4470-bf27-f3a21e69fdf8" {
description "";
parent @sa_rendezvous_caller;
represented none;
}
sa_occurrence sa_navigation_message "SA Navigation message" id "d10ef3c1-479f-4780-9fd5-3b4d21dffe74" {
body {
Exchange {
exchange @sa_navigation_exchange;
message_kind Asynchronous;
receiver none;
reply_to none;
sender none;
values [{
expression "latitude_deg + 0.25";
field @sa_navigation_latitude;
path [@sa_navigation_origin];
}, {
expression "second independent";
field @sa_navigation_latitude;
path [@sa_navigation_destination];
}];
};
};
description "";
parent @sa_navigation_scenario;
postcondition "";
precondition "";
}
oa_activity oa_navigation_a "OA Navigation A" id "d7d34062-6820-471d-bb5f-abb7db4c8198" {
description "";
parent none;
}
oa_scenario oa_rendezvous_callee "OA Rendezvous callee" id "eacfc6df-4e22-4ebd-a90d-6b5146e56513" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [];
viewpoint OperationalActivity;
}
oa_scenario oa_rendezvous_caller "OA Rendezvous caller" id "fd6e0287-66e0-4e84-8a92-98c4c167cb88" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@oa_rendezvous_use];
viewpoint OperationalActivity;
}
interaction oa_navigation_exchange "OA Navigation exchange" id "6a5930e2-0cfb-4aff-a4a4-8c4798f1cda5" {
description "";
items [@oa_navigation_item];
source @oa_navigation_a;
target @oa_navigation_b;
}
functional_exchange sa_navigation_exchange "SA Navigation exchange" id "9c1085f2-c91d-4776-bb56-52c864a80e22" {
description "";
items [@sa_navigation_item];
source @sa_navigation_a;
source_port @sa_navigation_exchange_output;
target @sa_navigation_b;
target_port @sa_navigation_exchange_input;
}
trace rendezvous_binding_review "Rendezvous participant binding review" id "551c0dbc-ede6-42ef-ae60-2e0136ffc6e6" {
baseline {
oa {
description "";
name "OA Rendezvous use";
};
sa {
description "";
name "SA Rendezvous use";
};
semantic {
facets [{
Binding {
keys {
oa uuid "0e3d7b11-4c0f-41a0-beae-a5440e30782f";
sa uuid "1cb0eb67-6fa7-414c-a2aa-155cb39da564";
};
review {
oa {
Value {
local uuid "424d78d2-9145-4b34-a18f-80a335164a9b";
referenced uuid "0e3d7b11-4c0f-41a0-beae-a5440e30782f";
};
};
sa {
Value {
local uuid "0ba127bc-cd2d-4e53-b76e-9c01025a7c3f";
referenced uuid "1cb0eb67-6fa7-414c-a2aa-155cb39da564";
};
};
};
};
}];
};
};
description "";
kind Manual;
oa @oa_rendezvous_use;
sa @sa_rendezvous_use;
}
trace navigation_latitude_review "Navigation origin latitude review" id "b647f858-1a69-4292-8710-674b1692d54f" {
baseline {
oa {
description "";
name "OA Navigation message";
};
sa {
description "";
name "SA Navigation message";
};
semantic {
facets [{
Annotation {
keys {
oa {
field uuid "01d025e3-ee88-4449-a613-217b44a61ae2";
path [uuid "19be028f-96cd-440e-bbcb-e151fbe00b45"];
};
sa {
field uuid "ab1e449f-24f1-4bee-938c-b49510d19bf3";
path [uuid "0cf0ba32-01c8-41f5-a44c-ed31daa3ca92"];
};
};
review {
oa {
Value {
expression "latitude_deg + 0.25";
field uuid "01d025e3-ee88-4449-a613-217b44a61ae2";
path [uuid "19be028f-96cd-440e-bbcb-e151fbe00b45"];
};
};
sa {
Value {
expression "latitude_deg + 0.25";
field uuid "ab1e449f-24f1-4bee-938c-b49510d19bf3";
path [uuid "0cf0ba32-01c8-41f5-a44c-ed31daa3ca92"];
};
};
};
};
}];
};
};
description "";
kind Manual;
oa @oa_navigation_message;
sa @sa_navigation_message;
}
}
@@ -0,0 +1,895 @@
{
"schema_version": 5,
"id": "13089f56-2a58-4f42-a0e3-8c9812fb5857",
"alias": "mission",
"name": "Semantic keyed native review",
"description": "",
"elements": {
"0114bf4c-343b-4a96-918c-3b4087df4c5e": {
"id": "0114bf4c-343b-4a96-918c-3b4087df4c5e",
"alias": "sa_navigation_b",
"name": "SA Navigation B",
"description": "",
"parent": null,
"body": {
"Sa": "Function"
}
},
"01d025e3-ee88-4449-a613-217b44a61ae2": {
"id": "01d025e3-ee88-4449-a613-217b44a61ae2",
"alias": "oa_navigation_latitude",
"name": "OA Navigation latitude",
"description": "",
"parent": "85eee860-b8ee-4c14-8551-ec4ce8b84aa8",
"body": {
"Oa": {
"Shared": {
"DataField": {
"type_ref": "Real",
"minimum": 0,
"maximum": 1,
"unit": "",
"direction": "Unspecified",
"storage": "Value",
"default": null
}
}
}
}
},
"02a82c95-f030-4be3-9ffe-6ebccf40fcb1": {
"id": "02a82c95-f030-4be3-9ffe-6ebccf40fcb1",
"alias": "oa_navigation_destination",
"name": "OA Navigation destination",
"description": "",
"parent": "20619f0c-4419-46b5-a15c-49b004acfa91",
"body": {
"Oa": {
"Shared": {
"DataField": {
"type_ref": {
"Named": "85eee860-b8ee-4c14-8551-ec4ce8b84aa8"
},
"minimum": 0,
"maximum": 1,
"unit": "",
"direction": "Unspecified",
"storage": "Value",
"default": null
}
}
}
}
},
"06ec35b3-ce60-43a7-8300-c239fa91c898": {
"id": "06ec35b3-ce60-43a7-8300-c239fa91c898",
"alias": "sa_rendezvous_caller",
"name": "SA Rendezvous caller",
"description": "",
"parent": null,
"body": {
"Sa": {
"Shared": {
"Scenario": {
"viewpoint": "Functional",
"context": null,
"precondition": "",
"postcondition": "",
"steps": [
"7d9832e5-0288-4d04-a5df-1551d050f79e"
]
}
}
}
}
},
"0ba127bc-cd2d-4e53-b76e-9c01025a7c3f": {
"id": "0ba127bc-cd2d-4e53-b76e-9c01025a7c3f",
"alias": "sa_rendezvous_local",
"name": "SA Rendezvous local",
"description": "",
"parent": "06ec35b3-ce60-43a7-8300-c239fa91c898",
"body": {
"Sa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"0cf0ba32-01c8-41f5-a44c-ed31daa3ca92": {
"id": "0cf0ba32-01c8-41f5-a44c-ed31daa3ca92",
"alias": "sa_navigation_origin",
"name": "SA Navigation origin",
"description": "",
"parent": "6e8218df-2d57-4247-a401-e0458c4d5bc1",
"body": {
"Sa": {
"Shared": {
"DataField": {
"type_ref": {
"Named": "715228b2-a573-47ad-bf53-0a9b968ded96"
},
"minimum": 0,
"maximum": 1,
"unit": "",
"direction": "Unspecified",
"storage": "Value",
"default": null
}
}
}
}
},
"0e3d7b11-4c0f-41a0-beae-a5440e30782f": {
"id": "0e3d7b11-4c0f-41a0-beae-a5440e30782f",
"alias": "oa_rendezvous_referenced",
"name": "OA Rendezvous referenced",
"description": "",
"parent": "eacfc6df-4e22-4ebd-a90d-6b5146e56513",
"body": {
"Oa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"12143ec8-bcf9-4755-809c-87b653465888": {
"id": "12143ec8-bcf9-4755-809c-87b653465888",
"alias": "sa_rendezvous_callee",
"name": "SA Rendezvous callee",
"description": "",
"parent": null,
"body": {
"Sa": {
"Shared": {
"Scenario": {
"viewpoint": "Functional",
"context": null,
"precondition": "",
"postcondition": "",
"steps": []
}
}
}
}
},
"19be028f-96cd-440e-bbcb-e151fbe00b45": {
"id": "19be028f-96cd-440e-bbcb-e151fbe00b45",
"alias": "oa_navigation_origin",
"name": "OA Navigation origin",
"description": "",
"parent": "20619f0c-4419-46b5-a15c-49b004acfa91",
"body": {
"Oa": {
"Shared": {
"DataField": {
"type_ref": {
"Named": "85eee860-b8ee-4c14-8551-ec4ce8b84aa8"
},
"minimum": 0,
"maximum": 1,
"unit": "",
"direction": "Unspecified",
"storage": "Value",
"default": null
}
}
}
}
},
"1cb0eb67-6fa7-414c-a2aa-155cb39da564": {
"id": "1cb0eb67-6fa7-414c-a2aa-155cb39da564",
"alias": "sa_rendezvous_referenced",
"name": "SA Rendezvous referenced",
"description": "",
"parent": "12143ec8-bcf9-4755-809c-87b653465888",
"body": {
"Sa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"1f697a2c-8455-48f1-bbdf-bdf657fe8fc4": {
"id": "1f697a2c-8455-48f1-bbdf-bdf657fe8fc4",
"alias": "oa_rendezvous_extra_local",
"name": "OA Rendezvous extra local",
"description": "",
"parent": "fd6e0287-66e0-4e84-8a92-98c4c167cb88",
"body": {
"Oa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"20619f0c-4419-46b5-a15c-49b004acfa91": {
"id": "20619f0c-4419-46b5-a15c-49b004acfa91",
"alias": "oa_navigation_item",
"name": "OA Navigation Item",
"description": "",
"parent": null,
"body": {
"Oa": {
"Shared": {
"ExchangeItem": {
"kind": "Information",
"mechanism": "Unspecified",
"supertype": null
}
}
}
}
},
"264ff2ee-7786-4db7-b78d-2be802c268ac": {
"id": "264ff2ee-7786-4db7-b78d-2be802c268ac",
"alias": "oa_navigation_b",
"name": "OA Navigation B",
"description": "",
"parent": null,
"body": {
"Oa": "Activity"
}
},
"409c78a0-28bc-4810-86ba-300204a3513f": {
"id": "409c78a0-28bc-4810-86ba-300204a3513f",
"alias": "sa_navigation_scenario",
"name": "SA Navigation scenario",
"description": "",
"parent": null,
"body": {
"Sa": {
"Shared": {
"Scenario": {
"viewpoint": "Functional",
"context": null,
"precondition": "",
"postcondition": "",
"steps": [
"d10ef3c1-479f-4780-9fd5-3b4d21dffe74"
]
}
}
}
}
},
"424d78d2-9145-4b34-a18f-80a335164a9b": {
"id": "424d78d2-9145-4b34-a18f-80a335164a9b",
"alias": "oa_rendezvous_local",
"name": "OA Rendezvous local",
"description": "",
"parent": "fd6e0287-66e0-4e84-8a92-98c4c167cb88",
"body": {
"Oa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"59173870-bc74-4c85-89b3-b0cfb8ad70cb": {
"id": "59173870-bc74-4c85-89b3-b0cfb8ad70cb",
"alias": "oa_rendezvous_alternate",
"name": "OA Rendezvous alternate",
"description": "",
"parent": "fd6e0287-66e0-4e84-8a92-98c4c167cb88",
"body": {
"Oa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"6e8218df-2d57-4247-a401-e0458c4d5bc1": {
"id": "6e8218df-2d57-4247-a401-e0458c4d5bc1",
"alias": "sa_navigation_item",
"name": "SA Navigation Item",
"description": "",
"parent": null,
"body": {
"Sa": {
"Shared": {
"ExchangeItem": {
"kind": "Information",
"mechanism": "Unspecified",
"supertype": null
}
}
}
}
},
"715228b2-a573-47ad-bf53-0a9b968ded96": {
"id": "715228b2-a573-47ad-bf53-0a9b968ded96",
"alias": "sa_navigation_coordinate",
"name": "SA Navigation Coordinate",
"description": "",
"parent": null,
"body": {
"Sa": {
"Shared": {
"DataType": {
"definition": {
"Record": {
"supertype": null
}
},
"default": null,
"unit": ""
}
}
}
}
},
"73de257c-d816-4f91-b507-36f79ca49f08": {
"id": "73de257c-d816-4f91-b507-36f79ca49f08",
"alias": "oa_navigation_message",
"name": "OA Navigation message",
"description": "",
"parent": "814c985a-a8c8-409a-b11b-c9572f29eabc",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Exchange": {
"exchange": "6a5930e2-0cfb-4aff-a4a4-8c4798f1cda5",
"sender": null,
"receiver": null,
"message_kind": "Asynchronous",
"reply_to": null,
"values": [
{
"path": [
"19be028f-96cd-440e-bbcb-e151fbe00b45"
],
"field": "01d025e3-ee88-4449-a613-217b44a61ae2",
"expression": "latitude_deg + 0.25"
},
{
"path": [
"02a82c95-f030-4be3-9ffe-6ebccf40fcb1"
],
"field": "01d025e3-ee88-4449-a613-217b44a61ae2",
"expression": "second independent"
}
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"7d9832e5-0288-4d04-a5df-1551d050f79e": {
"id": "7d9832e5-0288-4d04-a5df-1551d050f79e",
"alias": "sa_rendezvous_use",
"name": "SA Rendezvous use",
"description": "",
"parent": "06ec35b3-ce60-43a7-8300-c239fa91c898",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"ScenarioUse": {
"scenario": "12143ec8-bcf9-4755-809c-87b653465888",
"bindings": [
{
"referenced": "1cb0eb67-6fa7-414c-a2aa-155cb39da564",
"local": "0ba127bc-cd2d-4e53-b76e-9c01025a7c3f"
},
{
"referenced": "82798865-193a-46b0-b40d-b22ae91eba28",
"local": "a8518771-fa4d-4e6e-bb6a-9e5f719f874a"
}
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"814c985a-a8c8-409a-b11b-c9572f29eabc": {
"id": "814c985a-a8c8-409a-b11b-c9572f29eabc",
"alias": "oa_navigation_scenario",
"name": "OA Navigation scenario",
"description": "",
"parent": null,
"body": {
"Oa": {
"Shared": {
"Scenario": {
"viewpoint": "OperationalActivity",
"context": null,
"precondition": "",
"postcondition": "",
"steps": [
"73de257c-d816-4f91-b507-36f79ca49f08"
]
}
}
}
}
},
"82798865-193a-46b0-b40d-b22ae91eba28": {
"id": "82798865-193a-46b0-b40d-b22ae91eba28",
"alias": "sa_rendezvous_extra_referenced",
"name": "SA Rendezvous extra referenced",
"description": "",
"parent": "12143ec8-bcf9-4755-809c-87b653465888",
"body": {
"Sa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"85eee860-b8ee-4c14-8551-ec4ce8b84aa8": {
"id": "85eee860-b8ee-4c14-8551-ec4ce8b84aa8",
"alias": "oa_navigation_coordinate",
"name": "OA Navigation Coordinate",
"description": "",
"parent": null,
"body": {
"Oa": {
"Shared": {
"DataType": {
"definition": {
"Record": {
"supertype": null
}
},
"default": null,
"unit": ""
}
}
}
}
},
"8dbaedfd-4a4a-4e5d-a9f9-d040d5f144d8": {
"id": "8dbaedfd-4a4a-4e5d-a9f9-d040d5f144d8",
"alias": "sa_navigation_destination",
"name": "SA Navigation destination",
"description": "",
"parent": "6e8218df-2d57-4247-a401-e0458c4d5bc1",
"body": {
"Sa": {
"Shared": {
"DataField": {
"type_ref": {
"Named": "715228b2-a573-47ad-bf53-0a9b968ded96"
},
"minimum": 0,
"maximum": 1,
"unit": "",
"direction": "Unspecified",
"storage": "Value",
"default": null
}
}
}
}
},
"9a78b793-a987-438e-a041-233dc41f2b10": {
"id": "9a78b793-a987-438e-a041-233dc41f2b10",
"alias": "oa_rendezvous_use",
"name": "OA Rendezvous use",
"description": "",
"parent": "fd6e0287-66e0-4e84-8a92-98c4c167cb88",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"ScenarioUse": {
"scenario": "eacfc6df-4e22-4ebd-a90d-6b5146e56513",
"bindings": [
{
"referenced": "0e3d7b11-4c0f-41a0-beae-a5440e30782f",
"local": "424d78d2-9145-4b34-a18f-80a335164a9b"
},
{
"referenced": "9e60984f-9ca3-4f3d-bc3f-b6b973cdc698",
"local": "1f697a2c-8455-48f1-bbdf-bdf657fe8fc4"
}
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"9e60984f-9ca3-4f3d-bc3f-b6b973cdc698": {
"id": "9e60984f-9ca3-4f3d-bc3f-b6b973cdc698",
"alias": "oa_rendezvous_extra_referenced",
"name": "OA Rendezvous extra referenced",
"description": "",
"parent": "eacfc6df-4e22-4ebd-a90d-6b5146e56513",
"body": {
"Oa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"9eb225ee-7103-5eb7-88d0-ff2128408748": {
"id": "9eb225ee-7103-5eb7-88d0-ff2128408748",
"alias": "sa_navigation_exchange_output",
"name": "SA Navigation exchange output",
"description": "",
"parent": "ad7dede7-59bf-4355-afec-08c905a564ff",
"body": {
"Sa": {
"Shared": {
"Port": {
"contract": {
"FunctionOutput": {
"outgoing_items": [
"6e8218df-2d57-4247-a401-e0458c4d5bc1"
]
}
},
"legacy": null
}
}
}
}
},
"a8518771-fa4d-4e6e-bb6a-9e5f719f874a": {
"id": "a8518771-fa4d-4e6e-bb6a-9e5f719f874a",
"alias": "sa_rendezvous_extra_local",
"name": "SA Rendezvous extra local",
"description": "",
"parent": "06ec35b3-ce60-43a7-8300-c239fa91c898",
"body": {
"Sa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"ab1e449f-24f1-4bee-938c-b49510d19bf3": {
"id": "ab1e449f-24f1-4bee-938c-b49510d19bf3",
"alias": "sa_navigation_latitude",
"name": "SA Navigation latitude",
"description": "",
"parent": "715228b2-a573-47ad-bf53-0a9b968ded96",
"body": {
"Sa": {
"Shared": {
"DataField": {
"type_ref": "Real",
"minimum": 0,
"maximum": 1,
"unit": "",
"direction": "Unspecified",
"storage": "Value",
"default": null
}
}
}
}
},
"ad717be1-3f30-55db-94b9-7a51558b6dd6": {
"id": "ad717be1-3f30-55db-94b9-7a51558b6dd6",
"alias": "sa_navigation_exchange_input",
"name": "SA Navigation exchange input",
"description": "",
"parent": "0114bf4c-343b-4a96-918c-3b4087df4c5e",
"body": {
"Sa": {
"Shared": {
"Port": {
"contract": {
"FunctionInput": {
"incoming_items": [
"6e8218df-2d57-4247-a401-e0458c4d5bc1"
]
}
},
"legacy": null
}
}
}
}
},
"ad7dede7-59bf-4355-afec-08c905a564ff": {
"id": "ad7dede7-59bf-4355-afec-08c905a564ff",
"alias": "sa_navigation_a",
"name": "SA Navigation A",
"description": "",
"parent": null,
"body": {
"Sa": "Function"
}
},
"bb0ad838-eb7c-4470-bf27-f3a21e69fdf8": {
"id": "bb0ad838-eb7c-4470-bf27-f3a21e69fdf8",
"alias": "sa_rendezvous_alternate",
"name": "SA Rendezvous alternate",
"description": "",
"parent": "06ec35b3-ce60-43a7-8300-c239fa91c898",
"body": {
"Sa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"d10ef3c1-479f-4780-9fd5-3b4d21dffe74": {
"id": "d10ef3c1-479f-4780-9fd5-3b4d21dffe74",
"alias": "sa_navigation_message",
"name": "SA Navigation message",
"description": "",
"parent": "409c78a0-28bc-4810-86ba-300204a3513f",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Exchange": {
"exchange": "9c1085f2-c91d-4776-bb56-52c864a80e22",
"sender": null,
"receiver": null,
"message_kind": "Asynchronous",
"reply_to": null,
"values": [
{
"path": [
"0cf0ba32-01c8-41f5-a44c-ed31daa3ca92"
],
"field": "ab1e449f-24f1-4bee-938c-b49510d19bf3",
"expression": "latitude_deg + 0.25"
},
{
"path": [
"8dbaedfd-4a4a-4e5d-a9f9-d040d5f144d8"
],
"field": "ab1e449f-24f1-4bee-938c-b49510d19bf3",
"expression": "second independent"
}
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"d7d34062-6820-471d-bb5f-abb7db4c8198": {
"id": "d7d34062-6820-471d-bb5f-abb7db4c8198",
"alias": "oa_navigation_a",
"name": "OA Navigation A",
"description": "",
"parent": null,
"body": {
"Oa": "Activity"
}
},
"eacfc6df-4e22-4ebd-a90d-6b5146e56513": {
"id": "eacfc6df-4e22-4ebd-a90d-6b5146e56513",
"alias": "oa_rendezvous_callee",
"name": "OA Rendezvous callee",
"description": "",
"parent": null,
"body": {
"Oa": {
"Shared": {
"Scenario": {
"viewpoint": "OperationalActivity",
"context": null,
"precondition": "",
"postcondition": "",
"steps": []
}
}
}
}
},
"fd6e0287-66e0-4e84-8a92-98c4c167cb88": {
"id": "fd6e0287-66e0-4e84-8a92-98c4c167cb88",
"alias": "oa_rendezvous_caller",
"name": "OA Rendezvous caller",
"description": "",
"parent": null,
"body": {
"Oa": {
"Shared": {
"Scenario": {
"viewpoint": "OperationalActivity",
"context": null,
"precondition": "",
"postcondition": "",
"steps": [
"9a78b793-a987-438e-a041-233dc41f2b10"
]
}
}
}
}
}
},
"relations": {
"6a5930e2-0cfb-4aff-a4a4-8c4798f1cda5": {
"id": "6a5930e2-0cfb-4aff-a4a4-8c4798f1cda5",
"alias": "oa_navigation_exchange",
"name": "OA Navigation exchange",
"description": "",
"body": {
"Interaction": {
"source": "d7d34062-6820-471d-bb5f-abb7db4c8198",
"target": "264ff2ee-7786-4db7-b78d-2be802c268ac",
"items": [
"20619f0c-4419-46b5-a15c-49b004acfa91"
]
}
}
},
"9c1085f2-c91d-4776-bb56-52c864a80e22": {
"id": "9c1085f2-c91d-4776-bb56-52c864a80e22",
"alias": "sa_navigation_exchange",
"name": "SA Navigation exchange",
"description": "",
"body": {
"FunctionalExchange": {
"source": "ad7dede7-59bf-4355-afec-08c905a564ff",
"target": "0114bf4c-343b-4a96-918c-3b4087df4c5e",
"source_port": "9eb225ee-7103-5eb7-88d0-ff2128408748",
"target_port": "ad717be1-3f30-55db-94b9-7a51558b6dd6",
"items": [
"6e8218df-2d57-4247-a401-e0458c4d5bc1"
]
}
}
}
},
"diagrams": {},
"artifact_links": {},
"traces": {
"551c0dbc-ede6-42ef-ae60-2e0136ffc6e6": {
"id": "551c0dbc-ede6-42ef-ae60-2e0136ffc6e6",
"alias": "rendezvous_binding_review",
"name": "Rendezvous participant binding review",
"description": "",
"oa": "9a78b793-a987-438e-a041-233dc41f2b10",
"sa": "7d9832e5-0288-4d04-a5df-1551d050f79e",
"kind": "Manual",
"baseline": {
"oa": {
"name": "OA Rendezvous use",
"description": ""
},
"sa": {
"name": "SA Rendezvous use",
"description": ""
},
"semantic": {
"facets": [
{
"Binding": {
"keys": {
"oa": "0e3d7b11-4c0f-41a0-beae-a5440e30782f",
"sa": "1cb0eb67-6fa7-414c-a2aa-155cb39da564"
},
"review": {
"oa": {
"Value": {
"referenced": "0e3d7b11-4c0f-41a0-beae-a5440e30782f",
"local": "424d78d2-9145-4b34-a18f-80a335164a9b"
}
},
"sa": {
"Value": {
"referenced": "1cb0eb67-6fa7-414c-a2aa-155cb39da564",
"local": "0ba127bc-cd2d-4e53-b76e-9c01025a7c3f"
}
}
}
}
}
]
}
}
},
"b647f858-1a69-4292-8710-674b1692d54f": {
"id": "b647f858-1a69-4292-8710-674b1692d54f",
"alias": "navigation_latitude_review",
"name": "Navigation origin latitude review",
"description": "",
"oa": "73de257c-d816-4f91-b507-36f79ca49f08",
"sa": "d10ef3c1-479f-4780-9fd5-3b4d21dffe74",
"kind": "Manual",
"baseline": {
"oa": {
"name": "OA Navigation message",
"description": ""
},
"sa": {
"name": "SA Navigation message",
"description": ""
},
"semantic": {
"facets": [
{
"Annotation": {
"keys": {
"oa": {
"path": [
"19be028f-96cd-440e-bbcb-e151fbe00b45"
],
"field": "01d025e3-ee88-4449-a613-217b44a61ae2"
},
"sa": {
"path": [
"0cf0ba32-01c8-41f5-a44c-ed31daa3ca92"
],
"field": "ab1e449f-24f1-4bee-938c-b49510d19bf3"
}
},
"review": {
"oa": {
"Value": {
"path": [
"19be028f-96cd-440e-bbcb-e151fbe00b45"
],
"field": "01d025e3-ee88-4449-a613-217b44a61ae2",
"expression": "latitude_deg + 0.25"
}
},
"sa": {
"Value": {
"path": [
"0cf0ba32-01c8-41f5-a44c-ed31daa3ca92"
],
"field": "ab1e449f-24f1-4bee-938c-b49510d19bf3",
"expression": "latitude_deg + 0.25"
}
}
}
}
}
]
}
}
}
}
}
@@ -0,0 +1,482 @@
// Native keyed review: preserve this exact comment.
arcadia 5;
project mission "Semantic keyed native review" id "13089f56-2a58-4f42-a0e3-8c9812fb5857" {
description "";
sa_function sa_navigation_b "SA Navigation B" id "0114bf4c-343b-4a96-918c-3b4087df4c5e" {
description "";
parent none;
}
oa_data_field oa_navigation_latitude "OA Navigation latitude" id "01d025e3-ee88-4449-a613-217b44a61ae2" {
default none;
description "";
direction Unspecified;
maximum 1;
minimum 0;
parent @oa_navigation_coordinate;
storage Value;
type_ref Real;
unit "";
}
oa_data_field oa_navigation_destination "OA Navigation destination" id "02a82c95-f030-4be3-9ffe-6ebccf40fcb1" {
default none;
description "";
direction Unspecified;
maximum 1;
minimum 0;
parent @oa_navigation_item;
storage Value;
type_ref {
Named @oa_navigation_coordinate;
};
unit "";
}
sa_scenario sa_rendezvous_caller "SA Rendezvous caller" id "06ec35b3-ce60-43a7-8300-c239fa91c898" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@sa_rendezvous_use];
viewpoint Functional;
}
sa_lifeline sa_rendezvous_local "SA Rendezvous local" id "0ba127bc-cd2d-4e53-b76e-9c01025a7c3f" {
description "";
parent @sa_rendezvous_caller;
represented none;
}
sa_data_field sa_navigation_origin "SA Navigation origin" id "0cf0ba32-01c8-41f5-a44c-ed31daa3ca92" {
default none;
description "";
direction Unspecified;
maximum 1;
minimum 0;
parent @sa_navigation_item;
storage Value;
type_ref {
Named @sa_navigation_coordinate;
};
unit "";
}
oa_lifeline oa_rendezvous_referenced "OA Rendezvous referenced" id "0e3d7b11-4c0f-41a0-beae-a5440e30782f" {
description "";
parent @oa_rendezvous_callee;
represented none;
}
sa_scenario sa_rendezvous_callee "SA Rendezvous callee" id "12143ec8-bcf9-4755-809c-87b653465888" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [];
viewpoint Functional;
}
oa_data_field oa_navigation_origin "OA Navigation origin" id "19be028f-96cd-440e-bbcb-e151fbe00b45" {
default none;
description "";
direction Unspecified;
maximum 1;
minimum 0;
parent @oa_navigation_item;
storage Value;
type_ref {
Named @oa_navigation_coordinate;
};
unit "";
}
sa_lifeline sa_rendezvous_referenced "SA Rendezvous referenced" id "1cb0eb67-6fa7-414c-a2aa-155cb39da564" {
description "";
parent @sa_rendezvous_callee;
represented none;
}
oa_lifeline oa_rendezvous_extra_local "OA Rendezvous extra local" id "1f697a2c-8455-48f1-bbdf-bdf657fe8fc4" {
description "";
parent @oa_rendezvous_caller;
represented none;
}
oa_exchange_item oa_navigation_item "OA Navigation Item" id "20619f0c-4419-46b5-a15c-49b004acfa91" {
description "";
kind Information;
mechanism Unspecified;
parent none;
supertype none;
}
oa_activity oa_navigation_b "OA Navigation B" id "264ff2ee-7786-4db7-b78d-2be802c268ac" {
description "";
parent none;
}
sa_scenario sa_navigation_scenario "SA Navigation scenario" id "409c78a0-28bc-4810-86ba-300204a3513f" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@sa_navigation_message];
viewpoint Functional;
}
oa_lifeline oa_rendezvous_local "OA Rendezvous local" id "424d78d2-9145-4b34-a18f-80a335164a9b" {
description "";
parent @oa_rendezvous_caller;
represented none;
}
oa_lifeline oa_rendezvous_alternate "OA Rendezvous alternate" id "59173870-bc74-4c85-89b3-b0cfb8ad70cb" {
description "";
parent @oa_rendezvous_caller;
represented none;
}
sa_exchange_item sa_navigation_item "SA Navigation Item" id "6e8218df-2d57-4247-a401-e0458c4d5bc1" {
description "";
kind Information;
mechanism Unspecified;
parent none;
supertype none;
}
sa_data_type sa_navigation_coordinate "SA Navigation Coordinate" id "715228b2-a573-47ad-bf53-0a9b968ded96" {
default none;
definition {
Record {
supertype none;
};
};
description "";
parent none;
unit "";
}
oa_occurrence oa_navigation_message "OA Navigation message" id "73de257c-d816-4f91-b507-36f79ca49f08" {
body {
Exchange {
exchange @oa_navigation_exchange;
message_kind Asynchronous;
receiver none;
reply_to none;
sender none;
values [{
expression "latitude_deg + 0.25";
field @oa_navigation_latitude;
path [@oa_navigation_origin];
}, {
expression "second independent";
field @oa_navigation_latitude;
path [@oa_navigation_destination];
}];
};
};
description "";
parent @oa_navigation_scenario;
postcondition "";
precondition "";
}
sa_occurrence sa_rendezvous_use "SA Rendezvous use" id "7d9832e5-0288-4d04-a5df-1551d050f79e" {
body {
ScenarioUse {
bindings [{
local @sa_rendezvous_local;
referenced @sa_rendezvous_referenced;
}, {
local @sa_rendezvous_extra_local;
referenced @sa_rendezvous_extra_referenced;
}];
scenario @sa_rendezvous_callee;
};
};
description "";
parent @sa_rendezvous_caller;
postcondition "";
precondition "";
}
oa_scenario oa_navigation_scenario "OA Navigation scenario" id "814c985a-a8c8-409a-b11b-c9572f29eabc" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@oa_navigation_message];
viewpoint OperationalActivity;
}
sa_lifeline sa_rendezvous_extra_referenced "SA Rendezvous extra referenced" id "82798865-193a-46b0-b40d-b22ae91eba28" {
description "";
parent @sa_rendezvous_callee;
represented none;
}
oa_data_type oa_navigation_coordinate "OA Navigation Coordinate" id "85eee860-b8ee-4c14-8551-ec4ce8b84aa8" {
default none;
definition {
Record {
supertype none;
};
};
description "";
parent none;
unit "";
}
sa_data_field sa_navigation_destination "SA Navigation destination" id "8dbaedfd-4a4a-4e5d-a9f9-d040d5f144d8" {
default none;
description "";
direction Unspecified;
maximum 1;
minimum 0;
parent @sa_navigation_item;
storage Value;
type_ref {
Named @sa_navigation_coordinate;
};
unit "";
}
oa_occurrence oa_rendezvous_use "OA Rendezvous use" id "9a78b793-a987-438e-a041-233dc41f2b10" {
body {
ScenarioUse {
bindings [{
local @oa_rendezvous_local;
referenced @oa_rendezvous_referenced;
}, {
local @oa_rendezvous_extra_local;
referenced @oa_rendezvous_extra_referenced;
}];
scenario @oa_rendezvous_callee;
};
};
description "";
parent @oa_rendezvous_caller;
postcondition "";
precondition "";
}
oa_lifeline oa_rendezvous_extra_referenced "OA Rendezvous extra referenced" id "9e60984f-9ca3-4f3d-bc3f-b6b973cdc698" {
description "";
parent @oa_rendezvous_callee;
represented none;
}
sa_port sa_navigation_exchange_output "SA Navigation exchange output" id "9eb225ee-7103-5eb7-88d0-ff2128408748" {
contract {
FunctionOutput {
outgoing_items [@sa_navigation_item];
};
};
description "";
legacy none;
parent @sa_navigation_a;
}
sa_lifeline sa_rendezvous_extra_local "SA Rendezvous extra local" id "a8518771-fa4d-4e6e-bb6a-9e5f719f874a" {
description "";
parent @sa_rendezvous_caller;
represented none;
}
sa_data_field sa_navigation_latitude "SA Navigation latitude" id "ab1e449f-24f1-4bee-938c-b49510d19bf3" {
default none;
description "";
direction Unspecified;
maximum 1;
minimum 0;
parent @sa_navigation_coordinate;
storage Value;
type_ref Real;
unit "";
}
sa_port sa_navigation_exchange_input "SA Navigation exchange input" id "ad717be1-3f30-55db-94b9-7a51558b6dd6" {
contract {
FunctionInput {
incoming_items [@sa_navigation_item];
};
};
description "";
legacy none;
parent @sa_navigation_b;
}
sa_function sa_navigation_a "SA Navigation A" id "ad7dede7-59bf-4355-afec-08c905a564ff" {
description "";
parent none;
}
sa_lifeline sa_rendezvous_alternate "SA Rendezvous alternate" id "bb0ad838-eb7c-4470-bf27-f3a21e69fdf8" {
description "";
parent @sa_rendezvous_caller;
represented none;
}
sa_occurrence sa_navigation_message "SA Navigation message" id "d10ef3c1-479f-4780-9fd5-3b4d21dffe74" {
body {
Exchange {
exchange @sa_navigation_exchange;
message_kind Asynchronous;
receiver none;
reply_to none;
sender none;
values [{
expression "latitude_deg";
field @sa_navigation_latitude;
path [@sa_navigation_origin];
}, {
expression "second independent";
field @sa_navigation_latitude;
path [@sa_navigation_destination];
}];
};
};
description "";
parent @sa_navigation_scenario;
postcondition "";
precondition "";
}
oa_activity oa_navigation_a "OA Navigation A" id "d7d34062-6820-471d-bb5f-abb7db4c8198" {
description "";
parent none;
}
oa_scenario oa_rendezvous_callee "OA Rendezvous callee" id "eacfc6df-4e22-4ebd-a90d-6b5146e56513" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [];
viewpoint OperationalActivity;
}
oa_scenario oa_rendezvous_caller "OA Rendezvous caller" id "fd6e0287-66e0-4e84-8a92-98c4c167cb88" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@oa_rendezvous_use];
viewpoint OperationalActivity;
}
interaction oa_navigation_exchange "OA Navigation exchange" id "6a5930e2-0cfb-4aff-a4a4-8c4798f1cda5" {
description "";
items [@oa_navigation_item];
source @oa_navigation_a;
target @oa_navigation_b;
}
functional_exchange sa_navigation_exchange "SA Navigation exchange" id "9c1085f2-c91d-4776-bb56-52c864a80e22" {
description "";
items [@sa_navigation_item];
source @sa_navigation_a;
source_port @sa_navigation_exchange_output;
target @sa_navigation_b;
target_port @sa_navigation_exchange_input;
}
trace rendezvous_binding_review "Rendezvous participant binding review" id "551c0dbc-ede6-42ef-ae60-2e0136ffc6e6" {
baseline {
oa {
description "";
name "OA Rendezvous use";
};
sa {
description "";
name "SA Rendezvous use";
};
semantic {
facets [{
Binding {
keys {
oa uuid "0e3d7b11-4c0f-41a0-beae-a5440e30782f";
sa uuid "1cb0eb67-6fa7-414c-a2aa-155cb39da564";
};
review {
oa {
Value {
local uuid "424d78d2-9145-4b34-a18f-80a335164a9b";
referenced uuid "0e3d7b11-4c0f-41a0-beae-a5440e30782f";
};
};
sa {
Value {
local uuid "0ba127bc-cd2d-4e53-b76e-9c01025a7c3f";
referenced uuid "1cb0eb67-6fa7-414c-a2aa-155cb39da564";
};
};
};
};
}];
};
};
description "";
kind Manual;
oa @oa_rendezvous_use;
sa @sa_rendezvous_use;
}
trace navigation_latitude_review "Navigation origin latitude review" id "b647f858-1a69-4292-8710-674b1692d54f" {
baseline {
oa {
description "";
name "OA Navigation message";
};
sa {
description "";
name "SA Navigation message";
};
semantic {
facets [{
Annotation {
keys {
oa {
field uuid "01d025e3-ee88-4449-a613-217b44a61ae2";
path [uuid "19be028f-96cd-440e-bbcb-e151fbe00b45"];
};
sa {
field uuid "ab1e449f-24f1-4bee-938c-b49510d19bf3";
path [uuid "0cf0ba32-01c8-41f5-a44c-ed31daa3ca92"];
};
};
review {
oa {
Value {
expression "latitude_deg + 0.25";
field uuid "01d025e3-ee88-4449-a613-217b44a61ae2";
path [uuid "19be028f-96cd-440e-bbcb-e151fbe00b45"];
};
};
sa {
Value {
expression "latitude_deg";
field uuid "ab1e449f-24f1-4bee-938c-b49510d19bf3";
path [uuid "0cf0ba32-01c8-41f5-a44c-ed31daa3ca92"];
};
};
};
};
}];
};
};
description "";
kind Manual;
oa @oa_navigation_message;
sa @sa_navigation_message;
}
}
@@ -0,0 +1,80 @@
{
"transition": {
"direction": "OaToSa",
"sources": [
"9a78b793-a987-438e-a041-233dc41f2b10"
],
"scope": "SelectedOnly",
"mappings": [
{
"source": "9a78b793-a987-438e-a041-233dc41f2b10",
"target": "7d9832e5-0288-4d04-a5df-1551d050f79e",
"target_kind": null
}
],
"fields": [],
"resolutions": [],
"destination_diagram": null
},
"traces": {
"9a78b793-a987-438e-a041-233dc41f2b10": "551c0dbc-ede6-42ef-ae60-2e0136ffc6e6"
},
"references": {
"0e3d7b11-4c0f-41a0-beae-a5440e30782f": "1cb0eb67-6fa7-414c-a2aa-155cb39da564",
"9a78b793-a987-438e-a041-233dc41f2b10": "7d9832e5-0288-4d04-a5df-1551d050f79e"
},
"reviews": [
{
"source": "9a78b793-a987-438e-a041-233dc41f2b10",
"resolutions": [
{
"facet": {
"Binding": {
"oa": "0e3d7b11-4c0f-41a0-beae-a5440e30782f",
"sa": "1cb0eb67-6fa7-414c-a2aa-155cb39da564"
}
},
"decision": "Candidate"
}
],
"reset": []
}
],
"candidates": [
{
"Element": {
"id": "7d9832e5-0288-4d04-a5df-1551d050f79e",
"alias": "sa_rendezvous_use",
"name": "SA Rendezvous use",
"description": "",
"parent": "06ec35b3-ce60-43a7-8300-c239fa91c898",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"ScenarioUse": {
"scenario": "12143ec8-bcf9-4755-809c-87b653465888",
"bindings": [
{
"referenced": "1cb0eb67-6fa7-414c-a2aa-155cb39da564",
"local": "a8518771-fa4d-4e6e-bb6a-9e5f719f874a"
},
{
"referenced": "82798865-193a-46b0-b40d-b22ae91eba28",
"local": "a8518771-fa4d-4e6e-bb6a-9e5f719f874a"
}
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
}
}
],
"accepted_impacts": []
}
@@ -0,0 +1 @@
["duplicate_lifeline_binding: Scenario-use lifeline bindings are one-to-one."]
@@ -0,0 +1,895 @@
{
"schema_version": 5,
"id": "13089f56-2a58-4f42-a0e3-8c9812fb5857",
"alias": "mission",
"name": "Semantic keyed native review",
"description": "",
"elements": {
"0114bf4c-343b-4a96-918c-3b4087df4c5e": {
"id": "0114bf4c-343b-4a96-918c-3b4087df4c5e",
"alias": "sa_navigation_b",
"name": "SA Navigation B",
"description": "",
"parent": null,
"body": {
"Sa": "Function"
}
},
"01d025e3-ee88-4449-a613-217b44a61ae2": {
"id": "01d025e3-ee88-4449-a613-217b44a61ae2",
"alias": "oa_navigation_latitude",
"name": "OA Navigation latitude",
"description": "",
"parent": "85eee860-b8ee-4c14-8551-ec4ce8b84aa8",
"body": {
"Oa": {
"Shared": {
"DataField": {
"type_ref": "Real",
"minimum": 0,
"maximum": 1,
"unit": "",
"direction": "Unspecified",
"storage": "Value",
"default": null
}
}
}
}
},
"02a82c95-f030-4be3-9ffe-6ebccf40fcb1": {
"id": "02a82c95-f030-4be3-9ffe-6ebccf40fcb1",
"alias": "oa_navigation_destination",
"name": "OA Navigation destination",
"description": "",
"parent": "20619f0c-4419-46b5-a15c-49b004acfa91",
"body": {
"Oa": {
"Shared": {
"DataField": {
"type_ref": {
"Named": "85eee860-b8ee-4c14-8551-ec4ce8b84aa8"
},
"minimum": 0,
"maximum": 1,
"unit": "",
"direction": "Unspecified",
"storage": "Value",
"default": null
}
}
}
}
},
"06ec35b3-ce60-43a7-8300-c239fa91c898": {
"id": "06ec35b3-ce60-43a7-8300-c239fa91c898",
"alias": "sa_rendezvous_caller",
"name": "SA Rendezvous caller",
"description": "",
"parent": null,
"body": {
"Sa": {
"Shared": {
"Scenario": {
"viewpoint": "Functional",
"context": null,
"precondition": "",
"postcondition": "",
"steps": [
"7d9832e5-0288-4d04-a5df-1551d050f79e"
]
}
}
}
}
},
"0ba127bc-cd2d-4e53-b76e-9c01025a7c3f": {
"id": "0ba127bc-cd2d-4e53-b76e-9c01025a7c3f",
"alias": "sa_rendezvous_local",
"name": "SA Rendezvous local",
"description": "",
"parent": "06ec35b3-ce60-43a7-8300-c239fa91c898",
"body": {
"Sa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"0cf0ba32-01c8-41f5-a44c-ed31daa3ca92": {
"id": "0cf0ba32-01c8-41f5-a44c-ed31daa3ca92",
"alias": "sa_navigation_origin",
"name": "SA Navigation origin",
"description": "",
"parent": "6e8218df-2d57-4247-a401-e0458c4d5bc1",
"body": {
"Sa": {
"Shared": {
"DataField": {
"type_ref": {
"Named": "715228b2-a573-47ad-bf53-0a9b968ded96"
},
"minimum": 0,
"maximum": 1,
"unit": "",
"direction": "Unspecified",
"storage": "Value",
"default": null
}
}
}
}
},
"0e3d7b11-4c0f-41a0-beae-a5440e30782f": {
"id": "0e3d7b11-4c0f-41a0-beae-a5440e30782f",
"alias": "oa_rendezvous_referenced",
"name": "OA Rendezvous referenced",
"description": "",
"parent": "eacfc6df-4e22-4ebd-a90d-6b5146e56513",
"body": {
"Oa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"12143ec8-bcf9-4755-809c-87b653465888": {
"id": "12143ec8-bcf9-4755-809c-87b653465888",
"alias": "sa_rendezvous_callee",
"name": "SA Rendezvous callee",
"description": "",
"parent": null,
"body": {
"Sa": {
"Shared": {
"Scenario": {
"viewpoint": "Functional",
"context": null,
"precondition": "",
"postcondition": "",
"steps": []
}
}
}
}
},
"19be028f-96cd-440e-bbcb-e151fbe00b45": {
"id": "19be028f-96cd-440e-bbcb-e151fbe00b45",
"alias": "oa_navigation_origin",
"name": "OA Navigation origin",
"description": "",
"parent": "20619f0c-4419-46b5-a15c-49b004acfa91",
"body": {
"Oa": {
"Shared": {
"DataField": {
"type_ref": {
"Named": "85eee860-b8ee-4c14-8551-ec4ce8b84aa8"
},
"minimum": 0,
"maximum": 1,
"unit": "",
"direction": "Unspecified",
"storage": "Value",
"default": null
}
}
}
}
},
"1cb0eb67-6fa7-414c-a2aa-155cb39da564": {
"id": "1cb0eb67-6fa7-414c-a2aa-155cb39da564",
"alias": "sa_rendezvous_referenced",
"name": "SA Rendezvous referenced",
"description": "",
"parent": "12143ec8-bcf9-4755-809c-87b653465888",
"body": {
"Sa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"1f697a2c-8455-48f1-bbdf-bdf657fe8fc4": {
"id": "1f697a2c-8455-48f1-bbdf-bdf657fe8fc4",
"alias": "oa_rendezvous_extra_local",
"name": "OA Rendezvous extra local",
"description": "",
"parent": "fd6e0287-66e0-4e84-8a92-98c4c167cb88",
"body": {
"Oa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"20619f0c-4419-46b5-a15c-49b004acfa91": {
"id": "20619f0c-4419-46b5-a15c-49b004acfa91",
"alias": "oa_navigation_item",
"name": "OA Navigation Item",
"description": "",
"parent": null,
"body": {
"Oa": {
"Shared": {
"ExchangeItem": {
"kind": "Information",
"mechanism": "Unspecified",
"supertype": null
}
}
}
}
},
"264ff2ee-7786-4db7-b78d-2be802c268ac": {
"id": "264ff2ee-7786-4db7-b78d-2be802c268ac",
"alias": "oa_navigation_b",
"name": "OA Navigation B",
"description": "",
"parent": null,
"body": {
"Oa": "Activity"
}
},
"409c78a0-28bc-4810-86ba-300204a3513f": {
"id": "409c78a0-28bc-4810-86ba-300204a3513f",
"alias": "sa_navigation_scenario",
"name": "SA Navigation scenario",
"description": "",
"parent": null,
"body": {
"Sa": {
"Shared": {
"Scenario": {
"viewpoint": "Functional",
"context": null,
"precondition": "",
"postcondition": "",
"steps": [
"d10ef3c1-479f-4780-9fd5-3b4d21dffe74"
]
}
}
}
}
},
"424d78d2-9145-4b34-a18f-80a335164a9b": {
"id": "424d78d2-9145-4b34-a18f-80a335164a9b",
"alias": "oa_rendezvous_local",
"name": "OA Rendezvous local",
"description": "",
"parent": "fd6e0287-66e0-4e84-8a92-98c4c167cb88",
"body": {
"Oa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"59173870-bc74-4c85-89b3-b0cfb8ad70cb": {
"id": "59173870-bc74-4c85-89b3-b0cfb8ad70cb",
"alias": "oa_rendezvous_alternate",
"name": "OA Rendezvous alternate",
"description": "",
"parent": "fd6e0287-66e0-4e84-8a92-98c4c167cb88",
"body": {
"Oa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"6e8218df-2d57-4247-a401-e0458c4d5bc1": {
"id": "6e8218df-2d57-4247-a401-e0458c4d5bc1",
"alias": "sa_navigation_item",
"name": "SA Navigation Item",
"description": "",
"parent": null,
"body": {
"Sa": {
"Shared": {
"ExchangeItem": {
"kind": "Information",
"mechanism": "Unspecified",
"supertype": null
}
}
}
}
},
"715228b2-a573-47ad-bf53-0a9b968ded96": {
"id": "715228b2-a573-47ad-bf53-0a9b968ded96",
"alias": "sa_navigation_coordinate",
"name": "SA Navigation Coordinate",
"description": "",
"parent": null,
"body": {
"Sa": {
"Shared": {
"DataType": {
"definition": {
"Record": {
"supertype": null
}
},
"default": null,
"unit": ""
}
}
}
}
},
"73de257c-d816-4f91-b507-36f79ca49f08": {
"id": "73de257c-d816-4f91-b507-36f79ca49f08",
"alias": "oa_navigation_message",
"name": "OA Navigation message",
"description": "",
"parent": "814c985a-a8c8-409a-b11b-c9572f29eabc",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Exchange": {
"exchange": "6a5930e2-0cfb-4aff-a4a4-8c4798f1cda5",
"sender": null,
"receiver": null,
"message_kind": "Asynchronous",
"reply_to": null,
"values": [
{
"path": [
"19be028f-96cd-440e-bbcb-e151fbe00b45"
],
"field": "01d025e3-ee88-4449-a613-217b44a61ae2",
"expression": "latitude_deg + 0.25"
},
{
"path": [
"02a82c95-f030-4be3-9ffe-6ebccf40fcb1"
],
"field": "01d025e3-ee88-4449-a613-217b44a61ae2",
"expression": "second independent"
}
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"7d9832e5-0288-4d04-a5df-1551d050f79e": {
"id": "7d9832e5-0288-4d04-a5df-1551d050f79e",
"alias": "sa_rendezvous_use",
"name": "SA Rendezvous use",
"description": "",
"parent": "06ec35b3-ce60-43a7-8300-c239fa91c898",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"ScenarioUse": {
"scenario": "12143ec8-bcf9-4755-809c-87b653465888",
"bindings": [
{
"referenced": "1cb0eb67-6fa7-414c-a2aa-155cb39da564",
"local": "0ba127bc-cd2d-4e53-b76e-9c01025a7c3f"
},
{
"referenced": "82798865-193a-46b0-b40d-b22ae91eba28",
"local": "a8518771-fa4d-4e6e-bb6a-9e5f719f874a"
}
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"814c985a-a8c8-409a-b11b-c9572f29eabc": {
"id": "814c985a-a8c8-409a-b11b-c9572f29eabc",
"alias": "oa_navigation_scenario",
"name": "OA Navigation scenario",
"description": "",
"parent": null,
"body": {
"Oa": {
"Shared": {
"Scenario": {
"viewpoint": "OperationalActivity",
"context": null,
"precondition": "",
"postcondition": "",
"steps": [
"73de257c-d816-4f91-b507-36f79ca49f08"
]
}
}
}
}
},
"82798865-193a-46b0-b40d-b22ae91eba28": {
"id": "82798865-193a-46b0-b40d-b22ae91eba28",
"alias": "sa_rendezvous_extra_referenced",
"name": "SA Rendezvous extra referenced",
"description": "",
"parent": "12143ec8-bcf9-4755-809c-87b653465888",
"body": {
"Sa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"85eee860-b8ee-4c14-8551-ec4ce8b84aa8": {
"id": "85eee860-b8ee-4c14-8551-ec4ce8b84aa8",
"alias": "oa_navigation_coordinate",
"name": "OA Navigation Coordinate",
"description": "",
"parent": null,
"body": {
"Oa": {
"Shared": {
"DataType": {
"definition": {
"Record": {
"supertype": null
}
},
"default": null,
"unit": ""
}
}
}
}
},
"8dbaedfd-4a4a-4e5d-a9f9-d040d5f144d8": {
"id": "8dbaedfd-4a4a-4e5d-a9f9-d040d5f144d8",
"alias": "sa_navigation_destination",
"name": "SA Navigation destination",
"description": "",
"parent": "6e8218df-2d57-4247-a401-e0458c4d5bc1",
"body": {
"Sa": {
"Shared": {
"DataField": {
"type_ref": {
"Named": "715228b2-a573-47ad-bf53-0a9b968ded96"
},
"minimum": 0,
"maximum": 1,
"unit": "",
"direction": "Unspecified",
"storage": "Value",
"default": null
}
}
}
}
},
"9a78b793-a987-438e-a041-233dc41f2b10": {
"id": "9a78b793-a987-438e-a041-233dc41f2b10",
"alias": "oa_rendezvous_use",
"name": "OA Rendezvous use",
"description": "",
"parent": "fd6e0287-66e0-4e84-8a92-98c4c167cb88",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"ScenarioUse": {
"scenario": "eacfc6df-4e22-4ebd-a90d-6b5146e56513",
"bindings": [
{
"referenced": "0e3d7b11-4c0f-41a0-beae-a5440e30782f",
"local": "424d78d2-9145-4b34-a18f-80a335164a9b"
},
{
"referenced": "9e60984f-9ca3-4f3d-bc3f-b6b973cdc698",
"local": "1f697a2c-8455-48f1-bbdf-bdf657fe8fc4"
}
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"9e60984f-9ca3-4f3d-bc3f-b6b973cdc698": {
"id": "9e60984f-9ca3-4f3d-bc3f-b6b973cdc698",
"alias": "oa_rendezvous_extra_referenced",
"name": "OA Rendezvous extra referenced",
"description": "",
"parent": "eacfc6df-4e22-4ebd-a90d-6b5146e56513",
"body": {
"Oa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"9eb225ee-7103-5eb7-88d0-ff2128408748": {
"id": "9eb225ee-7103-5eb7-88d0-ff2128408748",
"alias": "sa_navigation_exchange_output",
"name": "SA Navigation exchange output",
"description": "",
"parent": "ad7dede7-59bf-4355-afec-08c905a564ff",
"body": {
"Sa": {
"Shared": {
"Port": {
"contract": {
"FunctionOutput": {
"outgoing_items": [
"6e8218df-2d57-4247-a401-e0458c4d5bc1"
]
}
},
"legacy": null
}
}
}
}
},
"a8518771-fa4d-4e6e-bb6a-9e5f719f874a": {
"id": "a8518771-fa4d-4e6e-bb6a-9e5f719f874a",
"alias": "sa_rendezvous_extra_local",
"name": "SA Rendezvous extra local",
"description": "",
"parent": "06ec35b3-ce60-43a7-8300-c239fa91c898",
"body": {
"Sa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"ab1e449f-24f1-4bee-938c-b49510d19bf3": {
"id": "ab1e449f-24f1-4bee-938c-b49510d19bf3",
"alias": "sa_navigation_latitude",
"name": "SA Navigation latitude",
"description": "",
"parent": "715228b2-a573-47ad-bf53-0a9b968ded96",
"body": {
"Sa": {
"Shared": {
"DataField": {
"type_ref": "Real",
"minimum": 0,
"maximum": 1,
"unit": "",
"direction": "Unspecified",
"storage": "Value",
"default": null
}
}
}
}
},
"ad717be1-3f30-55db-94b9-7a51558b6dd6": {
"id": "ad717be1-3f30-55db-94b9-7a51558b6dd6",
"alias": "sa_navigation_exchange_input",
"name": "SA Navigation exchange input",
"description": "",
"parent": "0114bf4c-343b-4a96-918c-3b4087df4c5e",
"body": {
"Sa": {
"Shared": {
"Port": {
"contract": {
"FunctionInput": {
"incoming_items": [
"6e8218df-2d57-4247-a401-e0458c4d5bc1"
]
}
},
"legacy": null
}
}
}
}
},
"ad7dede7-59bf-4355-afec-08c905a564ff": {
"id": "ad7dede7-59bf-4355-afec-08c905a564ff",
"alias": "sa_navigation_a",
"name": "SA Navigation A",
"description": "",
"parent": null,
"body": {
"Sa": "Function"
}
},
"bb0ad838-eb7c-4470-bf27-f3a21e69fdf8": {
"id": "bb0ad838-eb7c-4470-bf27-f3a21e69fdf8",
"alias": "sa_rendezvous_alternate",
"name": "SA Rendezvous alternate",
"description": "",
"parent": "06ec35b3-ce60-43a7-8300-c239fa91c898",
"body": {
"Sa": {
"Shared": {
"Lifeline": {
"represented": null
}
}
}
}
},
"d10ef3c1-479f-4780-9fd5-3b4d21dffe74": {
"id": "d10ef3c1-479f-4780-9fd5-3b4d21dffe74",
"alias": "sa_navigation_message",
"name": "SA Navigation message",
"description": "",
"parent": "409c78a0-28bc-4810-86ba-300204a3513f",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Exchange": {
"exchange": "9c1085f2-c91d-4776-bb56-52c864a80e22",
"sender": null,
"receiver": null,
"message_kind": "Asynchronous",
"reply_to": null,
"values": [
{
"path": [
"0cf0ba32-01c8-41f5-a44c-ed31daa3ca92"
],
"field": "ab1e449f-24f1-4bee-938c-b49510d19bf3",
"expression": "latitude_deg"
},
{
"path": [
"8dbaedfd-4a4a-4e5d-a9f9-d040d5f144d8"
],
"field": "ab1e449f-24f1-4bee-938c-b49510d19bf3",
"expression": "second independent"
}
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"d7d34062-6820-471d-bb5f-abb7db4c8198": {
"id": "d7d34062-6820-471d-bb5f-abb7db4c8198",
"alias": "oa_navigation_a",
"name": "OA Navigation A",
"description": "",
"parent": null,
"body": {
"Oa": "Activity"
}
},
"eacfc6df-4e22-4ebd-a90d-6b5146e56513": {
"id": "eacfc6df-4e22-4ebd-a90d-6b5146e56513",
"alias": "oa_rendezvous_callee",
"name": "OA Rendezvous callee",
"description": "",
"parent": null,
"body": {
"Oa": {
"Shared": {
"Scenario": {
"viewpoint": "OperationalActivity",
"context": null,
"precondition": "",
"postcondition": "",
"steps": []
}
}
}
}
},
"fd6e0287-66e0-4e84-8a92-98c4c167cb88": {
"id": "fd6e0287-66e0-4e84-8a92-98c4c167cb88",
"alias": "oa_rendezvous_caller",
"name": "OA Rendezvous caller",
"description": "",
"parent": null,
"body": {
"Oa": {
"Shared": {
"Scenario": {
"viewpoint": "OperationalActivity",
"context": null,
"precondition": "",
"postcondition": "",
"steps": [
"9a78b793-a987-438e-a041-233dc41f2b10"
]
}
}
}
}
}
},
"relations": {
"6a5930e2-0cfb-4aff-a4a4-8c4798f1cda5": {
"id": "6a5930e2-0cfb-4aff-a4a4-8c4798f1cda5",
"alias": "oa_navigation_exchange",
"name": "OA Navigation exchange",
"description": "",
"body": {
"Interaction": {
"source": "d7d34062-6820-471d-bb5f-abb7db4c8198",
"target": "264ff2ee-7786-4db7-b78d-2be802c268ac",
"items": [
"20619f0c-4419-46b5-a15c-49b004acfa91"
]
}
}
},
"9c1085f2-c91d-4776-bb56-52c864a80e22": {
"id": "9c1085f2-c91d-4776-bb56-52c864a80e22",
"alias": "sa_navigation_exchange",
"name": "SA Navigation exchange",
"description": "",
"body": {
"FunctionalExchange": {
"source": "ad7dede7-59bf-4355-afec-08c905a564ff",
"target": "0114bf4c-343b-4a96-918c-3b4087df4c5e",
"source_port": "9eb225ee-7103-5eb7-88d0-ff2128408748",
"target_port": "ad717be1-3f30-55db-94b9-7a51558b6dd6",
"items": [
"6e8218df-2d57-4247-a401-e0458c4d5bc1"
]
}
}
}
},
"diagrams": {},
"artifact_links": {},
"traces": {
"551c0dbc-ede6-42ef-ae60-2e0136ffc6e6": {
"id": "551c0dbc-ede6-42ef-ae60-2e0136ffc6e6",
"alias": "rendezvous_binding_review",
"name": "Rendezvous participant binding review",
"description": "",
"oa": "9a78b793-a987-438e-a041-233dc41f2b10",
"sa": "7d9832e5-0288-4d04-a5df-1551d050f79e",
"kind": "Manual",
"baseline": {
"oa": {
"name": "OA Rendezvous use",
"description": ""
},
"sa": {
"name": "SA Rendezvous use",
"description": ""
},
"semantic": {
"facets": [
{
"Binding": {
"keys": {
"oa": "0e3d7b11-4c0f-41a0-beae-a5440e30782f",
"sa": "1cb0eb67-6fa7-414c-a2aa-155cb39da564"
},
"review": {
"oa": {
"Value": {
"referenced": "0e3d7b11-4c0f-41a0-beae-a5440e30782f",
"local": "424d78d2-9145-4b34-a18f-80a335164a9b"
}
},
"sa": {
"Value": {
"referenced": "1cb0eb67-6fa7-414c-a2aa-155cb39da564",
"local": "0ba127bc-cd2d-4e53-b76e-9c01025a7c3f"
}
}
}
}
}
]
}
}
},
"b647f858-1a69-4292-8710-674b1692d54f": {
"id": "b647f858-1a69-4292-8710-674b1692d54f",
"alias": "navigation_latitude_review",
"name": "Navigation origin latitude review",
"description": "",
"oa": "73de257c-d816-4f91-b507-36f79ca49f08",
"sa": "d10ef3c1-479f-4780-9fd5-3b4d21dffe74",
"kind": "Manual",
"baseline": {
"oa": {
"name": "OA Navigation message",
"description": ""
},
"sa": {
"name": "SA Navigation message",
"description": ""
},
"semantic": {
"facets": [
{
"Annotation": {
"keys": {
"oa": {
"path": [
"19be028f-96cd-440e-bbcb-e151fbe00b45"
],
"field": "01d025e3-ee88-4449-a613-217b44a61ae2"
},
"sa": {
"path": [
"0cf0ba32-01c8-41f5-a44c-ed31daa3ca92"
],
"field": "ab1e449f-24f1-4bee-938c-b49510d19bf3"
}
},
"review": {
"oa": {
"Value": {
"path": [
"19be028f-96cd-440e-bbcb-e151fbe00b45"
],
"field": "01d025e3-ee88-4449-a613-217b44a61ae2",
"expression": "latitude_deg + 0.25"
}
},
"sa": {
"Value": {
"path": [
"0cf0ba32-01c8-41f5-a44c-ed31daa3ca92"
],
"field": "ab1e449f-24f1-4bee-938c-b49510d19bf3",
"expression": "latitude_deg"
}
}
}
}
}
]
}
}
}
}
}
@@ -0,0 +1,35 @@
{
"annotation_facet": {
"Annotation": {
"oa": {
"field": "01d025e3-ee88-4449-a613-217b44a61ae2",
"path": [
"19be028f-96cd-440e-bbcb-e151fbe00b45"
]
},
"sa": {
"field": "ab1e449f-24f1-4bee-938c-b49510d19bf3",
"path": [
"0cf0ba32-01c8-41f5-a44c-ed31daa3ca92"
]
}
}
},
"annotation_source": "73de257c-d816-4f91-b507-36f79ca49f08",
"annotation_target": "d10ef3c1-479f-4780-9fd5-3b4d21dffe74",
"annotation_trace": "b647f858-1a69-4292-8710-674b1692d54f",
"binding_facet": {
"Binding": {
"oa": "0e3d7b11-4c0f-41a0-beae-a5440e30782f",
"sa": "1cb0eb67-6fa7-414c-a2aa-155cb39da564"
}
},
"binding_source": "9a78b793-a987-438e-a041-233dc41f2b10",
"binding_target": "7d9832e5-0288-4d04-a5df-1551d050f79e",
"binding_trace": "551c0dbc-ede6-42ef-ae60-2e0136ffc6e6",
"elements": 36,
"invalid_local": "a8518771-fa4d-4e6e-bb6a-9e5f719f874a",
"relations": 2,
"repaired_local": "bb0ad838-eb7c-4470-bf27-f3a21e69fdf8",
"traces": 2
}
@@ -0,0 +1,543 @@
{
"base_fingerprint": "793cea8b7ddff23e",
"request": {
"transition": {
"direction": "OaToSa",
"sources": [
"9a78b793-a987-438e-a041-233dc41f2b10"
],
"scope": "SelectedOnly",
"mappings": [
{
"source": "9a78b793-a987-438e-a041-233dc41f2b10",
"target": "7d9832e5-0288-4d04-a5df-1551d050f79e",
"target_kind": null
}
],
"fields": [],
"resolutions": [],
"destination_diagram": null
},
"traces": {
"9a78b793-a987-438e-a041-233dc41f2b10": "551c0dbc-ede6-42ef-ae60-2e0136ffc6e6"
},
"references": {
"0e3d7b11-4c0f-41a0-beae-a5440e30782f": "1cb0eb67-6fa7-414c-a2aa-155cb39da564",
"9a78b793-a987-438e-a041-233dc41f2b10": "7d9832e5-0288-4d04-a5df-1551d050f79e"
},
"reviews": [
{
"source": "9a78b793-a987-438e-a041-233dc41f2b10",
"resolutions": [
{
"facet": {
"Binding": {
"oa": "0e3d7b11-4c0f-41a0-beae-a5440e30782f",
"sa": "1cb0eb67-6fa7-414c-a2aa-155cb39da564"
}
},
"decision": "Candidate"
}
],
"reset": []
}
],
"candidates": [
{
"Element": {
"id": "7d9832e5-0288-4d04-a5df-1551d050f79e",
"alias": "sa_rendezvous_use",
"name": "SA Rendezvous use",
"description": "",
"parent": "06ec35b3-ce60-43a7-8300-c239fa91c898",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"ScenarioUse": {
"scenario": "12143ec8-bcf9-4755-809c-87b653465888",
"bindings": [
{
"referenced": "1cb0eb67-6fa7-414c-a2aa-155cb39da564",
"local": "bb0ad838-eb7c-4470-bf27-f3a21e69fdf8"
},
{
"referenced": "82798865-193a-46b0-b40d-b22ae91eba28",
"local": "a8518771-fa4d-4e6e-bb6a-9e5f719f874a"
}
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
}
}
],
"accepted_impacts": []
},
"transition": {
"base_fingerprint": "793cea8b7ddff23e",
"request": {
"direction": "OaToSa",
"sources": [
"9a78b793-a987-438e-a041-233dc41f2b10"
],
"scope": "SelectedOnly",
"mappings": [
{
"source": "9a78b793-a987-438e-a041-233dc41f2b10",
"target": "7d9832e5-0288-4d04-a5df-1551d050f79e",
"target_kind": null
}
],
"fields": [],
"resolutions": [],
"destination_diagram": null
},
"changes": [
{
"source": "9a78b793-a987-438e-a041-233dc41f2b10",
"target": "7d9832e5-0288-4d04-a5df-1551d050f79e",
"action": "Reuse",
"fields": []
}
],
"conflicts": [],
"warnings": [
"Identify the SA system of interest.",
"Allocate leaf 'SA Navigation B' to a performer.",
"Choose represented.",
"Choose represented.",
"Add ordered occurrences.",
"Choose represented.",
"Choose represented.",
"Choose the exchange mechanism when its contract is known.",
"Allocate leaf 'OA Navigation B' to a performer.",
"Choose represented.",
"Choose represented.",
"Choose the exchange mechanism when its contract is known.",
"Choose sender.",
"Choose receiver.",
"Choose represented.",
"Choose represented.",
"Choose represented.",
"Allocate leaf 'SA Navigation A' to a performer.",
"Choose represented.",
"Choose sender.",
"Choose receiver.",
"Allocate leaf 'OA Navigation A' to a performer.",
"Add ordered occurrences."
],
"commands": []
},
"reviews": [
{
"source": "9a78b793-a987-438e-a041-233dc41f2b10",
"target": "7d9832e5-0288-4d04-a5df-1551d050f79e",
"facets": [
{
"selector": {
"Header": "Name"
},
"current": {
"Header": {
"Name": {
"oa": {
"Value": "OA Rendezvous use"
},
"sa": {
"Value": "SA Rendezvous use"
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Header": "Description"
},
"current": {
"Header": {
"Description": {
"oa": {
"Value": ""
},
"sa": {
"Value": ""
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Header": "Parent"
},
"current": {
"Header": {
"Parent": {
"oa": {
"Value": "fd6e0287-66e0-4e84-8a92-98c4c167cb88"
},
"sa": {
"Value": "06ec35b3-ce60-43a7-8300-c239fa91c898"
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Occurrence": "Constructor"
},
"current": {
"Occurrence": {
"Constructor": {
"oa": {
"Value": "ScenarioUse"
},
"sa": {
"Value": "ScenarioUse"
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Occurrence": "Precondition"
},
"current": {
"Occurrence": {
"Precondition": {
"oa": {
"Value": ""
},
"sa": {
"Value": ""
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Occurrence": "Postcondition"
},
"current": {
"Occurrence": {
"Postcondition": {
"oa": {
"Value": ""
},
"sa": {
"Value": ""
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Occurrence": "Scenario"
},
"current": {
"Occurrence": {
"Scenario": {
"oa": {
"Value": "eacfc6df-4e22-4ebd-a90d-6b5146e56513"
},
"sa": {
"Value": "12143ec8-bcf9-4755-809c-87b653465888"
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Binding": {
"oa": null,
"sa": "82798865-193a-46b0-b40d-b22ae91eba28"
}
},
"current": {
"Binding": {
"keys": {
"oa": null,
"sa": "82798865-193a-46b0-b40d-b22ae91eba28"
},
"review": {
"oa": {
"Value": null
},
"sa": {
"Value": {
"referenced": "82798865-193a-46b0-b40d-b22ae91eba28",
"local": "a8518771-fa4d-4e6e-bb6a-9e5f719f874a"
}
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Binding": {
"oa": "0e3d7b11-4c0f-41a0-beae-a5440e30782f",
"sa": "1cb0eb67-6fa7-414c-a2aa-155cb39da564"
}
},
"current": {
"Binding": {
"keys": {
"oa": "0e3d7b11-4c0f-41a0-beae-a5440e30782f",
"sa": "1cb0eb67-6fa7-414c-a2aa-155cb39da564"
},
"review": {
"oa": {
"Value": {
"referenced": "0e3d7b11-4c0f-41a0-beae-a5440e30782f",
"local": "424d78d2-9145-4b34-a18f-80a335164a9b"
}
},
"sa": {
"Value": {
"referenced": "1cb0eb67-6fa7-414c-a2aa-155cb39da564",
"local": "0ba127bc-cd2d-4e53-b76e-9c01025a7c3f"
}
}
}
}
},
"drift": "Unchanged"
},
{
"selector": {
"Binding": {
"oa": "9e60984f-9ca3-4f3d-bc3f-b6b973cdc698",
"sa": null
}
},
"current": {
"Binding": {
"keys": {
"oa": "9e60984f-9ca3-4f3d-bc3f-b6b973cdc698",
"sa": null
},
"review": {
"oa": {
"Value": {
"referenced": "9e60984f-9ca3-4f3d-bc3f-b6b973cdc698",
"local": "1f697a2c-8455-48f1-bbdf-bdf657fe8fc4"
}
},
"sa": {
"Value": null
}
}
}
},
"drift": "Unreviewed"
}
],
"acknowledged": [
{
"Binding": {
"oa": "0e3d7b11-4c0f-41a0-beae-a5440e30782f",
"sa": "1cb0eb67-6fa7-414c-a2aa-155cb39da564"
}
}
],
"retired": [],
"linked_impacts": [
{
"objects": {
"oa": "0e3d7b11-4c0f-41a0-beae-a5440e30782f",
"sa": "1cb0eb67-6fa7-414c-a2aa-155cb39da564"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": "1f697a2c-8455-48f1-bbdf-bdf657fe8fc4",
"sa": null
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": "424d78d2-9145-4b34-a18f-80a335164a9b",
"sa": null
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": "9e60984f-9ca3-4f3d-bc3f-b6b973cdc698",
"sa": null
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": "eacfc6df-4e22-4ebd-a90d-6b5146e56513",
"sa": null
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": null,
"sa": "0ba127bc-cd2d-4e53-b76e-9c01025a7c3f"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": null,
"sa": "12143ec8-bcf9-4755-809c-87b653465888"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": null,
"sa": "82798865-193a-46b0-b40d-b22ae91eba28"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": null,
"sa": "a8518771-fa4d-4e6e-bb6a-9e5f719f874a"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
}
]
}
],
"impacts": [],
"conflicts": [],
"commands": [
{
"EditElement": [
"7d9832e5-0288-4d04-a5df-1551d050f79e",
{
"id": "7d9832e5-0288-4d04-a5df-1551d050f79e",
"alias": "sa_rendezvous_use",
"name": "SA Rendezvous use",
"description": "",
"parent": "06ec35b3-ce60-43a7-8300-c239fa91c898",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"ScenarioUse": {
"scenario": "12143ec8-bcf9-4755-809c-87b653465888",
"bindings": [
{
"referenced": "1cb0eb67-6fa7-414c-a2aa-155cb39da564",
"local": "bb0ad838-eb7c-4470-bf27-f3a21e69fdf8"
},
{
"referenced": "82798865-193a-46b0-b40d-b22ae91eba28",
"local": "a8518771-fa4d-4e6e-bb6a-9e5f719f874a"
}
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
}
]
},
{
"EditTrace": [
"551c0dbc-ede6-42ef-ae60-2e0136ffc6e6",
{
"id": "551c0dbc-ede6-42ef-ae60-2e0136ffc6e6",
"alias": "rendezvous_binding_review",
"name": "Rendezvous participant binding review",
"description": "",
"oa": "9a78b793-a987-438e-a041-233dc41f2b10",
"sa": "7d9832e5-0288-4d04-a5df-1551d050f79e",
"kind": "Manual",
"baseline": {
"oa": {
"name": "OA Rendezvous use",
"description": ""
},
"sa": {
"name": "SA Rendezvous use",
"description": ""
},
"semantic": {
"facets": [
{
"Binding": {
"keys": {
"oa": "0e3d7b11-4c0f-41a0-beae-a5440e30782f",
"sa": "1cb0eb67-6fa7-414c-a2aa-155cb39da564"
},
"review": {
"oa": {
"Value": {
"referenced": "0e3d7b11-4c0f-41a0-beae-a5440e30782f",
"local": "424d78d2-9145-4b34-a18f-80a335164a9b"
}
},
"sa": {
"Value": {
"referenced": "1cb0eb67-6fa7-414c-a2aa-155cb39da564",
"local": "bb0ad838-eb7c-4470-bf27-f3a21e69fdf8"
}
}
}
}
}
]
}
}
}
]
}
],
"prepared_fingerprint": "4acba5da105c3f36"
}
@@ -0,0 +1,80 @@
{
"transition": {
"direction": "OaToSa",
"sources": [
"9a78b793-a987-438e-a041-233dc41f2b10"
],
"scope": "SelectedOnly",
"mappings": [
{
"source": "9a78b793-a987-438e-a041-233dc41f2b10",
"target": "7d9832e5-0288-4d04-a5df-1551d050f79e",
"target_kind": null
}
],
"fields": [],
"resolutions": [],
"destination_diagram": null
},
"traces": {
"9a78b793-a987-438e-a041-233dc41f2b10": "551c0dbc-ede6-42ef-ae60-2e0136ffc6e6"
},
"references": {
"0e3d7b11-4c0f-41a0-beae-a5440e30782f": "1cb0eb67-6fa7-414c-a2aa-155cb39da564",
"9a78b793-a987-438e-a041-233dc41f2b10": "7d9832e5-0288-4d04-a5df-1551d050f79e"
},
"reviews": [
{
"source": "9a78b793-a987-438e-a041-233dc41f2b10",
"resolutions": [
{
"facet": {
"Binding": {
"oa": "0e3d7b11-4c0f-41a0-beae-a5440e30782f",
"sa": "1cb0eb67-6fa7-414c-a2aa-155cb39da564"
}
},
"decision": "Candidate"
}
],
"reset": []
}
],
"candidates": [
{
"Element": {
"id": "7d9832e5-0288-4d04-a5df-1551d050f79e",
"alias": "sa_rendezvous_use",
"name": "SA Rendezvous use",
"description": "",
"parent": "06ec35b3-ce60-43a7-8300-c239fa91c898",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"ScenarioUse": {
"scenario": "12143ec8-bcf9-4755-809c-87b653465888",
"bindings": [
{
"referenced": "1cb0eb67-6fa7-414c-a2aa-155cb39da564",
"local": "bb0ad838-eb7c-4470-bf27-f3a21e69fdf8"
},
{
"referenced": "82798865-193a-46b0-b40d-b22ae91eba28",
"local": "a8518771-fa4d-4e6e-bb6a-9e5f719f874a"
}
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
}
}
],
"accepted_impacts": []
}
@@ -0,0 +1,66 @@
# Semantic keyed native fixture
Open semantic-keyed.arcadia. This ignored fixture has 36 elements, 2 relationships,
2 named manual traces and pre-recorded explicit paired Annotation/Binding facts.
The normal Traceability "Review semantics…" entry needs no trace creation.
No diagram is required. All files here are local QA artifacts.
## 1. Take one qualified message value
Select trace "Navigation origin latitude review" (alias navigation_latitude_review)
and open Review semantics. Direction: Operational → System.
Enable Show unchanged if the historical paired fact is hidden.
Select the Annotation whose OA qualified field is
"OA Navigation origin / OA Navigation latitude" and whose SA field is
"SA Navigation origin / SA Navigation latitude". The destination-path annotation
is a separate sibling and must remain unchanged.
Click "Choose / change exact row identities…", retain the prefilled explicit
OA/SA keys, then "Use these addresses and review row". This deliberately installs
the typed path/field reference pairs; recorded history alone does not infer them.
Click "Take Operational". The System expression should become
`latitude_deg + 0.25` from `latitude_deg`. Additional changes: 0.
Apply once. The sibling expression stays `second independent` at its original
position. Compare the resulting accepted project with semantic-keyed.after-take.json
and exact single-file source with semantic-keyed.after-take.arcadia.
Undo restores semantic-keyed.json/source; Redo restores after-take.
## 2. Reject and repair one binding Candidate
Continue from after-take. Select trace "Rendezvous participant binding review"
(alias rendezvous_binding_review), Review semantics, Operational → System.
Enable Show unchanged if needed. Select the paired Binding keyed by
"OA Rendezvous referenced" / "SA Rendezvous referenced".
Click "Choose / change exact row identities…" and then
"Use these addresses and review row" to retain that explicit pair.
Click "Set final value…"; leave Include in destination collection checked.
Choose local lifeline "SA Rendezvous extra local". The sibling binding already
uses it, so preview must reject with:
`duplicate_lifeline_binding: Scenario-use lifeline bindings are one-to-one.`
Apply must stay disabled; source/project/history remain exactly after-take.
The chosen invalid local and presence draft must remain visible across tab changes.
Repair the local picker to "SA Rendezvous alternate". Additional changes: 0.
Apply once. Only the selected row's local lifeline changes; the sibling binding
and row order remain intact. Compare accepted project/source with
semantic-keyed.after-repair.json / semantic-keyed.after-repair.arcadia.
One Undo restores after-take exactly; Redo restores after-repair. Save/reopen must
preserve the exact leading comment and all typed review history.
## Validated core oracles
`semantic-keyed.validation.txt`: all three projects pass core validation,
production source and JSON decode round trips; successful plans have zero impacts.
`semantic-keyed.take-request.json` and `semantic-keyed.take-plan.json`: direct core
Take oracle against initial project.
`semantic-keyed.invalid-request.json` and `semantic-keyed.invalid.txt`: rejected
Candidate against after-take; the accepted project is unchanged.
`semantic-keyed.repair-request.json` and `semantic-keyed.repair-plan.json`: repaired
Candidate against after-take.
`semantic-keyed.manifest.json`: exact trace, occurrence, field and lifeline IDs.
Source oracles were generated through source_project::update_bundle, retaining
unmodified declarations and the fixture comment, rather than replacing the whole
file with a freshly formatted model. Generator source is generate-semantic-keyed.rs;
it reuses the production-tested r3_semantic payload/scenario-use constructors.
Standalone rustc output stays in this directory; Cargo and shared outputs untouched.
@@ -0,0 +1,670 @@
{
"base_fingerprint": "ab57364ff66893a6",
"request": {
"transition": {
"direction": "OaToSa",
"sources": [
"73de257c-d816-4f91-b507-36f79ca49f08"
],
"scope": "SelectedOnly",
"mappings": [
{
"source": "73de257c-d816-4f91-b507-36f79ca49f08",
"target": "d10ef3c1-479f-4780-9fd5-3b4d21dffe74",
"target_kind": null
}
],
"fields": [],
"resolutions": [],
"destination_diagram": null
},
"traces": {
"73de257c-d816-4f91-b507-36f79ca49f08": "b647f858-1a69-4292-8710-674b1692d54f"
},
"references": {
"01d025e3-ee88-4449-a613-217b44a61ae2": "ab1e449f-24f1-4bee-938c-b49510d19bf3",
"19be028f-96cd-440e-bbcb-e151fbe00b45": "0cf0ba32-01c8-41f5-a44c-ed31daa3ca92",
"73de257c-d816-4f91-b507-36f79ca49f08": "d10ef3c1-479f-4780-9fd5-3b4d21dffe74"
},
"reviews": [
{
"source": "73de257c-d816-4f91-b507-36f79ca49f08",
"resolutions": [
{
"facet": {
"Annotation": {
"oa": {
"path": [
"19be028f-96cd-440e-bbcb-e151fbe00b45"
],
"field": "01d025e3-ee88-4449-a613-217b44a61ae2"
},
"sa": {
"path": [
"0cf0ba32-01c8-41f5-a44c-ed31daa3ca92"
],
"field": "ab1e449f-24f1-4bee-938c-b49510d19bf3"
}
}
},
"decision": "TakeSource"
}
],
"reset": []
}
],
"candidates": [],
"accepted_impacts": []
},
"transition": {
"base_fingerprint": "ab57364ff66893a6",
"request": {
"direction": "OaToSa",
"sources": [
"73de257c-d816-4f91-b507-36f79ca49f08"
],
"scope": "SelectedOnly",
"mappings": [
{
"source": "73de257c-d816-4f91-b507-36f79ca49f08",
"target": "d10ef3c1-479f-4780-9fd5-3b4d21dffe74",
"target_kind": null
}
],
"fields": [],
"resolutions": [],
"destination_diagram": null
},
"changes": [
{
"source": "73de257c-d816-4f91-b507-36f79ca49f08",
"target": "d10ef3c1-479f-4780-9fd5-3b4d21dffe74",
"action": "Reuse",
"fields": []
}
],
"conflicts": [],
"warnings": [
"Identify the SA system of interest.",
"Allocate leaf 'SA Navigation B' to a performer.",
"Choose represented.",
"Choose represented.",
"Add ordered occurrences.",
"Choose represented.",
"Choose represented.",
"Choose the exchange mechanism when its contract is known.",
"Allocate leaf 'OA Navigation B' to a performer.",
"Choose represented.",
"Choose represented.",
"Choose the exchange mechanism when its contract is known.",
"Choose sender.",
"Choose receiver.",
"Choose represented.",
"Choose represented.",
"Choose represented.",
"Allocate leaf 'SA Navigation A' to a performer.",
"Choose represented.",
"Choose sender.",
"Choose receiver.",
"Allocate leaf 'OA Navigation A' to a performer.",
"Add ordered occurrences."
],
"commands": []
},
"reviews": [
{
"source": "73de257c-d816-4f91-b507-36f79ca49f08",
"target": "d10ef3c1-479f-4780-9fd5-3b4d21dffe74",
"facets": [
{
"selector": {
"Header": "Name"
},
"current": {
"Header": {
"Name": {
"oa": {
"Value": "OA Navigation message"
},
"sa": {
"Value": "SA Navigation message"
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Header": "Description"
},
"current": {
"Header": {
"Description": {
"oa": {
"Value": ""
},
"sa": {
"Value": ""
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Header": "Parent"
},
"current": {
"Header": {
"Parent": {
"oa": {
"Value": "814c985a-a8c8-409a-b11b-c9572f29eabc"
},
"sa": {
"Value": "409c78a0-28bc-4810-86ba-300204a3513f"
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Occurrence": "Constructor"
},
"current": {
"Occurrence": {
"Constructor": {
"oa": {
"Value": "Exchange"
},
"sa": {
"Value": "Exchange"
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Occurrence": "Precondition"
},
"current": {
"Occurrence": {
"Precondition": {
"oa": {
"Value": ""
},
"sa": {
"Value": ""
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Occurrence": "Postcondition"
},
"current": {
"Occurrence": {
"Postcondition": {
"oa": {
"Value": ""
},
"sa": {
"Value": ""
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Occurrence": "Exchange"
},
"current": {
"Occurrence": {
"Exchange": {
"oa": {
"Value": "6a5930e2-0cfb-4aff-a4a4-8c4798f1cda5"
},
"sa": {
"Value": "9c1085f2-c91d-4776-bb56-52c864a80e22"
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Occurrence": "Sender"
},
"current": {
"Occurrence": {
"Sender": {
"oa": {
"Value": null
},
"sa": {
"Value": null
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Occurrence": "Receiver"
},
"current": {
"Occurrence": {
"Receiver": {
"oa": {
"Value": null
},
"sa": {
"Value": null
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Occurrence": "MessageKind"
},
"current": {
"Occurrence": {
"MessageKind": {
"oa": {
"Value": "Asynchronous"
},
"sa": {
"Value": "Asynchronous"
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Occurrence": "ReplyTo"
},
"current": {
"Occurrence": {
"ReplyTo": {
"oa": {
"Value": null
},
"sa": {
"Value": null
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Annotation": {
"oa": null,
"sa": {
"path": [
"8dbaedfd-4a4a-4e5d-a9f9-d040d5f144d8"
],
"field": "ab1e449f-24f1-4bee-938c-b49510d19bf3"
}
}
},
"current": {
"Annotation": {
"keys": {
"oa": null,
"sa": {
"path": [
"8dbaedfd-4a4a-4e5d-a9f9-d040d5f144d8"
],
"field": "ab1e449f-24f1-4bee-938c-b49510d19bf3"
}
},
"review": {
"oa": {
"Value": null
},
"sa": {
"Value": {
"path": [
"8dbaedfd-4a4a-4e5d-a9f9-d040d5f144d8"
],
"field": "ab1e449f-24f1-4bee-938c-b49510d19bf3",
"expression": "second independent"
}
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Annotation": {
"oa": {
"path": [
"02a82c95-f030-4be3-9ffe-6ebccf40fcb1"
],
"field": "01d025e3-ee88-4449-a613-217b44a61ae2"
},
"sa": null
}
},
"current": {
"Annotation": {
"keys": {
"oa": {
"path": [
"02a82c95-f030-4be3-9ffe-6ebccf40fcb1"
],
"field": "01d025e3-ee88-4449-a613-217b44a61ae2"
},
"sa": null
},
"review": {
"oa": {
"Value": {
"path": [
"02a82c95-f030-4be3-9ffe-6ebccf40fcb1"
],
"field": "01d025e3-ee88-4449-a613-217b44a61ae2",
"expression": "second independent"
}
},
"sa": {
"Value": null
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Annotation": {
"oa": {
"path": [
"19be028f-96cd-440e-bbcb-e151fbe00b45"
],
"field": "01d025e3-ee88-4449-a613-217b44a61ae2"
},
"sa": {
"path": [
"0cf0ba32-01c8-41f5-a44c-ed31daa3ca92"
],
"field": "ab1e449f-24f1-4bee-938c-b49510d19bf3"
}
}
},
"current": {
"Annotation": {
"keys": {
"oa": {
"path": [
"19be028f-96cd-440e-bbcb-e151fbe00b45"
],
"field": "01d025e3-ee88-4449-a613-217b44a61ae2"
},
"sa": {
"path": [
"0cf0ba32-01c8-41f5-a44c-ed31daa3ca92"
],
"field": "ab1e449f-24f1-4bee-938c-b49510d19bf3"
}
},
"review": {
"oa": {
"Value": {
"path": [
"19be028f-96cd-440e-bbcb-e151fbe00b45"
],
"field": "01d025e3-ee88-4449-a613-217b44a61ae2",
"expression": "latitude_deg + 0.25"
}
},
"sa": {
"Value": {
"path": [
"0cf0ba32-01c8-41f5-a44c-ed31daa3ca92"
],
"field": "ab1e449f-24f1-4bee-938c-b49510d19bf3",
"expression": "latitude_deg"
}
}
}
}
},
"drift": "Unchanged"
}
],
"acknowledged": [
{
"Annotation": {
"oa": {
"path": [
"19be028f-96cd-440e-bbcb-e151fbe00b45"
],
"field": "01d025e3-ee88-4449-a613-217b44a61ae2"
},
"sa": {
"path": [
"0cf0ba32-01c8-41f5-a44c-ed31daa3ca92"
],
"field": "ab1e449f-24f1-4bee-938c-b49510d19bf3"
}
}
}
],
"retired": [],
"linked_impacts": [
{
"objects": {
"oa": "01d025e3-ee88-4449-a613-217b44a61ae2",
"sa": "ab1e449f-24f1-4bee-938c-b49510d19bf3"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": "02a82c95-f030-4be3-9ffe-6ebccf40fcb1",
"sa": null
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": "19be028f-96cd-440e-bbcb-e151fbe00b45",
"sa": "0cf0ba32-01c8-41f5-a44c-ed31daa3ca92"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": "6a5930e2-0cfb-4aff-a4a4-8c4798f1cda5",
"sa": null
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": "85eee860-b8ee-4c14-8551-ec4ce8b84aa8",
"sa": null
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": null,
"sa": "715228b2-a573-47ad-bf53-0a9b968ded96"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": null,
"sa": "8dbaedfd-4a4a-4e5d-a9f9-d040d5f144d8"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": null,
"sa": "9c1085f2-c91d-4776-bb56-52c864a80e22"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
}
]
}
],
"impacts": [],
"conflicts": [],
"commands": [
{
"EditElement": [
"d10ef3c1-479f-4780-9fd5-3b4d21dffe74",
{
"id": "d10ef3c1-479f-4780-9fd5-3b4d21dffe74",
"alias": "sa_navigation_message",
"name": "SA Navigation message",
"description": "",
"parent": "409c78a0-28bc-4810-86ba-300204a3513f",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Exchange": {
"exchange": "9c1085f2-c91d-4776-bb56-52c864a80e22",
"sender": null,
"receiver": null,
"message_kind": "Asynchronous",
"reply_to": null,
"values": [
{
"path": [
"0cf0ba32-01c8-41f5-a44c-ed31daa3ca92"
],
"field": "ab1e449f-24f1-4bee-938c-b49510d19bf3",
"expression": "latitude_deg + 0.25"
},
{
"path": [
"8dbaedfd-4a4a-4e5d-a9f9-d040d5f144d8"
],
"field": "ab1e449f-24f1-4bee-938c-b49510d19bf3",
"expression": "second independent"
}
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
}
]
},
{
"EditTrace": [
"b647f858-1a69-4292-8710-674b1692d54f",
{
"id": "b647f858-1a69-4292-8710-674b1692d54f",
"alias": "navigation_latitude_review",
"name": "Navigation origin latitude review",
"description": "",
"oa": "73de257c-d816-4f91-b507-36f79ca49f08",
"sa": "d10ef3c1-479f-4780-9fd5-3b4d21dffe74",
"kind": "Manual",
"baseline": {
"oa": {
"name": "OA Navigation message",
"description": ""
},
"sa": {
"name": "SA Navigation message",
"description": ""
},
"semantic": {
"facets": [
{
"Annotation": {
"keys": {
"oa": {
"path": [
"19be028f-96cd-440e-bbcb-e151fbe00b45"
],
"field": "01d025e3-ee88-4449-a613-217b44a61ae2"
},
"sa": {
"path": [
"0cf0ba32-01c8-41f5-a44c-ed31daa3ca92"
],
"field": "ab1e449f-24f1-4bee-938c-b49510d19bf3"
}
},
"review": {
"oa": {
"Value": {
"path": [
"19be028f-96cd-440e-bbcb-e151fbe00b45"
],
"field": "01d025e3-ee88-4449-a613-217b44a61ae2",
"expression": "latitude_deg + 0.25"
}
},
"sa": {
"Value": {
"path": [
"0cf0ba32-01c8-41f5-a44c-ed31daa3ca92"
],
"field": "ab1e449f-24f1-4bee-938c-b49510d19bf3",
"expression": "latitude_deg + 0.25"
}
}
}
}
}
]
}
}
}
]
}
],
"prepared_fingerprint": "793cea8b7ddff23e"
}
@@ -0,0 +1,56 @@
{
"transition": {
"direction": "OaToSa",
"sources": [
"73de257c-d816-4f91-b507-36f79ca49f08"
],
"scope": "SelectedOnly",
"mappings": [
{
"source": "73de257c-d816-4f91-b507-36f79ca49f08",
"target": "d10ef3c1-479f-4780-9fd5-3b4d21dffe74",
"target_kind": null
}
],
"fields": [],
"resolutions": [],
"destination_diagram": null
},
"traces": {
"73de257c-d816-4f91-b507-36f79ca49f08": "b647f858-1a69-4292-8710-674b1692d54f"
},
"references": {
"01d025e3-ee88-4449-a613-217b44a61ae2": "ab1e449f-24f1-4bee-938c-b49510d19bf3",
"19be028f-96cd-440e-bbcb-e151fbe00b45": "0cf0ba32-01c8-41f5-a44c-ed31daa3ca92",
"73de257c-d816-4f91-b507-36f79ca49f08": "d10ef3c1-479f-4780-9fd5-3b4d21dffe74"
},
"reviews": [
{
"source": "73de257c-d816-4f91-b507-36f79ca49f08",
"resolutions": [
{
"facet": {
"Annotation": {
"oa": {
"path": [
"19be028f-96cd-440e-bbcb-e151fbe00b45"
],
"field": "01d025e3-ee88-4449-a613-217b44a61ae2"
},
"sa": {
"path": [
"0cf0ba32-01c8-41f5-a44c-ed31daa3ca92"
],
"field": "ab1e449f-24f1-4bee-938c-b49510d19bf3"
}
}
},
"decision": "TakeSource"
}
],
"reset": []
}
],
"candidates": [],
"accepted_impacts": []
}
@@ -0,0 +1,231 @@
// Preserve the authored startup order rationale.
arcadia 5;
project mission "Startup branch steps order review" id "6d0b8162-c0bf-430f-b3f9-aa5396afee7d" {
description "";
sa_occurrence local_self_test_1d12e648 "SA Local self-test" id "1d12e648-66ba-4ce4-93fe-332792ecf67a" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @start_permitted_3342190a;
postcondition "";
precondition "";
}
sa_occurrence verify_interlock_1e11083d "SA Verify interlock" id "1e11083d-6936-4730-b013-f2d8a827227d" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @start_permitted_3342190a;
postcondition "";
precondition "";
}
sa_occurrence start_permitted_3342190a "SA Start permitted" id "3342190a-03fc-4f3c-b831-80b0f18a0bad" {
body {
Branch {
guard "permitted";
occurrences [@request_start_e658f0ca, @local_self_test_1d12e648, @verify_interlock_1e11083d, @energize_d9d631f7];
};
};
description "";
parent @alternatives_601c0433;
postcondition "";
precondition "";
}
sa_scenario startup_scenario_3eb4e8df "SA Startup scenario" id "3eb4e8df-a13a-492a-ab6f-1b36fb912d91" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@alternatives_601c0433];
viewpoint Functional;
}
oa_occurrence alternatives "OA Alternatives" id "4c3d0157-6569-4c0a-93a2-b2467b00075a" {
body {
Fragment {
branches [@start_permitted];
operator Alternative;
};
};
description "";
parent @startup_scenario;
postcondition "";
precondition "";
}
sa_occurrence alternatives_601c0433 "SA Alternatives" id "601c0433-8608-4ecf-b6bd-08179a8e16d5" {
body {
Fragment {
branches [@start_permitted_3342190a];
operator Alternative;
};
};
description "";
parent @startup_scenario_3eb4e8df;
postcondition "";
precondition "";
}
oa_occurrence request_start "OA Request start" id "6e51da84-0808-46a2-863b-048083889f7a" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @start_permitted;
postcondition "";
precondition "";
}
oa_occurrence energize "OA Energize" id "98a650aa-6d43-4d62-bc2f-45c9c2cc2f59" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @start_permitted;
postcondition "";
precondition "";
}
oa_occurrence verify_interlock "OA Verify interlock" id "ac518f32-e9c2-4a6e-9afd-da1955ee7ea9" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @start_permitted;
postcondition "";
precondition "";
}
oa_scenario startup_scenario "OA Startup scenario" id "b452dfca-e14e-46c6-ad23-4e1cdbc3a976" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@alternatives];
viewpoint OperationalActivity;
}
oa_occurrence local_self_test "OA Local self-test" id "ba7d497c-bc43-42af-b77b-19d7b7be5f68" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @start_permitted;
postcondition "";
precondition "";
}
sa_occurrence energize_d9d631f7 "SA Energize" id "d9d631f7-5f2c-47f7-a130-4151fd27dbfd" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @start_permitted_3342190a;
postcondition "";
precondition "";
}
sa_occurrence request_start_e658f0ca "SA Request start" id "e658f0ca-014e-4043-980e-19a663b7ceea" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @start_permitted_3342190a;
postcondition "";
precondition "";
}
oa_occurrence start_permitted "OA Start permitted" id "f6e150d3-d971-4572-a66d-9efe2beb2896" {
body {
Branch {
guard "permitted";
occurrences [@request_start, @verify_interlock, @energize];
};
};
description "";
parent @alternatives;
postcondition "";
precondition "";
}
trace startup_order_review "Startup branch steps order review" id "46195e23-864f-4df0-8e27-79da910fafd2" {
baseline {
oa {
description "";
name "OA Start permitted";
};
sa {
description "";
name "SA Start permitted";
};
semantic {
facets [{
Member {
collection Steps;
keys {
oa uuid "ac518f32-e9c2-4a6e-9afd-da1955ee7ea9";
sa uuid "1e11083d-6936-4730-b013-f2d8a827227d";
};
review {
oa {
Value true;
};
sa {
Value true;
};
};
};
},
{
Order {
collection Steps;
review {
oa {
Value [uuid "6e51da84-0808-46a2-863b-048083889f7a", uuid "ac518f32-e9c2-4a6e-9afd-da1955ee7ea9", uuid "98a650aa-6d43-4d62-bc2f-45c9c2cc2f59"];
};
sa {
Value [uuid "e658f0ca-014e-4043-980e-19a663b7ceea", uuid "1d12e648-66ba-4ce4-93fe-332792ecf67a", uuid "1e11083d-6936-4730-b013-f2d8a827227d", uuid "d9d631f7-5f2c-47f7-a130-4151fd27dbfd"];
};
};
};
}];
};
};
description "";
kind Manual;
oa @start_permitted;
sa @start_permitted_3342190a;
}
}
@@ -0,0 +1,409 @@
{
"schema_version": 5,
"id": "6d0b8162-c0bf-430f-b3f9-aa5396afee7d",
"alias": "mission",
"name": "Startup branch steps order review",
"description": "",
"elements": {
"1d12e648-66ba-4ce4-93fe-332792ecf67a": {
"id": "1d12e648-66ba-4ce4-93fe-332792ecf67a",
"alias": "local_self_test_1d12e648",
"name": "SA Local self-test",
"description": "",
"parent": "3342190a-03fc-4f3c-b831-80b0f18a0bad",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"1e11083d-6936-4730-b013-f2d8a827227d": {
"id": "1e11083d-6936-4730-b013-f2d8a827227d",
"alias": "verify_interlock_1e11083d",
"name": "SA Verify interlock",
"description": "",
"parent": "3342190a-03fc-4f3c-b831-80b0f18a0bad",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"3342190a-03fc-4f3c-b831-80b0f18a0bad": {
"id": "3342190a-03fc-4f3c-b831-80b0f18a0bad",
"alias": "start_permitted_3342190a",
"name": "SA Start permitted",
"description": "",
"parent": "601c0433-8608-4ecf-b6bd-08179a8e16d5",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Branch": {
"guard": "permitted",
"occurrences": [
"e658f0ca-014e-4043-980e-19a663b7ceea",
"1d12e648-66ba-4ce4-93fe-332792ecf67a",
"1e11083d-6936-4730-b013-f2d8a827227d",
"d9d631f7-5f2c-47f7-a130-4151fd27dbfd"
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"3eb4e8df-a13a-492a-ab6f-1b36fb912d91": {
"id": "3eb4e8df-a13a-492a-ab6f-1b36fb912d91",
"alias": "startup_scenario_3eb4e8df",
"name": "SA Startup scenario",
"description": "",
"parent": null,
"body": {
"Sa": {
"Shared": {
"Scenario": {
"viewpoint": "Functional",
"context": null,
"precondition": "",
"postcondition": "",
"steps": [
"601c0433-8608-4ecf-b6bd-08179a8e16d5"
]
}
}
}
}
},
"4c3d0157-6569-4c0a-93a2-b2467b00075a": {
"id": "4c3d0157-6569-4c0a-93a2-b2467b00075a",
"alias": "alternatives",
"name": "OA Alternatives",
"description": "",
"parent": "b452dfca-e14e-46c6-ad23-4e1cdbc3a976",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Fragment": {
"operator": "Alternative",
"branches": [
"f6e150d3-d971-4572-a66d-9efe2beb2896"
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"601c0433-8608-4ecf-b6bd-08179a8e16d5": {
"id": "601c0433-8608-4ecf-b6bd-08179a8e16d5",
"alias": "alternatives_601c0433",
"name": "SA Alternatives",
"description": "",
"parent": "3eb4e8df-a13a-492a-ab6f-1b36fb912d91",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Fragment": {
"operator": "Alternative",
"branches": [
"3342190a-03fc-4f3c-b831-80b0f18a0bad"
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"6e51da84-0808-46a2-863b-048083889f7a": {
"id": "6e51da84-0808-46a2-863b-048083889f7a",
"alias": "request_start",
"name": "OA Request start",
"description": "",
"parent": "f6e150d3-d971-4572-a66d-9efe2beb2896",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"98a650aa-6d43-4d62-bc2f-45c9c2cc2f59": {
"id": "98a650aa-6d43-4d62-bc2f-45c9c2cc2f59",
"alias": "energize",
"name": "OA Energize",
"description": "",
"parent": "f6e150d3-d971-4572-a66d-9efe2beb2896",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"ac518f32-e9c2-4a6e-9afd-da1955ee7ea9": {
"id": "ac518f32-e9c2-4a6e-9afd-da1955ee7ea9",
"alias": "verify_interlock",
"name": "OA Verify interlock",
"description": "",
"parent": "f6e150d3-d971-4572-a66d-9efe2beb2896",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"b452dfca-e14e-46c6-ad23-4e1cdbc3a976": {
"id": "b452dfca-e14e-46c6-ad23-4e1cdbc3a976",
"alias": "startup_scenario",
"name": "OA Startup scenario",
"description": "",
"parent": null,
"body": {
"Oa": {
"Shared": {
"Scenario": {
"viewpoint": "OperationalActivity",
"context": null,
"precondition": "",
"postcondition": "",
"steps": [
"4c3d0157-6569-4c0a-93a2-b2467b00075a"
]
}
}
}
}
},
"ba7d497c-bc43-42af-b77b-19d7b7be5f68": {
"id": "ba7d497c-bc43-42af-b77b-19d7b7be5f68",
"alias": "local_self_test",
"name": "OA Local self-test",
"description": "",
"parent": "f6e150d3-d971-4572-a66d-9efe2beb2896",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"d9d631f7-5f2c-47f7-a130-4151fd27dbfd": {
"id": "d9d631f7-5f2c-47f7-a130-4151fd27dbfd",
"alias": "energize_d9d631f7",
"name": "SA Energize",
"description": "",
"parent": "3342190a-03fc-4f3c-b831-80b0f18a0bad",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"e658f0ca-014e-4043-980e-19a663b7ceea": {
"id": "e658f0ca-014e-4043-980e-19a663b7ceea",
"alias": "request_start_e658f0ca",
"name": "SA Request start",
"description": "",
"parent": "3342190a-03fc-4f3c-b831-80b0f18a0bad",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"f6e150d3-d971-4572-a66d-9efe2beb2896": {
"id": "f6e150d3-d971-4572-a66d-9efe2beb2896",
"alias": "start_permitted",
"name": "OA Start permitted",
"description": "",
"parent": "4c3d0157-6569-4c0a-93a2-b2467b00075a",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Branch": {
"guard": "permitted",
"occurrences": [
"6e51da84-0808-46a2-863b-048083889f7a",
"ac518f32-e9c2-4a6e-9afd-da1955ee7ea9",
"98a650aa-6d43-4d62-bc2f-45c9c2cc2f59"
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
}
},
"relations": {},
"diagrams": {},
"artifact_links": {},
"traces": {
"46195e23-864f-4df0-8e27-79da910fafd2": {
"id": "46195e23-864f-4df0-8e27-79da910fafd2",
"alias": "startup_order_review",
"name": "Startup branch steps order review",
"description": "",
"oa": "f6e150d3-d971-4572-a66d-9efe2beb2896",
"sa": "3342190a-03fc-4f3c-b831-80b0f18a0bad",
"kind": "Manual",
"baseline": {
"oa": {
"name": "OA Start permitted",
"description": ""
},
"sa": {
"name": "SA Start permitted",
"description": ""
},
"semantic": {
"facets": [
{
"Member": {
"collection": "Steps",
"keys": {
"oa": "ac518f32-e9c2-4a6e-9afd-da1955ee7ea9",
"sa": "1e11083d-6936-4730-b013-f2d8a827227d"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
{
"Order": {
"collection": "Steps",
"review": {
"oa": {
"Value": [
"6e51da84-0808-46a2-863b-048083889f7a",
"ac518f32-e9c2-4a6e-9afd-da1955ee7ea9",
"98a650aa-6d43-4d62-bc2f-45c9c2cc2f59"
]
},
"sa": {
"Value": [
"e658f0ca-014e-4043-980e-19a663b7ceea",
"1d12e648-66ba-4ce4-93fe-332792ecf67a",
"1e11083d-6936-4730-b013-f2d8a827227d",
"d9d631f7-5f2c-47f7-a130-4151fd27dbfd"
]
}
}
}
}
]
}
}
}
}
}
@@ -0,0 +1,50 @@
{
"transition": {
"direction": "OaToSa",
"sources": [
"f6e150d3-d971-4572-a66d-9efe2beb2896"
],
"scope": "SelectedOnly",
"mappings": [
{
"source": "f6e150d3-d971-4572-a66d-9efe2beb2896",
"target": "3342190a-03fc-4f3c-b831-80b0f18a0bad",
"target_kind": null
}
],
"fields": [],
"resolutions": [],
"destination_diagram": null
},
"traces": {
"f6e150d3-d971-4572-a66d-9efe2beb2896": "46195e23-864f-4df0-8e27-79da910fafd2"
},
"references": {
"6e51da84-0808-46a2-863b-048083889f7a": "e658f0ca-014e-4043-980e-19a663b7ceea",
"98a650aa-6d43-4d62-bc2f-45c9c2cc2f59": "d9d631f7-5f2c-47f7-a130-4151fd27dbfd",
"ac518f32-e9c2-4a6e-9afd-da1955ee7ea9": "1e11083d-6936-4730-b013-f2d8a827227d",
"f6e150d3-d971-4572-a66d-9efe2beb2896": "3342190a-03fc-4f3c-b831-80b0f18a0bad"
},
"reviews": [
{
"source": "f6e150d3-d971-4572-a66d-9efe2beb2896",
"resolutions": [
{
"facet": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "ac518f32-e9c2-4a6e-9afd-da1955ee7ea9",
"sa": "1e11083d-6936-4730-b013-f2d8a827227d"
}
}
},
"decision": "TakeSource"
}
],
"reset": []
}
],
"candidates": [],
"accepted_impacts": []
}
@@ -0,0 +1 @@
Ordered member insertion has no unique unchanged anchor; review an explicit final target order
@@ -0,0 +1,218 @@
// Preserve the authored startup order rationale.
arcadia 5;
project mission "Startup branch steps order review" id "6d0b8162-c0bf-430f-b3f9-aa5396afee7d" {
description "";
sa_occurrence local_self_test_1d12e648 "SA Local self-test" id "1d12e648-66ba-4ce4-93fe-332792ecf67a" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @start_permitted_3342190a;
postcondition "";
precondition "";
}
sa_occurrence verify_interlock_1e11083d "SA Verify interlock" id "1e11083d-6936-4730-b013-f2d8a827227d" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @start_permitted_3342190a;
postcondition "";
precondition "";
}
sa_occurrence start_permitted_3342190a "SA Start permitted" id "3342190a-03fc-4f3c-b831-80b0f18a0bad" {
body {
Branch {
guard "permitted";
occurrences [@request_start_e658f0ca, @local_self_test_1d12e648, @energize_d9d631f7];
};
};
description "";
parent @alternatives_601c0433;
postcondition "";
precondition "";
}
sa_scenario startup_scenario_3eb4e8df "SA Startup scenario" id "3eb4e8df-a13a-492a-ab6f-1b36fb912d91" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@alternatives_601c0433];
viewpoint Functional;
}
oa_occurrence alternatives "OA Alternatives" id "4c3d0157-6569-4c0a-93a2-b2467b00075a" {
body {
Fragment {
branches [@start_permitted];
operator Alternative;
};
};
description "";
parent @startup_scenario;
postcondition "";
precondition "";
}
sa_occurrence alternatives_601c0433 "SA Alternatives" id "601c0433-8608-4ecf-b6bd-08179a8e16d5" {
body {
Fragment {
branches [@start_permitted_3342190a];
operator Alternative;
};
};
description "";
parent @startup_scenario_3eb4e8df;
postcondition "";
precondition "";
}
oa_occurrence request_start "OA Request start" id "6e51da84-0808-46a2-863b-048083889f7a" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @start_permitted;
postcondition "";
precondition "";
}
oa_occurrence energize "OA Energize" id "98a650aa-6d43-4d62-bc2f-45c9c2cc2f59" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @start_permitted;
postcondition "";
precondition "";
}
oa_occurrence verify_interlock "OA Verify interlock" id "ac518f32-e9c2-4a6e-9afd-da1955ee7ea9" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @start_permitted;
postcondition "";
precondition "";
}
oa_scenario startup_scenario "OA Startup scenario" id "b452dfca-e14e-46c6-ad23-4e1cdbc3a976" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@alternatives];
viewpoint OperationalActivity;
}
oa_occurrence local_self_test "OA Local self-test" id "ba7d497c-bc43-42af-b77b-19d7b7be5f68" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @start_permitted;
postcondition "";
precondition "";
}
sa_occurrence energize_d9d631f7 "SA Energize" id "d9d631f7-5f2c-47f7-a130-4151fd27dbfd" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @start_permitted_3342190a;
postcondition "";
precondition "";
}
sa_occurrence request_start_e658f0ca "SA Request start" id "e658f0ca-014e-4043-980e-19a663b7ceea" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @start_permitted_3342190a;
postcondition "";
precondition "";
}
oa_occurrence start_permitted "OA Start permitted" id "f6e150d3-d971-4572-a66d-9efe2beb2896" {
body {
Branch {
guard "permitted";
occurrences [@request_start, @verify_interlock, @energize];
};
};
description "";
parent @alternatives;
postcondition "";
precondition "";
}
trace startup_order_review "Startup branch steps order review" id "46195e23-864f-4df0-8e27-79da910fafd2" {
baseline {
oa {
description "";
name "OA Start permitted";
};
sa {
description "";
name "SA Start permitted";
};
semantic {
facets [{
Member {
collection Steps;
keys {
oa uuid "ac518f32-e9c2-4a6e-9afd-da1955ee7ea9";
sa uuid "1e11083d-6936-4730-b013-f2d8a827227d";
};
review {
oa {
Value true;
};
sa {
Value false;
};
};
};
}];
};
};
description "";
kind Manual;
oa @start_permitted;
sa @start_permitted_3342190a;
}
}
@@ -0,0 +1,710 @@
{
"base_fingerprint": "00860542a85d3d15",
"request": {
"transition": {
"direction": "OaToSa",
"sources": [
"f6e150d3-d971-4572-a66d-9efe2beb2896"
],
"scope": "SelectedOnly",
"mappings": [
{
"source": "f6e150d3-d971-4572-a66d-9efe2beb2896",
"target": "3342190a-03fc-4f3c-b831-80b0f18a0bad",
"target_kind": null
}
],
"fields": [],
"resolutions": [],
"destination_diagram": null
},
"traces": {
"f6e150d3-d971-4572-a66d-9efe2beb2896": "46195e23-864f-4df0-8e27-79da910fafd2"
},
"references": {
"6e51da84-0808-46a2-863b-048083889f7a": "e658f0ca-014e-4043-980e-19a663b7ceea",
"98a650aa-6d43-4d62-bc2f-45c9c2cc2f59": "d9d631f7-5f2c-47f7-a130-4151fd27dbfd",
"ac518f32-e9c2-4a6e-9afd-da1955ee7ea9": "1e11083d-6936-4730-b013-f2d8a827227d",
"f6e150d3-d971-4572-a66d-9efe2beb2896": "3342190a-03fc-4f3c-b831-80b0f18a0bad"
},
"reviews": [
{
"source": "f6e150d3-d971-4572-a66d-9efe2beb2896",
"resolutions": [
{
"facet": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "ac518f32-e9c2-4a6e-9afd-da1955ee7ea9",
"sa": "1e11083d-6936-4730-b013-f2d8a827227d"
}
}
},
"decision": "TakeSource"
},
{
"facet": {
"Order": "Steps"
},
"decision": "Candidate"
}
],
"reset": []
}
],
"candidates": [
{
"Element": {
"id": "3342190a-03fc-4f3c-b831-80b0f18a0bad",
"alias": "start_permitted_3342190a",
"name": "SA Start permitted",
"description": "",
"parent": "601c0433-8608-4ecf-b6bd-08179a8e16d5",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Branch": {
"guard": "permitted",
"occurrences": [
"e658f0ca-014e-4043-980e-19a663b7ceea",
"1d12e648-66ba-4ce4-93fe-332792ecf67a",
"1e11083d-6936-4730-b013-f2d8a827227d",
"d9d631f7-5f2c-47f7-a130-4151fd27dbfd"
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
}
}
],
"accepted_impacts": []
},
"transition": {
"base_fingerprint": "00860542a85d3d15",
"request": {
"direction": "OaToSa",
"sources": [
"f6e150d3-d971-4572-a66d-9efe2beb2896"
],
"scope": "SelectedOnly",
"mappings": [
{
"source": "f6e150d3-d971-4572-a66d-9efe2beb2896",
"target": "3342190a-03fc-4f3c-b831-80b0f18a0bad",
"target_kind": null
}
],
"fields": [],
"resolutions": [],
"destination_diagram": null
},
"changes": [
{
"source": "f6e150d3-d971-4572-a66d-9efe2beb2896",
"target": "3342190a-03fc-4f3c-b831-80b0f18a0bad",
"action": "Reuse",
"fields": []
}
],
"conflicts": [],
"warnings": [
"Identify the SA system of interest.",
"Choose action.",
"Choose lifeline.",
"Choose action.",
"Choose lifeline.",
"Add this occurrence to its owner's ordered steps.",
"Choose action.",
"Choose lifeline.",
"Choose action.",
"Choose lifeline.",
"Choose action.",
"Choose lifeline.",
"Choose action.",
"Choose lifeline.",
"Add this occurrence to its owner's ordered steps.",
"Choose action.",
"Choose lifeline.",
"Choose action.",
"Choose lifeline."
],
"commands": []
},
"reviews": [
{
"source": "f6e150d3-d971-4572-a66d-9efe2beb2896",
"target": "3342190a-03fc-4f3c-b831-80b0f18a0bad",
"facets": [
{
"selector": {
"Header": "Name"
},
"current": {
"Header": {
"Name": {
"oa": {
"Value": "OA Start permitted"
},
"sa": {
"Value": "SA Start permitted"
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Header": "Description"
},
"current": {
"Header": {
"Description": {
"oa": {
"Value": ""
},
"sa": {
"Value": ""
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Header": "Parent"
},
"current": {
"Header": {
"Parent": {
"oa": {
"Value": "4c3d0157-6569-4c0a-93a2-b2467b00075a"
},
"sa": {
"Value": "601c0433-8608-4ecf-b6bd-08179a8e16d5"
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Occurrence": "Constructor"
},
"current": {
"Occurrence": {
"Constructor": {
"oa": {
"Value": "Branch"
},
"sa": {
"Value": "Branch"
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Occurrence": "Precondition"
},
"current": {
"Occurrence": {
"Precondition": {
"oa": {
"Value": ""
},
"sa": {
"Value": ""
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Occurrence": "Postcondition"
},
"current": {
"Occurrence": {
"Postcondition": {
"oa": {
"Value": ""
},
"sa": {
"Value": ""
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Occurrence": "BranchGuard"
},
"current": {
"Occurrence": {
"BranchGuard": {
"oa": {
"Value": "permitted"
},
"sa": {
"Value": "permitted"
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Member": {
"collection": "Steps",
"keys": {
"oa": null,
"sa": "1d12e648-66ba-4ce4-93fe-332792ecf67a"
}
}
},
"current": {
"Member": {
"collection": "Steps",
"keys": {
"oa": null,
"sa": "1d12e648-66ba-4ce4-93fe-332792ecf67a"
},
"review": {
"oa": {
"Value": false
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "6e51da84-0808-46a2-863b-048083889f7a",
"sa": "e658f0ca-014e-4043-980e-19a663b7ceea"
}
}
},
"current": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "6e51da84-0808-46a2-863b-048083889f7a",
"sa": "e658f0ca-014e-4043-980e-19a663b7ceea"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "98a650aa-6d43-4d62-bc2f-45c9c2cc2f59",
"sa": "d9d631f7-5f2c-47f7-a130-4151fd27dbfd"
}
}
},
"current": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "98a650aa-6d43-4d62-bc2f-45c9c2cc2f59",
"sa": "d9d631f7-5f2c-47f7-a130-4151fd27dbfd"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "ac518f32-e9c2-4a6e-9afd-da1955ee7ea9",
"sa": "1e11083d-6936-4730-b013-f2d8a827227d"
}
}
},
"current": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "ac518f32-e9c2-4a6e-9afd-da1955ee7ea9",
"sa": "1e11083d-6936-4730-b013-f2d8a827227d"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": false
}
}
}
},
"drift": "Unchanged"
},
{
"selector": {
"Order": "Steps"
},
"current": {
"Order": {
"collection": "Steps",
"review": {
"oa": {
"Value": [
"6e51da84-0808-46a2-863b-048083889f7a",
"ac518f32-e9c2-4a6e-9afd-da1955ee7ea9",
"98a650aa-6d43-4d62-bc2f-45c9c2cc2f59"
]
},
"sa": {
"Value": [
"e658f0ca-014e-4043-980e-19a663b7ceea",
"1d12e648-66ba-4ce4-93fe-332792ecf67a",
"d9d631f7-5f2c-47f7-a130-4151fd27dbfd"
]
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Child": {
"oa": null,
"sa": "1d12e648-66ba-4ce4-93fe-332792ecf67a"
}
},
"current": {
"Child": {
"keys": {
"oa": null,
"sa": "1d12e648-66ba-4ce4-93fe-332792ecf67a"
},
"review": {
"oa": {
"Value": false
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Child": {
"oa": "6e51da84-0808-46a2-863b-048083889f7a",
"sa": "e658f0ca-014e-4043-980e-19a663b7ceea"
}
},
"current": {
"Child": {
"keys": {
"oa": "6e51da84-0808-46a2-863b-048083889f7a",
"sa": "e658f0ca-014e-4043-980e-19a663b7ceea"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Child": {
"oa": "98a650aa-6d43-4d62-bc2f-45c9c2cc2f59",
"sa": "d9d631f7-5f2c-47f7-a130-4151fd27dbfd"
}
},
"current": {
"Child": {
"keys": {
"oa": "98a650aa-6d43-4d62-bc2f-45c9c2cc2f59",
"sa": "d9d631f7-5f2c-47f7-a130-4151fd27dbfd"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Child": {
"oa": "ac518f32-e9c2-4a6e-9afd-da1955ee7ea9",
"sa": "1e11083d-6936-4730-b013-f2d8a827227d"
}
},
"current": {
"Child": {
"keys": {
"oa": "ac518f32-e9c2-4a6e-9afd-da1955ee7ea9",
"sa": "1e11083d-6936-4730-b013-f2d8a827227d"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Child": {
"oa": "ba7d497c-bc43-42af-b77b-19d7b7be5f68",
"sa": null
}
},
"current": {
"Child": {
"keys": {
"oa": "ba7d497c-bc43-42af-b77b-19d7b7be5f68",
"sa": null
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": false
}
}
}
},
"drift": "Unreviewed"
}
],
"acknowledged": [
{
"Member": {
"collection": "Steps",
"keys": {
"oa": "ac518f32-e9c2-4a6e-9afd-da1955ee7ea9",
"sa": "1e11083d-6936-4730-b013-f2d8a827227d"
}
}
},
{
"Order": "Steps"
}
],
"retired": [],
"linked_impacts": [
{
"objects": {
"oa": "6e51da84-0808-46a2-863b-048083889f7a",
"sa": "e658f0ca-014e-4043-980e-19a663b7ceea"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": "98a650aa-6d43-4d62-bc2f-45c9c2cc2f59",
"sa": "d9d631f7-5f2c-47f7-a130-4151fd27dbfd"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": "ac518f32-e9c2-4a6e-9afd-da1955ee7ea9",
"sa": "1e11083d-6936-4730-b013-f2d8a827227d"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": "ba7d497c-bc43-42af-b77b-19d7b7be5f68",
"sa": null
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": null,
"sa": "1d12e648-66ba-4ce4-93fe-332792ecf67a"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
}
]
}
],
"impacts": [],
"conflicts": [],
"commands": [
{
"EditElement": [
"3342190a-03fc-4f3c-b831-80b0f18a0bad",
{
"id": "3342190a-03fc-4f3c-b831-80b0f18a0bad",
"alias": "start_permitted_3342190a",
"name": "SA Start permitted",
"description": "",
"parent": "601c0433-8608-4ecf-b6bd-08179a8e16d5",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Branch": {
"guard": "permitted",
"occurrences": [
"e658f0ca-014e-4043-980e-19a663b7ceea",
"1d12e648-66ba-4ce4-93fe-332792ecf67a",
"1e11083d-6936-4730-b013-f2d8a827227d",
"d9d631f7-5f2c-47f7-a130-4151fd27dbfd"
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
}
]
},
{
"EditTrace": [
"46195e23-864f-4df0-8e27-79da910fafd2",
{
"id": "46195e23-864f-4df0-8e27-79da910fafd2",
"alias": "startup_order_review",
"name": "Startup branch steps order review",
"description": "",
"oa": "f6e150d3-d971-4572-a66d-9efe2beb2896",
"sa": "3342190a-03fc-4f3c-b831-80b0f18a0bad",
"kind": "Manual",
"baseline": {
"oa": {
"name": "OA Start permitted",
"description": ""
},
"sa": {
"name": "SA Start permitted",
"description": ""
},
"semantic": {
"facets": [
{
"Member": {
"collection": "Steps",
"keys": {
"oa": "ac518f32-e9c2-4a6e-9afd-da1955ee7ea9",
"sa": "1e11083d-6936-4730-b013-f2d8a827227d"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
{
"Order": {
"collection": "Steps",
"review": {
"oa": {
"Value": [
"6e51da84-0808-46a2-863b-048083889f7a",
"ac518f32-e9c2-4a6e-9afd-da1955ee7ea9",
"98a650aa-6d43-4d62-bc2f-45c9c2cc2f59"
]
},
"sa": {
"Value": [
"e658f0ca-014e-4043-980e-19a663b7ceea",
"1d12e648-66ba-4ce4-93fe-332792ecf67a",
"1e11083d-6936-4730-b013-f2d8a827227d",
"d9d631f7-5f2c-47f7-a130-4151fd27dbfd"
]
}
}
}
}
]
}
}
}
]
}
],
"prepared_fingerprint": "eb2788fcfaacbfe1"
}
@@ -0,0 +1,87 @@
{
"transition": {
"direction": "OaToSa",
"sources": [
"f6e150d3-d971-4572-a66d-9efe2beb2896"
],
"scope": "SelectedOnly",
"mappings": [
{
"source": "f6e150d3-d971-4572-a66d-9efe2beb2896",
"target": "3342190a-03fc-4f3c-b831-80b0f18a0bad",
"target_kind": null
}
],
"fields": [],
"resolutions": [],
"destination_diagram": null
},
"traces": {
"f6e150d3-d971-4572-a66d-9efe2beb2896": "46195e23-864f-4df0-8e27-79da910fafd2"
},
"references": {
"6e51da84-0808-46a2-863b-048083889f7a": "e658f0ca-014e-4043-980e-19a663b7ceea",
"98a650aa-6d43-4d62-bc2f-45c9c2cc2f59": "d9d631f7-5f2c-47f7-a130-4151fd27dbfd",
"ac518f32-e9c2-4a6e-9afd-da1955ee7ea9": "1e11083d-6936-4730-b013-f2d8a827227d",
"f6e150d3-d971-4572-a66d-9efe2beb2896": "3342190a-03fc-4f3c-b831-80b0f18a0bad"
},
"reviews": [
{
"source": "f6e150d3-d971-4572-a66d-9efe2beb2896",
"resolutions": [
{
"facet": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "ac518f32-e9c2-4a6e-9afd-da1955ee7ea9",
"sa": "1e11083d-6936-4730-b013-f2d8a827227d"
}
}
},
"decision": "TakeSource"
},
{
"facet": {
"Order": "Steps"
},
"decision": "Candidate"
}
],
"reset": []
}
],
"candidates": [
{
"Element": {
"id": "3342190a-03fc-4f3c-b831-80b0f18a0bad",
"alias": "start_permitted_3342190a",
"name": "SA Start permitted",
"description": "",
"parent": "601c0433-8608-4ecf-b6bd-08179a8e16d5",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Branch": {
"guard": "permitted",
"occurrences": [
"e658f0ca-014e-4043-980e-19a663b7ceea",
"1d12e648-66ba-4ce4-93fe-332792ecf67a",
"1e11083d-6936-4730-b013-f2d8a827227d",
"d9d631f7-5f2c-47f7-a130-4151fd27dbfd"
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
}
}
],
"accepted_impacts": []
}
@@ -0,0 +1,386 @@
{
"schema_version": 5,
"id": "6d0b8162-c0bf-430f-b3f9-aa5396afee7d",
"alias": "mission",
"name": "Startup branch steps order review",
"description": "",
"elements": {
"1d12e648-66ba-4ce4-93fe-332792ecf67a": {
"id": "1d12e648-66ba-4ce4-93fe-332792ecf67a",
"alias": "local_self_test_1d12e648",
"name": "SA Local self-test",
"description": "",
"parent": "3342190a-03fc-4f3c-b831-80b0f18a0bad",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"1e11083d-6936-4730-b013-f2d8a827227d": {
"id": "1e11083d-6936-4730-b013-f2d8a827227d",
"alias": "verify_interlock_1e11083d",
"name": "SA Verify interlock",
"description": "",
"parent": "3342190a-03fc-4f3c-b831-80b0f18a0bad",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"3342190a-03fc-4f3c-b831-80b0f18a0bad": {
"id": "3342190a-03fc-4f3c-b831-80b0f18a0bad",
"alias": "start_permitted_3342190a",
"name": "SA Start permitted",
"description": "",
"parent": "601c0433-8608-4ecf-b6bd-08179a8e16d5",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Branch": {
"guard": "permitted",
"occurrences": [
"e658f0ca-014e-4043-980e-19a663b7ceea",
"1d12e648-66ba-4ce4-93fe-332792ecf67a",
"d9d631f7-5f2c-47f7-a130-4151fd27dbfd"
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"3eb4e8df-a13a-492a-ab6f-1b36fb912d91": {
"id": "3eb4e8df-a13a-492a-ab6f-1b36fb912d91",
"alias": "startup_scenario_3eb4e8df",
"name": "SA Startup scenario",
"description": "",
"parent": null,
"body": {
"Sa": {
"Shared": {
"Scenario": {
"viewpoint": "Functional",
"context": null,
"precondition": "",
"postcondition": "",
"steps": [
"601c0433-8608-4ecf-b6bd-08179a8e16d5"
]
}
}
}
}
},
"4c3d0157-6569-4c0a-93a2-b2467b00075a": {
"id": "4c3d0157-6569-4c0a-93a2-b2467b00075a",
"alias": "alternatives",
"name": "OA Alternatives",
"description": "",
"parent": "b452dfca-e14e-46c6-ad23-4e1cdbc3a976",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Fragment": {
"operator": "Alternative",
"branches": [
"f6e150d3-d971-4572-a66d-9efe2beb2896"
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"601c0433-8608-4ecf-b6bd-08179a8e16d5": {
"id": "601c0433-8608-4ecf-b6bd-08179a8e16d5",
"alias": "alternatives_601c0433",
"name": "SA Alternatives",
"description": "",
"parent": "3eb4e8df-a13a-492a-ab6f-1b36fb912d91",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Fragment": {
"operator": "Alternative",
"branches": [
"3342190a-03fc-4f3c-b831-80b0f18a0bad"
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"6e51da84-0808-46a2-863b-048083889f7a": {
"id": "6e51da84-0808-46a2-863b-048083889f7a",
"alias": "request_start",
"name": "OA Request start",
"description": "",
"parent": "f6e150d3-d971-4572-a66d-9efe2beb2896",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"98a650aa-6d43-4d62-bc2f-45c9c2cc2f59": {
"id": "98a650aa-6d43-4d62-bc2f-45c9c2cc2f59",
"alias": "energize",
"name": "OA Energize",
"description": "",
"parent": "f6e150d3-d971-4572-a66d-9efe2beb2896",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"ac518f32-e9c2-4a6e-9afd-da1955ee7ea9": {
"id": "ac518f32-e9c2-4a6e-9afd-da1955ee7ea9",
"alias": "verify_interlock",
"name": "OA Verify interlock",
"description": "",
"parent": "f6e150d3-d971-4572-a66d-9efe2beb2896",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"b452dfca-e14e-46c6-ad23-4e1cdbc3a976": {
"id": "b452dfca-e14e-46c6-ad23-4e1cdbc3a976",
"alias": "startup_scenario",
"name": "OA Startup scenario",
"description": "",
"parent": null,
"body": {
"Oa": {
"Shared": {
"Scenario": {
"viewpoint": "OperationalActivity",
"context": null,
"precondition": "",
"postcondition": "",
"steps": [
"4c3d0157-6569-4c0a-93a2-b2467b00075a"
]
}
}
}
}
},
"ba7d497c-bc43-42af-b77b-19d7b7be5f68": {
"id": "ba7d497c-bc43-42af-b77b-19d7b7be5f68",
"alias": "local_self_test",
"name": "OA Local self-test",
"description": "",
"parent": "f6e150d3-d971-4572-a66d-9efe2beb2896",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"d9d631f7-5f2c-47f7-a130-4151fd27dbfd": {
"id": "d9d631f7-5f2c-47f7-a130-4151fd27dbfd",
"alias": "energize_d9d631f7",
"name": "SA Energize",
"description": "",
"parent": "3342190a-03fc-4f3c-b831-80b0f18a0bad",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"e658f0ca-014e-4043-980e-19a663b7ceea": {
"id": "e658f0ca-014e-4043-980e-19a663b7ceea",
"alias": "request_start_e658f0ca",
"name": "SA Request start",
"description": "",
"parent": "3342190a-03fc-4f3c-b831-80b0f18a0bad",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"f6e150d3-d971-4572-a66d-9efe2beb2896": {
"id": "f6e150d3-d971-4572-a66d-9efe2beb2896",
"alias": "start_permitted",
"name": "OA Start permitted",
"description": "",
"parent": "4c3d0157-6569-4c0a-93a2-b2467b00075a",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Branch": {
"guard": "permitted",
"occurrences": [
"6e51da84-0808-46a2-863b-048083889f7a",
"ac518f32-e9c2-4a6e-9afd-da1955ee7ea9",
"98a650aa-6d43-4d62-bc2f-45c9c2cc2f59"
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
}
},
"relations": {},
"diagrams": {},
"artifact_links": {},
"traces": {
"46195e23-864f-4df0-8e27-79da910fafd2": {
"id": "46195e23-864f-4df0-8e27-79da910fafd2",
"alias": "startup_order_review",
"name": "Startup branch steps order review",
"description": "",
"oa": "f6e150d3-d971-4572-a66d-9efe2beb2896",
"sa": "3342190a-03fc-4f3c-b831-80b0f18a0bad",
"kind": "Manual",
"baseline": {
"oa": {
"name": "OA Start permitted",
"description": ""
},
"sa": {
"name": "SA Start permitted",
"description": ""
},
"semantic": {
"facets": [
{
"Member": {
"collection": "Steps",
"keys": {
"oa": "ac518f32-e9c2-4a6e-9afd-da1955ee7ea9",
"sa": "1e11083d-6936-4730-b013-f2d8a827227d"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": false
}
}
}
}
]
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"direction": "OaToSa",
"facet": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "ac518f32-e9c2-4a6e-9afd-da1955ee7ea9",
"sa": "1e11083d-6936-4730-b013-f2d8a827227d"
}
}
},
"final_order": [
"e658f0ca-014e-4043-980e-19a663b7ceea",
"1d12e648-66ba-4ce4-93fe-332792ecf67a",
"1e11083d-6936-4730-b013-f2d8a827227d",
"d9d631f7-5f2c-47f7-a130-4151fd27dbfd"
],
"rows": [
[
"6e51da84-0808-46a2-863b-048083889f7a",
"98a650aa-6d43-4d62-bc2f-45c9c2cc2f59",
"ac518f32-e9c2-4a6e-9afd-da1955ee7ea9",
"ba7d497c-bc43-42af-b77b-19d7b7be5f68"
],
[
"e658f0ca-014e-4043-980e-19a663b7ceea",
"d9d631f7-5f2c-47f7-a130-4151fd27dbfd",
"1e11083d-6936-4730-b013-f2d8a827227d",
"1d12e648-66ba-4ce4-93fe-332792ecf67a"
]
],
"source": "f6e150d3-d971-4572-a66d-9efe2beb2896",
"target": "3342190a-03fc-4f3c-b831-80b0f18a0bad",
"trace": "46195e23-864f-4df0-8e27-79da910fafd2",
"trace_name": "Startup branch steps order review"
}
@@ -0,0 +1,205 @@
// Preserve the authored startup order rationale.
arcadia 5;
project mission "Startup fragment branches order review" id "434e19a9-346b-4fdb-a624-fea060111454" {
description "";
sa_occurrence alternatives_0d05b2d3 "SA Alternatives" id "0d05b2d3-be70-41bb-917f-8c53f066b254" {
body {
Fragment {
branches [@request_start_d69b7042, @local_self_test_d4fe64ec, @verify_interlock_bbeca6cb, @energize_8dfa448e];
operator Alternative;
};
};
description "";
parent @startup_scenario_ed63e299;
postcondition "";
precondition "";
}
oa_occurrence local_self_test "OA Local self-test" id "24cb59a8-f214-4a39-81d9-9c1c33398572" {
body {
Branch {
guard "Local self-test";
occurrences [];
};
};
description "";
parent @alternatives;
postcondition "";
precondition "";
}
oa_scenario startup_scenario "OA Startup scenario" id "33cd48ac-c8fa-46bd-b953-a12d8fd42f55" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@alternatives];
viewpoint OperationalActivity;
}
oa_occurrence verify_interlock "OA Verify interlock" id "5c1f1934-f363-4624-b7a3-84903c160ab0" {
body {
Branch {
guard "Verify interlock";
occurrences [];
};
};
description "";
parent @alternatives;
postcondition "";
precondition "";
}
oa_occurrence energize "OA Energize" id "5d32fe3a-17c5-46cf-ace3-6f4a3258d2fd" {
body {
Branch {
guard "Energize";
occurrences [];
};
};
description "";
parent @alternatives;
postcondition "";
precondition "";
}
sa_occurrence energize_8dfa448e "SA Energize" id "8dfa448e-ea97-4e5e-8b48-4d16b6c3f3c6" {
body {
Branch {
guard "Energize";
occurrences [];
};
};
description "";
parent @alternatives_0d05b2d3;
postcondition "";
precondition "";
}
oa_occurrence alternatives "OA Alternatives" id "b0b25d32-db6f-47c2-86e4-36f1cc111c6a" {
body {
Fragment {
branches [@request_start, @verify_interlock, @energize];
operator Alternative;
};
};
description "";
parent @startup_scenario;
postcondition "";
precondition "";
}
oa_occurrence request_start "OA Request start" id "ba27908d-3a78-4736-9909-f4f4b428d3cc" {
body {
Branch {
guard "Request start";
occurrences [];
};
};
description "";
parent @alternatives;
postcondition "";
precondition "";
}
sa_occurrence verify_interlock_bbeca6cb "SA Verify interlock" id "bbeca6cb-27d0-4a35-8456-3424223e07c9" {
body {
Branch {
guard "Verify interlock";
occurrences [];
};
};
description "";
parent @alternatives_0d05b2d3;
postcondition "";
precondition "";
}
sa_occurrence local_self_test_d4fe64ec "SA Local self-test" id "d4fe64ec-f03f-4aff-878f-7b59ee203e5d" {
body {
Branch {
guard "Local self-test";
occurrences [];
};
};
description "";
parent @alternatives_0d05b2d3;
postcondition "";
precondition "";
}
sa_occurrence request_start_d69b7042 "SA Request start" id "d69b7042-4229-4c5e-96c7-dd54e5755a28" {
body {
Branch {
guard "Request start";
occurrences [];
};
};
description "";
parent @alternatives_0d05b2d3;
postcondition "";
precondition "";
}
sa_scenario startup_scenario_ed63e299 "SA Startup scenario" id "ed63e299-a764-4716-ba14-a7c5662075e2" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@alternatives_0d05b2d3];
viewpoint Functional;
}
trace startup_order_review "Startup fragment branches order review" id "4fdbe391-8ab5-4f03-b495-21c0e7289c15" {
baseline {
oa {
description "";
name "OA Alternatives";
};
sa {
description "";
name "SA Alternatives";
};
semantic {
facets [{
Member {
collection FragmentBranches;
keys {
oa uuid "5c1f1934-f363-4624-b7a3-84903c160ab0";
sa uuid "bbeca6cb-27d0-4a35-8456-3424223e07c9";
};
review {
oa {
Value true;
};
sa {
Value true;
};
};
};
},
{
Order {
collection FragmentBranches;
review {
oa {
Value [uuid "ba27908d-3a78-4736-9909-f4f4b428d3cc", uuid "5c1f1934-f363-4624-b7a3-84903c160ab0", uuid "5d32fe3a-17c5-46cf-ace3-6f4a3258d2fd"];
};
sa {
Value [uuid "d69b7042-4229-4c5e-96c7-dd54e5755a28", uuid "d4fe64ec-f03f-4aff-878f-7b59ee203e5d", uuid "bbeca6cb-27d0-4a35-8456-3424223e07c9", uuid "8dfa448e-ea97-4e5e-8b48-4d16b6c3f3c6"];
};
};
};
}];
};
};
description "";
kind Manual;
oa @alternatives;
sa @alternatives_0d05b2d3;
}
}
@@ -0,0 +1,359 @@
{
"schema_version": 5,
"id": "434e19a9-346b-4fdb-a624-fea060111454",
"alias": "mission",
"name": "Startup fragment branches order review",
"description": "",
"elements": {
"0d05b2d3-be70-41bb-917f-8c53f066b254": {
"id": "0d05b2d3-be70-41bb-917f-8c53f066b254",
"alias": "alternatives_0d05b2d3",
"name": "SA Alternatives",
"description": "",
"parent": "ed63e299-a764-4716-ba14-a7c5662075e2",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Fragment": {
"operator": "Alternative",
"branches": [
"d69b7042-4229-4c5e-96c7-dd54e5755a28",
"d4fe64ec-f03f-4aff-878f-7b59ee203e5d",
"bbeca6cb-27d0-4a35-8456-3424223e07c9",
"8dfa448e-ea97-4e5e-8b48-4d16b6c3f3c6"
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"24cb59a8-f214-4a39-81d9-9c1c33398572": {
"id": "24cb59a8-f214-4a39-81d9-9c1c33398572",
"alias": "local_self_test",
"name": "OA Local self-test",
"description": "",
"parent": "b0b25d32-db6f-47c2-86e4-36f1cc111c6a",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Branch": {
"guard": "Local self-test",
"occurrences": []
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"33cd48ac-c8fa-46bd-b953-a12d8fd42f55": {
"id": "33cd48ac-c8fa-46bd-b953-a12d8fd42f55",
"alias": "startup_scenario",
"name": "OA Startup scenario",
"description": "",
"parent": null,
"body": {
"Oa": {
"Shared": {
"Scenario": {
"viewpoint": "OperationalActivity",
"context": null,
"precondition": "",
"postcondition": "",
"steps": [
"b0b25d32-db6f-47c2-86e4-36f1cc111c6a"
]
}
}
}
}
},
"5c1f1934-f363-4624-b7a3-84903c160ab0": {
"id": "5c1f1934-f363-4624-b7a3-84903c160ab0",
"alias": "verify_interlock",
"name": "OA Verify interlock",
"description": "",
"parent": "b0b25d32-db6f-47c2-86e4-36f1cc111c6a",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Branch": {
"guard": "Verify interlock",
"occurrences": []
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"5d32fe3a-17c5-46cf-ace3-6f4a3258d2fd": {
"id": "5d32fe3a-17c5-46cf-ace3-6f4a3258d2fd",
"alias": "energize",
"name": "OA Energize",
"description": "",
"parent": "b0b25d32-db6f-47c2-86e4-36f1cc111c6a",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Branch": {
"guard": "Energize",
"occurrences": []
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"8dfa448e-ea97-4e5e-8b48-4d16b6c3f3c6": {
"id": "8dfa448e-ea97-4e5e-8b48-4d16b6c3f3c6",
"alias": "energize_8dfa448e",
"name": "SA Energize",
"description": "",
"parent": "0d05b2d3-be70-41bb-917f-8c53f066b254",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Branch": {
"guard": "Energize",
"occurrences": []
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"b0b25d32-db6f-47c2-86e4-36f1cc111c6a": {
"id": "b0b25d32-db6f-47c2-86e4-36f1cc111c6a",
"alias": "alternatives",
"name": "OA Alternatives",
"description": "",
"parent": "33cd48ac-c8fa-46bd-b953-a12d8fd42f55",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Fragment": {
"operator": "Alternative",
"branches": [
"ba27908d-3a78-4736-9909-f4f4b428d3cc",
"5c1f1934-f363-4624-b7a3-84903c160ab0",
"5d32fe3a-17c5-46cf-ace3-6f4a3258d2fd"
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"ba27908d-3a78-4736-9909-f4f4b428d3cc": {
"id": "ba27908d-3a78-4736-9909-f4f4b428d3cc",
"alias": "request_start",
"name": "OA Request start",
"description": "",
"parent": "b0b25d32-db6f-47c2-86e4-36f1cc111c6a",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Branch": {
"guard": "Request start",
"occurrences": []
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"bbeca6cb-27d0-4a35-8456-3424223e07c9": {
"id": "bbeca6cb-27d0-4a35-8456-3424223e07c9",
"alias": "verify_interlock_bbeca6cb",
"name": "SA Verify interlock",
"description": "",
"parent": "0d05b2d3-be70-41bb-917f-8c53f066b254",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Branch": {
"guard": "Verify interlock",
"occurrences": []
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"d4fe64ec-f03f-4aff-878f-7b59ee203e5d": {
"id": "d4fe64ec-f03f-4aff-878f-7b59ee203e5d",
"alias": "local_self_test_d4fe64ec",
"name": "SA Local self-test",
"description": "",
"parent": "0d05b2d3-be70-41bb-917f-8c53f066b254",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Branch": {
"guard": "Local self-test",
"occurrences": []
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"d69b7042-4229-4c5e-96c7-dd54e5755a28": {
"id": "d69b7042-4229-4c5e-96c7-dd54e5755a28",
"alias": "request_start_d69b7042",
"name": "SA Request start",
"description": "",
"parent": "0d05b2d3-be70-41bb-917f-8c53f066b254",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Branch": {
"guard": "Request start",
"occurrences": []
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"ed63e299-a764-4716-ba14-a7c5662075e2": {
"id": "ed63e299-a764-4716-ba14-a7c5662075e2",
"alias": "startup_scenario_ed63e299",
"name": "SA Startup scenario",
"description": "",
"parent": null,
"body": {
"Sa": {
"Shared": {
"Scenario": {
"viewpoint": "Functional",
"context": null,
"precondition": "",
"postcondition": "",
"steps": [
"0d05b2d3-be70-41bb-917f-8c53f066b254"
]
}
}
}
}
}
},
"relations": {},
"diagrams": {},
"artifact_links": {},
"traces": {
"4fdbe391-8ab5-4f03-b495-21c0e7289c15": {
"id": "4fdbe391-8ab5-4f03-b495-21c0e7289c15",
"alias": "startup_order_review",
"name": "Startup fragment branches order review",
"description": "",
"oa": "b0b25d32-db6f-47c2-86e4-36f1cc111c6a",
"sa": "0d05b2d3-be70-41bb-917f-8c53f066b254",
"kind": "Manual",
"baseline": {
"oa": {
"name": "OA Alternatives",
"description": ""
},
"sa": {
"name": "SA Alternatives",
"description": ""
},
"semantic": {
"facets": [
{
"Member": {
"collection": "FragmentBranches",
"keys": {
"oa": "5c1f1934-f363-4624-b7a3-84903c160ab0",
"sa": "bbeca6cb-27d0-4a35-8456-3424223e07c9"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
{
"Order": {
"collection": "FragmentBranches",
"review": {
"oa": {
"Value": [
"ba27908d-3a78-4736-9909-f4f4b428d3cc",
"5c1f1934-f363-4624-b7a3-84903c160ab0",
"5d32fe3a-17c5-46cf-ace3-6f4a3258d2fd"
]
},
"sa": {
"Value": [
"d69b7042-4229-4c5e-96c7-dd54e5755a28",
"d4fe64ec-f03f-4aff-878f-7b59ee203e5d",
"bbeca6cb-27d0-4a35-8456-3424223e07c9",
"8dfa448e-ea97-4e5e-8b48-4d16b6c3f3c6"
]
}
}
}
}
]
}
}
}
}
}
@@ -0,0 +1,50 @@
{
"transition": {
"direction": "OaToSa",
"sources": [
"b0b25d32-db6f-47c2-86e4-36f1cc111c6a"
],
"scope": "SelectedOnly",
"mappings": [
{
"source": "b0b25d32-db6f-47c2-86e4-36f1cc111c6a",
"target": "0d05b2d3-be70-41bb-917f-8c53f066b254",
"target_kind": null
}
],
"fields": [],
"resolutions": [],
"destination_diagram": null
},
"traces": {
"b0b25d32-db6f-47c2-86e4-36f1cc111c6a": "4fdbe391-8ab5-4f03-b495-21c0e7289c15"
},
"references": {
"5c1f1934-f363-4624-b7a3-84903c160ab0": "bbeca6cb-27d0-4a35-8456-3424223e07c9",
"5d32fe3a-17c5-46cf-ace3-6f4a3258d2fd": "8dfa448e-ea97-4e5e-8b48-4d16b6c3f3c6",
"b0b25d32-db6f-47c2-86e4-36f1cc111c6a": "0d05b2d3-be70-41bb-917f-8c53f066b254",
"ba27908d-3a78-4736-9909-f4f4b428d3cc": "d69b7042-4229-4c5e-96c7-dd54e5755a28"
},
"reviews": [
{
"source": "b0b25d32-db6f-47c2-86e4-36f1cc111c6a",
"resolutions": [
{
"facet": {
"Member": {
"collection": "FragmentBranches",
"keys": {
"oa": "5c1f1934-f363-4624-b7a3-84903c160ab0",
"sa": "bbeca6cb-27d0-4a35-8456-3424223e07c9"
}
}
},
"decision": "TakeSource"
}
],
"reset": []
}
],
"candidates": [],
"accepted_impacts": []
}
@@ -0,0 +1 @@
Ordered member insertion has no unique unchanged anchor; review an explicit final target order
@@ -0,0 +1,192 @@
// Preserve the authored startup order rationale.
arcadia 5;
project mission "Startup fragment branches order review" id "434e19a9-346b-4fdb-a624-fea060111454" {
description "";
sa_occurrence alternatives_0d05b2d3 "SA Alternatives" id "0d05b2d3-be70-41bb-917f-8c53f066b254" {
body {
Fragment {
branches [@request_start_d69b7042, @local_self_test_d4fe64ec, @energize_8dfa448e];
operator Alternative;
};
};
description "";
parent @startup_scenario_ed63e299;
postcondition "";
precondition "";
}
oa_occurrence local_self_test "OA Local self-test" id "24cb59a8-f214-4a39-81d9-9c1c33398572" {
body {
Branch {
guard "Local self-test";
occurrences [];
};
};
description "";
parent @alternatives;
postcondition "";
precondition "";
}
oa_scenario startup_scenario "OA Startup scenario" id "33cd48ac-c8fa-46bd-b953-a12d8fd42f55" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@alternatives];
viewpoint OperationalActivity;
}
oa_occurrence verify_interlock "OA Verify interlock" id "5c1f1934-f363-4624-b7a3-84903c160ab0" {
body {
Branch {
guard "Verify interlock";
occurrences [];
};
};
description "";
parent @alternatives;
postcondition "";
precondition "";
}
oa_occurrence energize "OA Energize" id "5d32fe3a-17c5-46cf-ace3-6f4a3258d2fd" {
body {
Branch {
guard "Energize";
occurrences [];
};
};
description "";
parent @alternatives;
postcondition "";
precondition "";
}
sa_occurrence energize_8dfa448e "SA Energize" id "8dfa448e-ea97-4e5e-8b48-4d16b6c3f3c6" {
body {
Branch {
guard "Energize";
occurrences [];
};
};
description "";
parent @alternatives_0d05b2d3;
postcondition "";
precondition "";
}
oa_occurrence alternatives "OA Alternatives" id "b0b25d32-db6f-47c2-86e4-36f1cc111c6a" {
body {
Fragment {
branches [@request_start, @verify_interlock, @energize];
operator Alternative;
};
};
description "";
parent @startup_scenario;
postcondition "";
precondition "";
}
oa_occurrence request_start "OA Request start" id "ba27908d-3a78-4736-9909-f4f4b428d3cc" {
body {
Branch {
guard "Request start";
occurrences [];
};
};
description "";
parent @alternatives;
postcondition "";
precondition "";
}
sa_occurrence verify_interlock_bbeca6cb "SA Verify interlock" id "bbeca6cb-27d0-4a35-8456-3424223e07c9" {
body {
Branch {
guard "Verify interlock";
occurrences [];
};
};
description "";
parent @alternatives_0d05b2d3;
postcondition "";
precondition "";
}
sa_occurrence local_self_test_d4fe64ec "SA Local self-test" id "d4fe64ec-f03f-4aff-878f-7b59ee203e5d" {
body {
Branch {
guard "Local self-test";
occurrences [];
};
};
description "";
parent @alternatives_0d05b2d3;
postcondition "";
precondition "";
}
sa_occurrence request_start_d69b7042 "SA Request start" id "d69b7042-4229-4c5e-96c7-dd54e5755a28" {
body {
Branch {
guard "Request start";
occurrences [];
};
};
description "";
parent @alternatives_0d05b2d3;
postcondition "";
precondition "";
}
sa_scenario startup_scenario_ed63e299 "SA Startup scenario" id "ed63e299-a764-4716-ba14-a7c5662075e2" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@alternatives_0d05b2d3];
viewpoint Functional;
}
trace startup_order_review "Startup fragment branches order review" id "4fdbe391-8ab5-4f03-b495-21c0e7289c15" {
baseline {
oa {
description "";
name "OA Alternatives";
};
sa {
description "";
name "SA Alternatives";
};
semantic {
facets [{
Member {
collection FragmentBranches;
keys {
oa uuid "5c1f1934-f363-4624-b7a3-84903c160ab0";
sa uuid "bbeca6cb-27d0-4a35-8456-3424223e07c9";
};
review {
oa {
Value true;
};
sa {
Value false;
};
};
};
}];
};
};
description "";
kind Manual;
oa @alternatives;
sa @alternatives_0d05b2d3;
}
}
@@ -0,0 +1,692 @@
{
"base_fingerprint": "25de14257e1b6081",
"request": {
"transition": {
"direction": "OaToSa",
"sources": [
"b0b25d32-db6f-47c2-86e4-36f1cc111c6a"
],
"scope": "SelectedOnly",
"mappings": [
{
"source": "b0b25d32-db6f-47c2-86e4-36f1cc111c6a",
"target": "0d05b2d3-be70-41bb-917f-8c53f066b254",
"target_kind": null
}
],
"fields": [],
"resolutions": [],
"destination_diagram": null
},
"traces": {
"b0b25d32-db6f-47c2-86e4-36f1cc111c6a": "4fdbe391-8ab5-4f03-b495-21c0e7289c15"
},
"references": {
"5c1f1934-f363-4624-b7a3-84903c160ab0": "bbeca6cb-27d0-4a35-8456-3424223e07c9",
"5d32fe3a-17c5-46cf-ace3-6f4a3258d2fd": "8dfa448e-ea97-4e5e-8b48-4d16b6c3f3c6",
"b0b25d32-db6f-47c2-86e4-36f1cc111c6a": "0d05b2d3-be70-41bb-917f-8c53f066b254",
"ba27908d-3a78-4736-9909-f4f4b428d3cc": "d69b7042-4229-4c5e-96c7-dd54e5755a28"
},
"reviews": [
{
"source": "b0b25d32-db6f-47c2-86e4-36f1cc111c6a",
"resolutions": [
{
"facet": {
"Member": {
"collection": "FragmentBranches",
"keys": {
"oa": "5c1f1934-f363-4624-b7a3-84903c160ab0",
"sa": "bbeca6cb-27d0-4a35-8456-3424223e07c9"
}
}
},
"decision": "TakeSource"
},
{
"facet": {
"Order": "FragmentBranches"
},
"decision": "Candidate"
}
],
"reset": []
}
],
"candidates": [
{
"Element": {
"id": "0d05b2d3-be70-41bb-917f-8c53f066b254",
"alias": "alternatives_0d05b2d3",
"name": "SA Alternatives",
"description": "",
"parent": "ed63e299-a764-4716-ba14-a7c5662075e2",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Fragment": {
"operator": "Alternative",
"branches": [
"d69b7042-4229-4c5e-96c7-dd54e5755a28",
"d4fe64ec-f03f-4aff-878f-7b59ee203e5d",
"bbeca6cb-27d0-4a35-8456-3424223e07c9",
"8dfa448e-ea97-4e5e-8b48-4d16b6c3f3c6"
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
}
}
],
"accepted_impacts": []
},
"transition": {
"base_fingerprint": "25de14257e1b6081",
"request": {
"direction": "OaToSa",
"sources": [
"b0b25d32-db6f-47c2-86e4-36f1cc111c6a"
],
"scope": "SelectedOnly",
"mappings": [
{
"source": "b0b25d32-db6f-47c2-86e4-36f1cc111c6a",
"target": "0d05b2d3-be70-41bb-917f-8c53f066b254",
"target_kind": null
}
],
"fields": [],
"resolutions": [],
"destination_diagram": null
},
"changes": [
{
"source": "b0b25d32-db6f-47c2-86e4-36f1cc111c6a",
"target": "0d05b2d3-be70-41bb-917f-8c53f066b254",
"action": "Reuse",
"fields": []
}
],
"conflicts": [],
"warnings": [
"Identify the SA system of interest."
],
"commands": []
},
"reviews": [
{
"source": "b0b25d32-db6f-47c2-86e4-36f1cc111c6a",
"target": "0d05b2d3-be70-41bb-917f-8c53f066b254",
"facets": [
{
"selector": {
"Header": "Name"
},
"current": {
"Header": {
"Name": {
"oa": {
"Value": "OA Alternatives"
},
"sa": {
"Value": "SA Alternatives"
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Header": "Description"
},
"current": {
"Header": {
"Description": {
"oa": {
"Value": ""
},
"sa": {
"Value": ""
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Header": "Parent"
},
"current": {
"Header": {
"Parent": {
"oa": {
"Value": "33cd48ac-c8fa-46bd-b953-a12d8fd42f55"
},
"sa": {
"Value": "ed63e299-a764-4716-ba14-a7c5662075e2"
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Occurrence": "Constructor"
},
"current": {
"Occurrence": {
"Constructor": {
"oa": {
"Value": "Fragment"
},
"sa": {
"Value": "Fragment"
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Occurrence": "Precondition"
},
"current": {
"Occurrence": {
"Precondition": {
"oa": {
"Value": ""
},
"sa": {
"Value": ""
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Occurrence": "Postcondition"
},
"current": {
"Occurrence": {
"Postcondition": {
"oa": {
"Value": ""
},
"sa": {
"Value": ""
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Occurrence": "FragmentOperator"
},
"current": {
"Occurrence": {
"FragmentOperator": {
"oa": {
"Value": "Alternative"
},
"sa": {
"Value": "Alternative"
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Member": {
"collection": "FragmentBranches",
"keys": {
"oa": null,
"sa": "d4fe64ec-f03f-4aff-878f-7b59ee203e5d"
}
}
},
"current": {
"Member": {
"collection": "FragmentBranches",
"keys": {
"oa": null,
"sa": "d4fe64ec-f03f-4aff-878f-7b59ee203e5d"
},
"review": {
"oa": {
"Value": false
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Member": {
"collection": "FragmentBranches",
"keys": {
"oa": "5c1f1934-f363-4624-b7a3-84903c160ab0",
"sa": "bbeca6cb-27d0-4a35-8456-3424223e07c9"
}
}
},
"current": {
"Member": {
"collection": "FragmentBranches",
"keys": {
"oa": "5c1f1934-f363-4624-b7a3-84903c160ab0",
"sa": "bbeca6cb-27d0-4a35-8456-3424223e07c9"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": false
}
}
}
},
"drift": "Unchanged"
},
{
"selector": {
"Member": {
"collection": "FragmentBranches",
"keys": {
"oa": "5d32fe3a-17c5-46cf-ace3-6f4a3258d2fd",
"sa": "8dfa448e-ea97-4e5e-8b48-4d16b6c3f3c6"
}
}
},
"current": {
"Member": {
"collection": "FragmentBranches",
"keys": {
"oa": "5d32fe3a-17c5-46cf-ace3-6f4a3258d2fd",
"sa": "8dfa448e-ea97-4e5e-8b48-4d16b6c3f3c6"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Member": {
"collection": "FragmentBranches",
"keys": {
"oa": "ba27908d-3a78-4736-9909-f4f4b428d3cc",
"sa": "d69b7042-4229-4c5e-96c7-dd54e5755a28"
}
}
},
"current": {
"Member": {
"collection": "FragmentBranches",
"keys": {
"oa": "ba27908d-3a78-4736-9909-f4f4b428d3cc",
"sa": "d69b7042-4229-4c5e-96c7-dd54e5755a28"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Order": "FragmentBranches"
},
"current": {
"Order": {
"collection": "FragmentBranches",
"review": {
"oa": {
"Value": [
"ba27908d-3a78-4736-9909-f4f4b428d3cc",
"5c1f1934-f363-4624-b7a3-84903c160ab0",
"5d32fe3a-17c5-46cf-ace3-6f4a3258d2fd"
]
},
"sa": {
"Value": [
"d69b7042-4229-4c5e-96c7-dd54e5755a28",
"d4fe64ec-f03f-4aff-878f-7b59ee203e5d",
"8dfa448e-ea97-4e5e-8b48-4d16b6c3f3c6"
]
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Child": {
"oa": null,
"sa": "d4fe64ec-f03f-4aff-878f-7b59ee203e5d"
}
},
"current": {
"Child": {
"keys": {
"oa": null,
"sa": "d4fe64ec-f03f-4aff-878f-7b59ee203e5d"
},
"review": {
"oa": {
"Value": false
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Child": {
"oa": "24cb59a8-f214-4a39-81d9-9c1c33398572",
"sa": null
}
},
"current": {
"Child": {
"keys": {
"oa": "24cb59a8-f214-4a39-81d9-9c1c33398572",
"sa": null
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": false
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Child": {
"oa": "5c1f1934-f363-4624-b7a3-84903c160ab0",
"sa": "bbeca6cb-27d0-4a35-8456-3424223e07c9"
}
},
"current": {
"Child": {
"keys": {
"oa": "5c1f1934-f363-4624-b7a3-84903c160ab0",
"sa": "bbeca6cb-27d0-4a35-8456-3424223e07c9"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Child": {
"oa": "5d32fe3a-17c5-46cf-ace3-6f4a3258d2fd",
"sa": "8dfa448e-ea97-4e5e-8b48-4d16b6c3f3c6"
}
},
"current": {
"Child": {
"keys": {
"oa": "5d32fe3a-17c5-46cf-ace3-6f4a3258d2fd",
"sa": "8dfa448e-ea97-4e5e-8b48-4d16b6c3f3c6"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Child": {
"oa": "ba27908d-3a78-4736-9909-f4f4b428d3cc",
"sa": "d69b7042-4229-4c5e-96c7-dd54e5755a28"
}
},
"current": {
"Child": {
"keys": {
"oa": "ba27908d-3a78-4736-9909-f4f4b428d3cc",
"sa": "d69b7042-4229-4c5e-96c7-dd54e5755a28"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
}
],
"acknowledged": [
{
"Member": {
"collection": "FragmentBranches",
"keys": {
"oa": "5c1f1934-f363-4624-b7a3-84903c160ab0",
"sa": "bbeca6cb-27d0-4a35-8456-3424223e07c9"
}
}
},
{
"Order": "FragmentBranches"
}
],
"retired": [],
"linked_impacts": [
{
"objects": {
"oa": "24cb59a8-f214-4a39-81d9-9c1c33398572",
"sa": null
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": "5c1f1934-f363-4624-b7a3-84903c160ab0",
"sa": "bbeca6cb-27d0-4a35-8456-3424223e07c9"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": "5d32fe3a-17c5-46cf-ace3-6f4a3258d2fd",
"sa": "8dfa448e-ea97-4e5e-8b48-4d16b6c3f3c6"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": "ba27908d-3a78-4736-9909-f4f4b428d3cc",
"sa": "d69b7042-4229-4c5e-96c7-dd54e5755a28"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": null,
"sa": "d4fe64ec-f03f-4aff-878f-7b59ee203e5d"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
}
]
}
],
"impacts": [],
"conflicts": [],
"commands": [
{
"EditElement": [
"0d05b2d3-be70-41bb-917f-8c53f066b254",
{
"id": "0d05b2d3-be70-41bb-917f-8c53f066b254",
"alias": "alternatives_0d05b2d3",
"name": "SA Alternatives",
"description": "",
"parent": "ed63e299-a764-4716-ba14-a7c5662075e2",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Fragment": {
"operator": "Alternative",
"branches": [
"d69b7042-4229-4c5e-96c7-dd54e5755a28",
"d4fe64ec-f03f-4aff-878f-7b59ee203e5d",
"bbeca6cb-27d0-4a35-8456-3424223e07c9",
"8dfa448e-ea97-4e5e-8b48-4d16b6c3f3c6"
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
}
]
},
{
"EditTrace": [
"4fdbe391-8ab5-4f03-b495-21c0e7289c15",
{
"id": "4fdbe391-8ab5-4f03-b495-21c0e7289c15",
"alias": "startup_order_review",
"name": "Startup fragment branches order review",
"description": "",
"oa": "b0b25d32-db6f-47c2-86e4-36f1cc111c6a",
"sa": "0d05b2d3-be70-41bb-917f-8c53f066b254",
"kind": "Manual",
"baseline": {
"oa": {
"name": "OA Alternatives",
"description": ""
},
"sa": {
"name": "SA Alternatives",
"description": ""
},
"semantic": {
"facets": [
{
"Member": {
"collection": "FragmentBranches",
"keys": {
"oa": "5c1f1934-f363-4624-b7a3-84903c160ab0",
"sa": "bbeca6cb-27d0-4a35-8456-3424223e07c9"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
{
"Order": {
"collection": "FragmentBranches",
"review": {
"oa": {
"Value": [
"ba27908d-3a78-4736-9909-f4f4b428d3cc",
"5c1f1934-f363-4624-b7a3-84903c160ab0",
"5d32fe3a-17c5-46cf-ace3-6f4a3258d2fd"
]
},
"sa": {
"Value": [
"d69b7042-4229-4c5e-96c7-dd54e5755a28",
"d4fe64ec-f03f-4aff-878f-7b59ee203e5d",
"bbeca6cb-27d0-4a35-8456-3424223e07c9",
"8dfa448e-ea97-4e5e-8b48-4d16b6c3f3c6"
]
}
}
}
}
]
}
}
}
]
}
],
"prepared_fingerprint": "3f71f2631dde9d35"
}
@@ -0,0 +1,87 @@
{
"transition": {
"direction": "OaToSa",
"sources": [
"b0b25d32-db6f-47c2-86e4-36f1cc111c6a"
],
"scope": "SelectedOnly",
"mappings": [
{
"source": "b0b25d32-db6f-47c2-86e4-36f1cc111c6a",
"target": "0d05b2d3-be70-41bb-917f-8c53f066b254",
"target_kind": null
}
],
"fields": [],
"resolutions": [],
"destination_diagram": null
},
"traces": {
"b0b25d32-db6f-47c2-86e4-36f1cc111c6a": "4fdbe391-8ab5-4f03-b495-21c0e7289c15"
},
"references": {
"5c1f1934-f363-4624-b7a3-84903c160ab0": "bbeca6cb-27d0-4a35-8456-3424223e07c9",
"5d32fe3a-17c5-46cf-ace3-6f4a3258d2fd": "8dfa448e-ea97-4e5e-8b48-4d16b6c3f3c6",
"b0b25d32-db6f-47c2-86e4-36f1cc111c6a": "0d05b2d3-be70-41bb-917f-8c53f066b254",
"ba27908d-3a78-4736-9909-f4f4b428d3cc": "d69b7042-4229-4c5e-96c7-dd54e5755a28"
},
"reviews": [
{
"source": "b0b25d32-db6f-47c2-86e4-36f1cc111c6a",
"resolutions": [
{
"facet": {
"Member": {
"collection": "FragmentBranches",
"keys": {
"oa": "5c1f1934-f363-4624-b7a3-84903c160ab0",
"sa": "bbeca6cb-27d0-4a35-8456-3424223e07c9"
}
}
},
"decision": "TakeSource"
},
{
"facet": {
"Order": "FragmentBranches"
},
"decision": "Candidate"
}
],
"reset": []
}
],
"candidates": [
{
"Element": {
"id": "0d05b2d3-be70-41bb-917f-8c53f066b254",
"alias": "alternatives_0d05b2d3",
"name": "SA Alternatives",
"description": "",
"parent": "ed63e299-a764-4716-ba14-a7c5662075e2",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Fragment": {
"operator": "Alternative",
"branches": [
"d69b7042-4229-4c5e-96c7-dd54e5755a28",
"d4fe64ec-f03f-4aff-878f-7b59ee203e5d",
"bbeca6cb-27d0-4a35-8456-3424223e07c9",
"8dfa448e-ea97-4e5e-8b48-4d16b6c3f3c6"
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
}
}
],
"accepted_impacts": []
}
@@ -0,0 +1,336 @@
{
"schema_version": 5,
"id": "434e19a9-346b-4fdb-a624-fea060111454",
"alias": "mission",
"name": "Startup fragment branches order review",
"description": "",
"elements": {
"0d05b2d3-be70-41bb-917f-8c53f066b254": {
"id": "0d05b2d3-be70-41bb-917f-8c53f066b254",
"alias": "alternatives_0d05b2d3",
"name": "SA Alternatives",
"description": "",
"parent": "ed63e299-a764-4716-ba14-a7c5662075e2",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Fragment": {
"operator": "Alternative",
"branches": [
"d69b7042-4229-4c5e-96c7-dd54e5755a28",
"d4fe64ec-f03f-4aff-878f-7b59ee203e5d",
"8dfa448e-ea97-4e5e-8b48-4d16b6c3f3c6"
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"24cb59a8-f214-4a39-81d9-9c1c33398572": {
"id": "24cb59a8-f214-4a39-81d9-9c1c33398572",
"alias": "local_self_test",
"name": "OA Local self-test",
"description": "",
"parent": "b0b25d32-db6f-47c2-86e4-36f1cc111c6a",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Branch": {
"guard": "Local self-test",
"occurrences": []
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"33cd48ac-c8fa-46bd-b953-a12d8fd42f55": {
"id": "33cd48ac-c8fa-46bd-b953-a12d8fd42f55",
"alias": "startup_scenario",
"name": "OA Startup scenario",
"description": "",
"parent": null,
"body": {
"Oa": {
"Shared": {
"Scenario": {
"viewpoint": "OperationalActivity",
"context": null,
"precondition": "",
"postcondition": "",
"steps": [
"b0b25d32-db6f-47c2-86e4-36f1cc111c6a"
]
}
}
}
}
},
"5c1f1934-f363-4624-b7a3-84903c160ab0": {
"id": "5c1f1934-f363-4624-b7a3-84903c160ab0",
"alias": "verify_interlock",
"name": "OA Verify interlock",
"description": "",
"parent": "b0b25d32-db6f-47c2-86e4-36f1cc111c6a",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Branch": {
"guard": "Verify interlock",
"occurrences": []
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"5d32fe3a-17c5-46cf-ace3-6f4a3258d2fd": {
"id": "5d32fe3a-17c5-46cf-ace3-6f4a3258d2fd",
"alias": "energize",
"name": "OA Energize",
"description": "",
"parent": "b0b25d32-db6f-47c2-86e4-36f1cc111c6a",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Branch": {
"guard": "Energize",
"occurrences": []
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"8dfa448e-ea97-4e5e-8b48-4d16b6c3f3c6": {
"id": "8dfa448e-ea97-4e5e-8b48-4d16b6c3f3c6",
"alias": "energize_8dfa448e",
"name": "SA Energize",
"description": "",
"parent": "0d05b2d3-be70-41bb-917f-8c53f066b254",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Branch": {
"guard": "Energize",
"occurrences": []
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"b0b25d32-db6f-47c2-86e4-36f1cc111c6a": {
"id": "b0b25d32-db6f-47c2-86e4-36f1cc111c6a",
"alias": "alternatives",
"name": "OA Alternatives",
"description": "",
"parent": "33cd48ac-c8fa-46bd-b953-a12d8fd42f55",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Fragment": {
"operator": "Alternative",
"branches": [
"ba27908d-3a78-4736-9909-f4f4b428d3cc",
"5c1f1934-f363-4624-b7a3-84903c160ab0",
"5d32fe3a-17c5-46cf-ace3-6f4a3258d2fd"
]
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"ba27908d-3a78-4736-9909-f4f4b428d3cc": {
"id": "ba27908d-3a78-4736-9909-f4f4b428d3cc",
"alias": "request_start",
"name": "OA Request start",
"description": "",
"parent": "b0b25d32-db6f-47c2-86e4-36f1cc111c6a",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Branch": {
"guard": "Request start",
"occurrences": []
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"bbeca6cb-27d0-4a35-8456-3424223e07c9": {
"id": "bbeca6cb-27d0-4a35-8456-3424223e07c9",
"alias": "verify_interlock_bbeca6cb",
"name": "SA Verify interlock",
"description": "",
"parent": "0d05b2d3-be70-41bb-917f-8c53f066b254",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Branch": {
"guard": "Verify interlock",
"occurrences": []
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"d4fe64ec-f03f-4aff-878f-7b59ee203e5d": {
"id": "d4fe64ec-f03f-4aff-878f-7b59ee203e5d",
"alias": "local_self_test_d4fe64ec",
"name": "SA Local self-test",
"description": "",
"parent": "0d05b2d3-be70-41bb-917f-8c53f066b254",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Branch": {
"guard": "Local self-test",
"occurrences": []
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"d69b7042-4229-4c5e-96c7-dd54e5755a28": {
"id": "d69b7042-4229-4c5e-96c7-dd54e5755a28",
"alias": "request_start_d69b7042",
"name": "SA Request start",
"description": "",
"parent": "0d05b2d3-be70-41bb-917f-8c53f066b254",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Branch": {
"guard": "Request start",
"occurrences": []
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"ed63e299-a764-4716-ba14-a7c5662075e2": {
"id": "ed63e299-a764-4716-ba14-a7c5662075e2",
"alias": "startup_scenario_ed63e299",
"name": "SA Startup scenario",
"description": "",
"parent": null,
"body": {
"Sa": {
"Shared": {
"Scenario": {
"viewpoint": "Functional",
"context": null,
"precondition": "",
"postcondition": "",
"steps": [
"0d05b2d3-be70-41bb-917f-8c53f066b254"
]
}
}
}
}
}
},
"relations": {},
"diagrams": {},
"artifact_links": {},
"traces": {
"4fdbe391-8ab5-4f03-b495-21c0e7289c15": {
"id": "4fdbe391-8ab5-4f03-b495-21c0e7289c15",
"alias": "startup_order_review",
"name": "Startup fragment branches order review",
"description": "",
"oa": "b0b25d32-db6f-47c2-86e4-36f1cc111c6a",
"sa": "0d05b2d3-be70-41bb-917f-8c53f066b254",
"kind": "Manual",
"baseline": {
"oa": {
"name": "OA Alternatives",
"description": ""
},
"sa": {
"name": "SA Alternatives",
"description": ""
},
"semantic": {
"facets": [
{
"Member": {
"collection": "FragmentBranches",
"keys": {
"oa": "5c1f1934-f363-4624-b7a3-84903c160ab0",
"sa": "bbeca6cb-27d0-4a35-8456-3424223e07c9"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": false
}
}
}
}
]
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"direction": "OaToSa",
"facet": {
"Member": {
"collection": "FragmentBranches",
"keys": {
"oa": "5c1f1934-f363-4624-b7a3-84903c160ab0",
"sa": "bbeca6cb-27d0-4a35-8456-3424223e07c9"
}
}
},
"final_order": [
"d69b7042-4229-4c5e-96c7-dd54e5755a28",
"d4fe64ec-f03f-4aff-878f-7b59ee203e5d",
"bbeca6cb-27d0-4a35-8456-3424223e07c9",
"8dfa448e-ea97-4e5e-8b48-4d16b6c3f3c6"
],
"rows": [
[
"ba27908d-3a78-4736-9909-f4f4b428d3cc",
"5d32fe3a-17c5-46cf-ace3-6f4a3258d2fd",
"5c1f1934-f363-4624-b7a3-84903c160ab0",
"24cb59a8-f214-4a39-81d9-9c1c33398572"
],
[
"d69b7042-4229-4c5e-96c7-dd54e5755a28",
"8dfa448e-ea97-4e5e-8b48-4d16b6c3f3c6",
"bbeca6cb-27d0-4a35-8456-3424223e07c9",
"d4fe64ec-f03f-4aff-878f-7b59ee203e5d"
]
],
"source": "b0b25d32-db6f-47c2-86e4-36f1cc111c6a",
"target": "0d05b2d3-be70-41bb-917f-8c53f066b254",
"trace": "4fdbe391-8ab5-4f03-b495-21c0e7289c15",
"trace_name": "Startup fragment branches order review"
}
@@ -0,0 +1,163 @@
// Preserve the authored startup order rationale.
arcadia 5;
project mission "Reverse startup sequence order review" id "1fd1cbe4-f318-494f-8a6b-e8952d43bfff" {
description "";
sa_occurrence request_start_216722e5 "SA Request start" id "216722e5-9b11-41b1-ac7f-6134ca7f097f" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence_746208c4;
postcondition "";
precondition "";
}
oa_occurrence request_start "OA Request start" id "4d7c8d97-6757-48d1-a4e7-aeef5f2d1df7" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence;
postcondition "";
precondition "";
}
oa_occurrence local_self_test "OA Local self-test" id "52b121e3-b352-4167-9025-079a7418de09" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence;
postcondition "";
precondition "";
}
oa_occurrence energize "OA Energize" id "5a03a9cc-b43c-4e0a-a657-c0a03c8cf6b5" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence;
postcondition "";
precondition "";
}
sa_functional_chain startup_sequence_746208c4 "SA Startup sequence" id "746208c4-d2cf-4637-a15d-a1b0008be222" {
description "";
parent none;
steps [@request_start_216722e5, @verify_interlock_853e4d13, @energize_bfe31d5e];
}
sa_occurrence local_self_test_8362cd43 "SA Local self-test" id "8362cd43-9b82-4bf5-b262-14c687219c3c" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence_746208c4;
postcondition "";
precondition "";
}
sa_occurrence verify_interlock_853e4d13 "SA Verify interlock" id "853e4d13-013c-42f9-97e8-6e86df728e7b" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence_746208c4;
postcondition "";
precondition "";
}
oa_occurrence verify_interlock "OA Verify interlock" id "b3645f15-0805-4886-ac00-cbc82cd5b15c" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence;
postcondition "";
precondition "";
}
sa_occurrence energize_bfe31d5e "SA Energize" id "bfe31d5e-14c8-418b-a3f2-75482e70d2c5" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence_746208c4;
postcondition "";
precondition "";
}
oa_process startup_sequence "OA Startup sequence" id "da61a4d8-cb1c-46c2-915e-69b35eccfde1" {
description "";
parent none;
steps [@request_start, @local_self_test, @verify_interlock, @energize];
}
trace startup_order_review "Reverse startup sequence order review" id "ff1f880b-5723-486a-86d2-56ec64858d58" {
baseline {
oa {
description "";
name "OA Startup sequence";
};
sa {
description "";
name "SA Startup sequence";
};
semantic {
facets [{
Member {
collection Steps;
keys {
oa uuid "b3645f15-0805-4886-ac00-cbc82cd5b15c";
sa uuid "853e4d13-013c-42f9-97e8-6e86df728e7b";
};
review {
oa {
Value true;
};
sa {
Value true;
};
};
};
},
{
Order {
collection Steps;
review {
oa {
Value [uuid "4d7c8d97-6757-48d1-a4e7-aeef5f2d1df7", uuid "52b121e3-b352-4167-9025-079a7418de09", uuid "b3645f15-0805-4886-ac00-cbc82cd5b15c", uuid "5a03a9cc-b43c-4e0a-a657-c0a03c8cf6b5"];
};
sa {
Value [uuid "216722e5-9b11-41b1-ac7f-6134ca7f097f", uuid "853e4d13-013c-42f9-97e8-6e86df728e7b", uuid "bfe31d5e-14c8-418b-a3f2-75482e70d2c5"];
};
};
};
}];
};
};
description "";
kind Manual;
oa @startup_sequence;
sa @startup_sequence_746208c4;
}
}
@@ -0,0 +1,289 @@
{
"schema_version": 5,
"id": "1fd1cbe4-f318-494f-8a6b-e8952d43bfff",
"alias": "mission",
"name": "Reverse startup sequence order review",
"description": "",
"elements": {
"216722e5-9b11-41b1-ac7f-6134ca7f097f": {
"id": "216722e5-9b11-41b1-ac7f-6134ca7f097f",
"alias": "request_start_216722e5",
"name": "SA Request start",
"description": "",
"parent": "746208c4-d2cf-4637-a15d-a1b0008be222",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"4d7c8d97-6757-48d1-a4e7-aeef5f2d1df7": {
"id": "4d7c8d97-6757-48d1-a4e7-aeef5f2d1df7",
"alias": "request_start",
"name": "OA Request start",
"description": "",
"parent": "da61a4d8-cb1c-46c2-915e-69b35eccfde1",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"52b121e3-b352-4167-9025-079a7418de09": {
"id": "52b121e3-b352-4167-9025-079a7418de09",
"alias": "local_self_test",
"name": "OA Local self-test",
"description": "",
"parent": "da61a4d8-cb1c-46c2-915e-69b35eccfde1",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"5a03a9cc-b43c-4e0a-a657-c0a03c8cf6b5": {
"id": "5a03a9cc-b43c-4e0a-a657-c0a03c8cf6b5",
"alias": "energize",
"name": "OA Energize",
"description": "",
"parent": "da61a4d8-cb1c-46c2-915e-69b35eccfde1",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"746208c4-d2cf-4637-a15d-a1b0008be222": {
"id": "746208c4-d2cf-4637-a15d-a1b0008be222",
"alias": "startup_sequence_746208c4",
"name": "SA Startup sequence",
"description": "",
"parent": null,
"body": {
"Sa": {
"FunctionalChain": {
"steps": [
"216722e5-9b11-41b1-ac7f-6134ca7f097f",
"853e4d13-013c-42f9-97e8-6e86df728e7b",
"bfe31d5e-14c8-418b-a3f2-75482e70d2c5"
]
}
}
}
},
"8362cd43-9b82-4bf5-b262-14c687219c3c": {
"id": "8362cd43-9b82-4bf5-b262-14c687219c3c",
"alias": "local_self_test_8362cd43",
"name": "SA Local self-test",
"description": "",
"parent": "746208c4-d2cf-4637-a15d-a1b0008be222",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"853e4d13-013c-42f9-97e8-6e86df728e7b": {
"id": "853e4d13-013c-42f9-97e8-6e86df728e7b",
"alias": "verify_interlock_853e4d13",
"name": "SA Verify interlock",
"description": "",
"parent": "746208c4-d2cf-4637-a15d-a1b0008be222",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"b3645f15-0805-4886-ac00-cbc82cd5b15c": {
"id": "b3645f15-0805-4886-ac00-cbc82cd5b15c",
"alias": "verify_interlock",
"name": "OA Verify interlock",
"description": "",
"parent": "da61a4d8-cb1c-46c2-915e-69b35eccfde1",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"bfe31d5e-14c8-418b-a3f2-75482e70d2c5": {
"id": "bfe31d5e-14c8-418b-a3f2-75482e70d2c5",
"alias": "energize_bfe31d5e",
"name": "SA Energize",
"description": "",
"parent": "746208c4-d2cf-4637-a15d-a1b0008be222",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"da61a4d8-cb1c-46c2-915e-69b35eccfde1": {
"id": "da61a4d8-cb1c-46c2-915e-69b35eccfde1",
"alias": "startup_sequence",
"name": "OA Startup sequence",
"description": "",
"parent": null,
"body": {
"Oa": {
"Process": {
"steps": [
"4d7c8d97-6757-48d1-a4e7-aeef5f2d1df7",
"52b121e3-b352-4167-9025-079a7418de09",
"b3645f15-0805-4886-ac00-cbc82cd5b15c",
"5a03a9cc-b43c-4e0a-a657-c0a03c8cf6b5"
]
}
}
}
}
},
"relations": {},
"diagrams": {},
"artifact_links": {},
"traces": {
"ff1f880b-5723-486a-86d2-56ec64858d58": {
"id": "ff1f880b-5723-486a-86d2-56ec64858d58",
"alias": "startup_order_review",
"name": "Reverse startup sequence order review",
"description": "",
"oa": "da61a4d8-cb1c-46c2-915e-69b35eccfde1",
"sa": "746208c4-d2cf-4637-a15d-a1b0008be222",
"kind": "Manual",
"baseline": {
"oa": {
"name": "OA Startup sequence",
"description": ""
},
"sa": {
"name": "SA Startup sequence",
"description": ""
},
"semantic": {
"facets": [
{
"Member": {
"collection": "Steps",
"keys": {
"oa": "b3645f15-0805-4886-ac00-cbc82cd5b15c",
"sa": "853e4d13-013c-42f9-97e8-6e86df728e7b"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
{
"Order": {
"collection": "Steps",
"review": {
"oa": {
"Value": [
"4d7c8d97-6757-48d1-a4e7-aeef5f2d1df7",
"52b121e3-b352-4167-9025-079a7418de09",
"b3645f15-0805-4886-ac00-cbc82cd5b15c",
"5a03a9cc-b43c-4e0a-a657-c0a03c8cf6b5"
]
},
"sa": {
"Value": [
"216722e5-9b11-41b1-ac7f-6134ca7f097f",
"853e4d13-013c-42f9-97e8-6e86df728e7b",
"bfe31d5e-14c8-418b-a3f2-75482e70d2c5"
]
}
}
}
}
]
}
}
}
}
}
@@ -0,0 +1,50 @@
{
"transition": {
"direction": "SaToOa",
"sources": [
"746208c4-d2cf-4637-a15d-a1b0008be222"
],
"scope": "SelectedOnly",
"mappings": [
{
"source": "746208c4-d2cf-4637-a15d-a1b0008be222",
"target": "da61a4d8-cb1c-46c2-915e-69b35eccfde1",
"target_kind": null
}
],
"fields": [],
"resolutions": [],
"destination_diagram": null
},
"traces": {
"746208c4-d2cf-4637-a15d-a1b0008be222": "ff1f880b-5723-486a-86d2-56ec64858d58"
},
"references": {
"4d7c8d97-6757-48d1-a4e7-aeef5f2d1df7": "216722e5-9b11-41b1-ac7f-6134ca7f097f",
"5a03a9cc-b43c-4e0a-a657-c0a03c8cf6b5": "bfe31d5e-14c8-418b-a3f2-75482e70d2c5",
"b3645f15-0805-4886-ac00-cbc82cd5b15c": "853e4d13-013c-42f9-97e8-6e86df728e7b",
"da61a4d8-cb1c-46c2-915e-69b35eccfde1": "746208c4-d2cf-4637-a15d-a1b0008be222"
},
"reviews": [
{
"source": "746208c4-d2cf-4637-a15d-a1b0008be222",
"resolutions": [
{
"facet": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "b3645f15-0805-4886-ac00-cbc82cd5b15c",
"sa": "853e4d13-013c-42f9-97e8-6e86df728e7b"
}
}
},
"decision": "TakeSource"
}
],
"reset": []
}
],
"candidates": [],
"accepted_impacts": []
}
@@ -0,0 +1 @@
Ordered member insertion has no unique unchanged anchor; review an explicit final target order
@@ -0,0 +1,150 @@
// Preserve the authored startup order rationale.
arcadia 5;
project mission "Reverse startup sequence order review" id "1fd1cbe4-f318-494f-8a6b-e8952d43bfff" {
description "";
sa_occurrence request_start_216722e5 "SA Request start" id "216722e5-9b11-41b1-ac7f-6134ca7f097f" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence_746208c4;
postcondition "";
precondition "";
}
oa_occurrence request_start "OA Request start" id "4d7c8d97-6757-48d1-a4e7-aeef5f2d1df7" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence;
postcondition "";
precondition "";
}
oa_occurrence local_self_test "OA Local self-test" id "52b121e3-b352-4167-9025-079a7418de09" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence;
postcondition "";
precondition "";
}
oa_occurrence energize "OA Energize" id "5a03a9cc-b43c-4e0a-a657-c0a03c8cf6b5" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence;
postcondition "";
precondition "";
}
sa_functional_chain startup_sequence_746208c4 "SA Startup sequence" id "746208c4-d2cf-4637-a15d-a1b0008be222" {
description "";
parent none;
steps [@request_start_216722e5, @verify_interlock_853e4d13, @energize_bfe31d5e];
}
sa_occurrence local_self_test_8362cd43 "SA Local self-test" id "8362cd43-9b82-4bf5-b262-14c687219c3c" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence_746208c4;
postcondition "";
precondition "";
}
sa_occurrence verify_interlock_853e4d13 "SA Verify interlock" id "853e4d13-013c-42f9-97e8-6e86df728e7b" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence_746208c4;
postcondition "";
precondition "";
}
oa_occurrence verify_interlock "OA Verify interlock" id "b3645f15-0805-4886-ac00-cbc82cd5b15c" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence;
postcondition "";
precondition "";
}
sa_occurrence energize_bfe31d5e "SA Energize" id "bfe31d5e-14c8-418b-a3f2-75482e70d2c5" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence_746208c4;
postcondition "";
precondition "";
}
oa_process startup_sequence "OA Startup sequence" id "da61a4d8-cb1c-46c2-915e-69b35eccfde1" {
description "";
parent none;
steps [@request_start, @local_self_test, @energize];
}
trace startup_order_review "Reverse startup sequence order review" id "ff1f880b-5723-486a-86d2-56ec64858d58" {
baseline {
oa {
description "";
name "OA Startup sequence";
};
sa {
description "";
name "SA Startup sequence";
};
semantic {
facets [{
Member {
collection Steps;
keys {
oa uuid "b3645f15-0805-4886-ac00-cbc82cd5b15c";
sa uuid "853e4d13-013c-42f9-97e8-6e86df728e7b";
};
review {
oa {
Value false;
};
sa {
Value true;
};
};
};
}];
};
};
description "";
kind Manual;
oa @startup_sequence;
sa @startup_sequence_746208c4;
}
}
@@ -0,0 +1,620 @@
{
"base_fingerprint": "2601871eae7d5b65",
"request": {
"transition": {
"direction": "SaToOa",
"sources": [
"746208c4-d2cf-4637-a15d-a1b0008be222"
],
"scope": "SelectedOnly",
"mappings": [
{
"source": "746208c4-d2cf-4637-a15d-a1b0008be222",
"target": "da61a4d8-cb1c-46c2-915e-69b35eccfde1",
"target_kind": null
}
],
"fields": [],
"resolutions": [],
"destination_diagram": null
},
"traces": {
"746208c4-d2cf-4637-a15d-a1b0008be222": "ff1f880b-5723-486a-86d2-56ec64858d58"
},
"references": {
"4d7c8d97-6757-48d1-a4e7-aeef5f2d1df7": "216722e5-9b11-41b1-ac7f-6134ca7f097f",
"5a03a9cc-b43c-4e0a-a657-c0a03c8cf6b5": "bfe31d5e-14c8-418b-a3f2-75482e70d2c5",
"b3645f15-0805-4886-ac00-cbc82cd5b15c": "853e4d13-013c-42f9-97e8-6e86df728e7b",
"da61a4d8-cb1c-46c2-915e-69b35eccfde1": "746208c4-d2cf-4637-a15d-a1b0008be222"
},
"reviews": [
{
"source": "746208c4-d2cf-4637-a15d-a1b0008be222",
"resolutions": [
{
"facet": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "b3645f15-0805-4886-ac00-cbc82cd5b15c",
"sa": "853e4d13-013c-42f9-97e8-6e86df728e7b"
}
}
},
"decision": "TakeSource"
},
{
"facet": {
"Order": "Steps"
},
"decision": "Candidate"
}
],
"reset": []
}
],
"candidates": [
{
"Element": {
"id": "da61a4d8-cb1c-46c2-915e-69b35eccfde1",
"alias": "startup_sequence",
"name": "OA Startup sequence",
"description": "",
"parent": null,
"body": {
"Oa": {
"Process": {
"steps": [
"4d7c8d97-6757-48d1-a4e7-aeef5f2d1df7",
"52b121e3-b352-4167-9025-079a7418de09",
"b3645f15-0805-4886-ac00-cbc82cd5b15c",
"5a03a9cc-b43c-4e0a-a657-c0a03c8cf6b5"
]
}
}
}
}
}
],
"accepted_impacts": []
},
"transition": {
"base_fingerprint": "2601871eae7d5b65",
"request": {
"direction": "SaToOa",
"sources": [
"746208c4-d2cf-4637-a15d-a1b0008be222"
],
"scope": "SelectedOnly",
"mappings": [
{
"source": "746208c4-d2cf-4637-a15d-a1b0008be222",
"target": "da61a4d8-cb1c-46c2-915e-69b35eccfde1",
"target_kind": null
}
],
"fields": [],
"resolutions": [],
"destination_diagram": null
},
"changes": [
{
"source": "746208c4-d2cf-4637-a15d-a1b0008be222",
"target": "da61a4d8-cb1c-46c2-915e-69b35eccfde1",
"action": "Reuse",
"fields": []
}
],
"conflicts": [],
"warnings": [
"Identify the SA system of interest.",
"Process/chain 'SA Startup sequence' has 3 start contributions; connect a clear entry/exit or review the intended independent paths.",
"Process/chain 'SA Startup sequence' has 3 end contributions; connect a clear entry/exit or review the intended independent paths.",
"Connect this contribution to its process/chain path.",
"Choice needs one incoming and at least two outgoing links; currently 0 incoming and 0 outgoing.",
"Connect this contribution to its process/chain path.",
"Choice needs one incoming and at least two outgoing links; currently 0 incoming and 0 outgoing.",
"Connect this contribution to its process/chain path.",
"Choice needs one incoming and at least two outgoing links; currently 0 incoming and 0 outgoing.",
"Add this occurrence to its owner's ordered steps.",
"Add this occurrence to its owner's ordered steps.",
"Process/chain 'OA Startup sequence' has 3 start contributions; connect a clear entry/exit or review the intended independent paths.",
"Process/chain 'OA Startup sequence' has 3 end contributions; connect a clear entry/exit or review the intended independent paths.",
"Connect this contribution to its process/chain path.",
"Choice needs one incoming and at least two outgoing links; currently 0 incoming and 0 outgoing.",
"Connect this contribution to its process/chain path.",
"Choice needs one incoming and at least two outgoing links; currently 0 incoming and 0 outgoing.",
"Connect this contribution to its process/chain path.",
"Choice needs one incoming and at least two outgoing links; currently 0 incoming and 0 outgoing."
],
"commands": []
},
"reviews": [
{
"source": "746208c4-d2cf-4637-a15d-a1b0008be222",
"target": "da61a4d8-cb1c-46c2-915e-69b35eccfde1",
"facets": [
{
"selector": {
"Header": "Name"
},
"current": {
"Header": {
"Name": {
"oa": {
"Value": "OA Startup sequence"
},
"sa": {
"Value": "SA Startup sequence"
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Header": "Description"
},
"current": {
"Header": {
"Description": {
"oa": {
"Value": ""
},
"sa": {
"Value": ""
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Header": "Parent"
},
"current": {
"Header": {
"Parent": {
"oa": {
"Value": null
},
"sa": {
"Value": null
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "4d7c8d97-6757-48d1-a4e7-aeef5f2d1df7",
"sa": "216722e5-9b11-41b1-ac7f-6134ca7f097f"
}
}
},
"current": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "4d7c8d97-6757-48d1-a4e7-aeef5f2d1df7",
"sa": "216722e5-9b11-41b1-ac7f-6134ca7f097f"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "52b121e3-b352-4167-9025-079a7418de09",
"sa": null
}
}
},
"current": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "52b121e3-b352-4167-9025-079a7418de09",
"sa": null
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": false
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "5a03a9cc-b43c-4e0a-a657-c0a03c8cf6b5",
"sa": "bfe31d5e-14c8-418b-a3f2-75482e70d2c5"
}
}
},
"current": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "5a03a9cc-b43c-4e0a-a657-c0a03c8cf6b5",
"sa": "bfe31d5e-14c8-418b-a3f2-75482e70d2c5"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "b3645f15-0805-4886-ac00-cbc82cd5b15c",
"sa": "853e4d13-013c-42f9-97e8-6e86df728e7b"
}
}
},
"current": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "b3645f15-0805-4886-ac00-cbc82cd5b15c",
"sa": "853e4d13-013c-42f9-97e8-6e86df728e7b"
},
"review": {
"oa": {
"Value": false
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unchanged"
},
{
"selector": {
"Order": "Steps"
},
"current": {
"Order": {
"collection": "Steps",
"review": {
"oa": {
"Value": [
"4d7c8d97-6757-48d1-a4e7-aeef5f2d1df7",
"52b121e3-b352-4167-9025-079a7418de09",
"5a03a9cc-b43c-4e0a-a657-c0a03c8cf6b5"
]
},
"sa": {
"Value": [
"216722e5-9b11-41b1-ac7f-6134ca7f097f",
"853e4d13-013c-42f9-97e8-6e86df728e7b",
"bfe31d5e-14c8-418b-a3f2-75482e70d2c5"
]
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Child": {
"oa": null,
"sa": "8362cd43-9b82-4bf5-b262-14c687219c3c"
}
},
"current": {
"Child": {
"keys": {
"oa": null,
"sa": "8362cd43-9b82-4bf5-b262-14c687219c3c"
},
"review": {
"oa": {
"Value": false
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Child": {
"oa": "4d7c8d97-6757-48d1-a4e7-aeef5f2d1df7",
"sa": "216722e5-9b11-41b1-ac7f-6134ca7f097f"
}
},
"current": {
"Child": {
"keys": {
"oa": "4d7c8d97-6757-48d1-a4e7-aeef5f2d1df7",
"sa": "216722e5-9b11-41b1-ac7f-6134ca7f097f"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Child": {
"oa": "52b121e3-b352-4167-9025-079a7418de09",
"sa": null
}
},
"current": {
"Child": {
"keys": {
"oa": "52b121e3-b352-4167-9025-079a7418de09",
"sa": null
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": false
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Child": {
"oa": "5a03a9cc-b43c-4e0a-a657-c0a03c8cf6b5",
"sa": "bfe31d5e-14c8-418b-a3f2-75482e70d2c5"
}
},
"current": {
"Child": {
"keys": {
"oa": "5a03a9cc-b43c-4e0a-a657-c0a03c8cf6b5",
"sa": "bfe31d5e-14c8-418b-a3f2-75482e70d2c5"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Child": {
"oa": "b3645f15-0805-4886-ac00-cbc82cd5b15c",
"sa": "853e4d13-013c-42f9-97e8-6e86df728e7b"
}
},
"current": {
"Child": {
"keys": {
"oa": "b3645f15-0805-4886-ac00-cbc82cd5b15c",
"sa": "853e4d13-013c-42f9-97e8-6e86df728e7b"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
}
],
"acknowledged": [
{
"Member": {
"collection": "Steps",
"keys": {
"oa": "b3645f15-0805-4886-ac00-cbc82cd5b15c",
"sa": "853e4d13-013c-42f9-97e8-6e86df728e7b"
}
}
},
{
"Order": "Steps"
}
],
"retired": [],
"linked_impacts": [
{
"objects": {
"oa": "4d7c8d97-6757-48d1-a4e7-aeef5f2d1df7",
"sa": "216722e5-9b11-41b1-ac7f-6134ca7f097f"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": "52b121e3-b352-4167-9025-079a7418de09",
"sa": null
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": "5a03a9cc-b43c-4e0a-a657-c0a03c8cf6b5",
"sa": "bfe31d5e-14c8-418b-a3f2-75482e70d2c5"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": "b3645f15-0805-4886-ac00-cbc82cd5b15c",
"sa": "853e4d13-013c-42f9-97e8-6e86df728e7b"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": null,
"sa": "8362cd43-9b82-4bf5-b262-14c687219c3c"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
}
]
}
],
"impacts": [],
"conflicts": [],
"commands": [
{
"EditElement": [
"da61a4d8-cb1c-46c2-915e-69b35eccfde1",
{
"id": "da61a4d8-cb1c-46c2-915e-69b35eccfde1",
"alias": "startup_sequence",
"name": "OA Startup sequence",
"description": "",
"parent": null,
"body": {
"Oa": {
"Process": {
"steps": [
"4d7c8d97-6757-48d1-a4e7-aeef5f2d1df7",
"52b121e3-b352-4167-9025-079a7418de09",
"b3645f15-0805-4886-ac00-cbc82cd5b15c",
"5a03a9cc-b43c-4e0a-a657-c0a03c8cf6b5"
]
}
}
}
}
]
},
{
"EditTrace": [
"ff1f880b-5723-486a-86d2-56ec64858d58",
{
"id": "ff1f880b-5723-486a-86d2-56ec64858d58",
"alias": "startup_order_review",
"name": "Reverse startup sequence order review",
"description": "",
"oa": "da61a4d8-cb1c-46c2-915e-69b35eccfde1",
"sa": "746208c4-d2cf-4637-a15d-a1b0008be222",
"kind": "Manual",
"baseline": {
"oa": {
"name": "OA Startup sequence",
"description": ""
},
"sa": {
"name": "SA Startup sequence",
"description": ""
},
"semantic": {
"facets": [
{
"Member": {
"collection": "Steps",
"keys": {
"oa": "b3645f15-0805-4886-ac00-cbc82cd5b15c",
"sa": "853e4d13-013c-42f9-97e8-6e86df728e7b"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
{
"Order": {
"collection": "Steps",
"review": {
"oa": {
"Value": [
"4d7c8d97-6757-48d1-a4e7-aeef5f2d1df7",
"52b121e3-b352-4167-9025-079a7418de09",
"b3645f15-0805-4886-ac00-cbc82cd5b15c",
"5a03a9cc-b43c-4e0a-a657-c0a03c8cf6b5"
]
},
"sa": {
"Value": [
"216722e5-9b11-41b1-ac7f-6134ca7f097f",
"853e4d13-013c-42f9-97e8-6e86df728e7b",
"bfe31d5e-14c8-418b-a3f2-75482e70d2c5"
]
}
}
}
}
]
}
}
}
]
}
],
"prepared_fingerprint": "5cf4abd1ecb52df5"
}
@@ -0,0 +1,78 @@
{
"transition": {
"direction": "SaToOa",
"sources": [
"746208c4-d2cf-4637-a15d-a1b0008be222"
],
"scope": "SelectedOnly",
"mappings": [
{
"source": "746208c4-d2cf-4637-a15d-a1b0008be222",
"target": "da61a4d8-cb1c-46c2-915e-69b35eccfde1",
"target_kind": null
}
],
"fields": [],
"resolutions": [],
"destination_diagram": null
},
"traces": {
"746208c4-d2cf-4637-a15d-a1b0008be222": "ff1f880b-5723-486a-86d2-56ec64858d58"
},
"references": {
"4d7c8d97-6757-48d1-a4e7-aeef5f2d1df7": "216722e5-9b11-41b1-ac7f-6134ca7f097f",
"5a03a9cc-b43c-4e0a-a657-c0a03c8cf6b5": "bfe31d5e-14c8-418b-a3f2-75482e70d2c5",
"b3645f15-0805-4886-ac00-cbc82cd5b15c": "853e4d13-013c-42f9-97e8-6e86df728e7b",
"da61a4d8-cb1c-46c2-915e-69b35eccfde1": "746208c4-d2cf-4637-a15d-a1b0008be222"
},
"reviews": [
{
"source": "746208c4-d2cf-4637-a15d-a1b0008be222",
"resolutions": [
{
"facet": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "b3645f15-0805-4886-ac00-cbc82cd5b15c",
"sa": "853e4d13-013c-42f9-97e8-6e86df728e7b"
}
}
},
"decision": "TakeSource"
},
{
"facet": {
"Order": "Steps"
},
"decision": "Candidate"
}
],
"reset": []
}
],
"candidates": [
{
"Element": {
"id": "da61a4d8-cb1c-46c2-915e-69b35eccfde1",
"alias": "startup_sequence",
"name": "OA Startup sequence",
"description": "",
"parent": null,
"body": {
"Oa": {
"Process": {
"steps": [
"4d7c8d97-6757-48d1-a4e7-aeef5f2d1df7",
"52b121e3-b352-4167-9025-079a7418de09",
"b3645f15-0805-4886-ac00-cbc82cd5b15c",
"5a03a9cc-b43c-4e0a-a657-c0a03c8cf6b5"
]
}
}
}
}
}
],
"accepted_impacts": []
}
@@ -0,0 +1,266 @@
{
"schema_version": 5,
"id": "1fd1cbe4-f318-494f-8a6b-e8952d43bfff",
"alias": "mission",
"name": "Reverse startup sequence order review",
"description": "",
"elements": {
"216722e5-9b11-41b1-ac7f-6134ca7f097f": {
"id": "216722e5-9b11-41b1-ac7f-6134ca7f097f",
"alias": "request_start_216722e5",
"name": "SA Request start",
"description": "",
"parent": "746208c4-d2cf-4637-a15d-a1b0008be222",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"4d7c8d97-6757-48d1-a4e7-aeef5f2d1df7": {
"id": "4d7c8d97-6757-48d1-a4e7-aeef5f2d1df7",
"alias": "request_start",
"name": "OA Request start",
"description": "",
"parent": "da61a4d8-cb1c-46c2-915e-69b35eccfde1",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"52b121e3-b352-4167-9025-079a7418de09": {
"id": "52b121e3-b352-4167-9025-079a7418de09",
"alias": "local_self_test",
"name": "OA Local self-test",
"description": "",
"parent": "da61a4d8-cb1c-46c2-915e-69b35eccfde1",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"5a03a9cc-b43c-4e0a-a657-c0a03c8cf6b5": {
"id": "5a03a9cc-b43c-4e0a-a657-c0a03c8cf6b5",
"alias": "energize",
"name": "OA Energize",
"description": "",
"parent": "da61a4d8-cb1c-46c2-915e-69b35eccfde1",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"746208c4-d2cf-4637-a15d-a1b0008be222": {
"id": "746208c4-d2cf-4637-a15d-a1b0008be222",
"alias": "startup_sequence_746208c4",
"name": "SA Startup sequence",
"description": "",
"parent": null,
"body": {
"Sa": {
"FunctionalChain": {
"steps": [
"216722e5-9b11-41b1-ac7f-6134ca7f097f",
"853e4d13-013c-42f9-97e8-6e86df728e7b",
"bfe31d5e-14c8-418b-a3f2-75482e70d2c5"
]
}
}
}
},
"8362cd43-9b82-4bf5-b262-14c687219c3c": {
"id": "8362cd43-9b82-4bf5-b262-14c687219c3c",
"alias": "local_self_test_8362cd43",
"name": "SA Local self-test",
"description": "",
"parent": "746208c4-d2cf-4637-a15d-a1b0008be222",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"853e4d13-013c-42f9-97e8-6e86df728e7b": {
"id": "853e4d13-013c-42f9-97e8-6e86df728e7b",
"alias": "verify_interlock_853e4d13",
"name": "SA Verify interlock",
"description": "",
"parent": "746208c4-d2cf-4637-a15d-a1b0008be222",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"b3645f15-0805-4886-ac00-cbc82cd5b15c": {
"id": "b3645f15-0805-4886-ac00-cbc82cd5b15c",
"alias": "verify_interlock",
"name": "OA Verify interlock",
"description": "",
"parent": "da61a4d8-cb1c-46c2-915e-69b35eccfde1",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"bfe31d5e-14c8-418b-a3f2-75482e70d2c5": {
"id": "bfe31d5e-14c8-418b-a3f2-75482e70d2c5",
"alias": "energize_bfe31d5e",
"name": "SA Energize",
"description": "",
"parent": "746208c4-d2cf-4637-a15d-a1b0008be222",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"da61a4d8-cb1c-46c2-915e-69b35eccfde1": {
"id": "da61a4d8-cb1c-46c2-915e-69b35eccfde1",
"alias": "startup_sequence",
"name": "OA Startup sequence",
"description": "",
"parent": null,
"body": {
"Oa": {
"Process": {
"steps": [
"4d7c8d97-6757-48d1-a4e7-aeef5f2d1df7",
"52b121e3-b352-4167-9025-079a7418de09",
"5a03a9cc-b43c-4e0a-a657-c0a03c8cf6b5"
]
}
}
}
}
},
"relations": {},
"diagrams": {},
"artifact_links": {},
"traces": {
"ff1f880b-5723-486a-86d2-56ec64858d58": {
"id": "ff1f880b-5723-486a-86d2-56ec64858d58",
"alias": "startup_order_review",
"name": "Reverse startup sequence order review",
"description": "",
"oa": "da61a4d8-cb1c-46c2-915e-69b35eccfde1",
"sa": "746208c4-d2cf-4637-a15d-a1b0008be222",
"kind": "Manual",
"baseline": {
"oa": {
"name": "OA Startup sequence",
"description": ""
},
"sa": {
"name": "SA Startup sequence",
"description": ""
},
"semantic": {
"facets": [
{
"Member": {
"collection": "Steps",
"keys": {
"oa": "b3645f15-0805-4886-ac00-cbc82cd5b15c",
"sa": "853e4d13-013c-42f9-97e8-6e86df728e7b"
},
"review": {
"oa": {
"Value": false
},
"sa": {
"Value": true
}
}
}
}
]
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"direction": "SaToOa",
"facet": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "b3645f15-0805-4886-ac00-cbc82cd5b15c",
"sa": "853e4d13-013c-42f9-97e8-6e86df728e7b"
}
}
},
"final_order": [
"4d7c8d97-6757-48d1-a4e7-aeef5f2d1df7",
"52b121e3-b352-4167-9025-079a7418de09",
"b3645f15-0805-4886-ac00-cbc82cd5b15c",
"5a03a9cc-b43c-4e0a-a657-c0a03c8cf6b5"
],
"rows": [
[
"4d7c8d97-6757-48d1-a4e7-aeef5f2d1df7",
"5a03a9cc-b43c-4e0a-a657-c0a03c8cf6b5",
"b3645f15-0805-4886-ac00-cbc82cd5b15c",
"52b121e3-b352-4167-9025-079a7418de09"
],
[
"216722e5-9b11-41b1-ac7f-6134ca7f097f",
"bfe31d5e-14c8-418b-a3f2-75482e70d2c5",
"853e4d13-013c-42f9-97e8-6e86df728e7b",
"8362cd43-9b82-4bf5-b262-14c687219c3c"
]
],
"source": "746208c4-d2cf-4637-a15d-a1b0008be222",
"target": "da61a4d8-cb1c-46c2-915e-69b35eccfde1",
"trace": "ff1f880b-5723-486a-86d2-56ec64858d58",
"trace_name": "Reverse startup sequence order review"
}
@@ -0,0 +1,179 @@
// Preserve the authored startup order rationale.
arcadia 5;
project mission "Startup scenario order review" id "44ee1446-6c83-46da-a0c7-7780d3719881" {
description "";
sa_occurrence energize_10ca3141 "SA Energize" id "10ca3141-0fec-4158-9bb4-020cac14fdfc" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @startup_scenario_9fe4d605;
postcondition "";
precondition "";
}
oa_occurrence request_start "OA Request start" id "1c0cb002-a7a5-4e6d-9e55-b37fa574e096" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @startup_scenario;
postcondition "";
precondition "";
}
oa_occurrence local_self_test "OA Local self-test" id "30abc877-03ba-4c5b-9222-3c51222f197a" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @startup_scenario;
postcondition "";
precondition "";
}
sa_occurrence request_start_8b82f67f "SA Request start" id "8b82f67f-c027-416d-9f8f-0d4057674b50" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @startup_scenario_9fe4d605;
postcondition "";
precondition "";
}
sa_scenario startup_scenario_9fe4d605 "SA Startup scenario" id "9fe4d605-5e9d-4486-bc5d-f0ec660a8601" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@request_start_8b82f67f, @local_self_test_de57a577, @verify_interlock_cedb45fb, @energize_10ca3141];
viewpoint Functional;
}
oa_occurrence energize "OA Energize" id "b3eaf78f-d793-433c-853b-4a27cdf0e809" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @startup_scenario;
postcondition "";
precondition "";
}
oa_scenario startup_scenario "OA Startup scenario" id "b82aea81-8e09-4436-8877-0a097d86a10a" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@request_start, @verify_interlock, @energize];
viewpoint OperationalActivity;
}
sa_occurrence verify_interlock_cedb45fb "SA Verify interlock" id "cedb45fb-83d2-4b6f-b812-51853b7dcaf7" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @startup_scenario_9fe4d605;
postcondition "";
precondition "";
}
oa_occurrence verify_interlock "OA Verify interlock" id "cfaa7b0f-3823-4a9b-a456-7bb31c233b55" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @startup_scenario;
postcondition "";
precondition "";
}
sa_occurrence local_self_test_de57a577 "SA Local self-test" id "de57a577-75f3-4bdc-a5d0-b09d44defde0" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @startup_scenario_9fe4d605;
postcondition "";
precondition "";
}
trace startup_order_review "Startup scenario order review" id "2cd537f1-fef4-4593-a5e9-c639fcc9fd97" {
baseline {
oa {
description "";
name "OA Startup scenario";
};
sa {
description "";
name "SA Startup scenario";
};
semantic {
facets [{
Member {
collection Steps;
keys {
oa uuid "cfaa7b0f-3823-4a9b-a456-7bb31c233b55";
sa uuid "cedb45fb-83d2-4b6f-b812-51853b7dcaf7";
};
review {
oa {
Value true;
};
sa {
Value true;
};
};
};
},
{
Order {
collection Steps;
review {
oa {
Value [uuid "1c0cb002-a7a5-4e6d-9e55-b37fa574e096", uuid "cfaa7b0f-3823-4a9b-a456-7bb31c233b55", uuid "b3eaf78f-d793-433c-853b-4a27cdf0e809"];
};
sa {
Value [uuid "8b82f67f-c027-416d-9f8f-0d4057674b50", uuid "de57a577-75f3-4bdc-a5d0-b09d44defde0", uuid "cedb45fb-83d2-4b6f-b812-51853b7dcaf7", uuid "10ca3141-0fec-4158-9bb4-020cac14fdfc"];
};
};
};
}];
};
};
description "";
kind Manual;
oa @startup_scenario;
sa @startup_scenario_9fe4d605;
}
}
@@ -0,0 +1,309 @@
{
"schema_version": 5,
"id": "44ee1446-6c83-46da-a0c7-7780d3719881",
"alias": "mission",
"name": "Startup scenario order review",
"description": "",
"elements": {
"10ca3141-0fec-4158-9bb4-020cac14fdfc": {
"id": "10ca3141-0fec-4158-9bb4-020cac14fdfc",
"alias": "energize_10ca3141",
"name": "SA Energize",
"description": "",
"parent": "9fe4d605-5e9d-4486-bc5d-f0ec660a8601",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"1c0cb002-a7a5-4e6d-9e55-b37fa574e096": {
"id": "1c0cb002-a7a5-4e6d-9e55-b37fa574e096",
"alias": "request_start",
"name": "OA Request start",
"description": "",
"parent": "b82aea81-8e09-4436-8877-0a097d86a10a",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"30abc877-03ba-4c5b-9222-3c51222f197a": {
"id": "30abc877-03ba-4c5b-9222-3c51222f197a",
"alias": "local_self_test",
"name": "OA Local self-test",
"description": "",
"parent": "b82aea81-8e09-4436-8877-0a097d86a10a",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"8b82f67f-c027-416d-9f8f-0d4057674b50": {
"id": "8b82f67f-c027-416d-9f8f-0d4057674b50",
"alias": "request_start_8b82f67f",
"name": "SA Request start",
"description": "",
"parent": "9fe4d605-5e9d-4486-bc5d-f0ec660a8601",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"9fe4d605-5e9d-4486-bc5d-f0ec660a8601": {
"id": "9fe4d605-5e9d-4486-bc5d-f0ec660a8601",
"alias": "startup_scenario_9fe4d605",
"name": "SA Startup scenario",
"description": "",
"parent": null,
"body": {
"Sa": {
"Shared": {
"Scenario": {
"viewpoint": "Functional",
"context": null,
"precondition": "",
"postcondition": "",
"steps": [
"8b82f67f-c027-416d-9f8f-0d4057674b50",
"de57a577-75f3-4bdc-a5d0-b09d44defde0",
"cedb45fb-83d2-4b6f-b812-51853b7dcaf7",
"10ca3141-0fec-4158-9bb4-020cac14fdfc"
]
}
}
}
}
},
"b3eaf78f-d793-433c-853b-4a27cdf0e809": {
"id": "b3eaf78f-d793-433c-853b-4a27cdf0e809",
"alias": "energize",
"name": "OA Energize",
"description": "",
"parent": "b82aea81-8e09-4436-8877-0a097d86a10a",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"b82aea81-8e09-4436-8877-0a097d86a10a": {
"id": "b82aea81-8e09-4436-8877-0a097d86a10a",
"alias": "startup_scenario",
"name": "OA Startup scenario",
"description": "",
"parent": null,
"body": {
"Oa": {
"Shared": {
"Scenario": {
"viewpoint": "OperationalActivity",
"context": null,
"precondition": "",
"postcondition": "",
"steps": [
"1c0cb002-a7a5-4e6d-9e55-b37fa574e096",
"cfaa7b0f-3823-4a9b-a456-7bb31c233b55",
"b3eaf78f-d793-433c-853b-4a27cdf0e809"
]
}
}
}
}
},
"cedb45fb-83d2-4b6f-b812-51853b7dcaf7": {
"id": "cedb45fb-83d2-4b6f-b812-51853b7dcaf7",
"alias": "verify_interlock_cedb45fb",
"name": "SA Verify interlock",
"description": "",
"parent": "9fe4d605-5e9d-4486-bc5d-f0ec660a8601",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"cfaa7b0f-3823-4a9b-a456-7bb31c233b55": {
"id": "cfaa7b0f-3823-4a9b-a456-7bb31c233b55",
"alias": "verify_interlock",
"name": "OA Verify interlock",
"description": "",
"parent": "b82aea81-8e09-4436-8877-0a097d86a10a",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"de57a577-75f3-4bdc-a5d0-b09d44defde0": {
"id": "de57a577-75f3-4bdc-a5d0-b09d44defde0",
"alias": "local_self_test_de57a577",
"name": "SA Local self-test",
"description": "",
"parent": "9fe4d605-5e9d-4486-bc5d-f0ec660a8601",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
}
},
"relations": {},
"diagrams": {},
"artifact_links": {},
"traces": {
"2cd537f1-fef4-4593-a5e9-c639fcc9fd97": {
"id": "2cd537f1-fef4-4593-a5e9-c639fcc9fd97",
"alias": "startup_order_review",
"name": "Startup scenario order review",
"description": "",
"oa": "b82aea81-8e09-4436-8877-0a097d86a10a",
"sa": "9fe4d605-5e9d-4486-bc5d-f0ec660a8601",
"kind": "Manual",
"baseline": {
"oa": {
"name": "OA Startup scenario",
"description": ""
},
"sa": {
"name": "SA Startup scenario",
"description": ""
},
"semantic": {
"facets": [
{
"Member": {
"collection": "Steps",
"keys": {
"oa": "cfaa7b0f-3823-4a9b-a456-7bb31c233b55",
"sa": "cedb45fb-83d2-4b6f-b812-51853b7dcaf7"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
{
"Order": {
"collection": "Steps",
"review": {
"oa": {
"Value": [
"1c0cb002-a7a5-4e6d-9e55-b37fa574e096",
"cfaa7b0f-3823-4a9b-a456-7bb31c233b55",
"b3eaf78f-d793-433c-853b-4a27cdf0e809"
]
},
"sa": {
"Value": [
"8b82f67f-c027-416d-9f8f-0d4057674b50",
"de57a577-75f3-4bdc-a5d0-b09d44defde0",
"cedb45fb-83d2-4b6f-b812-51853b7dcaf7",
"10ca3141-0fec-4158-9bb4-020cac14fdfc"
]
}
}
}
}
]
}
}
}
}
}
@@ -0,0 +1,50 @@
{
"transition": {
"direction": "OaToSa",
"sources": [
"b82aea81-8e09-4436-8877-0a097d86a10a"
],
"scope": "SelectedOnly",
"mappings": [
{
"source": "b82aea81-8e09-4436-8877-0a097d86a10a",
"target": "9fe4d605-5e9d-4486-bc5d-f0ec660a8601",
"target_kind": null
}
],
"fields": [],
"resolutions": [],
"destination_diagram": null
},
"traces": {
"b82aea81-8e09-4436-8877-0a097d86a10a": "2cd537f1-fef4-4593-a5e9-c639fcc9fd97"
},
"references": {
"1c0cb002-a7a5-4e6d-9e55-b37fa574e096": "8b82f67f-c027-416d-9f8f-0d4057674b50",
"b3eaf78f-d793-433c-853b-4a27cdf0e809": "10ca3141-0fec-4158-9bb4-020cac14fdfc",
"b82aea81-8e09-4436-8877-0a097d86a10a": "9fe4d605-5e9d-4486-bc5d-f0ec660a8601",
"cfaa7b0f-3823-4a9b-a456-7bb31c233b55": "cedb45fb-83d2-4b6f-b812-51853b7dcaf7"
},
"reviews": [
{
"source": "b82aea81-8e09-4436-8877-0a097d86a10a",
"resolutions": [
{
"facet": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "cfaa7b0f-3823-4a9b-a456-7bb31c233b55",
"sa": "cedb45fb-83d2-4b6f-b812-51853b7dcaf7"
}
}
},
"decision": "TakeSource"
}
],
"reset": []
}
],
"candidates": [],
"accepted_impacts": []
}
@@ -0,0 +1 @@
Ordered member insertion has no unique unchanged anchor; review an explicit final target order
@@ -0,0 +1,166 @@
// Preserve the authored startup order rationale.
arcadia 5;
project mission "Startup scenario order review" id "44ee1446-6c83-46da-a0c7-7780d3719881" {
description "";
sa_occurrence energize_10ca3141 "SA Energize" id "10ca3141-0fec-4158-9bb4-020cac14fdfc" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @startup_scenario_9fe4d605;
postcondition "";
precondition "";
}
oa_occurrence request_start "OA Request start" id "1c0cb002-a7a5-4e6d-9e55-b37fa574e096" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @startup_scenario;
postcondition "";
precondition "";
}
oa_occurrence local_self_test "OA Local self-test" id "30abc877-03ba-4c5b-9222-3c51222f197a" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @startup_scenario;
postcondition "";
precondition "";
}
sa_occurrence request_start_8b82f67f "SA Request start" id "8b82f67f-c027-416d-9f8f-0d4057674b50" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @startup_scenario_9fe4d605;
postcondition "";
precondition "";
}
sa_scenario startup_scenario_9fe4d605 "SA Startup scenario" id "9fe4d605-5e9d-4486-bc5d-f0ec660a8601" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@request_start_8b82f67f, @local_self_test_de57a577, @energize_10ca3141];
viewpoint Functional;
}
oa_occurrence energize "OA Energize" id "b3eaf78f-d793-433c-853b-4a27cdf0e809" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @startup_scenario;
postcondition "";
precondition "";
}
oa_scenario startup_scenario "OA Startup scenario" id "b82aea81-8e09-4436-8877-0a097d86a10a" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@request_start, @verify_interlock, @energize];
viewpoint OperationalActivity;
}
sa_occurrence verify_interlock_cedb45fb "SA Verify interlock" id "cedb45fb-83d2-4b6f-b812-51853b7dcaf7" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @startup_scenario_9fe4d605;
postcondition "";
precondition "";
}
oa_occurrence verify_interlock "OA Verify interlock" id "cfaa7b0f-3823-4a9b-a456-7bb31c233b55" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @startup_scenario;
postcondition "";
precondition "";
}
sa_occurrence local_self_test_de57a577 "SA Local self-test" id "de57a577-75f3-4bdc-a5d0-b09d44defde0" {
body {
Action {
action none;
lifeline none;
};
};
description "";
parent @startup_scenario_9fe4d605;
postcondition "";
precondition "";
}
trace startup_order_review "Startup scenario order review" id "2cd537f1-fef4-4593-a5e9-c639fcc9fd97" {
baseline {
oa {
description "";
name "OA Startup scenario";
};
sa {
description "";
name "SA Startup scenario";
};
semantic {
facets [{
Member {
collection Steps;
keys {
oa uuid "cfaa7b0f-3823-4a9b-a456-7bb31c233b55";
sa uuid "cedb45fb-83d2-4b6f-b812-51853b7dcaf7";
};
review {
oa {
Value true;
};
sa {
Value false;
};
};
};
}];
};
};
description "";
kind Manual;
oa @startup_scenario;
sa @startup_scenario_9fe4d605;
}
}
@@ -0,0 +1,704 @@
{
"base_fingerprint": "3af87e50a39fbaae",
"request": {
"transition": {
"direction": "OaToSa",
"sources": [
"b82aea81-8e09-4436-8877-0a097d86a10a"
],
"scope": "SelectedOnly",
"mappings": [
{
"source": "b82aea81-8e09-4436-8877-0a097d86a10a",
"target": "9fe4d605-5e9d-4486-bc5d-f0ec660a8601",
"target_kind": null
}
],
"fields": [],
"resolutions": [],
"destination_diagram": null
},
"traces": {
"b82aea81-8e09-4436-8877-0a097d86a10a": "2cd537f1-fef4-4593-a5e9-c639fcc9fd97"
},
"references": {
"1c0cb002-a7a5-4e6d-9e55-b37fa574e096": "8b82f67f-c027-416d-9f8f-0d4057674b50",
"b3eaf78f-d793-433c-853b-4a27cdf0e809": "10ca3141-0fec-4158-9bb4-020cac14fdfc",
"b82aea81-8e09-4436-8877-0a097d86a10a": "9fe4d605-5e9d-4486-bc5d-f0ec660a8601",
"cfaa7b0f-3823-4a9b-a456-7bb31c233b55": "cedb45fb-83d2-4b6f-b812-51853b7dcaf7"
},
"reviews": [
{
"source": "b82aea81-8e09-4436-8877-0a097d86a10a",
"resolutions": [
{
"facet": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "cfaa7b0f-3823-4a9b-a456-7bb31c233b55",
"sa": "cedb45fb-83d2-4b6f-b812-51853b7dcaf7"
}
}
},
"decision": "TakeSource"
},
{
"facet": {
"Order": "Steps"
},
"decision": "Candidate"
}
],
"reset": []
}
],
"candidates": [
{
"Element": {
"id": "9fe4d605-5e9d-4486-bc5d-f0ec660a8601",
"alias": "startup_scenario_9fe4d605",
"name": "SA Startup scenario",
"description": "",
"parent": null,
"body": {
"Sa": {
"Shared": {
"Scenario": {
"viewpoint": "Functional",
"context": null,
"precondition": "",
"postcondition": "",
"steps": [
"8b82f67f-c027-416d-9f8f-0d4057674b50",
"de57a577-75f3-4bdc-a5d0-b09d44defde0",
"cedb45fb-83d2-4b6f-b812-51853b7dcaf7",
"10ca3141-0fec-4158-9bb4-020cac14fdfc"
]
}
}
}
}
}
}
],
"accepted_impacts": []
},
"transition": {
"base_fingerprint": "3af87e50a39fbaae",
"request": {
"direction": "OaToSa",
"sources": [
"b82aea81-8e09-4436-8877-0a097d86a10a"
],
"scope": "SelectedOnly",
"mappings": [
{
"source": "b82aea81-8e09-4436-8877-0a097d86a10a",
"target": "9fe4d605-5e9d-4486-bc5d-f0ec660a8601",
"target_kind": null
}
],
"fields": [],
"resolutions": [],
"destination_diagram": null
},
"changes": [
{
"source": "b82aea81-8e09-4436-8877-0a097d86a10a",
"target": "9fe4d605-5e9d-4486-bc5d-f0ec660a8601",
"action": "Reuse",
"fields": []
}
],
"conflicts": [],
"warnings": [
"Identify the SA system of interest.",
"Choose action.",
"Choose lifeline.",
"Choose action.",
"Choose lifeline.",
"Choose action.",
"Choose lifeline.",
"Add this occurrence to its owner's ordered steps.",
"Choose action.",
"Choose lifeline.",
"Choose action.",
"Choose lifeline.",
"Choose action.",
"Choose lifeline.",
"Add this occurrence to its owner's ordered steps.",
"Choose action.",
"Choose lifeline.",
"Choose action.",
"Choose lifeline."
],
"commands": []
},
"reviews": [
{
"source": "b82aea81-8e09-4436-8877-0a097d86a10a",
"target": "9fe4d605-5e9d-4486-bc5d-f0ec660a8601",
"facets": [
{
"selector": {
"Header": "Name"
},
"current": {
"Header": {
"Name": {
"oa": {
"Value": "OA Startup scenario"
},
"sa": {
"Value": "SA Startup scenario"
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Header": "Description"
},
"current": {
"Header": {
"Description": {
"oa": {
"Value": ""
},
"sa": {
"Value": ""
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Header": "Parent"
},
"current": {
"Header": {
"Parent": {
"oa": {
"Value": null
},
"sa": {
"Value": null
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Scenario": "Viewpoint"
},
"current": {
"Scenario": {
"Viewpoint": {
"oa": {
"Value": "OperationalActivity"
},
"sa": {
"Value": "Functional"
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Scenario": "Context"
},
"current": {
"Scenario": {
"Context": {
"oa": {
"Value": null
},
"sa": {
"Value": null
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Scenario": "Precondition"
},
"current": {
"Scenario": {
"Precondition": {
"oa": {
"Value": ""
},
"sa": {
"Value": ""
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Scenario": "Postcondition"
},
"current": {
"Scenario": {
"Postcondition": {
"oa": {
"Value": ""
},
"sa": {
"Value": ""
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Member": {
"collection": "Steps",
"keys": {
"oa": null,
"sa": "de57a577-75f3-4bdc-a5d0-b09d44defde0"
}
}
},
"current": {
"Member": {
"collection": "Steps",
"keys": {
"oa": null,
"sa": "de57a577-75f3-4bdc-a5d0-b09d44defde0"
},
"review": {
"oa": {
"Value": false
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "1c0cb002-a7a5-4e6d-9e55-b37fa574e096",
"sa": "8b82f67f-c027-416d-9f8f-0d4057674b50"
}
}
},
"current": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "1c0cb002-a7a5-4e6d-9e55-b37fa574e096",
"sa": "8b82f67f-c027-416d-9f8f-0d4057674b50"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "b3eaf78f-d793-433c-853b-4a27cdf0e809",
"sa": "10ca3141-0fec-4158-9bb4-020cac14fdfc"
}
}
},
"current": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "b3eaf78f-d793-433c-853b-4a27cdf0e809",
"sa": "10ca3141-0fec-4158-9bb4-020cac14fdfc"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "cfaa7b0f-3823-4a9b-a456-7bb31c233b55",
"sa": "cedb45fb-83d2-4b6f-b812-51853b7dcaf7"
}
}
},
"current": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "cfaa7b0f-3823-4a9b-a456-7bb31c233b55",
"sa": "cedb45fb-83d2-4b6f-b812-51853b7dcaf7"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": false
}
}
}
},
"drift": "Unchanged"
},
{
"selector": {
"Order": "Steps"
},
"current": {
"Order": {
"collection": "Steps",
"review": {
"oa": {
"Value": [
"1c0cb002-a7a5-4e6d-9e55-b37fa574e096",
"cfaa7b0f-3823-4a9b-a456-7bb31c233b55",
"b3eaf78f-d793-433c-853b-4a27cdf0e809"
]
},
"sa": {
"Value": [
"8b82f67f-c027-416d-9f8f-0d4057674b50",
"de57a577-75f3-4bdc-a5d0-b09d44defde0",
"10ca3141-0fec-4158-9bb4-020cac14fdfc"
]
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Child": {
"oa": null,
"sa": "de57a577-75f3-4bdc-a5d0-b09d44defde0"
}
},
"current": {
"Child": {
"keys": {
"oa": null,
"sa": "de57a577-75f3-4bdc-a5d0-b09d44defde0"
},
"review": {
"oa": {
"Value": false
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Child": {
"oa": "1c0cb002-a7a5-4e6d-9e55-b37fa574e096",
"sa": "8b82f67f-c027-416d-9f8f-0d4057674b50"
}
},
"current": {
"Child": {
"keys": {
"oa": "1c0cb002-a7a5-4e6d-9e55-b37fa574e096",
"sa": "8b82f67f-c027-416d-9f8f-0d4057674b50"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Child": {
"oa": "30abc877-03ba-4c5b-9222-3c51222f197a",
"sa": null
}
},
"current": {
"Child": {
"keys": {
"oa": "30abc877-03ba-4c5b-9222-3c51222f197a",
"sa": null
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": false
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Child": {
"oa": "b3eaf78f-d793-433c-853b-4a27cdf0e809",
"sa": "10ca3141-0fec-4158-9bb4-020cac14fdfc"
}
},
"current": {
"Child": {
"keys": {
"oa": "b3eaf78f-d793-433c-853b-4a27cdf0e809",
"sa": "10ca3141-0fec-4158-9bb4-020cac14fdfc"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Child": {
"oa": "cfaa7b0f-3823-4a9b-a456-7bb31c233b55",
"sa": "cedb45fb-83d2-4b6f-b812-51853b7dcaf7"
}
},
"current": {
"Child": {
"keys": {
"oa": "cfaa7b0f-3823-4a9b-a456-7bb31c233b55",
"sa": "cedb45fb-83d2-4b6f-b812-51853b7dcaf7"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
}
],
"acknowledged": [
{
"Member": {
"collection": "Steps",
"keys": {
"oa": "cfaa7b0f-3823-4a9b-a456-7bb31c233b55",
"sa": "cedb45fb-83d2-4b6f-b812-51853b7dcaf7"
}
}
},
{
"Order": "Steps"
}
],
"retired": [],
"linked_impacts": [
{
"objects": {
"oa": "1c0cb002-a7a5-4e6d-9e55-b37fa574e096",
"sa": "8b82f67f-c027-416d-9f8f-0d4057674b50"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": "30abc877-03ba-4c5b-9222-3c51222f197a",
"sa": null
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": "b3eaf78f-d793-433c-853b-4a27cdf0e809",
"sa": "10ca3141-0fec-4158-9bb4-020cac14fdfc"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": "cfaa7b0f-3823-4a9b-a456-7bb31c233b55",
"sa": "cedb45fb-83d2-4b6f-b812-51853b7dcaf7"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": null,
"sa": "de57a577-75f3-4bdc-a5d0-b09d44defde0"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
}
]
}
],
"impacts": [],
"conflicts": [],
"commands": [
{
"EditElement": [
"9fe4d605-5e9d-4486-bc5d-f0ec660a8601",
{
"id": "9fe4d605-5e9d-4486-bc5d-f0ec660a8601",
"alias": "startup_scenario_9fe4d605",
"name": "SA Startup scenario",
"description": "",
"parent": null,
"body": {
"Sa": {
"Shared": {
"Scenario": {
"viewpoint": "Functional",
"context": null,
"precondition": "",
"postcondition": "",
"steps": [
"8b82f67f-c027-416d-9f8f-0d4057674b50",
"de57a577-75f3-4bdc-a5d0-b09d44defde0",
"cedb45fb-83d2-4b6f-b812-51853b7dcaf7",
"10ca3141-0fec-4158-9bb4-020cac14fdfc"
]
}
}
}
}
}
]
},
{
"EditTrace": [
"2cd537f1-fef4-4593-a5e9-c639fcc9fd97",
{
"id": "2cd537f1-fef4-4593-a5e9-c639fcc9fd97",
"alias": "startup_order_review",
"name": "Startup scenario order review",
"description": "",
"oa": "b82aea81-8e09-4436-8877-0a097d86a10a",
"sa": "9fe4d605-5e9d-4486-bc5d-f0ec660a8601",
"kind": "Manual",
"baseline": {
"oa": {
"name": "OA Startup scenario",
"description": ""
},
"sa": {
"name": "SA Startup scenario",
"description": ""
},
"semantic": {
"facets": [
{
"Member": {
"collection": "Steps",
"keys": {
"oa": "cfaa7b0f-3823-4a9b-a456-7bb31c233b55",
"sa": "cedb45fb-83d2-4b6f-b812-51853b7dcaf7"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
{
"Order": {
"collection": "Steps",
"review": {
"oa": {
"Value": [
"1c0cb002-a7a5-4e6d-9e55-b37fa574e096",
"cfaa7b0f-3823-4a9b-a456-7bb31c233b55",
"b3eaf78f-d793-433c-853b-4a27cdf0e809"
]
},
"sa": {
"Value": [
"8b82f67f-c027-416d-9f8f-0d4057674b50",
"de57a577-75f3-4bdc-a5d0-b09d44defde0",
"cedb45fb-83d2-4b6f-b812-51853b7dcaf7",
"10ca3141-0fec-4158-9bb4-020cac14fdfc"
]
}
}
}
}
]
}
}
}
]
}
],
"prepared_fingerprint": "97cc6ac682b7d87b"
}
@@ -0,0 +1,84 @@
{
"transition": {
"direction": "OaToSa",
"sources": [
"b82aea81-8e09-4436-8877-0a097d86a10a"
],
"scope": "SelectedOnly",
"mappings": [
{
"source": "b82aea81-8e09-4436-8877-0a097d86a10a",
"target": "9fe4d605-5e9d-4486-bc5d-f0ec660a8601",
"target_kind": null
}
],
"fields": [],
"resolutions": [],
"destination_diagram": null
},
"traces": {
"b82aea81-8e09-4436-8877-0a097d86a10a": "2cd537f1-fef4-4593-a5e9-c639fcc9fd97"
},
"references": {
"1c0cb002-a7a5-4e6d-9e55-b37fa574e096": "8b82f67f-c027-416d-9f8f-0d4057674b50",
"b3eaf78f-d793-433c-853b-4a27cdf0e809": "10ca3141-0fec-4158-9bb4-020cac14fdfc",
"b82aea81-8e09-4436-8877-0a097d86a10a": "9fe4d605-5e9d-4486-bc5d-f0ec660a8601",
"cfaa7b0f-3823-4a9b-a456-7bb31c233b55": "cedb45fb-83d2-4b6f-b812-51853b7dcaf7"
},
"reviews": [
{
"source": "b82aea81-8e09-4436-8877-0a097d86a10a",
"resolutions": [
{
"facet": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "cfaa7b0f-3823-4a9b-a456-7bb31c233b55",
"sa": "cedb45fb-83d2-4b6f-b812-51853b7dcaf7"
}
}
},
"decision": "TakeSource"
},
{
"facet": {
"Order": "Steps"
},
"decision": "Candidate"
}
],
"reset": []
}
],
"candidates": [
{
"Element": {
"id": "9fe4d605-5e9d-4486-bc5d-f0ec660a8601",
"alias": "startup_scenario_9fe4d605",
"name": "SA Startup scenario",
"description": "",
"parent": null,
"body": {
"Sa": {
"Shared": {
"Scenario": {
"viewpoint": "Functional",
"context": null,
"precondition": "",
"postcondition": "",
"steps": [
"8b82f67f-c027-416d-9f8f-0d4057674b50",
"de57a577-75f3-4bdc-a5d0-b09d44defde0",
"cedb45fb-83d2-4b6f-b812-51853b7dcaf7",
"10ca3141-0fec-4158-9bb4-020cac14fdfc"
]
}
}
}
}
}
}
],
"accepted_impacts": []
}
@@ -0,0 +1,286 @@
{
"schema_version": 5,
"id": "44ee1446-6c83-46da-a0c7-7780d3719881",
"alias": "mission",
"name": "Startup scenario order review",
"description": "",
"elements": {
"10ca3141-0fec-4158-9bb4-020cac14fdfc": {
"id": "10ca3141-0fec-4158-9bb4-020cac14fdfc",
"alias": "energize_10ca3141",
"name": "SA Energize",
"description": "",
"parent": "9fe4d605-5e9d-4486-bc5d-f0ec660a8601",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"1c0cb002-a7a5-4e6d-9e55-b37fa574e096": {
"id": "1c0cb002-a7a5-4e6d-9e55-b37fa574e096",
"alias": "request_start",
"name": "OA Request start",
"description": "",
"parent": "b82aea81-8e09-4436-8877-0a097d86a10a",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"30abc877-03ba-4c5b-9222-3c51222f197a": {
"id": "30abc877-03ba-4c5b-9222-3c51222f197a",
"alias": "local_self_test",
"name": "OA Local self-test",
"description": "",
"parent": "b82aea81-8e09-4436-8877-0a097d86a10a",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"8b82f67f-c027-416d-9f8f-0d4057674b50": {
"id": "8b82f67f-c027-416d-9f8f-0d4057674b50",
"alias": "request_start_8b82f67f",
"name": "SA Request start",
"description": "",
"parent": "9fe4d605-5e9d-4486-bc5d-f0ec660a8601",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"9fe4d605-5e9d-4486-bc5d-f0ec660a8601": {
"id": "9fe4d605-5e9d-4486-bc5d-f0ec660a8601",
"alias": "startup_scenario_9fe4d605",
"name": "SA Startup scenario",
"description": "",
"parent": null,
"body": {
"Sa": {
"Shared": {
"Scenario": {
"viewpoint": "Functional",
"context": null,
"precondition": "",
"postcondition": "",
"steps": [
"8b82f67f-c027-416d-9f8f-0d4057674b50",
"de57a577-75f3-4bdc-a5d0-b09d44defde0",
"10ca3141-0fec-4158-9bb4-020cac14fdfc"
]
}
}
}
}
},
"b3eaf78f-d793-433c-853b-4a27cdf0e809": {
"id": "b3eaf78f-d793-433c-853b-4a27cdf0e809",
"alias": "energize",
"name": "OA Energize",
"description": "",
"parent": "b82aea81-8e09-4436-8877-0a097d86a10a",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"b82aea81-8e09-4436-8877-0a097d86a10a": {
"id": "b82aea81-8e09-4436-8877-0a097d86a10a",
"alias": "startup_scenario",
"name": "OA Startup scenario",
"description": "",
"parent": null,
"body": {
"Oa": {
"Shared": {
"Scenario": {
"viewpoint": "OperationalActivity",
"context": null,
"precondition": "",
"postcondition": "",
"steps": [
"1c0cb002-a7a5-4e6d-9e55-b37fa574e096",
"cfaa7b0f-3823-4a9b-a456-7bb31c233b55",
"b3eaf78f-d793-433c-853b-4a27cdf0e809"
]
}
}
}
}
},
"cedb45fb-83d2-4b6f-b812-51853b7dcaf7": {
"id": "cedb45fb-83d2-4b6f-b812-51853b7dcaf7",
"alias": "verify_interlock_cedb45fb",
"name": "SA Verify interlock",
"description": "",
"parent": "9fe4d605-5e9d-4486-bc5d-f0ec660a8601",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"cfaa7b0f-3823-4a9b-a456-7bb31c233b55": {
"id": "cfaa7b0f-3823-4a9b-a456-7bb31c233b55",
"alias": "verify_interlock",
"name": "OA Verify interlock",
"description": "",
"parent": "b82aea81-8e09-4436-8877-0a097d86a10a",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"de57a577-75f3-4bdc-a5d0-b09d44defde0": {
"id": "de57a577-75f3-4bdc-a5d0-b09d44defde0",
"alias": "local_self_test_de57a577",
"name": "SA Local self-test",
"description": "",
"parent": "9fe4d605-5e9d-4486-bc5d-f0ec660a8601",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Action": {
"action": null,
"lifeline": null
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
}
},
"relations": {},
"diagrams": {},
"artifact_links": {},
"traces": {
"2cd537f1-fef4-4593-a5e9-c639fcc9fd97": {
"id": "2cd537f1-fef4-4593-a5e9-c639fcc9fd97",
"alias": "startup_order_review",
"name": "Startup scenario order review",
"description": "",
"oa": "b82aea81-8e09-4436-8877-0a097d86a10a",
"sa": "9fe4d605-5e9d-4486-bc5d-f0ec660a8601",
"kind": "Manual",
"baseline": {
"oa": {
"name": "OA Startup scenario",
"description": ""
},
"sa": {
"name": "SA Startup scenario",
"description": ""
},
"semantic": {
"facets": [
{
"Member": {
"collection": "Steps",
"keys": {
"oa": "cfaa7b0f-3823-4a9b-a456-7bb31c233b55",
"sa": "cedb45fb-83d2-4b6f-b812-51853b7dcaf7"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": false
}
}
}
}
]
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"direction": "OaToSa",
"facet": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "cfaa7b0f-3823-4a9b-a456-7bb31c233b55",
"sa": "cedb45fb-83d2-4b6f-b812-51853b7dcaf7"
}
}
},
"final_order": [
"8b82f67f-c027-416d-9f8f-0d4057674b50",
"de57a577-75f3-4bdc-a5d0-b09d44defde0",
"cedb45fb-83d2-4b6f-b812-51853b7dcaf7",
"10ca3141-0fec-4158-9bb4-020cac14fdfc"
],
"rows": [
[
"1c0cb002-a7a5-4e6d-9e55-b37fa574e096",
"b3eaf78f-d793-433c-853b-4a27cdf0e809",
"cfaa7b0f-3823-4a9b-a456-7bb31c233b55",
"30abc877-03ba-4c5b-9222-3c51222f197a"
],
[
"8b82f67f-c027-416d-9f8f-0d4057674b50",
"10ca3141-0fec-4158-9bb4-020cac14fdfc",
"cedb45fb-83d2-4b6f-b812-51853b7dcaf7",
"de57a577-75f3-4bdc-a5d0-b09d44defde0"
]
],
"source": "b82aea81-8e09-4436-8877-0a097d86a10a",
"target": "9fe4d605-5e9d-4486-bc5d-f0ec660a8601",
"trace": "2cd537f1-fef4-4593-a5e9-c639fcc9fd97",
"trace_name": "Startup scenario order review"
}
@@ -0,0 +1,163 @@
// Preserve the authored startup order rationale.
arcadia 5;
project mission "Startup sequence order review" id "8a7844b3-69e7-49ec-9666-b63a588ed3c4" {
description "";
oa_occurrence verify_interlock "OA Verify interlock" id "068e2da6-5317-4b06-b0a0-ce8c1b5a26ca" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence;
postcondition "";
precondition "";
}
sa_occurrence request_start_1b9b6f58 "SA Request start" id "1b9b6f58-0944-47d4-9d34-caa0d0d1561f" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence_e5dbb9b6;
postcondition "";
precondition "";
}
sa_occurrence verify_interlock_80077b69 "SA Verify interlock" id "80077b69-a2e6-4858-96c3-88e98cbf06eb" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence_e5dbb9b6;
postcondition "";
precondition "";
}
oa_occurrence request_start "OA Request start" id "9b50280a-881e-4d45-9645-947e71943f65" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence;
postcondition "";
precondition "";
}
oa_process startup_sequence "OA Startup sequence" id "bd4e4ed5-a0a9-4394-bec0-85bb72434e0b" {
description "";
parent none;
steps [@request_start, @verify_interlock, @energize];
}
oa_occurrence energize "OA Energize" id "c18de06b-2519-416c-b559-43f940d817b7" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence;
postcondition "";
precondition "";
}
sa_occurrence energize_d2a66d07 "SA Energize" id "d2a66d07-6507-409b-a607-574684c6d146" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence_e5dbb9b6;
postcondition "";
precondition "";
}
oa_occurrence local_self_test "OA Local self-test" id "db59b8b6-c002-4b26-bd32-87dcf2e40bcd" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence;
postcondition "";
precondition "";
}
sa_functional_chain startup_sequence_e5dbb9b6 "SA Startup sequence" id "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d" {
description "";
parent none;
steps [@request_start_1b9b6f58, @local_self_test_fc5a0217, @verify_interlock_80077b69, @energize_d2a66d07];
}
sa_occurrence local_self_test_fc5a0217 "SA Local self-test" id "fc5a0217-9478-48c5-a83f-0c8edb6a81d1" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence_e5dbb9b6;
postcondition "";
precondition "";
}
trace startup_order_review "Startup sequence order review" id "f6f83133-4199-4d39-b968-cb9d30c8e387" {
baseline {
oa {
description "";
name "OA Startup sequence";
};
sa {
description "";
name "SA Startup sequence";
};
semantic {
facets [{
Member {
collection Steps;
keys {
oa uuid "068e2da6-5317-4b06-b0a0-ce8c1b5a26ca";
sa uuid "80077b69-a2e6-4858-96c3-88e98cbf06eb";
};
review {
oa {
Value true;
};
sa {
Value true;
};
};
};
},
{
Order {
collection Steps;
review {
oa {
Value [uuid "9b50280a-881e-4d45-9645-947e71943f65", uuid "068e2da6-5317-4b06-b0a0-ce8c1b5a26ca", uuid "c18de06b-2519-416c-b559-43f940d817b7"];
};
sa {
Value [uuid "1b9b6f58-0944-47d4-9d34-caa0d0d1561f", uuid "fc5a0217-9478-48c5-a83f-0c8edb6a81d1", uuid "80077b69-a2e6-4858-96c3-88e98cbf06eb", uuid "d2a66d07-6507-409b-a607-574684c6d146"];
};
};
};
}];
};
};
description "";
kind Manual;
oa @startup_sequence;
sa @startup_sequence_e5dbb9b6;
}
}
@@ -0,0 +1,289 @@
{
"schema_version": 5,
"id": "8a7844b3-69e7-49ec-9666-b63a588ed3c4",
"alias": "mission",
"name": "Startup sequence order review",
"description": "",
"elements": {
"068e2da6-5317-4b06-b0a0-ce8c1b5a26ca": {
"id": "068e2da6-5317-4b06-b0a0-ce8c1b5a26ca",
"alias": "verify_interlock",
"name": "OA Verify interlock",
"description": "",
"parent": "bd4e4ed5-a0a9-4394-bec0-85bb72434e0b",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"1b9b6f58-0944-47d4-9d34-caa0d0d1561f": {
"id": "1b9b6f58-0944-47d4-9d34-caa0d0d1561f",
"alias": "request_start_1b9b6f58",
"name": "SA Request start",
"description": "",
"parent": "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"80077b69-a2e6-4858-96c3-88e98cbf06eb": {
"id": "80077b69-a2e6-4858-96c3-88e98cbf06eb",
"alias": "verify_interlock_80077b69",
"name": "SA Verify interlock",
"description": "",
"parent": "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"9b50280a-881e-4d45-9645-947e71943f65": {
"id": "9b50280a-881e-4d45-9645-947e71943f65",
"alias": "request_start",
"name": "OA Request start",
"description": "",
"parent": "bd4e4ed5-a0a9-4394-bec0-85bb72434e0b",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"bd4e4ed5-a0a9-4394-bec0-85bb72434e0b": {
"id": "bd4e4ed5-a0a9-4394-bec0-85bb72434e0b",
"alias": "startup_sequence",
"name": "OA Startup sequence",
"description": "",
"parent": null,
"body": {
"Oa": {
"Process": {
"steps": [
"9b50280a-881e-4d45-9645-947e71943f65",
"068e2da6-5317-4b06-b0a0-ce8c1b5a26ca",
"c18de06b-2519-416c-b559-43f940d817b7"
]
}
}
}
},
"c18de06b-2519-416c-b559-43f940d817b7": {
"id": "c18de06b-2519-416c-b559-43f940d817b7",
"alias": "energize",
"name": "OA Energize",
"description": "",
"parent": "bd4e4ed5-a0a9-4394-bec0-85bb72434e0b",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"d2a66d07-6507-409b-a607-574684c6d146": {
"id": "d2a66d07-6507-409b-a607-574684c6d146",
"alias": "energize_d2a66d07",
"name": "SA Energize",
"description": "",
"parent": "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"db59b8b6-c002-4b26-bd32-87dcf2e40bcd": {
"id": "db59b8b6-c002-4b26-bd32-87dcf2e40bcd",
"alias": "local_self_test",
"name": "OA Local self-test",
"description": "",
"parent": "bd4e4ed5-a0a9-4394-bec0-85bb72434e0b",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d": {
"id": "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d",
"alias": "startup_sequence_e5dbb9b6",
"name": "SA Startup sequence",
"description": "",
"parent": null,
"body": {
"Sa": {
"FunctionalChain": {
"steps": [
"1b9b6f58-0944-47d4-9d34-caa0d0d1561f",
"fc5a0217-9478-48c5-a83f-0c8edb6a81d1",
"80077b69-a2e6-4858-96c3-88e98cbf06eb",
"d2a66d07-6507-409b-a607-574684c6d146"
]
}
}
}
},
"fc5a0217-9478-48c5-a83f-0c8edb6a81d1": {
"id": "fc5a0217-9478-48c5-a83f-0c8edb6a81d1",
"alias": "local_self_test_fc5a0217",
"name": "SA Local self-test",
"description": "",
"parent": "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
}
},
"relations": {},
"diagrams": {},
"artifact_links": {},
"traces": {
"f6f83133-4199-4d39-b968-cb9d30c8e387": {
"id": "f6f83133-4199-4d39-b968-cb9d30c8e387",
"alias": "startup_order_review",
"name": "Startup sequence order review",
"description": "",
"oa": "bd4e4ed5-a0a9-4394-bec0-85bb72434e0b",
"sa": "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d",
"kind": "Manual",
"baseline": {
"oa": {
"name": "OA Startup sequence",
"description": ""
},
"sa": {
"name": "SA Startup sequence",
"description": ""
},
"semantic": {
"facets": [
{
"Member": {
"collection": "Steps",
"keys": {
"oa": "068e2da6-5317-4b06-b0a0-ce8c1b5a26ca",
"sa": "80077b69-a2e6-4858-96c3-88e98cbf06eb"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
{
"Order": {
"collection": "Steps",
"review": {
"oa": {
"Value": [
"9b50280a-881e-4d45-9645-947e71943f65",
"068e2da6-5317-4b06-b0a0-ce8c1b5a26ca",
"c18de06b-2519-416c-b559-43f940d817b7"
]
},
"sa": {
"Value": [
"1b9b6f58-0944-47d4-9d34-caa0d0d1561f",
"fc5a0217-9478-48c5-a83f-0c8edb6a81d1",
"80077b69-a2e6-4858-96c3-88e98cbf06eb",
"d2a66d07-6507-409b-a607-574684c6d146"
]
}
}
}
}
]
}
}
}
}
}
@@ -0,0 +1,50 @@
{
"transition": {
"direction": "OaToSa",
"sources": [
"bd4e4ed5-a0a9-4394-bec0-85bb72434e0b"
],
"scope": "SelectedOnly",
"mappings": [
{
"source": "bd4e4ed5-a0a9-4394-bec0-85bb72434e0b",
"target": "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d",
"target_kind": null
}
],
"fields": [],
"resolutions": [],
"destination_diagram": null
},
"traces": {
"bd4e4ed5-a0a9-4394-bec0-85bb72434e0b": "f6f83133-4199-4d39-b968-cb9d30c8e387"
},
"references": {
"068e2da6-5317-4b06-b0a0-ce8c1b5a26ca": "80077b69-a2e6-4858-96c3-88e98cbf06eb",
"9b50280a-881e-4d45-9645-947e71943f65": "1b9b6f58-0944-47d4-9d34-caa0d0d1561f",
"bd4e4ed5-a0a9-4394-bec0-85bb72434e0b": "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d",
"c18de06b-2519-416c-b559-43f940d817b7": "d2a66d07-6507-409b-a607-574684c6d146"
},
"reviews": [
{
"source": "bd4e4ed5-a0a9-4394-bec0-85bb72434e0b",
"resolutions": [
{
"facet": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "068e2da6-5317-4b06-b0a0-ce8c1b5a26ca",
"sa": "80077b69-a2e6-4858-96c3-88e98cbf06eb"
}
}
},
"decision": "TakeSource"
}
],
"reset": []
}
],
"candidates": [],
"accepted_impacts": []
}
@@ -0,0 +1 @@
Ordered member insertion has no unique unchanged anchor; review an explicit final target order
@@ -0,0 +1,150 @@
// Preserve the authored startup order rationale.
arcadia 5;
project mission "Startup sequence order review" id "8a7844b3-69e7-49ec-9666-b63a588ed3c4" {
description "";
oa_occurrence verify_interlock "OA Verify interlock" id "068e2da6-5317-4b06-b0a0-ce8c1b5a26ca" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence;
postcondition "";
precondition "";
}
sa_occurrence request_start_1b9b6f58 "SA Request start" id "1b9b6f58-0944-47d4-9d34-caa0d0d1561f" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence_e5dbb9b6;
postcondition "";
precondition "";
}
sa_occurrence verify_interlock_80077b69 "SA Verify interlock" id "80077b69-a2e6-4858-96c3-88e98cbf06eb" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence_e5dbb9b6;
postcondition "";
precondition "";
}
oa_occurrence request_start "OA Request start" id "9b50280a-881e-4d45-9645-947e71943f65" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence;
postcondition "";
precondition "";
}
oa_process startup_sequence "OA Startup sequence" id "bd4e4ed5-a0a9-4394-bec0-85bb72434e0b" {
description "";
parent none;
steps [@request_start, @verify_interlock, @energize];
}
oa_occurrence energize "OA Energize" id "c18de06b-2519-416c-b559-43f940d817b7" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence;
postcondition "";
precondition "";
}
sa_occurrence energize_d2a66d07 "SA Energize" id "d2a66d07-6507-409b-a607-574684c6d146" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence_e5dbb9b6;
postcondition "";
precondition "";
}
oa_occurrence local_self_test "OA Local self-test" id "db59b8b6-c002-4b26-bd32-87dcf2e40bcd" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence;
postcondition "";
precondition "";
}
sa_functional_chain startup_sequence_e5dbb9b6 "SA Startup sequence" id "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d" {
description "";
parent none;
steps [@request_start_1b9b6f58, @local_self_test_fc5a0217, @energize_d2a66d07];
}
sa_occurrence local_self_test_fc5a0217 "SA Local self-test" id "fc5a0217-9478-48c5-a83f-0c8edb6a81d1" {
body {
Control {
kind Choice;
};
};
description "";
parent @startup_sequence_e5dbb9b6;
postcondition "";
precondition "";
}
trace startup_order_review "Startup sequence order review" id "f6f83133-4199-4d39-b968-cb9d30c8e387" {
baseline {
oa {
description "";
name "OA Startup sequence";
};
sa {
description "";
name "SA Startup sequence";
};
semantic {
facets [{
Member {
collection Steps;
keys {
oa uuid "068e2da6-5317-4b06-b0a0-ce8c1b5a26ca";
sa uuid "80077b69-a2e6-4858-96c3-88e98cbf06eb";
};
review {
oa {
Value true;
};
sa {
Value false;
};
};
};
}];
};
};
description "";
kind Manual;
oa @startup_sequence;
sa @startup_sequence_e5dbb9b6;
}
}
@@ -0,0 +1,620 @@
{
"base_fingerprint": "950c4cae7283ca98",
"request": {
"transition": {
"direction": "OaToSa",
"sources": [
"bd4e4ed5-a0a9-4394-bec0-85bb72434e0b"
],
"scope": "SelectedOnly",
"mappings": [
{
"source": "bd4e4ed5-a0a9-4394-bec0-85bb72434e0b",
"target": "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d",
"target_kind": null
}
],
"fields": [],
"resolutions": [],
"destination_diagram": null
},
"traces": {
"bd4e4ed5-a0a9-4394-bec0-85bb72434e0b": "f6f83133-4199-4d39-b968-cb9d30c8e387"
},
"references": {
"068e2da6-5317-4b06-b0a0-ce8c1b5a26ca": "80077b69-a2e6-4858-96c3-88e98cbf06eb",
"9b50280a-881e-4d45-9645-947e71943f65": "1b9b6f58-0944-47d4-9d34-caa0d0d1561f",
"bd4e4ed5-a0a9-4394-bec0-85bb72434e0b": "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d",
"c18de06b-2519-416c-b559-43f940d817b7": "d2a66d07-6507-409b-a607-574684c6d146"
},
"reviews": [
{
"source": "bd4e4ed5-a0a9-4394-bec0-85bb72434e0b",
"resolutions": [
{
"facet": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "068e2da6-5317-4b06-b0a0-ce8c1b5a26ca",
"sa": "80077b69-a2e6-4858-96c3-88e98cbf06eb"
}
}
},
"decision": "TakeSource"
},
{
"facet": {
"Order": "Steps"
},
"decision": "Candidate"
}
],
"reset": []
}
],
"candidates": [
{
"Element": {
"id": "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d",
"alias": "startup_sequence_e5dbb9b6",
"name": "SA Startup sequence",
"description": "",
"parent": null,
"body": {
"Sa": {
"FunctionalChain": {
"steps": [
"1b9b6f58-0944-47d4-9d34-caa0d0d1561f",
"fc5a0217-9478-48c5-a83f-0c8edb6a81d1",
"80077b69-a2e6-4858-96c3-88e98cbf06eb",
"d2a66d07-6507-409b-a607-574684c6d146"
]
}
}
}
}
}
],
"accepted_impacts": []
},
"transition": {
"base_fingerprint": "950c4cae7283ca98",
"request": {
"direction": "OaToSa",
"sources": [
"bd4e4ed5-a0a9-4394-bec0-85bb72434e0b"
],
"scope": "SelectedOnly",
"mappings": [
{
"source": "bd4e4ed5-a0a9-4394-bec0-85bb72434e0b",
"target": "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d",
"target_kind": null
}
],
"fields": [],
"resolutions": [],
"destination_diagram": null
},
"changes": [
{
"source": "bd4e4ed5-a0a9-4394-bec0-85bb72434e0b",
"target": "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d",
"action": "Reuse",
"fields": []
}
],
"conflicts": [],
"warnings": [
"Identify the SA system of interest.",
"Add this occurrence to its owner's ordered steps.",
"Process/chain 'OA Startup sequence' has 3 start contributions; connect a clear entry/exit or review the intended independent paths.",
"Process/chain 'OA Startup sequence' has 3 end contributions; connect a clear entry/exit or review the intended independent paths.",
"Connect this contribution to its process/chain path.",
"Choice needs one incoming and at least two outgoing links; currently 0 incoming and 0 outgoing.",
"Connect this contribution to its process/chain path.",
"Choice needs one incoming and at least two outgoing links; currently 0 incoming and 0 outgoing.",
"Connect this contribution to its process/chain path.",
"Choice needs one incoming and at least two outgoing links; currently 0 incoming and 0 outgoing.",
"Add this occurrence to its owner's ordered steps.",
"Process/chain 'SA Startup sequence' has 3 start contributions; connect a clear entry/exit or review the intended independent paths.",
"Process/chain 'SA Startup sequence' has 3 end contributions; connect a clear entry/exit or review the intended independent paths.",
"Connect this contribution to its process/chain path.",
"Choice needs one incoming and at least two outgoing links; currently 0 incoming and 0 outgoing.",
"Connect this contribution to its process/chain path.",
"Choice needs one incoming and at least two outgoing links; currently 0 incoming and 0 outgoing.",
"Connect this contribution to its process/chain path.",
"Choice needs one incoming and at least two outgoing links; currently 0 incoming and 0 outgoing."
],
"commands": []
},
"reviews": [
{
"source": "bd4e4ed5-a0a9-4394-bec0-85bb72434e0b",
"target": "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d",
"facets": [
{
"selector": {
"Header": "Name"
},
"current": {
"Header": {
"Name": {
"oa": {
"Value": "OA Startup sequence"
},
"sa": {
"Value": "SA Startup sequence"
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Header": "Description"
},
"current": {
"Header": {
"Description": {
"oa": {
"Value": ""
},
"sa": {
"Value": ""
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Header": "Parent"
},
"current": {
"Header": {
"Parent": {
"oa": {
"Value": null
},
"sa": {
"Value": null
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Member": {
"collection": "Steps",
"keys": {
"oa": null,
"sa": "fc5a0217-9478-48c5-a83f-0c8edb6a81d1"
}
}
},
"current": {
"Member": {
"collection": "Steps",
"keys": {
"oa": null,
"sa": "fc5a0217-9478-48c5-a83f-0c8edb6a81d1"
},
"review": {
"oa": {
"Value": false
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "068e2da6-5317-4b06-b0a0-ce8c1b5a26ca",
"sa": "80077b69-a2e6-4858-96c3-88e98cbf06eb"
}
}
},
"current": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "068e2da6-5317-4b06-b0a0-ce8c1b5a26ca",
"sa": "80077b69-a2e6-4858-96c3-88e98cbf06eb"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": false
}
}
}
},
"drift": "Unchanged"
},
{
"selector": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "9b50280a-881e-4d45-9645-947e71943f65",
"sa": "1b9b6f58-0944-47d4-9d34-caa0d0d1561f"
}
}
},
"current": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "9b50280a-881e-4d45-9645-947e71943f65",
"sa": "1b9b6f58-0944-47d4-9d34-caa0d0d1561f"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "c18de06b-2519-416c-b559-43f940d817b7",
"sa": "d2a66d07-6507-409b-a607-574684c6d146"
}
}
},
"current": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "c18de06b-2519-416c-b559-43f940d817b7",
"sa": "d2a66d07-6507-409b-a607-574684c6d146"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Order": "Steps"
},
"current": {
"Order": {
"collection": "Steps",
"review": {
"oa": {
"Value": [
"9b50280a-881e-4d45-9645-947e71943f65",
"068e2da6-5317-4b06-b0a0-ce8c1b5a26ca",
"c18de06b-2519-416c-b559-43f940d817b7"
]
},
"sa": {
"Value": [
"1b9b6f58-0944-47d4-9d34-caa0d0d1561f",
"fc5a0217-9478-48c5-a83f-0c8edb6a81d1",
"d2a66d07-6507-409b-a607-574684c6d146"
]
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Child": {
"oa": null,
"sa": "fc5a0217-9478-48c5-a83f-0c8edb6a81d1"
}
},
"current": {
"Child": {
"keys": {
"oa": null,
"sa": "fc5a0217-9478-48c5-a83f-0c8edb6a81d1"
},
"review": {
"oa": {
"Value": false
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Child": {
"oa": "068e2da6-5317-4b06-b0a0-ce8c1b5a26ca",
"sa": "80077b69-a2e6-4858-96c3-88e98cbf06eb"
}
},
"current": {
"Child": {
"keys": {
"oa": "068e2da6-5317-4b06-b0a0-ce8c1b5a26ca",
"sa": "80077b69-a2e6-4858-96c3-88e98cbf06eb"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Child": {
"oa": "9b50280a-881e-4d45-9645-947e71943f65",
"sa": "1b9b6f58-0944-47d4-9d34-caa0d0d1561f"
}
},
"current": {
"Child": {
"keys": {
"oa": "9b50280a-881e-4d45-9645-947e71943f65",
"sa": "1b9b6f58-0944-47d4-9d34-caa0d0d1561f"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Child": {
"oa": "c18de06b-2519-416c-b559-43f940d817b7",
"sa": "d2a66d07-6507-409b-a607-574684c6d146"
}
},
"current": {
"Child": {
"keys": {
"oa": "c18de06b-2519-416c-b559-43f940d817b7",
"sa": "d2a66d07-6507-409b-a607-574684c6d146"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
"drift": "Unreviewed"
},
{
"selector": {
"Child": {
"oa": "db59b8b6-c002-4b26-bd32-87dcf2e40bcd",
"sa": null
}
},
"current": {
"Child": {
"keys": {
"oa": "db59b8b6-c002-4b26-bd32-87dcf2e40bcd",
"sa": null
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": false
}
}
}
},
"drift": "Unreviewed"
}
],
"acknowledged": [
{
"Member": {
"collection": "Steps",
"keys": {
"oa": "068e2da6-5317-4b06-b0a0-ce8c1b5a26ca",
"sa": "80077b69-a2e6-4858-96c3-88e98cbf06eb"
}
}
},
{
"Order": "Steps"
}
],
"retired": [],
"linked_impacts": [
{
"objects": {
"oa": "068e2da6-5317-4b06-b0a0-ce8c1b5a26ca",
"sa": "80077b69-a2e6-4858-96c3-88e98cbf06eb"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": "9b50280a-881e-4d45-9645-947e71943f65",
"sa": "1b9b6f58-0944-47d4-9d34-caa0d0d1561f"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": "c18de06b-2519-416c-b559-43f940d817b7",
"sa": "d2a66d07-6507-409b-a607-574684c6d146"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": "db59b8b6-c002-4b26-bd32-87dcf2e40bcd",
"sa": null
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
},
{
"objects": {
"oa": null,
"sa": "fc5a0217-9478-48c5-a83f-0c8edb6a81d1"
},
"traces": [],
"drift": "Unreviewed",
"unreviewed": true
}
]
}
],
"impacts": [],
"conflicts": [],
"commands": [
{
"EditElement": [
"e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d",
{
"id": "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d",
"alias": "startup_sequence_e5dbb9b6",
"name": "SA Startup sequence",
"description": "",
"parent": null,
"body": {
"Sa": {
"FunctionalChain": {
"steps": [
"1b9b6f58-0944-47d4-9d34-caa0d0d1561f",
"fc5a0217-9478-48c5-a83f-0c8edb6a81d1",
"80077b69-a2e6-4858-96c3-88e98cbf06eb",
"d2a66d07-6507-409b-a607-574684c6d146"
]
}
}
}
}
]
},
{
"EditTrace": [
"f6f83133-4199-4d39-b968-cb9d30c8e387",
{
"id": "f6f83133-4199-4d39-b968-cb9d30c8e387",
"alias": "startup_order_review",
"name": "Startup sequence order review",
"description": "",
"oa": "bd4e4ed5-a0a9-4394-bec0-85bb72434e0b",
"sa": "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d",
"kind": "Manual",
"baseline": {
"oa": {
"name": "OA Startup sequence",
"description": ""
},
"sa": {
"name": "SA Startup sequence",
"description": ""
},
"semantic": {
"facets": [
{
"Member": {
"collection": "Steps",
"keys": {
"oa": "068e2da6-5317-4b06-b0a0-ce8c1b5a26ca",
"sa": "80077b69-a2e6-4858-96c3-88e98cbf06eb"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": true
}
}
}
},
{
"Order": {
"collection": "Steps",
"review": {
"oa": {
"Value": [
"9b50280a-881e-4d45-9645-947e71943f65",
"068e2da6-5317-4b06-b0a0-ce8c1b5a26ca",
"c18de06b-2519-416c-b559-43f940d817b7"
]
},
"sa": {
"Value": [
"1b9b6f58-0944-47d4-9d34-caa0d0d1561f",
"fc5a0217-9478-48c5-a83f-0c8edb6a81d1",
"80077b69-a2e6-4858-96c3-88e98cbf06eb",
"d2a66d07-6507-409b-a607-574684c6d146"
]
}
}
}
}
]
}
}
}
]
}
],
"prepared_fingerprint": "b722b25357f48adb"
}
@@ -0,0 +1,78 @@
{
"transition": {
"direction": "OaToSa",
"sources": [
"bd4e4ed5-a0a9-4394-bec0-85bb72434e0b"
],
"scope": "SelectedOnly",
"mappings": [
{
"source": "bd4e4ed5-a0a9-4394-bec0-85bb72434e0b",
"target": "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d",
"target_kind": null
}
],
"fields": [],
"resolutions": [],
"destination_diagram": null
},
"traces": {
"bd4e4ed5-a0a9-4394-bec0-85bb72434e0b": "f6f83133-4199-4d39-b968-cb9d30c8e387"
},
"references": {
"068e2da6-5317-4b06-b0a0-ce8c1b5a26ca": "80077b69-a2e6-4858-96c3-88e98cbf06eb",
"9b50280a-881e-4d45-9645-947e71943f65": "1b9b6f58-0944-47d4-9d34-caa0d0d1561f",
"bd4e4ed5-a0a9-4394-bec0-85bb72434e0b": "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d",
"c18de06b-2519-416c-b559-43f940d817b7": "d2a66d07-6507-409b-a607-574684c6d146"
},
"reviews": [
{
"source": "bd4e4ed5-a0a9-4394-bec0-85bb72434e0b",
"resolutions": [
{
"facet": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "068e2da6-5317-4b06-b0a0-ce8c1b5a26ca",
"sa": "80077b69-a2e6-4858-96c3-88e98cbf06eb"
}
}
},
"decision": "TakeSource"
},
{
"facet": {
"Order": "Steps"
},
"decision": "Candidate"
}
],
"reset": []
}
],
"candidates": [
{
"Element": {
"id": "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d",
"alias": "startup_sequence_e5dbb9b6",
"name": "SA Startup sequence",
"description": "",
"parent": null,
"body": {
"Sa": {
"FunctionalChain": {
"steps": [
"1b9b6f58-0944-47d4-9d34-caa0d0d1561f",
"fc5a0217-9478-48c5-a83f-0c8edb6a81d1",
"80077b69-a2e6-4858-96c3-88e98cbf06eb",
"d2a66d07-6507-409b-a607-574684c6d146"
]
}
}
}
}
}
],
"accepted_impacts": []
}
@@ -0,0 +1,266 @@
{
"schema_version": 5,
"id": "8a7844b3-69e7-49ec-9666-b63a588ed3c4",
"alias": "mission",
"name": "Startup sequence order review",
"description": "",
"elements": {
"068e2da6-5317-4b06-b0a0-ce8c1b5a26ca": {
"id": "068e2da6-5317-4b06-b0a0-ce8c1b5a26ca",
"alias": "verify_interlock",
"name": "OA Verify interlock",
"description": "",
"parent": "bd4e4ed5-a0a9-4394-bec0-85bb72434e0b",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"1b9b6f58-0944-47d4-9d34-caa0d0d1561f": {
"id": "1b9b6f58-0944-47d4-9d34-caa0d0d1561f",
"alias": "request_start_1b9b6f58",
"name": "SA Request start",
"description": "",
"parent": "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"80077b69-a2e6-4858-96c3-88e98cbf06eb": {
"id": "80077b69-a2e6-4858-96c3-88e98cbf06eb",
"alias": "verify_interlock_80077b69",
"name": "SA Verify interlock",
"description": "",
"parent": "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"9b50280a-881e-4d45-9645-947e71943f65": {
"id": "9b50280a-881e-4d45-9645-947e71943f65",
"alias": "request_start",
"name": "OA Request start",
"description": "",
"parent": "bd4e4ed5-a0a9-4394-bec0-85bb72434e0b",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"bd4e4ed5-a0a9-4394-bec0-85bb72434e0b": {
"id": "bd4e4ed5-a0a9-4394-bec0-85bb72434e0b",
"alias": "startup_sequence",
"name": "OA Startup sequence",
"description": "",
"parent": null,
"body": {
"Oa": {
"Process": {
"steps": [
"9b50280a-881e-4d45-9645-947e71943f65",
"068e2da6-5317-4b06-b0a0-ce8c1b5a26ca",
"c18de06b-2519-416c-b559-43f940d817b7"
]
}
}
}
},
"c18de06b-2519-416c-b559-43f940d817b7": {
"id": "c18de06b-2519-416c-b559-43f940d817b7",
"alias": "energize",
"name": "OA Energize",
"description": "",
"parent": "bd4e4ed5-a0a9-4394-bec0-85bb72434e0b",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"d2a66d07-6507-409b-a607-574684c6d146": {
"id": "d2a66d07-6507-409b-a607-574684c6d146",
"alias": "energize_d2a66d07",
"name": "SA Energize",
"description": "",
"parent": "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"db59b8b6-c002-4b26-bd32-87dcf2e40bcd": {
"id": "db59b8b6-c002-4b26-bd32-87dcf2e40bcd",
"alias": "local_self_test",
"name": "OA Local self-test",
"description": "",
"parent": "bd4e4ed5-a0a9-4394-bec0-85bb72434e0b",
"body": {
"Oa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
},
"e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d": {
"id": "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d",
"alias": "startup_sequence_e5dbb9b6",
"name": "SA Startup sequence",
"description": "",
"parent": null,
"body": {
"Sa": {
"FunctionalChain": {
"steps": [
"1b9b6f58-0944-47d4-9d34-caa0d0d1561f",
"fc5a0217-9478-48c5-a83f-0c8edb6a81d1",
"d2a66d07-6507-409b-a607-574684c6d146"
]
}
}
}
},
"fc5a0217-9478-48c5-a83f-0c8edb6a81d1": {
"id": "fc5a0217-9478-48c5-a83f-0c8edb6a81d1",
"alias": "local_self_test_fc5a0217",
"name": "SA Local self-test",
"description": "",
"parent": "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d",
"body": {
"Sa": {
"Shared": {
"Occurrence": {
"body": {
"Control": {
"kind": "Choice"
}
},
"precondition": "",
"postcondition": ""
}
}
}
}
}
},
"relations": {},
"diagrams": {},
"artifact_links": {},
"traces": {
"f6f83133-4199-4d39-b968-cb9d30c8e387": {
"id": "f6f83133-4199-4d39-b968-cb9d30c8e387",
"alias": "startup_order_review",
"name": "Startup sequence order review",
"description": "",
"oa": "bd4e4ed5-a0a9-4394-bec0-85bb72434e0b",
"sa": "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d",
"kind": "Manual",
"baseline": {
"oa": {
"name": "OA Startup sequence",
"description": ""
},
"sa": {
"name": "SA Startup sequence",
"description": ""
},
"semantic": {
"facets": [
{
"Member": {
"collection": "Steps",
"keys": {
"oa": "068e2da6-5317-4b06-b0a0-ce8c1b5a26ca",
"sa": "80077b69-a2e6-4858-96c3-88e98cbf06eb"
},
"review": {
"oa": {
"Value": true
},
"sa": {
"Value": false
}
}
}
}
]
}
}
}
}
}
@@ -0,0 +1,36 @@
{
"direction": "OaToSa",
"facet": {
"Member": {
"collection": "Steps",
"keys": {
"oa": "068e2da6-5317-4b06-b0a0-ce8c1b5a26ca",
"sa": "80077b69-a2e6-4858-96c3-88e98cbf06eb"
}
}
},
"final_order": [
"1b9b6f58-0944-47d4-9d34-caa0d0d1561f",
"fc5a0217-9478-48c5-a83f-0c8edb6a81d1",
"80077b69-a2e6-4858-96c3-88e98cbf06eb",
"d2a66d07-6507-409b-a607-574684c6d146"
],
"rows": [
[
"9b50280a-881e-4d45-9645-947e71943f65",
"c18de06b-2519-416c-b559-43f940d817b7",
"068e2da6-5317-4b06-b0a0-ce8c1b5a26ca",
"db59b8b6-c002-4b26-bd32-87dcf2e40bcd"
],
[
"1b9b6f58-0944-47d4-9d34-caa0d0d1561f",
"d2a66d07-6507-409b-a607-574684c6d146",
"80077b69-a2e6-4858-96c3-88e98cbf06eb",
"fc5a0217-9478-48c5-a83f-0c8edb6a81d1"
]
],
"source": "bd4e4ed5-a0a9-4394-bec0-85bb72434e0b",
"target": "e5dbb9b6-0df5-482e-88eb-8b4f3fa3c90d",
"trace": "f6f83133-4199-4d39-b968-cb9d30c8e387",
"trace_name": "Startup sequence order review"
}
@@ -0,0 +1,73 @@
# Ordered semantic native fixtures
Open semantic-ordered.arcadia for the main OA→SA case. One trace is ready:
"Startup sequence order review" (alias startup_order_review).
Other validated variants use the same instructions:
- semantic-ordered-reverse.arcadia: "Reverse startup sequence order review", SA→OA.
- semantic-ordered-scenario.arcadia: "Startup scenario order review".
- semantic-ordered-branch-steps.arcadia: "Startup branch steps order review".
- semantic-ordered-fragment.arcadia: "Startup fragment branches order review".
The fragment variant uses Fragment branches in Members / rows; all others use
Ordered steps. In reverse, substitute Operational for destination/System for source.
## Exact main flow
1. Open the trace from Traceability with Review semantics. Direction Operational
to System. Reference pairs should include these three explicit OA→SA rows:
OA Request start → SA Request start
OA Energize → SA Energize
OA Verify interlock → SA Verify interlock
The trace endpoints are already paired; names do not infer the three step pairs.
Use Reference pairs to add them by their named picker choices.
2. In Properties select the paired Steps member for Verify interlock (enable Show
unchanged if necessary). It has pre-recorded exact paired history. Alternatively
choose Members / rows → Ordered steps, choose OA Verify interlock and SA Verify
interlock, then Use these addresses and review row. Click Take Operational.
3. Expect "Ordered member insertion has no unique unchanged anchor" and disabled
Apply. Source order is Request start, Verify interlock, Energize. Destination
order is Request start, Local self-test, Energize. The local step prevents a
uniquely anchored insertion; accepted source/project/history stay initial.
4. In Members / rows choose Review final order… (or select the Order Steps fact),
then Set final value. Initial draft: Request start, Local self-test, Energize,
Verify interlock. Press Up on Verify interlock once. Final draft:
Request start, Local self-test, Verify interlock, Energize.
5. Preview must succeed with zero Additional changes. Apply once. Compare accepted
project with semantic-ordered.after-order.json and single-file source with
semantic-ordered.after-order.arcadia. Only selected membership/order and its
typed review history change. One Undo restores the initial project/source;
Redo restores after-order. Save/reopen preserves the exact leading comment.
## Rejected retained-draft/recovery check
Before Apply, keep the explicit order Candidate selected but leave the Verify
member decision unselected. The saved order still contains Verify, which is no
longer in the proposed membership. Expect an exact-survivor error; the authored
order must remain visible. Changing tabs and recovering the workflow must retain
that rejected order. Re-select Take Operational for Verify: the original final
order becomes valid again without editing it. Reconcile with selected membership
is the explicit alternative that removes excluded entries and appends newly
included entries; it must never happen merely on Refresh or leaving a tab.
At 1100x700 inspect the full scrollable order list and Up/Down controls, error,
Apply/Cancel and exact preview observations. Repeat at 1440x900, then reverse and
at least the Fragment branches variant.
## Artifacts and validation
Each stem has initial .arcadia/.json, .after-order.arcadia/.json, ambiguous request
and error, final request and plan, plus a manifest with exact IDs. Source oracles
use production source_project::update_bundle so the leading comment and unchanged
declarations retain exact bytes. semantic-ordered.validation.txt records all five
fixtures: both initial and final models validate, production source/JSON decode
round trips are exact, ambiguous Take rejects, successful final plan has 0 impacts.
Generator output and binaries stay under this ignored directory; no Cargo or
shared target output was used.
## Minimum-width application navigation recheck
The previous top page row hid Model checks and Engineering guide behind horizontal
scrolling at 1100x700. The source now wraps the existing page buttons. In a newly
built binary, resize 1440x900→1100x700: all nine labels/actions must stay visible,
with a second row as needed. Select Model checks and Engineering guide; ensure
content remains usable below the taller header. Resize back to 1440x900 and verify
buttons return to available space while selected-page styling remains correct.
@@ -0,0 +1,104 @@
arcadia 5;
project native_state_actions "Native QA — state actions and recovery" id "f0060906-0000-4000-8000-000000000000" {
description "Isolated deterministic QA fixture. No user data. Preserve this pristine file; use a trial copy for edits.";
sa_system controller "Pressure controller" id "f0060906-0000-4000-8000-000000000001" {}
sa_state_machine operating "Pressure operation" id "f0060906-0000-4000-8000-000000000002" { parent @controller; }
sa_region main_region "Main region" id "f0060906-0000-4000-8000-000000000003" { parent @operating; }
sa_state ready "Ready" id "f0060906-0000-4000-8000-000000000004" {
parent @main_region;
kind State;
entry "Retained entry notes";
do_activity "";
exit "";
}
sa_region monitoring_region "Monitoring region" id "f0060906-0000-4000-8000-000000000005" { parent @ready; }
sa_state sampling "Sampling" id "f0060906-0000-4000-8000-000000000006" { parent @monitoring_region; kind State; }
sa_state idle "Idle" id "f0060906-0000-4000-8000-000000000007" { parent @main_region; kind State; }
sa_initial start "Start" id "f0060906-0000-4000-8000-000000000008" { parent @main_region; kind Initial; }
sa_initial start_monitoring "Start monitoring" id "f0060906-0000-4000-8000-000000000009" { parent @monitoring_region; kind Initial; }
sa_function restore_settings "Restore settings" id "f0060906-0000-4000-8000-000000000010" {
description "Referenced Entry work. This function is not contained in Ready.";
}
sa_function monitor_pressure "Monitor pressure" id "f0060906-0000-4000-8000-000000000011" {
description "Referenced Do work. This function is not contained in Ready.";
}
sa_function release_resources "Release resources" id "f0060906-0000-4000-8000-000000000012" {
description "Referenced Exit work. This function is not contained in Ready.";
}
sa_event sample_tick "Sample tick" id "f0060906-0000-4000-8000-000000000013" {
body { Time { kind After; expression "1 s"; }; };
}
sa_data_type retry_budget "Retry budget" id "f0060906-0000-4000-8000-000000000014" {
definition { Integer { minimum 0; maximum 4; }; };
default none;
unit "attempts";
}
allocation performs_restore "Performs restore" id "f0060906-0000-4000-8000-000000000020" { source @controller; target @restore_settings; }
allocation performs_monitor "Performs monitoring" id "f0060906-0000-4000-8000-000000000021" { source @controller; target @monitor_pressure; }
allocation performs_release "Performs release" id "f0060906-0000-4000-8000-000000000022" { source @controller; target @release_resources; }
state_action on_entry "Entry work link" id "f0060906-0000-4000-8000-000000000030" { source @ready; target @restore_settings; phase Entry; }
state_action while_ready "Do work link" id "f0060906-0000-4000-8000-000000000031" { source @ready; target @monitor_pressure; phase Do; }
state_action on_exit "Exit work link" id "f0060906-0000-4000-8000-000000000032" { source @ready; target @release_resources; phase Exit; }
state_transition refresh_status "Refresh status" id "f0060906-0000-4000-8000-000000000033" {
source @ready; target @ready;
transition_kind Internal;
triggers [@sample_tick]; trigger "";
guard "pressure_valid";
effects [@monitor_pressure]; effect "Update status display";
}
state_transition initialize "Initialize" id "f0060906-0000-4000-8000-000000000034" {
source @start; target @ready;
transition_kind External;
triggers []; trigger ""; guard ""; effects []; effect "";
}
state_transition initialize_monitoring "Initialize monitoring" id "f0060906-0000-4000-8000-000000000035" {
source @start_monitoring; target @sampling;
transition_kind External;
triggers []; trigger ""; guard ""; effects []; effect "";
}
state_transition finish_monitoring "Finish monitoring" id "f0060906-0000-4000-8000-000000000036" {
source @ready; target @idle;
transition_kind External;
triggers []; trigger ""; guard "shutdown_requested"; effects []; effect "";
}
diagram state_view "Pressure operation — saved state view" id "f0060906-0000-4000-8000-000000000100" {
layer Sa;
projection { StateMachine { machine @operating; }; };
description "Ready has prose, three typed action rows, an internal transition and a nested region. Work functions are deliberately not placed here.";
}
node view_machine id "f0060906-0000-4000-8000-000000000102" {
diagram @state_view; element @operating;
position { x 40; y 40; }; size { width 1030; height 800; }; collapsed false;
}
node view_main id "f0060906-0000-4000-8000-000000000103" {
diagram @state_view; element @main_region;
position { x 64; y 104; }; size { width 982; height 712; }; collapsed false;
}
node view_ready id "f0060906-0000-4000-8000-000000000104" {
diagram @state_view; element @ready;
position { x 160; y 180; }; size { width 590; height 570; }; collapsed false;
}
node view_monitoring id "f0060906-0000-4000-8000-000000000105" {
diagram @state_view; element @monitoring_region;
position { x 184; y 430; }; size { width 542; height 296; }; collapsed false;
}
node view_sampling id "f0060906-0000-4000-8000-000000000106" {
diagram @state_view; element @sampling;
position { x 286; y 520; }; size { width 224; height 94; }; collapsed false;
}
node view_idle id "f0060906-0000-4000-8000-000000000107" {
diagram @state_view; element @idle;
position { x 780; y 250; }; size { width 224; height 94; }; collapsed false;
}
node view_start id "f0060906-0000-4000-8000-000000000108" {
diagram @state_view; element @start;
position { x 105; y 210; }; size { width 16; height 16; }; collapsed false;
}
node view_monitor_start id "f0060906-0000-4000-8000-000000000109" {
diagram @state_view; element @start_monitoring;
position { x 220; y 550; }; size { width 16; height 16; }; collapsed false;
}
}
+32
View File
@@ -0,0 +1,32 @@
# Real server coverage parity probe
Run with PowerShell7 on Windows against a built/staged server. The script launches
its own hidden server on a free loopback port, creates synthetic data under a fresh
timestamped `.local/rest-coverage-*` directory, captures25 requests/responses and
asserts diagnostic parity, invalid-write rejection, source preservation and restart.
It stops only its own process, including on failure. It never attaches to an
existing server and does not use user credentials. The token it creates is fixed
synthetic probe data, not suitable for a deployed server.
From the repository root, replace the executable path with the artifact under test:
```powershell
$env:PATH = "$env:SystemRoot\System32;$env:SystemRoot;$env:SystemRoot\System32\Wbem"
& harness/fixtures/rest-coverage/run-coverage-probe.ps1 -ServerExe 'C:\path\to\staged\arcadia-server.exe'
```
For gnullvm builds, stage the required runtime DLL beside the executable. Clean
PATH is deliberate: success should not depend on a developer compiler directory.
The first launch and restart use the same isolated store; restart is a forced
process stop after an acknowledged saved revision. This tests local persistence,
not graceful-drain handling. Output directories and evidence are retained.
`coverage-probe.json` has incomplete, repaired and invalid source bundles with
explicit synthetic UUIDs, plus five exact expected warning tuples. The repair
deliberately leaves an independent `sequence_gap` warning. The final reintroduction
of the incomplete bundle is an explicit replacement, not service Undo. No new API
or production code is required by the probe.
Observed Windows execution and limitations are recorded in
`harness/release-rest-coverage-verification-20260906.md`. This launch wrapper is
Windows-specific; the fixture and HTTP oracles can be reused on other platforms.
@@ -0,0 +1,58 @@
{
"incomplete": {
"entry": "project.arcadia",
"files": {
"work.arcadia": "// Synthetic OA fixture: known responsibilities, explicit incomplete contexts.\noa_entity crew \"Crew\" id \"f0660906-0000-4000-8000-000000000002\" {}\noa_activity activity_group \"Manage service\" id \"f0660906-0000-4000-8000-000000000010\" {\n oa_activity a \"Prepare\" id \"f0660906-0000-4000-8000-000000000011\" {}\n oa_activity b \"Deliver\" id \"f0660906-0000-4000-8000-000000000012\" {}\n}\noa_activity c \"Verify\" id \"f0660906-0000-4000-8000-000000000013\" {}\noa_capability q \"Reliable delivery\" id \"f0660906-0000-4000-8000-000000000020\" {}\noa_mission m \"Deliver reliably\" id \"f0660906-0000-4000-8000-000000000021\" {}\nallocation allocate_a \"Prepare responsibility\" id \"f0660906-0000-4000-8000-000000000041\" { source @crew; target @a; }\nallocation allocate_b \"Deliver responsibility\" id \"f0660906-0000-4000-8000-000000000042\" { source @crew; target @b; }\nallocation allocate_c \"Verify responsibility\" id \"f0660906-0000-4000-8000-000000000043\" { source @crew; target @c; }\ninteraction eab \"Prepared service\" id \"f0660906-0000-4000-8000-000000000050\" { source @a; target @b; }\ninteraction ep \"Grouped service\" id \"f0660906-0000-4000-8000-000000000051\" { source @activity_group; target @c; }\ninteraction eca \"Verified service\" id \"f0660906-0000-4000-8000-000000000052\" { source @c; target @a; }\ncapability_involvement support \"Crew support\" id \"f0660906-0000-4000-8000-000000000060\" { source @crew; target @q; }",
"behavior.arcadia": "oa_process delivery \"Delivery path\" id \"f0660906-0000-4000-8000-000000000030\" { steps [@ab_use]; }\noa_occurrence ab_use \"Use prepared service\" id \"f0660906-0000-4000-8000-000000000031\" {\n parent @delivery; body { Exchange { exchange @eab; sender none; receiver none; message_kind Asynchronous; reply_to none; values []; }; };\n}",
"project.arcadia": "arcadia 5; project coverage \"REST coverage parity\" id \"f0660906-0000-4000-8000-000000000001\" { include \"work.arcadia\"; include \"behavior.arcadia\"; }"
}
},
"repaired": {
"entry": "project.arcadia",
"files": {
"work.arcadia": "// Synthetic OA fixture: known responsibilities, explicit incomplete contexts.\noa_entity crew \"Crew\" id \"f0660906-0000-4000-8000-000000000002\" {}\noa_activity activity_group \"Manage service\" id \"f0660906-0000-4000-8000-000000000010\" {\n oa_activity a \"Prepare\" id \"f0660906-0000-4000-8000-000000000011\" {}\n oa_activity b \"Deliver\" id \"f0660906-0000-4000-8000-000000000012\" {}\n}\noa_activity c \"Verify\" id \"f0660906-0000-4000-8000-000000000013\" {}\noa_capability q \"Reliable delivery\" id \"f0660906-0000-4000-8000-000000000020\" {}\noa_mission m \"Deliver reliably\" id \"f0660906-0000-4000-8000-000000000021\" {}\nallocation allocate_a \"Prepare responsibility\" id \"f0660906-0000-4000-8000-000000000041\" { source @crew; target @a; }\nallocation allocate_b \"Deliver responsibility\" id \"f0660906-0000-4000-8000-000000000042\" { source @crew; target @b; }\nallocation allocate_c \"Verify responsibility\" id \"f0660906-0000-4000-8000-000000000043\" { source @crew; target @c; }\ninteraction eab \"Prepared service\" id \"f0660906-0000-4000-8000-000000000050\" { source @a; target @b; }\ninteraction ep \"Grouped service\" id \"f0660906-0000-4000-8000-000000000051\" { source @a; target @c; }\ninteraction eca \"Verified service\" id \"f0660906-0000-4000-8000-000000000052\" { source @c; target @a; }\ncapability_involvement support \"Crew support\" id \"f0660906-0000-4000-8000-000000000060\" { source @crew; target @q; }",
"behavior.arcadia": "oa_process delivery \"Delivery path\" id \"f0660906-0000-4000-8000-000000000030\" { steps [@ca_use, @ab_use, @pc_use]; }\noa_occurrence ab_use \"Use prepared service\" id \"f0660906-0000-4000-8000-000000000031\" {\n parent @delivery; body { Exchange { exchange @eab; sender none; receiver none; message_kind Asynchronous; reply_to none; values []; }; };\n}\noa_occurrence ca_use \"Use verified service\" id \"f0660906-0000-4000-8000-000000000032\" {\n parent @delivery; body { Exchange { exchange @eca; sender none; receiver none; message_kind Asynchronous; reply_to none; values []; }; };\n}\noa_occurrence pc_use \"Use responsible leaf exchange\" id \"f0660906-0000-4000-8000-000000000033\" {\n parent @delivery; body { Exchange { exchange @ep; sender none; receiver none; message_kind Asynchronous; reply_to none; values []; }; };\n}\nmission_capability mission_delivery \"Mission delivery\" id \"f0660906-0000-4000-8000-000000000061\" { source @m; target @q; }\nchain_involvement context \"Explicit delivery context\" id \"f0660906-0000-4000-8000-000000000062\" { source @delivery; target @q; }",
"project.arcadia": "arcadia 5; project coverage \"REST coverage parity\" id \"f0660906-0000-4000-8000-000000000001\" { include \"work.arcadia\"; include \"behavior.arcadia\"; }"
}
},
"invalid": {
"entry": "project.arcadia",
"files": {
"work.arcadia": "// Synthetic OA fixture: known responsibilities, explicit incomplete contexts.\noa_entity crew \"Crew\" id \"f0660906-0000-4000-8000-000000000002\" {}\noa_activity activity_group \"Manage service\" id \"f0660906-0000-4000-8000-000000000010\" {\n oa_activity a \"Prepare\" id \"f0660906-0000-4000-8000-000000000011\" {}\n oa_activity b \"Deliver\" id \"f0660906-0000-4000-8000-000000000012\" {}\n}\noa_activity c \"Verify\" id \"f0660906-0000-4000-8000-000000000013\" {}\noa_capability q \"Reliable delivery\" id \"f0660906-0000-4000-8000-000000000020\" {}\noa_mission m \"Deliver reliably\" id \"f0660906-0000-4000-8000-000000000021\" {}\nallocation allocate_a \"Prepare responsibility\" id \"f0660906-0000-4000-8000-000000000041\" { source @crew; target @a; }\nallocation allocate_b \"Deliver responsibility\" id \"f0660906-0000-4000-8000-000000000042\" { source @crew; target @b; }\nallocation allocate_c \"Verify responsibility\" id \"f0660906-0000-4000-8000-000000000043\" { source @crew; target @c; }\ninteraction eab \"Prepared service\" id \"f0660906-0000-4000-8000-000000000050\" { source @a; target @b; }\ninteraction ep \"Grouped service\" id \"f0660906-0000-4000-8000-000000000051\" { source @crew; target @c; }\ninteraction eca \"Verified service\" id \"f0660906-0000-4000-8000-000000000052\" { source @c; target @a; }\ncapability_involvement support \"Crew support\" id \"f0660906-0000-4000-8000-000000000060\" { source @crew; target @q; }",
"behavior.arcadia": "oa_process delivery \"Delivery path\" id \"f0660906-0000-4000-8000-000000000030\" { steps [@ab_use]; }\noa_occurrence ab_use \"Use prepared service\" id \"f0660906-0000-4000-8000-000000000031\" {\n parent @delivery; body { Exchange { exchange @eab; sender none; receiver none; message_kind Asynchronous; reply_to none; values []; }; };\n}",
"project.arcadia": "arcadia 5; project coverage \"REST coverage parity\" id \"f0660906-0000-4000-8000-000000000001\" { include \"work.arcadia\"; include \"behavior.arcadia\"; }"
}
},
"expected": [
{
"object_id": "f0660906-0000-4000-8000-000000000051",
"path": "work.arcadia",
"code": "non_leaf_work_exchange",
"field": "source"
},
{
"object_id": "f0660906-0000-4000-8000-000000000013",
"path": "work.arcadia",
"code": "work_without_behavior_context",
"field": null
},
{
"object_id": "f0660906-0000-4000-8000-000000000052",
"path": "work.arcadia",
"code": "exchange_without_behavior_context",
"field": null
},
{
"object_id": "f0660906-0000-4000-8000-000000000021",
"path": "work.arcadia",
"code": "mission_without_capability",
"field": null
},
{
"object_id": "f0660906-0000-4000-8000-000000000020",
"path": "work.arcadia",
"code": "capability_without_behavior_context",
"field": null
}
]
}
@@ -0,0 +1,137 @@
param([Parameter(Mandatory=$true)][string]$ServerExe)
$ErrorActionPreference = 'Stop'
$taskRoot = (Resolve-Path (Join-Path $PSScriptRoot '../../..')).Path
$exe = (Resolve-Path -LiteralPath $ServerExe).Path
$runRoot = Join-Path $taskRoot ('.local/rest-coverage-' + (Get-Date -Format 'yyyyMMdd-HHmmss'))
$storePath = Join-Path $runRoot 'store'
New-Item -ItemType Directory -Path $runRoot,$storePath | Out-Null
$payload = Get-Content -LiteralPath (Join-Path $PSScriptRoot 'coverage-probe.json') -Raw | ConvertFrom-Json -AsHashtable
$testToken = 'release-coverage-probe-20260906-local-only'
$tokenPath = Join-Path $runRoot 'synthetic-token.txt'
[IO.File]::WriteAllText($tokenPath,$testToken)
$listener = [Net.Sockets.TcpListener]::new([Net.IPAddress]::Loopback,0)
$listener.Start()
$probePort = $listener.LocalEndpoint.Port
$listener.Stop()
$base = "http://127.0.0.1:$probePort"
$script:probeProcess = $null
$script:sequence = 0
$script:launch = 0
$codes = @($payload.expected | ForEach-Object { $_.code })
function Assert-Probe($condition,[string]$message) { if (-not $condition) { throw $message } }
function Start-ProbeServer {
$script:launch++
$script:probeProcess = Start-Process -FilePath $exe -ArgumentList @('--bind',"127.0.0.1:$probePort",'--data-dir',('"'+$storePath+'"'),'--token-file',('"'+$tokenPath+'"')) -WindowStyle Hidden -PassThru -RedirectStandardOutput (Join-Path $runRoot "server-$script:launch.stdout.log") -RedirectStandardError (Join-Path $runRoot "server-$script:launch.stderr.log")
for ($attempt = 0; $attempt -lt 40; $attempt++) {
if ($script:probeProcess.HasExited) { throw 'Probe server exited before readiness' }
try { $ready=Invoke-WebRequest "$base/health/ready" -TimeoutSec 1; if ($ready.StatusCode -eq 200) { return } } catch {}
Start-Sleep -Milliseconds 250
}
throw 'Probe server did not become ready'
}
function Stop-ProbeServer {
if ($null -ne $script:probeProcess -and -not $script:probeProcess.HasExited) {
Stop-Process -InputObject $script:probeProcess
$script:probeProcess.WaitForExit()
}
$script:probeProcess = $null
}
function Call-Probe([string]$name,[string]$method,[string]$path,$body=$null,[string]$etag='',[int]$expectedStatus=200) {
$script:sequence++
$stem = Join-Path $runRoot ('{0:D2}-{1}' -f $script:sequence,$name)
$headers = @{Authorization="Bearer $testToken"}
if ($etag) { $headers['If-Match']=$etag }
$request = @{Uri="$base$path";Method=$method;Headers=$headers;SkipHttpErrorCheck=$true;TimeoutSec=40}
if ($null -ne $body) {
$json=ConvertTo-Json -InputObject $body -Depth 100 -Compress
[IO.File]::WriteAllText("$stem.request.json",$json)
$request.ContentType='application/json'
$request.Body=[Text.Encoding]::UTF8.GetBytes($json)
}
$response=Invoke-WebRequest @request
$content=[string]$response.Content
[IO.File]::WriteAllText("$stem.response.txt",$content)
$tag=[string]($response.Headers.ETag | Select-Object -First 1)
@{method=$method;path=$path;status=[int]$response.StatusCode;etag=$tag} | ConvertTo-Json | Set-Content -LiteralPath "$stem.meta.json"
Assert-Probe ($response.StatusCode -eq $expectedStatus) "$name expected $expectedStatus; got $($response.StatusCode): $content"
$data=$null
try { $data=ConvertFrom-Json -InputObject $content -AsHashtable } catch {}
return @{content=$content;data=$data;etag=$tag;headers=$response.Headers}
}
function Tuples($issues) {
return (@($issues | Where-Object { $_.code -in $codes } | ForEach-Object { "$($_.code)|$($_.object_id)|$($_.field)" } | Sort-Object) -join "`n")
}
function Assert-Coverage($response,[bool]$located=$false) {
$found=@($response.data.issues | Where-Object { $_.code -in $codes })
Assert-Probe ((Tuples $found) -ceq (Tuples $payload.expected)) 'Five exact coverage tuples differ'
Assert-Probe (@($response.data.issues | Where-Object severity -eq 'error').Count -eq 0) 'Unexpected structural error'
foreach ($issue in $found) {
Assert-Probe ($issue.severity -eq 'warning') 'Coverage is not warning severity'
if ($located) {
Assert-Probe ($issue.path -eq 'work.arcadia' -and $issue.line -ge 1 -and $issue.column -ge 1 -and $null -ne $issue.span) 'Missing submitted-source location'
}
}
}
function Assert-Bundle($actual,$expected) {
Assert-Probe ($actual.entry -ceq $expected.entry -and $actual.files.Count -eq $expected.files.Count) 'Bundle entry/file count changed'
foreach ($key in $expected.files.Keys) { Assert-Probe ($actual.files[$key] -ceq $expected.files[$key]) "Source bytes changed: $key" }
}
try {
@{exe=$exe;sha256=(Get-FileHash -LiteralPath $exe -Algorithm SHA256).Hash;port=$probePort;started=(Get-Date -Format o)} | ConvertTo-Json | Set-Content (Join-Path $runRoot 'run.json')
Start-ProbeServer
$created=Call-Probe 'create' 'POST' '/api/v1/projects' @{name='Coverage probe host'} '' 201
$path=[string]($created.headers.Location | Select-Object -First 1)
Assert-Probe ($path -like '/api/v1/projects/*') 'Create omitted resource Location'
$before=Call-Probe 'before-model' 'GET' "$path/model"
$beforeBundle=Call-Probe 'before-bundle' 'GET' "$path/source-project"
$candidate=Call-Probe 'incomplete-candidate' 'POST' "$path/validation" @{format='source-project';source_project=$payload.incomplete}
Assert-Probe $candidate.data.valid 'Incomplete model should be valid'
Assert-Coverage $candidate $true
$after=Call-Probe 'candidate-no-commit-model' 'GET' "$path/model"
$afterBundle=Call-Probe 'candidate-no-commit-bundle' 'GET' "$path/source-project"
Assert-Probe ($after.content -ceq $before.content -and $after.etag -ceq $before.etag) 'Candidate changed accepted model/revision'
Assert-Bundle $afterBundle.data $beforeBundle.data
$committed=Call-Probe 'commit-incomplete' 'PUT' "$path/source-project" $payload.incomplete $before.etag
Assert-Coverage $committed $true
Assert-Probe ($committed.data.changed -and $committed.etag -cne $before.etag) 'Warning-only commit did not advance revision'
$model=Call-Probe 'incomplete-model' 'GET' "$path/model"
$bundle=Call-Probe 'incomplete-bundle' 'GET' "$path/source-project"
Assert-Bundle $bundle.data $payload.incomplete
$source=Call-Probe 'incomplete-canonical' 'GET' "$path/source"
$validation=Call-Probe 'incomplete-validation' 'GET' "$path/validation"
Assert-Coverage $validation
$jsonCheck=Call-Probe 'json-parity' 'POST' "$path/validation" @{format='json';model=$model.data}
$textCheck=Call-Probe 'text-parity' 'POST' "$path/validation" @{format='arcadia';source=$source.content}
Assert-Coverage $jsonCheck
Assert-Coverage $textCheck
Assert-Probe ($jsonCheck.data.valid -and $textCheck.data.valid) 'JSON/text parity candidate invalid'
$invalid=Call-Probe 'invalid-candidate' 'POST' "$path/validation" @{format='source-project';source_project=$payload.invalid}
Assert-Probe (-not $invalid.data.valid -and @($invalid.data.issues | Where-Object { $_.code -eq 'invalid_endpoints' -and $_.severity -eq 'error' }).Count -ge 1) 'Invalid endpoint not diagnosed'
Assert-Probe ((Tuples $invalid.data.issues) -eq '') 'Structural error did not gate coverage'
$null=Call-Probe 'invalid-write-rejected' 'PUT' "$path/source-project" $payload.invalid $model.etag 422
$unchanged=Call-Probe 'rejection-model' 'GET' "$path/model"
$unchangedBundle=Call-Probe 'rejection-bundle' 'GET' "$path/source-project"
Assert-Probe ($unchanged.content -ceq $model.content -and $unchanged.etag -ceq $model.etag) 'Rejected write changed model/revision'
Assert-Bundle $unchangedBundle.data $bundle.data
$fixed=Call-Probe 'repair-write' 'PUT' "$path/source-project" $payload.repaired $model.etag
Assert-Probe ((Tuples $fixed.data.issues) -eq '') 'Repair left coverage warnings'
$fixedModel=Call-Probe 'repaired-model' 'GET' "$path/model"
$fixedBundle=Call-Probe 'repaired-bundle' 'GET' "$path/source-project"
Assert-Bundle $fixedBundle.data $payload.repaired
$fixedValidation=Call-Probe 'repaired-validation' 'GET' "$path/validation"
Stop-ProbeServer
Start-ProbeServer
$reopened=Call-Probe 'restart-model' 'GET' "$path/model"
$reopenedBundle=Call-Probe 'restart-bundle' 'GET' "$path/source-project"
$reopenedValidation=Call-Probe 'restart-validation' 'GET' "$path/validation"
Assert-Probe ($reopened.content -ceq $fixedModel.content -and $reopened.etag -ceq $fixedModel.etag) 'Restart changed model/revision'
Assert-Bundle $reopenedBundle.data $fixedBundle.data
Assert-Probe ($reopenedValidation.content -ceq $fixedValidation.content) 'Restart changed validation'
$again=Call-Probe 'restore-incomplete-by-replacement' 'PUT' "$path/source-project" $payload.incomplete $reopened.etag
Assert-Coverage $again $true
@{result='passed';requests=$script:sequence;resource=$path;initial_revision=$committed.data.revision;repaired_revision=$fixed.data.revision;final_revision=$again.data.revision;repair_issues=$fixed.data.issues;evidence=$runRoot} | ConvertTo-Json -Depth 20 | Set-Content (Join-Path $runRoot 'result.json')
Get-Content (Join-Path $runRoot 'result.json')
} catch {
$_ | Out-String | Set-Content (Join-Path $runRoot 'failure.txt')
throw
} finally { Stop-ProbeServer }
@@ -0,0 +1,99 @@
param(
[Parameter(Mandatory=$true)][string]$ServerExe,
[Parameter(Mandatory=$true)][string]$PristineFile,
[Parameter(Mandatory=$true)][string]$SavedEntry
)
$ErrorActionPreference='Stop'
$taskRoot=(Resolve-Path (Join-Path $PSScriptRoot '../..')).Path
$exe=(Resolve-Path -LiteralPath $ServerExe).Path
$pristine=(Resolve-Path -LiteralPath $PristineFile).Path
$saved=(Resolve-Path -LiteralPath $SavedEntry).Path
$include=(Resolve-Path -LiteralPath (Join-Path (Split-Path -Parent $saved) 'sa/model.arcadia')).Path
$runRoot=Join-Path $taskRoot ('.local/timed-bundle-oracle-'+(Get-Date -Format 'yyyyMMdd-HHmmss'))
$storePath=Join-Path $runRoot 'store'
New-Item -ItemType Directory -Path $runRoot,$storePath | Out-Null
$listener=[Net.Sockets.TcpListener]::new([Net.IPAddress]::Loopback,0)
$listener.Start(); $probePort=$listener.LocalEndpoint.Port; $listener.Stop()
$base="http://127.0.0.1:$probePort"
$testToken='timed-bundle-oracle-20260906-synthetic-only'
$tokenPath=Join-Path $runRoot 'synthetic-token.txt'
[IO.File]::WriteAllText($tokenPath,$testToken)
$script:ownedServer=$null
$script:launch=0
function Start-Oracle {
$script:launch++
$script:ownedServer=Start-Process -FilePath $exe -ArgumentList @('--bind',"127.0.0.1:$probePort",'--data-dir',('"'+$storePath+'"'),'--token-file',('"'+$tokenPath+'"')) -WindowStyle Hidden -PassThru -RedirectStandardOutput (Join-Path $runRoot "server-$script:launch.stdout.log") -RedirectStandardError (Join-Path $runRoot "server-$script:launch.stderr.log")
for($n=0;$n -lt 40;$n++) {
if($script:ownedServer.HasExited){throw 'Oracle server exited'}
try{$r=Invoke-WebRequest "$base/health/ready" -TimeoutSec 1;if($r.StatusCode -eq 200){return}}catch{}
Start-Sleep -Milliseconds 250
}
throw 'Oracle readiness expired'
}
function Stop-Oracle {
if($null -ne $script:ownedServer -and -not $script:ownedServer.HasExited){Stop-Process -InputObject $script:ownedServer;$script:ownedServer.WaitForExit()}
$script:ownedServer=$null
}
function Request-Oracle([string]$label,[string]$method,[string]$path,$body=$null,[int]$expected=200) {
$args=@{Uri="$base$path";Method=$method;Headers=@{Authorization="Bearer $testToken"};SkipHttpErrorCheck=$true;TimeoutSec=40}
if($null -ne $body){$json=ConvertTo-Json -InputObject $body -Depth 100 -Compress;[IO.File]::WriteAllText((Join-Path $runRoot "$label.request.json"),$json);$args.ContentType='application/json';$args.Body=[Text.Encoding]::UTF8.GetBytes($json)}
$r=Invoke-WebRequest @args
[IO.File]::WriteAllText((Join-Path $runRoot "$label.response.json"),[string]$r.Content)
$tag=[string]($r.Headers.ETag | Select-Object -First 1)
@{status=[int]$r.StatusCode;etag=$tag;path=$path} | ConvertTo-Json | Set-Content (Join-Path $runRoot "$label.meta.json")
if($r.StatusCode -ne $expected){throw "$label expected $expected, got $($r.StatusCode): $($r.Content)"}
return @{data=(ConvertFrom-Json -InputObject $r.Content -AsHashtable);etag=$tag;location=[string]($r.Headers.Location | Select-Object -First 1)}
}
function Ordered-Json($value) {
if($null -eq $value){return $null}
if($value -is [Collections.IDictionary]){$map=[ordered]@{};foreach($key in @($value.Keys | Sort-Object)){$map[$key]=Ordered-Json $value[$key]};return $map}
if($value -is [Collections.IList]){$items=@(foreach($item in $value){Ordered-Json $item});return ,$items}
return $value
}
function Equal-Graph($left,$right,[string]$label) {
$a=ConvertTo-Json -InputObject (Ordered-Json $left) -Depth 100 -Compress
$b=ConvertTo-Json -InputObject (Ordered-Json $right) -Depth 100 -Compress
if($a -cne $b){[IO.File]::WriteAllText((Join-Path $runRoot "$label.expected.json"),$a);[IO.File]::WriteAllText((Join-Path $runRoot "$label.actual.json"),$b);throw "$label differs"}
}
try {
$hashes=@(Get-FileHash -LiteralPath $exe,$pristine,$saved,$include -Algorithm SHA256 | Select-Object Path,Hash)
$hashes | ConvertTo-Json | Set-Content (Join-Path $runRoot 'input-hashes.json')
$pristineBundle=@{entry=[IO.Path]::GetFileName($pristine);files=@{}}
$pristineBundle.files[$pristineBundle.entry]=[IO.File]::ReadAllText($pristine)
$savedBundle=@{entry=[IO.Path]::GetFileName($saved);files=@{}}
$savedBundle.files[$savedBundle.entry]=[IO.File]::ReadAllText($saved)
$savedBundle.files['sa/model.arcadia']=[IO.File]::ReadAllText($include)
Start-Oracle
$oldImport=Request-Oracle '01-pristine-import' 'POST' '/api/v1/projects/import-source-project' $pristineBundle 201
$newImport=Request-Oracle '02-saved-import' 'POST' '/api/v1/projects/import-source-project' $savedBundle 201
$old=Request-Oracle '03-pristine-model' 'GET' "$($oldImport.location)/model"
$new=Request-Oracle '04-saved-model' 'GET' "$($newImport.location)/model"
$bundle=Request-Oracle '05-saved-source-project' 'GET' "$($newImport.location)/source-project"
Equal-Graph $savedBundle $bundle.data 'saved-source-bytes'
$eventId='49044cb7-5f91-408a-86fc-1cc012eb2972'
$oldEventId='f0060906-0000-4000-8000-000000000013'
$transitionId='f0060906-0000-4000-8000-000000000033'
if($old.data.elements.Contains($eventId)){throw 'Event already exists in pristine model'}
$expectedModel=ConvertFrom-Json -InputObject (ConvertTo-Json -InputObject $old.data -Depth 100) -AsHashtable
$event=ConvertFrom-Json -InputObject (ConvertTo-Json -InputObject $expectedModel.elements[$oldEventId] -Depth 100) -AsHashtable
$event.id=$eventId;$event.alias='after_30_s';$event.name='After 30 s'
$event.body.Sa.Shared.Event.body.Time.expression='30 s'
$expectedModel.elements[$eventId]=$event
$expectedModel.relations[$transitionId].name='Unfinished timed refresh'
$expectedModel.relations[$transitionId].body.StateTransition.triggers=@($expectedModel.relations[$transitionId].body.StateTransition.triggers)+@($eventId)
Equal-Graph $expectedModel $new.data 'exact-three-deltas'
$validation=Request-Oracle '06-saved-validation' 'GET' "$($newImport.location)/validation"
if(-not $validation.data.valid -or @($validation.data.issues | Where-Object severity -eq 'error').Count){throw 'Saved graph invalid'}
Stop-Oracle
Start-Oracle
$reopened=Request-Oracle '07-reopened-model' 'GET' "$($newImport.location)/model"
$reopenedBundle=Request-Oracle '08-reopened-source-project' 'GET' "$($newImport.location)/source-project"
Equal-Graph $new.data $reopened.data 'reopened-model'
Equal-Graph $savedBundle $reopenedBundle.data 'reopened-source-bytes'
if($new.etag -cne $reopened.etag){throw 'Restart changed ETag'}
$afterHashes=@(Get-FileHash -LiteralPath $exe,$pristine,$saved,$include -Algorithm SHA256 | Select-Object Path,Hash)
Equal-Graph $hashes $afterHashes 'input-files-unchanged'
@{result='passed';evidence=$runRoot;pristine_elements=$old.data.elements.Count;saved_elements=$new.data.elements.Count;relations=$new.data.relations.Count;diagrams=$new.data.diagrams.Count;placements=@($new.data.diagrams.Values | ForEach-Object {$_.nodes.Count});new_event=$new.data.elements[$eventId];transition_before=$old.data.relations[$transitionId];transition_after=$new.data.relations[$transitionId];issues=$validation.data.issues} | ConvertTo-Json -Depth 40 | Set-Content (Join-Path $runRoot 'result.json')
Get-Content (Join-Path $runRoot 'result.json')
} catch {$_ | Out-String | Set-Content (Join-Path $runRoot 'failure.txt');throw}
finally {Stop-Oracle}
@@ -0,0 +1,53 @@
# Cross-branch continuation — 2026-09-06
The current user objective is attachment
`10b0f701-1743-4de7-9ee1-225920e19649/goal-objective.md`, read in full.
The user explicitly requested accounting for completed work on other Git branches.
## Verified repository state
The initial checkout was `codex/behavior-draft-lifecycle` at `ea2e8e9`.
Its ledgers substantially predate the integrated implementation. Independent
ancestry, patch-equivalence and production-tree comparisons established:
- `origin/codex/data-contract-integration` at `c091f80` is the integrated baseline.
- `process-direct` and `scenario-direct` are ancestors of that baseline.
- State core and state Windows/Linux integration are included, with later fixes.
- Every hosted-desktop contribution is patch-equivalent to integrated work.
- Semantic-review's core and review UI subtree match the integrated baseline;
apparently unique commits were adapted/cherry-picked equivalents.
- `data-linux-review` has identical production code; its evidence is historical.
- `transition-probe` adds isolated experiments, superseded by production schema 5.
- The initial behavior draft lifecycle commit is patch-equivalent to integrated work.
Continue on `codex/release1-continuation`, created from `c091f80`. No remote push
was performed. The duplicate state implementation started before this discovery
was preserved in a named Git stash, not applied to the integrated baseline.
Do not revive its obsolete static-canvas audit or replace the established renderer.
## Current environment, distinguished from historical evidence
This checkout is `C:/Users/User/Documents/Git/ARCADIA-Studio`. Historical
`D:/CodexBuilds` artifacts, original Windows user paths and WSL distributions are
absent on this machine. Prior verification records remain scoped evidence; their
binaries and native windows cannot be assumed to exist here.
The combined global build-tools installation command was rejected by automatic
approval review as blocked by policy. User-local Rust 1.98.1 gnullvm and portable
LLVM-MinGW 20260826 UCRT are installed under ignored `.local/toolchain`, without
changing global PATH or installing system components. `.local/toolchain/env.ps1`
selects that toolchain and `.local/target-gnullvm`. Workspace test compilation
succeeds. The first desktop run has 420 pass/9 fail; fixes and native acceptance
are in progress. A GNU normal-user executable manifest fixes Windows error 740
on installer-like test filenames. New evidence is separate from old binaries.
## Next work and ownership
Root: synthesis, app lifecycle wiring, recoverable checkpoints, builds/native QA.
Home worker: Home/recents, navigation/view module; root owns app.rs.
Semantic worker: Annotation/Binding review in semantic_review modules.
Review worker: recovery design and verified missing typed StateAction card details.
Release remains incomplete. Preserve the integrated state/scenario/process/data/
hosted work and address remaining graphical parity, recovery and native acceptance
gates in PLAN.md rather than reimplementing accepted foundations.
@@ -0,0 +1,55 @@
# Bounded coverage diagnostics — decision proposal, 2026-09-06
Read-only design for task 3 in [the current coverage audit](release-current-coverage-20260906.md). No model/schema changes or implementation acceptance. Scope is OA/SA only.
## Recommended decision
Add five advisory codes to shared validation, using existing identities and references. They describe missing explicit evidence, not proof of incorrect engineering. All remain `Severity::Warning`: no rejection of Apply, Save, REST transactions or source compilation solely because of these checks.
The official [Arcadia Q&A, “Leaf functions, parent functions?” and “Functional exchanges only on leaf functions?”](https://mbse-capella.org/arcadia-qna.html) recommends leaf-level behavioral definition and contextual involvement in finalized models, while recognizing intermediate decomposition work. The exact warning policy below is a Studio design choice; it does not introduce a mandatory Capella conformance test.
| Code / located record and field | Exact trigger and repair |
|---|---|
| `non_leaf_work_exchange` / Interaction or FunctionalExchange, `source` or `target` | The referenced endpoint is work with a direct child of the same work kind. Emit once per affected endpoint. “Choose the leaf activity/function responsible for this exchange.” SA uses the relation's function IDs, not its input/output port IDs; repair must keep port ownership consistent. |
| `work_without_behavior_context` / leaf Activity or Function, record location (`field = ""`) | No included Action names this work and no included Interaction/FE names it as an endpoint. “Include this leaf in a process/chain or scenario through a work action or exchange occurrence.” |
| `exchange_without_behavior_context` / Interaction or FunctionalExchange, record location | No included Exchange occurrence names this relation. “Use this exchange in a process/chain or scenario.” Suppress while it has a non-leaf endpoint: first repair the more specific endpoint warning. |
| `mission_without_capability` / OperationalMission or Mission, record location | No valid outgoing MissionCapability to a capability in its layer. “Connect this mission to a capability that delivers it.” MissionInvolvement is participant responsibility and does not satisfy this check. |
| `capability_without_behavior_context` / Capability or SystemCapability, record location | Capability has participant/work/role support but no explicit process/chain or scenario context. “Link a process/chain with Chain involvement, or set a scenario's Context to this capability.” Do not emit alongside existing `unsupported_capability` for the same capability. |
The final code deliberately checks **presence of an explicit context**, not whether that context is complete. A linked empty chain/scenario has existing `empty_sequence` and missing-contribution diagnostics; repeating these on the capability would add noise. An isolated leaf capability with no support keeps the existing `unsupported_capability` warning.
Capability context means either (a) incoming valid ChainInvolvement from a Process/FunctionalChain or (b) an existing same-layer Scenario whose `context` is this capability. A scenario whose context is a chain already linked to the capability is naturally covered by (a). Narrowly extend the existing `unsupported_capability` support predicate to recognize (b), so a scenario-only capability is not wrongly called unsupported. No new capability warning is needed on a pure grouping capability with same-kind child capabilities; inspect its children. Capability include/extend/generalization, parent containment, shared performers, mission context and similarly named records do not manufacture a direct context link. The message must say “explicit context,” not “no behavior exists.”
## Exact traversal and exclusions
Current seams: `model.rs` defines `OaBody::Process`, `SaBody::FunctionalChain`, `SharedBody::Scenario { context, steps, .. }`, `Element::steps()` and the closed `OccurrenceBody` variants. `validation.rs` already checks ownership, ordered membership, recursion and reference compatibility. The existing leaf-allocation predicate is `kind().is_work()` with no `p.children(id)` child of the same kind; reuse that definition. Build an indexed set of non-leaf work once rather than rescanning all children for every exchange.
Build global covered-work and covered-exchange identity sets in one bounded iterative walk:
1. Seed every Process, FunctionalChain and Scenario as a root, even if no capability references it. Coverage asks whether a context exists anywhere in the same project; it does not require every context to serve a capability.
2. Follow only identities listed in the owner's `steps()`, checking the occurrence's actual parent. For a Fragment follow its explicit `branches` whose parent is that fragment; for each Branch follow its `occurrences` through `steps()`. Do not walk arbitrary descendants: an unordered occurrence is not part of the authored behavior.
3. For `Exchange { exchange: Some(id), .. }`, mark the referenced Interaction/FE and its explicit work endpoints. For `Action { action: Some(id), .. }`, mark that referenced Activity/Function. Parent work does not cover its children. Mark identities, not occurrence counts; repeated messages and correlated replies cannot increase or double-count coverage.
4. Follow `SequenceReference { sequence: Some(id) }` only to the same process/chain kind and layer. Follow `ScenarioUse { scenario: Some(id), .. }` to the referenced scenario; ScenarioUse bindings preserve represented identity under current validation and do not substitute different work or exchanges. Visit each container/occurrence ID once. No recursion or per-root transitive-closure materialization. Every referenced sequence is also a root, so reuse does not change global coverage; this explicit treatment prevents later capability-scoped extensions from silently losing reused content.
5. An explicit work Action counts even when its scenario lifeline is unfinished: the work identity is known, and the existing missing-lifeline warning explains the remaining work. An exchange occurrence likewise counts its known exchange despite missing contextual details. Controls, timer-only occurrences, bare lifelines, State observations, StateAction/Availability links and Scenario.context alone do not mark work/exchanges covered. A state observation on a work lifeline observes state; it does not assert that work contributed. Participant/boundary messages never infer coverage of allocated Interaction/FE records: allocation of a transport is not evidence that every allocated exchange occurs in that scenario.
No warnings for ports, BoundaryExchange, future CommunicationMean, data items, participants, roles, parent work coverage, diagrams or promoted/folded summary edges. Diagram visibility and layout are irrelevant. Allocation/role sharing does not propagate coverage to sibling work. Non-leaf endpoint warnings inspect authored relationships only.
Recommended malformed-candidate policy: run this new completeness pass only when the existing structural validation pass has no Errors. This avoids cascades from dangling references, wrong layers, cycles or invalid ownership; accepted projects and saveable incomplete drafts still receive all new warnings. Keep the walk visited-set guarded regardless. Existing warning-only issues (`unordered_occurrence`, missing endpoints, empty sequences, topology gaps) do not disable the pass. Ignore incomplete edges with no usable referenced identity.
Existing checks to retain rather than duplicate: `unallocated_leaf`, `unsupported_capability`, `empty_sequence`, `unordered_occurrence`, `incomplete_step`, `missing_exchange`, `sequence_gap`, `isolated_contribution`, `unreachable_contribution`, `nonterminating_contribution`, `sequence_starts/ends`, control/guard warnings and recursive-use errors. An unallocated leaf may also lack behavior context: these are distinct repairs.
## User location and shared contract
Use `Issue.element = Some(record_id)`, stable code and a real endpoint field or record-level location. Do not fabricate a `coverage` field absent from the source grammar. `source_project::model_diagnostics` already maps object/field to its owning file; source lint and REST consume shared validation. `views.rs::checks` already offers Open on the located identity. Endpoint warnings should open the exchange's properties; coverage warnings open the leaf/exchange or mission/capability and explain the Behavior/Actions repair. No automatic creation, allocation or reassignment is implied.
Warnings must be deterministic by ID and endpoint, share codes/location across GUI/source/JSON/REST, disappear after the stated repair and reappear on Undo. The new helper should be linear in indexed records/references aside from ordered-map lookup costs. It should not call `validate()` recursively or perform a full graph walk separately for every leaf/capability.
## Three acceptance fixtures
1. **Valid covered SA, including reuse.** One System, one Actor, allocated leaf functions F/G, typed ports and FE E from F to G. Inner chain has an Exchange occurrence E; outer chain reuses inner and has ChainInvolvement to capability C. Mission M has MissionCapability to C. Add a functional scenario with F/G lifelines and repeated E call/reply plus a second scenario reusing it through a branch with identity-preserving bindings. Expected: none of the five new warnings; reuse/repetition does not duplicate facts. Remove E occurrences from every context: F/G and E become uncovered; add an Action F alone: only F's work warning clears, E/G remain. Run an OA counterpart variant with Interaction and Process to prove symmetric layer semantics.
2. **Structurally invalid candidate.** Starting from fixture 1, make a ScenarioUse cycle, then independently try an FE referencing a missing function and an occurrence listed under the wrong owner. Expected: existing exact structural errors, no new completeness cascade, candidate rejected atomically and accepted model/coverage unchanged. A visited-set traversal must terminate even when invoked directly on these malformed graphs. This fixture does not reinterpret invalid structure as permissible incompleteness.
3. **Saveable incomplete OA with exact repair targets.** Parent activity P has leaves A/B; independent leaf C. Allocate A/B/C to valid performers. Interaction Eab is A→B and appears in a Process; Ep is P→C and Eca is C→A, neither used in behavior. Mission M has no MissionCapability. Capability Q has only participant involvement. Add a participant scenario with only an observation of C's performer's state and no capability Context. Expected new warnings: Ep/source non-leaf; C uncovered; Eca uncovered; M missing capability; Q missing explicit behavior context. Ep's uncovered-exchange warning is suppressed until its endpoint is repaired. A/B are covered through Eab. Add an unordered occurrence Eca: existing unordered warning appears and coverage stays missing. Put it in ordered steps: Eca and C coverage clear. Repair Ep to A→C with matching source semantics, then include it in the process; link M→Q and process→Q. All five original warnings clear; Undo restores the relevant exact warnings. Repeated/reused Eab must never hide Eca's absence. Separately link an empty chain/scenario to Q: Q's context warning clears while the existing empty-sequence warning remains.
For these fixtures compare code/record/field tuples through core validation, multi-file source lint and real REST; check Save success for fixture 3 and rejection atomicity for fixture 2. Native check Open navigation and repair/Undo at normal and minimum window sizes. These are proposed checks, not completed tests.
@@ -0,0 +1,161 @@
# Current first-release coverage audit — 2026-09-06
Read-only production audit of `codex/release1-continuation`, HEAD `c091f80`,
including the current uncommitted Home, checkpoint, typed StateAction display and
semantic Annotation/Binding changes. This is a release acceptance map, not a claim
that the current working tree has passed its build or native gates. Root owns those
gates. The original objective was reread from the supplied goal-objective.md.
The objective requires a usable, substantially complete OA/SA engineering tool,
strict graphical/text parity and a deployable REST service. It does not require
every Capella implementation class, LA/PA/deployment, execution, or native Capella
file compatibility. The current scope's explicitly unfinished requirements cannot
be silently reclassified as future work to obtain a release claim.
## Evidence rules and reconciliation
**Implemented** means a current typed contract and reachable code path exist.
**Verified** below identifies the actual bounded historical/native evidence; it
does not transfer an old executable's acceptance to changed production code.
**Missing** means a concrete code/contract/workflow gap, rather than an untested
feature being called absent. No new Cargo or native execution was performed here.
The direct scenario/process/state branches are already incorporated in this
baseline; see release-branch-integration-20260906.md. Earlier notes saying these
surfaces are static/unimplemented are historical. The initial
release-semantics-audit.md R1–R6 findings are largely implemented now. Its selective
view and completeness-diagnostic recommendations remain materially open.
## Measurable acceptance table
| Engineering outcome | Implemented now | Verified evidence and remaining acceptance |
|---|---|---|
| OA responsibility and SA boundary modeling | Entities/actors/roles, independent work decomposition, leaf allocation, role assignment/realization; one SA System and external actors; nesting/summary distinction | Existing core/source/API and architecture native evidence. Final worked OA→SA fixture must preserve identities, allocations, independent semantic parents and view placements through save/reopen and undo. No new LA/PA structure is needed. |
| Missions and capabilities | OA/SA missions, participation, exploitation, capability involvement, include/extend/generalization with validation | R2 is implemented; do not reopen it as an absent concept. Final native proof should create the same mission map in each layer, reuse an included capability, reject a cycle and retain an incomplete extension condition as a warning. |
| OA entity communication means | Activity Interaction exists. Legacy OA ports plus BoundaryExchange and ExchangeAllocation→Interaction can preserve an approximation | **Missing ordinary authoring and an accurate OA semantic contract.** Capella's entity-level CommunicationMean is absent. New Port creation redirects users to SA typed port actions; OA permits only Legacy. Existing allocation support must be preserved, not called SA-only. See task 1. |
| SA boundary/data contracts | Typed input/output and component ports, item declarations, allocation, provided/required interfaces, protocols; data nature/mechanism, bounds/defaults, record/enum/inheritance/association and qualified message values | release-data-verification.md records Windows normal/compact advanced field work and Linux default bounds/recursive-field save/reopen. Linux association/protocol allocation and minimum layout remain unverified. Use the same fixtures to exercise data defaults, item inheritance and typed boundary allocation in desktop/source/REST. |
| Process/functional-chain contextual behavior | Direct creation/insertion, work/exchange contributions, Choice/Merge, Fork/Join, Loop, same-context links/guards, reconnect and sequence reuse | release-process-editing.md: Linux simple guarded insertion, Windows camera/owner behavior. The compact pending-form fix still needs native acceptance. Test one OA branched process and one SA chain with parallel/control/reuse contributions, reconnect/cancel, first-exchange insertion, repeated referenced work, undo/save/native reopen. Do not duplicate global work/exchange definitions. |
| Scenario authoring | Direct messages at captured sequence/operand slots, call/reply correlation, ordered occurrences, actions/timers/state observations, ALT/PAR/LOOP/OPT and bound reuse | release-scenario-editing.md: Windows ALT/default+minimum, order rejection and viewport preservation; Linux middle call/reply and save/reopen. Linux compact ALT/reuse/reorder/cancel and an operational-entity scenario remain a bounded acceptance set. New-selection auto-reveal is absent but is a usability improvement, not absent scenario semantics. |
| Modes/states and typed actions | Persisted state views, nesting/folding, state kinds/pseudostates, direct edges/reconnect, typed events and external/local/internal distinction. Current changes render/select typed Entry/Do/Exit actions without fabricating work containment | release-state-editing.md has scoped Windows/Linux acceptance. Current action rows/header changes await root's build/native checks: select all three phases, coexist with internal transition and nested region, fold, rename target, save/reopen. Linux minimum view and representative typed-event/local-transition paths still need coverage. |
| Readable saved engineering views | Multiple projection views, placements, nesting/folding, manual routes/labels and computed summary edges | **Missing persisted selective relation/category/coverage views.** Diagram currently stores only id/alias/name/description/layer/projection/nodes/routes. No named exchange category exists. Test two saved views of the same crowded model with different filters and identical semantic identities; see task 2. |
| Engineering completeness feedback | Unallocated leaf, unsupported capability, missing System, sequence/message/binding/trigger and interface-contract warnings already exist | **Missing** exchange-on-non-leaf and behavioral-context coverage diagnostics, plus mission-without-capability coverage. An allocated leaf with no process/scenario can currently look complete. Add actionable nonblocking warnings and navigable coverage; see task 3. Do not reimplement interface warnings already in ports.rs. |
| Bidirectional counterpart review | Source-v5 semantic facts, structural/scalar/constructor/member reconciliation, mapped references and historical decisions. Current Annotation/Binding row and recovery adapters present | Known open work remains ordered/attached/artifact/multi-source GUI facets, current-tree tests and native constructor/keyed-row acceptance. This audit does not duplicate that assigned slice. Literal expressions and candidate-parent lifeline choices had verified review findings, now fixed with tests awaiting integration. |
| Source/API/artifact equivalence | Normative language.rst v5; exact accepted multi-file source, identity/trivia-preserving updates, strict JSON/migration, artifacts, syntax/lint tooling and shared command validation; hosted REST transactions/source/model routes | Prior workspace, real HTTP/OpenAPI and migration evidence is recorded in STATE.md and data/semantic ledgers. Every *new* persisted category/filter/communication construct needs GUI edits, source+JSON roundtrip, REST create/edit/reject/reidentify/delete, unchanged state on reject, and restart persistence. Final gate must run on the actual integrated revision, including stale ETag and invalid-local-open destination isolation. |
| Learnability and safe reopening | Searchable offline help already exists. Current Home/recents, accepted-bundle/raw-draft checkpoints and explicit detached restore changes are present | Current Home/recovery is root-owned work, not accepted solely from code. **Documentation drift is verified:** scope.md says arcadia4 and names/descriptions-only review; guide.rs says existing counterpart review is prose-only and no unsaved recovery exists. Final instructions must match actual controls and accepted recovery semantics; see task 4. |
## Prioritized next release tasks beyond already assigned review/recovery
### 1. Close ordinary OA communication-means authoring (P1)
Capella defines CommunicationMean as communication between operational entities,
with entity endpoints, rather than SA function ports. This is a real OA need
observed in the installed Capella OAB palette and defined in the authoritative
[OperationalAnalysis schema](https://raw.githubusercontent.com/eclipse-capella/capella/master/m2/plugins/org.polarsys.capella.core.data.def/model/OperationalAnalysis.ecore).
Current seams: `model.rs::RelationBody/RelationKind`,
`validation.rs::validate_relation`, `ports.rs::validate_port` and
`validate_exchange_allocation`, `app.rs::add_element`, and
`workflow.rs::Relationship`. The current core accepts Interaction allocation,
but all OA ports are compatibility-only and warnings ask for typed SA resolution,
which is impossible in OA. `language.rst`'s allocation table incorrectly says
SA-only. A preserved legacy representation is not a usable new-project workflow.
Freeze a small explicit contract first: named OA participant-to-participant
communication carrying items and allocating operational Interactions, with
same-layer ownership/performer validation. A direct CommunicationMean relation is
one candidate; extending BoundaryExchange with explicit endpoint semantics is
another. Avoid making OA engineers create fictitious typed SA ports. Preserve
legacy input as legacy and never infer conversion from names.
Acceptance: start with an empty OA project; create two entities, their allocated
activities, an Interaction and a named communication means; allocate the
Interaction, edit carried items, navigate both levels, reject wrong-performer
allocation; save/reopen, undo/reidentify/delete safely and exercise equivalent
source/REST. Review its mapped SA boundary counterpart explicitly. This is a
bounded addition, not a demand to duplicate every OA package/configuration class.
### 2. Persist selective views and named exchange sets (P2, release usability)
Arcadia explicitly recommends representational synthesis and exchange categories;
Capella supports named categories with multiple exchange members. See the
[Arcadia Q&A on leaf functions and exchange synthesis](https://mbse-capella.org/arcadia-qna.html)
and [FunctionalAnalysis category definition](https://raw.githubusercontent.com/eclipse-capella/capella/master/m2/plugins/org.polarsys.capella.core.data.def/model/FunctionalAnalysis.ecore).
This directly addresses the user's clutter complaint and remains explicitly
unfinished in scope.md. Existing view projections/folding do not supply a saved
selection among multiple exchanges between the same visible endpoints.
Bound the slice to named same-layer exchange sets, per-diagram relation-kind and
set membership filters, and a coverage view/filter for selected capability or
behavior context. Define combination semantics explicitly. Start with original
edges; optional aggregate rendering must expose its actual members and may never
create fake semantic exchanges. No hierarchical category subsystem is necessary.
Seams: `model.rs::Diagram/ProjectionKind`, projection edge selection, typed forms,
source syntax/writer/updater, schema/API and reference lifecycle. Acceptance:
one interaction belongs to two named sets; two views show distinct subsets;
filtering hides no semantic content and deleting a set preserves its exchanges;
placement/route identities survive toggling; source/API/GUI persist identical
filter definitions and all members remain navigable.
### 3. Add bounded engineering completeness checks (P2)
The official Arcadia Q&A states that finalized behavior belongs on leaf functions
and ideally each leaf and exchange participates in a chain or scenario. This is
method guidance, so incomplete drafts must remain saveable. Current validation
already enforces leaf allocation and many local contracts; do not turn this slice
into a new general rules engine.
Add located advisory checks for (a) work with children carrying an Interaction/FE,
(b) leaf work/exchanges not involved in a process/chain/scenario, and (c) a mission
without a MissionCapability. Report capability support separately: participant
involvement alone is already enough to remove unsupported_capability but is not
evidence that the capability's behavior is described. Decide/document whether a
contextual work action/state observation counts as behavioral coverage; traverse
reuse without double counting or recursion hazards.
Seams: `validation.rs` and checks UI/context navigation, plus shared server lint
output. Acceptance fixture has one covered leaf, one uncovered leaf, a parent
exchange, an unsupported mission and repeated/reused occurrences. Each warning
locates the right record, disappears after the matching repair, reappears on Undo,
and never rejects Apply/Save or invents an allocation.
### 4. Correct release-facing scope/help and provide one complete walkthrough (P1)
Rewrite stale current claims in scope.md and guide.rs after the respective
integrations; append clear superseding state in PLAN/TASK_LEDGER rather than
letting an old narrative decide current acceptance. The normative reST should
continue to describe one contract; correct the OA ExchangeAllocation discrepancy.
Keep historical native evidence's revision/platform limits explicit.
Use one worked engineering story: OA mission/roles/communication and alternative
process → reviewed SA responsibility boundary → typed boundary/data contracts →
scenario and degraded mode → artifact evidence → graphical edit reflected in a
commented source module → REST edit/reload and an intentionally rejected stale
update → local crash checkpoint restore. Help steps must name actual controls and
explain containment versus allocation versus occurrence reuse. Search should find
each topic, and contextual links must respect drafts. This is authoring/navigation
acceptance, not a request for another tutorial framework.
### 5. Close current native and final release gates (P1)
Use the bounded table fixtures on Windows and Linux at default and minimum size,
including the changed current actions, compact process form, keyed review and
recovery flows. Record exact build hash, model/source oracle, undo/reopen result
and serious runtime output; a prior test count is not fresh proof. Then run strict
workspace tests/clippy/fmt, optimized desktop/server, supported compiler/platform
checks, reST/OpenAPI/examples/migrations and real HTTP rejection/restart contracts.
Finish with fresh independent semantic, workflow and packaging review. Root's
current builds/native trials may discharge rows after this report was written.
## Explicit bounds and unresolved interpretation
Do not add LA/PA components, deployment, a simulator, native .capella/.aird import,
or the full SysML metamodel to close this audit. Generic constraints already carry
descriptive engineering constraints; this audit has not established that every
Capella duration/time-constraint class or capability-configuration class is a
necessary new first-release primitive. Reusable process references are implemented;
links into their internal contributions remain a separately recorded semantic
extension, not something current same-context SequenceLink should silently infer.
If an acceptance story requires that extension, freeze occurrence/path identity
and control-flow rules before implementing it. These boundaries preserve the
objective's OA/SA focus without calling known required work complete.
+134
View File
@@ -0,0 +1,134 @@
# Current milestone native QA — deterministic fixture, 2026-09-06
Root is the sole native operator. This plan performs no native input and does not
declare UI acceptance. Fixture and validator are ignored local test artifacts,
not user data or production code.
## Fixture and production oracle
Pristine input: `.local/native-fixtures/state-actions.arcadia`.
Project UUID: `f0060906-0000-4000-8000-000000000000`.
Use a copied file under `.local/native-fixtures/runs/` for every destructive or
crash trial. Do not overwrite the pristine fixture or use a real project.
Expected current-source5 graph: 14 elements, 10 relations, one saved state view,
8 placements, no artifacts or traces. The production validator lives at
`.local/native-fixtures/validate-state-actions.rs`; it decodes through
`persistence::decode_with_report`, validates, proves canonical parse/model
equality/idempotence, and asserts the counts and projection geometry. It writes
`state-actions.canonical.arcadia` as a model oracle. Its exact run output and
pristine SHA256 are recorded in `state-actions.validation.txt` and
`state-actions.sha256.txt` when validation completes. An old source3 example was
used only as syntax reference; the fixture itself is new source5 with fixed IDs.
Production validation completed successfully using a separate direct-rustc helper
linked to the built core (no Cargo/shared-target writes): schema5, 14 elements,
10 relations, 1 diagram, 8 placements, 0 artifacts/traces, **0 issues**;
8 projected nodes and 3 routed edges; Ready y180 and nested region y430;
canonical parse equality and idempotence passed. Pristine SHA256:
`9CDE82608110E56AA9E14C9E33EB38976F53AED74AB013145D411D5743A0EC26`.
Open SA → Behavior → **Pressure operation** and its existing **Pressure operation
— saved state view**. All IDs below share `f0060906-0000-4000-8000-` with the listed
12-digit suffix. The System owner is Pressure controller (`000000000001`), machine
`000000000002`, Ready `000000000004`, nested Monitoring region `000000000005`.
| Visible Ready content, top to bottom | Selection / exact model oracle |
|---|---|
| `entry / Retained entry notes` | Existing prose on Ready, not a StateAction relation |
| `entry / Restore settings` | Entry work link `000000000030`, Entry, target function `000000000010` |
| `do / Monitor pressure` | Do work link `000000000031`, Do, target function `000000000011` |
| `exit / Release resources` | Exit work link `000000000032`, Exit, target function `000000000012` |
| `INTERNAL · Refresh status` plus its typed trigger/guard/effect summary | Internal transition `000000000033`, Ready→Ready, Sample tick Event `000000000013`, guard `pressure_valid`, effect work Monitor pressure |
| Monitoring region containing Start monitoring and Sampling | Actual semantic nested region; its top must be below all preceding rows |
Ready reserves 232 world units of header (64 basic +28 prose +84 typed actions
+56 internal row). There are exactly three projected/routed transition edges;
neither typed actions nor the internal transition are graph edges. The referenced
functions have actual Allocation to Pressure controller and no state-view node
placements. They are not Ready's contained children.
## Typed action and saved-view trial
1. At 1440×900, use Fit, inspect all content above, then use readable zoom. Click
each typed action row: corresponding relation and phase/target appear in
Properties, with selected-row highlight. Right-click resolves the same action
identity. Click Internal: inspect the actual transition. Selection must not
dirty the model, move nodes or display a phantom contained Function.
2. Repeat at supported minimum 1100×700, including scrolling/pan and opening the
inspector. Rows must remain independently selectable; source/target/phase and
Create/Cancel/Apply controls must be reachable with no overlap or clipped
essential controls. Capture visible evidence at a readable scale, not only Fit.
3. Follow/select target Monitor pressure through normal model navigation and
rename it `Monitor pressure QA`. Return to the state view: Do row follows the
new name, its relation/target IDs remain `...031`/`...011`. Undo restores the
original text; Redo restores QA text. Other phases and legacy prose stay exact.
4. Fold Ready: all typed/internal content and nested region disappear without
semantic deletion. Unfold: content, phases, reference IDs and child order return.
Save to a trial source file and reopen the actual file through the native UI.
Verify stored collapse choice, current name and all fixed IDs/positions. Use
source/core parsing for the saved model, not an object-count-only oracle.
5. Restore the original fixture for other trials. Record binary hash, viewport,
platform, saved file and serious runtime output. Desktop tests passing does
not substitute for these gestures; Linux and Windows evidence are separate.
## Explicit recovery trials
Run each from a fresh trial copy unless a combined case is explicitly desired.
Wait for the application's checkpoint completion signal/storage evidence before
the root deliberately terminates the fixture app to simulate a crash. Reopen and
choose the offered snapshot explicitly. A normal discard/close has a different
meaning and is not a crash test. Restore must reopen a detached unsaved project;
the original source file bytes must remain unchanged until an explicit new Save As.
| Draft surface | Authored state before crash | Restore oracle |
|---|---|---|
| Numeric property | Data → Retry budget (`...014`), change Integer minimum from `0` to raw `-`; attempt Apply to demonstrate rejection | Exact `-` survives in its field; accepted minimum remains 0, maximum4, default none, unit attempts. Repair to1 applies only after user action; undo returns accepted0. |
| Source | Textual model, append `// SOURCE_DRAFT_KEEP_ME` and an unterminated declaration/string; preserve an actual newline in raw text | Same raw bytes/lint location return, while graphics still show accepted fixture; no auto-Apply or generated-text replacement. Revert/repair is explicit. Include an additional dirty detached buffer in a separate trial if the UI offers it. |
| State behavior | Configure Ready→Idle transition; name `BEHAVIOR_DRAFT_KEEP_ME`, guard `pressure.pending`; enable timed trigger but leave its expression as three spaces. Submit rejects with time-expression guidance | Pending form remains on Pressure operation with name, guard, timed choice, whitespace and endpoints retained. No Event/transition created. Repair expression to `2 s` and explicitly submit only after confirming restored raw state. |
| General workflow | Start a relationship from Pressure controller; set name `WORKFLOW_DRAFT_KEEP_ME`, leave required target unset (or clear it), and demonstrate blocked submission | Same selected relationship kind, source, exact name and missing target remain. No relationship silently created by restore. Complete target/submit is an explicit new action. |
| Combined accepted+raw | Commit target rename `Monitor pressure QA`, then create invalid source draft with the marker above | Restored accepted graph has QA name with same IDs, plus exact unapplied invalid source bytes. It must not restore the pristine graph or apply the bad draft. |
| Semantic workflow | Use the root's separately validated OA/SA semantic fixture; stage a Candidate numeric `-`, a literal multiline Annotation expression and unfinished reference pair | Decisions, raw values and unfinished pair survive against the exact accepted model fingerprint; no restored commands execute. A snapshot with mismatched accepted model must reject visibly. This state-only fixture intentionally has no fake counterpart traces. |
For every restore: selection/owner/perspective must expose the retained draft;
changing page must not erase it; Cancel returns to the accepted model; failure to
decode one version/path must not overwrite source files. Verify a successful Save
As writes only the chosen new destination and no hosted credentials/destination
were resurrected. Recovery checkpoints are user-local and separate from model
files; no auto-recovery into the original file is accepted.
## Evidence completion
Append actual results with exact scope after root operation: fixture decoder
output, Windows normal/minimum, Linux normal/minimum, saved core/source comparison,
property/source/behavior/workflow/semantic recovery, and unchanged original-file
hash. Leave unoperated scenarios marked pending rather than inferring them from
adjacent successful tests.
## Native finding: a saved state view opened in Architecture
Root observed the fixture open on Architecture with the generic renderer: Ready
reserved the 232-unit header but omitted typed/internal rows, and the toolbar
offered function/boundary exchange tools. The dedicated Behavior canvas already
rendered the correct content. This was a workspace-routing defect, not missing
StateAction semantics or a reason to create a second renderer.
Bounded fix routes a StateMachine projection chosen during model open, diagram
selection, reveal or other navigation into the existing Behavior workspace, with
the exact saved view and its machine owner. Selection/raw property Draft survive;
the model/source are untouched. Existing pending-behavior guards remain in force.
Explicit Architecture navigation chooses a normal same-layer view, or an empty
Architecture workspace when none exists, so the user can create an architecture
view and is not bounced back to Behavior. The architecture chooser can still open
a saved state view explicitly.
Regression coverage includes constructor and actual source Open; selecting a
second saved view; revealing a transition into a named state view; no history or
source mutation; explicit Architecture navigation with/without a normal view;
raw invalid properties and pending behavior retention. The three focused routing
tests passed, and the full current desktop suite passed **435/435** on 2026-09-06
(`.local/state-routing-desktop.log`), including the latest restored-checkpoint
Home-list regression. The older fallback-owner first-move test now starts with
a deterministically preferred Allocation view; its captured-context and first
drag transaction assertions remain intact. Native recheck of the rebuilt binary
remains pending until recorded by the responsible operator.
@@ -0,0 +1,168 @@
# Current Windows lifecycle and keyed-review verification — 2026-09-06
This is current-machine evidence on `codex/release1-continuation`, integrated
baseline c091f80 plus the uncommitted continuation. It does not supersede unrelated
historical Linux checks or claim first-release acceptance.
## Build and automated checks
User-local Rust 1.98.1 `stable-x86_64-pc-windows-gnullvm`, LLVM-MinGW 20260826 UCRT.
`cargo build --locked -p oa-desktop -p oa-server` passed. Shared normal-user
manifests allow installer-like GNU test filenames to run without elevation.
`cargo test --locked --workspace` passes **840 tests**, with the existing routing
benchmark ignored; `.local/current-workspace-tests-final.log` is the full log.
Strict all-target workspace Clippy passed in `.local/current-clippy.log` (8m24s).
Initial failures were corrected at their causes: typed action test double-applied
the camera transform; invalid Binding fixture reused one local lifeline; core
Annotation/Binding replacement reordered retained rows; a hosted timeout test
incorrectly assumed a 30ms deadline guaranteed server admission. The held-response
test now permits pre-admission timeout while preserving outcome uncertainty and
no-retry checks. Independent recovery review also found and fixed write/restore
workspace limit disagreement, preserving the prior usable checkpoint on rejection.
## Isolated native lifecycle trial
The actual debug GUI runs with `LOCALAPPDATA` redirected to
`.local/native-qa/appdata`; no user recents or recovery store was used. Captures and
input use the Computer Use skill's native Sky API. Root is sole native operator.
Default client size is 1440×900; minimum client size 1100×700 was reached through
native border resizing. No screenshot or unit test substitutes for this run.
1. Home starts empty, offers New/Open/example/guide and clear recent-file guidance.
Loading the rescue example displays the existing OA architecture and 21-file
source project. This does not create a file destination.
2. Inserted ` unfinished_recovery_draft` after `arcadia 5;`. Apply rejected it at
`project.arcadia:1:12`, preserved the exact raw source and left the 41-element,
26-relation accepted model intact. Architecture remained inspectable and
explicitly blocked property editing until source drafts were resolved.
3. Observed a completed private checkpoint containing that exact token, then
forcibly stopped only the trial's verified Studio process. After restart,
Home offered the retained project. Recover restored the source draft, located
error and unsaved-copy status. Undo history was absent as specified.
4. Reverted the intentional source error, then Save as chose
`.local/native-qa/recovered/project.arcadia`. All **21 saved files compare
exactly** with the checkpoint's accepted bundle (zero mismatches). Both retained
recovery entries were retired, no checkpoint remained, and stderr was empty.
5. Home displayed the saved project in Recents. At 1100×700 the action rows,
current-project card, recent Open/Remove and guide entry remained readable and
reachable. Recent Open loaded the source project with its identities intact.
6. Replaced the project UUID property with raw `-`. Apply rejected it without
changing the model. After observing its completed checkpoint, a second forced
trial-process stop/restart recovered exactly `-` in the identity field. Origin
is displayed as context on Home; restore still opens a copy without a save
destination. Save & continue rejected the raw UUID and retained the draft.
Open's discard decision then allowed moving to the next isolated fixture.
Local forensic artifacts: `source-draft-before-crash.json`,
`property-before-crash.json`, the 21-file recovered directory and per-process
stdout/stderr logs under `.local/native-qa`. These contain synthetic example data.
## State-action trial and open finding
Production-parser-validated `.local/native-fixtures/state-actions.arcadia` has
14 elements, 10 relations, 1 saved state view, 8 placements and no issues. In
Behavior & scenarios, Ready shows legacy Entry prose, typed Entry/Do/Exit work
rows, an Internal transition and a nested region without overlap. Each of the
three typed rows selects its actual StateAction relation; the inspector confirms
the corresponding phase, Ready source and Restore settings / Monitor pressure /
Release resources target. Selection does not mutate the saved model.
**Open native finding:** opening a file whose first diagram is a StateMachine
lands in Architecture's generic graph renderer, with blank action-header space
and functional/boundary exchange tools. The dedicated Behavior canvas renders
and selects correctly. A bounded routing correction is being investigated; do
not call the state-view entry workflow accepted before it is fixed and rerun.
Still required for this milestone: updated-binary preflight/routing checks,
pending behavior/workflow crash recovery, state-row compact/fold/edit/save checks,
Annotation/Binding native Take/Candidate/history/source oracles, fresh independent
review closure and strict checks. Linux and complete release acceptance remain
separate required gates.
## Semantic review in progress
The validated `semantic-keyed.arcadia` fixture opens in Traceability and exposes
the Navigation message review. Members/rows can browse OA and SA origin Record
fields separately, choose their nested latitude fields and stage the exact pair.
Take Operational shows proposed `latitude_deg + 0.25`, one decision, three
reference pairs and zero additional changes. A completed checkpoint contains this
pending semantic workflow and Take decision; `.local/native-qa/semantic-before-crash.json`
preserves it. The trial process was then forcibly stopped, leaving the executable
unlocked for the routing build. Restore/Apply/source-oracle comparison is next.
Several immediate captures during heavy compilation preceded the app's next paint;
fresh captures showed the intended picker menus. This was not an empty-choice
defect. Native dialogs also sometimes needed focus and input retried after a fresh
observation; folder navigation completed fixture opening. These observations do
not justify changes to model or field-picker semantics.
## Recovered semantic review and Save-as history finding
Updated routing binary SHA256 `70069D6CBBE1917E1597794B3E190FF9CF23664D458F794B3270DDBE6EE683A2` launched as isolated PID7580. Home recovered the pending Annotation review, retaining one Take decision and three explicit reference pairs. Regenerated validated preview showed `latitude_deg + 0.25`; Apply succeeded with zero additional changes. Save as `.local/native-qa/semantic-accepted.arcadia` exactly matched the independent after-take source oracle (SHA256 `9AB573C92BE66E3BAE659DD826923BA6066979B1651EDDA7BD469056632CD77E`), including comments, typed history, sibling value and order. Checkpoint retired after Save.
Native history check found a production defect: changing the entry basename through Save as creates an extra Document transaction. First Undo only restores the prior entry name; saving it preserves after-take content and clears redo through another entry rename. Second Undo reached the real semantic transaction and saved exact initial source (SHA256 `49214BE2CA9C8BB6195C3B39737C053847021839F70F0BB2921D35A1FBD2AC83`). Root assigned non-history Save-as adoption/preflight correction and meaningful history tests to state_contract. One-step Undo/Redo after renamed Save remains unaccepted until rebuilt native recheck. Current Linux runtime is prepared and checksum verified but has not booted.
## Binding rejection, crash recovery and repair accepted
On routing binary70069D6C, the paired Rendezvous binding was explicitly staged. Candidate `SA Rendezvous extra local` rejected with `duplicate_lifeline_binding: Scenario-use lifeline bindings are one-to-one.` Apply was disabled. Switching Reference pairs / Properties retained the decision and error. A completed checkpoint preserved the exact after-Take accepted source and invalid local UUID; forensic copy `binding-invalid-before-crash.json`.
Forced stop of isolated PID7580 and restart PID796 recovered the same candidate, presence and two reference pairs, regenerated the same error and kept Apply disabled. Repair to `SA Rendezvous alternate` produced a valid preview and zero additional changes. Native Apply + Save as into a new folder retaining the entry basename matched the complete after-repair oracle exactly (SHA256 `E3CE0347746584F503B825A8B6BD23A7EEBF0827940112EF8F36D500C1D0A043`). One Undo + Save matched after-Take exactly; Redo + Save matched after-repair. Saved copies are under `.local/native-qa/binding`.
A new UI finding is clipped Use pair / Remove pair controls on Reference pairs at the normal1440x900 window. Semantic worker constrained the panel widths; rebuilt native inspection remains. The debug gnullvm executable needs `.local/toolchain/env.ps1` PATH during launch: a launch without it exited before a window with no app log. Packaged GNU runtime dependency closure must be checked explicitly; this does not change prior successful toolchain-environment runtime evidence.
## State-view routing and pending behavior checkpoint
Routing binary70069D6C opened the saved state fixture directly from Home/Recents into Behavior, exact machine and diagram selected with state tools. Explicit Architecture remained reachable with an empty architecture view, and selecting the saved state view there routed back correctly. At1100x700, toolbar/inspector remained usable, zoomed Exit action selected its StateAction relation, direct State placement into Main region created one state/placement, and one Undo restored the original14elements/10relations and clean document. The initial fixture file is unchanged.
Right-clicking the Internal row opened Edit transition. Authored name `Unfinished timed refresh` with a checked new timed trigger and empty expression retained the existing trigger/effect/guard, showed the required-expression message and disabled Apply. The form scrolls at1100x700. Completed checkpoint `behavior-before-crash.json` contains exact unchanged accepted fixture plus the authored pending behavior draft. Isolated process796 was forcibly stopped for rebuild/recovery testing; no native GUI is currently running.
# Packaged clean-PATH smoke — 2026-09-06 continuation
QA package `ArcadiaStudio-qa-debug-20260906-a-x86_64-pc-windows-gnullvm`
(older binary SHA25670069D6CBBE1917E1597794B3E190FF9CF23664D458F794B3270DDBE6EE683A2)
launched as process5452 with PATH exactly `C:\Windows\System32;C:\Windows`,
working directory `.local/package-clean-smoke`, and separate app metadata there.
The packaged libunwind.dll resolved the development-PATH dependency: actual Home
rendered, Explore rescue example showed41objects/26links with nested architecture,
and the offline Engineering guide rendered16topics. Alt+F4 closed the app normally;
the next native window inventory no longer contained it; process5452 was absent and
both stdout/stderr were zero bytes. This launch did not open
or modify the pending behavior checkpoint in the other QA appdata directory.
The guide search Clear button was partially clipped at1440width. Root added explicit
Fill constraints to the search, content and step rows; updated native acceptance is
pending. The old package does not include complete Rust dependency notices, identified
by independent review; it remains QA evidence, not a distributable release. This smoke
does not establish final-binary portability or fresh package Save/reopen acceptance.
# Recovered timed transition and corrected Save-as history
2026-09-06, process10896, staged desktop SHA256
660BECC8DB96B218D12805B39661B46C9F48DF4F8F07CB3B7D42C1F803BE089F,
system-only PATH, isolated native-qa/appdata. Home Recover opened checkpoint
5a81ce27-e331-4165-9eab-8f190493f376 in Behavior with the exact raw name
`Unfinished timed refresh`, Internal Ready-to-Ready endpoints, Sample tick,
pressure_valid guard, Monitor pressure effect and Update status display notes.
Timed event remained enabled with empty expression and the time-expression error;
the accepted properties still said Refresh status. Enter30 s made Apply available.
One Apply created Event49044cb7-5f91-408a-86fc-1cc012eb2972 and edited only the
existing transition, leaving15elements/10relations and expected3coverage warnings.
Native Save-as selected a different entry basename, state-recovered-renamed.arcadia.
Accepted entry SHA256AD8FD359CE7B0BE4F3AE0F55424EEB4EE032DEFB359F2F5AD89C00A79B62DADF
includes sa/model.arcadia, whose sole new Event body is Time(After,30 s), SHA256
8FB649F8ABB93CF4C321F2D847A1A9F1A1551E0F713E938C46EF11E24DC58801.
One Ctrl+Z removed the Event and restored Refresh status. Ctrl+S produced entry
bytes exactly equal to pristine state-actions.arcadia, SHA256
9CDE82608110E56AA9E14C9E33EB38976F53AED74AB013145D411D5743A0EC26.
Ctrl+Shift+Z remained available after that save, restored the same Event and
transition, and Ctrl+S reproduced the accepted entry exactly. Both saves retired
all private recovery JSON files. Oracles are retained under .local/native-qa as
state-after-timed-repair.arcadia, state-after-timed-repair-event.arcadia and
state-after-undo.arcadia. Full reopened bundle parsing remains a follow-up check;
entry byte equality alone is not claimed as independent whole-model comparison.
Home Continue editing returned to the same Behavior owner/view and camera.
Native resize to1100x700 retained all9navigation pages. The Engineering guide at
that minimum size showed the entire Clear control and wrapped readable article
text, closing the observed clipping finding for that size. Ordered review and
reference-pair modal native acceptance remain pending.
@@ -0,0 +1,63 @@
# Current Home/recovery cross-feature review — 2026-09-06
Bounded read-only review of current `home.rs`, `home/tests.rs`, `recovery.rs`,
`app/checkpoints.rs`, app open/save/result handlers, `app/save_as_tests.rs`, and
semantic ordered/recovery adapters. No native input or Cargo was used for this
review. Existing native evidence is `release-current-native-verification.md`;
it records actual older-binary source/property/Annotation/Binding recovery and
state routing, not acceptance of every current source change.
## Finding and authorized correction
**P2: Home Resume discarded the actual workspace choice.** `home_event` sent
`Page::Diagram`, which is deliberately explicit Architecture navigation. Open
the state-only saved fixture (Behavior), visit Home, then Resume: that navigation
clears the active state view to an empty Architecture page. Text/Data/Traceability
also returned to Architecture. This is navigation loss, not model loss.
Root authorized a bounded correction after this finding: `App` now remembers its
last actual non-Home page; Home Resume requests that page. Constructor state-view
routing initializes the remembered page correctly; explicit Architecture keeps
its existing behavior. Three focused `home_resume` tests cover all eight pages,
repeated Home navigation, exact state view and explicit Architecture, raw invalid
source/property drafts, and accepted-document identity. Source edits are limited
to `app.rs` and `app/checkpoints.rs`. Formatting/diff checks passed. Tests and
native recheck are pending root's current build queue; earlier compiled test
binaries must not be claimed to include this correction.
## Other reviewed boundaries
* **Old v1 semantic checkpoints:** the actual synthetic
`.local/native-qa/semantic-before-crash.json` has checkpoint version 1, semantic
version 1, one decision, and **no `orders` field**. The current closed `Saved`
schema adds `orders` with `#[serde(default)]`; it restores an empty order-draft
map while retaining existing decisions/rows/references. Its exact accepted-model
fingerprint is still checked, and `refresh` recomputes a plan rather than
executing saved commands. No incompatibility found by inspection. A current
deserialize/replan regression now removes that field from valid and rejected
raw v1 candidates, checks exact intent retention and rejects a changed accepted
model. It is authored but awaits the root test run; the prior native restore
predates the ordered addition.
* **Current restored Home card:** `checkpoint_loaded` removes the restored ID
from the displayed entries immediately, and Refresh filters both current and
restored IDs. Save retires checkpoints only when all accepted/raw/workflow work
is clean. The current focused test checks immediate removal. Distinct retained
generations after a second crash are not proof of duplicate identity; the old
snapshot intentionally remains until clean save/discard.
* **Failed saves:** current result handlers leave the accepted document, raw
workspace, recents, save destination, and recovery checkpoints in place on
failure; pending multi-file save recovery is surfaced separately. Successful
renamed Save-as adoption is revision checked and does not add semantic history.
No new failure-path defect found. Previously closed late-write races were not
rerun or counted as new review evidence.
* **Externally changed includes:** ordinary Save retains the loaded physical
expectations; a recovered checkpoint opens detached and retains no old disk
binding. Save-as uses the destination's admission/expectation path and refuses
collisions rather than silently overwriting an original include. No new
cross-feature overwrite path found. This is code review plus existing focused
tests, not a new fault-injected disk or native run.
Limits: no current-binary crash execution, filesystem permission failure, Linux
runtime, execution of the new old-v1 deserialize test, or post-fix Home Resume native acceptance was
performed here. One concrete navigation finding was reported and implemented;
the remaining reviewed paths produced no additional concrete correctness defect.
+76
View File
@@ -0,0 +1,76 @@
# Home and recent models — implementation, 2026-09-06
The DATA continuation baseline did not contain Home/start or recent-model code.
This slice adds `oa-desktop/src/home.rs`, its storage tests, `mod home`, and the
Home view/navigation in `views.rs`. The lead has added App lifecycle and recovery
integration; integrated tests and native acceptance remain pending below.
## Behavior and interface
`Page::Home` presents New, Open, the rescue example, the engineering guide,
Continue editing, recent local model files and available recovery snapshots.
Home hides the modeling sidebar/inspector. Horizontal navigation remains reachable
at the existing minimum window width. Recovery rows use the lead's
`recovery::State` entries and warning, and emit `Event::Recover(Id)`.
The module emits typed `home::Event` values. New/Open/Example/OpenRecent/Recover
must pass through the existing App Pending/save/discard guards; Guide/Resume use
existing Page navigation. Home does not modify or read model contents. Refresh
checks file availability. Remove only forgets recent-file metadata. Missing or
unavailable files remain visible with a Locate action using the normal Open picker.
`home::State::default()` is memory-only for deterministic tests and constructors.
`load_default()` loads metadata without creating directories. `remember(&Path,
&str)` is called only after successful accepted local Open/Save; `forget(&Path)`
and `refresh()` handle the corresponding Home actions. Preserve the Home state
across App reset; do not reload it on each document replacement. JSON export,
failed writes, rejected/stale save receipts and canceled opens are not recents.
`home::data_directory()` returns LOCALAPPDATA/ArcadiaStudio on Windows, otherwise
XDG_DATA_HOME/arcadia-studio or HOME/.local/share/arcadia-studio. There is no
current-directory fallback. Recent metadata is `recent-models.json` under it.
Recovery may reuse this helper with a separate subdirectory.
## Storage guarantees
At most 12 canonical local file paths and bounded display names, most recent
first; no model content, source text or credentials. Writes use a same-directory
temporary file, sync and atomic replacement; Unix also syncs the parent directory.
The existing `tempfile` dependency moved from dev-only to runtime.
The reader bounds input to 256 KiB, rejects unknown fields/versions and invalid
entries, and keeps malformed/unsupported metadata unchanged. Failures are visible
and leave session history usable. Missing model files never disappear from history
merely because a drive is disconnected. Metadata removal does not remove files.
## Verification status
Eight focused storage tests cover side-effect-free first load, bounded order/deduplication
and durable replacement, missing/forgotten files, restored availability, malformed/
future/oversized history preservation, failure/retry, malformed entries and absence
of model content from the store. They are written but not yet executed while the
lead bootstraps the new local Windows gnullvm toolchain. `git diff --check` passed.
Three App integration regressions additionally cover newer unsaved work surviving
a successful older Save receipt, checkpoint completion while a context menu is
open, and deferred discard/close cleanup of a late write before closing. Four
context-menu tests now explicitly use the demo fixture instead of startup.
README and the in-app Files/Recovery guide describe Home, recents, ten-second
private checkpoints, raw buffers, detached Save As and the missing undo history.
Owned Rust files were formatted successfully using the already installed GNU
toolchain's rustfmt executable (gnullvm initially lacked that component).
Still required: compile/tests after lead App/recovery wiring; App lifecycle tests
for dirty model/drafts and stale file/save completions; actual default/minimum
window Home/recent/missing-path/recovery operation. No native input was issued.
## Independent integration review
Read-only review identified exact accepted-source comparison, unsupported property
buffer paths, source-path admission, completion events blocked by context menus,
stale-save checkpoint retirement, in-flight discard retirement and JSON-import
recent-history gaps. Findings were sent to the lead; several corrections are
already present but have not been exercised. Missing include paths legitimately
exist in Workspace.reachable without a loaded buffer, as source_files inserts
them before I/O. Recovery must preserve these repair states rather than require
reachable to be a subset of files. App::new test fixtures that require the example
must explicitly use with_project(Project::demo()), avoiding user-local state.
@@ -0,0 +1,34 @@
# HTTP concurrency fixture completion review
The integrated run exposed completion watchdog assumptions in two existing real
HTTP tests, not a demonstrated catalog-locking or revision-commit defect.
The slow-source test's two-second catalog read and winning PATCH assertions
completed before its old 25-second candidate-completion watchdog expired.
The oversized test's five-second candidate-validation watchdog also expired;
its separate catalog responsiveness assertions had passed.
A focused experiment extending the slow-source completion watchdog exposed the
actual response: the 2,000-deep accepted fixture returned HTTP **504** after
31.05 seconds. The service has a real 30-second request deadline. Waiting longer
cannot turn that response into the intended 412 conflict, and accepting 504 here
would lose this test's revision-conflict proof.
The concurrency fixture now uses 1,000 nested activities. It retains the
100-millisecond unfinished-request assertion, two-second catalog/PATCH bounds,
exact 412 `revision_conflict`, revision 2, winning model content, and persisted
disk equality checks. Its completion watchdog is 45 seconds, enough to observe
the real service deadline. The oversized import/replacement/candidate checks
use 30-second completion watchdogs while retaining their separate five-second
catalog bounds, exact `model_limit` rejection and no-mutation checks. Only test
fixtures/watchdogs changed; production service behavior is unchanged.
Focused verification on the same `-p oa-server --test http` feature graph:
| Test | Result | Test duration |
|---|---|---|
| `accepted_slow_source_does_not_lock_catalog_and_loses_to_a_newer_http_revision` | 1 passed | 13.13 s |
| `oversized_source_and_json_are_rejected_without_stalling_the_catalog` | 1 passed | 25.71 s |
Logs: `.local/server-completion-focused.log` and
`.local/server-oversized-focused.log`. These focused passes do not establish the
result of the next integrated workspace run under concurrent test load.
+133
View File
@@ -0,0 +1,133 @@
# Linux release verification options — 2026-09-06
This note records an initial read-only feasibility inspection, subsequent portable QEMU preparation and pilot, and the later user-authorized switch to WSL. The chronological sections distinguish preparation, actual Linux execution, and outstanding release acceptance. No Windows feature/security setting was changed by these investigations.
## Observed environment
- Windows 11 Pro, 2 logical CPUs, 8 GiB physical RAM; approximately 3.6 GiB free physical memory at inspection. `C:` had approximately 29.3 GiB free. `D:` is the mounted Windows installation DVD, not historical `D:/CodexBuilds`; that historical directory is absent. `Z:` is a network/shared-folder drive with approximately 17.7 GiB free, not a suitable assumed local VM/build disk.
- `wsl.exe` exists but both `wsl --status` and `wsl --list --quiet` report that Windows Subsystem for Linux is not installed. No Docker, Podman, QEMU, VirtualBox, Multipass or GitHub CLI executable was found through normal command lookup or their conventional installation directories. No WSL/vmcompute service was found by the bounded service-name query.
- `WinHvPlatform.dll` exists. A read-only `WHvGetCapability(WHvCapabilityCodeHypervisorPresent)` query returned HRESULT `0`, 4 bytes written and **false**. The Windows system-information flag `HypervisorPresent=true` does not establish usable nested acceleration for a new guest. QEMU WHPX should therefore be treated as unavailable now. Microsoft's [capability API](https://learn.microsoft.com/en-us/virtualization/api/hypervisor-platform/funcs/whvgetcapability) and [QEMU WHPX prerequisites](https://www.qemu.org/docs/master/system/whpx.html) distinguish API availability from the required hypervisor platform.
- Git's bundled SSH executable and 7-Zip are installed. No known Linux remote host is supplied by the current environment; no SSH configurations, credential stores or account sessions were inspected. An SSH client alone is not a remote Linux resource.
## Repository routes and one corrected regression
The configured origin is `https://gitlab.com/unbleaklessness/ARCADIA-Studio`. The tracked CI definition is `.github/workflows/ci.yml`, with Windows/Ubuntu jobs for fmt, strict clippy, workspace tests, release builds and executable artifacts. There is no tracked `.gitlab-ci.yml`. The GitHub workflow cannot be assumed to execute on the GitLab origin; no running pipeline or accessible GitHub mirror was established. It also has no interactive Linux desktop acceptance stage, full distribution assembly, restart/deployment probe or final package checksums.
`deployment/Dockerfile` builds only the server on Rust 1.90/Bookworm and packages it in Debian Bookworm slim; `deployment/arcadia-server.service` describes a real installed Linux service with a restricted service account. Neither recipe supplies a local Linux kernel or proves deployment. Inspection found that the newly included `build/windows_manifest.rs` was missing from the Docker source context, even though its runtime body skips Linux. Root corrected this with `COPY build ./build`. This is a corrected code-inspection finding, not a successful Docker build.
## Concrete options
Times and working-disk figures below are planning estimates, not benchmarks. They include this Rust/Iced/WGPU project rather than only the guest OS.
| Route | What it can establish | Expected resources / elapsed time | Constraint or risk |
|---|---|---|---|
| Known Linux workstation/VM or authenticated CI runner supplied later | Native Linux builds, tests, MSRV, real HTTP/restart and packages; interactive desktop if a supported display/control route is provided | Typically 10–25 GiB build workspace; 1–4 hours initial automated work on a modest accelerated host, plus acceptance work | No such host/access is currently established. Do not invent endpoints or initiate authentication. CI logs alone do not establish GUI behavior. |
| User-local QEMU TCG + Ubuntu 24.04 minimal cloud image | A real Linux kernel/userspace executing Linux binaries and tests; a real Linux graphical session with a lightweight desktop and Mesa software Vulkan | About 0.45 GiB initial QEMU installer + image downloads, then guest packages/toolchain/crates. Budget a 20–24 GiB sparse guest disk, 2–3 GiB guest RAM plus 2 GiB guest swap. Provisioning could take 1–3 hours; full cold workspace build/test/release under TCG may take 8–24+ hours and must be measured | No hardware acceleration presently available. CPU emulation plus software Vulkan may make interactive acceptance slow. Remaining Windows RAM/disk is tight; pause heavy Windows builds before starting. This is emulated Linux acceptance, not Linux hardware/GPU-performance evidence. |
| User-local QEMU TCG + Debian amd64 netinst, lightweight Xfce session | Same real Linux execution categories as above | Netinst downloads only needed packages; roughly 4 GiB OS + Xfce before Rust/build outputs, with the same 20–24 GiB working-disk budget and TCG timing risk | Installer is more interactive than a seeded cloud image. Debian coverage does not replace the repository's documented Ubuntu 24.04 package-runtime claim. [Debian requirements](https://www.debian.org/releases/stable/amd64/ch03s04.en.html), [task sizes](https://www.debian.org/releases/stable/amd64/apds02.en.html). |
| Full Ubuntu Desktop installer under TCG | Ubuntu desktop environment without manually adding a session | Official Ubuntu 24.04 guidance asks for at least 25 GB storage before this project's build workspace | Poor fit for ~29 GiB currently free and 8 GiB total host RAM. Prefer minimal Ubuntu plus only needed GUI/runtime packages. [Ubuntu installation guide](https://ubuntu.com/desktop/docs/en/24.04/tutorial/install-ubuntu-desktop/). |
| WSL2/WSLg, Docker Desktop, Hyper-V, VirtualBox or WHPX installation | Potentially faster real Linux environments after setup | Likely needs Windows feature/driver installation and possibly reboot; nested virtualization also matters on this already virtualized host | Not a user-local equivalent of portable QEMU TCG, and outside this inspection's allowed actions. The earlier rejected build-tools installer is not authorization to modify these features. |
| Windows cross-build/MSYS2/Cygwin or downloaded Linux artifacts only | Compilation or artifact inspection | Potentially smaller/faster than a guest, but desktop Linux linking still needs a target sysroot/native dependencies | Does not execute Linux tests, filesystem behavior, service restart or Linux GUI. Cannot close the remaining Linux release gates. |
## Recommended feasible local pilot
Use a bounded **Ubuntu 24.04 minimal QEMU/TCG pilot** if no actual Linux host becomes available. This keeps the documented runtime family and avoids system feature changes. Do not commit to a full emulated build before measuring its speed.
1. Obtain a pinned Windows QEMU build from the Windows provider linked by [QEMU's download page](https://www.qemu.org/download/). The linked [Stefan Weil distribution](https://qemu.weilnetz.de/w64/) currently lists approximately 197 MB installers and matching SHA-512 files. Prefer extracting the payload under ignored `.local` with the available 7-Zip, then verify the binaries and firmware are runnable without installer execution; portable extraction has **not** been tested here. Do not silently substitute an installer requiring elevation if extraction fails.
2. Use Canonical's [Ubuntu 24.04 minimal amd64 QCow2 image](https://cloud-images.ubuntu.com/minimal/releases/noble/release/), currently listed as 252 MB with SHA256SUMS and signatures. Pin the dated release and checksum in the evidence ledger instead of relying on a moving URL. It is a UEFI/GPT bootable disk: configure matching x86 UEFI firmware from the QEMU bundle and an independent writable variables file, and create a separate sparse overlay rather than modify the downloaded base.
3. Seed a fresh guest account using cloud-init NoCloud. A tiny CIDATA ISO/FAT seed is one option; [NoCloud also supports SMBIOS configuration with an HTTP seed directory](https://docs.cloud-init.io/en/latest/reference/datasources/nocloud.html), avoiding a host ISO-building dependency. The seed can contain new disposable guest credentials/keys, never existing user credentials. Keep the seed and source transfer server scoped to a task-specific directory. Use QEMU's unprivileged user-mode networking and loopback-only host forwarding, not TAP/bridges; [QEMU documents this backend as requiring no administrator privilege](https://www.qemu.org/docs/master/system/invocation.html).
4. Start at 2 GiB guest RAM, 1–2 emulated CPUs and `-accel tcg`; add 2 GiB guest swap. First verify boot, ext4 write/reopen, package networking, Rust installation and one small core compile/test. Record wall time, available host memory and real allocated disk after 30–60 minutes. If the pilot cannot make useful progress without sustained host paging, prefer an actual accelerated Linux host rather than consuming the Windows acceptance environment.
5. Copy a snapshot of the exact source revision plus any explicitly recorded uncommitted patch into the guest filesystem; do not build on the shared `Z:` drive or use Windows target output as a Linux cache. Build with one Cargo job and incremental compilation disabled if disk pressure requires it; the repository already sets dev debug info to zero. Reserve at least 5 GiB free host disk for Windows, logs and final evidence. Sparse virtual capacity is a maximum, not a guarantee of low physical use; measure growth before each major stage.
6. Provision only required Linux build libraries and a lightweight Xorg/desktop session initially. Add Mesa Vulkan software rendering and inspect `vulkaninfo` before launching Studio. Mesa documents the software-driver ICD naming, including `lvp_icd.x86_64.json`, in its [installation guide](https://docs.mesa3d.org/install.html); discover the actual installed path. Set the recorded WGPU/Vulkan environment intentionally. A displayed Linux window must be exercised through the root's permitted GUI-control surface. An Xvfb screenshot or successful process launch is only a smoke test. Add a real Wayland session separately if both display-backend acceptance claims are required.
The milestone output should include Linux kernel/distribution, Rust versions, emulator/CPU/RAM/rendering mode, exact source revision, automated command results, real HTTP/restart results, native workflow evidence, fresh package hashes and known limits. TCG does run the Linux binary on a Linux kernel; it does not justify claims about physical Linux hardware acceleration or performance. No current Linux release gate is closed by this feasibility report.
## Preparation completed later on 2026-09-06 — VM not booted
Root authorized download, verification and local extraction after the read-only feasibility pass. All pilot files are in ignored `.local/linux-qa`; no installer was executed, Windows feature changed or existing credential read. There is no extraction blocker.
| Prepared input | Pinned URL / verified result |
|---|---|
| QEMU Windows payload | `https://qemu.weilnetz.de/w64/qemu-w64-setup-20260811.exe`, 206,615,928 bytes. SHA-512 matches `https://qemu.weilnetz.de/w64/qemu-w64-setup-20260811.sha512`: `5bcf9eed634e8575a37b74f445af41a2fe4106da512d0c30c368301d4c105037fdfab40a5287367a28a957624cddebbc8c07e16c88ab6634f554cdf3d16bf543`. |
| Ubuntu disk | `https://cloud-images.ubuntu.com/minimal/releases/noble/release-20260905/ubuntu-24.04-minimal-cloudimg-amd64.img`, 264,372,224 bytes. SHA-256 matches the same dated directory's `SHA256SUMS`: `46b0dbaffa6950a7da5ff2dc5ed34c46084610b3b6d1fae8f1ec2d7e953984a3`. |
These are matches against the published checksum files fetched over HTTPS; no independent OpenPGP signature verification is claimed. QEMU was extracted with the installed 7-Zip into `.local/linux-qa/qemu`. Its console executable reports **11.1.0 (v11.1.0-12130-ge470268ff4)**. `--version`, `-display help` and `qemu-img info` exited successfully as the normal user; GTK and SDL display backends are listed. No guest was launched by those probes.
QEMU's x86_64 firmware descriptor specifies `share/edk2-x86_64-code.fd` (3,653,632 bytes) and `share/edk2-i386-vars.fd` (540,672 bytes). The latter was copied to the task's independent `runtime/uefi-vars.fd`. `qemu-img info` recognizes the downloaded image as clean QCow2, with 3.5 GiB virtual capacity. `runtime/pilot.qcow2` is a separate **20 GiB virtual** overlay backed by that unchanged image; its initial physical file size is 197,120 bytes. Prepared files occupy approximately **1.61 GiB** in total; `C:` retained approximately **27.4 GiB** free at preparation completion. No unrelated caches were removed.
`seed/user-data` and `seed/meta-data` configure only the disposable guest account `arcadia`, its new Ed25519 public key, password-disabled SSH, hostname and no package update/upgrade. The private key exists only under `.local/linux-qa/keys`; it is not embedded in the seed, report or tracked files. Public-key fingerprint: `SHA256:36NIvdOXSeBW4ifQFCqQD6Tgfi6PU0aFc1r+mLA9yCk`. The pinned Ubuntu package manifest includes cloud-init and openssh-server, so first-boot SSH does not depend on a package-install command.
`serve-seed.cjs` binds **127.0.0.1:18080** and serves only `/user-data` and `/meta-data`. A brief host-only smoke test verified both responses and 404 rejection of private-key/path-traversal requests; the server then stopped. `launch-pilot.cjs` syntax and `--describe` passed. It waits for seed-server readiness, then would launch QEMU with:
- `q35`, `tcg,thread=multi`, CPU `max`, 2 vCPUs and 2 GiB RAM;
- read-only UEFI code, independent writable variables and the 20 GiB overlay;
- Virtio disk/network and user-mode networking with **only 127.0.0.1:2222 → guest:22** inbound forwarding;
- NoCloud SMBIOS seed URL `http://10.0.2.2:18080/`, no monitor listener, serial output to `runtime/serial.log`, headless display by default;
- hidden helper processes with logs/PIDs confined to `runtime`; `--gui` selects GTK when interactive verification is authorized.
The complete resolved argument vector is in `.local/linux-qa/ready-command.json`. **The following command is ready but has not been run; root retains the boot/resource gate while Windows work and the optional existing-Linux-host question are pending:**
```powershell
& 'C:\Users\User\.cache\codex-runtimes\codex-primary-runtime\dependencies\node\bin\node.exe' .local/linux-qa/launch-pilot.cjs
```
After an authorized boot completes, the intended guest connection uses the disposable key and a separate task-local host-key file:
```powershell
& 'C:\Program Files\Git\usr\bin\ssh.exe' -i .local/linux-qa/keys/guest_ed25519 -p 2222 -o IdentitiesOnly=yes -o UserKnownHostsFile=.local/linux-qa/keys/known_hosts -o StrictHostKeyChecking=accept-new arcadia@127.0.0.1
```
The key connection, guest boot, cloud-init, network-to-host seed access, guest filesystem growth, Rust build speed and Linux GUI remain untested. No swap or toolchain packages have been provisioned in the guest. Preparation creates a reproducible pilot starting point, not Linux release acceptance.
## Bounded QEMU pilot — actual guest execution
Root authorized a headless pilot with **one vCPU and 2 GiB RAM**, initially bounded to 30 minutes, then allowed one 10-minute recovery extension after network/account setup made useful progress. Processes were hidden; networking remained user-mode NAT with loopback-only host listeners. A task-local watchdog sampled memory/disk every 20 seconds, with stop thresholds of 512 MiB free host RAM and 5 GiB free disk. Concurrent Windows work reached 100% host CPU, so timings below describe a contended two-CPU machine, not an isolated emulator benchmark.
| Attempt (2026-09-06 PDT) | Observed result |
|---|---|
| 15:37:47–15:47:10, original headless display | Ubuntu kernel/root filesystem/systemd started, but BOOT/UEFI/ttyS0 device jobs timed out before udev coldplug completed. Numerous framebuffer slow-work warnings. No SSH. Disk and logs retained as `runtime/attempt1-*`. |
| 15:47:51–15:54:14, fresh overlay with `-vga none` | Framebuffer warnings disappeared. The same device-job timeouts caused emergency mode; VGA removal alone did not fix startup. Logs and pre-recovery disk retained as `runtime/attempt2-*`. |
| From 15:55:03, retained second disk with loopback TCP serial | GRUB automatically retried with initrd after previous initrdless failure. Device jobs still initially timed out. Coldplug, cloud-init network setup and mount recovery eventually completed. SSH with the disposable `arcadia` key succeeded; cloud-init finished at 16:08:17, about **13m14s** after this launch. |
| 16:10:51–16:14:10, after guest timeout adjustment | Relaunched following a clean guest reboot request. Startup reached serial-getty/user sessions without the earlier recorded device timeout at that point. The user then supplied WSL and root directed stopping QEMU; post-reboot SSH/file verification was not completed. |
The third attempt established **real Linux execution**: Ubuntu 24.04.4 LTS, kernel `6.8.0-139-generic`, x86_64 under QEMU TCG. `cloud-init status --long` returned `done`, `errors: []`, and `recoverable_errors: {}` with `DataSourceNoCloudNet [seed=dmi,http://10.0.2.2:18080/]`. The root filesystem expanded to 19 GiB, with 514 MiB used and 18 GiB available. `lsblk` confirmed `vda15` labeled UEFI mounted on `/boot/efi` and `vda16` labeled BOOT mounted on `/boot`.
The guest obtained `10.0.2.15` with gateway `10.0.2.2`; DNS resolved `archive.ubuntu.com`. An explicit write, `sync`, and reread of `~/pilot-check.txt` returned the exact `arcadia-linux-pilot` content. The guest reported 1961 MiB RAM, 281 MiB used, 1679 MiB available and no swap. `systemctl --failed` listed zero units after bootstrap recovery. No existing credentials were inspected or tried. The maintenance prompt never yielded a root shell; access used only the seeded disposable SSH identity. No package installation, Rust toolchain, source transfer, Cargo build/test, GUI session, or Linux release gate was completed.
To accommodate observed late coldplug under TCG, the authorized guest-only file `/etc/systemd/system.conf.d/90-tcg-pilot.conf` contains:
```ini
[Manager]
DefaultDeviceTimeoutSec=600s
DefaultTimeoutStartSec=600s
```
`systemctl daemon-reload` followed by `systemctl show` confirmed both defaults at 10 minutes. This is an emulator bootstrap allowance, not an application performance relaxation. These settings are supported by [systemd 255's documented manager configuration](https://raw.githubusercontent.com/systemd/systemd/v255/man/systemd-system.conf.xml). A clean `sudo systemctl reboot` completed, after which QEMU exited as configured by `-no-reboot`. The subsequent cold startup was interrupted by the authorized WSL switch; a fully verified clean reboot remains outstanding.
At the 16:12 resource summary, 91 samples across attempts showed minimum free host memory **2026459136 bytes (1.89 GiB)** and minimum free disk **24309592064 bytes (22.64 GiB)**. The current overlay file length was **36831232 bytes**, plus preserved failed-attempt overlays of 7995392 and 6619136 bytes. These are QCow2 file lengths, not the advertised 20 GiB virtual capacity. Windows build output also consumed host disk during the pilot.
All pilot processes were stopped on the WSL switch after verifying their identities: QEMU 9008, seed 8780, launcher 10840, watchdog 1244 and serial client 2544. `.local/linux-qa/runtime/guest-timeout-reboot.log`, attempt logs, resource samples, saved overlays and task-local known-hosts remain available. The launch helper now uses `-vga none` and loopback TCP serial `127.0.0.1:4444` with serial logging; `serial-console.cjs` sends only explicitly written task-local command messages. The watchdog still records this pilot's fixed start/budget and must be assigned a **new explicit budget before any future pilot**. Do not reuse its expired deadline accidentally.
This experiment does not establish that Linux is unavailable. It established usable Linux SSH/filesystem/network behavior and a concrete boot-timing issue with a guest-only adaptation. If WSL cannot run, the retained booted guest is a valid fallback for a further measured pilot; plan roughly 15–20 minutes for a bounded cold-boot/recovery check before committing to Rust provisioning. Full emulated-build and GUI timings remain unmeasured.
## User-installed WSL — distro attempt and pending host restart
The user subsequently reported installing WSL and explicitly authorized creating a Linux test distro. The QEMU pilot was stopped as directed, preserving its disk and evidence. WSL inspection now reports **WSL 2.7.13.0**, kernel **6.18.33.2-2**, WSLg **1.0.73.2**, and default version 2. No existing distributions were registered; none were modified. `Ubuntu-24.04` is listed by `--list --online`.
The current runtime is not yet usable: `wsl --status` reports that WSL2 cannot start because virtualization is unavailable. Read-only component/service checks found VirtualMachinePlatform enabled (CIM InstallState 1), WSL1's optional component disabled (2), WslService running, and no vmcompute or hns service. **Component Based Servicing reports RebootPending=true.** CPU inventory reports virtualization firmware/extensions/SLAT false while HypervisorPresent is true. These observations do not distinguish an outstanding Windows reboot from every nested-virtualization constraint; complete the pending user-controlled reboot and recheck first. No restart, Windows feature change, service-start override, registry edit, WSL global setting or existing credential access was attempted by the agent.
Prepared the official [Ubuntu 24.04.4 WSL image](https://releases.ubuntu.com/24.04.4/ubuntu-24.04.4-wsl-amd64.wsl) under `.local/linux-wsl/ubuntu-24.04.4-wsl-amd64.wsl`: **391541571 bytes**, SHA-256 **`9b2f7730dc68227dd04a9f3e5eab86ad85caf556b8606ad94f1f29ff5c4fd3f5`**, matching the release directory's HTTPS `SHA256SUMS`. No independent OpenPGP verification is claimed. This is the supported Ubuntu WSL root-filesystem image, not the earlier QEMU QCow2.
The distro-only attempt deliberately avoided an install command that might enable Windows components:
```powershell
wsl.exe --import ArcadiaLinuxQA `
C:/Users/User/Documents/Git/ARCADIA-Studio/.local/linux-wsl/ArcadiaLinuxQA `
C:/Users/User/Documents/Git/ARCADIA-Studio/.local/linux-wsl/ubuntu-24.04.4-wsl-amd64.wsl `
--version 2
```
It failed after **524 ms**, before registration, with `Wsl/Service/RegisterDistro/CreateVm/HCS/HCS_E_SERVICE_NOT_AVAILABLE` and a required-feature-unavailable message. A following distro list remained empty; WSL removed the attempted empty install directory. Exact decoded outputs are retained in `.local/linux-wsl/{status,version,list,help,import-result,post-import-list}.json`. Microsoft documents the distro-import operation and separate platform installation in [WSL commands](https://learn.microsoft.com/en-us/windows/wsl/basic-commands) and [installation guidance](https://learn.microsoft.com/en-us/windows/wsl/install).
There is **no WSL guest session, initialized Linux workspace or installed Linux toolchain yet**. Host resources after QEMU shutdown and image download were approximately 3.97 GiB free RAM and 21.82 GiB free disk. After the host prerequisite is resolved, recheck `wsl --status` and `wsl --list --verbose`; if the task name remains absent, the verified image and `.local/linux-wsl/import.cjs` can retry the same isolated import without another download. The helper refuses an existing install directory, so inspect any partial state rather than overwriting it.
Once that distro actually starts, create its task-local non-root build account/workspace, provision only the required Rust/native prerequisites, and coordinate source snapshot identity with the Windows owner. Build inside the distro filesystem, not `/mnt/c` and not the Windows Cargo target. Start with one Cargo job and an isolated Linux target directory; the first proposed check, after prerequisites and source transfer, is `CARGO_BUILD_JOBS=1 CARGO_INCREMENTAL=0 cargo test --locked -p oa-core --lib`. Measure its wall time, peak memory and disk growth before broad workspace/GUI provisioning. Reserve at least 5 GiB free host disk. WSL installation by itself does not close any Linux build, runtime, GUI or package acceptance gate.
@@ -0,0 +1,64 @@
# Rust 1.90 Windows readiness audit
The locked Windows runtime/build dependency declarations do not rule out the
workspace's Rust1.90 minimum. This is a declaration audit and toolchain preparation,
not a successful MSRV compilation or runtime claim.
Fresh `cargo metadata --locked --offline --format-version 1 --filter-platform
x86_64-pc-windows-gnullvm` was collected with the existing task-local stable toolchain.
Starting at `oa-desktop` and `oa-server`, traversal of selected normal/build dependency
edges yields **266 packages**:183 declare `rust_version`,83 do not. None declares a
minimum above1.90. Highest external declaration is `ordered-float 5.5.0:1.90`;
Iced0.14, wgpu27.0.1 and the selected ICU2.3 packages declare1.88.
Missing or inaccurate declarations and project source compatibility still require
an actual compiler check. Dev-only and non-Windows target dependencies are outside
this runtime declaration count.
Provenance is retained under `.local/msrv-readiness/`: target-filtered metadata,
selected package names/versions/manifests/minima, summary, download manifest and
installation logs. Cargo.lock SHA256:
`E7B95AFAC40A11823FA68D615FCAD97DEEB878C8FA1E83B28561BE5A81896112`.
No dependency, source, workspace target or global configuration was changed.
## The exact requested host triple is unavailable in Rust1.90
`rustup toolchain install 1.90.0-x86_64-pc-windows-gnullvm --profile minimal
--no-self-update` failed with “target ... not found in channel”. The official
[Rust1.90 distribution manifest](https://static.rust-lang.org/dist/channel-rust-1.90.0.toml)
contains gnullvm target standard libraries, but no gnullvm-host rustc/cargo packages.
The [Rust1.91 release announcement](https://blog.rust-lang.org/2025/10/30/Rust-1.91.0/)
records promotion of Windows gnullvm to host-tools support. Raising the declared
MSRV merely to use this host triple would confuse host packaging with language/
library compatibility.
The viable preparation uses `1.90.0-x86_64-pc-windows-gnu` as compiler host and adds
`x86_64-pc-windows-gnullvm` target libraries. Installation was launched using the
existing task-local Rustup homes under `.local/toolchain`, minimal profile,
`--no-self-update`, and explicit target. Installation completed successfully.
`rustup run` reports rustc1.90.0 (`1159e78c4`, LLVM20.1.8) and cargo1.90.0
(`840b83a10`). Installed targets include both GNU and gnullvm. Exact version output
and compiler hashes are in `installed-provenance.txt` and `compiler-hashes.json`
in the ignored audit directory. The task environment still selects stable gnullvm,
and Rustup's pre-existing GNU default/settings remain unchanged.
## Subsequent verification, owned by the root build operator
After installation, dot-source `.local/toolchain/env.ps1`, invoke the compiler using
an explicit `+1.90.0-x86_64-pc-windows-gnu`, and pass the explicit gnullvm target.
Use a separate task-local target directory to avoid invalidating the current
stable/native acceptance artifacts. For example, once target ownership is granted:
```powershell
. .local/toolchain/env.ps1
$env:CARGO_TARGET_DIR = Join-Path (Get-Location) '.local/target-msrv190'
cargo +1.90.0-x86_64-pc-windows-gnu check --locked --workspace --all-targets --target x86_64-pc-windows-gnullvm
```
That check includes test code/dependencies and can reveal gaps beyond this runtime
declaration audit. An actual build/link and appropriate tests are still needed
before asserting MSRV support. The existing clang linker configuration applies to
the gnullvm target; GNU host build scripts/proc macros use the installed GNU host
toolchain. Linux/Docker Rust1.90 remains a separate platform verification gate.
After this preparation, the user enabled WSL; the root operator may prefer a
Linux1.90 check before allocating a second Windows compilation tree. No MSRV Cargo
compilation was started by this audit.
@@ -0,0 +1,109 @@
# OA communication means — independent design critique
Read-only production review, 2026-09-06. Recommendation: add a first-class
`CommunicationMean` relation over OA Entity/Actor endpoints and reuse the existing
`ExchangeAllocation` relation. Do not widen the meaning of existing boundary-port
records silently. Root retains the contract decision; no production edits made.
## Primary evidence
Capella's [OperationalAnalysis.ecore](https://raw.githubusercontent.com/eclipse-capella/capella/master/m2/plugins/org.polarsys.capella.core.data.def/model/OperationalAnalysis.ecore)
defines CommunicationMean as a specialization of ComponentExchange and exposes
sourceEntity/targetEntity as direct aliases of its endpoints (lines 1597–1632).
Entity includes actors in its documented operational meaning. The inherited
[FunctionalAnalysis.ecore](https://raw.githubusercontent.com/eclipse-capella/capella/master/m2/plugins/org.polarsys.capella.core.data.def/model/FunctionalAnalysis.ecore)
defines optional orientation, default false, and allocation of functional
exchanges (lines 2522–2545). ComponentExchange also participates in the event/
operation abstraction. These establish a useful shared exchange family, not a
requirement to force operational entities through SA typed ports.
## Why the smaller-looking BoundaryExchange change is risky
Current `RelationKind::permits` requires Port→Port. `ports::validate_relation`
checks participant ownership through each endpoint's parent, Legacy/Standard/Flow
contracts and carried interfaces. `validate_relation_context` rejects endpoints
with equal parents: applied directly to nested OA sibling entities it would reject
valid communication. `ports::validate_exchange_allocation` again treats endpoint
parents as performers and classifies Interaction allocation as legacy. Its legacy
branch warns OA users to introduce typed ports they cannot create, and checks only
the forward pairing even for an unoriented boundary.
Projection identifies BoundaryExchange endpoints as ports; endpoint picking,
reconnection, connection creation, interface checks and scenario participant
resolution all contain related assumptions. Changing only `permits` yields an
inconsistent product. A proper tagged endpoint sum could represent both semantics,
but it requires migrating every BoundaryExchange and all these consumers. A new
relation variant exposes each required exhaustive integration explicitly while
leaving old records, identities and authored source intact.
## Small explicit contract to freeze
- `CommunicationMean { source, target, oriented, items }`; distinct same-layer OA
Entity or Actor endpoints, optional carried OA ExchangeItems, no child ports.
Initial `oriented=false` follows the primary model; users can choose direction.
Multiple named means between the same pair remain valid engineering alternatives.
- `ExchangeAllocation { source: mean, target: interaction }` is relation-to-relation
allocation. Do not duplicate allocated-interaction IDs inside the mean. Preserve
old BoundaryExchange→Interaction and BoundaryExchange→FunctionalExchange records.
- Match actual direct Activity Allocation owners. Missing/ambiguous allocation is
an actionable incomplete-allocation warning; a known contradictory owner is an
error. Role realization alone does not silently establish an actual allocation.
For unoriented means consider both complete pairings; when one owner is unknown,
the other known owner must still belong to at least one admissible pairing.
- The mean carries every allocated Interaction item, using existing item-type
satisfaction rules. Editing either item list revalidates its allocations
atomically. Means may be created before their Interactions; incomplete work must
remain possible without inventing responsibilities or allocating parents.
- ParticipantInteraction scenarios may reference means; OperationalActivity
scenarios/process exchange contributions continue to reference Interactions.
An unoriented ordinary message resolves direction from explicit sender/receiver
lifelines. A correlated same-mean Reply reverses the actual Call binding, including
a reverse Call on an unoriented mean. Keep the existing operation-response
convention rather than invent simplex hardware constraints from `oriented`.
This direction convention is a Studio decision to specify, not established by
the primary schema's orientation sentence alone.
## Compatibility and transition traps
`transitions::mapped_relation` currently clones BoundaryExchange into the other
layer. Direct OA participant endpoints mapped to SA participants are not component
ports. Two OA entities may also map to one System: their operational communication
need not become an external boundary exchange. Never auto-generate SA ports or
self-boundaries from that fact. A bounded first implementation should explicitly
report an unsupported/omitted counterpart until a user chooses the corresponding
SA boundary and its ports; preserve the OA mean and any existing manual trace.
Schema 5 is current. `migration_v4::Project4` embeds live Relation/Diagram types;
adding a live variant can accidentally make a schema-4 envelope accept a new
construct. Freeze a deliberate version policy and add negative old-version
source/JSON admission tests. Do not rewrite frozen migration fixtures or reinterpret
legacy ports as entities. An explicit future conversion must account for port-level
artifacts, interface roles, diagrams and endpoint references before removal.
Generic reference traversal must visit items; endpoint visitors alone are
insufficient. Deleting a mean removes its allocations, routes, trace links and
dependent occurrences, while preserving their Interaction definitions and
cross-layer counterparts. Deleting/reparenting an actual work allocation must
revalidate the new OA allocation contract without accidentally invoking the SA
port-allocation cascade.
## Required user journey and falsification tests
Start empty: place two OA entities/actors; create allocated activities and an
Interaction; draw/name a Communication means edge between participant cards;
select carried items and allocate existing Interactions using a filtered picker.
The inspector exposes both communication and activity layers with direct navigation.
Render the mean on participant boundaries, keep work allocation nested, and show
allocated Interactions as selectable rows rather than extra allocation arrows.
Endpoint reconnect preserves UUID/alias/prose/items/routes/artifact owners and
retains rejected edits. No OA Port form should appear in this journey.
Acceptance must falsify: mixed-layer/Role/Port/Activity endpoints; same endpoint;
wrong/unknown/role-only performer; forward/reverse/unoriented and partial-owner
allocation; missing carried items and later item changes; multiple means per pair;
reverse unoriented Call and correctly correlated Reply; forbidden process/viewpoint
use; folded containers and missing placements; sibling nested entities; exact
reconnect/undo/redo; remap/delete/reparent; no automatic SA boundary after participant
collapse. Source+JSON+REST must agree, reject atomically, and retain identity and
comments through reidentify, include movement and server restart. A standalone OA
mean plus later allocation must be usable without SA or LA/PA work.
+284
View File
@@ -0,0 +1,284 @@
# OA communication means — bounded contract decision, 2026-09-06
Status: proposed for root synthesis. Production was read only. Investigation uses
HEAD c091f80 plus current integrated changes. No implementation, tests or native
acceptance are claimed. This closes the representation question raised by
release-current-coverage-20260906.md, not the feature itself.
## Recommendation and evidence
Add a first-class `CommunicationMean { source, target, oriented, items }` relation
between OA participants, retaining existing identified `ExchangeAllocation`
relations to its allocated `Interaction`s. Keep `BoundaryExchange`'s port endpoint
contract intact. Share exchange-item/allocation helpers where their semantics
agree, and use a dedicated OA validation branch where participant endpoints differ.
The official Arcadia activities reference describes operational Interactions
between activities and their allocation to communication means between
stakeholders. It also connects stakeholder scenarios to these exchanges. This
establishes the engineering need independently of a Capella UI convenience.
[Arcadia reference, activities 5.1.1.2.4–8, PDF page 21](https://www.eclipse.org/capella/resources/arcadia-reference/Arcadia%20Reference%20-%20Activities.pdf).
Capella's OA schema makes CommunicationMean a named relation specializing
ComponentExchange and gives it direct sourceEntity/targetEntity aliases. Its
inherited exchange contract includes orientation (default false) and allocations
to functional exchanges. These are conceptual evidence, not a requirement to copy
the whole EMF inheritance structure. [OperationalAnalysis schema](https://raw.githubusercontent.com/eclipse-capella/capella/master/m2/plugins/org.polarsys.capella.core.data.def/model/OperationalAnalysis.ecore),
[FunctionalAnalysis schema, ComponentExchange](https://raw.githubusercontent.com/eclipse-capella/capella/master/m2/plugins/org.polarsys.capella.core.data.def/model/FunctionalAnalysis.ecore).
The installed Capella benchmark also observed an OAB communication-means tool;
see release-capella-workflow-benchmark.md.
## Current facts that constrain the decision
- `BoundaryExchange` has port source/target, orientation and items.
`RelationKind::permits` accepts Port→Port; `ports.rs` uses each endpoint's
semantic parent as its participant. `projection.rs` treats these endpoint IDs
as ports, and validation rejects same participant-owner connections.
- OA ports admit only `Legacy`, which ordinary creation does not offer.
`app.rs::add_element` redirects all Port creation to SA typed port actions.
Thus new OA entity communication has no ordinary authoring path.
- Core `ExchangeAllocation` already accepts BoundaryExchange→Interaction in OA
(the language.rst table's SA-only statement is inaccurate). Its legacy branch
checks actual work Allocation, checks carried items, and emits a typed-port
resolution warning. That warning is inappropriate as guidance for OA.
- `ports.rs::actual_performer` uses an actual Allocation. Broader
`validation::effective_performer` can resolve role-based responsibility; those
functions must not be casually interchanged in a transport-allocation check.
- ParticipantInteraction scenarios permit Interaction and BoundaryExchange today.
`message_endpoints` mostly returns the stored relation tuple, with the tuple
reversed for a same-exchange Reply. It does not handle ordinary reverse messages
on an unoriented declaration.
- `transitions.rs::mapped_relation` clones BoundaryExchange, while
`sa_port_omissions` omits typed SA ports and dependent boundary relations on the
reverse transition. Merely adding another enum arm cannot provide a valid
bidirectional communication transition.
- `migration_v4::Project4` shares current `Relation` rather than freezing its
constructor set. Adding a live enum variant without old-version admission
checks would accidentally admit the new meaning under schema4.
## Alternatives compared
| Criterion | A. New CommunicationMean relation | B. BoundaryExchange with direct OA endpoints | C. First-class OA port contract |
|---|---|---|---|
| Engineering meaning | Constructor explicitly means OA participant communication | Same tag means participant→participant in OA and port→port otherwise; readers must inspect referenced records | Adds named OA endpoint objects beyond the established participant relation need |
| Existing source/API behavior | Additive tagged variant; old boundary shape/meaning stays fixed | Shape unchanged but endpoint semantics broaden; old tools cannot distinguish it from a malformed boundary | New port constructor and new endpoint workflow, plus existing boundary semantics |
| Allocation | Dedicated OA branch reuses ExchangeAllocation IDs and item validation | Allocation must branch on layer and endpoint kind before every owner/Legacy check | Reuses port parents, but needs new ownership/interface/direction rules |
| UI and nesting | Draw entity→entity; no extra boxes or hidden semantic records | Same visual result, but labels/tools/inspectors need contextual relabeling everywhere | Users create ports before communicating, or UI invents extra identities |
| Traceability | Independent means identity owns artifacts; explicit typed boundary counterpart | Existing relation tag is reusable, but actual counterpart conversion still changes endpoint families | OA port→SA port mapping appears tempting and can falsely imply technical design equivalence |
| Migration | Old data preserved; optional reviewed conversion is explicit | Old relation remains valid, but its constructor no longer identifies one endpoint family | Existing Legacy cannot be silently promoted; interface/direction meaning still needs review |
| Maintainability | More exhaustive matches initially; compiler exposes missing integration seams | Fewer enum edits but more hidden assumptions in port/scenario/projection/transition code | Largest permanent semantic surface and authoring burden |
A wins because it makes a real semantic distinction explicit without inventing
OA port design. B is viable only with a shared tagged endpoint abstraction used
throughout projection, validation, scenarios, transition and API documentation;
that is a larger architectural change than the apparent one-line permits edit.
C becomes attractive only if user studies establish independently named OA
communication endpoints, their distinct contracts and artifact references as a
primary modeling need. Current evidence establishes participants and means.
## Proposed minimum contract
The following are **Studio design choices** unless explicitly sourced above.
1. `CommunicationMean` is a Relation with ordinary immutable identity, alias,
exact name/description and body fields `source: Id`, `target: Id`,
`oriented: bool` and `items: Vec<Id>`. Source keyword: `communication_mean`.
Both endpoints must be different OA Entity or Actor elements. No System,
SystemActor, Activity, Role or Port endpoint is admitted. Nesting is not an
endpoint, allocation or deployment relationship.
2. Default `oriented false`, shown as “Bidirectional” in creation. `true` means
ordinary directed use follows source→target. Stored source/target order is
stable even when unoriented; reversing display does not rewrite identities.
Parallel means are valid: “Radio” and “Telephone” can join the same entities.
No physical medium, protocol, capacity or connection kind is inferred.
3. Items are distinct same-layer ExchangeItem references, using the existing
item-nature/mechanism/type contracts. `[]` is an explicit empty carried set,
not a wildcard for allocated interactions. Referenced external interface or
medium specifications can remain ordinary ArtifactLinks/Constraints; do not
add a protocol execution engine or fictitious contained physical equipment.
4. `ExchangeAllocation { source: means_id, target: interaction_id }` is a
separately identified same-layer relation. The target must be Interaction;
a CommunicationMean cannot allocate an SA FE or another communication means.
One means may allocate many Interactions; an Interaction may have several
explicitly modeled means (alternatives/redundancy). Do not collapse those
links or infer routing/execution exclusivity. Duplicate exact endpoint pairs
can be diagnosed as redundant but must not change historical admissibility
of other ExchangeAllocation kinds in this slice.
5. Let `(a,b)` be the actual allocated participants of an Interaction's activity
endpoints and `(s,t)` the means endpoints. For oriented means the only
admissible pair is `(s,t)`; for unoriented means either `(s,t)` or `(t,s)`.
Compare every known actual participant against these whole pair candidates.
If none survives, reject the allocation. If a participant is missing, retain
the allocation with a located incompleteness warning; do not guess through
a role or parent entity. A role-only assignment is intentionally unresolved
for this concrete allocation even if `effective_performer` can compute a
unique candidate. Help should offer adding/reviewing actual Allocation.
6. Every allocated Interaction item must satisfy at least one declared means
item, using the existing inheritance-aware `items_satisfy` direction. A
specialized carried item may satisfy its declared base, not conversely.
An allocation action may offer an explicit preview to add the missing item
declarations atomically; it must not silently widen the means contract.
7. Reconnect/reorient/edit of a means validates all dependent allocations and
scenario occurrences atomically. Invalid raw form edits remain recoverable.
Removing a means removes its incident allocation relations and follows normal
occurrence/reference deletion policy; it never deletes the global Interaction,
activities, participants or their unrelated ports. Removing an allocation
removes only that identified link. Reidentification updates every live
reference while preserving historical review semantics under existing rules.
### Participant scenarios and direction
Admit CommunicationMean for ParticipantInteraction and compatible MixedLegacy
scenarios. OperationalActivity scenarios and process contributions continue using
Interaction; SA BoundaryInterface scenarios use SA boundary/functional exchanges.
Messages refer to the existing means, not copied declarations. Each occurrence
retains its own ID, name, annotations and actual sender/receiver lifelines.
Provide a shared pure endpoint resolver used by core validation, direct-drawing
eligibility, form choices and renderer. For an unoriented means, test both ordered
endpoint pairs against explicit sender/receiver semantic representations. Exactly
one compatible pair resolves direction; missing bindings remain incomplete,
conflicting bindings reject, and two viable role-based pairings require explicit
participant binding rather than arbitrary tie breaking. All consumers must use
the same answer. Ordinary oriented messages allow only the stored ordered pair.
A correlated Reply follows the existing operation-response convention: when it
uses its Call's means, it reverses that Call's **resolved** endpoints, including
a Call traveling opposite the stored tuple on an unoriented means. It must not
blindly reverse the means tuple. Keep this response exception for oriented means
as well; orientation is not evidence of a physical simplex link. A separate reverse
means can also be selected and must match the correlation. No physical full-duplex
guarantee follows. This choice was criticized independently: a transport-level
Reply prohibition would impose hardware semantics absent from the primary OA
contract and conflict with current FE/Boundary operation conventions.
### Bidirectional OA↔SA transition and reviewed semantics
CommunicationMean↔BoundaryExchange is an explicit exchange correspondence, using
the existing `TraceKind::Exchange` broadened to this pair (or an explicitly named
new trace kind if root prefers); ordinary source/target/item/orientation facets
must participate in source-v5-style historical semantic review. A Manual trace
alone is insufficient if the UI claims meaningful counterpart updates.
OA→SA creation first requires reviewed participant counterparts. The communication
request then has **per-relation endpoint decisions** to reuse or explicitly create
compatible SA component ports on those selected owners. Port kinds, orientation,
items/interfaces and PortAllocations must be chosen/validated, never inferred from
“Radio” or from an OA entity. Keep entity→participant correspondence separate from
means-endpoint→port decisions; putting entity→port in the global reference map can
corrupt other participant mappings. Proposed defaults are inspectable drafts.
SA→OA maps the owners of selected boundary ports to OA participants and creates
or reuses the CommunicationMean with mapped items/orientation. Typed SA ports and
PortAllocations have no fabricated OA port counterparts. The reverse omission
closure must explicitly recognize this valid projection before removing the
boundary relation and its dependent ExchangeAllocations. If both owners map to
one OA participant, or a System-boundary decision remains unresolved, report a
conflict rather than making a self means or dropping the relation silently.
Endpoint review must show “OA participant” versus “SA port — participant owner”.
Keep/Candidate can retain or choose valid technical endpoints. Take of an OA
endpoint needs the explicit per-relation endpoint decision; it cannot paste the
mapped participant ID into the SA port field. Existing Source/Target baseline
facts remain exact identities, not silently normalized owner facts. Reusing the
current scalar facets is possible, but their transfer adapter must be explicit.
Orientation facet applicability and ExchangeItems membership must cover the new
constructor, including unknown/deleted historical references and exact resets.
## Concrete examples
Illustrative new-version source fragment, assuming OA declarations `rescue_boat`,
`control_centre`, `distress_report` and Interaction `report_distress` already exist:
```text
communication_mean rescue_radio "Rescue radio" id "00000000-0000-4000-8000-000000000601" {
source @rescue_boat;
target @control_centre;
oriented false;
items [@distress_report];
}
exchange_allocation radio_carries_report "Radio carries the distress report" id "00000000-0000-4000-8000-000000000602" {
source @rescue_radio;
target @report_distress;
}
```
Valid: report activity allocated to rescue_boat, receive activity allocated to
control_centre; both participants visible in one view. A second return Interaction
can share the means when its carried items are declared. Nested entities remain
their real semantic parents; a means to a nested rescue team attaches to that team,
even if folding later promotes its visual endpoint to the outer entity.
Invalid: replacing control_centre with an SA System; allocating an Interaction
whose known receiver performer is a third entity; allocating a nonempty item set
to an empty means contract; reversing an ordinary use after setting oriented true.
Incomplete but saveable: an allocated Interaction whose receiving activity has no
actual performer yet. A missing referenced entity is a structural error, not that
kind of incompleteness.
## Compatibility and implementation seams
Recommend one new explicit schema/source version for the upcoming persistent
OA/view additions (currently next would be 6), rather than accepting new contracts
under an old frozen grammar. New decoder reads existing v1–v5 with reports and no
disk writes; new exports advertise the new version. The frozen v5 reader can reuse
unchanged values only after an explicit old-constructor/field gate. Also fix the
shared live Relation admission in v4 and verify v3's closed constructor check.
If root elects an additive current-v5 evolution, it must explicitly version the
normative contract/API capability and document that old clients reject new
models; it cannot claim unchanged v5 semantics. A deliberate version bump is
cleaner and matches previous repository migrations.
Do not automatically convert old OA Legacy boundaries: port aliases, contracts,
interfaces, artifacts and historical references contain user data. An optional
reviewed “Convert to communication means” operation can retarget a boundary to
its OA participant owners while preserving the relation's UUID, alias, name,
items, orientation, routes, artifacts and incident allocations. Retain the ports
as independent legacy records; show obsolete references and invalid dependent
scenario/trace effects in the preview. No port deletion or equivalence assertion
is implicit. OA legacy warnings must explain preservation/conversion rather than
demanding impossible typed SA contracts.
| Integration seam | Required handling |
|---|---|
| model.rs, validation.rs and ports.rs | New kind/body/constructor helpers and OA endpoint validation; shared item logic, separate participant-allocation branch; no widening SA port contracts |
| references.rs, commands/delete/reidentify, artifacts | Live endpoints/items/dependent allocations, located references, exact identity/history behavior; failed batch remains unchanged |
| projection.rs, canvas hit/reconnect/context tools | Participant anchors, orientation, full identity/selectability; Allocation and suitable overview/capability views; FunctionalDataflow remains work-level; folding is presentation only |
| workflow.rs, forms.rs, source/API command forms | Draw/configure/edit/allocate means and items, valid owner choices, explicit reject messages; no raw JSON-only feature |
| validation.rs::message_endpoints, scenario.rs and direct scenario selection | Shared orientation resolver, actual-call reply reversal, same declaration used in participant scenario and architecture |
| transitions.rs and semantic catalog/mutate/review | Explicit new mapping, reverse omission exemption, owner/port endpoint adapter, complete orientation/item/source/target drift and review |
| language parser/writer/updater, persistence adapters, OpenAPI/API docs | Closed constructor, new version and accurate examples; current and old-version rejection; source trivia preservation |
| guide.rs, scope.md, engineering example | OA activity Interaction versus participant CommunicationMean, allocation, bidirectional use, no fake ports or deployment |
## Acceptance and falsification
Use one three-participant fixture with nested entities, two different means between
the same pair, direct work allocations, role-only unfinished work, forward/reverse
Interactions and inherited data items. Exercise the following through GUI, source
and REST, then native Windows/Linux default and minimum size:
1. Create/edit/allocate/reconnect means with explicit invalid raw draft retention;
reverse allocation only for unoriented; partial known wrong performer rejects;
role-only warns; the correct repair clears only its warning.
2. Two views/folding retain relation and allocation identities; line selection,
nested member navigation, item/member editing and artifact attachment work.
3. A reverse Call on an unoriented means and correlated Reply show opposite actual
lifeline directions; repeated/reused occurrence context remains independent;
ambiguous role bindings reject rather than silently reverse.
4. Source+JSON roundtrip, commented multi-file graphical update, Undo/Redo, Save
All/reopen, raw invalid recovery, REST dry-run/reject/ETag/restart; edits to the
means never duplicate or delete the underlying Interaction definitions.
5. OA→SA choices generate/reuse valid explicit typed endpoints; SA→OA retains the
communication correspondence without OA ports. Owner collapse and unavailable
mappings reject. Endpoint drift requires a genuine reviewed choice.
6. Old v1–v5 inputs remain exact under migration. New constructor under an old
version rejects. A reviewed legacy conversion preserves references/artifacts
and never executes from merely opening a file.
Revisit the design if representative engineering work needs independently named
OA endpoints with distinct contracts that this relation cannot express, if a
Capella/native comparison demonstrates that direct participants lose essential
role semantics, or if scoped endpoint decisions cannot represent a realistic
one-to-many system realization without corrupting correspondence. These would
justify a new endpoint or realization abstraction. They do not justify making
current port-based BoundaryExchange silently accept several incompatible meanings.
+57
View File
@@ -0,0 +1,57 @@
# Recoverable local checkpoints — bounded design, 2026-09-06
Read-only investigation of current data-contract-integration baseline c091f80. Root owns implementation. No native recovery acceptance is claimed. This supersedes the initial behavior review's obsolete static-canvas baseline: current state, scenario and process direct editing is already integrated; process/scenario branches need no cherry-pick, and state branch differences are patch-equivalent (316dc55→9118218 and a8f451e→c5276b1).
## Recommended contract
Checkpoint the accepted source bundle and the unapplied source workspace separately in user-local application state. A checkpoint is a recoverable local copy, never a model save and never authorization to overwrite a prior local/hosted destination. Startup lists recoverable sessions; Restore is explicit and creates a detached unsaved document. Original path is display-only provenance. Save after restore uses Save As. A failed restore retains both the current application and the original recovery file.
Candidates considered: (1) periodically save the actual model files; rejected because invalid drafts cannot compile, external edits can be overwritten and this conflates recovery with Save. (2) persist the entire App; rejected because it includes tokens, stale async context, caches and modal state. (3) serialize a small explicit recovery DTO with source/workspace payload; selected because the canonical compiler can reconstitute the model while preserving exact comments/includes and invalid raw text.
## Checkpoint content
- Closed `format_version`, random session/checkpoint ID, monotonically increasing generation, timestamp, product/source schema metadata, human title and optional original local path label.
- Exact `Document::bundle()` accepted entry and file map. Do not format Project back to text: that loses lexical/source ownership history. No serialized compiled index is trusted on restore.
- Workspace `entry`, `active`, `applied`, `reachable`, and every loaded file buffer's **text and baseline**. This includes dirty detached files. `Workspace::bundle()` alone is insufficient: it loses the baseline used by dirty/Revert and cannot distinguish a new invalid draft from a clean loaded file. Optional cursors may be encoded as line/column integers and clamped on restore. Undo/redo stacks need not be persisted for this bounded slice, but say so in the recovery UI/help.
- Unsaved state must survive: `Document::from_bundle` calls the restored bundle saved. Use an explicit recovered-unsaved flag at App level (cleared only by successful local source save), or a dedicated Document restore constructor that also restores its saved source baseline. Prefer the flag if it avoids duplicating a second potentially large accepted bundle. Merely setting path=None does not make `App::dirty()` true.
- Do not include hosted State/session/tokens/URLs with credentials, reqwest clients, network receipts, DiskProject write expectations, pending save-journal rollback handles, compiled caches, queued commands, interaction gestures or model-menu state. Never serialize App wholesale.
**Important invalid-open case:** `open_source_project` keeps the previously accepted graphical Document when an invalid new file opens, and replaces Workspace with `applied=false`. The bundles may describe different projects. Preserve both independently; do not attempt to compile draft text to replace the accepted document during checkpoint capture or restoration. State clearly that graphics show the last accepted model while the recovered source needs repair.
Property/behavior/semantic-review drafts are separate mutable state. Accepted+per-file source coverage must not be described as recovery of every unsaved edit. For full release recovery, add explicit versioned DTOs for these drafts, preserving raw invalid fields and avoiding command replay. Until then, indicate their exclusion in the checkpoint UI and keep their existing navigation/close guards. A source-only checkpoint made while such a form is pending must not call Apply automatically.
## Capture and write integration
`App::subscription` can emit a short periodic RecoveryTick. Handle recovery ticks/completions before ordinary busy/modal gates in `App::update`, like the existing passive scroll observation: saving or a modal must not lose edits already in memory. A dirty generation is driven by accepted document revision and source workspace edits, not just document revision (unapplied text does not change the latter). Capture an immutable DTO on the UI thread, then bounded serialization/filesystem work on `spawn_blocking`; no sleep/blocking fs on UI thread.
If using a wrapper after dispatch, `App::update` has many early returns; wrapping only the tail misses SourceEdit, local/hosted loads, source include changes and prepared semantic Apply paths. A periodic snapshot comparison plus a coalesced single writer is simpler to reason about. Avoid cloning all 64MiB bundles for every mouse-move event. One in-flight write per session; if newer edits arrive, schedule the newest snapshot after completion. Completion includes session ID/generation and cannot clear/acknowledge another document's checkpoint.
Persist before cleanly leaving a recoverable session, or retain the already durable checkpoint. `reset` rebuilds the whole App; preserve the recovery coordinator and start a fresh session identity. An explicit Discard should retire only that session's checkpoint, but coordinate with in-flight writes so an old completion cannot resurrect it. A cancelled Open or Save must not retire recovery. A successful JSON export must not clear recovery: current Save deliberately leaves source dirty. A successful source save retires only the captured generation if no newer edits/drafts remain. Hosted Save likewise cannot clear a checkpoint that contains unapplied local drafts.
Windows directory: LocalAppData/ArcadiaStudio/recovery. Linux: XDG_STATE_HOME/arcadia-studio/recovery, falling back to HOME/.local/state/arcadia-studio/recovery. Resolve a stable absolute app-owned root; no fallback to repository or model directory. Use per-session immutable generation files or two generation slots plus a safe manifest. Write a unique temp file, flush/sync, then publish only the complete file. Keep the last valid generation until the new generation is durable. Handle Windows rename-over-existing behavior explicitly; do not delete the only durable snapshot before replacement. Startup ignores temp files and falls back to a previous valid generation after a truncated newest file.
The payload paths are virtual SourceBundle paths, not filesystem extraction targets. Apply existing relative/source path validation; cap checkpoint file bytes before parsing, number of files, per-file and total text+baseline bytes, and nesting before allocation. Normal draft bytes may be invalid Arcadia but still must obey resource limits. Reject absolute/traversing virtual paths, missing entry/active buffers and invalid reachable keys without deleting evidence. Unknown checkpoint versions stay listed with a clear incompatible-version message. Storage failure is nonmodal, reports that recent work is not protected, and retries without dropping model/drafts; never claim saved success from a queued write.
## Restore integration order
1. Read/validate DTO off thread and compile the **accepted** bundle through `Document::from_bundle(..., LIMITS)`; reject altered/incompatible accepted source without changing App. Require exact accepted source equality after compilation, or expose an explicit migration step; UUID generation during silent restore is unacceptable.
2. Construct Workspace from persisted text+baseline through a narrow restore API in `source_workspace.rs`. Preserve applied=false, detached buffers and dirty flags; never `Workspace::new(draft_bundle,true)`.
3. On explicit user Restore, pass existing dirty-navigation handling. Build replacement state only after preparation succeeds. Preserve current window size, guide/Home state and recovery coordinator as `reset` already does for selected persistent UI state.
4. Install prepared Document, then recovered Workspace; clear local path, DiskProject, pending save recovery and hosted document binding; assign new canvas_document/epoch and source_version. Reset gestures/forms/caches and selection to valid identities. Do not call `sync_source()` after installing drafts, because `Workspace::accept` replaces reachable dirty buffers.
5. Call `show_source_file(true)`, refresh accepted model diagnostics/index separately, and request draft lint without Apply. Select Text when unapplied/dirty draft files exist; retain explicit recovery status and unsaved marker. Keep original checkpoint until recovered work is saved or explicitly discarded.
## Falsification tests
1. Accepted nested source with comments plus two invalid unsaved file edits: checkpoint/crash/restore yields identical accepted Project and accepted bytes, exact raw drafts and correct dirty/Revert baselines. No file in the original model directory changes.
2. Dirty detached file after include removal: restore keeps it discoverable and dirty; applying reachable text retains detached draft and save guard.
3. Invalid Open from hosted A into broken local B: recovered accepted graphics remain A, draft workspace is B with applied=false, path/session/token/ETag absent; repair and Save cannot overwrite hosted A or local B without explicit destination selection.
4. Rapid edits during asynchronous write: old completion never marks newer generation protected; restart recovers latest completed generation. Change project while a write is in flight; no session collision. Discard while writing cannot recreate a discarded snapshot.
5. Restore invalid text in active included file with stale cursor: buffer text is exact, cursor clamps, lint reports the right path, Apply rejection preserves draft and accepted model.
6. Save cancelled/failed, JSON export, stale local-save receipt and stale hosted response all retain needed recovery. Successful source save with no later edits retires only its session. New edits after saved snapshot remain recoverable.
7. Truncated JSON, unsupported version, oversized bytes/map, invalid path, missing entry, invalid accepted source and read-only recovery directory each fail visibly without changing current document or deleting the last valid checkpoint. Two app instances use independent session files.
8. Explicit Restore while another model is dirty goes through Save/Discard/Cancel; Cancel leaves both models/checkpoints untouched. Source restore does not inadvertently apply property/behavior drafts.
9. Real Windows/Linux native trial: type invalid included source, wait for confirmed checkpoint, terminate process abruptly, relaunch, inspect recovery choice, Restore, fix, Save As, reopen and compare exact model/source. Repeat at 1100×700 and inspect failure/retry UI. Unit success is not a substitute for this crash/reopen workflow.
## Relevant current seams
`document.rs::{bundle,snapshot,dirty,mark_saved,from_bundle}`; `source_workspace.rs::{Buffer,Workspace,accept,discovered,dirty,detached_dirty}`; `app.rs::{update,subscription,reset,sync_source,show_source_file,open_source_project,save_to,proceed}` and Message::{SourceEdit,SourceUndo,IncludesLoaded,Loaded,Saved,Discard}. Existing pending_recovery/save-journal rollback concerns interrupted explicit model writes; autosave recovery must remain a separate mechanism and separate UI wording.
@@ -0,0 +1,85 @@
# Real REST coverage parity probe
Executed successfully against the rebuilt Windows server; see
`release-rest-coverage-verification-20260906.md` for the actual 25-request evidence.
The procedure below remains the reproducible plan, rather than a claim about other
platforms or future source6 features.
The isolated probe executes this against the rebuilt current server, using only synthetic data.
The tracked payload is `harness/fixtures/rest-coverage/coverage-probe.json`: three complete
source bundles (`incomplete`, `repaired`, `invalid`) and an `expected` array of five
exact code/object/field/file tuples. The reserved fixture alias `parent` was corrected
to `activity_group` before the successful complete HTTP run. Its semantics
mirror the core coverage fixtures that passed in the full 367-test core run.
Use a fresh store under `.local/rest-coverage-store`, a verified free loopback
port such as 18787, and a dedicated synthetic token file if authentication is
enabled. Launch only this project's `arcadia-server.exe` with explicit `--bind`,
`--data-dir`, and `--token-file`; start hidden on Windows. Do not use a user's
server/store. Retain request/response JSON and ETags under `.local/rest-coverage`.
All JSON calls use `Content-Type: application/json` and the known test token.
## Exact expected incomplete result
All five are severity `warning`; all locate `work.arcadia` on source-project
validation. The UUID prefix is `f0660906-0000-4000-8000-`.
| Code | UUID suffix | Field |
|---|---|---|
| non_leaf_work_exchange | 000000000051 | source |
| work_without_behavior_context | 000000000013 | null |
| exchange_without_behavior_context | 000000000052 | null |
| mission_without_capability | 000000000021 | null |
| capability_without_behavior_context | 000000000020 | null |
The parent exchange's uncovered-exchange warning is intentionally suppressed.
A/B are covered through their included exchange; C is merely allocated. No
complete-model rejection is expected. Compare **code/object_id/field** across
representations, plus path and valid source span where supplied. Compare codes,
not human message wording or array order.
## Probe sequence and oracles
1. GET `/health/ready`; POST `/api/v1/projects` with
`{"name":"Coverage probe host"}`. Retain its Location, resource ID and opaque
ETag. GET its model/source-project and retain exact responses and revision.
2. POST `/api/v1/projects/{id}/validation` with
`{"format":"source-project","source_project":payload.incomplete}`.
Expect 200, `valid:true`, exactly the five new warning tuples above, real
`work.arcadia` locations, no `error`. GET the accepted resource and verify
model/source/ETag/revision unchanged: candidate validation does not commit.
3. PUT `/api/v1/projects/{id}/source-project` with raw `payload.incomplete` and
`If-Match` equal to the current ETag. Expect 200, changed revision/new ETag,
with warning-only admission. GET `/validation`, `/model`, `/source`, and
`/source-project`. The accepted source bundle must exactly equal the submitted
three files (all UUIDs are explicit). Normalize the five code/ID/field tuples
from GET validation and compare to step 2.
4. POST candidate validation twice more: `{"format":"json","model":model}`
and `{"format":"arcadia","source":canonical_source}` using those exact GET
representations. Both return 200/valid:true and the identical five tuples.
Canonical source/JSON need not preserve source-project file paths. Verify
accepted ETag/revision unchanged after both calls.
5. POST source-project candidate validation using `payload.invalid`. It changes
only the grouped Interaction's source to existing Entity `crew`, an invalid
work-exchange endpoint. Expect 200/valid:false, an `invalid_endpoints` Error
on that relation, and **none of the five new completeness codes**. PUT the
same invalid source-project with current `If-Match`: expect 422. GET current
model/source-project/ETag/revision and compare byte/content identity to step 3.
6. PUT `payload.repaired` with current `If-Match`. Expect acceptance and all five
new codes cleared. The repair names leaf A as the parent exchange's source,
includes both missing exchanges, connects mission→capability and adds explicit
process→capability context. Other existing topology warnings, such as the
deliberately simple sequence's exchange gap, may remain; do not misreport the
five-code assertion as zero total diagnostics.
7. Stop/restart only the probe server with the same isolated store, then GET
model/source-project/validation: persisted repaired data and ETag/revision
must match. Optionally PUT the original incomplete bundle under current
If-Match and verify the same five tuples reappear. This is an explicit
replacement, **not server Undo**; core transaction Undo already has its own test.
8. Stop the verified probe process. Preserve the synthetic store and evidence;
cleanup is optional and must remain scoped to these named probe paths.
The server's actual DTOs are in `oa-server/src/routes.rs`: source-project
validation returns submitted-byte locations; successful bundle writes return
accepted-bundle locations; current validation uses core object/field diagnostics.
No new API route, schema, command type, or service undo is required.
@@ -0,0 +1,37 @@
# Real REST coverage parity acceptance
Executed 2026-09-06 against staged `arcadia-server.exe` SHA256
`BB775876741FE4A7B07CDE08940AEC8E23F545FDAFEC024FC4DC3BA6DD1AB9FC`, with
only Windows system directories on PATH and the staged `libunwind.dll` beside the
binary. A fresh synthetic store and an ephemeral loopback port were used; no user
server/model was touched. The probe started and stopped only its own hidden server.
All **25 HTTP requests passed**. Evidence is retained under
`.local/rest-coverage-20260906-160857`: request payloads, response bodies, status/
ETag metadata, binary provenance, server logs and `result.json`. The prepared runner
is now tracked at `harness/fixtures/rest-coverage/run-coverage-probe.ps1`; the
three-bundle payload is adjacent as `coverage-probe.json`. The tracked copy was
rerun successfully with another fresh store and the same clean PATH: all25 requests
passed again under `.local/rest-coverage-20260906-161345`. See the adjacent README
for reproducible invocation.
| Observable behavior | Observed result |
|---|---|
| Incomplete bundle candidate | HTTP200, valid:true; exact five advisory code/object/field tuples from the plan, all warnings with submitted `work.arcadia` locations. Accepted model/source/ETag unchanged. |
| Warning-only bundle commit | HTTP200, changed:true, revision2. Exact three submitted files retained, including comments and explicit IDs. |
| Current validation, native JSON and canonical Arcadia candidate parity | Same five code/object/field tuples, no structural errors. |
| Invalid Entity endpoint on Interaction | Candidate200/valid:false with `invalid_endpoints`; all five new completeness codes gated. PUT422; accepted model, source bundle and ETag unchanged. |
| Repair | HTTP200, revision3; all five completeness codes clear. The independent existing `sequence_gap` warning remains on Process steps2–3, as expected. |
| Forced server stop and restart, same isolated store | Repaired model/source/validation and opaque ETag identical. |
| Explicit replacement with incomplete bundle | HTTP200, revision4; exact five warnings reappear. This operation is replacement, not server Undo. |
The first attempt correctly rejected the synthetic alias `parent` as reserved.
The fixture now uses `activity_group`, retaining all UUIDs and expected semantics;
the complete probe was rerun from a fresh store. This was fixture repair, not a
production parser change. The failed attempt remains in
`.local/rest-coverage-20260906-160838` for provenance.
This verifies the current Windows service and diagnostics parity, admission and
restart behavior for the representative OA fixture. It does not establish Linux
runtime, container deployment, production-scale throughput or category/source6
features. No probe process is intentionally left running.
@@ -0,0 +1,38 @@
# Save-as history and Windows runtime packaging — 2026-09-06
## Save-as decision and evidence
Native investigation reproduced an extra Undo step after saving to a different entry basename: the first Undo reversed only the file-key rename, while the second reversed the semantic edit. Saving the undone state also cleared Redo. `Message::Saved` had committed the rebased receipt through `Document::apply_bundle`.
The fix adopts a verified save receipt as a source-location change, without adding history or clearing Redo. Uniform entry names across retained history are rebased together, preserving exact source text, model meaning, and stack lengths. If history contains explicitly authored entry-name changes, historical snapshots retain those names; adoption changes only the current snapshot. Revision and receipt-content checks reject stale or altered receipts, and raw drafts also prevent a late receipt from changing their source location.
Before disk I/O, source Save-as rejects a chosen basename that collides (case-insensitively) with a non-entry file in any retained current/past/future snapshot. This conservative restriction avoids swapping historical files or rewriting includes. JSON export is exempt. All planned snapshots must compile to the same models and exact relocated source before adoption; failure leaves history unchanged. The bounded history may be compiled during both preflight and receipt adoption. Revisit that cost only with measured latency evidence.
The focused `cargo test --locked -p oa-desktop save_as` run passed **11 tests, 0 failures** (`.local/save-as-focused-test.log`). Seven new regressions cover uniform history and existing Redo, explicit entry-name history, past/future filename collisions, stale/changed receipts, actual disk write receipts followed by Undo/save/Redo, rejection before disk I/O, and preservation of a newer raw draft. Implementation: `document.rs`, `document_save_as_tests.rs`, `app.rs`, and `app/save_as_tests.rs` under `crates/oa-desktop/src`.
**Fixed-binary native Save-as acceptance remains pending.** Recheck with a recorded binary hash: apply a semantic change; Save-as to a new basename; one model Undo must restore the original semantics and exact original source text; save that undone state; Redo must remain available and restore the edited text. Reopen the saved file to confirm disk still contains the explicitly saved undone state until another Save. Repeat Save-as with available Redo and verify a historical filename collision is refused before creating the destination. Record source hashes before edit, after edit, and after Undo. A separate successful state-view routing check does not establish this result.
## Observed GNU/LLVM runtime closure
Read-only PE import inspection used LLVM-MinGW 20260826 UCRT `llvm-readobj --coff-imports`; no builds, application launches, system changes, or runtime copying were performed for this inspection. These are the inspected **debug** outputs, not release packages:
| File under `.local/target-gnullvm/debug` | Bytes | SHA-256 |
|---|---:|---|
| `arcadia-studio.exe` | 101734912 | `70069d6cbbe1917e1597794b3e190ff9cf23664d458f794b3270ddbe6ee683a2` |
| `arcadia-server.exe` | 37165056 | `fc942ecf222a2032eb5e28c68d1125ef09fd15cc81864dd77eeb119af8fdae48` |
Both import **`libunwind.dll`** directly. It is the only non-Windows dependency in their observed static import closure. The x86_64 runtime is at `.local/toolchain/llvm-mingw-20260826-ucrt-x86_64/x86_64-w64-mingw32/bin/libunwind.dll`: **190976 bytes**, SHA-256 **`f45604a12e8bcd839fd86f667c1be1cc7c4f9da2b3c69ff381ac708f0e1ae7d4`**. The toolchain's top-level `bin/libunwind.dll` is byte-identical.
That DLL recursively imports only KERNEL32 and UCRT API sets (stdio, runtime, environment, private, filesystem, locale, convert, string, heap). Neither binary nor libunwind imports libc++, libwinpthread, libomp, LLVM, Clang, or sanitizer DLLs. The remaining executable imports are Windows API sets and OS DLLs: kernel32, user32, ole32/oleaut32, bcrypt/bcryptprimitives, advapi32, dwmapi, gdi32, shell32, imm32, uxtheme, ws2_32, ntdll, and opengl32 (case-insensitive union).
The root's observed failure without toolchain PATH and successful launch with it is consistent with the missing libunwind import. Staging the required runtime next to both executables uses the ordinary application-directory DLL lookup; no registry or machine PATH change is needed. See Microsoft's [DLL search order](https://learn.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order). Include the LLVM-MinGW distribution's `LICENSE.TXT` (LLVM Apache-2.0 with LLVM Exceptions and included notices) alongside runtime provenance. Do not copy OS DLLs from System32 or the whole compiler directory.
Static imports are not the complete graphics-runtime test: the resolved WGPU/ash implementation can load backend DLLs dynamically (for example `vulkan-1.dll`, and optional DXC paths). Import inspection cannot establish driver compatibility. Repeat inspection against the actual final binaries and perform the clean-environment staged smoke in [Windows packaging](../docs/windows-packaging.md).
## Packaging baseline and remaining gates
At inspection, no tracked packaging builder existed. `harness/verification-v2-packages.md` describes historical staging/archive checks, but its D: evidence and dist outputs are absent here. `.github/workflows/ci.yml` builds a Windows/Linux matrix and uploads executable-only artifacts; it is not a GNU/LLVM dependency staging recipe. The repository origin is GitLab and no GitLab pipeline is present. CI is unchanged. The Docker build-context regression was separately corrected with `COPY build ./build`; no Docker execution is claimed.
The new `scripts/package-windows.ps1` provides a repeatable packaging operation for explicitly selected, already-built x86_64 MSVC or gnullvm inputs. It must not imply a release build or acceptance simply because packaging succeeds. Current native Save-as recheck, clean-PATH staged desktop/server operation, final release-build import inspection, and release acceptance remain separate gates.
Script verification on this machine packaged the existing debug gnullvm inputs into ignored `.local/package-script-qa/ArcadiaStudio-qa-debug-20260906-a-x86_64-pc-windows-gnullvm.zip`: **42 files**, **27747149 bytes**, SHA-256 **`8935db6c0fb1e02366b2354139bc1bb5ac111ec438f319fad32121e73cf19559`**. Staged-source and archive-entry hash/count verification passed. Separate refusal checks passed for an existing output name, missing executable inputs, and selecting MSVC while supplying binaries that import the unstaged LLVM runtime. No application was launched by this verification, and no actual MSVC binary package was available to test. The script's final additional check binds staging to the binary hash inspected before import scanning, rejecting binaries changed during packaging.
@@ -0,0 +1,83 @@
# Selective views candidate: independent bounded critique
Read-only review of `release-selective-views-design.md`, current core projection,
port layout, coverage traversal and schema admission. No implementation or native
acceptance is claimed. The closed persisted-options design is viable; freeze the
following meanings before schema6 implementation.
Primary evidence supports distinct work/participant category membership, not a
particular filtering UI: Capella's [FunctionalAnalysis schema](https://raw.githubusercontent.com/eclipse-capella/capella/master/m2/plugins/org.polarsys.capella.core.data.def/model/FunctionalAnalysis.ecore)
has `ExchangeCategory.exchanges: FunctionalExchange` and
`ComponentExchangeCategory.exchanges: ComponentExchange` (lines461–493,2879–2910).
The [official Arcadia Q&A](https://mbse-capella.org/arcadia-qna.html), questions15–16,
describes presentation synthesis, simple/multiple categories and context-specific
dataflow usage. It explicitly distinguishes existing simple categories from
hierarchical categories. A single typed Studio record with a family discriminator
is compatible with those needs; hierarchy is not required merely to copy Capella.
## Findings and decisions needed
| Priority | Concrete gap / falsifier | Recommended bounded contract |
|---|---|---|
| P1 | One `categories: Any(ids)` plus “when the constraint applies to that family” is ambiguous. Select only a Work category in a mixed architecture: Participant edges might either disappear or remain. `Any([])` has no family from which to infer applicability. | Persist independent Work and Participant selectors, each `All` or `Any(ids)`. Require selected category IDs to match that family/layer. `All` includes uncategorized exchanges; `Any` admits only membership in at least one selected category, so `Any([])` admits none of that family. Other family and non-exchange edges remain independent. Show family-specific counts/labels. |
| P1 | Global `InBehavior` does not answer “show exchanges used by Process P”, even with correct diagnostic reachability. Two processes with disjoint exchanges both pass the global filter. | Expose global “Used in any behavior” separately from an explicit selected Process/Chain/Scenario scope. Refactor the shared traversal to accept root IDs; union selected roots and their valid included reuse. Define selected scope with no IDs as empty evidence, and define its complement only over same-layer Work exchanges. Do not infer context from performer, state actions or transport allocation. |
| P1 | Filtering before the existing port-layout call can move ports and alter edge attachment geometry even without a layout command. `projection.rs:438` passes rendered edges to `port_layout::layout`; `port_layout.rs:163–230` derives automatic facing/sides from those peers. Hide one of two opposite peers to reproduce. | Compute baseline eligible edges and automatic port geometry first; apply visibility filters to the drawable edge set afterward, or explicitly preserve equivalent baseline peer input. Retain manual anchors/routes verbatim. Test automatic and manual ports while hide/category/coverage options toggle; no unintended owner resize or anchor flip. |
| P1 gate | Forty same-direction exchanges between one promoted pair in one selected category still produce forty lines. A sparse three-exchange fixture cannot establish the required readability benefit. | Run a dense40 same-pair task before declaring category complexity management complete. If users cannot count/find/select a requested member reliably at normal zoom, add summary presentation for compatible endpoint pair/orientation/family, with actual member IDs and count. Membership overlap must partition deterministically without duplicates. Keep summaries non-semantic and support drilling into actual edges. |
| P2 | “No relationships” is inaccurate if the filter only affects arrows. Allocation nesting, interface-item rows and internal state/action rows still express relationships; current `projection.rs:337–349` excludes several of these from edges entirely. | Label the control “Relationship lines” / “No relationship lines”; scope options to actual graph edges. Do not erase allocation nesting or typed state rows. Either restrict the first controls to architecture diagrams or explicitly explain ignored options for dedicated state views. |
## Lifecycle and schema constraints
Accept legacy OA BoundaryExchange as Participant-category members when those
records are already valid in the current compatibility model. This avoids making
legacy user diagrams unfilterable and does not reinterpret them as CommunicationMean.
New OA authoring should prefer the separately agreed CommunicationMean contract.
Wrong-family/wrong-layer members reject atomically; no silent conversion of ports,
items, allocation, direction or endpoint ownership. A family change with incompatible
members must be an explicit combined edit or rejected, never clear members silently.
The source6 boundary needs a frozen v5 diagram/body vocabulary and an audit of
all older envelopes. In particular, `migration_v4.rs:50–67` currently embeds live
Element/Relation/Diagram types because those were unchanged in schema5. Adding
current category bodies/options without closing that seam would let schema4 files
admit future constructs. Probe v4 and v5 JSON and text containing each new field/
variant: rejection must precede mutation; legitimate old files must preserve default
projection, placement IDs and routes exactly after migration. Preserve unknown-value
rejection, source lexical edits, source-bundle locations and REST restart round trips.
Deleting a selected category must retain `Any([])` for its own family and preserve
the other selector. Deleting a member exchange must prune memberships, hidden IDs
and only its routes, with exact Undo restoring all three. Reidentification must
visit category members, both selectors, context roots, hidden edge/trace IDs and
route references. A remove-and-recreate exchange has a new identity and must not
inherit a dead hide reference. Empty categories and same-name categories remain
distinct real records; inspectors/pickers should show family and identity context.
## Minimum acceptance additions
1. Mixed Work/Participant/uncategorized/non-exchange fixture: verify every family
selector's All/Any(empty)/Any(overlap) truth table under kind/hide intersections.
2. Two disjoint processes plus shared reused scenario: global and selected-context
filters differ exactly; unlisted owned occurrences do not count. A behavior edit
changes visible edges without editing saved options/history. Deleting the last
chosen context remains an explicit empty selection, not global scope.
3. Forty parallel same-pair members, overlapping categories, one hidden member and
folded endpoints: perform readable count/find/select/export; test summary member
partition if required. Restore a filtered member without widening other filters.
4. Toggle options on routed typed SA exchanges with opposite peers: compare owner
geometry, automatic/manual anchors, saved waypoints and independent second view.
5. Duplicate view produces new diagram/placement IDs while retaining semantic IDs,
options, routes and no accidental model transition. Native/SVG/REST projection
and label text must agree, including empty Items labels.
6. Source/API rejection, v4/v5 admission, deletion/Undo/Redo/ID swap and restart
preserve exact semantics and source provenance. Pending raw drafts keep current
guards; a filter panel must not bypass them.
The shared traversal is currently private `validation/coverage.rs::included_evidence`
and starts from every behavior container. Reuse a pure explicit-root evidence helper
for both diagnostics and projection, rather than duplicate its semantics. Avoid
using missing warning codes as a coverage oracle: structural-error gating suppresses
diagnostics, and non-leaf exchange warnings intentionally suppress uncovered ones.
The dense readability gate and context-specific workflow are required evidence;
category hierarchy, arbitrary queries and transport coverage inference are not
justified additions for this bounded first contract.
+180
View File
@@ -0,0 +1,180 @@
# Selective views and exchange categories — candidate contract
2026-09-06, root design investigation while current native acceptance is rebuilding.
This is a proposal awaiting independent criticism and implementation, not an
implemented schema or release claim. Keep the existing source-v5 contract unchanged
until the combined source/schema6 admission boundary is deliberately frozen.
## Engineering need and primary evidence
Engineers need several readable views of one architecture, selected by an explicit
engineering concern, without changing its exchanges or losing their authored layout.
The official [Arcadia Q&A](https://mbse-capella.org/arcadia-qna.html) describes
representation-only synthesis when leaf functions are hidden and grouping exchanges
by category. It distinguishes the possible dataflow from the particular uses of
that dataflow in behavior. Category display must therefore not imply a new flow,
execution path, or semantic allocation.
Capella's [FunctionalAnalysis schema](https://raw.githubusercontent.com/eclipse-capella/capella/master/m2/plugins/org.polarsys.capella.core.data.def/model/FunctionalAnalysis.ecore)
defines named ExchangeCategory and ComponentExchangeCategory records, each referring
to existing exchanges. This supports reusable explicit category membership. It does
not establish the Studio filter-combination policy proposed below. Eclipse's
[Sirius/Capella description](https://www.eclipse.org/community/eclipse_newsletter/2017/december/article2.php)
identifies contextual diagrams, filters and layers as complexity-management tools.
Current repository evidence: Diagram stores projection, placements and per-edge
routes. project_diagram derives nodes/edges from the whole model and visible
placements; ProjectedEdge retains one actual semantic ID. These are useful seams.
Do not invent a second graph model to implement selection or categories.
## Alternatives and proposed choice
| Candidate | Assessment |
| --- | --- |
| Ephemeral checkboxes plus manual hiding | Small but lost on reopen, absent from source/REST and unsuitable for shared engineering views. |
| Arbitrary query language per diagram | Flexible but adds a second language, difficult reproducibility and opaque hidden content. No demonstrated first-release need. |
| Closed persisted view options plus reusable named categories | Clear meanings, typed graphical/source/API parity and bounded computation. Recommended. |
Use explicit typed options, not arbitrary JSON paths or user-authored predicates.
Separate the semantic category membership from a view's chosen visibility and label
settings. A view filter never edits a category or any engineering relation.
## Proposed model contract
One shared `ExchangeCategory` element body has `family` (Work or Participant) and
an unordered distinct list of same-layer exchange relation IDs. Work admits OA
Interaction or SA FunctionalExchange. Participant admits OA CommunicationMean or
SA BoundaryExchange. Already-valid legacy OA BoundaryExchange is also an eligible
Participant member; that does not convert its ports or reinterpret it as a means.
New OA authoring follows the CommunicationMean contract. Category membership conveys a named concern,
not ownership, transport allocation, item compatibility, mutual exclusion or order.
The same exchange may belong to several categories. Empty categories are valid.
Keep categories as layer-root records initially; hierarchy needs separate evidence
and cycle/transition semantics. Artifact links can address categories normally.
A Diagram acquires a `ViewOptions` value with legacy-equivalent defaults:
- `hidden_edges`: distinct relation/trace IDs belonging to the view layer (including
applicable cross-layer realization traces). This is an authored hide set, not
deletion; routes remain retained. Missing references reject on source/API input
and ordinary Delete cleans live references through the core transaction.
- `relation_kinds`: All or Only(explicit distinct kinds). Only([]) means no relation
kinds, not All. Label this "No relationship lines": allocation nesting and typed
state/action rows still express relationships independently of these graph edges.
- `work_categories` and `participant_categories`: independently All or
Any(explicit distinct category IDs of that family). All includes categorized
and uncategorized exchanges of its family. Any includes an exchange exactly
when it belongs to at least one selected category; uncategorized exchanges
fail that predicate. Any([]) includes none of that family. Neither selector
constrains the other family or non-exchange relationships.
- `coverage`: All, InBehavior, or OutsideBehavior, applying to Work exchanges using
the same actual occurrence/reuse reachability as coverage diagnostics. Participant
exchanges must not inherit coverage from unrelated allocated exchanges silently;
a later explicit transport-coverage option can define that quantifier separately.
- `work_contexts`: All or Any(explicit Process/Chain/Scenario context IDs from the
same layer). Any requires an actual Work exchange occurrence reachable from at
least one selected context through the same explicit reuse walk as coverage.
Any([]) matches no Work exchanges. This is distinct from global coverage:
"used anywhere" does not mean "used in the selected startup scenario".
Participant exchanges and non-exchange relations are unaffected. Contexts do
not include descendants merely because they share a semantic container.
- `exchange_labels`: Name, Items, or NameAndItems. Labels refer to declared carried
item names; an empty set remains visibly empty when Items is selected. Label
choice changes no selection, hide set, route, category or engineering content.
Saved node selection remains the existing explicit placement bank. Do not combine
filters with automatic semantic deletion, automatic layout or automatic insertion of
new placements. A duplicate-view command creates a new diagram and placement IDs,
copies options/routes, and retains the same semantic element/relation references.
## Exact combination and projection order
First project placement eligibility and parent/fold promotion using current rules.
Compute automatic port placement from the eligible pre-filter edge set, then retain
that baseline geometry while filtering the drawable edge set. Current port_layout
uses peer edges, so feeding it already-filtered edges could move automatic ports
when a user only changes visibility. Manual anchors remain exact. Verify this with
opposite-side peer edges and independent per-view routes; filtering must not silently
become a layout action.
For each actual eligible relationship, require its kind to be allowed, require
category membership under that exchange family's selector, require both the explicit
Work coverage and chosen-context predicates when applicable, and require absence
from hidden_edges. These restrictions combine by intersection. Category Any combines
selected categories by union. Apply these predicates to actual IDs before any
optional visual grouping. A category change never clears hidden_edges.
An edge whose endpoint has no visible placement/ancestor remains absent by ordinary
projection rules. Filters never fabricate endpoint placement. A folded internal edge
whose endpoints resolve to the same visible node stays suppressed under the existing
rule; its original semantic record remains navigable from a contextual list.
Expose a compact "View content" panel with current restrictions and a searchable
list of omitted records with the reason (explicit hide, kind, category, coverage,
or endpoint not shown). Display all contributing reasons when useful. "Show" removes
only explicit hide; if another restriction still suppresses it, show that reason and
offer an explicit filter edit. "Reset filters" is one undoable view edit, never a
semantic edit. Preserve pending property/source guards and exact undo history.
Initially display separate real edges with category membership in the inspector and
filter controls. If grouped category lines are needed to achieve readable acceptance,
add a distinct presentation result with `members: Vec<Id>` and an explicitly marked
summary label. Never assign a category ID as though it were an exchange. Picking a
summary opens its actual members; it cannot create/reconnect/delete a synthetic
exchange. Group only compatible promoted endpoint pairs/orientation/family and show
the member count. A member in multiple selected categories needs a deterministic
nonduplicating policy before this optional grouping can be accepted. Do not claim
grouped-summary functionality from filtering alone.
## Editing, lifecycle and parity
View options use EditDiagram and the current Document transaction. Source syntax
must distinguish All from empty selected sets, retain explicit options during
lexical edits, and reject unknown values. Schema6 migration adds default options
without changing old projection results or routes. Older envelopes must reject new
constructs rather than using current live Diagram/Element types accidentally.
Category edits use normal typed element creation/properties. Core reference visitors
cover all members and selected categories; reidentification changes every live
reference. Delete category removes the ID from selected category sets but leaves
Any([]) explicitly empty rather than widening to All. Deleting a selected context
similarly removes only that context ID and retains Any([]). Delete an exchange removes
only its membership and live view references, preserving independent exchanges and
routes. Preview the resulting effects through the existing deletion contract.
Category transition maps explicit members through reviewed exchange counterparts;
it cannot imply that a missing exchange is unnecessary or fabricate one merely to
fill the category. Members/order/source facets and artifact links need closed
semantic-review support. A view is presentation data, not a realization-trace target.
Duplicating across layers requires explicit counterpart placement decisions and
cannot reuse old layer IDs blindly.
The same pure filter/projection implementation feeds native Canvas, SVG, REST view
queries and inspectable diagnostics. GUI controls expose every persisted option.
No per-pixel model-wide coverage scan: build the reachability index once per accepted
revision and reuse it across requested views. Establish an actual sparse/dense timing
measurement before optimizing beyond that boundary.
## Falsification and next action
Use a fixture with two OA participants, three activities, two processes sharing one
Interaction, an uncovered Interaction, two overlapping categories, a non-exchange
relation and a folded owner. Save two views with different restrictions and routes.
Hide one shared-category edge, change labels/categories, reopen, undo/redo and compare
exact source/projection. It must stay hidden. Verify Only([]), Any([]), category
deletion, ID swaps, edge deletion/recreation, same-name categories, hidden endpoints,
two unrelated view geometries, source migration and atomic REST rejection/restart.
Add a context truth table with one globally covered exchange outside the selected
process, one shared by both processes, and one uncovered exchange. Verify category
selectors independently across both families, including uncategorized members.
Add forty exchanges between the same visible endpoint pair in one category. If
filtered separate edges remain unreadable, grouped presentation is required before
claiming the category complexity-management workflow accepted; the sparse fixture
cannot establish that result. Keep original member navigation and hide persistence
as mandatory acceptance in any grouped alternative.
Behavior coverage changes should update visibility without silently altering saved
options or emitting view-history transactions.
Independent review should challenge the category family shape, legacy admission,
meaning of uncategorized exchanges and non-Work coverage, omitted-record UX, and
whether separate edges plus filtering satisfy the initial user task. Freeze those
answers alongside CommunicationMean/source6 before production edits.
@@ -0,0 +1,197 @@
# Multi-source semantic review foundation: concrete design
Read-only design against the current DATA working tree, after keyed/ordered review
and workflow recovery. This adds implementation detail beyond
`release-semantic-remaining-plan.md`; no production edits, Cargo run or acceptance
claim accompanies it.
## Current seams and two constraints
`Workflow::Semantic(Box<semantic_review::State>)` delegates view/update/command and
recovery to State. App's dedicated semantic handler applies its single prepared
Command batch through Document. Keep that external interface and atomic apply path.
Current State contains one anchor/trace/direction, decisions/resets, references,
scalar/group/keyed/order drafts, and one computed plan. `load_trace` clears drafts;
`request` creates one source/mapping/review and at most one complete target candidate.
Family adapters compose unvalidated typed records before the core validates them.
They need not produce an individually valid Project to retain or edit a row.
The core already accepts multiple review requests derived from one frozen initial
Project, chosen trace per source, a shared canonical OA→SA reference map and one
complete `SemanticRecord` candidate per target ID. It rejects duplicate sources,
duplicate candidate records, actual-slot disagreement and unselected candidate
changes. Two constraints matter to the GUI design:
1. **The core cannot see two independently authored Candidate values once the GUI
has collapsed them into one record.** If row A authors minimum 5 and row B authors
minimum 7, both Candidate resolutions read whichever minimum the single candidate
contains. The GUI must compare the two authored intentions before generating that
record. Last-row-wins deduplication would silently erase user intent.
2. **Convergence is directionally constrained today.** Two OA sources can map to one
SA target. Two SA sources cannot map to one OA target under the canonical
`BTreeMap<OA,SA>` contract: `review.rs::build_review` inserts `(targetOA,sourceSA)`
for each reverse transition, and rejects the second differing value as
“Transition mapping disagrees with frozen correspondence.” Reverse inversion also
rejects ambiguous maps. Support reverse batches with representable mappings;
retain/display the core conflict for reverse convergence. Do not silently drop
mappings or promise symmetric many-to-one support. A future relaxation requires
a separate demonstrated core contract change, outside this foundation.
## Recommended structure
Keep public `State` as the session facade. Extract its current row-specific state
into `ReviewRow`, with an explicit `RowAddress { source, target, trace }` and stable
draft identity. Store a row bank plus included flags, active row and display order.
Switching the active row changes focus only. Excluding a row removes its request
contribution while retaining all raw drafts. Changing its mapping/selected trace
opens or restores the draft for that exact address; it must not repurpose existing
raw values under a new identity. Only one included row per source is admissible;
multiple historical traces for the same pair are deliberate alternatives, not two
review requests for the same source.
Session owns direction, one frozen accepted Project/fingerprint, canonical reference
pairs, one merged preview, accepted impacts and errors. An optional draft bank per
direction retains work when switching direction; require explicit address selection
where the reversed mapping is ambiguous. No direction switch commits model changes.
Check the supplied current Project against the session's accepted fingerprint
before planning and Apply; a changed accepted model leaves drafts intact and reports
staleness. All proposals and observed history read the same frozen base.
Split Event into session actions and `Row { address, event: RowEvent }`. Tag row
events with their originating draft identity so delayed text-editor messages cannot
edit whichever row happens to be selected after a switch. Existing constructor,
keyed, order and numeric form code remains the row editor. Project contexts can
show the provisional combined destination, but never overwrite authored raw values.
Raw incomplete numbers or conflicting constructor alternatives block inclusion;
an excluded invalid row remains recoverable without blocking the included batch.
## Candidate composition without sequential Apply
Add a closed `compose.rs` adapter, extracting reusable composition from today's
`combined_value`. Its product is target contributions with row provenance, not
Commands. For every included row:
1. Materialize only selected raw Candidate scopes and existing typed Take payloads
against the frozen base and shared explicit references. Do not require its own
final Project to validate: e.g. one row proposes a minimum above the old maximum,
while another proposes a sufficient new maximum. Validate their joint result.
2. Produce typed desired observations indexed by actual destination slot:
`(target, scalar selector)`; `(target, collection, destination member ID)`;
exact literal; full Annotation `(path,field)`; Binding referenced ID; and Order
collection. Use the destination identity, never the full source/target pair as
an agreement key. A row with no source identity and Take contributes frozen
target preservation, distinct from explicit absent-source removal. Keep is also
an explicit frozen-value constraint and cannot be dropped merely because its
JSON diff is empty.
3. Compare all authored observations for the same actual slot. Equal intentions
can share the final slot; differing ones retain both drafts and block preview
with source names, facet/key and each proposed value. Offer explicit actions to
edit a row, leave its decision unselected, or exclude it. Do not automatically
synchronize raw Candidate drafts to whichever row was edited last.
4. Constructor proposals have coverage over their descendant slots, including
slots introduced by another row and retired NotApplicable branches. Compare that
coverage against every other proposal. Preserve the core's first-equal-kind-only
acknowledgment exception; a replacing group remains a complete scoped proposal.
Never apply the same-row “untouched candidate field” convenience across sources
to silently accept another source's changed value. Existing `constructors::roots`,
`contains`, typed `capture_facet` and `semantic_facets` are the seams for this closed
adapter. Family-specific equality/reference semantics remain explicit.
5. Assemble one target record from the agreed contributions: constructor groups
first, independent scalar/keyed changes next, complete order last. Preserve
surviving unordered row positions and use canonical destination-key order for
genuinely new rows. Include a complete candidate only where a Candidate decision
requires one; its record must also contain the agreed Keep/Take effects on that
target. Finally call `plan_semantic_transition` once with all source mappings,
trace selections, row resolutions/resets, shared references and unique candidates.
The core still controls validation, exact scope/retirement, induced impacts,
preparation fingerprint and the only executable Command batch.
The session's disagreement checks protect independent raw intent; they do not
replace the core's agreement check. Compare GUI requests/results to direct core
calls and retain any core conflict that the GUI did not anticipate. Do not merge
whole records, concatenate per-row candidate vectors, execute previews sequentially,
or use successful per-row plans as a prerequisite for joint validity.
Ordered collections require particular care. Core `build_review` validates each
row's explicit Order against that row's expected surviving membership before its
final cross-source merge. An Order containing a member introduced only by another
row can therefore require that membership to be explicitly reviewed in the order's
row as well (a destination-only Candidate member address can express agreement).
Expose the involved membership/Order decisions for explicit repair; do not secretly
add acknowledgments. Likewise retain core “Contradictory anchored orders” and
“Combined ordered membership needs an explicit final target order” conflicts.
Prove any convenience to share a final order with a direct core request before
offering it. This is a contract edge to test, not permission to invent a merge order.
## Alternatives considered
| Approach | Assessment |
| --- | --- |
| Wrap several complete current States and concatenate requests/candidates | Fast for distinct targets, but duplicates candidates for convergent targets and cannot preserve conflicting raw Candidate values when deduplicated. Reject as the final architecture. |
| Give all rows one mutable target Draft | Avoids duplicate records but makes one source edit silently change another row's authored proposal. Useful only as an explicitly accepted resolution surface, not draft storage. |
| Independent row drafts plus provenance-bearing typed contributions | Recommended. Reuses existing closed adapters, protects Keep and raw conflicts, admits jointly valid values, and leaves the core as the final planner. |
## Files, dependencies and bounded implementation order
One owner should edit `semantic_review.rs`, `semantic_review/**` for this foundation:
new `batch.rs` for row selection/session orchestration, `compose.rs` for closed
contributions, `batch_tests.rs` for core-oracle cases, and focused changes in
`view.rs`, `recovery.rs` and the family adapters. Keep `Workflow::Semantic(State)`
and its public methods intact so App/Workflow recovery wrappers need no changes.
Coordinate any unavoidable wrapper adjustment with root; do not touch App source
writeback, Save handling or native input. Core/source/API production edits are not
part of this design.
Implement incrementally inside this structure: row bank and recovery with distinct
targets; convergent scalar/keyed agreement and single candidate assembly; then
constructor/order overlap and full same-target edge tests. The first checkpoint
must visibly identify unsupported convergence instead of silently serializing it.
Do not call the foundation complete until same-target disagreement and agreement
cases pass. Attachments/artifact creation remain subsequent adapters.
Recovery v2 stores one base identity/fingerprint, direction and shared references,
row addresses/inclusion/order, all row scalar/group/keyed/order raw drafts, row
resets, active identity and exact accepted impacts. No proposed projects/commands
are persisted. Restore checks the base once, rejects duplicate included source
addresses and duplicate draft keys, restores excluded invalid rows, then recomposes
and replans. Decode existing v1 snapshots as a one-row session; never silently drop
a supported old workflow. Apply limits across all rows rather than independently
allowing each row the full model budget.
## Engineering workflow and decisive oracles
Two OA operating modes review their constraints against one SA Integer data type.
Base range is 0..100. Normal operation row proposes minimum 120; emergency operation
row proposes maximum 150. Retain both source rows and allow the jointly valid
120..150 result although the first row alone is invalid. If emergency also proposes
minimum 130, show both authored minima and block. Leaving that conflicting minimum
unselected restores the earlier 120 draft and the valid joint result. Exclude and
restore the emergency row, recover the workflow, then apply once and undo once.
Permuting display/review order must never change the outcome or erase a draft.
Add a second same-target fixture where one row Takes an Integer constructor while
another Keeps a Real bound; both source orders must reject retirement of the kept
fact. Ordered startup fixtures must preserve the local self-test and expose explicit
membership/order repair when source anchors disagree. Reverse distinct-target
batches must succeed; reverse convergence must retain the current core refusal.
Exact existing oracles in `crates/oa-core/tests/r3_semantic.rs`:
- `independent_bounds_keep_take_and_stale_prepare` for scoped bounds/stale plans;
extend its pattern to the jointly valid two-source min/max case above.
- `constructor_retirement_cannot_override_other_sources_kept_bound_in_either_order`.
- `constructor_union_conflicts_with_another_sources_new_member_in_either_order`.
- `combined_ordered_membership_commutes_or_requires_agreed_anchors`.
- `semantic_batch_is_one_undo_and_replanning_acknowledged_values_is_noop`.
- `explicit_trace_selection_keeps_independent_trace_baselines`.
- `same_target_member_keys_cannot_last_write_win` validates historical slot uniqueness;
add live GUI candidate disagreement tests rather than treating that baseline-only
test as sufficient proof of batch candidate composition.
Add source/comment/history equality through App Apply, Undo/Redo and reopen;
stale receipt/model rejection; exclusion and recovery of invalid drafts; explicit
per-row reset with two histories; equal versus conflicting exact Annotation/Binding
keys; kept slots versus mutations; first-equal constructor exception; and duplicate
source/trace choices. Native acceptance must inspect row switching and retained
text, conflicting values, the one combined preview and one transaction at normal
and minimum window sizes.
+104
View File
@@ -0,0 +1,104 @@
# Independent Annotation / Binding review and semantic recovery
Implemented on integrated DATA baseline `c091f80`; current working-tree changes
remain under integration and are not release acceptance evidence.
## Contract and implementation
The existing semantic core planner remains the authority for scopes, reference
mapping, validation, historical observations, induced changes and atomic commands.
The desktop now exposes independent `Annotation` and `Binding` facet selectors
alongside Members/Literals. A message annotation key is the complete `(path,field)`;
a scenario binding key is its reused scenario's `referenced` lifeline. An explicit
OA/SA pair stages a row and its key reference correspondence. It creates no model
objects. Changing a key requires separate removal/addition and explicit resets of
overlapping historical observations.
Keep retains the target row; Take maps typed source references and preserves
expression prose literally; Candidate sets exact presence plus expression or local
lifeline. A missing source key preserves a target-local row. An explicit source key
whose row is absent can remove its mapped target row. Full candidates compose only
the selected row, leaving sibling rows intact. The core validates the result again.
`semantic_review/keyed_rows.rs` owns the closed row adapter, raw multiline
expression/local-lifeline drafts, complete path pairs and context-specific choices.
`view.rs` exposes paged carried-field browsing, recursive descent, source/destination
key choice, exact history scope and candidate controls. Drafts survive decision
changes, temporary exclusion, staging removal and invalid values. Binding choices
distinguish reused keys from local scenario lifelines and follow candidate ownership.
## Independent findings
The behavior-review agent found two concrete issues by read-only review:
- Local binding choices followed original ownership during a Header Parent
candidate. Fixed by walking from the combined candidate's parent.
- Generic display substituted a UUID-shaped expression when its text matched a
referenced field UUID. Fixed with typed annotation rendering: names apply only
to path/field; expression text is shown literally.
Both have focused regression tests. The reviewer inspected the corrections and
reported no additional material finding in the bounded keyed-row review.
## Semantic checkpoint extension
Independent review of root's recovery integration found that pending semantic
workflow drafts were absent from both dirty detection and checkpoint snapshots.
The root assigned the semantic adapter extension here and owns App/checkpoint wiring.
`State::recovery_snapshot` / `State::from_recovery` preserve authored decisions,
reference mappings, exact resets, staged keys, presence, scalar and constructor
raw inputs, cached constructor alternatives, row drafts and unfinished pair picks.
Plans and proposed models are recomputed. Restore verifies the accepted Project UUID
and complete core project fingerprint (the persistent model revision, not a transient
Document counter); changed models reject. Invalid numeric inputs remain recoverable
and cannot apply until repaired. Constructor contexts are recalculated and group
editing mode restored. No GUI pointer state or credentials are serialized.
`Workflow` wraps all adapters in a strict externally tagged record. Relationship
drafts retain names, multiline conditions, kind, direction, endpoints and item
choices; manual traces retain exact names and counterpart picks. Transition review
stores its typed request and recomputes the core plan. Port workflows retain kind,
orientation, incoming/outgoing items, endpoints, selected boundary, split-side
choice and generated identity; their plans are rebuilt too. Every adapter checks
the original accepted model fingerprint. No saved computed command is replayed.
App dirty/restore integration remains root-owned.
## Core ordering correction
Focused GUI tests exposed a core mutation defect: replacing or merely retaining
an Annotation/Binding removed the existing row and appended it. A Keep decision
alongside an unrelated Header candidate therefore changed authored row order and
could fail the planner's unselected-facet check. The bounded `semantic/mutate.rs`
fix replaces a changed row in place, skips identical rows, removes only requested
rows, and appends only genuinely new rows. New GUI rows compose in destination-key
order, matching the core's canonical new-slot application. Existing rows retain
their authored positions. Core regressions cover both row families and directions.
## Verification status and next gates
Owned rustfmt completed successfully. With the user-local Rust 1.98.1 GNU LLVM
toolchain, the full desktop test suite passed **431 tests, 0 failures, 0 ignored**
(`.local/keyed2-desktop-test.log`, 31.72 seconds). The core `r3_semantic` integration
suite passed **35 tests, 0 failures** (`.local/keyed2-core-test.log`). This includes
the narrow core correction, GUI row composition, all workflow recovery adapters,
and the independently corrected typed StateAction canvas test. The earlier focused
desktop semantic run passed 58 tests before the last new-row composition test was
added; the complete 431-test result supersedes that focused checkpoint.
The added tests cover both OA→SA and SA→OA, Keep/Take/Candidate combinations,
coexisting scalar candidates, sibling preservation, literal UUID expressions,
raw draft retention, recursive qualified-field selection, local/reused binding
choice separation, candidate ownership, exact reset requirements, missing-key versus
absent-row behavior, unresolved reference rejection/repair, invalid local binding
rejection/repair, exact source/model/history Undo/Redo and reopening, and recovery
against unchanged/changed models. Native operation remains root-owned and pending.
The shared Cargo target has been released to root for native binary builds.
Workspace formatting, strict Clippy, broader workspace checks and native acceptance
remain root-owned gates; the test results above do not claim release acceptance.
Run native message-value and scenario-use reviews at normal and minimum size,
including long qualified paths, reverse review, absent/new rows, overlapping
history reset, multiline expressions, Save/reopen and recovery of invalid input.
Other ordered/attached/artifact/multi-source GUI facets remain outside this slice.
+96
View File
@@ -0,0 +1,96 @@
# Independent ordered semantic review
Working-tree slice on DATA `c091f80`. This does not claim full semantic GUI or
release acceptance. Owned production files are `semantic_review.rs` and its subtree;
the public Workflow interface, core, language and REST contract remain unchanged.
## Implemented contract
Members / rows now exposes ordered Steps and Fragment branches using the existing
explicit OA/SA pair and presence workflow. Paths cover Process / FunctionalChain,
Scenario, Branch occurrences and Fragment branches. Membership does not create or
reparent a referenced object. Keep, Take and Candidate presence affect only the
selected entry; the existing exact pairing/reset and constructor-overlap checks
remain applicable.
Order is an independent fact. Keep retains the frozen target order. Take follows
typed explicit correspondences; destination-only members retain their positions
when the mapped source already agrees with their surrounding order. Taking an
incoming member uses the core's unique adjacent-anchor rules. Ambiguous placement
blocks until an explicit final Order is selected.
Set final value shows named positions with Up/Down controls. Its complete order
must include every surviving destination member once. The order draft is initialized
from the proposed membership, then remains authored state: changing membership,
leaving decisions unselected, preview errors and recovery do not silently replace
it. The explicit Reconcile with selected membership action removes excluded rows,
retains surviving authored positions, and appends newly included rows for deliberate
placement. Invalid or obsolete order drafts remain visible and block Apply until
repaired. A provisional membership list exists only for these editing controls;
the actual request always receives complete validation.
The GUI composes members before order, submits one complete candidate record, and
uses the unchanged core for exact history, scope overlap, impacts and atomic
Document/source application. Recovery adds typed ordered draft rows with the same
accepted-model fingerprint check and no persisted computed commands.
## Review and verification
The independent behavior-review agent compared the anchor algorithm, target-local
Take exception, final member-set checks and recovery path against the core and
reported no concrete defect. Their suggested multi-insertion falsifier was added:
two incoming members must retain source order despite independent UUID ordering.
Eight focused tests cover both directions, all four owner shapes, single and
multiple uniquely anchored insertions, ambiguous insertion with a destination-local
step, independent Keep/Take/Candidate removal, order-only scope, membership picker
ownership, rejected/stale/restored draft retention and explicit reconciliation,
direct core preview/result comparisons, and exact source/history Undo/Redo/reopen.
The first test run found an invalid scenario fixture using sequence-only Controls;
the fixture was corrected to scenario Actions without changing production behavior.
The focused run passed **8 tests, 0 failures, 0 ignored** (4.70 seconds;
`.local/semantic-ordered-test.log`). Owned-file rustfmt passed. Full desktop
regression, strict checks and native acceptance remain root-owned gates.
## Native acceptance still required
Validated standalone fixtures and exact core request/result/source oracles are
available in ignored `.local/native-fixtures/semantic-ordered*`, with main steps in
`semantic-ordered.steps.md`. Five fixtures cover the main sequence, reverse sequence,
Scenario, Branch steps and Fragment branches. Each initial/final model validates and
round-trips through source and JSON; ambiguous Take rejects and the explicit final
order has zero additional impacts. These are programmatic oracles, not native evidence.
Use an OA Process traced to an SA FunctionalChain, with explicit corresponding
occurrences Request start, Energize and Verify interlock. OA order is Request,
Verify, Energize. SA order is Request, Local self-test, Energize, with the mapped
Verify occurrence owned by the chain but not included. Supply explicit reference
pairs for the three mapped occurrences.
1. In Members / rows choose Ordered steps, stage the Verify pair and Take
Operational. Expect a unique-anchor error; Local self-test makes placement
ambiguous. No accepted model/source/history change occurs.
2. Use Review final order, then Set final value. The initial named draft retains
Request, Local self-test, Energize and appends Verify. Move Verify Up once to
choose Request, Local self-test, Verify, Energize. Preview must preserve the
independent local occurrence and show only the explicit member/order facts.
3. Toggle membership of another paired occurrence while retaining the order draft.
Expect an exact-member-set error. Reconcile explicitly, inspect the retained
positions, then move the newly appended entry. Cancel/reopen recovery must retain
the rejected raw order; stale accepted models must reject recovery.
4. Apply, inspect the unchanged unrelated source/comment text and exact history,
Undo once, Redo, Save and reopen. Repeat in reverse and for Scenario, Branch and
Fragment branch order at normal and minimum window sizes.
Root also observed Reference pairs buttons clipped at the right edge in the
previous native binary. This slice explicitly bounds that panel's scrollable,
content column and rows to available width. Recheck Use pair and every Remove pair
with long identity labels at 1440x900 and 1100x700; the layout change has not yet
received native acceptance. The footer now accurately leaves attached-record and
multi-source review pending.
Root also observed top-level Model checks and Engineering guide disappearing at
1100x700 behind the previous horizontal navigation. The exact navigation container
in `views.rs::view` now uses `task_nav.wrap()` with unchanged buttons/actions/styles.
No `app.rs` handler was changed. Owned rustfmt passed; verify all nine pages remain
visible and usable at 1100x700 and 1440x900 in the rebuilt native binary.
@@ -0,0 +1,87 @@
# Remaining semantic review GUI: bounded implementation plan
Read-only review on DATA `c091f80e6ecf90e9aa6f13ec6fd34924c5ef55de`
plus the current keyed-row/recovery working tree. No production edits or new tests
were performed for this plan. Existing Annotation/Binding and unordered members
are complete within their documented slice and must be reused.
## Exact remaining contract
| Area | Core selector and semantics | Current desktop boundary |
| --- | --- | --- |
| Ordered lists | `Member { collection: Steps / FragmentBranches, keys }` independently decides presence; `Order(Steps / FragmentBranches)` separately decides the complete surviving order. Steps covers sequences and Branch occurrences. Every survivor occurs exactly once. Source anchors may place an insertion, but ambiguous placement requires an explicit final order. Target-local members survive Take. | `keyed::supported` excludes these collections; complete lists are editable only inside replacing occurrence groups. |
| Ownership | `Child(KeyPair<Id>)` attaches an existing mapped child by changing its Parent; removal detaches only from this owner. A new child needs an explicit transition mapping. Child and Header.Parent decisions must agree on the same actual child slot. | No independent Child editor. Candidate composition currently emits only the selected trace's target record. |
| Incident relation | `Incident { keys, end: Source / Target }` attaches an existing mapped relationship endpoint. Detachment requires an explicit final endpoint reviewed through the relationship trace; a boolean false alone is insufficient. | No endpoint attachment editor or linked relationship review in this modal. |
| Artifacts | `Artifact { keys, facet }`: Presence, Name, Description, Owner, Relation, Uri, Revision, Fragment. Creation needs a complete typed artifact candidate and explicit review of all seven introduced metadata facets. Deletion retires exact metadata observations. Metadata is reviewed from its initially attached owner trace; moves must reconcile attachment and Owner. | Artifact observations are visible; editing and exact artifact-history reset are disabled. No artifact candidate collection is emitted. |
| Multiple sources | One `SemanticTransitionRequest` carries explicit mappings, selected trace per source, canonical references, independent resolutions/resets per source, and one final candidate per record ID. All source proposals are derived from the same frozen project. Equal actual-slot proposals agree; contradictions reject regardless of source iteration order. | `State::request` constructs one source/mapping/review/target candidate. Switching trace clears its current drafts. |
## Smallest coherent sequence and ownership
1. **Ordered membership and order.** Add `semantic_review/ordered.rs` and focused
tests; extend existing member choices rather than replacing keyed rows. Show
explicit OA/SA member pairs, independent presence decisions, and a named final
order with Up/Down controls. Preserve raw order across deselection and rejected
previews. Initial defaults may retain the destination order but must not silently
acknowledge an ambiguous insertion. Extend `semantic_review.rs`, `view.rs`, and
`recovery.rs` only. This is independently shippable using current single-record
request construction; no core change is demonstrated as necessary.
2. **Batch review foundation with existing facets.** Introduce a session containing
per-source drafts and one shared references table, accepted base and preview.
Add/remove an explicit source-target-trace row; select a row to use the existing
facts/forms, retaining other rows' raw drafts. Compose one candidate per record
ID, then invoke the core once for the full batch. Display contradictions beside
every involved source, retaining all decisions. Extend recovery to all rows and
shared draft state. Own `semantic_review/**`; coordinate the Workflow wrapper
and root's App event integration only if its public State interface changes.
3. **Child and incident attachments.** Add `attachments.rs` with typed existing
object/relationship pair choices and Source/Target endpoint labels. Child
Candidate edits a separate child record. For incident removal offer a linked
relationship-review row and explicit replacement endpoint, using the batch
foundation; do not offer a misleading standalone unlink checkbox. Include
creation only via explicit transition mapping. Generalize candidate assembly
to a map of typed record IDs. Keep full induced-impact review and one Apply.
4. **Complete artifact lifecycle.** Add `artifacts.rs`: select existing attached
links or deliberately reserve a new destination identity, stage its explicit
pair, and edit typed raw metadata with separate None versus empty optional text.
Creation shows every required metadata decision together. Move identifies the
new owner and linked review rows; deletion shows retired history before Apply.
Enable exact artifact history reset only with lifecycle support. Preserve
provisional identity and invalid text in recovery. Own semantic subtree; reuse
ordinary artifact form helpers only with their owner's coordination.
No core contract extension is presently a verified blocker. Multi-record candidate
composition and the single-source State shape are desktop dependencies, not evidence
that planner scope must be broadened. Do not implement batch review as sequential
Apply operations: later sources must never observe earlier proposed writes.
## Engineering example and oracle
Review an OA vehicle-start process into an SA startup chain. OA adds “verify
interlock” between “request start” and “energize”; SA already retains a local
“self-test” between those anchors. Stage the explicit occurrence pair and Take
presence. Ambiguous placement must block until the user selects a final sequence,
for example request, self-test, verify interlock, energize. Review a second OA
maintenance-start process against the same SA chain: contradictory placement of
the same mapped occurrence must block in either source order. Agreeing explicit
final orders should yield one candidate and one transaction.
Then attach an already mapped “verify interlock” function to the selected subsystem,
move its incoming functional exchange through an explicitly reviewed endpoint, and
attach a requirement link with URI, revision and fragment. A conflicting kept Parent
or attachment must block the whole batch. Creating the requirement link with only
Presence selected must block until every introduced metadata facet is reviewed.
Compare GUI-produced requests and prepared results against direct core calls on
the same frozen fixture. Existing `r3_semantic.rs` oracles include
`ordered_member_requires_anchor_or_explicit_order_and_preserves_target_only`,
`combined_ordered_membership_commutes_or_requires_agreed_anchors`,
`child_membership_and_parent_resolutions_agree_by_actual_child_slot`,
`artifact_creation_requires_reviewed_metadata_and_deletion_retires_exact_facts`,
`artifact_owner_candidate_moves_link_and_conflicts_with_kept_attachment`, and
`target_only_artifact_move_records_owner_and_metadata_in_either_order`.
For every slice, compare both directions, source iteration permutations, exact
acknowledged/retired scopes and accepted impacts. Apply must preserve unrelated
records and comments, round-trip source/model/history, and produce one Undo/Redo.
Invalid raw drafts, rejected/stale previews and workflow recovery must retain all
authored values. Native review remains required at normal and minimum window size.
@@ -0,0 +1,67 @@
# Timed transition: actual saved bundle oracle
The actual two-file native save independently parsed, validated and reopened with
exactly the intended graph changes. The entry file alone was not treated as the
accepted model: the oracle read both `state-recovered-renamed.arcadia` and its
`sa/model.arcadia` include from `.local/native-qa`.
The staged production service was launched on an isolated loopback port with fresh
synthetic storage and a system-only PATH. Its SHA256 was
`BB775876741FE4A7B07CDE08940AEC8E23F545FDAFEC024FC4DC3BA6DD1AB9FC`.
Both pristine and saved bundles passed `/api/v1/projects/import-source-project`;
the returned native Projects were compared structurally, with object-key ordering
normalized and sequence ordering retained.
## Exact accepted delta
The expected entire Project was constructed from the pristine parsed Project by
only these changes, then compared for full equality to the saved parsed Project:
1. Add SA Event `49044cb7-5f91-408a-86fc-1cc012eb2972`, alias `after_30_s`, name
`After 30 s`, empty description, no parent, typed `Time { kind: After,
expression: "30 s" }`.
2. Rename existing StateTransition `f0060906-0000-4000-8000-000000000033` from
`Refresh status` to `Unfinished timed refresh`.
3. Append the new Event ID after the original Sample tick Event
`f0060906-0000-4000-8000-000000000013` in that transition's typed trigger list.
**Full Project equality passed.** The original trigger Event remains Time/After
`1 s`. The transition retains alias `refresh_status`, Internal kind, Ready→Ready
endpoints, empty free-text trigger, guard `pressure_valid`, typed effect
`f0060906-0000-4000-8000-000000000011` (Monitor pressure) and free-text effect
`Update status display`. All other elements, relations, IDs, source-independent
model metadata, state actions, containment, diagram placements, sizes, collapse
states, routes, traces and artifact links remain equal.
Counts are pristine14→saved15 elements,10 relations,1 diagram and8 placements.
The saved graph has no structural errors. Its three existing
`work_without_behavior_context` warnings address the three work functions; typed
state actions do not constitute process/scenario evidence under the coverage policy.
GET source-project also matched the exact two submitted file contents and entry
name. After force-stopping and restarting only the oracle server, model, two-file
source bundle and ETag still matched. Before/after hashes of all original input
files were identical; the oracle did not rewrite native artifacts.
## Inputs and reproducibility
| Source file | SHA256 |
|---|---|
| `.local/native-fixtures/state-actions.arcadia` | `9CDE82608110E56AA9E14C9E33EB38976F53AED74AB013145D411D5743A0EC26` |
| `.local/native-qa/state-recovered-renamed.arcadia` | `AD8FD359CE7B0BE4F3AE0F55424EEB4EE032DEFB359F2F5AD89C00A79B62DADF` |
| `.local/native-qa/sa/model.arcadia` | `8FB649F8ABB93CF4C321F2D847A1A9F1A1551E0F713E938C46EF11E24DC58801` |
Tracked runner: `harness/fixtures/run-timed-bundle-oracle.ps1`. From the repository
root, using PowerShell7 and the actual saved artifacts:
```powershell
$env:PATH = "$env:SystemRoot\System32;$env:SystemRoot;$env:SystemRoot\System32\Wbem"
& harness/fixtures/run-timed-bundle-oracle.ps1 -ServerExe .local/native-qa/bin-20260906-corrected/arcadia-server.exe -PristineFile .local/native-fixtures/state-actions.arcadia -SavedEntry .local/native-qa/state-recovered-renamed.arcadia
```
Evidence: `.local/timed-bundle-oracle-20260906-162848/` contains exact bundle request
payloads, parsed models, accepted/reopened bundles, response status/ETags, validation,
input hashes and `result.json` with the before/after transition. The response pairs
are sufficient to repeat the graph comparison even if the native files later move.
All owned oracle processes were stopped. This is independent parser/persistence
proof of the native save, not an additional native interaction or Linux claim.
+38
View File
@@ -0,0 +1,38 @@
# Independent Windows package review
Reviewed the current packaging script, guide, selected Cargo metadata, installed toolchain notices, and `.local/package-script-qa/ArcadiaStudio-qa-debug-20260906-a-x86_64-pc-windows-gnullvm` contents on 2026-09-06. No application was launched and no Cargo build/test was run for this review.
## Release blocker: third-party notices missing
The inspected QA bundle contains the application MIT license and only `licenses/llvm-mingw-LICENSE.TXT` under `licenses/`. It omits dependency notices, including Iced 0.14.0 (Hector Ramon and Iced contributors) and Tokio 1.53.1 (Tokio contributors). Their exact downloaded crate license files require their copyright and permission notices in copies or substantial portions. The selected locked Windows normal/build dependency graph contains 266 packages; a top-level dependency list would miss transitive notices. Several published workspace crates omit license texts even though their manifests declare license expressions, so collecting only existing root LICENSE files is insufficient.
Iced graphics embeds `fonts/Iced-Icons.ttf`; its optional Fira Sans font is gated by `fira-sans` (disabled in the observed metadata). Embedded assets need an explicit provenance record, not an assumption that every font in dependency examples/tests ships. Rust's installed toolchain supplies `share/doc/rust/COPYRIGHT-library.html` and `COPYRIGHT.html`; these are absent from the QA bundle too. LLVM-MinGW's root LICENSE.TXT alone is not evidence that every component-specific notice was resolved.
Smallest correction: select the two binary packages' transitive normal/build graph using locked target-filtered Cargo metadata; stage available notices, exact version/license/source information and local hashes; require reviewed, hash-bound supplements where publications omit required texts or contain embedded assets; include installed Rust library notices and the exact runtime distribution's notices. Refuse unresolved sources/notices before publishing an archive. This provides auditable inputs, not a universal license audit or proof that a prebuilt binary matches that graph.
## Runtime and integrity
No missing ordinary runtime DLL was established: current evidence identifies `libunwind.dll` as the sole non-Windows static import and it is staged beside both executables. The script inspects its imports too. Dynamic graphics and delay-loaded dependencies remain a clean-environment runtime acceptance gate, as the guide already states. The inspected bundle uses debug binaries; package-label version and PE architecture cannot prove release profile/source revision.
Fresh-output refusal, no recursive removal, create-new claim, copy hash checks, and ZIP readback are useful protections. Optional hardening: leaf reparse checks do not establish physical containment through ancestor junctions. This was not a demonstrated failure for the actual ordinary workspace/output paths and is distinct from the concrete missing-notice release blocker.
## Correction evidence
Implemented `scripts/windows-notices.ps1`, integrated it into `scripts/package-windows.ps1`, documented the workflow, and added hash-bound local supplements under `scripts/windows-notices/`. The collector uses locked offline target-filtered metadata, verifies cached registry archives against Cargo.lock, hashes actual local source files, stages nested notices and exact asset mappings, and includes the installed Rust copyright reports/compiler identity/target-library hashes. Git sources, missing declared sources, unknown font mappings, missing texts, path traversal and altered supplements are explicit refusals. Supplemental notice downloads were performed during this review at the recorded source URLs; packaging itself does not download.
Actual current graph preflight passes: **266 selected packages, 484 staged notice inputs, 58 Rust target library files hashed**. Twenty-seven published-crate notice mappings cover omitted texts. Iced graphics has two conservative font mappings: Fira Sans (disabled current feature, OFL statement and copyright extracted from its exact metadata plus upstream OFL text) and Iced Icons (declared distributed MIT plus its exact separate copyright/name metadata). LLVM-MinGW's exact libunwind hash is mapped to the component license at LLVM commit `ea7d852a70e8bdfaf601d6626a760f9771b2c4b4`, reported by the installed distribution's clang.
The icon font's different copyright owner was investigated, then distinguished from a proven conflicting license. Its pinned crate declares MIT; no explicit contrary asset license/exception was found in the pinned repository or inspected history. The conservative distribution record therefore retains Iced's MIT plus the font's own Fontello copyright metadata and a candid provenance limitation. Missing original glyph configuration alone is not treated as proof that the distributed license excludes the asset. No font replacement or dependency modification was made. Exact name/cmap inspection confirmed the seven renderer codepoints (F00C, E800 through E805). See `scripts/windows-notices/Iced-Icons-NOTICE.txt` for the evidence boundary.
`scripts/test-windows-notices.ps1` passes **8 contract checks on Windows PowerShell 5.1 and PowerShell 7**: selected normal/build graph excludes dev-only and disconnected packages; both Rust copyright reports are included; actual source changes alter source hashes; tampered archives, unmapped fonts, unsupported sources, escaping supplement paths and altered supplements are refused. All three scripts parse successfully. Tests use synthetic metadata and temporary fixtures; no build, Cargo target mutation or UI occurs. This does not test every license's legal requirements or indirect/generated asset discovery.
Fresh staging/archive verification against the root's newly rebuilt debug binaries **passed** as `qa-debug-20260906-b` under `.local/package-script-qa/`. The archive contains **528 files**, including **485 license files** (484 collected inputs plus the LLVM-MinGW distribution root notice). Every staged input was hash-checked and every ZIP entry was read back and compared. The archive is 30,615,400 bytes. Log: `.local/package-notices-qa-b.log`.
| Input/output | SHA-256 | Bytes |
| --- | --- | ---: |
| arcadia-studio.exe | `821f702f37f902955d63d230d6d7522935d09348931c36a45b24d70a72434553` | 102,017,024 |
| arcadia-server.exe | `dd6b7a6a9725558954f4f29219ebf6e773b30843766fe738c365f1ced3df9e8e` | 37,202,432 |
| libunwind.dll | `f45604a12e8bcd839fd86f667c1be1cc7c4f9da2b3c69ff381ac708f0e1ae7d4` | 190,976 |
| QA b ZIP | `237b30ee0c704efad89ed5c371d2c965f9e7d11ea318c97ba16ee34282456f73` | 30,615,400 |
The collected Cargo.lock hash is `e7b95afac40a11823fa68d615fcad97deeb878c8fa1e83b28561be5a81896112`. Spot inspection of the actual stage confirms the Tokio, Iced and separate font copyright notices are present; the machine-readable inventory contains both font mappings, all selected package declarations and source hashes, and Rust distribution evidence. Native acceptance remains owned by the release operator; this package is QA and does not imply the full release objective is complete. Script/docs ownership was returned to root after this successful run, with no Cargo build or target mutation by this work.