Bound Create labels within lifeline capsules and preserve Unicode test inputs
This commit is contained in:
@@ -2164,7 +2164,8 @@ impl canvas::Program<Message> for Scene {
|
|||||||
..Default::default()
|
..Default::default()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
self.lifecycle.draw_markers(&mut f, self.selected);
|
self.lifecycle
|
||||||
|
.draw_markers(&mut f, self.selected, self.scale);
|
||||||
if let Some((context, tool, editable)) = self.interaction {
|
if let Some((context, tool, editable)) = self.interaction {
|
||||||
let active = editable && state.context == Some(context) && state.tool == tool;
|
let active = editable && state.context == Some(context) && state.tool == tool;
|
||||||
let point = cursor
|
let point = cursor
|
||||||
|
|||||||
@@ -277,7 +277,7 @@ impl Rendering {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(in crate::behavior) fn draw_markers(&self, frame: &mut Frame, selected: Id) {
|
pub(in crate::behavior) fn draw_markers(&self, frame: &mut Frame, selected: Id, scale: f32) {
|
||||||
for marker in &self.markers {
|
for marker in &self.markers {
|
||||||
let color = if selected == marker.event.occurrence || selected == marker.lifeline {
|
let color = if selected == marker.event.occurrence || selected == marker.lifeline {
|
||||||
style::TEAL
|
style::TEAL
|
||||||
@@ -302,13 +302,20 @@ impl Rendering {
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
frame.fill_text(Text {
|
if let Some(clip) = birth_label_clip(marker.capsule, scale, frame.size()) {
|
||||||
content: short(&marker.name, 18),
|
// WGPU clipped frames start with an identity transform;
|
||||||
position: marker.capsule.position() + iced::Vector::new(8., 6.),
|
// neither the parent's scale nor its clip is inherited.
|
||||||
size: 12.into(),
|
frame.with_clip(clip, |label| {
|
||||||
color,
|
label.scale(scale);
|
||||||
..Default::default()
|
label.fill_text(Text {
|
||||||
});
|
content: short(&marker.name, 18),
|
||||||
|
position: marker.capsule.position() + iced::Vector::new(8., 6.),
|
||||||
|
size: 12.into(),
|
||||||
|
color,
|
||||||
|
..Default::default()
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
MarkerKind::Death => {
|
MarkerKind::Death => {
|
||||||
for (a, b) in death_strokes(marker.center) {
|
for (a, b) in death_strokes(marker.center) {
|
||||||
@@ -323,6 +330,17 @@ impl Rendering {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn birth_label_clip(capsule: Rectangle, scale: f32, viewport: Size) -> Option<Rectangle> {
|
||||||
|
if !scale.is_finite() || scale <= 0. {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
Rectangle::new(
|
||||||
|
Point::new((capsule.x + 8.) * scale, (capsule.y + 4.) * scale),
|
||||||
|
Size::new((capsule.width - 16.) * scale, (capsule.height - 8.) * scale),
|
||||||
|
)
|
||||||
|
.intersection(&Rectangle::new(Point::ORIGIN, viewport))
|
||||||
|
}
|
||||||
|
|
||||||
fn marker_distance(marker: &EventMarker, point: Point) -> f32 {
|
fn marker_distance(marker: &EventMarker, point: Point) -> f32 {
|
||||||
match marker.event.kind {
|
match marker.event.kind {
|
||||||
MarkerKind::Birth => {
|
MarkerKind::Birth => {
|
||||||
|
|||||||
@@ -172,6 +172,67 @@ fn intervals(scene: &Scene, lifeline: Id, scope: Id) -> Vec<(f32, f32, Life)> {
|
|||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn birth_label_clip_keeps_padded_world_bounds_at_each_scene_scale() {
|
||||||
|
let capsule = Rectangle::new(Point::new(100., 200.), Size::new(140., 28.));
|
||||||
|
for (scale, expected) in [
|
||||||
|
(
|
||||||
|
0.05,
|
||||||
|
Rectangle::new(Point::new(5.4, 10.2), Size::new(6.2, 1.)),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
0.5,
|
||||||
|
Rectangle::new(Point::new(54., 102.), Size::new(62., 10.)),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
1.,
|
||||||
|
Rectangle::new(Point::new(108., 204.), Size::new(124., 20.)),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
2.,
|
||||||
|
Rectangle::new(Point::new(216., 408.), Size::new(248., 40.)),
|
||||||
|
),
|
||||||
|
] {
|
||||||
|
let clip = birth_label_clip(capsule, scale, Size::new(1000., 1000.)).unwrap();
|
||||||
|
for (actual, expected) in [
|
||||||
|
(clip.x, expected.x),
|
||||||
|
(clip.y, expected.y),
|
||||||
|
(clip.width, expected.width),
|
||||||
|
(clip.height, expected.height),
|
||||||
|
] {
|
||||||
|
assert!((actual - expected).abs() < 0.0001);
|
||||||
|
}
|
||||||
|
assert!(capsule.contains(Point::new(clip.x / scale, clip.y / scale)));
|
||||||
|
assert!(capsule.contains(Point::new(
|
||||||
|
(clip.x + clip.width) / scale,
|
||||||
|
(clip.y + clip.height) / scale,
|
||||||
|
)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn birth_label_clip_preserves_parent_viewport_bounds() {
|
||||||
|
let capsule = Rectangle::new(Point::new(100., 200.), Size::new(140., 28.));
|
||||||
|
assert_eq!(
|
||||||
|
birth_label_clip(capsule, 2., Size::new(300., 420.)),
|
||||||
|
Some(Rectangle::new(Point::new(216., 408.), Size::new(84., 12.)))
|
||||||
|
);
|
||||||
|
let crossing_origin = Rectangle::new(Point::new(-20., -10.), Size::new(140., 28.));
|
||||||
|
assert_eq!(
|
||||||
|
birth_label_clip(crossing_origin, 2., Size::new(300., 420.)),
|
||||||
|
Some(Rectangle::new(Point::ORIGIN, Size::new(224., 28.)))
|
||||||
|
);
|
||||||
|
for viewport in [Size::new(200., 420.), Size::new(300., 400.), Size::ZERO] {
|
||||||
|
assert_eq!(birth_label_clip(capsule, 2., viewport), None);
|
||||||
|
}
|
||||||
|
for scale in [0., -1., f32::NAN, f32::INFINITY] {
|
||||||
|
assert_eq!(
|
||||||
|
birth_label_clip(capsule, scale, Size::new(1000., 1000.)),
|
||||||
|
None
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn real_scene_empty_and_create_only_use_visible_root_extents_not_insertion_bounds() {
|
fn real_scene_empty_and_create_only_use_visible_root_extents_not_insertion_bounds() {
|
||||||
for layer in [Layer::Oa, Layer::Sa] {
|
for layer in [Layer::Oa, Layer::Sa] {
|
||||||
|
|||||||
+6
-3
@@ -1,9 +1,12 @@
|
|||||||
# Progress Ledger — first release
|
# Progress Ledger — first release
|
||||||
|
|
||||||
Updated 2026-09-11 by Codex-ytr83r /root for current execution.
|
Updated 2026-09-11 by Codex-ytr83r /root for current execution.
|
||||||
**Reboot checkpoint:** the user requested saving progress before reboot. The
|
**Post-reboot:** the user confirmed restart; fresh Windows boot13:41:27UTC is
|
||||||
desktop Cargo session93786 was interrupted during dependency compilation; no
|
verified and saved checkpointfb77b85 was clean. Desktop session93786 had been
|
||||||
desktop test result exists. Follow [resume instructions](RESUME.md) after reboot.
|
interrupted during dependency compilation; no test result exists. Current work
|
||||||
|
is the reviewed Unicode capsule clipping correction and cached Windows gate,
|
||||||
|
plus ordinary Ubuntu26.04 installation because no distro was yet registered.
|
||||||
|
The old [resume instructions](RESUME.md) preserve the exact interruption context.
|
||||||
**Release remains incomplete.** This is the new Codex-ytr83r Windows checkout.
|
**Release remains incomplete.** This is the new Codex-ytr83r Windows checkout.
|
||||||
It started clean at `ff615d0`; no local compiled desktop or native acceptance
|
It started clean at `ff615d0`; no local compiled desktop or native acceptance
|
||||||
is claimed for the combined source at this checkpoint.
|
is claimed for the combined source at this checkpoint.
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"Path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\crates\\oa-desktop\\src\\behavior.rs",
|
||||||
|
"Hash": "F2FB8850480FB96F8038A4C1D855EE31E408890B1D943E7B3A9F26B5E4498445"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\crates\\oa-desktop\\src\\behavior\\scenario_lifecycle\\render.rs",
|
||||||
|
"Hash": "88594D0758358D776BB5453CCF5D482A5775600D926C53D4FCE71DD7833AC8C7"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\crates\\oa-desktop\\src\\behavior\\scenario_lifecycle\\render_tests.rs",
|
||||||
|
"Hash": "862FC0B04517187B7F02AA1B98914C6FB12D6D650D9F72946C8B1FFFB0A3C05D"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"results": [
|
||||||
|
{
|
||||||
|
"seconds": 0.4776694,
|
||||||
|
"mode": "typography-wide",
|
||||||
|
"scope": "ordinary core/source admission of fixed expected input only; no native output",
|
||||||
|
"exit": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seconds": 0.257928,
|
||||||
|
"mode": "typography-clusters",
|
||||||
|
"scope": "ordinary core/source admission of fixed expected input only; no native output",
|
||||||
|
"exit": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"completed_utc": "2026-09-11T13:50:08.2961401Z",
|
||||||
|
"oracle_sha256": "798D7A1907B894C13549BAD35511B21D6BC7F3D67D63674042B7DF71184C7524"
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
PASS same: all identities, fields, reachable source and physical bytes
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
{
|
||||||
|
"origin": "baseline/project.arcadia",
|
||||||
|
"scope": "Exactly the two root receiver Lifeline names; all other bytes unchanged",
|
||||||
|
"native_acceptance": false,
|
||||||
|
"variants": {
|
||||||
|
"typography-wide": {
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"id": "5ceab400-0000-4000-8000-00000000044e",
|
||||||
|
"name": "WWWWWWWWWWWWWWWWWW",
|
||||||
|
"before": "oa_lifeline life_oa_102 \"OA Receiver lane\" id \"5ceab400-0000-4000-8000-00000000044e\"",
|
||||||
|
"after": "oa_lifeline life_oa_102 \"WWWWWWWWWWWWWWWWWW\" id \"5ceab400-0000-4000-8000-00000000044e\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5ceab400-0000-4000-8000-000000000836",
|
||||||
|
"name": "界界界界界界界界界界界界界界界界界界",
|
||||||
|
"before": "sa_lifeline life_sa_102 \"SA Receiver lane\" id \"5ceab400-0000-4000-8000-000000000836\"",
|
||||||
|
"after": "sa_lifeline life_sa_102 \"界界界界界界界界界界界界界界界界界界\" id \"5ceab400-0000-4000-8000-000000000836\""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"files": {
|
||||||
|
"project.arcadia": {
|
||||||
|
"bytes": 20128,
|
||||||
|
"sha256": "6a18ee1f246321bdf8ab0e7e8e5d4eba134ce486ed5224c4ffd61c7342c3a7d3"
|
||||||
|
},
|
||||||
|
"rationale.arcadia": {
|
||||||
|
"bytes": 86,
|
||||||
|
"sha256": "8509f8d8a136d808cf98a1bb0fe50348b8a24409f30dee4ee65b62bf5cb9e6bf"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"typography-clusters": {
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"id": "5ceab400-0000-4000-8000-00000000044e",
|
||||||
|
"name": "abcdefghijklmnopé尾",
|
||||||
|
"before": "oa_lifeline life_oa_102 \"OA Receiver lane\" id \"5ceab400-0000-4000-8000-00000000044e\"",
|
||||||
|
"after": "oa_lifeline life_oa_102 \"abcdefghijklmnopé尾\" id \"5ceab400-0000-4000-8000-00000000044e\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5ceab400-0000-4000-8000-000000000836",
|
||||||
|
"name": "abcdefghijklmnop👩🔬 tail",
|
||||||
|
"before": "sa_lifeline life_sa_102 \"SA Receiver lane\" id \"5ceab400-0000-4000-8000-000000000836\"",
|
||||||
|
"after": "sa_lifeline life_sa_102 \"abcdefghijklmnop👩🔬 tail\" id \"5ceab400-0000-4000-8000-000000000836\""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"files": {
|
||||||
|
"project.arcadia": {
|
||||||
|
"bytes": 20110,
|
||||||
|
"sha256": "eecddfc4a4514e995633ea58b89fe154dc6dc43509b1f53ee05b76f8e6b993c8"
|
||||||
|
},
|
||||||
|
"rationale.arcadia": {
|
||||||
|
"bytes": 86,
|
||||||
|
"sha256": "8509f8d8a136d808cf98a1bb0fe50348b8a24409f30dee4ee65b62bf5cb9e6bf"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
PASS same: all identities, fields, reachable source and physical bytes
|
||||||
@@ -136,3 +136,28 @@ source byte and identity is unchanged. All three rationale files remain identica
|
|||||||
86-byte Unicode text with exactly two CRLF lines and no bare LF. None of these
|
86-byte Unicode text with exactly two CRLF lines and no bare LF. None of these
|
||||||
predictions used native outputs. Pending: matching GUI, visual/interaction checks
|
predictions used native outputs. Pending: matching GUI, visual/interaction checks
|
||||||
and every native Save/Undo/Redo/reopen step above.
|
and every native Save/Undo/Redo/reopen step above.
|
||||||
|
|
||||||
|
## Separate Unicode display predictions — after reboot
|
||||||
|
|
||||||
|
`typography-wide` changes only the OA root receiver Lifeline name to eighteen
|
||||||
|
`W` characters and the SA root receiver name to eighteen `界` characters.
|
||||||
|
`typography-clusters` instead uses a combining accent and a joined emoji near
|
||||||
|
the existing display cutoff. Both derive from the original baseline by replacing
|
||||||
|
exactly the two named Lifeline declaration name tokens; reverse replacement
|
||||||
|
reproduced every original byte. All six original fixture hashes remain unchanged.
|
||||||
|
|
||||||
|
The expected full strings, IDs, byte sizes and SHA256 values are preserved in
|
||||||
|
`../../experiments/lifecycle-native-ytr83r-20260911/typography-predictions.json`.
|
||||||
|
The unchanged, hash-verified original oracle admitted both inputs through its
|
||||||
|
`same EXPECTED EXPECTED` path using ordinary core/source loading and validation.
|
||||||
|
This proves input admission only; it is not a native comparison. Exact logs and
|
||||||
|
timings are alongside the manifest in `typography-admission.json`.
|
||||||
|
|
||||||
|
Before opening either variant in Studio, copy it to a fresh native working
|
||||||
|
directory. Compare every passive open/zoom/select/Save result with the immutable
|
||||||
|
expected variant using `same EXPECTED ACTUAL`. Inspect Create label containment
|
||||||
|
at 0.5x/1x/2x and minimum Fit, while retaining the original Create selection IDs.
|
||||||
|
Select the neutral lane header/guide to inspect its full Lifeline name, then
|
||||||
|
cancel property editing without changing it. Missing font glyphs are observations
|
||||||
|
to record, not a reason to change the source names or weaken containment checks.
|
||||||
|
No native output or pixel clipping acceptance is claimed yet.
|
||||||
|
|||||||
@@ -0,0 +1,692 @@
|
|||||||
|
arcadia 7;
|
||||||
|
project lifecycle_native "Lifecycle native contract" id "5ceab400-0000-4000-8000-000000000001" {
|
||||||
|
include "rationale.arcadia";
|
||||||
|
description "Fixed semantic inputs; lifecycle geometry is derived and never authored.";
|
||||||
|
|
||||||
|
oa_activity life_oa_10 "OA Controller work" id "5ceab400-0000-4000-8000-0000000003f2" {
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_activity life_oa_11 "OA Receiver work" id "5ceab400-0000-4000-8000-0000000003f3" {
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_scenario life_oa_100 "OA 01 Root create action delete" id "5ceab400-0000-4000-8000-00000000044c" {
|
||||||
|
context none;
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
steps [@life_oa_110, @life_oa_111, @life_oa_112];
|
||||||
|
viewpoint OperationalActivity;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_lifeline life_oa_101 "OA Controller lane" id "5ceab400-0000-4000-8000-00000000044d" {
|
||||||
|
description "";
|
||||||
|
parent @life_oa_100;
|
||||||
|
represented @life_oa_10;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_lifeline life_oa_102 "abcdefghijklmnopé尾" id "5ceab400-0000-4000-8000-00000000044e" {
|
||||||
|
description "";
|
||||||
|
parent @life_oa_100;
|
||||||
|
represented @life_oa_11;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_occurrence life_oa_110 "OA Create receiver" id "5ceab400-0000-4000-8000-000000000456" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange @life_oa_service;
|
||||||
|
message_kind Create;
|
||||||
|
receiver @life_oa_102;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_oa_101;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_oa_100;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_occurrence life_oa_111 "OA Receiver action" id "5ceab400-0000-4000-8000-000000000457" {
|
||||||
|
body {
|
||||||
|
Action {
|
||||||
|
action @life_oa_11;
|
||||||
|
lifeline @life_oa_102;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_oa_100;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_occurrence life_oa_112 "OA Delete receiver" id "5ceab400-0000-4000-8000-000000000458" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange @life_oa_service;
|
||||||
|
message_kind Delete;
|
||||||
|
receiver @life_oa_102;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_oa_101;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_oa_100;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_scenario life_oa_200 "OA 02 Preexisting empty" id "5ceab400-0000-4000-8000-0000000004b0" {
|
||||||
|
context none;
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
steps [];
|
||||||
|
viewpoint OperationalActivity;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_lifeline life_oa_201 "OA Controller lane" id "5ceab400-0000-4000-8000-0000000004b1" {
|
||||||
|
description "";
|
||||||
|
parent @life_oa_200;
|
||||||
|
represented @life_oa_10;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_lifeline life_oa_202 "OA Receiver lane" id "5ceab400-0000-4000-8000-0000000004b2" {
|
||||||
|
description "";
|
||||||
|
parent @life_oa_200;
|
||||||
|
represented @life_oa_11;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_scenario life_oa_300 "OA 03 Create only" id "5ceab400-0000-4000-8000-000000000514" {
|
||||||
|
context none;
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
steps [@life_oa_310];
|
||||||
|
viewpoint OperationalActivity;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_lifeline life_oa_301 "OA Controller lane" id "5ceab400-0000-4000-8000-000000000515" {
|
||||||
|
description "";
|
||||||
|
parent @life_oa_300;
|
||||||
|
represented @life_oa_10;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_lifeline life_oa_302 "OA Receiver lane" id "5ceab400-0000-4000-8000-000000000516" {
|
||||||
|
description "";
|
||||||
|
parent @life_oa_300;
|
||||||
|
represented @life_oa_11;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_occurrence life_oa_310 "OA Create only receiver" id "5ceab400-0000-4000-8000-00000000051e" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange @life_oa_service;
|
||||||
|
message_kind Create;
|
||||||
|
receiver @life_oa_302;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_oa_301;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_oa_300;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_scenario life_oa_400 "OA 04 Conditional delete" id "5ceab400-0000-4000-8000-000000000578" {
|
||||||
|
context none;
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
steps [@life_oa_410, @life_oa_411];
|
||||||
|
viewpoint OperationalActivity;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_lifeline life_oa_401 "OA Controller lane" id "5ceab400-0000-4000-8000-000000000579" {
|
||||||
|
description "";
|
||||||
|
parent @life_oa_400;
|
||||||
|
represented @life_oa_10;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_lifeline life_oa_402 "OA Receiver lane" id "5ceab400-0000-4000-8000-00000000057a" {
|
||||||
|
description "";
|
||||||
|
parent @life_oa_400;
|
||||||
|
represented @life_oa_11;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_occurrence life_oa_410 "OA Open call" id "5ceab400-0000-4000-8000-000000000582" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange @life_oa_service;
|
||||||
|
message_kind Call;
|
||||||
|
receiver @life_oa_402;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_oa_401;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_oa_400;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_occurrence life_oa_411 "OA ALT delete or keep" id "5ceab400-0000-4000-8000-000000000583" {
|
||||||
|
body {
|
||||||
|
Fragment {
|
||||||
|
branches [@life_oa_412, @life_oa_413];
|
||||||
|
operator Alternative;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_oa_400;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_occurrence life_oa_412 "OA Left delete operand" id "5ceab400-0000-4000-8000-000000000584" {
|
||||||
|
body {
|
||||||
|
Branch {
|
||||||
|
guard "stop_requested";
|
||||||
|
occurrences [@life_oa_414];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_oa_411;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_occurrence life_oa_413 "OA Right empty operand" id "5ceab400-0000-4000-8000-000000000585" {
|
||||||
|
body {
|
||||||
|
Branch {
|
||||||
|
guard "else";
|
||||||
|
occurrences [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_oa_411;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_occurrence life_oa_414 "OA Conditional delete receiver" id "5ceab400-0000-4000-8000-000000000586" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange @life_oa_service;
|
||||||
|
message_kind Delete;
|
||||||
|
receiver @life_oa_402;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_oa_401;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_oa_412;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_scenario life_oa_500 "OA 05 Unassigned receiver" id "5ceab400-0000-4000-8000-0000000005dc" {
|
||||||
|
context none;
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
steps [@life_oa_510, @life_oa_511];
|
||||||
|
viewpoint OperationalActivity;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_lifeline life_oa_501 "OA Controller lane" id "5ceab400-0000-4000-8000-0000000005dd" {
|
||||||
|
description "";
|
||||||
|
parent @life_oa_500;
|
||||||
|
represented @life_oa_10;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_lifeline life_oa_502 "OA Unassigned receiver lane" id "5ceab400-0000-4000-8000-0000000005de" {
|
||||||
|
description "";
|
||||||
|
parent @life_oa_500;
|
||||||
|
represented none;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_occurrence life_oa_510 "OA Create unassigned receiver" id "5ceab400-0000-4000-8000-0000000005e6" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange none;
|
||||||
|
message_kind Create;
|
||||||
|
receiver @life_oa_502;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_oa_501;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_oa_500;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_occurrence life_oa_511 "OA Delete unassigned receiver" id "5ceab400-0000-4000-8000-0000000005e7" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange none;
|
||||||
|
message_kind Delete;
|
||||||
|
receiver @life_oa_502;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_oa_501;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_oa_500;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_scenario life_oa_600 "OA 06 Self delete" id "5ceab400-0000-4000-8000-000000000640" {
|
||||||
|
context none;
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
steps [@life_oa_610];
|
||||||
|
viewpoint OperationalActivity;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_lifeline life_oa_601 "OA Controller lane" id "5ceab400-0000-4000-8000-000000000641" {
|
||||||
|
description "";
|
||||||
|
parent @life_oa_600;
|
||||||
|
represented @life_oa_10;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_occurrence life_oa_610 "OA Self delete controller" id "5ceab400-0000-4000-8000-00000000064a" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange none;
|
||||||
|
message_kind Delete;
|
||||||
|
receiver @life_oa_601;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_oa_601;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_oa_600;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_function life_sa_10 "SA Controller work" id "5ceab400-0000-4000-8000-0000000007da" {
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_function life_sa_11 "SA Receiver work" id "5ceab400-0000-4000-8000-0000000007db" {
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_scenario life_sa_100 "SA 01 Root create action delete" id "5ceab400-0000-4000-8000-000000000834" {
|
||||||
|
context none;
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
steps [@life_sa_110, @life_sa_111, @life_sa_112];
|
||||||
|
viewpoint Functional;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_lifeline life_sa_101 "SA Controller lane" id "5ceab400-0000-4000-8000-000000000835" {
|
||||||
|
description "";
|
||||||
|
parent @life_sa_100;
|
||||||
|
represented @life_sa_10;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_lifeline life_sa_102 "abcdefghijklmnop👩🔬 tail" id "5ceab400-0000-4000-8000-000000000836" {
|
||||||
|
description "";
|
||||||
|
parent @life_sa_100;
|
||||||
|
represented @life_sa_11;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_occurrence life_sa_110 "SA Create receiver" id "5ceab400-0000-4000-8000-00000000083e" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange @life_sa_service;
|
||||||
|
message_kind Create;
|
||||||
|
receiver @life_sa_102;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_sa_101;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_sa_100;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_occurrence life_sa_111 "SA Receiver action" id "5ceab400-0000-4000-8000-00000000083f" {
|
||||||
|
body {
|
||||||
|
Action {
|
||||||
|
action @life_sa_11;
|
||||||
|
lifeline @life_sa_102;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_sa_100;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_occurrence life_sa_112 "SA Delete receiver" id "5ceab400-0000-4000-8000-000000000840" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange @life_sa_service;
|
||||||
|
message_kind Delete;
|
||||||
|
receiver @life_sa_102;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_sa_101;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_sa_100;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_scenario life_sa_200 "SA 02 Preexisting empty" id "5ceab400-0000-4000-8000-000000000898" {
|
||||||
|
context none;
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
steps [];
|
||||||
|
viewpoint Functional;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_lifeline life_sa_201 "SA Controller lane" id "5ceab400-0000-4000-8000-000000000899" {
|
||||||
|
description "";
|
||||||
|
parent @life_sa_200;
|
||||||
|
represented @life_sa_10;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_lifeline life_sa_202 "SA Receiver lane" id "5ceab400-0000-4000-8000-00000000089a" {
|
||||||
|
description "";
|
||||||
|
parent @life_sa_200;
|
||||||
|
represented @life_sa_11;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_scenario life_sa_300 "SA 03 Create only" id "5ceab400-0000-4000-8000-0000000008fc" {
|
||||||
|
context none;
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
steps [@life_sa_310];
|
||||||
|
viewpoint Functional;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_lifeline life_sa_301 "SA Controller lane" id "5ceab400-0000-4000-8000-0000000008fd" {
|
||||||
|
description "";
|
||||||
|
parent @life_sa_300;
|
||||||
|
represented @life_sa_10;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_lifeline life_sa_302 "SA Receiver lane" id "5ceab400-0000-4000-8000-0000000008fe" {
|
||||||
|
description "";
|
||||||
|
parent @life_sa_300;
|
||||||
|
represented @life_sa_11;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_occurrence life_sa_310 "SA Create only receiver" id "5ceab400-0000-4000-8000-000000000906" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange @life_sa_service;
|
||||||
|
message_kind Create;
|
||||||
|
receiver @life_sa_302;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_sa_301;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_sa_300;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_scenario life_sa_400 "SA 04 Conditional delete" id "5ceab400-0000-4000-8000-000000000960" {
|
||||||
|
context none;
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
steps [@life_sa_410, @life_sa_411];
|
||||||
|
viewpoint Functional;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_lifeline life_sa_401 "SA Controller lane" id "5ceab400-0000-4000-8000-000000000961" {
|
||||||
|
description "";
|
||||||
|
parent @life_sa_400;
|
||||||
|
represented @life_sa_10;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_lifeline life_sa_402 "SA Receiver lane" id "5ceab400-0000-4000-8000-000000000962" {
|
||||||
|
description "";
|
||||||
|
parent @life_sa_400;
|
||||||
|
represented @life_sa_11;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_occurrence life_sa_410 "SA Open call" id "5ceab400-0000-4000-8000-00000000096a" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange @life_sa_service;
|
||||||
|
message_kind Call;
|
||||||
|
receiver @life_sa_402;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_sa_401;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_sa_400;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_occurrence life_sa_411 "SA ALT delete or keep" id "5ceab400-0000-4000-8000-00000000096b" {
|
||||||
|
body {
|
||||||
|
Fragment {
|
||||||
|
branches [@life_sa_412, @life_sa_413];
|
||||||
|
operator Alternative;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_sa_400;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_occurrence life_sa_412 "SA Left delete operand" id "5ceab400-0000-4000-8000-00000000096c" {
|
||||||
|
body {
|
||||||
|
Branch {
|
||||||
|
guard "stop_requested";
|
||||||
|
occurrences [@life_sa_414];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_sa_411;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_occurrence life_sa_413 "SA Right empty operand" id "5ceab400-0000-4000-8000-00000000096d" {
|
||||||
|
body {
|
||||||
|
Branch {
|
||||||
|
guard "else";
|
||||||
|
occurrences [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_sa_411;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_occurrence life_sa_414 "SA Conditional delete receiver" id "5ceab400-0000-4000-8000-00000000096e" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange @life_sa_service;
|
||||||
|
message_kind Delete;
|
||||||
|
receiver @life_sa_402;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_sa_401;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_sa_412;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_scenario life_sa_500 "SA 05 Unassigned receiver" id "5ceab400-0000-4000-8000-0000000009c4" {
|
||||||
|
context none;
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
steps [@life_sa_510, @life_sa_511];
|
||||||
|
viewpoint Functional;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_lifeline life_sa_501 "SA Controller lane" id "5ceab400-0000-4000-8000-0000000009c5" {
|
||||||
|
description "";
|
||||||
|
parent @life_sa_500;
|
||||||
|
represented @life_sa_10;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_lifeline life_sa_502 "SA Unassigned receiver lane" id "5ceab400-0000-4000-8000-0000000009c6" {
|
||||||
|
description "";
|
||||||
|
parent @life_sa_500;
|
||||||
|
represented none;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_occurrence life_sa_510 "SA Create unassigned receiver" id "5ceab400-0000-4000-8000-0000000009ce" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange none;
|
||||||
|
message_kind Create;
|
||||||
|
receiver @life_sa_502;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_sa_501;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_sa_500;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_occurrence life_sa_511 "SA Delete unassigned receiver" id "5ceab400-0000-4000-8000-0000000009cf" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange none;
|
||||||
|
message_kind Delete;
|
||||||
|
receiver @life_sa_502;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_sa_501;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_sa_500;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_scenario life_sa_600 "SA 06 Self delete" id "5ceab400-0000-4000-8000-000000000a28" {
|
||||||
|
context none;
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
steps [@life_sa_610];
|
||||||
|
viewpoint Functional;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_lifeline life_sa_601 "SA Controller lane" id "5ceab400-0000-4000-8000-000000000a29" {
|
||||||
|
description "";
|
||||||
|
parent @life_sa_600;
|
||||||
|
represented @life_sa_10;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_occurrence life_sa_610 "SA Self delete controller" id "5ceab400-0000-4000-8000-000000000a32" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange none;
|
||||||
|
message_kind Delete;
|
||||||
|
receiver @life_sa_601;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_sa_601;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_sa_600;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_port sa_lifecycle_service_input "SA Lifecycle service input" id "a4a6ecc0-3e12-51a5-b08b-199ad743525c" {
|
||||||
|
contract {
|
||||||
|
FunctionInput {
|
||||||
|
incoming_items [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
legacy none;
|
||||||
|
parent @life_sa_11;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_port sa_lifecycle_service_output "SA Lifecycle service output" id "b1aa66c4-0e8e-5091-beda-2b8d2005b688" {
|
||||||
|
contract {
|
||||||
|
FunctionOutput {
|
||||||
|
outgoing_items [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
legacy none;
|
||||||
|
parent @life_sa_10;
|
||||||
|
}
|
||||||
|
|
||||||
|
interaction life_oa_service "OA Lifecycle service" id "5ceab400-0000-4000-8000-0000000003f4" {
|
||||||
|
description "";
|
||||||
|
items [];
|
||||||
|
source @life_oa_10;
|
||||||
|
target @life_oa_11;
|
||||||
|
}
|
||||||
|
|
||||||
|
functional_exchange life_sa_service "SA Lifecycle service" id "5ceab400-0000-4000-8000-0000000007dc" {
|
||||||
|
description "";
|
||||||
|
items [];
|
||||||
|
source @life_sa_10;
|
||||||
|
source_port @sa_lifecycle_service_output;
|
||||||
|
target @life_sa_11;
|
||||||
|
target_port @sa_lifecycle_service_input;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
// Preserve lifecycle note: 雨 · receiver.
|
||||||
|
// Geometry never changes these bytes.
|
||||||
@@ -0,0 +1,692 @@
|
|||||||
|
arcadia 7;
|
||||||
|
project lifecycle_native "Lifecycle native contract" id "5ceab400-0000-4000-8000-000000000001" {
|
||||||
|
include "rationale.arcadia";
|
||||||
|
description "Fixed semantic inputs; lifecycle geometry is derived and never authored.";
|
||||||
|
|
||||||
|
oa_activity life_oa_10 "OA Controller work" id "5ceab400-0000-4000-8000-0000000003f2" {
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_activity life_oa_11 "OA Receiver work" id "5ceab400-0000-4000-8000-0000000003f3" {
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_scenario life_oa_100 "OA 01 Root create action delete" id "5ceab400-0000-4000-8000-00000000044c" {
|
||||||
|
context none;
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
steps [@life_oa_110, @life_oa_111, @life_oa_112];
|
||||||
|
viewpoint OperationalActivity;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_lifeline life_oa_101 "OA Controller lane" id "5ceab400-0000-4000-8000-00000000044d" {
|
||||||
|
description "";
|
||||||
|
parent @life_oa_100;
|
||||||
|
represented @life_oa_10;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_lifeline life_oa_102 "WWWWWWWWWWWWWWWWWW" id "5ceab400-0000-4000-8000-00000000044e" {
|
||||||
|
description "";
|
||||||
|
parent @life_oa_100;
|
||||||
|
represented @life_oa_11;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_occurrence life_oa_110 "OA Create receiver" id "5ceab400-0000-4000-8000-000000000456" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange @life_oa_service;
|
||||||
|
message_kind Create;
|
||||||
|
receiver @life_oa_102;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_oa_101;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_oa_100;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_occurrence life_oa_111 "OA Receiver action" id "5ceab400-0000-4000-8000-000000000457" {
|
||||||
|
body {
|
||||||
|
Action {
|
||||||
|
action @life_oa_11;
|
||||||
|
lifeline @life_oa_102;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_oa_100;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_occurrence life_oa_112 "OA Delete receiver" id "5ceab400-0000-4000-8000-000000000458" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange @life_oa_service;
|
||||||
|
message_kind Delete;
|
||||||
|
receiver @life_oa_102;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_oa_101;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_oa_100;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_scenario life_oa_200 "OA 02 Preexisting empty" id "5ceab400-0000-4000-8000-0000000004b0" {
|
||||||
|
context none;
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
steps [];
|
||||||
|
viewpoint OperationalActivity;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_lifeline life_oa_201 "OA Controller lane" id "5ceab400-0000-4000-8000-0000000004b1" {
|
||||||
|
description "";
|
||||||
|
parent @life_oa_200;
|
||||||
|
represented @life_oa_10;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_lifeline life_oa_202 "OA Receiver lane" id "5ceab400-0000-4000-8000-0000000004b2" {
|
||||||
|
description "";
|
||||||
|
parent @life_oa_200;
|
||||||
|
represented @life_oa_11;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_scenario life_oa_300 "OA 03 Create only" id "5ceab400-0000-4000-8000-000000000514" {
|
||||||
|
context none;
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
steps [@life_oa_310];
|
||||||
|
viewpoint OperationalActivity;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_lifeline life_oa_301 "OA Controller lane" id "5ceab400-0000-4000-8000-000000000515" {
|
||||||
|
description "";
|
||||||
|
parent @life_oa_300;
|
||||||
|
represented @life_oa_10;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_lifeline life_oa_302 "OA Receiver lane" id "5ceab400-0000-4000-8000-000000000516" {
|
||||||
|
description "";
|
||||||
|
parent @life_oa_300;
|
||||||
|
represented @life_oa_11;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_occurrence life_oa_310 "OA Create only receiver" id "5ceab400-0000-4000-8000-00000000051e" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange @life_oa_service;
|
||||||
|
message_kind Create;
|
||||||
|
receiver @life_oa_302;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_oa_301;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_oa_300;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_scenario life_oa_400 "OA 04 Conditional delete" id "5ceab400-0000-4000-8000-000000000578" {
|
||||||
|
context none;
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
steps [@life_oa_410, @life_oa_411];
|
||||||
|
viewpoint OperationalActivity;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_lifeline life_oa_401 "OA Controller lane" id "5ceab400-0000-4000-8000-000000000579" {
|
||||||
|
description "";
|
||||||
|
parent @life_oa_400;
|
||||||
|
represented @life_oa_10;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_lifeline life_oa_402 "OA Receiver lane" id "5ceab400-0000-4000-8000-00000000057a" {
|
||||||
|
description "";
|
||||||
|
parent @life_oa_400;
|
||||||
|
represented @life_oa_11;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_occurrence life_oa_410 "OA Open call" id "5ceab400-0000-4000-8000-000000000582" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange @life_oa_service;
|
||||||
|
message_kind Call;
|
||||||
|
receiver @life_oa_402;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_oa_401;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_oa_400;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_occurrence life_oa_411 "OA ALT delete or keep" id "5ceab400-0000-4000-8000-000000000583" {
|
||||||
|
body {
|
||||||
|
Fragment {
|
||||||
|
branches [@life_oa_412, @life_oa_413];
|
||||||
|
operator Alternative;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_oa_400;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_occurrence life_oa_412 "OA Left delete operand" id "5ceab400-0000-4000-8000-000000000584" {
|
||||||
|
body {
|
||||||
|
Branch {
|
||||||
|
guard "stop_requested";
|
||||||
|
occurrences [@life_oa_414];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_oa_411;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_occurrence life_oa_413 "OA Right empty operand" id "5ceab400-0000-4000-8000-000000000585" {
|
||||||
|
body {
|
||||||
|
Branch {
|
||||||
|
guard "else";
|
||||||
|
occurrences [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_oa_411;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_occurrence life_oa_414 "OA Conditional delete receiver" id "5ceab400-0000-4000-8000-000000000586" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange @life_oa_service;
|
||||||
|
message_kind Delete;
|
||||||
|
receiver @life_oa_402;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_oa_401;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_oa_412;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_scenario life_oa_500 "OA 05 Unassigned receiver" id "5ceab400-0000-4000-8000-0000000005dc" {
|
||||||
|
context none;
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
steps [@life_oa_510, @life_oa_511];
|
||||||
|
viewpoint OperationalActivity;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_lifeline life_oa_501 "OA Controller lane" id "5ceab400-0000-4000-8000-0000000005dd" {
|
||||||
|
description "";
|
||||||
|
parent @life_oa_500;
|
||||||
|
represented @life_oa_10;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_lifeline life_oa_502 "OA Unassigned receiver lane" id "5ceab400-0000-4000-8000-0000000005de" {
|
||||||
|
description "";
|
||||||
|
parent @life_oa_500;
|
||||||
|
represented none;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_occurrence life_oa_510 "OA Create unassigned receiver" id "5ceab400-0000-4000-8000-0000000005e6" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange none;
|
||||||
|
message_kind Create;
|
||||||
|
receiver @life_oa_502;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_oa_501;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_oa_500;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_occurrence life_oa_511 "OA Delete unassigned receiver" id "5ceab400-0000-4000-8000-0000000005e7" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange none;
|
||||||
|
message_kind Delete;
|
||||||
|
receiver @life_oa_502;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_oa_501;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_oa_500;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_scenario life_oa_600 "OA 06 Self delete" id "5ceab400-0000-4000-8000-000000000640" {
|
||||||
|
context none;
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
steps [@life_oa_610];
|
||||||
|
viewpoint OperationalActivity;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_lifeline life_oa_601 "OA Controller lane" id "5ceab400-0000-4000-8000-000000000641" {
|
||||||
|
description "";
|
||||||
|
parent @life_oa_600;
|
||||||
|
represented @life_oa_10;
|
||||||
|
}
|
||||||
|
|
||||||
|
oa_occurrence life_oa_610 "OA Self delete controller" id "5ceab400-0000-4000-8000-00000000064a" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange none;
|
||||||
|
message_kind Delete;
|
||||||
|
receiver @life_oa_601;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_oa_601;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_oa_600;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_function life_sa_10 "SA Controller work" id "5ceab400-0000-4000-8000-0000000007da" {
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_function life_sa_11 "SA Receiver work" id "5ceab400-0000-4000-8000-0000000007db" {
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_scenario life_sa_100 "SA 01 Root create action delete" id "5ceab400-0000-4000-8000-000000000834" {
|
||||||
|
context none;
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
steps [@life_sa_110, @life_sa_111, @life_sa_112];
|
||||||
|
viewpoint Functional;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_lifeline life_sa_101 "SA Controller lane" id "5ceab400-0000-4000-8000-000000000835" {
|
||||||
|
description "";
|
||||||
|
parent @life_sa_100;
|
||||||
|
represented @life_sa_10;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_lifeline life_sa_102 "界界界界界界界界界界界界界界界界界界" id "5ceab400-0000-4000-8000-000000000836" {
|
||||||
|
description "";
|
||||||
|
parent @life_sa_100;
|
||||||
|
represented @life_sa_11;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_occurrence life_sa_110 "SA Create receiver" id "5ceab400-0000-4000-8000-00000000083e" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange @life_sa_service;
|
||||||
|
message_kind Create;
|
||||||
|
receiver @life_sa_102;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_sa_101;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_sa_100;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_occurrence life_sa_111 "SA Receiver action" id "5ceab400-0000-4000-8000-00000000083f" {
|
||||||
|
body {
|
||||||
|
Action {
|
||||||
|
action @life_sa_11;
|
||||||
|
lifeline @life_sa_102;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_sa_100;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_occurrence life_sa_112 "SA Delete receiver" id "5ceab400-0000-4000-8000-000000000840" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange @life_sa_service;
|
||||||
|
message_kind Delete;
|
||||||
|
receiver @life_sa_102;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_sa_101;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_sa_100;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_scenario life_sa_200 "SA 02 Preexisting empty" id "5ceab400-0000-4000-8000-000000000898" {
|
||||||
|
context none;
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
steps [];
|
||||||
|
viewpoint Functional;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_lifeline life_sa_201 "SA Controller lane" id "5ceab400-0000-4000-8000-000000000899" {
|
||||||
|
description "";
|
||||||
|
parent @life_sa_200;
|
||||||
|
represented @life_sa_10;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_lifeline life_sa_202 "SA Receiver lane" id "5ceab400-0000-4000-8000-00000000089a" {
|
||||||
|
description "";
|
||||||
|
parent @life_sa_200;
|
||||||
|
represented @life_sa_11;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_scenario life_sa_300 "SA 03 Create only" id "5ceab400-0000-4000-8000-0000000008fc" {
|
||||||
|
context none;
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
steps [@life_sa_310];
|
||||||
|
viewpoint Functional;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_lifeline life_sa_301 "SA Controller lane" id "5ceab400-0000-4000-8000-0000000008fd" {
|
||||||
|
description "";
|
||||||
|
parent @life_sa_300;
|
||||||
|
represented @life_sa_10;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_lifeline life_sa_302 "SA Receiver lane" id "5ceab400-0000-4000-8000-0000000008fe" {
|
||||||
|
description "";
|
||||||
|
parent @life_sa_300;
|
||||||
|
represented @life_sa_11;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_occurrence life_sa_310 "SA Create only receiver" id "5ceab400-0000-4000-8000-000000000906" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange @life_sa_service;
|
||||||
|
message_kind Create;
|
||||||
|
receiver @life_sa_302;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_sa_301;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_sa_300;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_scenario life_sa_400 "SA 04 Conditional delete" id "5ceab400-0000-4000-8000-000000000960" {
|
||||||
|
context none;
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
steps [@life_sa_410, @life_sa_411];
|
||||||
|
viewpoint Functional;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_lifeline life_sa_401 "SA Controller lane" id "5ceab400-0000-4000-8000-000000000961" {
|
||||||
|
description "";
|
||||||
|
parent @life_sa_400;
|
||||||
|
represented @life_sa_10;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_lifeline life_sa_402 "SA Receiver lane" id "5ceab400-0000-4000-8000-000000000962" {
|
||||||
|
description "";
|
||||||
|
parent @life_sa_400;
|
||||||
|
represented @life_sa_11;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_occurrence life_sa_410 "SA Open call" id "5ceab400-0000-4000-8000-00000000096a" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange @life_sa_service;
|
||||||
|
message_kind Call;
|
||||||
|
receiver @life_sa_402;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_sa_401;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_sa_400;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_occurrence life_sa_411 "SA ALT delete or keep" id "5ceab400-0000-4000-8000-00000000096b" {
|
||||||
|
body {
|
||||||
|
Fragment {
|
||||||
|
branches [@life_sa_412, @life_sa_413];
|
||||||
|
operator Alternative;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_sa_400;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_occurrence life_sa_412 "SA Left delete operand" id "5ceab400-0000-4000-8000-00000000096c" {
|
||||||
|
body {
|
||||||
|
Branch {
|
||||||
|
guard "stop_requested";
|
||||||
|
occurrences [@life_sa_414];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_sa_411;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_occurrence life_sa_413 "SA Right empty operand" id "5ceab400-0000-4000-8000-00000000096d" {
|
||||||
|
body {
|
||||||
|
Branch {
|
||||||
|
guard "else";
|
||||||
|
occurrences [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_sa_411;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_occurrence life_sa_414 "SA Conditional delete receiver" id "5ceab400-0000-4000-8000-00000000096e" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange @life_sa_service;
|
||||||
|
message_kind Delete;
|
||||||
|
receiver @life_sa_402;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_sa_401;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_sa_412;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_scenario life_sa_500 "SA 05 Unassigned receiver" id "5ceab400-0000-4000-8000-0000000009c4" {
|
||||||
|
context none;
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
steps [@life_sa_510, @life_sa_511];
|
||||||
|
viewpoint Functional;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_lifeline life_sa_501 "SA Controller lane" id "5ceab400-0000-4000-8000-0000000009c5" {
|
||||||
|
description "";
|
||||||
|
parent @life_sa_500;
|
||||||
|
represented @life_sa_10;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_lifeline life_sa_502 "SA Unassigned receiver lane" id "5ceab400-0000-4000-8000-0000000009c6" {
|
||||||
|
description "";
|
||||||
|
parent @life_sa_500;
|
||||||
|
represented none;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_occurrence life_sa_510 "SA Create unassigned receiver" id "5ceab400-0000-4000-8000-0000000009ce" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange none;
|
||||||
|
message_kind Create;
|
||||||
|
receiver @life_sa_502;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_sa_501;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_sa_500;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_occurrence life_sa_511 "SA Delete unassigned receiver" id "5ceab400-0000-4000-8000-0000000009cf" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange none;
|
||||||
|
message_kind Delete;
|
||||||
|
receiver @life_sa_502;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_sa_501;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_sa_500;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_scenario life_sa_600 "SA 06 Self delete" id "5ceab400-0000-4000-8000-000000000a28" {
|
||||||
|
context none;
|
||||||
|
description "";
|
||||||
|
parent none;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
steps [@life_sa_610];
|
||||||
|
viewpoint Functional;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_lifeline life_sa_601 "SA Controller lane" id "5ceab400-0000-4000-8000-000000000a29" {
|
||||||
|
description "";
|
||||||
|
parent @life_sa_600;
|
||||||
|
represented @life_sa_10;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_occurrence life_sa_610 "SA Self delete controller" id "5ceab400-0000-4000-8000-000000000a32" {
|
||||||
|
body {
|
||||||
|
Exchange {
|
||||||
|
exchange none;
|
||||||
|
message_kind Delete;
|
||||||
|
receiver @life_sa_601;
|
||||||
|
reply_to none;
|
||||||
|
sender @life_sa_601;
|
||||||
|
values [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
parent @life_sa_600;
|
||||||
|
postcondition "";
|
||||||
|
precondition "";
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_port sa_lifecycle_service_input "SA Lifecycle service input" id "a4a6ecc0-3e12-51a5-b08b-199ad743525c" {
|
||||||
|
contract {
|
||||||
|
FunctionInput {
|
||||||
|
incoming_items [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
legacy none;
|
||||||
|
parent @life_sa_11;
|
||||||
|
}
|
||||||
|
|
||||||
|
sa_port sa_lifecycle_service_output "SA Lifecycle service output" id "b1aa66c4-0e8e-5091-beda-2b8d2005b688" {
|
||||||
|
contract {
|
||||||
|
FunctionOutput {
|
||||||
|
outgoing_items [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description "";
|
||||||
|
legacy none;
|
||||||
|
parent @life_sa_10;
|
||||||
|
}
|
||||||
|
|
||||||
|
interaction life_oa_service "OA Lifecycle service" id "5ceab400-0000-4000-8000-0000000003f4" {
|
||||||
|
description "";
|
||||||
|
items [];
|
||||||
|
source @life_oa_10;
|
||||||
|
target @life_oa_11;
|
||||||
|
}
|
||||||
|
|
||||||
|
functional_exchange life_sa_service "SA Lifecycle service" id "5ceab400-0000-4000-8000-0000000007dc" {
|
||||||
|
description "";
|
||||||
|
items [];
|
||||||
|
source @life_sa_10;
|
||||||
|
source_port @sa_lifecycle_service_output;
|
||||||
|
target @life_sa_11;
|
||||||
|
target_port @sa_lifecycle_service_input;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
// Preserve lifecycle note: 雨 · receiver.
|
||||||
|
// Geometry never changes these bytes.
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
# B4 Create label clipping, 2026-09-11
|
||||||
|
|
||||||
|
Codex-ytr83r /root/lifecycle_clip. Root ratified correction A from
|
||||||
|
`release-lifecycle-typography-review-ytr83r-20260911.md` after reboot; source base
|
||||||
|
reported by root is `fb77b857d26b64b80d99eabb4c65cf6785f3f451` (B4 `52f6e17`
|
||||||
|
plus CLI `023e3a8`). Coordination: issue 1 comments 272 and 276; current issue 2,
|
||||||
|
open PR list (empty), and ScenarioLifetimeRendering Wiki read before editing.
|
||||||
|
Full canvas redesign remains Codex-956atf's work.
|
||||||
|
|
||||||
|
## Implemented, frozen for root's build
|
||||||
|
|
||||||
|
The existing Create name is clipped to the 140 x 28 capsule's interior: 8 units
|
||||||
|
of horizontal and 4 units of vertical padding. It retains `short(name, 18)`, its
|
||||||
|
original world position, size 12, default single-line/unbounded-width text and
|
||||||
|
selection color. The finite clip can cut a glyph or hide the existing ellipsis;
|
||||||
|
measured, grapheme-aware fitting remains separate work. No capsule, endpoint,
|
||||||
|
marker identity, hit selection, lifetime, model or source contract changed.
|
||||||
|
|
||||||
|
Root review refined the first draft's 6-unit vertical clip padding to 4 units:
|
||||||
|
the final 124 x 20 clip gives glyph overhang two extra units above and below
|
||||||
|
while retaining the original text offset (+8, +6). The first draft merely
|
||||||
|
matched the text origin symmetrically; it had no font evidence favoring the
|
||||||
|
tighter bound. Default 12 x 1.2 line height is 14.4, but that does not establish
|
||||||
|
ink bounds for accents or fallback glyphs. Native typography remains necessary.
|
||||||
|
|
||||||
|
`draw_markers` now receives Scene's current uniform scale. The only behavior.rs
|
||||||
|
change is `self.lifecycle.draw_markers(&mut f, self.selected, self.scale);`.
|
||||||
|
`birth_label_clip` scales the padded rectangle into canvas coordinates and
|
||||||
|
intersects it with the origin/frame-size viewport, skipping an empty intersection
|
||||||
|
or invalid scale. The clipped child explicitly reapplies scale to the unchanged
|
||||||
|
world-space text position. It does not translate to the clip's origin.
|
||||||
|
|
||||||
|
## Installed API scrutiny
|
||||||
|
|
||||||
|
Sources read under `.local/toolchain/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/`:
|
||||||
|
|
||||||
|
- `iced_graphics-0.14.0/src/geometry/frame.rs`: `size` is available; `with_clip`
|
||||||
|
drafts a child, invokes the closure, then pastes its geometry.
|
||||||
|
- `iced_wgpu-0.14.0/src/geometry.rs`: `Frame::new` initializes identity transform
|
||||||
|
and uses the supplied clip verbatim; `draft` calls that constructor. It does
|
||||||
|
not inherit transform, add the clip origin, or intersect the parent clip.
|
||||||
|
`paste` appends child text unchanged. Positive uniform scale in `fill_text`
|
||||||
|
transforms the position and font size and stores the child's clip bounds.
|
||||||
|
- `iced_core-0.14.0/src/rectangle.rs`: `intersection` returns only a strictly
|
||||||
|
positive intersection. `Size::ZERO` exists in the installed core API.
|
||||||
|
|
||||||
|
This matches current Scene draw: origin-based full canvas frame followed by
|
||||||
|
`f.scale(self.scale)`, with no pan/rotation transform before markers. Any later
|
||||||
|
camera integration must adapt BOTH clip coordinates and child text transform;
|
||||||
|
this narrow bridge does not claim to support that future camera automatically.
|
||||||
|
|
||||||
|
## Validation scope and handoff
|
||||||
|
|
||||||
|
Two tests are prepared in render_tests.rs: independently specified padded bounds
|
||||||
|
at 0.05, 0.5, 1 and 2 scale, plus partial right/bottom clipping, negative-origin
|
||||||
|
intersection, wholly outside/empty viewport and invalid scale. These exercise
|
||||||
|
geometry only. Existing real-Scene endpoint, identity, hit and source tests remain
|
||||||
|
unchanged. No fake font metrics or assertions of native pixel containment added.
|
||||||
|
|
||||||
|
No Cargo, rustc, rustfmt, native app, Git, dependency or frozen-fixture action was
|
||||||
|
run by this worker. Root owns compilation/tests/format checks and native evidence.
|
||||||
|
Root is preparing separate wide and cluster typography inputs with unchanged
|
||||||
|
original six fixtures/oracle. Ordinary admission must precede native opening.
|
||||||
|
Actual WGPU text appearance, fallback, clipping at normal and minimum Fit, DPI,
|
||||||
|
hit identity and exact passive Project/SourceBundle preservation remain pending.
|
||||||
|
No native, font-width or pixel pass follows from the geometry tests.
|
||||||
|
|
||||||
|
Frozen source SHA256 (before root's build or formatting):
|
||||||
|
|
||||||
|
| File | SHA256 |
|
||||||
|
| --- | --- |
|
||||||
|
| `crates/oa-desktop/src/behavior/scenario_lifecycle/render.rs` | `88594D0758358D776BB5453CCF5D482A5775600D926C53D4FCE71DD7833AC8C7` |
|
||||||
|
| `crates/oa-desktop/src/behavior/scenario_lifecycle/render_tests.rs` | `8C81103BB2B258289E137A45A5DE026A418CE681E3EE182C797ED3D05B53730F` |
|
||||||
|
| `crates/oa-desktop/src/behavior.rs` | `BAE613FD378B39A2E265B354F6D652C549C1F9ECA4A79255EEDF95705FD52FCC` |
|
||||||
|
|
||||||
|
Root received the freeze before this report was completed so cached Windows
|
||||||
|
compilation can proceed. No further source edits by this worker without follow-up.
|
||||||
|
Root should link the resulting verified checkpoint and tests from the shared Wiki
|
||||||
|
once its gate completes; the prior Wiki's pending acceptance remains accurate.
|
||||||
@@ -0,0 +1,135 @@
|
|||||||
|
# Postboot contextual integration delta — 2026-09-11
|
||||||
|
|
||||||
|
Codex-ytr83r /root/integration_resume. Read-only delta review against root
|
||||||
|
`fb77b857d26b64b80d99eabb4c65cf6785f3f451`; read AGENTS, issues 1/2 through
|
||||||
|
276/269, no open PRs, Authoring20260911, BehaviorAuthoring20260911 and Home.
|
||||||
|
Coordination: issue 1 comment 274. This supplements, rather than repeats,
|
||||||
|
`release-staged-source-integration-ytr83r-20260911.md`.
|
||||||
|
|
||||||
|
Root will finish its frozen B4 correction/gates while the source owner resumes
|
||||||
|
validation. Do not import the author's unvalidated reboot WIP as an accepted
|
||||||
|
milestone. The smallest updated contextual source, once those gates mature, is
|
||||||
|
the coherent df6 implementation plus the two-file ca53 correction described
|
||||||
|
below, or its explicitly frozen successor. No chooser/canvas/core WIP is needed.
|
||||||
|
|
||||||
|
## Ordered import recommendation
|
||||||
|
|
||||||
|
1. Preserve root's B4 clip, lifecycle, CLI and current ledgers. Recheck owner
|
||||||
|
heads and comments immediately before integration; the recorded 9e head is
|
||||||
|
`ca53f574e57381a523e946d5277b4081cff74355` on codex/release1-9e8r6t.
|
||||||
|
2. Import contextual implementation `df6f59562643b7771ecf0c972f8655f3e3f1c4da`
|
||||||
|
and its associated oracle/fixtures/review/archive as the earlier preflight
|
||||||
|
specifies. Resolve only the behavior.rs module and guide.rs walkthrough
|
||||||
|
unions, retaining B4. Its scenario workspace overlap remains comment-only
|
||||||
|
on this host. Do not replace those complete files with the peer tree.
|
||||||
|
3. Apply only the ca53-versus-df6 production delta: creation.rs `picker_view`
|
||||||
|
caption (six added/one removed lines), and source_draft.rs essentials-first
|
||||||
|
view plus its three prepared mounted tests. These are the only two production
|
||||||
|
paths changed after df6. ca53's parent c4bad4b and grandparent d95b1ab contain
|
||||||
|
scenario and CLI publication evidence respectively, not source prerequisites.
|
||||||
|
The two-file correction does not touch App, scenario/topology workspace,
|
||||||
|
FormShown, core/server/CLI, schema, Cargo.toml or Cargo.lock.
|
||||||
|
4. Bring the ca53 corrected staged-source fixture README and appended
|
||||||
|
release-staged-source-authoring-oracle report. Save after child Use can adopt
|
||||||
|
a valid parent: inspect before Save or Cancel parent then Save for an
|
||||||
|
unchanged staged-only check. The frozen oracle and base source do not change.
|
||||||
|
Preserve the observed missing-runtime loader failure and scoped DLL remedy.
|
||||||
|
5. Preserve ca53's contextual-source-native-20260911 and
|
||||||
|
contextual-source-layout-reboot-20260911 archives, and reports
|
||||||
|
release-contextual-source-native, release-contextual-source-layout-review,
|
||||||
|
release-contextual-source-layout-independent and release-staged-owner-label
|
||||||
|
(all suffixed -20260911.md). Keep the peer RESTART_HANDOFF as linked,
|
||||||
|
source-specific history; do not overwrite root's RESUME or shared ledgers.
|
||||||
|
Earlier CLI/scenario evidence can be deliberately imported separately;
|
||||||
|
neither intervening complete commit is required for this source correction.
|
||||||
|
6. Union the raw-byte attributes before staging. Verify imported index and later
|
||||||
|
checkout bytes against original inventories, then capture fresh combined
|
||||||
|
source/binary provenance and run root's affected gates/native acceptance.
|
||||||
|
Any later peer correction must be reviewed as a new exact delta.
|
||||||
|
|
||||||
|
## Overlap and still-open acceptance
|
||||||
|
|
||||||
|
The ca53 source_draft delta starts at view line 327; the rest is a new test
|
||||||
|
module after Draft::command. All pre-view state, tokens, serialization, update,
|
||||||
|
combination, final command, existing parent controls and pinned footer remain.
|
||||||
|
Kind choices precede unbounded parent detail; a single-kind button disappears
|
||||||
|
only when the draft already holds that permissible kind. The caption changes
|
||||||
|
only the selected exact staged Owner's presentation. Neither path intersects
|
||||||
|
root's B4 render.rs/render_tests.rs or its draw_markers scale argument.
|
||||||
|
|
||||||
|
The author's independent review at 89B08EF6 closed a long-parent-before-kind
|
||||||
|
finding. ca53 source C8D36BD6 also includes mechanical fixes for two actual test
|
||||||
|
helper compile errors (column macro ambiguity and Id::new(String)). Corrected
|
||||||
|
focused2 was interrupted before tests. Expected contextual26, strict Clippy,
|
||||||
|
formatting and a matching new GUI remain pending. The three tests compose a
|
||||||
|
caption plus child card at 340/500 by 215; they do not mount full scenario or
|
||||||
|
topology workspaces. Real 1100x700 ordinary-panel Name/kind/root-parent and
|
||||||
|
owner-caption acceptance, plus long-parent/recovery/wide controls, is still due.
|
||||||
|
|
||||||
|
Peer 956's published restart main is
|
||||||
|
`8d55d2d2eb05aed826b96a917cf776e1d8c3b690`; isolated core WIP is
|
||||||
|
`b96ff3935ab3f36b7144566e46559a05a29292a5`, incomplete canvas WIP is
|
||||||
|
`e511c4153fb5bb484652434340e0e4c7000c93d0`. Do not import these to obtain
|
||||||
|
the card/caption correction. Issue 1/275 keeps them paused pending that owner's
|
||||||
|
post-reboot return. Its source-derived, unexecuted P2 focus findings remain:
|
||||||
|
normal Scenario child Back/Use/Escape remounts a parent whose initial focus flag
|
||||||
|
was consumed; an already accepted FormShown task later operates using only a
|
||||||
|
global NAME_INPUT and can disturb a replacement session. Their report at exact
|
||||||
|
8d55d2d2 is `harness/release-chooser-contextual-integration-review-20260911.md`.
|
||||||
|
The remedy belongs to that owner's exact current-mount/session focus work;
|
||||||
|
ca53 does not resolve it. Keep delayed-task and ordinary child-return tests,
|
||||||
|
modal ownership, parent scroll retention and live native validation pending.
|
||||||
|
This does not assert the global task reaches Popup's separate search input.
|
||||||
|
|
||||||
|
Historical GUI52 native acceptance is distinct: Lifeline Save-adoption and SA
|
||||||
|
Chain direct Create each passed complete model/source/files and one Undo/Redo
|
||||||
|
with original IDs. SA Machine Create/Save and Undo/Save passed; Machine Redo and
|
||||||
|
reopen did not. The live trial was closed at saved Machine Undo; reboot does not
|
||||||
|
preserve in-memory history. Use its original pinned first-commit carrier for
|
||||||
|
detached-file expectations, and a fresh trial for missing history. Direct
|
||||||
|
Lifeline Apply/Create, cancellation/recovery and corrected-layout native gates
|
||||||
|
remain separate. None of these form/B4 slices closes issue 2.
|
||||||
|
|
||||||
|
## Exact Git-byte audit
|
||||||
|
|
||||||
|
Authorized fetch of exact ca53 used --no-tags --no-write-fetch-head, populated
|
||||||
|
objects only, and completed successfully. No ref/index/source/commit/Cargo or
|
||||||
|
native mutation was performed. Only this report was written by this reviewer.
|
||||||
|
|
||||||
|
All 13 layout manifest payloads match exact Git blobs in size and SHA-256.
|
||||||
|
Manifest SHA-256: 7639dbd81f1a766f656e563013c16910950eec359c92c5765c39c4c0981eef70.
|
||||||
|
All 77 native original records / 51 unique payloads match, and all 51 checksum
|
||||||
|
entries match. Native manifest SHA-256:
|
||||||
|
9a2ad6fb186606ef2a4fd1101d68c8e45bc96953093670fe9451ed9fb90a2ea6;
|
||||||
|
SHA256SUMS.txt: f69019970c42c52e5a0506b5f0369f804c216a3f0280e37d0e9b1eedf4a9523a.
|
||||||
|
The 69 total files in the two archives include README/manifests/preservation
|
||||||
|
method files outside those payload lists. Preserve all, including zero-byte
|
||||||
|
stdout/stderr, initial helper/loader failures and interruption records.
|
||||||
|
|
||||||
|
The unchanged oracle and both base source blobs remain byte-identical to df6:
|
||||||
|
9eb9dd3868b6cb772f907d16ae02995ad10a16f85c087012c24948e6e6fe775d,
|
||||||
|
aa844950ec4fb86f262a257e1fc370a26557ea7978d8a4cab78265037660234c,
|
||||||
|
ad9de02963c20d1f43856455a797deb05ca674659e45f2c4b96b52783024f8bd respectively.
|
||||||
|
|
||||||
|
ca53 source_draft.rs is 38,949 bytes and exactly matches frozen C8D36BD6BCD0818AAD2FBBC404B29085F4ADCAF8191B95A04208A7C2346C36E0.
|
||||||
|
creation.rs is 29,301 LF bytes, SHA-256
|
||||||
|
438a245ead397060767c790c51a8f21cd5021342627999deb4695cf3bd22091a.
|
||||||
|
The author's inputs3 instead records 30,053 bytes / 0FB19BE3A5688C4BD3CA3643C47A97DA7E7F85ADD8A860CD046A0D9CB3CE9DFC.
|
||||||
|
Uniform CRLF conversion gives 30,067 bytes / 5d9d5e72036c54b1446eb207eb20c951e728832307c7090e1b22d289e54c5f79,
|
||||||
|
so uniform normalization alone has not established exact author-source equality.
|
||||||
|
A mixed-newline original is plausible, but is not proven by this review. The
|
||||||
|
published caption diff exactly matches the report; no extra semantic source
|
||||||
|
delta appears. Keep the original manifest unchanged and obtain fresh import
|
||||||
|
build provenance; do not claim creation's committed bytes equal its old freeze.
|
||||||
|
|
||||||
|
Additional raw rules for these two ca53 archives (retain the earlier union):
|
||||||
|
|
||||||
|
```gitattributes
|
||||||
|
harness/experiments/contextual-source-native-20260911/** -text whitespace=cr-at-eol
|
||||||
|
harness/experiments/contextual-source-native-20260911/**/*.arcadia whitespace=-blank-at-eol,-blank-at-eof,cr-at-eol
|
||||||
|
harness/experiments/contextual-source-layout-reboot-20260911/** -text whitespace=cr-at-eol
|
||||||
|
harness/experiments/contextual-source-layout-reboot-20260911/run-gates2.ps1 whitespace=-blank-at-eof,cr-at-eol
|
||||||
|
```
|
||||||
|
|
||||||
|
No additional dependency blocker was found. This is a delta/import handoff,
|
||||||
|
not a performed integration, new test/native pass or release milestone.
|
||||||
Reference in New Issue
Block a user