Validate scenario oracle and record first local behavior test results

This commit is contained in:
Codex
2026-09-10 12:10:59 -07:00
parent 632c8feb36
commit ef1a4478c5
8 changed files with 2068 additions and 18 deletions
+1 -1
View File
@@ -22,4 +22,4 @@ harness/history/2026-09-10-ledgers-before-continuation-refresh/** -text
crates/oa-desktop/src/recovery/fixtures/*.json -text
harness/fixtures/source7-native/** -text
harness/fixtures/basic-editing/** -text
harness/fixtures/scenario-authoring/base/** -text
harness/fixtures/scenario-authoring/base/** -text whitespace=cr-at-eol
+2 -2
View File
@@ -26,7 +26,7 @@ broad downstream changes. Do not silently promote a design proposal to a decisio
| Milestone | Work and acceptance | Dependency/current limit |
| --- | --- | --- |
| 1. Reliable direct authoring | Finish cold compilation and meaningful regressions; integrate compact named architecture/behavior creation and scenario workspace. Exercise actual minimum/wide native creation, allocation, editing, rejection, cancellation and history without implicit draft application or placement drift. | Root owns this host's Cargo/native lease. External host owns scenario layout/B3/local creation/palette; integrate coherent checkpoints first. No current local Rust/native Studio pass. |
| 2. Coherent process/scenario work | Interactive ordered/explicit process editing; clicked root/nested scenario insertion; exact reuse bindings and caller return; measured canvas/zoom/scroll; visible scoped Create/Delete lifetimes. Validate model/source/identity and no unintended edit during navigation, including stale/deleted/retargeted references and recovery. | B1/B2/B3 adapters are source-integrated; B3 has a known externally owned correction. B4 is cfg(test) projection only, awaiting Scene integration. Compile/self-check the independent oracle before using native checkpoints. |
| 2. Coherent process/scenario work | Interactive ordered/explicit process editing; clicked root/nested scenario insertion; exact reuse bindings and caller return; measured canvas/zoom/scroll; visible scoped Create/Delete lifetimes. Validate model/source/identity and no unintended edit during navigation, including stale/deleted/retargeted references and recovery. | B1/B2/B3 adapters are source-integrated; B3 has a known externally owned correction. B4 is cfg(test) projection only, awaiting Scene integration. The independent oracle compiled/self-checked and its generated baseline passed; use it for native checkpoints. |
| 3. Precise engineering analysis | Compare owned properties, analysis contexts and existing-data/external alternatives; settle quantity kind/unit/value, numerical policy, calculation/binding and Boolean/error/unknown semantics through falsifying examples. Implement mixed-unit budgets and reusable calculation/constraint definitions with full UI/source/REST parity and exact history/recovery. | New requirement audit confirms absence. Maximum-reasoning proposal tracks precede root synthesis and independent criticism; no semantic contract is ratified yet. Strings are not evaluation. |
| 4. Maintained reusable libraries | Compare package/definition/instance alternatives. Establish pinned identity/version/dependency closure, local edits, import bindings, detach and explicit three-way updates. Demonstrate two projects, two independent instances, offline reopen, conflicting updates and stable unaffected identities. | Coordinate with milestone 3 definition references and migration. Same-project includes/reuse do not satisfy maintained cross-project libraries. No package contract implemented yet. |
| 5. Understandable complete engineering tasks | Close teaching, OA↔SA transition/reconciliation, typed state/data/interface, artifact, saved-view and hosted workflows. Replace concrete long homogeneous selectors with contextual/searchable bounded choices; verify representative large models, keyboard access, minimum sizes and failure/recovery. Keep offline guide and exact worked examples aligned. | Existing implementations and historical evidence are a coverage starting point. Reassess against current goal instead of reviving stale absence claims or carrying old scope exclusions forward. |
@@ -44,7 +44,7 @@ cross-representation evaluators guide implementation boundaries.
fix causes. Run focused corrected cases, then proportionate full gates and GUI.
2. Exchange exact verified commits with the separate host, preserving its workspace
ownership. Do not merge the bundle-transfer branch or assume remote publication.
3. Compile and self-check [scenario oracle](scenario-authoring-contract.rs), follow
3. Use the self-checked [scenario oracle](scenario-authoring-contract.rs), follow
its [native procedure](fixtures/scenario-authoring/README.md), and compare exact
whole snapshots for Undo/Redo/reopen at minimum/wide sizes.
4. Synthesize the [requirement delta](release-requirements-delta-20260910.md) and
+21 -8
View File
@@ -25,14 +25,14 @@ for capability acceptance. Older goal paths are superseded.
| Scope | Current evidence and limits |
| --- | --- |
| Reproducible local toolchain | Ignored `.local/toolchain/env.ps1` selects Rust/Cargo 1.98.1 GNU/LLVM and verified LLVM-MinGW 20260908 (clang 23.1.1), with one Cargo job. The cold build is still active; this is setup evidence only. |
| Reproducible local toolchain | Ignored `.local/toolchain/env.ps1` selects Rust/Cargo 1.98.1 GNU/LLVM and verified LLVM-MinGW 20260908 (clang 23.1.1), with one Cargo job. First cold desktop test build completed in 58m03s; one unused import warning was corrected separately. |
| B1 process authoring | `01bb52a` includes interactive empty/ordered/explicit topology and presentation-only inferred paths; first conversion preserves ordered adjacency atomically. Source review and added boundary tests exist; current local Rust/native acceptance is pending. |
| B2 scenario authoring | Clicked root/operand/slot and optional lifeline feed Action/State/Reuse/Fragment adapters. Pointer-to-App, cancellation, stale-event, recovery and history tests are written, not yet locally executed. |
| B3 caller navigation | Bounded caller/use frames and scoped viewport restoration are implemented. External tests exposed a real same-selected-ID/visible-owner defect, detailed below; this feature is not accepted. |
| Architecture palette | External palette commit `7d1df4f` was cherry-picked as `aed40d7`, retaining local invariant tests. Captured Escape, stale Submit/raw retention and bounded card fixes are source-integrated. External native results do not transfer to this checkout. |
| Typed stored-history F1 | `b6b76ef` fixes nullable constructor cache discrimination; `4ecad78` fixes NotApplicable seeding by checking actual enum alternatives. Thirteen focused history tests await local execution; core validation remains authoritative. |
| Lifeline lifecycle B4 | `eb5161b` adds pure local/scope-aware lifecycle projection with ten tests, declared under `cfg(test)` only. It is not production Scene wiring or native acceptance. [Design](release-scenario-lifecycle-design-20260910.md). |
| Native scenario oracle | `8547b85` includes [independent checker](scenario-authoring-contract.rs) and [instructions](fixtures/scenario-authoring/README.md). Whole Project/SourceBundle comparison preserves exact identities for Undo/Redo. Compile, self-check, fixture generation and native use are pending. |
| Native scenario oracle | [Independent checker](scenario-authoring-contract.rs) compiled with warnings denied using completed matching core/JSON rlibs; self-check, generation and whole-baseline check passed (exit 0). The checked-in fixture has 62 elements/two sources, eight OA/SA semantic checkpoints and exact identity discrimination for history. [Inputs/hashes/instructions](fixtures/scenario-authoring/README.md). Studio native use remains pending. |
| Normative documentation | Strict Docutils 0.22.2 language HTML regeneration passed. `semantic_schema.py --check --validate` passed 72 source7 fixtures, 204 schemas, 14 families/90 scalar leaves. These are documentation/schema gates, not a Rust build or runtime pass. |
| Comparable-product study | Actual isolated Capella 7.1 scenario/activity/lifeline/LOOP creation was saved and XML inspected, then closed normally. [Report](release-capella-scenario-benchmark-20260910.md). No Studio native workflow has run on this fresh host. |
| New requirement audit | [Independent delta report](release-requirements-delta-20260910.md) establishes that current expressions/unit labels are descriptive and source includes are not maintained cross-project libraries. Separate foundational design proposals remain under investigation, not ratified or implemented. |
@@ -40,11 +40,24 @@ for capability acceptance. Older goal paths are superseded.
## Active work, ownership and unresolved findings
Root Codex-956atf owns this host's integration, serialized Cargo and native UI.
Session `51036` runs `cargo test --locked -p oa-desktop --bin arcadia-studio --no-run`
with log `.local/logs/desktop-test-build.log`; at 11:59 Pacific it has reached
`oa-desktop` but has not completed. No local Rust test/build pass or current Studio
binary acceptance is claimed. Source the local toolchain environment before later
commands; do not start a concurrent Cargo writer. Confirm process state on resume.
Session `51036` completed `cargo test --locked -p oa-desktop --bin arcadia-studio --no-run`
with exit 0 (log `.local/logs/desktop-test-build.log`). The executable is
`target/debug/deps/arcadia_studio-58e30cee1fd51a8b.exe`, SHA256
`95A3B78E5A61AB5E9750C2FC077138247E538D9360720A7A8E0CBB47B882ECC1`,
629-test inventory. Rust implementation inputs match `8547b85`; the unused palette
import correction in `aa40345` is later than compiler consumption and requires a
fresh build for warning-free acceptance. No Studio GUI has launched here.
Direct executable runs with `--test-threads=1` passed history 13/13, pure lifecycle
10/10, topology 45/45, architecture authoring 18/18 and mounted scroll 5/5. Scenario
direct tests passed 13/14 and reproduced the known caller-return assertion failure
at `scenario.rs:2473`; do not count that filter as passing. Logs are
`.local/logs/history-fields-focused.log` and `.local/logs/focused-*.log`. The full
suite has not run. Gitea #97's exact integration bundle was anonymously fetched,
decoded, SHA256-verified and admitted with `git bundle verify`; source integration
and a new build follow. Source the local toolchain before later commands and keep
one Cargo writer. The independent checker used completed rlibs without another
Cargo writer; its evidence is separately scoped above.
Codex-9e8r6t is a separate host/team with a warm cache. It owns scenario workspace
layout/B3 correction, local named behavior creation, palette and platform/packaging.
@@ -82,7 +95,7 @@ and Gitea #65/#76. Latest verified transfer is `harness/transfers/behavior-aa403
2. Integrate the externally verified workspace/B3/local creation/palette/package
checkpoints without overwriting ownership or treating their earlier tests as new
local acceptance. Wire B4 only after coordinating actual Scene geometry.
3. Compile/self-check the independent oracle, then exercise current Studio at
3. Use the self-checked independent oracle to exercise current Studio at
minimum/wide sizes: named creation, direct process/scenario edits, nested reuse,
caller return, lifeline lifecycle, invalid/cancel/recovery, Save/Undo/Redo/reopen.
Compare complete model/source and exact identities, not screenshots alone.
+6
View File
@@ -44,6 +44,12 @@ cannot establish completion.
## Verified facts
- The independent scenario checker compiled with warnings denied and passed its
self-check, deterministic fixture generation and complete baseline check on this
host. Its eight OA/SA checkpoints and exact UUID/source restoration comparisons
are evaluator evidence, not native Studio acceptance. Exact inputs/hashes are in
[the fixture instructions](fixtures/scenario-authoring/README.md).
- Current local source is `aa40345` on `codex/behavior-authoring-20260910`, following
baseline `1797516`. Local commits cover B1/B2/B3 authoring, nullable history cache
(`b6b76ef`), external palette integration (`aed40d7`), cfg(test) lifecycle projection
+23 -7
View File
@@ -1,10 +1,10 @@
# Scenario authoring native contract
Prepared by Codex-956atf /root/release_audit on 2026-09-10. **Source candidate only: compilation, self-check, generation and native execution have not run.** This fixture/oracle is preparation for B2 clicked-slot authoring and B3 caller return, not acceptance evidence.
Prepared by Codex-956atf /root/release_audit on 2026-09-10. Root compiled the checker with warnings denied, passed its self-check, generated the deterministic baseline and verified the complete model/source on Windows. **Native Studio execution remains pending.** This fixture/oracle prepares B2 clicked-slot authoring and B3 caller return; it does not establish GUI acceptance.
`harness/scenario-authoring-contract.rs` generates deterministic OA and SA versions of the same small scenario tree. Each has Activity/Function choices, a Ready state, explicit lifelines, two nested ALT fragments, and fixed root/operand insertion anchors. A caller contains two distinct uses of B verification; B uses C detail. Each use explicitly maps both referenced lifelines to distinct local lifelines representing the same work. No native action/state/reuse/fragment role exists in the baseline.
Only this new Rust source and this README belong to the preparation slice. Generate fixture files after root grants the direct-rustc lease and the checker self-check passes.
The checked-in `base` directory is the verified fixture. Preserve it and copy the whole directory for native work. To reproduce generation, use a fresh output directory after compiling and self-checking the checker.
## Compile and generate
@@ -14,16 +14,16 @@ Use the current matching `oa_core` and `serde_json` rlibs from root's accepted C
. .local/toolchain/env.ps1
$scenarioCore = 'ABSOLUTE_PATH_TO_CURRENT_liboa_core-HASH.rlib'
$scenarioJson = 'ABSOLUTE_PATH_TO_MATCHING_libserde_json-HASH.rlib'
$scenarioDeps = Split-Path -LiteralPath $scenarioCore -Parent
$scenarioDeps = [IO.Path]::GetDirectoryName($scenarioCore)
$scenarioLinker = 'ABSOLUTE_PATH_TO_TOOLCHAIN_clang.exe'
New-Item -ItemType Directory -Force -Path .local/native-qa | Out-Null
rustc --edition 2024 -D warnings harness/scenario-authoring-contract.rs --extern "oa_core=$scenarioCore" --extern "serde_json=$scenarioJson" -L "dependency=$scenarioDeps" -C "linker=$scenarioLinker" -o .local/native-qa/scenario-authoring-contract.exe
.local/native-qa/scenario-authoring-contract.exe self-check
.local/native-qa/scenario-authoring-contract.exe generate harness/fixtures/scenario-authoring/base
.local/native-qa/scenario-authoring-contract.exe check baseline harness/fixtures/scenario-authoring/base/project.arcadia
.local/native-qa/scenario-authoring-contract.exe generate .local/native-qa/scenario-generated
.local/native-qa/scenario-authoring-contract.exe check baseline .local/native-qa/scenario-generated/project.arcadia
```
The compiler target must match those rlibs; include root's explicit `--target` if its toolchain setup requires one. Record the exact command, compiler/rlib identities, checker hash and result. Generation refuses any existing output directory. It writes `project.arcadia`, an included Unicode/CRLF `rationale.arcadia`, and `expected-baseline.json`. The JSON is a reference artifact, not an additional source document.
The compiler target must match those rlibs; include root's explicit `--target` if its toolchain setup requires one. Record the exact command, compiler/rlib identities, checker hash and result. Generation refuses any existing output directory. It writes `project.arcadia`, an included Unicode/CRLF `rationale.arcadia`, and `expected-baseline.json`. The JSON is a reference artifact, not an additional source document. The root validation record below supplies the exact first-run identities.
Copy the **whole** generated base into separate fresh OA and SA native working directories. Preserve the base. Each layer's four checkpoints start from that same baseline; `sa-action` does not include the OA creations. Preserve the whole working directory after each declared Save/Undo/Redo checkpoint. Do not modify fixture sources or adjust expected fields to match observed output.
@@ -93,4 +93,20 @@ The checker uses only unique **Kind::Occurrence + layer + predetermined literal
Expected transactions use core typed commands and source writeback, independently of the desktop planners, then compare the whole Project and the complete reachable two-file SourceBundle. The source oracle deliberately shares the core language engine; this fixture validates native GUI-to-model/source parity rather than supplying an independent language implementation. Semantic checkpoint checks plus required exact saved/restored snapshot comparisons prove state and identity restoration only for the captured Undo/Redo/reopen sequence, not arbitrary history internals.
The self-check covers deterministic seeds, all eight OA/SA checkpoint fixed points, carriers with deliberately false parent/body/alias/description, rejected unrelated edits, wrong insertion order/parent/bindings, and a model-neutral change to the retained note. It also constructs two equivalent valid checkpoints with different fresh action IDs: each passes semantic prediction, while exact `same` snapshot comparison rejects their identity difference. It is not a native UI test. Current compile, self-check, generation, native action/return/scroll/recovery, screenshot and release evidence remain pending until recorded by root.
The self-check covers deterministic seeds, all eight OA/SA checkpoint fixed points, carriers with deliberately false parent/body/alias/description, rejected unrelated edits, wrong insertion order/parent/bindings, and a model-neutral change to the retained note. It also constructs two equivalent valid checkpoints with different fresh action IDs: each passes semantic prediction, while exact `same` snapshot comparison rejects their identity difference. It is not a native UI test. Native action/return/scroll/recovery, screenshot and release evidence remain pending.
## Root validation — 2026-09-10
Source `632c8fe` (checker unchanged from `8547b85`), Rust 1.98.1 target `x86_64-pc-windows-gnullvm`, LLVM-MinGW 20260908 clang 23.1.1. The direct `rustc` command above used the already completed core/JSON rlibs from the active cold desktop build, with no second Cargo writer. Compile with `-D warnings`, `self-check`, `generate`, and `check baseline` all exited 0. Generation reported 62 elements and two reachable sources. The initial PowerShell recipe's incompatible `Split-Path -LiteralPath -Parent` was corrected to `IO.Path.GetDirectoryName` before compilation.
| Artifact | SHA256 |
| --- | --- |
| Checker executable `.local/native-qa/scenario-authoring-contract.exe` | `407318D5C7CAE6B237F261A21B0FDA55F6FEF655CB9DFCFA3153A7E372638498` |
| Checker source working bytes | `3BDA3EBC38E99BB658AD3EB9A5889E9C1CC77E8B1F8609079580AE27A4E8E789` |
| `liboa_core-6c8da57367eec642.rlib` | `D7EFB5F3C423FF8AF13637F53CC481502C7F317BF01E9D072F9EFD64CD954C13` |
| `libserde_json-da2c4f333fc47818.rlib` | `485300D4125A69DE7DA5413F832EB4B9CDE547E60F103F3B284E49AEE4194D05` |
| `base/project.arcadia` | `9B1AFBE96B0BF8FA613451B00929492F05A59B9EB2CA74C2C374A8B7BB7CBA9E` |
| `base/rationale.arcadia` | `82DF210F22F6AA336A3E7E00240977D671C7C3923DB7BC58FB29E6D98B67EF49` |
| `base/expected-baseline.json` | `ABD8246C939EBB8A2162EF82E23D0FB322EE1A8B4D0D7C28A34037E42E86E841` |
Logs are `.local/logs/scenario-oracle-{compile,self-check,generate,baseline}.log`. These results validate the independent evaluator and fixture only; the desktop test build was still running and no Studio native pass is transferred from them.
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,674 @@
arcadia 7;
project scenario_authoring "Scenario authoring contract" id "5ceaa100-0000-4000-8000-000000000001" {
include "rationale.arcadia";
description "Native clicked-slot and caller-return contract.";
oa_activity scenario_oa_10 "OA Inspect ticket" id "5ceaa100-0000-4000-8000-00000000006e" {
description "";
parent none;
}
oa_activity scenario_oa_11 "OA Record result" id "5ceaa100-0000-4000-8000-00000000006f" {
description "";
parent none;
}
oa_state_machine scenario_oa_20 "OA Ticket modes" id "5ceaa100-0000-4000-8000-000000000078" {
description "";
parent none;
}
oa_region scenario_oa_21 "OA Ticket region" id "5ceaa100-0000-4000-8000-000000000079" {
description "";
parent @scenario_oa_20;
}
oa_state scenario_oa_22 "OA Ready" id "5ceaa100-0000-4000-8000-00000000007a" {
description "";
do_activity "";
entry "";
exit "";
kind State;
parent @scenario_oa_21;
}
oa_scenario scenario_oa_30 "OA A caller" id "5ceaa100-0000-4000-8000-000000000082" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@scenario_oa_50, @scenario_oa_51, @scenario_oa_60, @scenario_oa_61, @scenario_oa_62];
viewpoint OperationalActivity;
}
oa_scenario scenario_oa_31 "OA B verification" id "5ceaa100-0000-4000-8000-000000000083" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@scenario_oa_63, @scenario_oa_64, @scenario_oa_65];
viewpoint OperationalActivity;
}
oa_scenario scenario_oa_32 "OA C detail" id "5ceaa100-0000-4000-8000-000000000084" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@scenario_oa_66];
viewpoint OperationalActivity;
}
oa_lifeline scenario_oa_40 "OA A inspector" id "5ceaa100-0000-4000-8000-00000000008c" {
description "";
parent @scenario_oa_30;
represented @scenario_oa_10;
}
oa_lifeline scenario_oa_41 "OA A recorder" id "5ceaa100-0000-4000-8000-00000000008d" {
description "";
parent @scenario_oa_30;
represented @scenario_oa_11;
}
oa_lifeline scenario_oa_42 "OA B inspector" id "5ceaa100-0000-4000-8000-00000000008e" {
description "";
parent @scenario_oa_31;
represented @scenario_oa_10;
}
oa_lifeline scenario_oa_43 "OA B recorder" id "5ceaa100-0000-4000-8000-00000000008f" {
description "";
parent @scenario_oa_31;
represented @scenario_oa_11;
}
oa_lifeline scenario_oa_44 "OA C inspector" id "5ceaa100-0000-4000-8000-000000000090" {
description "";
parent @scenario_oa_32;
represented @scenario_oa_10;
}
oa_lifeline scenario_oa_45 "OA C recorder" id "5ceaa100-0000-4000-8000-000000000091" {
description "";
parent @scenario_oa_32;
represented @scenario_oa_11;
}
oa_occurrence scenario_oa_50 "OA Root entry" id "5ceaa100-0000-4000-8000-000000000096" {
body {
Action {
action @scenario_oa_10;
lifeline @scenario_oa_40;
};
};
description "";
parent @scenario_oa_30;
postcondition "";
precondition "";
}
oa_occurrence scenario_oa_51 "OA Outer ALT" id "5ceaa100-0000-4000-8000-000000000097" {
body {
Fragment {
branches [@scenario_oa_52, @scenario_oa_53];
operator Alternative;
};
};
description "";
parent @scenario_oa_30;
postcondition "";
precondition "";
}
oa_occurrence scenario_oa_52 "OA Outer chosen operand" id "5ceaa100-0000-4000-8000-000000000098" {
body {
Branch {
guard "ticket.present";
occurrences [@scenario_oa_54];
};
};
description "";
parent @scenario_oa_51;
postcondition "";
precondition "";
}
oa_occurrence scenario_oa_53 "OA Outer fallback operand" id "5ceaa100-0000-4000-8000-000000000099" {
body {
Branch {
guard "else";
occurrences [@scenario_oa_59];
};
};
description "";
parent @scenario_oa_51;
postcondition "";
precondition "";
}
oa_occurrence scenario_oa_54 "OA Inner ALT" id "5ceaa100-0000-4000-8000-00000000009a" {
body {
Fragment {
branches [@scenario_oa_55, @scenario_oa_56];
operator Alternative;
};
};
description "";
parent @scenario_oa_52;
postcondition "";
precondition "";
}
oa_occurrence scenario_oa_55 "OA Inner chosen operand" id "5ceaa100-0000-4000-8000-00000000009b" {
body {
Branch {
guard "ticket.ready";
occurrences [@scenario_oa_57];
};
};
description "";
parent @scenario_oa_54;
postcondition "";
precondition "";
}
oa_occurrence scenario_oa_56 "OA Inner other operand" id "5ceaa100-0000-4000-8000-00000000009c" {
body {
Branch {
guard "else";
occurrences [@scenario_oa_58];
};
};
description "";
parent @scenario_oa_54;
postcondition "";
precondition "";
}
oa_occurrence scenario_oa_57 "OA Inner anchor" id "5ceaa100-0000-4000-8000-00000000009d" {
body {
Action {
action @scenario_oa_10;
lifeline @scenario_oa_40;
};
};
description "";
parent @scenario_oa_55;
postcondition "";
precondition "";
}
oa_occurrence scenario_oa_58 "OA Inner other anchor" id "5ceaa100-0000-4000-8000-00000000009e" {
body {
Action {
action @scenario_oa_10;
lifeline @scenario_oa_40;
};
};
description "";
parent @scenario_oa_56;
postcondition "";
precondition "";
}
oa_occurrence scenario_oa_59 "OA Fallback anchor" id "5ceaa100-0000-4000-8000-00000000009f" {
body {
Action {
action @scenario_oa_11;
lifeline @scenario_oa_41;
};
};
description "";
parent @scenario_oa_53;
postcondition "";
precondition "";
}
oa_occurrence scenario_oa_60 "OA First use of B" id "5ceaa100-0000-4000-8000-0000000000a0" {
body {
ScenarioUse {
bindings [{
local @scenario_oa_40;
referenced @scenario_oa_42;
}, {
local @scenario_oa_41;
referenced @scenario_oa_43;
}];
scenario @scenario_oa_31;
};
};
description "";
parent @scenario_oa_30;
postcondition "";
precondition "";
}
oa_occurrence scenario_oa_61 "OA Second use of B" id "5ceaa100-0000-4000-8000-0000000000a1" {
body {
ScenarioUse {
bindings [{
local @scenario_oa_40;
referenced @scenario_oa_42;
}, {
local @scenario_oa_41;
referenced @scenario_oa_43;
}];
scenario @scenario_oa_31;
};
};
description "";
parent @scenario_oa_30;
postcondition "";
precondition "";
}
oa_occurrence scenario_oa_62 "OA Root exit" id "5ceaa100-0000-4000-8000-0000000000a2" {
body {
Action {
action @scenario_oa_11;
lifeline @scenario_oa_41;
};
};
description "";
parent @scenario_oa_30;
postcondition "";
precondition "";
}
oa_occurrence scenario_oa_63 "OA B entry" id "5ceaa100-0000-4000-8000-0000000000a3" {
body {
Action {
action @scenario_oa_10;
lifeline @scenario_oa_42;
};
};
description "";
parent @scenario_oa_31;
postcondition "";
precondition "";
}
oa_occurrence scenario_oa_64 "OA B use of C" id "5ceaa100-0000-4000-8000-0000000000a4" {
body {
ScenarioUse {
bindings [{
local @scenario_oa_42;
referenced @scenario_oa_44;
}, {
local @scenario_oa_43;
referenced @scenario_oa_45;
}];
scenario @scenario_oa_32;
};
};
description "";
parent @scenario_oa_31;
postcondition "";
precondition "";
}
oa_occurrence scenario_oa_65 "OA B exit" id "5ceaa100-0000-4000-8000-0000000000a5" {
body {
Action {
action @scenario_oa_11;
lifeline @scenario_oa_43;
};
};
description "";
parent @scenario_oa_31;
postcondition "";
precondition "";
}
oa_occurrence scenario_oa_66 "OA C entry" id "5ceaa100-0000-4000-8000-0000000000a6" {
body {
Action {
action @scenario_oa_10;
lifeline @scenario_oa_44;
};
};
description "";
parent @scenario_oa_32;
postcondition "";
precondition "";
}
sa_function scenario_sa_10 "SA Inspect ticket" id "5ceaa100-0000-4000-8000-0000000000d2" {
description "";
parent none;
}
sa_function scenario_sa_11 "SA Record result" id "5ceaa100-0000-4000-8000-0000000000d3" {
description "";
parent none;
}
sa_state_machine scenario_sa_20 "SA Ticket modes" id "5ceaa100-0000-4000-8000-0000000000dc" {
description "";
parent none;
}
sa_region scenario_sa_21 "SA Ticket region" id "5ceaa100-0000-4000-8000-0000000000dd" {
description "";
parent @scenario_sa_20;
}
sa_state scenario_sa_22 "SA Ready" id "5ceaa100-0000-4000-8000-0000000000de" {
description "";
do_activity "";
entry "";
exit "";
kind State;
parent @scenario_sa_21;
}
sa_scenario scenario_sa_30 "SA A caller" id "5ceaa100-0000-4000-8000-0000000000e6" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@scenario_sa_50, @scenario_sa_51, @scenario_sa_60, @scenario_sa_61, @scenario_sa_62];
viewpoint Functional;
}
sa_scenario scenario_sa_31 "SA B verification" id "5ceaa100-0000-4000-8000-0000000000e7" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@scenario_sa_63, @scenario_sa_64, @scenario_sa_65];
viewpoint Functional;
}
sa_scenario scenario_sa_32 "SA C detail" id "5ceaa100-0000-4000-8000-0000000000e8" {
context none;
description "";
parent none;
postcondition "";
precondition "";
steps [@scenario_sa_66];
viewpoint Functional;
}
sa_lifeline scenario_sa_40 "SA A inspector" id "5ceaa100-0000-4000-8000-0000000000f0" {
description "";
parent @scenario_sa_30;
represented @scenario_sa_10;
}
sa_lifeline scenario_sa_41 "SA A recorder" id "5ceaa100-0000-4000-8000-0000000000f1" {
description "";
parent @scenario_sa_30;
represented @scenario_sa_11;
}
sa_lifeline scenario_sa_42 "SA B inspector" id "5ceaa100-0000-4000-8000-0000000000f2" {
description "";
parent @scenario_sa_31;
represented @scenario_sa_10;
}
sa_lifeline scenario_sa_43 "SA B recorder" id "5ceaa100-0000-4000-8000-0000000000f3" {
description "";
parent @scenario_sa_31;
represented @scenario_sa_11;
}
sa_lifeline scenario_sa_44 "SA C inspector" id "5ceaa100-0000-4000-8000-0000000000f4" {
description "";
parent @scenario_sa_32;
represented @scenario_sa_10;
}
sa_lifeline scenario_sa_45 "SA C recorder" id "5ceaa100-0000-4000-8000-0000000000f5" {
description "";
parent @scenario_sa_32;
represented @scenario_sa_11;
}
sa_occurrence scenario_sa_50 "SA Root entry" id "5ceaa100-0000-4000-8000-0000000000fa" {
body {
Action {
action @scenario_sa_10;
lifeline @scenario_sa_40;
};
};
description "";
parent @scenario_sa_30;
postcondition "";
precondition "";
}
sa_occurrence scenario_sa_51 "SA Outer ALT" id "5ceaa100-0000-4000-8000-0000000000fb" {
body {
Fragment {
branches [@scenario_sa_52, @scenario_sa_53];
operator Alternative;
};
};
description "";
parent @scenario_sa_30;
postcondition "";
precondition "";
}
sa_occurrence scenario_sa_52 "SA Outer chosen operand" id "5ceaa100-0000-4000-8000-0000000000fc" {
body {
Branch {
guard "ticket.present";
occurrences [@scenario_sa_54];
};
};
description "";
parent @scenario_sa_51;
postcondition "";
precondition "";
}
sa_occurrence scenario_sa_53 "SA Outer fallback operand" id "5ceaa100-0000-4000-8000-0000000000fd" {
body {
Branch {
guard "else";
occurrences [@scenario_sa_59];
};
};
description "";
parent @scenario_sa_51;
postcondition "";
precondition "";
}
sa_occurrence scenario_sa_54 "SA Inner ALT" id "5ceaa100-0000-4000-8000-0000000000fe" {
body {
Fragment {
branches [@scenario_sa_55, @scenario_sa_56];
operator Alternative;
};
};
description "";
parent @scenario_sa_52;
postcondition "";
precondition "";
}
sa_occurrence scenario_sa_55 "SA Inner chosen operand" id "5ceaa100-0000-4000-8000-0000000000ff" {
body {
Branch {
guard "ticket.ready";
occurrences [@scenario_sa_57];
};
};
description "";
parent @scenario_sa_54;
postcondition "";
precondition "";
}
sa_occurrence scenario_sa_56 "SA Inner other operand" id "5ceaa100-0000-4000-8000-000000000100" {
body {
Branch {
guard "else";
occurrences [@scenario_sa_58];
};
};
description "";
parent @scenario_sa_54;
postcondition "";
precondition "";
}
sa_occurrence scenario_sa_57 "SA Inner anchor" id "5ceaa100-0000-4000-8000-000000000101" {
body {
Action {
action @scenario_sa_10;
lifeline @scenario_sa_40;
};
};
description "";
parent @scenario_sa_55;
postcondition "";
precondition "";
}
sa_occurrence scenario_sa_58 "SA Inner other anchor" id "5ceaa100-0000-4000-8000-000000000102" {
body {
Action {
action @scenario_sa_10;
lifeline @scenario_sa_40;
};
};
description "";
parent @scenario_sa_56;
postcondition "";
precondition "";
}
sa_occurrence scenario_sa_59 "SA Fallback anchor" id "5ceaa100-0000-4000-8000-000000000103" {
body {
Action {
action @scenario_sa_11;
lifeline @scenario_sa_41;
};
};
description "";
parent @scenario_sa_53;
postcondition "";
precondition "";
}
sa_occurrence scenario_sa_60 "SA First use of B" id "5ceaa100-0000-4000-8000-000000000104" {
body {
ScenarioUse {
bindings [{
local @scenario_sa_40;
referenced @scenario_sa_42;
}, {
local @scenario_sa_41;
referenced @scenario_sa_43;
}];
scenario @scenario_sa_31;
};
};
description "";
parent @scenario_sa_30;
postcondition "";
precondition "";
}
sa_occurrence scenario_sa_61 "SA Second use of B" id "5ceaa100-0000-4000-8000-000000000105" {
body {
ScenarioUse {
bindings [{
local @scenario_sa_40;
referenced @scenario_sa_42;
}, {
local @scenario_sa_41;
referenced @scenario_sa_43;
}];
scenario @scenario_sa_31;
};
};
description "";
parent @scenario_sa_30;
postcondition "";
precondition "";
}
sa_occurrence scenario_sa_62 "SA Root exit" id "5ceaa100-0000-4000-8000-000000000106" {
body {
Action {
action @scenario_sa_11;
lifeline @scenario_sa_41;
};
};
description "";
parent @scenario_sa_30;
postcondition "";
precondition "";
}
sa_occurrence scenario_sa_63 "SA B entry" id "5ceaa100-0000-4000-8000-000000000107" {
body {
Action {
action @scenario_sa_10;
lifeline @scenario_sa_42;
};
};
description "";
parent @scenario_sa_31;
postcondition "";
precondition "";
}
sa_occurrence scenario_sa_64 "SA B use of C" id "5ceaa100-0000-4000-8000-000000000108" {
body {
ScenarioUse {
bindings [{
local @scenario_sa_42;
referenced @scenario_sa_44;
}, {
local @scenario_sa_43;
referenced @scenario_sa_45;
}];
scenario @scenario_sa_32;
};
};
description "";
parent @scenario_sa_31;
postcondition "";
precondition "";
}
sa_occurrence scenario_sa_65 "SA B exit" id "5ceaa100-0000-4000-8000-000000000109" {
body {
Action {
action @scenario_sa_11;
lifeline @scenario_sa_43;
};
};
description "";
parent @scenario_sa_31;
postcondition "";
precondition "";
}
sa_occurrence scenario_sa_66 "SA C entry" id "5ceaa100-0000-4000-8000-00000000010a" {
body {
Action {
action @scenario_sa_10;
lifeline @scenario_sa_44;
};
};
description "";
parent @scenario_sa_32;
postcondition "";
precondition "";
}
}
@@ -0,0 +1,2 @@
// Retain caller/operand evidence: ticket 雨.
// Navigation never edits this note.