Record native service editing evidence and composition review

This commit is contained in:
2026-09-22 15:23:42 -07:00
parent 65f73025cd
commit 7dbf7ea8ec
340 changed files with 142608 additions and 0 deletions
@@ -0,0 +1 @@
* -text -whitespace
@@ -0,0 +1,51 @@
# Native service Properties, rejection, history and reopen
Windows native observations from closed Runs 7/8 on 2026-09-22 exercise existing-record service editing on source `b10b28cefd1d0794073ba241a0c8de9a83e85f68`. Root operated the frozen GUI; this archive was prepared by read-only verification of closed records. All **20** typed comparisons pass exact complete admitted saved-Project equality to expectations published before these native edits. Native interaction observations and saved-source comparison results are distinct evidence.
## Observed workflow and acceptance
The operator opened `service-details.arcadia`, verified **Valve service Details trial**, navigated Behavior & scenarios and explicitly selected **Saved Service calls - Details trial**. Existing-record Properties was reached through selected-message Details; no creation form or direct source rewrite performed these edits. [Run 7 operator notes](original/run-07/ROOT-OBSERVATION.md) record selections, draft/Apply/Save, model-focus Undo/Redo and exact checkpoint mapping.
| Accepted edit | Independent expected checkpoint | Saved edit / Undo / Redo |
| --- | --- | --- |
| First Call Scope expression: quoted `primary` to quoted `secondary` | `1` | 02 / 03 / 04 |
| First Reply: remove Status/Return annotation | `3a` | 08 / 09 / 10 |
| First Call: choose SetLimit allocation, replace incompatible Scope using Pressure limit/In picker, expression `18.75`; one Apply | `3b` | 11 / 12 / 13 |
| First Reply: add compatible Accepted/Return annotation, expression `true` | `3c` | 14 / 15 / 16 |
| First Call Pressure expression: `18.75` to `19.25` | `3d` | 17 / 18 / 19 |
Comparison 01 establishes the independent baseline. Each accepted edit was saved, followed by one model Undo/Save and one Redo/Save. Exact comparisons cover the whole Project, including control pair, semantic Steps, IDs, names, remaining records and saved layout. They do not merely compare the changed expression. The first Reply inspector derived its operation from `@first_call`; the operator observed no independent Reply operation selector.
Between edits 1 and 3a, the operator deliberately chose SetLimit while retaining incompatible Scope/quoted `secondary` and the existing Reply Status annotation. Apply rejected with `message_value_field: The qualified field must be carried by the exchange, following Value record fields only.` Scrolling back exposed retained raw expression and incompatible address. Explicit Revert then Save produced checkpoint 05 equal to accepted `1`; one model Undo/Save at 06 returned baseline and Redo/Save at 07 returned `1`. Together the native observations and exact saved comparisons support rejection recovery with no intervening accepted model-history step. They do not inspect the internal history stack directly. The invalid draft was not applied by Save.
## Fresh-process durability and preceding context
Run 7 PID 4100 started at 21:44:44 UTC. Root issued Alt+F4 at 22:03:39; the bound observer recorded exit 0 at 22:03:53. Run 8 PID 2016 started at 22:04:47, reopened the exact recent service file and explicitly chose the saved scenario. First Call SetLimit/Pressure `19.25` and first Reply Accepted/Return `true` remained visible; four messages and two lifelines rendered. Save all and the twentieth typed comparison preserve final `3d`. Root issued Alt+F4 at 22:07:33; the observer recorded exit 0 at 22:07:40. [Run 8 notes](original/run-08/ROOT-OBSERVATION.md) and both `normal-close.json` records distinguish action times from observed process-exit times. Both runs have empty native stdout/stderr and unchanged bound immutable inputs.
Run 7 final and Run 8 reopened source are exactly **6,278 bytes**, SHA-256 `92723225deb64884d7cd01e3bf50f24620fbdd583e8bab7bd3f391fb22a46f5d`. The incident working file remains the preceding spacing result, SHA-256 `b746965f034a4befb449d17e568dd5ae0b2ee81b3c34f82883e48e0c54833b25`. No last-view or camera-persistence claim follows: Run 8 opened Automatic before explicit saved-view selection.
All six small Run 6 files are retained as context. Its [failed-opening record](original/run-06/OPEN-DIALOG-ATTEMPT.md) and [resume observation](original/run-06/RESUME-OBSERVATION-20260922.md) establish no successful service edit. The observer closed with exit 0 on September 14, but root did not observe its close cause; `normal-close.json` alone does not prove Alt+F4. Run 7's launch binds that exact prior close. Run 6 has no images and is excluded from service-edit acceptance.
## Integrity and reproducibility
[archive-manifest.json](archive-manifest.json) binds **335 original files, 11,342,114 bytes**, including every raw Run 6/7/8 file, 24 JPEGs and metadata (21 + 3), all comparison logs and artifacts, checkpoint sources, recipe and baseline. All 24 JPEG hashes are distinct and match JPEG signatures/MIME and capture metadata. This archiver did not independently repeat visual inspection; native image descriptions are the operator's observations. Returned window-title metadata can lag the actual image, as the original notes disclose.
Every original was copied as raw bytes and compared by length and SHA-256; JSON containing 64-bit fingerprints was never parsed and rewritten. All 200 receipt-listed output artifacts, before/after bound-input equality, request checkpoint/hash, exact actual/expected canonical bytes and saved-checkpoint bindings were verified. The initial baseline comparison historically bound the mutable working path: its preserved `input-1.arcadia` and immutable baseline establish the original bytes, rather than incorrectly comparing that old binding to today's final working file. Later comparisons use immutable checkpoint files. The manifest also records checked external immutable comparator inputs and prerequisite Git blobs. EXE/DLL payloads, private profile, current mutable working files and duplicated prior build/source archives are excluded. Intentional raw `.log` files need forced Git addition.
Peer machines must retrieve published Git history; original absolute paths are provenance, not shared filesystem locations. Use these pinned prerequisites:
- [Current b10 comparator and GUI build evidence](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/src/commit/04129a75f3c27c9488b86b797525c36887293c93/harness/experiments/scenario-comparators-gui-b10b28c-20260913/README.md): successful builds, source/dependency bindings, comparator self-checks, GUI recipe and transitive gate prerequisites. Its copied preparation README's deferred-build wording is historical; the enclosing archive records the completed builds.
- [Independent core expected checkpoints](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/src/commit/698126e1a0b9ab37cb3cac4339ffcf3a6bf0a340/harness/experiments/scenario-service-details-core-20260913/README.md): six expected Project files, separately byte-checked against the local catalog and every typed comparison. Native actual output never supplied these expectations.
- [Preceding spacing archive](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/src/commit/65f73025cd761b0204a36866229952fc769c34fc/harness/experiments/scenario-native-spacing-b10b28c-20260913/README.md): incident result and prior close chain, with transitive staging/validation links.
The bound service comparator SHA-256 is `996803f938b7503db8508adf9b7fc2dd379852b5b603463edf6987dd1e5270a6`; build receipt is `5c700a6b63ce1060c0091d6370d6e07b824fd871adb6bf89fd8c4a155b1c1c18`. GUI is `7ece85c6012ae0ae75fc56ed3c3aadb8bc116448ad1782be422ef34a629dc3ce`; runtime is `aa282fa47bb2c4e210cea5e470cdbdca58568f0be0bc73e404d86ab9cd95ef6a`.
For read-only audit, hash the files in this manifest, compare each request's expected SHA against the published six-file catalog, and compare its `actual.project.json` and `expected.project.json` bytes. To repeat execution on another Windows machine, check out the exact product and pinned evaluator sources, rebuild following the referenced admitted toolchain/gate recipe with machine-local paths, and record new binary/build hashes. Use `details/check.ps1 -Mode typed -ExpectedProject <published expected JSON> -Checkpoint <catalog key> -Actual <archived immutable checkpoint.arcadia>` with that newly reviewed comparator/build receipt and a fresh output directory. Native repetition additionally requires a newly staged private package/profile and the archived [plan](original/recipe/native-run-plan.md), [stage](original/recipe/stage.ps1), [launch](original/recipe/launch.ps1) and [verification recipe](original/recipe/verify.ps1); do not reuse prior run directories or assume this machine's absolute paths or compiled hashes transfer. No comparator, compiler or GUI was executed during archive preparation.
[Independent review](independent-review.md) found no blocking discrepancy in this bounded result and independently checked all 20 declared comparisons plus selected images. It notes that the rejected draft combines incompatible Call and Reply fields, so it does not isolate Reply-only invalidity. One inspected draft frame retains an `All source files saved` footer while the title/header are dirty; that footer is stale last-action feedback, not proof the new draft was saved.
## Friction and remaining scope
The operator reported substantial inspector scrolling between values and Apply/Revert; wheel input over the multiline Description editor did not scroll the outer inspector, while the margin worked. The incompatible-field error appeared in a small global footer, distant from the offending input, with no observed inline jump. Long operation labels and scenario captions truncated. Recoverable raw drafts and passing data-integrity checks do not remove this interaction friction.
Expression strings were edited; numeric/type/unit evaluation was not established. Arbitrary operation migration, deletion, additional lifecycle cases, definition navigation, remaining incident navigation, large models, Linux, broad accessibility and continuous held-motion remain outside these runs. No full issue, native-plan or release acceptance follows from this archive.
@@ -0,0 +1,55 @@
# Independent review of native service evidence, 2026-09-22
Reviewer: `/root/service_evidence_review`, GPT-6 Astra. Read-only bounded review; this report is the only file written. No compiler, comparator, GUI input, product edit, or Gitea mutation. Product evidence is source `b10b28cefd1d0794073ba241a0c8de9a83e85f68`, not the reviewer's current checkout. Parent remains responsible for integration/publication and wider acceptance.
## Conclusion
No blocking discrepancy found in the claimed five accepted service edits, their saved model Undo/Redo checkpoints, rejection recovery, and fresh-process saved-data reopen. All 20 comparisons independently match their declared catalog checkpoints. The native observations, selective images, and full saved-Project comparisons support this bounded result together. They do not establish the whole native plan or application goal, internal history implementation, or broad GUI usability.
The draft archive README inspected at `harness/experiments/scenario-native-service-b10b28c-20260922/README.md` in `.local/behavior-anchor-plan-ytr83r-20260912` distinguishes native observation from saved-Project evidence, preserves Run 6 context, and does not overstate acceptance. Its archive-copy counts and all 200 artifact checks are the archiver/parent's independently reported checks; I did not repeat that entire archive audit.
## Exact model deltas and evaluator coverage
Read `.local/scenario-details-source-oracle-b10b28c-20260913/main.rs` and independently compared the six catalog files with Python JSON (integer precision retained). Checked every catalog file's length/hash and the six exact Git blobs at published commit `698126e1a0b9ab37cb3cac4339ffcf3a6bf0a340`, under `harness/experiments/scenario-service-details-core-20260913/original/core-run-01/probe-output/`. All match the catalog, including baseline.
Every cumulative transition changes only the following:
| Checkpoint | Exact change |
| --- | --- |
| `1` | First Call `...0060` exchange `values[0].expression`: literal `"primary"` to literal `"secondary"`. |
| `3a` | First Reply `...0061` exchange `values`: remove sole Status field `...0022`, expression `"READY"`, empty path. |
| `3b` | First Call operation allocation `...0041` to `...0042`; sole field `...0021` to `...0031`; expression `"secondary"` to `18.75`. |
| `3c` | First Reply `values`: add Accepted field `...0032`, expression `true`, empty path. |
| `3d` | First Call sole expression `18.75` to `19.25`. |
All IDs above use the unchanged prefix `80300000-0000-4000-8000-00000000`. The untouched second Call/Reply are `...0062`/`...0063`; Steps remain first Call, first Reply, second Call, second Reply. Names, reply-to identities, sender/receiver, message kinds, other records, and layout do not change. Reply operation is derived; the saved Reply contains no independent operation assignment.
The comparator compares canonical serialization of the complete admitted `Project`, without a selected-field projection or ignore list. Only object-key order is normalized; arrays and serialized scalars remain exact. It refuses wrong approved expected bytes, unknown/default-discarded expected JSON, incorrect fixture identity, source migration/identity insertion, multiple reachable source files, and failed core admission. Thus a saved wrong-Call, wrong-field, control-pair, Step, lifecycle/message-kind/reply-to, or layout mutation that changes the represented Project would fail equality (or admission). This is a source-code/evidence conclusion, not a claim to have executed new arbitrary mutation tests. Transient GUI state, internal history, and textual formatting/comments are outside that equality.
## Checkpoint and process bindings independently checked
For Run 7 comparisons 01–19, verified this exact expected sequence:
`baseline, 1, baseline, 1, 1, baseline, 1, 3a, 1, 3a, 3b, 3a, 3b, 3c, 3b, 3c, 3d, 3c, 3d`.
Run 8 comparison 01 matches `3d`. For each comparison I checked request checkpoint/hash against catalog; immutable expected input bytes; independently parsed complete actual/expected Projects; `full_project_exact`; exit 0, no failure, `semantic_pass`, `inputs_unchanged`; and oracle/build receipt hashes against current bound artifacts. Actual source copies match their named immutable checkpoint sources, except Run 7 comparison 01 correctly matches immutable original baseline. No current-final mutable path was substituted for the historical baseline.
For Runs 7 and 8, independently checked normal-close-to-launch SHA, PID and start-time agreement; previous-close SHA chain; GUI binary SHA; all baseline/final working file lengths and hashes; empty actual `logs/studio.stdout.log` and `logs/studio.stderr.log` against their recorded hashes. Both closes report exit 0 and unchanged immutable inputs. Run 7 final and Run 8 final service bytes match SHA `92723225deb64884d7cd01e3bf50f24620fbdd583e8bab7bd3f391fb22a46f5d`, length 6278. The incident file remains `b746965f034a4befb449d17e568dd5ae0b2ee81b3c34f82883e48e0c54833b25`.
All 24 JPEG hashes match their capture metadata. I visually inspected ten current JPEGs using `view_image`, not metadata alone: Run 7 `04-scope-draft`, `09-incompatible-apply-rejected`, `10-rejected-raw-draft-preserved`, `13-reply-removal-saved`, `14-valid-setlimit-draft`, `16-reply-derived-setlimit`, `17-reply-accepted-draft`, `21-final-redo-saved`; Run 8 `02-call-pressure-reopened`, `03-reply-accepted-reopened`.
## GUI evidence and limits
The inspected frames show the quoted secondary draft, dirty title/disabled canvas tools, selected first Call, actual field error in the footer, retained incompatible Scope address and quoted secondary raw text after rejection, compatible SetLimit/Pressure draft `18.75`, empty Reply values with operation derived from `@first_call`, Accepted/Return draft `true`, clean final save, and reopened `19.25` / `true` on the intended Call/Reply. The reopened Reply explicitly refers to `Read primary status · @first_call`; unchanged human names do not imply the operation failed to change.
The rejection frame's diagnostic is the incompatible carried-field error. This trial does not isolate whether a retained Reply Status annotation *alone* would reject an otherwise repaired Call. Likewise, a saved checkpoint after Revert alone could not establish failed-Apply atomicity; the operator's failed-Apply observation, retained draft, and subsequent one-step Undo/Redo sequence supply the additional evidence. The archive correctly avoids claiming direct history-stack inspection.
Substantial inspector scrolling, distant small footer feedback, and truncated captions are visible. On Run 7 frame 14, the footer still says `All source files saved` while the title/header report a dirty draft; this is stale last-action feedback, not proof that the new draft was saved. Keep the already recorded feedback/cognitive-load concern. The frames do not independently prove wheel routing, keyboard focus at every history operation, continuous interaction responsiveness, or accessibility; those require operator observation or separate trials. No new severity claim is made from screenshots alone.
Normal-close files bind process exits, not the cause of exit. Alt+F4 is supported by the root's contemporaneous observation notes; I did not operate or observe the live process. Read Run 6 `OPEN-DIALOG-ATTEMPT.md` and `RESUME-OBSERVATION-20260922.md`: failed dialog/path attempts and the unobserved September 14 close remain correctly excluded from native service acceptance. Run 8 explicitly reselects the saved view, so no automatic last-view/camera persistence claim is supported.
Remaining exclusions: expression evaluation/type/unit semantics, isolated Reply-invalid migration, arbitrary operation migrations, other lifecycle/deletion cases, remaining incident navigation, large-model work, broad accessibility, Linux, and full native-plan/release acceptance.
## Review environment note
Read root `AGENTS.md`; review checkout was `codex/release1-ytr83r` with pre-existing untracked `%SystemDrive%/`. Local `origin/HEAD` points to `origin/codex/behavior-draft-lifecycle`, which contains no `AGENTS.md`. I did not change checkout, fetch shared branches, claim ownership independently, or modify authoritative records during this delegated read-only review; shared-state coordination remains with the parent.
@@ -0,0 +1,113 @@
arcadia 7;
project service_details "Valve service Details trial" id "80300000-0000-4000-8000-000000000000" {
sa_actor console "Operator console" id "80300000-0000-4000-8000-000000000001" {}
sa_system valve "Valve service" id "80300000-0000-4000-8000-000000000002" {}
sa_port caller_port "Console service client" id "80300000-0000-4000-8000-000000000003" {
parent @console; contract { Component { kind Standard; orientation Unset; }; };
}
sa_port provider_port "Valve service endpoint" id "80300000-0000-4000-8000-000000000004" {
parent @valve; contract { Component { kind Standard; orientation Unset; }; };
}
sa_data_type text_value "Service text" id "80300000-0000-4000-8000-000000000010" {
definition { String { minimum_length 0; maximum_length 128; }; };
}
sa_data_type pressure_value "Pressure in bar" id "80300000-0000-4000-8000-000000000011" {
definition { Real { minimum 0; maximum 100; }; }; unit "bar";
}
sa_data_type accepted_value "Acceptance flag" id "80300000-0000-4000-8000-000000000012" { definition Boolean; }
sa_exchange_item read_status "ReadStatus" id "80300000-0000-4000-8000-000000000020" {
kind Information; mechanism Operation;
}
sa_data_field read_scope "Scope" id "80300000-0000-4000-8000-000000000021" {
parent @read_status; type_ref { Named @text_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field read_result "Status" id "80300000-0000-4000-8000-000000000022" {
parent @read_status; type_ref { Named @text_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_exchange_item set_limit "SetLimit" id "80300000-0000-4000-8000-000000000030" {
kind Information; mechanism Operation;
}
sa_data_field limit_value "Pressure limit" id "80300000-0000-4000-8000-000000000031" {
parent @set_limit; type_ref { Named @pressure_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field limit_accepted "Accepted" id "80300000-0000-4000-8000-000000000032" {
parent @set_limit; type_ref { Named @accepted_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_interface valve_api "Valve commands" id "80300000-0000-4000-8000-000000000040" {}
interface_item_allocation read_allocation "ReadStatus allocation" id "80300000-0000-4000-8000-000000000041" {
source @valve_api; target @read_status; order 0;
transmission Synchronous; acquisition Accept;
}
interface_item_allocation limit_allocation "SetLimit allocation" id "80300000-0000-4000-8000-000000000042" {
source @valve_api; target @set_limit; order 1;
transmission Synchronous; acquisition Accept;
}
interface_requirement requires_api "Console requires Valve commands" id "80300000-0000-4000-8000-000000000043" {
source @caller_port; target @valve_api;
}
interface_provision provides_api "Valve provides Valve commands" id "80300000-0000-4000-8000-000000000044" {
source @provider_port; target @valve_api;
}
boundary_exchange service_channel "Valve service channel" id "80300000-0000-4000-8000-000000000045" {
source @caller_port; target @provider_port; oriented false;
items [@read_status, @set_limit];
}
sa_scenario service_review "Review service calls" id "80300000-0000-4000-8000-000000000050" {
viewpoint BoundaryInterface;
steps [@first_call, @first_reply, @control_call, @control_reply];
}
sa_lifeline caller "Console caller" id "80300000-0000-4000-8000-000000000051" {
parent @service_review; represented @console;
}
sa_lifeline provider "Valve provider" id "80300000-0000-4000-8000-000000000052" {
parent @service_review; represented @valve;
}
sa_occurrence first_call "Read primary status" id "80300000-0000-4000-8000-000000000060" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @read_allocation; };
values [{ path []; field @read_scope; expression "\"primary\""; }];
}; };
}
sa_occurrence first_reply "Primary status response" id "80300000-0000-4000-8000-000000000061" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @first_call;
values [{ path []; field @read_result; expression "\"READY\""; }];
}; };
}
sa_occurrence control_call "Set reserve limit" id "80300000-0000-4000-8000-000000000062" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @limit_allocation; };
values [{ path []; field @limit_value; expression "12.5"; }];
}; };
}
sa_occurrence control_reply "Reserve limit accepted" id "80300000-0000-4000-8000-000000000063" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @control_call;
values [{ path []; field @limit_accepted; expression "true"; }];
}; };
}
diagram service_details_view "Service calls - Details trial" id "80300000-0000-4000-8000-000000000070" {
layer Sa; projection { Scenario { scenario @service_review; }; };
layout { Scenario {
lanes [{ lifeline @caller; x 160; }, { lifeline @provider; x 650; }];
messages [
{ address { references []; occurrence @first_call; }; send_y 160; },
{ address { references []; occurrence @first_reply; }; send_y 270; },
{ address { references []; occurrence @control_call; }; send_y 390; },
{ address { references []; occurrence @control_reply; }; send_y 500; }
];
}; };
}
}
@@ -0,0 +1,43 @@
{
"status": "Exact independently expected core-run01 checkpoints, published and byte-verified by parent; native output not used",
"core_source": "0409a481c7571e887f8912f0a8cdb93cfdcc01a7",
"receipt_sha256": "9bceeddc309095d29ec8bb2942bc3e8a85d008917199a2502e4b64e22b830571",
"project": "80300000-0000-4000-8000-000000000000",
"scenario": "80300000-0000-4000-8000-000000000050",
"diagram": "80300000-0000-4000-8000-000000000070",
"checkpoints": {
"baseline": {
"path": "expected/baseline.project.json",
"bytes": 10576,
"sha256": "e59d4f08fda2bae23ca2b84bda0c8679703b1b75a0b7c1916b2f49d2762a90c6"
},
"1": {
"path": "expected/after-1.expected.project.json",
"bytes": 10578,
"sha256": "c03cf59f83bc1ae4db64584abf1257efc775cc47b49f2b2db4ac47159dfb90a0"
},
"3a": {
"path": "expected/after-3a.expected.project.json",
"bytes": 10495,
"sha256": "ce3d58385815d0a1d01320bdd711d707cb4c530f0614545eca2b83533077b6f0"
},
"3b": {
"path": "expected/after-3b.expected.project.json",
"bytes": 10487,
"sha256": "81f16c54db0e7be1960be5de6a89a6e16a56d6c62d45e15aa7f59bc9d85c8925"
},
"3c": {
"path": "expected/after-3c.expected.project.json",
"bytes": 10565,
"sha256": "3c4521eef6cf2a6024275f8c6bf5e9a55d7f6e10cb58c9cc846be56cfa121aca"
},
"3d": {
"path": "expected/after-3d.expected.project.json",
"bytes": 10565,
"sha256": "36dfe596c1e2f39a82795237f545787996e9138d9c160217611b201da14ce66a"
}
},
"published_commit": "698126e1a0b9ab37cb3cac4339ffcf3a6bf0a340",
"published_path": "harness/experiments/scenario-service-details-core-20260913/original/core-run-01/probe-output/",
"published_url": "http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/src/commit/698126e1a0b9ab37cb3cac4339ffcf3a6bf0a340/harness/experiments/scenario-service-details-core-20260913/README.md"
}
@@ -0,0 +1,44 @@
# Native staging attempt 2: exact timestamp comparison
See [RECOVERY.md](RECOVERY.md) for the closed original failure and the four passing exact-tick checks. This fresh recipe changes only the stage timestamp comparison among stage/launch/verifier code. The previous preparation results below remain historical; current closed GUI build evidence is recorded in timestamp-verification.json, but staging and native execution have not occurred here.
# Scenario validation native preparation at b10b28c
Prepared for exact source `b10b28cefd1d0794073ba241a0c8de9a83e85f68`. This is a new recipe directory; old8bf native preparations and verifier `91b29e336b861d0c59c1c310556d737330871bc54aaed6d5e509bd33dce07945` remain unchanged. No package, working copy, profile, process or native output has been staged here.
The new verifier is SHA256 `8306f4d4a1dde1c075a47994cd9d92738803c8b3b255b3e9907f0cb24749d91d`. New comparator builds must bind this helper explicitly; an old comparator binding is not relabeled. Its simple read/hash/source-pair helpers remain usable independently of full native admission.
## Admission and commands
The [b10 gate recipe](../scenario-validation-gates-b10b28c-20260913/README.md) requires612 unchanged inputs, strict preflight, then the five regular stages. Strict preflight closed successfully with receipt SHA256 `90597fab687350816777480daa4bd9649b6b4e550cfe381b2af0eede0f1cadde`; this preparation read and verified that record. Regular LIST was still in progress when this recipe was prepared. **No new LIST, focused, full, strict, GUI or native pass is claimed here.**
Future native admission requires all of the following at the same b10 source:
- Fresh LIST:1095 exact unique names and its actual test executable.
- Focused:301 unique passes in reviewed batches107/101/93; actual per-process filtered988/994/1002. Exact batch receipts, raw byte concatenation, before/after captures and executable continuity are retained. No synthetic794-filtered aggregate process is invented.
- Full:1091 passes, four exact ignored names, no failures and zero filtered, matching the complete fresh1095-name inventory.
- Combined desktop/server all-targets Clippy with -D warnings, after full execution.
- GUI build with exact executable path, size, modification time and SHA256.
The verifier binds the reviewed regular run.ps1 (SHA9f3540a6984858448ad1f9bcf6e3326b6ec2b4b3ee897189876c56ebeaaea6cc), reviewed strict-preflight.ps1 (SHA152621fa4efe0a96adbeea43c4a08be21a63f5d4982846a9ad46de52ddbc725f), strict-preflight predecessor and complete regular receipt/raw-log/source-capture/toolchain/transitive-input chain. Stage copies .json/.ps1/.log/**.md** gate files, then revalidates the copied evidence. It rehashes current source/config before and after staging.
Only after parent confirms all required gates:
```powershell
pwsh -NoProfile -File C:/Users/User/Documents/Git/ARCADIA-Studio/.local/scenario-validation-native-b10b28c-attempt2-20260913/stage.ps1 -SourcePin b10b28cefd1d0794073ba241a0c8de9a83e85f68
pwsh -NoProfile -File C:/Users/User/Documents/Git/ARCADIA-Studio/.local/scenario-validation-native-b10b28c-attempt2-20260913/launch.ps1 -Run 1
```
Stage defaults to the b10 gate and explicit verified toolchain libunwind.dll (SHAaa282fa47bb2c4e210cea5e470cdbdca58568f0be0bc73e404d86ab9cd95ef6a). Stage does not launch. Launch waits for normal close in a persistent shell, redirects logs and changes LOCALAPPDATA/PATH only on child ProcessStartInfo. It uses a private profile and unrelated working directory; Run2 requires the exact successful bound Run1 close and saved working files. No global environment or user profile is edited.
## Fixtures and native review
[Native run plan](native-run-plan.md) is parent-reviewed. Its sole copy correction trims the accidental trailing space in alias reporting_review. [Comparator retargeting](comparator-retarget.md) is copied unchanged from the same reviewed preparation. Stage puts both notes together in baseline and includes both original/copy hashes in the immutable input manifest, keeping their relative link valid. copy-provenance.json records original and copied hashes precisely.
The immutable6206-byte incident fixture and6132-byte typed service fixture are copied separately to baseline/working. Original preparation files are never opened or saved by this recipe. The existing core admission reference is copied unchanged; [published service-core evidence](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/src/commit/698126e1a0b9ab37cb3cac4339ffcf3a6bf0a340/harness/experiments/scenario-service-details-core-20260913/README.md) supplies independent typed expected Projects. Core and dependency manifests are unchanged; current comparator dependency/runtime/source bindings still need independent preparation and execution, as explained in the linked note. Native form/draft/history observations are separate from core or comparator acceptance.
## Preparation checks and changes
validate-scripts.ps1 parsed the four native scripts and passed21 targeted checks: pure source/name/binary guards; actual closed preflight binding; eight mutated preflight refusal controls; current gate copy-extension coverage; exact301-name107/101/93 partition; and frozen verifier hash. preparation-verification.json records these checks, with stage/launch/compiler flags false. These checks do not invoke complete five-stage admission or claim future stages passed.
recipe-changes.patch shows the actual three-script diff from the old8bf attempt2 recipe. Changes are exact source/counts, current static-input contract instead of obsolete finalization fields, fresh-list linkage instead of old recovery-list plan fields, strict predecessor and reviewed recipe binding, and copied/bound comparator note. Child launch mechanics, runtime protection, source rehashing, immutable baseline/working isolation and close/reopen rules remain intact.
@@ -0,0 +1,23 @@
# Exact timestamp recovery for native staging
The original b10 staging attempt80807 closed unsuccessfully before creating staging directories or outputs. It compared FileInfo.LastWriteTimeUtc.ToString('o') with receipt mtimeUtc parsed by PowerShell as System.DateTime. The GUI file path,116721152-byte size and SHA2567ece85c6012ae0ae75fc56ed3c3aadb8bc116448ad1782be422ef34a629dc3ce matched; its timestamp was2026-09-13T14:19:13.0833854Z.
This fresh attempt copies the11 preparation files and changes only stage.ps1's timestamp predicate among executable stage/launch/verifier logic:
```powershell
$binary.LastWriteTimeUtc.Ticks -ne ([DateTimeOffset]$build.binary.mtimeUtc).UtcDateTime.Ticks
```
The comparison is exact at639249059530833854 UTC ticks. There is no tolerance, rounding, or weakened path/size/hash check. verify.ps1 remains byte-identical at8306f4d4a1dde1c075a47994cd9d92738803c8b3b255b3e9907f0cb24749d91d; the original helper and all11 original files remain unchanged. launch.ps1, validate-scripts.ps1, the reviewed native plan, comparator note, core reference and historical preparation check are copied byte-exact. The copied preparation-verification.json describes the earlier recipe; timestamp-verification.json is the new focused evidence.
validate-timestamp.ps1 parsed the candidate and evaluated its actual timestamp predicate using the closed current build receipt and actual GUI FileInfo. Both parsed System.DateTime and the exact raw ISO string were accepted. A one-tick mismatch was rejected in both forms. The expected tick value is stored as a decimal string in the JSON receipt to avoid JavaScript numeric precision loss. No stage, launch, compiler or executable was invoked.
[recipe-changes.patch](recipe-changes.patch) is the exact one-line stage diff from the original b10 recipe. [copy-provenance.json](copy-provenance.json) records all original and current hashes. Stage and launch use PSScriptRoot, so the new root provides fresh baseline/working/package/profile/run locations.
Parent can review and then invoke:
```powershell
pwsh -NoProfile -File C:/Users/User/Documents/Git/ARCADIA-Studio/.local/scenario-validation-native-b10b28c-attempt2-20260913/stage.ps1 -SourcePin b10b28cefd1d0794073ba241a0c8de9a83e85f68
```
This is preparation, not successful staging or native acceptance. All existing exact gate/source/binary/runtime, immutable-fixture and normal-close/reopen checks remain required.
@@ -0,0 +1,132 @@
{
"source_commit": "b10b28cefd1d0794073ba241a0c8de9a83e85f68",
"status": "Prepared only; original stage80807 failed before staging writes. No stage/launch/compiler invocation in this attempt.",
"original_directory": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/scenario-validation-native-b10b28c-20260913",
"original_files": [
{
"path": "README.md",
"bytes": 5457,
"sha256": "6b79c25516d731f2ec02c439ae96097e5fe0d2b5436a2269bfd4c40f0ea8f035"
},
{
"path": "comparator-retarget.md",
"bytes": 6239,
"sha256": "dc387248d821de0001e055d4b09670e1848e55829f9bea7c743c9a13fddcc2a7"
},
{
"path": "copy-provenance.json",
"bytes": 3009,
"sha256": "86a4b6683301f8f6bee397d47caea79c4efc7256621cfd403a6cb9cb2d318aad"
},
{
"path": "core-admission-reference.json",
"bytes": 6742,
"sha256": "7eb3f378557e8f5b9bd06d86b15cc7d5d8756487fa133a99536790498a75a332"
},
{
"path": "launch.ps1",
"bytes": 8911,
"sha256": "e49dd381ee7746ac401abecc7d1ee708924fa6c63ddd3d06c8d34b91e059606e"
},
{
"path": "native-run-plan.md",
"bytes": 17535,
"sha256": "41f826cd6dd159526d23cfd432ec877ba99e3f29b4e32f9283af3095b07b1630"
},
{
"path": "preparation-verification.json",
"bytes": 1817,
"sha256": "66a99b83d90e868b46c7faf8461a4b988f8caa3bcd9478c3645413bc6757c034"
},
{
"path": "recipe-changes.patch",
"bytes": 22960,
"sha256": "efd4781a4fc7854c267d3a6760f9a3bb265e2ff24a6512578c15e42335f8c68c"
},
{
"path": "stage.ps1",
"bytes": 8134,
"sha256": "146a8eed60905be98df96484a1a8aa749a9d48a61c889276233886df4ed78d1a"
},
{
"path": "validate-scripts.ps1",
"bytes": 5463,
"sha256": "2d1ed309417815ab5d7bf5f19ba87b0ed332fd02582ef4507fda0baaa2f709e7"
},
{
"path": "verify.ps1",
"bytes": 17002,
"sha256": "8306f4d4a1dde1c075a47994cd9d92738803c8b3b255b3e9907f0cb24749d91d"
}
],
"original_files_preserved_byte_exact": true,
"changed_stage_predicate_only": true,
"verifier_preserved_sha256": "8306f4d4a1dde1c075a47994cd9d92738803c8b3b255b3e9907f0cb24749d91d",
"files": [
{
"path": "README.md",
"bytes": 5924,
"sha256": "a7e9b295726504035edc20ac60a3080a23191fb6b3fddaabe7cb67fe3b2f850b"
},
{
"path": "RECOVERY.md",
"bytes": 2440,
"sha256": "5eb933622fe4e9366947be1d616b7862e41cc52f8328299bb06531beaa7575d7"
},
{
"path": "comparator-retarget.md",
"bytes": 6239,
"sha256": "dc387248d821de0001e055d4b09670e1848e55829f9bea7c743c9a13fddcc2a7"
},
{
"path": "core-admission-reference.json",
"bytes": 6742,
"sha256": "7eb3f378557e8f5b9bd06d86b15cc7d5d8756487fa133a99536790498a75a332"
},
{
"path": "launch.ps1",
"bytes": 8911,
"sha256": "e49dd381ee7746ac401abecc7d1ee708924fa6c63ddd3d06c8d34b91e059606e"
},
{
"path": "native-run-plan.md",
"bytes": 17535,
"sha256": "41f826cd6dd159526d23cfd432ec877ba99e3f29b4e32f9283af3095b07b1630"
},
{
"path": "preparation-verification.json",
"bytes": 1817,
"sha256": "66a99b83d90e868b46c7faf8461a4b988f8caa3bcd9478c3645413bc6757c034"
},
{
"path": "recipe-changes.patch",
"bytes": 1529,
"sha256": "b96ff9f1ae8aea958238e6a8e629302c40623343edb64f89c9391ce55446f82c"
},
{
"path": "stage.ps1",
"bytes": 8161,
"sha256": "e537a9bd59cf5c3c7d908840a26af4d709fe867bea326fe0c12269b119e0bb06"
},
{
"path": "timestamp-verification.json",
"bytes": 970,
"sha256": "e0a8bdbe6797ccb0fdbc02d766a1b54f481692c94d7f9bd586d803d6ba872da4"
},
{
"path": "validate-scripts.ps1",
"bytes": 5463,
"sha256": "2d1ed309417815ab5d7bf5f19ba87b0ed332fd02582ef4507fda0baaa2f709e7"
},
{
"path": "validate-timestamp.ps1",
"bytes": 2929,
"sha256": "92c6084078fdd0d4f86dd9c9fb1932263f77636312c4b10daaf36debae69e2f3"
},
{
"path": "verify.ps1",
"bytes": 17002,
"sha256": "8306f4d4a1dde1c075a47994cd9d92738803c8b3b255b3e9907f0cb24749d91d"
}
]
}
@@ -0,0 +1,377 @@
{
"source_commit": "b10b28cefd1d0794073ba241a0c8de9a83e85f68",
"verified_input_count": 612,
"before_after_input_files_unchanged": true,
"build_receipt_sha256": "07697f61039e4b28d3759d79f6143ca7735f04f8735b2a95a4bf8ae41b0fea41",
"binary": {
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\target\\debug\\arcadia-studio.exe",
"bytes": 116721152,
"sha256": "7ece85c6012ae0ae75fc56ed3c3aadb8bc116448ad1782be422ef34a629dc3ce",
"mtimeUtc": "2026-09-13T14:19:13.0833854Z"
},
"immutable_files": [
{
"path": "stage.ps1",
"bytes": 8161,
"sha256": "e537a9bd59cf5c3c7d908840a26af4d709fe867bea326fe0c12269b119e0bb06"
},
{
"path": "launch.ps1",
"bytes": 8911,
"sha256": "e49dd381ee7746ac401abecc7d1ee708924fa6c63ddd3d06c8d34b91e059606e"
},
{
"path": "verify.ps1",
"bytes": 17002,
"sha256": "8306f4d4a1dde1c075a47994cd9d92738803c8b3b255b3e9907f0cb24749d91d"
},
{
"path": "validate-scripts.ps1",
"bytes": 5463,
"sha256": "2d1ed309417815ab5d7bf5f19ba87b0ed332fd02582ef4507fda0baaa2f709e7"
},
{
"path": "README.md",
"bytes": 5924,
"sha256": "a7e9b295726504035edc20ac60a3080a23191fb6b3fddaabe7cb67fe3b2f850b"
},
{
"path": "native-run-plan.md",
"bytes": 17535,
"sha256": "41f826cd6dd159526d23cfd432ec877ba99e3f29b4e32f9283af3095b07b1630"
},
{
"path": "comparator-retarget.md",
"bytes": 6239,
"sha256": "dc387248d821de0001e055d4b09670e1848e55829f9bea7c743c9a13fddcc2a7"
},
{
"path": "core-admission-reference.json",
"bytes": 6742,
"sha256": "7eb3f378557e8f5b9bd06d86b15cc7d5d8756487fa133a99536790498a75a332"
},
{
"path": "baseline/service-details.arcadia",
"bytes": 6132,
"sha256": "0e4325222a451b9d4e503974ce86bb95a9931edd0d2d65b8cd9db8d0f99d69e5"
},
{
"path": "baseline/service-baseline-and-edits.json",
"bytes": 4666,
"sha256": "6670cd0a07c109dde46128bd094a12d00ea008fc65efd73ad9477efcff976063"
},
{
"path": "baseline/service-preparation-README.md",
"bytes": 7075,
"sha256": "f7b31d73cea87a57c21654ed7c8ed5d38579285f8c8f490fe173a5dcf327dbc0"
},
{
"path": "baseline/incident-workspace.arcadia",
"bytes": 6206,
"sha256": "74cd2c1dd5eed7eb19895a752bb8ff9ce93655f7638a5312c96f56218568ebb3"
},
{
"path": "baseline/native-run-plan.md",
"bytes": 17535,
"sha256": "41f826cd6dd159526d23cfd432ec877ba99e3f29b4e32f9283af3095b07b1630"
},
{
"path": "baseline/comparator-retarget.md",
"bytes": 6239,
"sha256": "dc387248d821de0001e055d4b09670e1848e55829f9bea7c743c9a13fddcc2a7"
},
{
"path": "package/arcadia-studio.exe",
"bytes": 116721152,
"sha256": "7ece85c6012ae0ae75fc56ed3c3aadb8bc116448ad1782be422ef34a629dc3ce"
},
{
"path": "package/libunwind.dll",
"bytes": 190464,
"sha256": "aa282fa47bb2c4e210cea5e470cdbdca58568f0be0bc73e404d86ab9cd95ef6a"
},
{
"path": "evidence/all-receipt.json",
"bytes": 216251,
"sha256": "d1fe5a65170ca98889c1ca48f94b0531354eea32a0c139b18d8c442f23c342e2"
},
{
"path": "evidence/all.log",
"bytes": 127795,
"sha256": "00ad4766b65e148bb05d8679fdb916c2f989cd8d137d3d9c993a734609146c84"
},
{
"path": "evidence/batch-helpers.ps1",
"bytes": 3138,
"sha256": "0990e168b3e6f037237cb1533827f2fb9245b48e481b9801a2f695dd7a1795c4"
},
{
"path": "evidence/batches.json",
"bytes": 37927,
"sha256": "ae682377ada8fd4f0b4b5c2ed09ad81eb4800464b44e341f5bbccb3b482f66d9"
},
{
"path": "evidence/binary-inputs.ps1",
"bytes": 1234,
"sha256": "58a185bddd852398bdc175faf05fce232ec77d2f0ebb1af31074d544339cc540"
},
{
"path": "evidence/build-receipt.json",
"bytes": 7801,
"sha256": "07697f61039e4b28d3759d79f6143ca7735f04f8735b2a95a4bf8ae41b0fea41"
},
{
"path": "evidence/build.log",
"bytes": 486,
"sha256": "6dc6cc0f7746a93a5e40fb4a3bc0892c24135ada3e422cdf88e23ccb67b7a870"
},
{
"path": "evidence/cache-policy.json",
"bytes": 286,
"sha256": "68dfa3ec1c3ff7f0ef2cec55e27c163d5675026de354375e231e0e1ae37218b8"
},
{
"path": "evidence/capture.ps1",
"bytes": 4158,
"sha256": "c76278630e332757c4e68ff466211d02cdd585a60c325e760f6331e5ff39b6c1"
},
{
"path": "evidence/clippy-receipt.json",
"bytes": 7214,
"sha256": "a40b02c6e0904a70aab48bd1c20dfc926c4e194f4fb2e99f176b838e7a532d1d"
},
{
"path": "evidence/clippy.log",
"bytes": 61,
"sha256": "50a70fc1fc43bbffffc23c5507808ecacdf898bee2a4f5f090023f15c527435c"
},
{
"path": "evidence/enumeration.json",
"bytes": 73812,
"sha256": "1cc1744effb1ee8dd555b2970e97d7849db6390945fb16e9ea28ef96db1fb2ec"
},
{
"path": "evidence/expected-inputs.json",
"bytes": 114759,
"sha256": "f720f1e2f7f31bd4188e9b624cf0324439958ae23dcb7c48c9ecc16cc7ed6131"
},
{
"path": "evidence/expected-tests.json",
"bytes": 157026,
"sha256": "869f6f79356bce44bdae8d453e3c31a720fdcfeec2298acf5311ebf3793d2054"
},
{
"path": "evidence/external-inputs.json",
"bytes": 1413,
"sha256": "b02b917f584024c896573410c1c1ac1b786ff1cbd88a2771cbd2cf50aac87789"
},
{
"path": "evidence/focused-batch01-receipt.json",
"bytes": 46039,
"sha256": "fc2d2cc53c4aeea68a09dba35508cdb9398bc015141940d07de163d8a63d868f"
},
{
"path": "evidence/focused-batch01.log",
"bytes": 13193,
"sha256": "6abd3ae6debbea53aaacf84b59a0b6273dacf8d1557bcbcfa9632a7c680f27ee"
},
{
"path": "evidence/focused-batch02-receipt.json",
"bytes": 46419,
"sha256": "1a0f5ea48327763f1d631c8ec43f4ac000dbf586f134223547843ed8fc83c6c0"
},
{
"path": "evidence/focused-batch02.log",
"bytes": 13150,
"sha256": "a0006a28cb1441434e712c51eb084da37d4e11f0695ecebebe2c405dc92b456b"
},
{
"path": "evidence/focused-batch03-receipt.json",
"bytes": 43216,
"sha256": "834047f8e3e3a8de969eb7dc490013f1d2a5ad7b24a1079f855fe8cffcaaa5b7"
},
{
"path": "evidence/focused-batch03.log",
"bytes": 11998,
"sha256": "763c79f9e74ad48e835a11f81f67472b188c04636b2da6b1b3bb664fe0639b3f"
},
{
"path": "evidence/focused-receipt.json",
"bytes": 93260,
"sha256": "c289154fc76788de9e94524c18930b57f13f7f967794f5208a80c0c026f4a040"
},
{
"path": "evidence/focused.log",
"bytes": 38341,
"sha256": "dbb7ee3d2c4599359e0143274c7547e356c861f3ebc9b0a3d4ad11369e286d4d"
},
{
"path": "evidence/inputs-complete-all-after.json",
"bytes": 119379,
"sha256": "3ed31db7dcf0ab9ed5870f20c8566bd229210b64ba96b7f89b8f62af6596f349"
},
{
"path": "evidence/inputs-complete-all-before.json",
"bytes": 119379,
"sha256": "5b9e3aad6599e6dbf329243a80e5d979d38cbf3406d683e5c655774436d6e3b5"
},
{
"path": "evidence/inputs-complete-before.json",
"bytes": 119379,
"sha256": "b3dff04a22e3c539b55229a4989a77cb17cde3f1e8f9e94fe13cd0f79ee4e312"
},
{
"path": "evidence/inputs-complete-build-after.json",
"bytes": 119379,
"sha256": "338a5072cebc767d54557bf921e5f05104c0043519c7139a44166121149bff37"
},
{
"path": "evidence/inputs-complete-build-before.json",
"bytes": 119379,
"sha256": "74517a74ed2a31c8338a20e300eed9292f5e3776fcdea2cb1b6015b50c601218"
},
{
"path": "evidence/inputs-complete-clippy-after.json",
"bytes": 119379,
"sha256": "e367ed3b9b3f49d54b795e7c1a182bbdc7e381e8558d746e8909aec38788e167"
},
{
"path": "evidence/inputs-complete-clippy-before.json",
"bytes": 119379,
"sha256": "9105d87076e514186adcf31d81b0102de8bb5644f54da0d90e14f569cd1a7a45"
},
{
"path": "evidence/inputs-complete-focused-after.json",
"bytes": 119379,
"sha256": "04273c93962f2c8001f779669a05f7c75b09b1038f84d016761439810f320c63"
},
{
"path": "evidence/inputs-complete-focused-batch01-after.json",
"bytes": 119379,
"sha256": "819d0519e4c4c2df9622ff0043f2097e38ff163b0a6cbac28b456fae2842151e"
},
{
"path": "evidence/inputs-complete-focused-batch01-before.json",
"bytes": 119379,
"sha256": "9998c570359417c8350acdda43fe206aea0b60a6357baf5361887a540596084d"
},
{
"path": "evidence/inputs-complete-focused-batch02-after.json",
"bytes": 119379,
"sha256": "c2dc3d856305e2a7ef7e4ed254b9bb72ee578e1e4a5c469b10912c73795bfb1c"
},
{
"path": "evidence/inputs-complete-focused-batch02-before.json",
"bytes": 119379,
"sha256": "6520c7b731b461e5530950ec58629cff31025b446a525f9eb833eda21e405d46"
},
{
"path": "evidence/inputs-complete-focused-batch03-after.json",
"bytes": 119379,
"sha256": "b5cbcb8a2d65961c15fb528b26838f65539ae521e39de9886564272b96cb0f8a"
},
{
"path": "evidence/inputs-complete-focused-batch03-before.json",
"bytes": 119379,
"sha256": "d0a8aed676692f80f243a7719044853ff055e8e099877b947ef53e4958b7caf4"
},
{
"path": "evidence/inputs-complete-focused-before.json",
"bytes": 119379,
"sha256": "1273e88766d39ff21b20e517589386aa2a6f1c4825a546b5c258173c8ff29058"
},
{
"path": "evidence/inputs-complete-list-after.json",
"bytes": 119379,
"sha256": "c51c8d7820d586fed80047889c5a850ea7b7ab5c1fc60d6f32f773d04c8850c6"
},
{
"path": "evidence/inputs-complete-list-before.json",
"bytes": 119379,
"sha256": "506fa0f9c7577620700296397ad2035f6d77cbd4c8c96a568942d9f19a05266a"
},
{
"path": "evidence/inputs-complete-strict-preflight-after.json",
"bytes": 119379,
"sha256": "ba7a76af011191105f1909cf0a7dabde803eeac7a0493889cd150d68ff08f894"
},
{
"path": "evidence/inputs-complete-strict-preflight-before.json",
"bytes": 119379,
"sha256": "0c82113eca231ed3dd0477d428129f0a651741d1c6a49ee62a4218452f73916d"
},
{
"path": "evidence/list-receipt.json",
"bytes": 161801,
"sha256": "07fd88670a39bb3ed3614484066a383d46ce9e9aa637f753295a54f065558682"
},
{
"path": "evidence/list.log",
"bytes": 120785,
"sha256": "3339d40caf4340b288730cdc9152d29b8650c5ea867e514f28f132387d2fcd03"
},
{
"path": "evidence/preparation-handoff.json",
"bytes": 2990,
"sha256": "19c7280eecab3abc2afd8b46b5c13434b04d620cee8081240920f52b41829fbe"
},
{
"path": "evidence/preparation-verification.json",
"bytes": 1030,
"sha256": "2851efe691173ab66111bd110eefff45780b90e21b350ea10583314e9240bf25"
},
{
"path": "evidence/README.md",
"bytes": 5388,
"sha256": "e063a6708ce940324c08437bcc6a6ad2a5936cb00ac87294b0331b1d89230e57"
},
{
"path": "evidence/run.ps1",
"bytes": 18657,
"sha256": "9f3540a6984858448ad1f9bcf6e3326b6ec2b4b3ee897189876c56ebeaaea6cc"
},
{
"path": "evidence/source-provenance.json",
"bytes": 5130,
"sha256": "64868f108ae01e4298f0156db4ee500b1da4b8ecaff4e3c6c866ecba6aeb3fb1"
},
{
"path": "evidence/strict-preflight-receipt.json",
"bytes": 2241,
"sha256": "90597fab687350816777480daa4bd9649b6b4e550cfe381b2af0eede0f1cadde"
},
{
"path": "evidence/strict-preflight.log",
"bytes": 330,
"sha256": "e73fb8b3553c8b61f52f23cef787c1aa1f93f8dc7f78844df7e6129fac58e3f6"
},
{
"path": "evidence/strict-preflight.ps1",
"bytes": 5182,
"sha256": "152621fa4efe0a96adbeea43c4a08be21a63f5d4982846a9ad46de52ddbc725f"
},
{
"path": "evidence/toolchain-versions.json",
"bytes": 2268,
"sha256": "000d46684b18c2472b5f5c83b91c5870f3f67bc682ffea16b9191e1d2c9d7a2c"
},
{
"path": "evidence/verify-preparation.ps1",
"bytes": 5703,
"sha256": "fbfdebaa5d2d1e2cb7e595e3acd70392b89348b91eb2d95173e5c30cd0adc72a"
}
],
"fixture_files": [
{
"path": "working/incident-workspace.arcadia",
"bytes": 6206,
"sha256": "74cd2c1dd5eed7eb19895a752bb8ff9ce93655f7638a5312c96f56218568ebb3"
},
{
"path": "working/service-details.arcadia",
"bytes": 6132,
"sha256": "0e4325222a451b9d4e503974ce86bb95a9931edd0d2d65b8cd9db8d0f99d69e5"
}
],
"scope": "Staged after all five matching gates; current complete source/config inputs rehashed before and after copies. Working fixture may change only during recorded native actions."
}
@@ -0,0 +1,91 @@
#Requires -Version 7.0
# Prepared only. Run in a persistent shell; this observer waits for normal close.
[CmdletBinding()]
param([ValidateRange(1,99)][int]$Run=1)
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
. (Join-Path $PSScriptRoot 'verify.ps1')
$nativeRoot = $PSScriptRoot
$nativePackage = Join-Path $nativeRoot 'package'
$nativeProfile = Join-Path $nativeRoot 'profile'
$nativeCwd = Join-Path $nativeRoot 'unrelated-cwd'
$runRoot = Join-Path $nativeRoot ('runs/run-{0:d2}' -f $Run)
$nativeManifest = Get-Content -LiteralPath (Join-Path $nativeRoot 'input-manifest.json') -Raw | ConvertFrom-Json
$nativePin = $nativeManifest.source_commit
$nativeInputCount = [int]$nativeManifest.verified_input_count
if ($nativePin -cne 'b10b28cefd1d0794073ba241a0c8de9a83e85f68' -or $nativeInputCount -ne 612) { throw 'Invalid staged identity.' }
$staging = Get-Content -LiteralPath (Join-Path $nativeRoot 'staging-record.json') -Raw | ConvertFrom-Json
$stagingHash=Get-NativeHash (Join-Path $nativeRoot 'staging-record.json')
if ($staging.source_commit -cne $nativePin -or $staging.manifest_sha256 -cne (Get-NativeHash (Join-Path $nativeRoot 'input-manifest.json'))) { throw 'Final staged manifest changed.' }
if ($nativeManifest.source_commit -cne $nativePin -or $nativeManifest.verified_input_count -ne $nativeInputCount -or -not $nativeManifest.before_after_input_files_unchanged) { throw 'Wrong staged source binding.' }
Assert-NativeFiles $nativeRoot $nativeManifest.immutable_files
$previousCloseHash=$null
if ($Run -eq 1) {
Assert-NativeFiles $nativeRoot $nativeManifest.fixture_files
if (Test-Path -LiteralPath (Join-Path $nativeRoot 'runs')) { throw 'First run requires fresh run evidence.' }
} else {
$previousRoot=Join-Path $nativeRoot ('runs/run-{0:d2}' -f ($Run-1))
$previousClosePath=Join-Path $previousRoot 'normal-close.json'
$previousClose=Read-NativeJson $previousClosePath
$previousLaunch=Read-NativeJson (Join-Path $previousRoot 'launch.json')
if ($previousClose.source_commit -cne $nativePin -or $previousLaunch.source_commit -cne $nativePin -or $previousClose.exit_code -ne 0 -or -not $previousClose.immutable_inputs_unchanged -or $previousClose.launch_sha256 -cne (Get-NativeHash (Join-Path $previousRoot 'launch.json')) -or $previousLaunch.manifest_sha256 -cne (Get-NativeHash (Join-Path $nativeRoot 'input-manifest.json')) -or $previousClose.pid -ne $previousLaunch.pid -or $previousClose.started_utc -cne $previousLaunch.started_utc) { throw 'Previous successful bound close required.' }
if ((Get-NativeHash (Join-Path $previousRoot 'logs/studio.stdout.log')) -cne $previousClose.stdout_sha256 -or (Get-NativeHash (Join-Path $previousRoot 'logs/studio.stderr.log')) -cne $previousClose.stderr_sha256) { throw 'Previous logs changed.' }
Assert-NativeFiles $nativeRoot $previousClose.working_files
$previousCloseHash=Get-NativeHash $previousClosePath
}
$build = Assert-BuildEvidence (Join-Path $nativeRoot 'evidence')
if ($build.binary.sha256 -cne $nativeManifest.binary.sha256 -or (Get-NativeHash (Join-Path $nativePackage 'arcadia-studio.exe')) -cne $build.binary.sha256 -or (Get-Item -LiteralPath (Join-Path $nativePackage 'arcadia-studio.exe')).Length -ne $build.binary.bytes) { throw 'Wrong staged binary.' }
if ((Get-NativeHash (Join-Path $nativePackage 'libunwind.dll')) -cne 'aa282fa47bb2c4e210cea5e470cdbdca58568f0be0bc73e404d86ab9cd95ef6a') { throw 'Wrong runtime.' }
foreach ($directory in @($nativeProfile,$nativeCwd)) {
if ($Run -eq 1 -and (Test-Path -LiteralPath $directory)) { throw "Fresh launch directory required: $directory" }; if ($Run -gt 1 -and -not (Test-Path -LiteralPath $directory -PathType Container)) { throw "Previous private launch directory required: $directory" }
}
if (Test-Path -LiteralPath $runRoot) { throw 'Preserve existing run evidence.' }
foreach ($name in @('launch.json','normal-close.json','launch-failure.json','logs')) {
if (Test-Path -LiteralPath (Join-Path $runRoot $name)) { throw "Refusing to overwrite launch evidence: $name" }
}
if ([string]::IsNullOrWhiteSpace($env:SystemRoot) -or -not (Test-Path -LiteralPath (Join-Path $env:SystemRoot 'System32') -PathType Container)) { throw 'Normal Windows SystemRoot required.' }
$nativePath = $nativePackage + ';' + (Join-Path $env:SystemRoot 'System32') + ';' + $env:SystemRoot + ';' + (Join-Path $env:SystemRoot 'System32/Wbem')
$nativeOut = Join-Path $runRoot 'logs/studio.stdout.log'
$nativeErr = Join-Path $runRoot 'logs/studio.stderr.log'
$workingNames=@('incident-workspace.arcadia','service-details.arcadia')
$state = [ordered]@{working_files_before=@(foreach($name in $workingNames){Get-NativeRecord $nativeRoot (Join-Path $nativeRoot ('working/'+$name))});fixture_entries=@($workingNames|ForEach-Object {Join-Path $nativeRoot ('working/'+$_)});run=$Run;previous_close_sha256=$previousCloseHash;working_file_before=(Get-NativeRecord $nativeRoot (Join-Path $nativeRoot 'working/incident-workspace.arcadia'));source_commit=$nativePin;manifest_sha256=(Get-NativeHash (Join-Path $nativeRoot 'input-manifest.json'));script_sha256=(Get-NativeHash $PSCommandPath);executable=(Join-Path $nativePackage 'arcadia-studio.exe');binary_sha256=(Get-NativeHash (Join-Path $nativePackage 'arcadia-studio.exe'));localappdata=$nativeProfile;working_directory=$nativeCwd;child_path=$nativePath;arguments=@();environment_scope='Child ProcessStartInfo only';fixture_entry=(Join-Path $nativeRoot 'working/incident-workspace.arcadia');pid=$null;started_utc=$null}
$process = $null; $outStream = $null; $errStream = $null
try {
foreach ($directory in @($nativeProfile,$nativeCwd,(Join-Path $runRoot 'logs'))) { [void][IO.Directory]::CreateDirectory($directory) }
$outStream = [IO.File]::Open($nativeOut,[IO.FileMode]::CreateNew,[IO.FileAccess]::Write,[IO.FileShare]::Read)
$errStream = [IO.File]::Open($nativeErr,[IO.FileMode]::CreateNew,[IO.FileAccess]::Write,[IO.FileShare]::Read)
$info = [Diagnostics.ProcessStartInfo]::new()
$info.FileName = $state.executable
$info.WorkingDirectory = $nativeCwd
$info.UseShellExecute = $false
$info.CreateNoWindow = $true
$info.WindowStyle = [Diagnostics.ProcessWindowStyle]::Hidden
$info.RedirectStandardOutput = $true
$info.RedirectStandardError = $true
$info.Environment['LOCALAPPDATA'] = $nativeProfile
$info.Environment['PATH'] = $nativePath
$process = [Diagnostics.Process]::new()
$process.StartInfo = $info
if (-not $process.Start()) { throw 'Process.Start returned false.' }
$outCopy = $process.StandardOutput.BaseStream.CopyToAsync($outStream)
$errCopy = $process.StandardError.BaseStream.CopyToAsync($errStream)
$state.pid = $process.Id
$state.started_utc = $process.StartTime.ToUniversalTime().ToString('o')
Write-NativeJson (Join-Path $runRoot 'launch.json') $state
$state | ConvertTo-Json -Depth 15 | Write-Output
$process.WaitForExit()
[Threading.Tasks.Task]::WaitAll([Threading.Tasks.Task[]]@($outCopy,$errCopy))
$outStream.Flush($true); $errStream.Flush($true)
$outStream.Dispose(); $outStream = $null
$errStream.Dispose(); $errStream = $null
Assert-NativeFiles $nativeRoot $nativeManifest.immutable_files
if ((Get-NativeHash (Join-Path $nativeRoot 'input-manifest.json')) -cne $state.manifest_sha256 -or (Get-NativeHash (Join-Path $nativeRoot 'staging-record.json')) -cne $stagingHash) { throw 'Manifest or staging receipt changed during native run.' }
Write-NativeJson (Join-Path $runRoot 'normal-close.json') ([ordered]@{run=$Run;launch_sha256=(Get-NativeHash (Join-Path $runRoot 'launch.json'));source_commit=$nativePin;pid=$state.pid;started_utc=$state.started_utc;observed_exit_utc=[DateTime]::UtcNow.ToString('o');exit_code=$process.ExitCode;immutable_inputs_unchanged=$true;baseline_files=@(foreach($name in $workingNames){Get-NativeRecord $nativeRoot (Join-Path $nativeRoot ('baseline/'+$name))});working_files=@(foreach($name in $workingNames){Get-NativeRecord $nativeRoot (Join-Path $nativeRoot ('working/'+$name))});stdout_bytes=(Get-Item -LiteralPath $nativeOut).Length;stderr_bytes=(Get-Item -LiteralPath $nativeErr).Length;stdout_sha256=(Get-NativeHash $nativeOut);stderr_sha256=(Get-NativeHash $nativeErr);scope='Observed bound process exit without forced termination. Close cause and native acceptance require user/root observation; fixture edits are expected and compared separately.'})
} catch {
Write-NativeJson (Join-Path $runRoot 'launch-failure.json') ([ordered]@{utc=[DateTime]::UtcNow.ToString('o');pid=$state.pid;error=$_.Exception.Message;owned_process_not_killed=$true})
throw
} finally {
if ($null -ne $outStream) { $outStream.Dispose() }
if ($null -ne $errStream) { $errStream.Dispose() }
if ($null -ne $process) { $process.Dispose() }
}
@@ -0,0 +1,96 @@
# Scenario Details and Saved spacing native comparison
Prepared for [source b10b28cefd1d0794073ba241a0c8de9a83e85f68](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/src/commit/b10b28cefd1d0794073ba241a0c8de9a83e85f68). **This is a proposed execution plan, not a result.** Planned membership is 1095 desktop tests, 301 focused tests, 1091 normal passes and four ignored; none of those numbers is an execution claim for this revision. The preceding 5d4 strict preflight failed with dead code and is preserved separately. Revision b10 adds a test-only guard to the unused `Scene::sequence` wrapper; current-pin gates remain required. Native staging requires successful list, focused, full, combined desktop+server strict, and GUI build for this exact source, with their source/binary/runtime bindings. Record actual per-process focused summaries if batching is used; do not synthesize a single filtered count from several processes.
No stage, launch, package or script is created by this note. Parent reviews this plan before a future stage snapshots and binds it. Preserve all prior native plans and failed/superseded gates. Use a freshly staged working fixture and private profile, with immutable baseline copies, numbered logs/captures and normal-close receipts. Never open or Save the preparation originals.
The two unchanged fixtures are:
| Fixture | Baseline SHA256 |
| --- | --- |
| `incident-workspace.arcadia`, 6206 bytes | `74cd2c1dd5eed7eb19895a752bb8ff9ce93655f7638a5312c96f56218568ebb3` |
| `service-details.arcadia` | `0e4325222a451b9d4e503974ce86bb95a9931edd0d2d65b8cd9db8d0f99d69e5` |
The [published service core evidence](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/src/commit/698126e1a0b9ab37cb3cac4339ffcf3a6bf0a340/harness/experiments/scenario-service-details-core-20260913/README.md) supplies actual admission and independent baseline/1/3a/3b/3c/3d Projects. Core code and dependency manifests have no 8bf→b10 diff, but the old 8bf comparator's runtime source bindings no longer match the changed desktop/server checkout. Use a newly reviewed b10 comparator build and self-check; do not weaken its checks or relabel the old EXE. See [comparator retargeting](comparator-retarget.md). The Details comparator provides `name` and `typed`; the separately reviewed spacing comparator provides `same`, `message`, `lane` and `repair-c`. Both require their own current admissible build/run bindings.
For every phase record actual selected arrangement and record, input, window/inner-canvas size where measurable, screenshot and result. Preserve warnings, refused actions and unsuccessful attempts. File hashes alone do not prove the editor buffer, runtime Project or Undo stack. Use immutable saved checkpoints and the independent comparators for full parsed-Project comparisons; observe native draft/history behavior separately.
## 1. Open first, then passive navigation
Use **Open** on the staged working incident fixture. Enter **Behavior & scenarios**, choose **Review a reported incident** if necessary, then **A - Incident review readable**. Record `Saved view · A - Incident review readable`. New Saved entry starts in Fit. Select the first and second arrows and inspect Details: **Initial incident report** and **Updated incident report** must be distinct occurrences despite sharing **Incident report**. Source positions 160/252/344/436 and A lanes 160/640 are world-coordinate expectations, not screenshot pixels.
Switch A → **B - Incident review negative and far** → **Automatic arrangement** → A with clean fields. B stores lanes −500/50000. Fit must include negative and far-right headers and the self Call; an ordinary canvas at most 1200 logical pixels wide needs a scale below 5%, with meaningful nonzero zoom text. Use **+**, then **−**, without a jump to 5%; return to Fit. Click the left header and verify **Reporting activity**. Zoom/reveal before judging an ambiguous tiny arrow hit. Automatic must say `Automatic view · Review a reported incident` and use automatic lanes 160/400. Repeat B Fit and a zoom transition at a narrower measured window, then return to A. The fixture is not a ±1,000,000 trial.
Visit **Guide** or **Text** and return to Behavior; A remains requested. In Text place the caret on the unique alias `initial_report`, choose **Show in diagrams…**, wait for **Searching rendered objects…**, choose B and its exact occurrence. Observe Saved B, selected **Initial incident report**, and readable target centering after actual viewport settlement. Repeat `updated_report`; the second arrow must be selected. Exercise a model-tree record context menu **Show in diagrams…** once. Use **All diagrams**, **Close**, or the actual ↑/↓, Enter and Escape controls.
Do not confuse definitions with occurrences: neither caller occurrence belongs in `reporting_review`; querying the exchange `incident_report` can legitimately find both caller occurrences and **Check the incident report** in the definition. Querying `review_delivery` must not invent an arrow inside the caller's opaque use.
In A select **Use the reviewed reporting procedure**, open Details and **Open definition**. Expect `Automatic view · Reporting procedure detail` and **Check the incident report**. The caller use remains one opaque box. Before entry, modestly pan/zoom and record the Details position; **Back** must restore A, that selected use and its stored camera/Details intent. Fit may adapt to a genuinely changed viewport; authored coordinates must not change.
## 2. Name draft, one model edit and real arrangement-target falsifier
Restore A and select **Initial incident report**. Capture an immutable pre-Name saved source and its hash before typing. Click **Focus canvas → Details → Properties**. The editable Properties inspector must appear, Details close, and the occurrence/A remain selected. Panel restoration can change the viewport and therefore effective Fit; do not require identical pixels.
Append exactly ` [Details trial]` in the actual Name input. Confirm the draft does not change accepted source or disk. **Revert** must restore **Initial incident report** without creating a model Undo entry. Repeat and **Apply changes**. Save/capture the accepted Name checkpoint **before Undo** and run the new comparator's `name` mode with:
- Baseline: the independently captured pre-Name file/hash.
- Target: `70200000-0000-4000-8000-000000000020`.
- NewName: `Initial incident report [Details trial]`.
The complete Project must differ only by that occurrence Name. With canvas/model focus, invoke application **Undo** (not a text-input local Ctrl+Z), Save/capture and compare to the baseline using `same`. **Redo**, Save/capture and compare to the exact Name checkpoint; **Undo** once more and Save the restored baseline before later tasks. Record the native history actions as well as saved comparisons. A saved-source comparison alone does not prove history depth.
Retain the original **actual arrangement picker** falsifier. In Text, put the caret on the Diagram declaration alias `incident_readable`, use **Show in diagrams…**, and choose A's Whole destination. Verify the selected inspector record is A, with no draft. The model tree contains elements, so do not invent a Diagram tree row. Now choose B using the Scenario **arrangement picker**. Selection of the currently selected Saved view record must follow to B. Click **Focus canvas → Details → Properties**: editable **B - Incident review negative and far** must appear, not A or the owner. Do not substitute another navigation route to obtain a pass.
Also verify the independent-selection control: return A, select **Initial incident report**, then choose B; that occurrence must stay selected and its Properties remain available. When following the selected current Saved Diagram to Automatic, the selected record becomes **Review a reported incident**, because Automatic has no Diagram record. A subsequent Saved choice preserves that independently selected semantic owner. These are explicit picker actions; passive page return/Back must not acquire new selection-follow behavior.
Existing `Message::Diagram` follow-selection tests are separate compatibility evidence. The visible architecture Diagram picker excludes Scenario projections at this source; do not claim a native global-picker route that is absent. If an expected inspector is disabled or silent, preserve the result rather than selecting the desired record manually and claiming the original route succeeded.
## 3. Refusal and cancellation before cumulative edits
On clean A, drag the self Call below its correlated Reply. Expect clear refusal, baseline geometry and no accepted source/history change on release. Make a real drag ending outside the canvas to test cancellation; compare a saved checkpoint to the pre-drag baseline with `same`. A header click without drag selects its lifeline without history; an arrow/label click selects its occurrence.
Observe feedback at a smaller window without moving the viewport or covering the manipulated object. Do not claim held-drag focus/resize races if the native input tool cannot represent them. Those scheduling cases remain mounted/App evidence. Crossing ordinary asynchronous messages can be allowed with a source-order diagnostic; spacing must not change semantic Steps.
## 4. Accepted message/lane spacing and exact coordinate evidence
Choose the explicit **100%** control on A and record the actual frozen scale. Capture an immutable complete pre-drag source checkpoint. Move the second message downward by a modest distance, predicting the accepted coordinate from actual submitted logical pointer endpoints, captured scale and the pre-drag anchor **before inspecting output**. An intended 20-pixel drag is not automatically exactly 20 world units.
For active axis y(message) or x(lane), account for f32 operations: `distance = f32(release - press)`, `world_delta = f32(distance / captured_scale)`, then `expected = f32(original + world_delta)`. Do not subtract canvas origin/pan a second time or accumulate intermediate moves. Record physical-to-logical/DPI evidence and sufficiently precise endpoint/scale values or bits. A rounded zoom label, requested tool delta or screenshot distance is insufficient. If exact logical values cannot be established, report the native interaction and leave exact-coordinate acceptance unresolved; never fit a tolerance or infer the expected value from saved source/Scene.
Save/capture the accepted message checkpoint and compare using `message`, view `70200000-0000-4000-8000-000000000040`, target `70200000-0000-4000-8000-000000000021`, and the independently predicted coordinate. Only A's updated-report send_y may change. One model Undo plus Save restores the complete pre-drag checkpoint; Redo plus Save restores the accepted checkpoint. Use a new immutable baseline for the next cumulative edit.
Drag **Assessment activity** horizontally and use `lane`, the same A view and lifeline `70200000-0000-4000-8000-000000000012`. Only its x may change, while attached geometry follows. Again Save/capture, Undo/Save and Redo/Save against the correct cumulative checkpoints. B/C, semantic Steps, UUIDs and unrelated values remain exact. Save/close/reopen once to check the cumulative A edits if convenient, explicitly selecting A after reopen.
The prior independent precision falsifier remains automated context, not native evidence: press 503+2^-15, release 513, scale 0.5 and original 148 imply 168−2^-14, bits `0x4327fffc`, not 168.
## 5. C fallback, source repair and durable reopen
Choose **C - Incident review needs layout repair**. Keep its Saved title and explanation visible: **Showing the complete automatic arrangement because the saved positions cannot currently be displayed. Saved positions are preserved.** Expect complete automatic geometry and lanes 160/400, not authored 900/−500. Inspect the unfinished-coordinate notice and unassigned/missing-endpoint warnings separately. Select/inspect, Fit and toggle Focus/Restore panels; the explanation must remain available. Attempt insertion and Saved spacing: coordinate edits must be unavailable. Permitted background pan is not authored geometry. Save/capture and compare `same` against the current cumulative checkpoint.
Open Text and locate C's layout; **Open selected source** follows the current semantic selection and does not promise to select C's numeric token. Change only C `assess_reply` send_y 300→424. Before **Apply all**, return Behavior: accepted C fallback remains and the source draft is retained; clean-only navigation is unavailable. Apply explicitly in Text, then return Behavior. C must use authored lanes900/−500; the fallback explanation disappears; unfinished send_y 2000 remains latent. A's earlier accepted edits and B remain unchanged.
Save/capture and compare using `repair-c` against the immutable **current pre-repair** checkpoint, not an original fixture that lacks cumulative A edits. Model Undo in Behavior plus Save restores 300/fallback and the exact pre-repair Project. Redo plus Save restores 424/authored C and the repaired checkpoint. Close normally and reopen the same staged file/private profile. Explicitly select C if last-view persistence is absent; verify C, latent 2000, A/B and semantic order. Reopening C automatically is not a requirement. Preserve normal-close receipts and logs.
## 6. Service Details: five cumulative accepted checkpoints
Save/close the incident file normally, preserving its final checkpoint. Open staged **service-details.arcadia**, choose **Review service calls** and **Service calls - Details trial**. Compare the initial saved source with approved `baseline.project.json`. Do not use a creation form or source rewrite to substitute for existing-record Properties. Full field identities and expected Projects are independently published in the core archive; their acceptance does not establish native form/source-writer behavior.
| Native task and required existing-record action | Save/capture and typed comparison |
| --- | --- |
| Select **Read primary status**, Focus canvas → Details → Properties. Inspect **ReadStatus allocation** and **Scope**. Change Value expression from `"primary"` to `"secondary"`; Apply. | Checkpoint `1`, `after-1.expected.project.json` |
| Select **Primary status response**; remove its Status annotation explicitly; Apply. | `3a`, `after-3a.expected.project.json` |
| Select first Call; choose **SetLimit allocation**, explicitly replace/remove Scope and provide **Pressure limit** expression `18.75` in the same draft; Apply once. | `3b`, `after-3b.expected.project.json` |
| Select its exact Reply; add **Accepted** expression `true`; Apply. | `3c`, `after-3c.expected.project.json` |
| Select first Call; change Pressure expression 18.75→19.25; Apply. | `3d`, `after-3d.expected.project.json` |
After checkpoint 1 and **before 3a**, perform the rejection/recovery falsifier: on the same first Call choose SetLimit while retaining Scope and the first Reply's Status. Raw expression must remain recoverable; **Apply changes** must reject the entire incompatible candidate. Capture actual feedback, retained raw input and scroll position without requiring a particular diagnostic ordering. **Revert** returns to accepted ReadStatus/checkpoint 1. Save/capture and compare to checkpoint 1; refusal/Revert must not introduce another accepted edit. Do not navigate away with a valid unintended draft or use Save to apply it silently.
For each accepted checkpoint, observe one model Undo restoring the immediately prior checkpoint and one Redo restoring the current checkpoint; Save/capture both and run the corresponding approved typed comparison. Leave the Redo state accepted before proceeding to the next row. All five expected Projects are cumulative; compare 3a to its own JSON, not the baseline or a freshly reconstructed expected model from native output.
The first Reply must stay correlated to first Call `80300000-0000-4000-8000-000000000060`, derive its exact allocation and store no operation of its own. The control Call/Reply pair 062/063, Scenario Steps, saved arrangement, UUIDs and names remain exact throughout. The final Save/normal-close/reopen must compare to 3d and expose the same pair. Expression strings include the intended quote characters in `"secondary"`/`"READY"`; the fixture does not evaluate calculations, literal types or units.
Record discoverability of semantic Reorder separately from Saved spacing; do not assume crossing arrows edits Steps or claim an unavailable reorder workflow succeeded. Distinguish message-kind **Delete** from **Delete from model**. Inspect/cancel any deletion warning without committing a deletion into this checkpoint sequence; a committed deletion needs a separate expected delta and is out of scope here.
## Evidence boundaries
Keep exact source/fixture/EXE/DLL receipts and every failed/refused attempt. Full parsed saved-Project equality complements, but cannot replace, native inspector/draft/focus/history observations. Exact stale scheduler/view-visit races remain automated. Incident has no Create/Delete or operation fields; service covers existing operation/payload editing. Neither fixture establishes all lifecycle cases, large-project responsiveness, Linux or measured-label acceptance. Long labels still use short 32/heuristic bounds in this candidate. No comparator result is a GUI or source-editor-buffer acceptance claim.
@@ -0,0 +1,54 @@
{
"status": "passed",
"utc": "2026-09-13T13:38:08.8145885Z",
"parsed_scripts": [
{
"path": "verify.ps1",
"bytes": 17002,
"sha256": "8306f4d4a1dde1c075a47994cd9d92738803c8b3b255b3e9907f0cb24749d91d"
},
{
"path": "stage.ps1",
"bytes": 8134,
"sha256": "146a8eed60905be98df96484a1a8aa749a9d48a61c889276233886df4ed78d1a"
},
{
"path": "launch.ps1",
"bytes": 8911,
"sha256": "e49dd381ee7746ac401abecc7d1ee708924fa6c63ddd3d06c8d34b91e059606e"
},
{
"path": "validate-scripts.ps1",
"bytes": 5463,
"sha256": "2d1ed309417815ab5d7bf5f19ba87b0ed332fd02582ef4507fda0baaa2f709e7"
}
],
"synthetic_cases": [
"exact_source_pair_accepts",
"wrong_pin",
"changed_source_bytes",
"duplicate_source_path",
"reordered_exact_names_accept",
"duplicate_test_name",
"same_binary_accepts",
"changed_binary_hash",
"missing_binary",
"actual_closed_b10_strict_preflight_binding_accepts_only",
"preflight_wrong_pin",
"preflight_failed",
"preflight_cargo_failed",
"preflight_wrong_command",
"preflight_environment_changed",
"preflight_capture_changed",
"preflight_wrong_workspace",
"preflight_wrong_target",
"current_regular_recipe_bound_files_covered_by_copy_extensions",
"current301_unique_partition107_101_93",
"frozen_new_verifier_exact"
],
"preflight_receipt_sha256": "90597fab687350816777480daa4bd9649b6b4e550cfe381b2af0eede0f1cadde",
"stage_executed": false,
"launch_executed": false,
"compiler_executed": false,
"scope": "AST, pure guards, actual closed strict-preflight readback with mutated refusal controls, and current static batch/copy membership only. No five-stage admission, staging, native launch or comparator acceptance."
}
@@ -0,0 +1,13 @@
diff --git a/C:/Users/User/Documents/Git/ARCADIA-Studio/.local/scenario-validation-native-b10b28c-20260913/stage.ps1 b/C:/Users/User/Documents/Git/ARCADIA-Studio/.local/scenario-validation-native-b10b28c-attempt2-20260913/stage.ps1
index 76b29d7..3de93d2 100644
--- a/C:/Users/User/Documents/Git/ARCADIA-Studio/.local/scenario-validation-native-b10b28c-20260913/stage.ps1
+++ b/C:/Users/User/Documents/Git/ARCADIA-Studio/.local/scenario-validation-native-b10b28c-attempt2-20260913/stage.ps1
@@ -18,7 +18,7 @@ $build=Assert-BuildEvidence $Gate
Assert-CurrentNativeSource $Gate
$binary=Get-Item -LiteralPath $build.binary.path
$targetBinary=[IO.Path]::GetFullPath((Join-Path $build.target 'debug/arcadia-studio.exe'))
-if($binary.FullName -ine $targetBinary -or $binary.Length -ne $build.binary.bytes -or (Get-NativeHash $binary.FullName) -cne $build.binary.sha256 -or $binary.LastWriteTimeUtc.ToString('o') -cne $build.binary.mtimeUtc){throw 'Build binary no longer matches successful receipt.'}
+if($binary.FullName -ine $targetBinary -or $binary.Length -ne $build.binary.bytes -or (Get-NativeHash $binary.FullName) -cne $build.binary.sha256 -or $binary.LastWriteTimeUtc.Ticks -ne ([DateTimeOffset]$build.binary.mtimeUtc).UtcDateTime.Ticks){throw 'Build binary no longer matches successful receipt.'}
$runtimeHash='aa282fa47bb2c4e210cea5e470cdbdca58568f0be0bc73e404d86ab9cd95ef6a'
$runtime=Get-Item -LiteralPath $RuntimeDll
if((Get-NativeHash $RuntimeDll) -cne $runtimeHash){throw 'Wrong previously verified runtime DLL.'}
@@ -0,0 +1,67 @@
#Requires -Version 7.0
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)][ValidatePattern('^[0-9a-f]{40}$')][string]$SourcePin,
[string]$Gate='C:/Users/User/Documents/Git/ARCADIA-Studio/.local/scenario-validation-gates-b10b28c-20260913',
[string]$Preparation='C:/Users/User/Documents/Git/ARCADIA-Studio/.local/scenario-spacing-native-preparation-20260913',
[string]$ServicePreparation='C:/Users/User/Documents/Git/ARCADIA-Studio/.local/scenario-details-native-preparation-20260913',
[string]$RuntimeDll='C:/Users/User/Documents/Git/ARCADIA-Studio/.local/toolchain/llvm-mingw-20260908-ucrt-x86_64/bin/libunwind.dll'
)
. (Join-Path $PSScriptRoot 'verify.ps1')
$nativePin=$SourcePin
if($nativePin -cne 'b10b28cefd1d0794073ba241a0c8de9a83e85f68'){throw 'This recipe requires exact reviewed b10 source.'}
$expected=Read-NativeJson (Join-Path $Gate 'expected-inputs.json')
$nativeInputCount=[int]$expected.count
if($nativeInputCount -ne 612){throw 'Exact612 Details source-input contract required.'}
foreach($name in @('package','evidence','baseline','working','input-manifest.json','staging-record.json','profile','unrelated-cwd','runs')){if(Test-Path -LiteralPath (Join-Path $PSScriptRoot $name)){throw "Fresh staging required; preserve $name"}}
$build=Assert-BuildEvidence $Gate
Assert-CurrentNativeSource $Gate
$binary=Get-Item -LiteralPath $build.binary.path
$targetBinary=[IO.Path]::GetFullPath((Join-Path $build.target 'debug/arcadia-studio.exe'))
if($binary.FullName -ine $targetBinary -or $binary.Length -ne $build.binary.bytes -or (Get-NativeHash $binary.FullName) -cne $build.binary.sha256 -or $binary.LastWriteTimeUtc.Ticks -ne ([DateTimeOffset]$build.binary.mtimeUtc).UtcDateTime.Ticks){throw 'Build binary no longer matches successful receipt.'}
$runtimeHash='aa282fa47bb2c4e210cea5e470cdbdca58568f0be0bc73e404d86ab9cd95ef6a'
$runtime=Get-Item -LiteralPath $RuntimeDll
if((Get-NativeHash $RuntimeDll) -cne $runtimeHash){throw 'Wrong previously verified runtime DLL.'}
$fixture=Join-Path $Preparation 'incident-workspace.arcadia'
$plan=Join-Path $PSScriptRoot 'native-run-plan.md'
$fixtureHash='74cd2c1dd5eed7eb19895a752bb8ff9ce93655f7638a5312c96f56218568ebb3'
if((Get-Item -LiteralPath $fixture).Length -ne 6206 -or (Get-NativeHash $fixture) -cne $fixtureHash){throw 'Original fixture differs.'}
$planHash=Get-NativeHash $plan
$comparatorNote=Join-Path $PSScriptRoot 'comparator-retarget.md'
$comparatorNoteHash=Get-NativeHash $comparatorNote
$serviceInputs=@(
[ordered]@{source='service-details.arcadia';dest='service-details.arcadia';bytes=6132;sha256='0e4325222a451b9d4e503974ce86bb95a9931edd0d2d65b8cd9db8d0f99d69e5'},
[ordered]@{source='baseline-and-edits.json';dest='service-baseline-and-edits.json';bytes=4666;sha256='6670cd0a07c109dde46128bd094a12d00ea008fc65efd73ad9477efcff976063'},
[ordered]@{source='README.md';dest='service-preparation-README.md';bytes=7075;sha256='f7b31d73cea87a57c21654ed7c8ed5d38579285f8c8f490fe173a5dcf327dbc0'}
)
foreach($f in $serviceInputs){$path=Join-Path $ServicePreparation $f.source;if((Get-Item -LiteralPath $path).Length -ne $f.bytes -or (Get-NativeHash $path) -cne $f.sha256){throw 'Typed fixture preparation differs; obtain new review/admission.'}}
foreach($name in @('package','evidence','baseline','working')){[void][IO.Directory]::CreateDirectory((Join-Path $PSScriptRoot $name))}
$evidence=Join-Path $PSScriptRoot 'evidence'
$package=Join-Path $PSScriptRoot 'package'
foreach($file in Get-ChildItem -LiteralPath $Gate -File){if($file.Extension -in @('.json','.ps1','.log','.md')){[IO.File]::Copy($file.FullName,(Join-Path $evidence $file.Name),$false)}}
$copied=Assert-BuildEvidence $evidence
if($copied.binary.sha256 -cne $build.binary.sha256){throw 'Copied build binding differs.'}
[IO.File]::Copy($binary.FullName,(Join-Path $package 'arcadia-studio.exe'),$false)
[IO.File]::Copy($RuntimeDll,(Join-Path $package 'libunwind.dll'),$false)
foreach($name in @('baseline','working')){[IO.File]::Copy($fixture,(Join-Path $PSScriptRoot ($name+'/incident-workspace.arcadia')),$false)}
[IO.File]::Copy($plan,(Join-Path $PSScriptRoot 'baseline/native-run-plan.md'),$false)
[IO.File]::Copy($comparatorNote,(Join-Path $PSScriptRoot 'baseline/comparator-retarget.md'),$false)
foreach($f in $serviceInputs){[IO.File]::Copy((Join-Path $ServicePreparation $f.source),(Join-Path $PSScriptRoot ('baseline/'+$f.dest)),$false)}
[IO.File]::Copy((Join-Path $ServicePreparation 'service-details.arcadia'),(Join-Path $PSScriptRoot 'working/service-details.arcadia'),$false)
if((Get-NativeHash $binary.FullName) -cne $build.binary.sha256 -or (Get-NativeHash (Join-Path $package 'arcadia-studio.exe')) -cne $build.binary.sha256 -or (Get-Item -LiteralPath (Join-Path $package 'arcadia-studio.exe')).Length -ne $build.binary.bytes){throw 'Binary changed during staging.'}
if((Get-NativeHash $RuntimeDll) -cne $runtimeHash -or (Get-NativeHash (Join-Path $package 'libunwind.dll')) -cne $runtimeHash -or (Get-Item -LiteralPath (Join-Path $package 'libunwind.dll')).Length -ne $runtime.Length){throw 'Runtime changed during staging.'}
if((Get-NativeHash $fixture) -cne $fixtureHash -or (Get-NativeHash $plan) -cne $planHash -or (Get-NativeHash (Join-Path $PSScriptRoot 'baseline/native-run-plan.md')) -cne $planHash){throw 'Preparation changed during staging.'}
if((Get-NativeHash $comparatorNote) -cne $comparatorNoteHash -or (Get-NativeHash (Join-Path $PSScriptRoot 'baseline/comparator-retarget.md')) -cne $comparatorNoteHash){throw 'Comparator note changed during staging.'}
foreach($f in $serviceInputs){foreach($path in @((Join-Path $ServicePreparation $f.source),(Join-Path $PSScriptRoot ('baseline/'+$f.dest)))){if((Get-Item -LiteralPath $path).Length -ne $f.bytes -or (Get-NativeHash $path) -cne $f.sha256){throw 'Typed fixture inputs changed during staging.'}}}
if((Get-NativeHash (Join-Path $PSScriptRoot 'working/service-details.arcadia')) -cne $serviceInputs[0].sha256){throw 'Typed working fixture copy differs.'}
Assert-CurrentNativeSource $Gate
$immutable=@()
foreach($name in @('stage.ps1','launch.ps1','verify.ps1','validate-scripts.ps1','README.md','native-run-plan.md','comparator-retarget.md','core-admission-reference.json','baseline/service-details.arcadia','baseline/service-baseline-and-edits.json','baseline/service-preparation-README.md','baseline/incident-workspace.arcadia','baseline/native-run-plan.md','baseline/comparator-retarget.md')){$immutable+=Get-NativeRecord $PSScriptRoot (Join-Path $PSScriptRoot $name)}
foreach($folder in @($package,$evidence)){foreach($file in Get-ChildItem -LiteralPath $folder -File){$immutable+=Get-NativeRecord $PSScriptRoot $file.FullName}}
$working=@(foreach($name in @('incident-workspace.arcadia','service-details.arcadia')){Get-NativeRecord $PSScriptRoot (Join-Path $PSScriptRoot ('working/'+$name))})
Assert-NativeFiles $PSScriptRoot $immutable
if($working[0].sha256 -cne $fixtureHash -or (Get-NativeHash (Join-Path $PSScriptRoot 'baseline/incident-workspace.arcadia')) -cne $fixtureHash){throw 'Fixture copy differs.'}
Write-NativeJson (Join-Path $PSScriptRoot 'input-manifest.json') ([ordered]@{source_commit=$nativePin;verified_input_count=$nativeInputCount;before_after_input_files_unchanged=$true;build_receipt_sha256=(Get-NativeHash (Join-Path $evidence 'build-receipt.json'));binary=$build.binary;immutable_files=$immutable;fixture_files=$working;scope='Staged after all five matching gates; current complete source/config inputs rehashed before and after copies. Working fixture may change only during recorded native actions.'})
Write-NativeJson (Join-Path $PSScriptRoot 'staging-record.json') ([ordered]@{utc=[DateTime]::UtcNow.ToString('o');source_commit=$nativePin;gate_origin=$Gate;runtime_origin=$RuntimeDll;preparation_origin=$Preparation;service_preparation_origin=$ServicePreparation;typed_fixture_admission='Separate current-core admission required before typed GUI tasks; staging is not admission';manifest_sha256=(Get-NativeHash (Join-Path $PSScriptRoot 'input-manifest.json'));launched=$false})
Write-Output 'Staged and bound. No launch or private profile created.'
@@ -0,0 +1,11 @@
{
"utc": "2026-09-13T14:41:37.9309273Z",
"source_commit": "b10b28cefd1d0794073ba241a0c8de9a83e85f68",
"gate_origin": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/scenario-validation-gates-b10b28c-20260913",
"runtime_origin": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/toolchain/llvm-mingw-20260908-ucrt-x86_64/bin/libunwind.dll",
"preparation_origin": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/scenario-spacing-native-preparation-20260913",
"service_preparation_origin": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/scenario-details-native-preparation-20260913",
"typed_fixture_admission": "Separate current-core admission required before typed GUI tasks; staging is not admission",
"manifest_sha256": "ea52ea5a65a119be6892a136c4ff030c8b68c1e56074a345f722456e0f6aca01",
"launched": false
}
@@ -0,0 +1,184 @@
#Requires -Version 7.0
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
# Source pin and count are supplied by the reviewed gate at staging; never inferred from HEAD.
function Get-NativeHash([string]$Path) { (Get-FileHash -LiteralPath $Path -Algorithm SHA256).Hash.ToLowerInvariant() }
function Write-NativeJson([string]$Path, $Value) {
$stream=[IO.File]::Open($Path,[IO.FileMode]::CreateNew,[IO.FileAccess]::Write,[IO.FileShare]::Read)
try {$bytes=[Text.UTF8Encoding]::new($false).GetBytes(($Value|ConvertTo-Json -Depth 30)+"`n");$stream.Write($bytes,0,$bytes.Length);$stream.Flush($true)} finally {$stream.Dispose()}
}
function Assert-NativeFiles([string]$Root,$Files) {
$prefix=[IO.Path]::GetFullPath($Root)+[IO.Path]::DirectorySeparatorChar
foreach($file in $Files){
$path=[IO.Path]::GetFullPath((Join-Path $Root $file.path))
if(-not $path.StartsWith($prefix,[StringComparison]::OrdinalIgnoreCase)){throw 'Manifest path escapes staging directory.'}
$item=Get-Item -LiteralPath $path -Force
if($item.PSIsContainer -or ($item.Attributes -band [IO.FileAttributes]::ReparsePoint) -ne 0 -or $item.Length -ne $file.bytes -or (Get-NativeHash $path) -cne $file.sha256){throw "Changed input: $path"}
}
}
function Get-NativeRecord([string]$Root,[string]$Path){
$item=Get-Item -LiteralPath $Path
[ordered]@{path=[IO.Path]::GetRelativePath($Root,$item.FullName).Replace('\','/');bytes=$item.Length;sha256=(Get-NativeHash $Path)}
}
function Assert-InputPair($Before,$After){
foreach($record in @($Before,$After)){if($record.base -cne $nativePin -or $record.count -ne $nativeInputCount -or @($record.files).Count -ne $nativeInputCount){throw 'Complete current-pin source records required.'}}
$rows=@{}
foreach($file in $Before.files){if($rows.ContainsKey($file.path)){throw 'Duplicate source input.'};$rows[$file.path]=$file}
foreach($file in $After.files){
if(-not $rows.ContainsKey($file.path)){throw 'Unexpected or duplicate source input.'}
$old=$rows[$file.path];if($old.bytes -ne $file.bytes -or $old.sha256 -cne $file.sha256){throw 'Source input changed.'};$rows.Remove($file.path)
}
if($rows.Count){throw 'Missing source inputs.'}
}
function Assert-BuildEvidence([string]$Gate){
Assert-SelectionEvidence $Gate
$expectedWorkspace=(Read-NativeJson (Join-Path $Gate 'expected-inputs.json')).workspace
$expectedTarget='C:\Users\User\Documents\Git\ARCADIA-Studio\target'
$initial=Get-Content -Raw -LiteralPath (Join-Path $Gate 'inputs-complete-before.json')|ConvertFrom-Json
Assert-InputPair (Read-NativeJson (Join-Path $Gate 'expected-inputs.json')) $initial
Assert-StrictPreflightEvidence $Gate $initial
$previous='strict-preflight'
foreach($stage in @('list','focused','all','clippy','build')){
$receiptPath=Join-Path $Gate ($stage+'-receipt.json')
$r=Get-Content -Raw -LiteralPath $receiptPath|ConvertFrom-Json
if($r.stage -cne $stage -or $r.base -cne $nativePin -or $r.workspace -ine $expectedWorkspace -or $r.target -ine $expectedTarget -or $r.cargoExitCode -ne 0 -or -not $r.selectionValid -or -not $r.inputsUnchanged -or -not $r.testBinaryBindingValid -or $null -ne $r.postflightFailure){throw "Successful unchanged current-pin stage required: $stage"}
if($stage -eq 'clippy' -and $r.command -cne 'cargo clippy -p oa-desktop -p oa-server --all-targets --locked --offline -- -D warnings'){throw 'Combined desktop/server strict acceptance required.'}
foreach($binding in $r.boundScriptAndInputHashes.PSObject.Properties){if((Get-NativeHash (Join-Path $Gate $binding.Name)) -cne $binding.Value){throw "Gate binding changed: $($binding.Name)"}}
if((Get-NativeHash (Join-Path $Gate ($stage+'.log'))) -cne $r.rawLogSha256){throw 'Gate raw log changed.'}
if((Get-NativeHash (Join-Path $Gate 'toolchain-versions.json')) -cne $r.toolchainVersionsSha256){throw 'Toolchain receipt changed.'}
if($null -ne $previous){if($r.priorStage.stage -cne $previous -or $r.priorStage.receiptSha256 -cne (Get-NativeHash (Join-Path $Gate ($previous+'-receipt.json'))) -or $r.priorStage.rawLogSha256 -cne (Get-NativeHash (Join-Path $Gate ($previous+'.log')))){throw 'Broken sequential gate chain.'}}
$beforePath=Join-Path $Gate ('inputs-complete-'+$stage+'-before.json');$afterPath=Join-Path $Gate ('inputs-complete-'+$stage+'-after.json')
if((Get-NativeHash $beforePath) -cne $r.beforeCaptureSha256 -or (Get-NativeHash $afterPath) -cne $r.afterCaptureSha256){throw 'Gate capture changed.'}
$before=Get-Content -Raw -LiteralPath $beforePath|ConvertFrom-Json;$after=Get-Content -Raw -LiteralPath $afterPath|ConvertFrom-Json
Assert-InputPair $initial $before;Assert-InputPair $before $after
$previous=$stage
}
if($null -eq $r.binary -or $r.binary.bytes -le 0 -or $r.binary.sha256 -notmatch '^[0-9a-f]{64}$'){throw 'Successful build must bind an actual binary.'}
return $r
}
function Read-NativeJson([string]$Path) { Get-Content -Raw -LiteralPath $Path | ConvertFrom-Json }
function Assert-NativeNames($Expected,$Actual) {
$a=@($Expected);$b=@($Actual)
if($a.Count -ne $b.Count -or @($a|Sort-Object -Unique).Count -ne $a.Count -or @($b|Sort-Object -Unique).Count -ne $b.Count -or @(Compare-Object $a $b -CaseSensitive).Count){throw 'Exact unique membership differs.'}
}
function Assert-NativeBinaries($Expected,$Actual) {
$a=@($Expected);$b=@($Actual)
if($a.Count -ne 1 -or $b.Count -ne 1 -or $a[0].path -ine $b[0].path -or $a[0].bytes -le 0 -or $a[0].bytes -ne $b[0].bytes -or $a[0].sha256 -cne $b[0].sha256 -or $a[0].sha256 -notmatch '^[0-9a-f]{64}$'){throw 'Exact test executable continuity differs.'}
}
function Assert-SelectionEvidence([string]$Gate) {
if($nativePin -cne 'b10b28cefd1d0794073ba241a0c8de9a83e85f68' -or $nativeInputCount -ne 612){throw 'Exact reviewed b10 source and612 inputs required.'}
$selection=Read-NativeJson (Join-Path $Gate 'expected-tests.json')
if($selection.source_commit -cne $nativePin -or $selection.expected_count -ne 301 -or $selection.expected_desktop_count -ne 1095 -or $selection.expected_filtered -ne 794 -or @($selection.tests).Count -ne 301 -or @($selection.desktop_tests).Count -ne 1095 -or @($selection.ignored_tests).Count -ne 4){throw 'Wrong 301/1095/4 selection contract.'}
$inputs=Read-NativeJson (Join-Path $Gate 'expected-inputs.json')
if($inputs.base -cne $nativePin -or $inputs.count -ne $nativeInputCount){throw 'Wrong pinned source contract'}
Assert-InputPair $inputs $inputs
$previous=$null
foreach($stage in @('list','focused','all','clippy','build')) {
$r=Read-NativeJson (Join-Path $Gate ($stage+'-receipt.json'))
if($null -ne $previous){Assert-NativeBinaries $previous.testExecutables $r.testExecutablesBefore;Assert-NativeBinaries $r.testExecutablesBefore $r.testExecutables
if($r.priorStage.rawLogSha256 -cne $previous.rawLogSha256){throw 'Prior raw-log chain differs.'}
} else {Assert-NativeBinaries $r.testExecutables $r.testExecutables}
if($stage -eq 'focused'){Assert-BatchedFocusedEvidence $Gate $r $selection;$previous=$r;continue}
if($stage -eq 'list') {
Assert-NativeNames $selection.desktop_tests $r.listedTests
if(($r.listSummaries|Measure-Object -Property tests -Sum).Sum -ne 1095 -or ($r.listSummaries|Measure-Object -Property benchmarks -Sum).Sum -ne 0){throw 'Wrong actual listing count.'}
}
if($stage -in @('focused','all')) {
$expected=if($stage -eq 'focused'){$selection.tests}else{$selection.desktop_tests}
Assert-NativeNames $expected @($r.executedTests|ForEach-Object {$_.name})
$ignored=@($r.executedTests|Where-Object {$_.result -eq 'ignored'}|ForEach-Object {$_.name})
if(@($r.executedTests|Where-Object {$_.result -notin @('ok','ignored')}).Count -or @($r.testResultSummaries).Count -ne 1){throw 'Unexpected actual test result.'}
$s=$r.testResultSummaries[0]
$pass=if($stage -eq 'focused'){301}else{1091};$ignore=if($stage -eq 'focused'){0}else{4};$filtered=if($stage -eq 'focused'){794}else{0}
if($s.status -cne 'ok' -or $s.passed -ne $pass -or $s.failed -ne 0 -or $s.ignored -ne $ignore -or $s.measured -ne 0 -or $s.filtered -ne $filtered -or $ignored.Count -ne $ignore){throw 'Wrong actual pass/ignored/filtered totals.'}
if($stage -eq 'all'){Assert-NativeNames $selection.ignored_tests $ignored}
}
$previous=$r
}
}
function Assert-CurrentNativeSource([string]$Gate) {
$expected=Read-NativeJson (Join-Path $Gate 'expected-inputs.json')
$enumeration=Read-NativeJson (Join-Path $Gate 'enumeration.json')
$external=Read-NativeJson (Join-Path $Gate 'external-inputs.json')
if($expected.base -cne $nativePin -or $enumeration.base -cne $nativePin -or $external.base -cne $nativePin){throw 'Wrong source-input pin.'}
Assert-InputPair $expected $expected
Push-Location -LiteralPath $expected.workspace
try {
$head=git rev-parse HEAD
if($LASTEXITCODE -ne 0 -or $head -cne $nativePin){throw 'Source HEAD differs.'}
$status=@(git status --porcelain)
if($LASTEXITCODE -ne 0 -or $status.Count){throw 'Source worktree is not frozen and clean.'}
$roots=@($enumeration.rootInputs);$scopes=@($enumeration.scopes)
$tracked=@(git ls-files -- @roots @scopes)
if($LASTEXITCODE -ne 0){throw 'Source Git enumeration failed.'}
$present=@(rg --files @scopes)
if($LASTEXITCODE -ne 0){throw 'Source filesystem enumeration failed.'}
$actual=@(($present+$roots)|ForEach-Object {$_.Replace('\','/')}|Sort-Object -Unique)
Assert-NativeNames @($enumeration.gitPaths) @($tracked|ForEach-Object {$_.Replace('\','/')})
Assert-NativeNames @($expected.files|ForEach-Object {$_.path}) $actual
Assert-NativeFiles $expected.workspace $expected.files
foreach($f in $external.files) {
$exists=Test-Path -LiteralPath $f.path
if($exists -ne $f.present){throw "External config presence changed: $($f.path)"}
if($exists -and ((Get-Item -LiteralPath $f.path).Length -ne $f.bytes -or (Get-NativeHash $f.path) -cne $f.sha256)){throw "External input changed: $($f.path)"}
}
} finally {Pop-Location}
}
function Assert-BatchedFocusedEvidence([string]$Gate,$Receipt,$Selection) {
if($Receipt.executionMode -cne 'bounded-exact-batches-v1'){throw 'Explicit bounded focused recovery required'}
$planPath=Join-Path $Gate 'batches.json';$plan=Read-NativeJson $planPath
if((Get-NativeHash $planPath) -cne $Receipt.batchPlanSha256 -or $plan.schema -cne 'scenario_details_exact_batches_v1' -or $plan.source_commit -cne $nativePin -or $plan.focused_count -ne 301 -or $plan.desktop_count -ne 1095 -or $plan.max_command_characters -ne 12000){throw 'Wrong focused batch plan/list binding'}
if(@($plan.batches).Count -ne 3 -or @($Receipt.batchReceipts).Count -ne @($plan.batches).Count -or @($Receipt.testResultSummaries).Count -ne @($plan.batches).Count){throw 'Missing focused batch receipts or actual summaries'}
$union=@();$previous=$null;$raw=[Collections.Generic.List[byte]]::new()
$initial=Read-NativeJson (Join-Path $Gate 'inputs-complete-before.json')
for($i=0;$i -lt @($plan.batches).Count;$i++){
$batch=$plan.batches[$i];$binding=$Receipt.batchReceipts[$i];$name=('focused-batch{0:d2}' -f ($i+1))
if(@($batch.tests).Count -ne @(107,101,93)[$i]){throw 'Reviewed 107/101/93 partition required'}
if($batch.id -cne $name -or $binding.stage -cne $name){throw 'Batch sequence differs'}
$path=Join-Path $Gate ($name+'-receipt.json');$log=Join-Path $Gate ($name+'.log');$r=Read-NativeJson $path
if((Get-NativeHash $path) -cne $binding.receiptSha256 -or (Get-NativeHash $log) -cne $binding.rawLogSha256 -or $r.rawLogSha256 -cne $binding.rawLogSha256){throw 'Batch receipt or log changed'}
if($r.schema -cne 'scenario_details_exact_batch_v1' -or $r.stage -cne $name -or $r.base -cne $nativePin -or $r.workspace -ine $Receipt.workspace -or $r.target -ine $Receipt.target -or $r.cargoExitCode -ne 0 -or -not $r.selectionValid -or -not $r.inputsUnchanged -or -not $r.testBinaryBindingValid -or $null -ne $r.postflightFailure -or $r.listReceiptSha256 -cne (Get-NativeHash (Join-Path $Gate 'list-receipt.json')) -or $r.batchPlanSha256 -cne $Receipt.batchPlanSha256){throw 'Batch did not pass with exact source/binary bindings'}
if(($null -eq $previous) -ne ($null -eq $r.priorBatch)){throw 'Wrong first/prior batch binding'}
if($null -ne $previous -and ($r.priorBatch.stage -cne $previous.stage -or $r.priorBatch.receiptSha256 -cne $previous.receiptSha256 -or $r.priorBatch.rawLogSha256 -cne $previous.rawLogSha256)){throw 'Broken batch chain'}
$args=@('test','-p','oa-desktop','--bin','arcadia-studio','--locked','--offline','--','--exact')+@($batch.tests)+@('--test-threads=1')
if(Compare-Object $args @($r.arguments) -SyncWindow 0 -CaseSensitive){throw 'Actual batch arguments differ'}
$length=0;foreach($arg in @($plan.cargo_path)+$args){$length+=$arg.Length+3}
if($length -gt 12000 -or $length -ne $batch.command_characters -or $r.commandCharacters -ne $length){throw 'Batch command exceeds reviewed bound'}
Assert-NativeNames @($batch.tests) @($r.executedTests|ForEach-Object {$_.name})
if(@($r.executedTests|Where-Object {$_.result -cne 'ok'}).Count -or @($r.testResultSummaries).Count -ne 1){throw 'Batch contains failed/ignored outcomes'}
$s=$r.testResultSummaries[0];$n=@($batch.tests).Count
if($n -le 0 -or $s.status -cne 'ok' -or $s.passed -ne $n -or $s.failed -ne 0 -or $s.ignored -ne 0 -or $s.measured -ne 0 -or $s.filtered -ne (1095-$n)){throw 'Wrong per-batch actual totals'}
foreach($field in @('status','passed','failed','ignored','measured','filtered')){if($Receipt.testResultSummaries[$i].$field -cne $s.$field){throw 'Aggregate summary differs from actual batch'}}
foreach($side in @('before','after')){$capture=Join-Path $Gate ('inputs-complete-'+$name+'-'+$side+'.json');$property=$side+'CaptureSha256';if((Get-NativeHash $capture) -cne $r.$property){throw 'Batch capture changed'};Assert-InputPair $initial (Read-NativeJson $capture)}
foreach($bindingInput in $r.boundScriptAndInputHashes.PSObject.Properties){if((Get-NativeHash (Join-Path $Gate $bindingInput.Name)) -cne $bindingInput.Value){throw 'Batch script/input binding changed'}}
if($r.toolchainVersionsSha256 -cne $Receipt.toolchainVersionsSha256){throw 'Batch toolchain binding differs'}
Assert-NativeBinaries $Receipt.testExecutablesBefore $r.testExecutablesBefore
Assert-NativeBinaries $r.testExecutablesBefore $r.testExecutables
Assert-NativeBinaries $r.testExecutables $Receipt.testExecutables
$union+=@($r.executedTests|ForEach-Object {$_.name});$raw.AddRange([IO.File]::ReadAllBytes($log));$previous=$binding
}
Assert-NativeNames $Selection.tests $union
Assert-NativeNames $union @($Receipt.executedTests|ForEach-Object {$_.name})
if(@($Receipt.executedTests|Where-Object {$_.result -cne 'ok'}).Count -or @($Receipt.ignoredTests).Count){throw 'Aggregate contains nonpassing tests'}
$combined=[Convert]::ToHexString([Security.Cryptography.SHA256]::HashData($raw.ToArray())).ToLowerInvariant()
if($combined -cne $Receipt.rawLogSha256){throw 'Focused raw log is not the exact batch concatenation'}
}
function Assert-StrictPreflightEvidence([string]$Gate,$Initial) {
$r=Read-NativeJson (Join-Path $Gate 'strict-preflight-receipt.json')
$expected=Read-NativeJson (Join-Path $Gate 'expected-inputs.json')
if($r.schema -cne 'scenario_strict_preflight_v1' -or $r.stage -cne 'strict-preflight' -or $r.base -cne $nativePin -or $r.workspace -ine $expected.workspace -or $r.target -ine 'C:\Users\User\Documents\Git\ARCADIA-Studio\target' -or $r.cargoExitCode -ne 0 -or -not $r.passed -or -not $r.inputsUnchanged -or $null -ne $r.postflightFailure){throw 'Successful exact-pin strict preflight required'}
if($r.command -cne 'cargo clippy -p oa-desktop -p oa-server --all-targets --locked --offline -- -D warnings'){throw 'Wrong strict preflight command'}
if((Get-NativeHash (Join-Path $Gate 'run.ps1')) -cne '9f3540a6984858448ad1f9bcf6e3326b6ec2b4b3ee897189876c56ebeaaea6cc' -or (Get-NativeHash (Join-Path $Gate 'strict-preflight.ps1')) -cne '152621fa4efe0a96adbeea43c4a08be21a63f5d4982846a9ad46de52ddbc725f'){throw 'Reviewed regular/preflight recipe differs'}
foreach($binding in $r.boundScriptAndInputHashes.PSObject.Properties){if((Get-NativeHash (Join-Path $Gate $binding.Name)) -cne $binding.Value){throw 'Preflight input/recipe binding changed'}}
if((Get-NativeHash (Join-Path $Gate 'strict-preflight.log')) -cne $r.rawLogSha256 -or (Get-NativeHash (Join-Path $Gate 'toolchain-versions.json')) -cne $r.toolchainVersionsSha256){throw 'Preflight raw output/toolchain record changed'}
$versions=Read-NativeJson (Join-Path $Gate 'toolchain-versions.json')
if($versions.base -cne $nativePin -or $versions.externalEnvironmentPath -ine $r.externalEnvironmentPath -or $versions.externalEnvironmentSha256 -cne $r.externalEnvironmentSha256){throw 'Preflight environment binding differs'}
foreach($side in @('before','after')){
$capture=Join-Path $Gate ('inputs-complete-strict-preflight-'+$side+'.json');$field=$side+'CaptureSha256'
if((Get-NativeHash $capture) -cne $r.$field){throw 'Preflight capture changed'}
Assert-InputPair $Initial (Read-NativeJson $capture)
}
}
@@ -0,0 +1,3 @@
# Open dialog targeting failure
Run6 same b10 package PID1008 shell73815 live, started2026-09-13T15:43:20.8674732Z. Main window Untitled mission. Clicked top Open. Main capture showed Open dialog with working directory files incident-workspace.arcadia and service-details.arcadia, empty File name with caret. list_windows returned separate Open id4457308. get_window/get_window_state combined failed twice after fresh selection with exact error foreground window did not report a process id. Main window capture remained available. One type_text through main window sent the exact service path, but brought main window foreground and did not establish file selection; no Return sent. Refreshed list still had Open. Rehydrating returned Open then yielded a different returned id1149436542; separate activate/capture failed with same error. No service load or edit claimed. No kill/restart. Shell73815 polled live. A fresh Computer Use kernel recovery may be attempted separately.
@@ -0,0 +1,5 @@
# Recovery of interrupted Run6
At resume2026-09-22, no arcadia-studio process was running. Existing bound normal-close.json records PID1008 exit0 on2026-09-14T10:18:22.2600199Z with empty logs, unchanged immutable inputs, incident working file6217/b746965f and original service file6132/0e432522. Root did not observe the cause of that exit and does not call it a successfully completed native service trial.
Prior to interruption, Open dialog targeting initially failed with foreground-process-id errors. A fresh Computer Use JS kernel and the actual list_windows-returned dialog object recovered capture. A list-row double-click opened Incident unexpectedly, which was detected by the title. A later literal full path containing forward slashes produced Windows filename-invalid feedback; no service edit was made. These failed automation/input attempts remain part of the record. Run7 opened the literal service-details.arcadia filename from the already observed working directory successfully; no OS/network/security changes were needed.
@@ -0,0 +1,38 @@
{
"working_files_before": [
{
"path": "working/incident-workspace.arcadia",
"bytes": 6217,
"sha256": "b746965f034a4befb449d17e568dd5ae0b2ee81b3c34f82883e48e0c54833b25"
},
{
"path": "working/service-details.arcadia",
"bytes": 6132,
"sha256": "0e4325222a451b9d4e503974ce86bb95a9931edd0d2d65b8cd9db8d0f99d69e5"
}
],
"fixture_entries": [
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\working\\incident-workspace.arcadia",
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\working\\service-details.arcadia"
],
"run": 6,
"previous_close_sha256": "09346d66a0b8651858742dbb355a8fc05003dbcd83ae93a98497e87393cb39e4",
"working_file_before": {
"path": "working/incident-workspace.arcadia",
"bytes": 6217,
"sha256": "b746965f034a4befb449d17e568dd5ae0b2ee81b3c34f82883e48e0c54833b25"
},
"source_commit": "b10b28cefd1d0794073ba241a0c8de9a83e85f68",
"manifest_sha256": "ea52ea5a65a119be6892a136c4ff030c8b68c1e56074a345f722456e0f6aca01",
"script_sha256": "e49dd381ee7746ac401abecc7d1ee708924fa6c63ddd3d06c8d34b91e059606e",
"executable": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\package\\arcadia-studio.exe",
"binary_sha256": "7ece85c6012ae0ae75fc56ed3c3aadb8bc116448ad1782be422ef34a629dc3ce",
"localappdata": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\profile",
"working_directory": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\unrelated-cwd",
"child_path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\package;C:\\Windows\\System32;C:\\Windows;C:\\Windows\\System32\\Wbem",
"arguments": [],
"environment_scope": "Child ProcessStartInfo only",
"fixture_entry": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\working\\incident-workspace.arcadia",
"pid": 1008,
"started_utc": "2026-09-13T15:43:20.8674732Z"
}
@@ -0,0 +1,39 @@
{
"run": 6,
"launch_sha256": "6b9df4ad16ed8ca87ea1d69ee59ad9d57ec2f1b21aca3dd983f165ea80a453b8",
"source_commit": "b10b28cefd1d0794073ba241a0c8de9a83e85f68",
"pid": 1008,
"started_utc": "2026-09-13T15:43:20.8674732Z",
"observed_exit_utc": "2026-09-14T10:18:22.2600199Z",
"exit_code": 0,
"immutable_inputs_unchanged": true,
"baseline_files": [
{
"path": "baseline/incident-workspace.arcadia",
"bytes": 6206,
"sha256": "74cd2c1dd5eed7eb19895a752bb8ff9ce93655f7638a5312c96f56218568ebb3"
},
{
"path": "baseline/service-details.arcadia",
"bytes": 6132,
"sha256": "0e4325222a451b9d4e503974ce86bb95a9931edd0d2d65b8cd9db8d0f99d69e5"
}
],
"working_files": [
{
"path": "working/incident-workspace.arcadia",
"bytes": 6217,
"sha256": "b746965f034a4befb449d17e568dd5ae0b2ee81b3c34f82883e48e0c54833b25"
},
{
"path": "working/service-details.arcadia",
"bytes": 6132,
"sha256": "0e4325222a451b9d4e503974ce86bb95a9931edd0d2d65b8cd9db8d0f99d69e5"
}
],
"stdout_bytes": 0,
"stderr_bytes": 0,
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"scope": "Observed bound process exit without forced termination. Close cause and native acceptance require user/root observation; fixture edits are expected and compared separately."
}
@@ -0,0 +1,21 @@
# Native service Details trial, 2026-09-22
Root directly operated the staged b10 Windows GUI through Computer Use. Run 7, PID 4100, started21:44:44Z and closed via Alt+F4 at22:03:39Z; observer recorded exit0 at22:03:53Z, empty stdout/stderr and unchanged immutable inputs. No production source was changed. The incident working file remained the Run4/5 final b746965f hash.
Opened Home > Open model, entered the literal filename service-details.arcadia in the observed working directory, and verified Valve service Details trial. Chose Behavior & scenarios, Review service calls, and explicit Saved Service calls - Details trial (Fit87%). Initial source comparison01 passed against independent approved baseline. Selected Read primary status, Focus canvas > Details > Properties; actual existing-record Properties restored both panels and closed Details. Details also exposed a separate Scenario order list with up/down arrows; no semantic reorder was performed.
Executed five cumulative accepted edits through existing-record Properties, never source rewriting or a creation form:
1. First Call Scope expression changed from quoted primary to quoted secondary. Draft visible; disk still original0e432522 before Apply. Apply once, Save. One model Undo/Save, one Redo/Save.
2. First Reply Primary status response: explicitly removed Status/Return annotation, Apply once, Save. One model Undo/Save, one Redo/Save. This is checkpoint3a.
3. First Call: SetLimit allocation chosen; retained incompatible Scope address explicitly replaced using field picker with Pressure limit/In; expression18.75, all in one draft/Apply. Save, one model Undo/Save, one Redo/Save. Checkpoint3b.
4. Same first Reply: Add value, select compatible Accepted/Return field, expression true, Apply/Save. One model Undo/Save, one Redo/Save. Reply inspector visibly derives SetLimit allocation from first_call and has no independent operation selector. Checkpoint3c.
5. Same first Call Pressure expression18.75 to19.25, Apply/Save. One model Undo/Save, one Redo/Save. Checkpoint3d.
Between1 and3a, exercised the rejection falsifier: selected SetLimit while retaining Scope/quoted secondary and the Reply's existing Status annotation. The field showed a needs-review warning and preserved raw text. Apply rejected with footer `message_value_field: The qualified field must be carried by the exchange, following Value record fields only.` Scroll remained at the top where Apply was clicked. Scrolling back exposed the retained exact raw expression and incompatible address. Explicit Revert restored a clean model; Save checkpoint05 matched accepted1. One further model Undo/Save returned original baseline, and one Redo/Save returned1, demonstrating no intervening accepted history step. No Save was used to apply the invalid draft.
Checkpoint map (independent typed expected Project): 02=1,03=baseline,04=1;05=1,06=baseline,07=1;08=3a,09=1,10=3a;11=3b,12=3a,13=3b;14=3c,15=3b,16=3c;17=3d,18=3c,19=3d. Comparison01 is the pre-edit baseline; comparisons02–19 match these immutable saved files. Each comparison binds the previously reviewed b10 comparator and independent expected JSON catalog. Native footer was observed as Model change undone/redone for every history action. History actions had model/button focus, never an active expression input. Full-project comparisons establish unchanged control pair, Steps, IDs, names, and saved layout; screenshots complement rather than substitute for them.
21 distinct current-state JPEG captures and metadata were explicitly saved. Returned Window title metadata can lag the actual image by one update (for example capture21); actual screenshots show the clean saved title. No Run1 stale-closure helper was used.
Usability findings: payload controls require substantial inspector scrolling; Apply/Revert are above the fold and require scrolling back from values. Wheel scrolling over the multiline Description editor did not scroll the outer inspector; moving to the inspector margin worked. Incompatibility feedback is a small global footer, far from the offending value; raw input remains recoverable but no inline jump to the error was observed. Long operation labels and scenario-message captions truncate in the narrow inspector/canvas. These are friction findings, not failed data-integrity checks. Numeric/type/unit evaluation of expression strings, arbitrary operation migration, deletion, other lifecycle cases, large models, Linux, and remaining incident navigation are outside this trial.
Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

@@ -0,0 +1,16 @@
{
"utc": "2026-09-22T21:46:15.124Z",
"window": {
"app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\package\\arcadia-studio.exe",
"id": 197220,
"title": "Untitled mission — Arcadia Studio"
},
"screenshot": {
"id": "screenshot-0",
"width": 1442,
"height": 932,
"mime": "image/jpeg",
"sha256": "424f0ae28a2180bb6cae49e68a29b32cb0f26a083edc7af2d4a7f71dabc42c0b"
},
"note": "Actual service filename opened from working directory. Correct Valve service Details trial title; all changes saved,21objects5links."
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

@@ -0,0 +1,16 @@
{
"utc": "2026-09-22T21:47:46.669Z",
"window": {
"app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\package\\arcadia-studio.exe",
"id": 197220,
"title": "Valve service Details trial — Arcadia Studio"
},
"screenshot": {
"id": "screenshot-0",
"width": 1442,
"height": 932,
"mime": "image/jpeg",
"sha256": "9f3901d38e93645dcbdc79193e6823729f9e8f47d4c2f6670b41b9ed9711f471"
},
"note": "Selected Read primary status; focused canvas Details exposes Properties and separate semantic Scenario order arrows. No reorder action performed."
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

@@ -0,0 +1,16 @@
{
"utc": "2026-09-22T21:48:32.912Z",
"window": {
"app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\package\\arcadia-studio.exe",
"id": 197220,
"title": "Valve service Details trial — Arcadia Studio"
},
"screenshot": {
"id": "screenshot-0",
"width": 1442,
"height": 932,
"mime": "image/jpeg",
"sha256": "5dea1203cb6842445e8cb24d7a16776841ffd920118011a54022684b99cddde0"
},
"note": "Existing call ReadStatus allocation, Scope In field and literal expression primary in quotes; Properties route restored panels."
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

@@ -0,0 +1,16 @@
{
"utc": "2026-09-22T21:49:17.112Z",
"window": {
"app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\package\\arcadia-studio.exe",
"id": 197220,
"title": "Valve service Details trial * — Arcadia Studio"
},
"screenshot": {
"id": "screenshot-0",
"width": 1442,
"height": 932,
"mime": "image/jpeg",
"sha256": "2dbf7c19bce90af945a8ec79c84cc36882b2232a9a0c9393af2ed21ec8a2bace"
},
"note": "Scope expression changed to quoted secondary; raw draft visible and diagram editing disabled before Apply."
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

@@ -0,0 +1,16 @@
{
"utc": "2026-09-22T21:49:54.406Z",
"window": {
"app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\package\\arcadia-studio.exe",
"id": 197220,
"title": "Valve service Details trial — Arcadia Studio"
},
"screenshot": {
"id": "screenshot-0",
"width": 1442,
"height": 932,
"mime": "image/jpeg",
"sha256": "04077672cf8706ddfdc0f0a405878e58b28d037933e6353fa8e34fd069411791"
},
"note": "Properties applied then Save all. Accepted checkpoint1; not a draft. Next Undo is model history with canvas focus."
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

@@ -0,0 +1,16 @@
{
"utc": "2026-09-22T21:50:25.686Z",
"window": {
"app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\package\\arcadia-studio.exe",
"id": 197220,
"title": "Valve service Details trial * — Arcadia Studio"
},
"screenshot": {
"id": "screenshot-0",
"width": 1442,
"height": 932,
"mime": "image/jpeg",
"sha256": "e996ab92c453ee26172b1a80fc1265cd514a6053f56c53029578470694e28762"
},
"note": "Exactly one Control+Z with canvas/model focus; footer Model change undone."
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

@@ -0,0 +1,16 @@
{
"utc": "2026-09-22T21:51:02.500Z",
"window": {
"app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\package\\arcadia-studio.exe",
"id": 197220,
"title": "Valve service Details trial * — Arcadia Studio"
},
"screenshot": {
"id": "screenshot-0",
"width": 1442,
"height": 932,
"mime": "image/jpeg",
"sha256": "d92a70716657a260c8ecd0d7eaf133f8ea74aeea4baf1a7b5b7cb2e1b839105b"
},
"note": "Exactly one Control+Y; footer Model change redone."
}
@@ -0,0 +1,16 @@
{
"utc": "2026-09-22T21:52:07.904Z",
"window": {
"app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\package\\arcadia-studio.exe",
"id": 197220,
"title": "Valve service Details trial * — Arcadia Studio"
},
"screenshot": {
"id": "screenshot-0",
"width": 1442,
"height": 932,
"mime": "image/jpeg",
"sha256": "fd2ed674194eccdc46e7a7d75fcd52ccff886838f9792c5d4b0933200299c656"
},
"note": "SetLimit draft retains quoted secondary and Scope address with needs-review message; no explicit replacement made. Reply Status remains accepted."
}
@@ -0,0 +1,16 @@
{
"utc": "2026-09-22T21:52:25.614Z",
"window": {
"app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\package\\arcadia-studio.exe",
"id": 197220,
"title": "Valve service Details trial * — Arcadia Studio"
},
"screenshot": {
"id": "screenshot-0",
"width": 1442,
"height": 932,
"mime": "image/jpeg",
"sha256": "29528ee37c1dbf770976dd75e69aebb5ea28a3734df973bef30bc4305dd281e1"
},
"note": "Apply rejected with message_value_field: qualified field must be carried by exchange following Value record fields only. Draft remains; scroll stayed at Apply top, where action was made."
}
@@ -0,0 +1,16 @@
{
"utc": "2026-09-22T21:52:34.543Z",
"window": {
"app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\package\\arcadia-studio.exe",
"id": 197220,
"title": "Valve service Details trial * — Arcadia Studio"
},
"screenshot": {
"id": "screenshot-0",
"width": 1442,
"height": 932,
"mime": "image/jpeg",
"sha256": "36f10e6ea269cf2b5a684d55fec969b20de8afd9250f59fa3d4f688d7299560d"
},
"note": "After rejected Apply, exact quoted secondary expression and Scope needs-review address remain recoverable by scrolling; footer retains error. No source save performed during invalid draft."
}
@@ -0,0 +1,16 @@
{
"utc": "2026-09-22T21:52:49.499Z",
"window": {
"app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\package\\arcadia-studio.exe",
"id": 197220,
"title": "Valve service Details trial — Arcadia Studio"
},
"screenshot": {
"id": "screenshot-0",
"width": 1442,
"height": 932,
"mime": "image/jpeg",
"sha256": "e67c7c1933b71abe4c0dfe8f126fb7a5e88ef2e6f9f2153b84eec00f4d358911"
},
"note": "Property draft reverted; all changes saved. No second accepted edit."
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

@@ -0,0 +1,16 @@
{
"utc": "2026-09-22T21:54:27.336Z",
"window": {
"app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\package\\arcadia-studio.exe",
"id": 197220,
"title": "Valve service Details trial — Arcadia Studio"
},
"screenshot": {
"id": "screenshot-0",
"width": 1442,
"height": 932,
"mime": "image/jpeg",
"sha256": "232b5d8d1d19607c3e3f353cc96a54c5bdc5e5e5d1d123adb6003f02c0749cb1"
},
"note": "Primary status response / first_reply correlates to Read primary status / first_call. Existing ReadStatus Status Return annotation expression READY in quotes."
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

@@ -0,0 +1,16 @@
{
"utc": "2026-09-22T21:55:10.455Z",
"window": {
"app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\package\\arcadia-studio.exe",
"id": 197220,
"title": "Valve service Details trial — Arcadia Studio"
},
"screenshot": {
"id": "screenshot-0",
"width": 1442,
"height": 932,
"mime": "image/jpeg",
"sha256": "6617cf6b1b76aee69877d33be9b2f365cc2bd34334dc140def2129b8523f1923"
},
"note": "Explicit Status row Remove followed by Apply once, Save all; Primary status response remains selected."
}
@@ -0,0 +1,16 @@
{
"utc": "2026-09-22T21:57:36.090Z",
"window": {
"app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\package\\arcadia-studio.exe",
"id": 197220,
"title": "Valve service Details trial * — Arcadia Studio"
},
"screenshot": {
"id": "screenshot-0",
"width": 1442,
"height": 932,
"mime": "image/jpeg",
"sha256": "ecb6761b39f4771d0ff27092cf5e23b7457a37fc729b4584e3f3d0b1c6981a3c"
},
"note": "One pending draft contains SetLimit allocation, explicit Scope replacement by Pressure limit In, expression18.75; correlated Reply Status already removed at3a. No intermediate Apply."
}
@@ -0,0 +1,16 @@
{
"utc": "2026-09-22T21:58:10.177Z",
"window": {
"app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\package\\arcadia-studio.exe",
"id": 197220,
"title": "Valve service Details trial — Arcadia Studio"
},
"screenshot": {
"id": "screenshot-0",
"width": 1442,
"height": 932,
"mime": "image/jpeg",
"sha256": "90c8a7bdf7ccffe474d25a33bc6ec13ce4897998a4ea43c82d5ac7fe5b925e7e"
},
"note": "One Apply accepted combined SetLimit/Pressure18.75. Save all completed."
}
@@ -0,0 +1,16 @@
{
"utc": "2026-09-22T21:59:38.424Z",
"window": {
"app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\package\\arcadia-studio.exe",
"id": 197220,
"title": "Valve service Details trial — Arcadia Studio"
},
"screenshot": {
"id": "screenshot-0",
"width": 1442,
"height": 932,
"mime": "image/jpeg",
"sha256": "dc2e62c27e780cbbf414c862b378f065fdef59518792902f0a2e1339e08d3788"
},
"note": "Reply derives SetLimit allocation from exact first_call; no owned operation selector. Values empty after3a. UUID061 unchanged."
}
@@ -0,0 +1,16 @@
{
"utc": "2026-09-22T22:00:22.168Z",
"window": {
"app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\package\\arcadia-studio.exe",
"id": 197220,
"title": "Valve service Details trial * — Arcadia Studio"
},
"screenshot": {
"id": "screenshot-0",
"width": 1442,
"height": 932,
"mime": "image/jpeg",
"sha256": "b94ac855b00a7ef7b4d34917f85960a570eef7e3d1b2593f95b60858b71db8db"
},
"note": "Explicit Accepted Return field with true expression. Reply derives SetLimit from first_call; no independent operation entered."
}
@@ -0,0 +1,16 @@
{
"utc": "2026-09-22T22:00:54.523Z",
"window": {
"app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\package\\arcadia-studio.exe",
"id": 197220,
"title": "Valve service Details trial — Arcadia Studio"
},
"screenshot": {
"id": "screenshot-0",
"width": 1442,
"height": 932,
"mime": "image/jpeg",
"sha256": "efe1a7dc453883983475ffc1483ae3464d99f7bb9258b5a2ca3d3a9558163f39"
},
"note": "Accepted true applied once and saved for exact correlated first Reply."
}
@@ -0,0 +1,16 @@
{
"utc": "2026-09-22T22:02:25.984Z",
"window": {
"app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\package\\arcadia-studio.exe",
"id": 197220,
"title": "Valve service Details trial * — Arcadia Studio"
},
"screenshot": {
"id": "screenshot-0",
"width": 1442,
"height": 932,
"mime": "image/jpeg",
"sha256": "1602cbd9e8b054283649b3d2c96dc8ed0e8edf4fead684024bc8771a6fae1e69"
},
"note": "Only first Call Pressure limit expression changed18.75→19.25; same SetLimit allocation."
}
@@ -0,0 +1,16 @@
{
"utc": "2026-09-22T22:02:57.421Z",
"window": {
"app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\package\\arcadia-studio.exe",
"id": 197220,
"title": "Valve service Details trial — Arcadia Studio"
},
"screenshot": {
"id": "screenshot-0",
"width": 1442,
"height": 932,
"mime": "image/jpeg",
"sha256": "156bb3b21a6eef2df94aeae8d20b7231860eec261e75688c8da2863d12ffc4cd"
},
"note": "Final first Call Pressure19.25 accepted and saved; diagram retains four messages and two lifelines."
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

@@ -0,0 +1,16 @@
{
"utc": "2026-09-22T22:03:39.416Z",
"window": {
"app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\scenario-validation-native-b10b28c-attempt2-20260913\\package\\arcadia-studio.exe",
"id": 197220,
"title": "Valve service Details trial * — Arcadia Studio"
},
"screenshot": {
"id": "screenshot-0",
"width": 1442,
"height": 932,
"mime": "image/jpeg",
"sha256": "0e559164384e1b28f9f45c7a9da4d25377bd9f9eb7888429c10638c17194ddc4"
},
"note": "Single final Undo/Save and Redo/Save completed; clean accepted final model before normal close."
}
@@ -0,0 +1,113 @@
arcadia 7;
project service_details "Valve service Details trial" id "80300000-0000-4000-8000-000000000000" {
sa_actor console "Operator console" id "80300000-0000-4000-8000-000000000001" {}
sa_system valve "Valve service" id "80300000-0000-4000-8000-000000000002" {}
sa_port caller_port "Console service client" id "80300000-0000-4000-8000-000000000003" {
parent @console; contract { Component { kind Standard; orientation Unset; }; };
}
sa_port provider_port "Valve service endpoint" id "80300000-0000-4000-8000-000000000004" {
parent @valve; contract { Component { kind Standard; orientation Unset; }; };
}
sa_data_type text_value "Service text" id "80300000-0000-4000-8000-000000000010" {
definition { String { minimum_length 0; maximum_length 128; }; };
}
sa_data_type pressure_value "Pressure in bar" id "80300000-0000-4000-8000-000000000011" {
definition { Real { minimum 0; maximum 100; }; }; unit "bar";
}
sa_data_type accepted_value "Acceptance flag" id "80300000-0000-4000-8000-000000000012" { definition Boolean; }
sa_exchange_item read_status "ReadStatus" id "80300000-0000-4000-8000-000000000020" {
kind Information; mechanism Operation;
}
sa_data_field read_scope "Scope" id "80300000-0000-4000-8000-000000000021" {
parent @read_status; type_ref { Named @text_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field read_result "Status" id "80300000-0000-4000-8000-000000000022" {
parent @read_status; type_ref { Named @text_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_exchange_item set_limit "SetLimit" id "80300000-0000-4000-8000-000000000030" {
kind Information; mechanism Operation;
}
sa_data_field limit_value "Pressure limit" id "80300000-0000-4000-8000-000000000031" {
parent @set_limit; type_ref { Named @pressure_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field limit_accepted "Accepted" id "80300000-0000-4000-8000-000000000032" {
parent @set_limit; type_ref { Named @accepted_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_interface valve_api "Valve commands" id "80300000-0000-4000-8000-000000000040" {}
interface_item_allocation read_allocation "ReadStatus allocation" id "80300000-0000-4000-8000-000000000041" {
source @valve_api; target @read_status; order 0;
transmission Synchronous; acquisition Accept;
}
interface_item_allocation limit_allocation "SetLimit allocation" id "80300000-0000-4000-8000-000000000042" {
source @valve_api; target @set_limit; order 1;
transmission Synchronous; acquisition Accept;
}
interface_requirement requires_api "Console requires Valve commands" id "80300000-0000-4000-8000-000000000043" {
source @caller_port; target @valve_api;
}
interface_provision provides_api "Valve provides Valve commands" id "80300000-0000-4000-8000-000000000044" {
source @provider_port; target @valve_api;
}
boundary_exchange service_channel "Valve service channel" id "80300000-0000-4000-8000-000000000045" {
source @caller_port; target @provider_port; oriented false;
items [@read_status, @set_limit];
}
sa_scenario service_review "Review service calls" id "80300000-0000-4000-8000-000000000050" {
viewpoint BoundaryInterface;
steps [@first_call, @first_reply, @control_call, @control_reply];
}
sa_lifeline caller "Console caller" id "80300000-0000-4000-8000-000000000051" {
parent @service_review; represented @console;
}
sa_lifeline provider "Valve provider" id "80300000-0000-4000-8000-000000000052" {
parent @service_review; represented @valve;
}
sa_occurrence first_call "Read primary status" id "80300000-0000-4000-8000-000000000060" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @read_allocation; };
values [{ path []; field @read_scope; expression "\"secondary\""; }];
}; };
}
sa_occurrence first_reply "Primary status response" id "80300000-0000-4000-8000-000000000061" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @first_call;
values [{ path []; field @read_result; expression "\"READY\""; }];
}; };
}
sa_occurrence control_call "Set reserve limit" id "80300000-0000-4000-8000-000000000062" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @limit_allocation; };
values [{ path []; field @limit_value; expression "12.5"; }];
}; };
}
sa_occurrence control_reply "Reserve limit accepted" id "80300000-0000-4000-8000-000000000063" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @control_call;
values [{ path []; field @limit_accepted; expression "true"; }];
}; };
}
diagram service_details_view "Service calls - Details trial" id "80300000-0000-4000-8000-000000000070" {
layer Sa; projection { Scenario { scenario @service_review; }; };
layout { Scenario {
lanes [{ lifeline @caller; x 160; }, { lifeline @provider; x 650; }];
messages [
{ address { references []; occurrence @first_call; }; send_y 160; },
{ address { references []; occurrence @first_reply; }; send_y 270; },
{ address { references []; occurrence @control_call; }; send_y 390; },
{ address { references []; occurrence @control_reply; }; send_y 500; }
];
}; };
}
}
@@ -0,0 +1,6 @@
{
"utc": "2026-09-22T21:49:54.352Z",
"bytes": 6134,
"sha256": "4cafcf18e45703b03b3c997080a0ed7fbbbee02d386062da3c6c00504e7be75e",
"path": "checkpoints/02-after-1.arcadia"
}
@@ -0,0 +1,113 @@
arcadia 7;
project service_details "Valve service Details trial" id "80300000-0000-4000-8000-000000000000" {
sa_actor console "Operator console" id "80300000-0000-4000-8000-000000000001" {}
sa_system valve "Valve service" id "80300000-0000-4000-8000-000000000002" {}
sa_port caller_port "Console service client" id "80300000-0000-4000-8000-000000000003" {
parent @console; contract { Component { kind Standard; orientation Unset; }; };
}
sa_port provider_port "Valve service endpoint" id "80300000-0000-4000-8000-000000000004" {
parent @valve; contract { Component { kind Standard; orientation Unset; }; };
}
sa_data_type text_value "Service text" id "80300000-0000-4000-8000-000000000010" {
definition { String { minimum_length 0; maximum_length 128; }; };
}
sa_data_type pressure_value "Pressure in bar" id "80300000-0000-4000-8000-000000000011" {
definition { Real { minimum 0; maximum 100; }; }; unit "bar";
}
sa_data_type accepted_value "Acceptance flag" id "80300000-0000-4000-8000-000000000012" { definition Boolean; }
sa_exchange_item read_status "ReadStatus" id "80300000-0000-4000-8000-000000000020" {
kind Information; mechanism Operation;
}
sa_data_field read_scope "Scope" id "80300000-0000-4000-8000-000000000021" {
parent @read_status; type_ref { Named @text_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field read_result "Status" id "80300000-0000-4000-8000-000000000022" {
parent @read_status; type_ref { Named @text_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_exchange_item set_limit "SetLimit" id "80300000-0000-4000-8000-000000000030" {
kind Information; mechanism Operation;
}
sa_data_field limit_value "Pressure limit" id "80300000-0000-4000-8000-000000000031" {
parent @set_limit; type_ref { Named @pressure_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field limit_accepted "Accepted" id "80300000-0000-4000-8000-000000000032" {
parent @set_limit; type_ref { Named @accepted_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_interface valve_api "Valve commands" id "80300000-0000-4000-8000-000000000040" {}
interface_item_allocation read_allocation "ReadStatus allocation" id "80300000-0000-4000-8000-000000000041" {
source @valve_api; target @read_status; order 0;
transmission Synchronous; acquisition Accept;
}
interface_item_allocation limit_allocation "SetLimit allocation" id "80300000-0000-4000-8000-000000000042" {
source @valve_api; target @set_limit; order 1;
transmission Synchronous; acquisition Accept;
}
interface_requirement requires_api "Console requires Valve commands" id "80300000-0000-4000-8000-000000000043" {
source @caller_port; target @valve_api;
}
interface_provision provides_api "Valve provides Valve commands" id "80300000-0000-4000-8000-000000000044" {
source @provider_port; target @valve_api;
}
boundary_exchange service_channel "Valve service channel" id "80300000-0000-4000-8000-000000000045" {
source @caller_port; target @provider_port; oriented false;
items [@read_status, @set_limit];
}
sa_scenario service_review "Review service calls" id "80300000-0000-4000-8000-000000000050" {
viewpoint BoundaryInterface;
steps [@first_call, @first_reply, @control_call, @control_reply];
}
sa_lifeline caller "Console caller" id "80300000-0000-4000-8000-000000000051" {
parent @service_review; represented @console;
}
sa_lifeline provider "Valve provider" id "80300000-0000-4000-8000-000000000052" {
parent @service_review; represented @valve;
}
sa_occurrence first_call "Read primary status" id "80300000-0000-4000-8000-000000000060" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @read_allocation; };
values [{ path []; field @read_scope; expression "\"primary\""; }];
}; };
}
sa_occurrence first_reply "Primary status response" id "80300000-0000-4000-8000-000000000061" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @first_call;
values [{ path []; field @read_result; expression "\"READY\""; }];
}; };
}
sa_occurrence control_call "Set reserve limit" id "80300000-0000-4000-8000-000000000062" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @limit_allocation; };
values [{ path []; field @limit_value; expression "12.5"; }];
}; };
}
sa_occurrence control_reply "Reserve limit accepted" id "80300000-0000-4000-8000-000000000063" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @control_call;
values [{ path []; field @limit_accepted; expression "true"; }];
}; };
}
diagram service_details_view "Service calls - Details trial" id "80300000-0000-4000-8000-000000000070" {
layer Sa; projection { Scenario { scenario @service_review; }; };
layout { Scenario {
lanes [{ lifeline @caller; x 160; }, { lifeline @provider; x 650; }];
messages [
{ address { references []; occurrence @first_call; }; send_y 160; },
{ address { references []; occurrence @first_reply; }; send_y 270; },
{ address { references []; occurrence @control_call; }; send_y 390; },
{ address { references []; occurrence @control_reply; }; send_y 500; }
];
}; };
}
}
@@ -0,0 +1,6 @@
{
"utc": "2026-09-22T21:50:33.771Z",
"bytes": 6132,
"sha256": "0e4325222a451b9d4e503974ce86bb95a9931edd0d2d65b8cd9db8d0f99d69e5",
"path": "checkpoints/03-after-1-undo.arcadia"
}
@@ -0,0 +1,113 @@
arcadia 7;
project service_details "Valve service Details trial" id "80300000-0000-4000-8000-000000000000" {
sa_actor console "Operator console" id "80300000-0000-4000-8000-000000000001" {}
sa_system valve "Valve service" id "80300000-0000-4000-8000-000000000002" {}
sa_port caller_port "Console service client" id "80300000-0000-4000-8000-000000000003" {
parent @console; contract { Component { kind Standard; orientation Unset; }; };
}
sa_port provider_port "Valve service endpoint" id "80300000-0000-4000-8000-000000000004" {
parent @valve; contract { Component { kind Standard; orientation Unset; }; };
}
sa_data_type text_value "Service text" id "80300000-0000-4000-8000-000000000010" {
definition { String { minimum_length 0; maximum_length 128; }; };
}
sa_data_type pressure_value "Pressure in bar" id "80300000-0000-4000-8000-000000000011" {
definition { Real { minimum 0; maximum 100; }; }; unit "bar";
}
sa_data_type accepted_value "Acceptance flag" id "80300000-0000-4000-8000-000000000012" { definition Boolean; }
sa_exchange_item read_status "ReadStatus" id "80300000-0000-4000-8000-000000000020" {
kind Information; mechanism Operation;
}
sa_data_field read_scope "Scope" id "80300000-0000-4000-8000-000000000021" {
parent @read_status; type_ref { Named @text_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field read_result "Status" id "80300000-0000-4000-8000-000000000022" {
parent @read_status; type_ref { Named @text_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_exchange_item set_limit "SetLimit" id "80300000-0000-4000-8000-000000000030" {
kind Information; mechanism Operation;
}
sa_data_field limit_value "Pressure limit" id "80300000-0000-4000-8000-000000000031" {
parent @set_limit; type_ref { Named @pressure_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field limit_accepted "Accepted" id "80300000-0000-4000-8000-000000000032" {
parent @set_limit; type_ref { Named @accepted_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_interface valve_api "Valve commands" id "80300000-0000-4000-8000-000000000040" {}
interface_item_allocation read_allocation "ReadStatus allocation" id "80300000-0000-4000-8000-000000000041" {
source @valve_api; target @read_status; order 0;
transmission Synchronous; acquisition Accept;
}
interface_item_allocation limit_allocation "SetLimit allocation" id "80300000-0000-4000-8000-000000000042" {
source @valve_api; target @set_limit; order 1;
transmission Synchronous; acquisition Accept;
}
interface_requirement requires_api "Console requires Valve commands" id "80300000-0000-4000-8000-000000000043" {
source @caller_port; target @valve_api;
}
interface_provision provides_api "Valve provides Valve commands" id "80300000-0000-4000-8000-000000000044" {
source @provider_port; target @valve_api;
}
boundary_exchange service_channel "Valve service channel" id "80300000-0000-4000-8000-000000000045" {
source @caller_port; target @provider_port; oriented false;
items [@read_status, @set_limit];
}
sa_scenario service_review "Review service calls" id "80300000-0000-4000-8000-000000000050" {
viewpoint BoundaryInterface;
steps [@first_call, @first_reply, @control_call, @control_reply];
}
sa_lifeline caller "Console caller" id "80300000-0000-4000-8000-000000000051" {
parent @service_review; represented @console;
}
sa_lifeline provider "Valve provider" id "80300000-0000-4000-8000-000000000052" {
parent @service_review; represented @valve;
}
sa_occurrence first_call "Read primary status" id "80300000-0000-4000-8000-000000000060" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @read_allocation; };
values [{ path []; field @read_scope; expression "\"secondary\""; }];
}; };
}
sa_occurrence first_reply "Primary status response" id "80300000-0000-4000-8000-000000000061" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @first_call;
values [{ path []; field @read_result; expression "\"READY\""; }];
}; };
}
sa_occurrence control_call "Set reserve limit" id "80300000-0000-4000-8000-000000000062" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @limit_allocation; };
values [{ path []; field @limit_value; expression "12.5"; }];
}; };
}
sa_occurrence control_reply "Reserve limit accepted" id "80300000-0000-4000-8000-000000000063" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @control_call;
values [{ path []; field @limit_accepted; expression "true"; }];
}; };
}
diagram service_details_view "Service calls - Details trial" id "80300000-0000-4000-8000-000000000070" {
layer Sa; projection { Scenario { scenario @service_review; }; };
layout { Scenario {
lanes [{ lifeline @caller; x 160; }, { lifeline @provider; x 650; }];
messages [
{ address { references []; occurrence @first_call; }; send_y 160; },
{ address { references []; occurrence @first_reply; }; send_y 270; },
{ address { references []; occurrence @control_call; }; send_y 390; },
{ address { references []; occurrence @control_reply; }; send_y 500; }
];
}; };
}
}
@@ -0,0 +1,6 @@
{
"utc": "2026-09-22T21:51:20.210Z",
"bytes": 6134,
"sha256": "4cafcf18e45703b03b3c997080a0ed7fbbbee02d386062da3c6c00504e7be75e",
"path": "checkpoints/04-after-1-redo.arcadia"
}
@@ -0,0 +1,113 @@
arcadia 7;
project service_details "Valve service Details trial" id "80300000-0000-4000-8000-000000000000" {
sa_actor console "Operator console" id "80300000-0000-4000-8000-000000000001" {}
sa_system valve "Valve service" id "80300000-0000-4000-8000-000000000002" {}
sa_port caller_port "Console service client" id "80300000-0000-4000-8000-000000000003" {
parent @console; contract { Component { kind Standard; orientation Unset; }; };
}
sa_port provider_port "Valve service endpoint" id "80300000-0000-4000-8000-000000000004" {
parent @valve; contract { Component { kind Standard; orientation Unset; }; };
}
sa_data_type text_value "Service text" id "80300000-0000-4000-8000-000000000010" {
definition { String { minimum_length 0; maximum_length 128; }; };
}
sa_data_type pressure_value "Pressure in bar" id "80300000-0000-4000-8000-000000000011" {
definition { Real { minimum 0; maximum 100; }; }; unit "bar";
}
sa_data_type accepted_value "Acceptance flag" id "80300000-0000-4000-8000-000000000012" { definition Boolean; }
sa_exchange_item read_status "ReadStatus" id "80300000-0000-4000-8000-000000000020" {
kind Information; mechanism Operation;
}
sa_data_field read_scope "Scope" id "80300000-0000-4000-8000-000000000021" {
parent @read_status; type_ref { Named @text_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field read_result "Status" id "80300000-0000-4000-8000-000000000022" {
parent @read_status; type_ref { Named @text_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_exchange_item set_limit "SetLimit" id "80300000-0000-4000-8000-000000000030" {
kind Information; mechanism Operation;
}
sa_data_field limit_value "Pressure limit" id "80300000-0000-4000-8000-000000000031" {
parent @set_limit; type_ref { Named @pressure_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field limit_accepted "Accepted" id "80300000-0000-4000-8000-000000000032" {
parent @set_limit; type_ref { Named @accepted_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_interface valve_api "Valve commands" id "80300000-0000-4000-8000-000000000040" {}
interface_item_allocation read_allocation "ReadStatus allocation" id "80300000-0000-4000-8000-000000000041" {
source @valve_api; target @read_status; order 0;
transmission Synchronous; acquisition Accept;
}
interface_item_allocation limit_allocation "SetLimit allocation" id "80300000-0000-4000-8000-000000000042" {
source @valve_api; target @set_limit; order 1;
transmission Synchronous; acquisition Accept;
}
interface_requirement requires_api "Console requires Valve commands" id "80300000-0000-4000-8000-000000000043" {
source @caller_port; target @valve_api;
}
interface_provision provides_api "Valve provides Valve commands" id "80300000-0000-4000-8000-000000000044" {
source @provider_port; target @valve_api;
}
boundary_exchange service_channel "Valve service channel" id "80300000-0000-4000-8000-000000000045" {
source @caller_port; target @provider_port; oriented false;
items [@read_status, @set_limit];
}
sa_scenario service_review "Review service calls" id "80300000-0000-4000-8000-000000000050" {
viewpoint BoundaryInterface;
steps [@first_call, @first_reply, @control_call, @control_reply];
}
sa_lifeline caller "Console caller" id "80300000-0000-4000-8000-000000000051" {
parent @service_review; represented @console;
}
sa_lifeline provider "Valve provider" id "80300000-0000-4000-8000-000000000052" {
parent @service_review; represented @valve;
}
sa_occurrence first_call "Read primary status" id "80300000-0000-4000-8000-000000000060" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @read_allocation; };
values [{ path []; field @read_scope; expression "\"secondary\""; }];
}; };
}
sa_occurrence first_reply "Primary status response" id "80300000-0000-4000-8000-000000000061" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @first_call;
values [{ path []; field @read_result; expression "\"READY\""; }];
}; };
}
sa_occurrence control_call "Set reserve limit" id "80300000-0000-4000-8000-000000000062" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @limit_allocation; };
values [{ path []; field @limit_value; expression "12.5"; }];
}; };
}
sa_occurrence control_reply "Reserve limit accepted" id "80300000-0000-4000-8000-000000000063" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @control_call;
values [{ path []; field @limit_accepted; expression "true"; }];
}; };
}
diagram service_details_view "Service calls - Details trial" id "80300000-0000-4000-8000-000000000070" {
layer Sa; projection { Scenario { scenario @service_review; }; };
layout { Scenario {
lanes [{ lifeline @caller; x 160; }, { lifeline @provider; x 650; }];
messages [
{ address { references []; occurrence @first_call; }; send_y 160; },
{ address { references []; occurrence @first_reply; }; send_y 270; },
{ address { references []; occurrence @control_call; }; send_y 390; },
{ address { references []; occurrence @control_reply; }; send_y 500; }
];
}; };
}
}
@@ -0,0 +1,6 @@
{
"utc": "2026-09-22T21:53:01.261Z",
"bytes": 6134,
"sha256": "4cafcf18e45703b03b3c997080a0ed7fbbbee02d386062da3c6c00504e7be75e",
"path": "checkpoints/05-rejection-reverted.arcadia"
}
@@ -0,0 +1,113 @@
arcadia 7;
project service_details "Valve service Details trial" id "80300000-0000-4000-8000-000000000000" {
sa_actor console "Operator console" id "80300000-0000-4000-8000-000000000001" {}
sa_system valve "Valve service" id "80300000-0000-4000-8000-000000000002" {}
sa_port caller_port "Console service client" id "80300000-0000-4000-8000-000000000003" {
parent @console; contract { Component { kind Standard; orientation Unset; }; };
}
sa_port provider_port "Valve service endpoint" id "80300000-0000-4000-8000-000000000004" {
parent @valve; contract { Component { kind Standard; orientation Unset; }; };
}
sa_data_type text_value "Service text" id "80300000-0000-4000-8000-000000000010" {
definition { String { minimum_length 0; maximum_length 128; }; };
}
sa_data_type pressure_value "Pressure in bar" id "80300000-0000-4000-8000-000000000011" {
definition { Real { minimum 0; maximum 100; }; }; unit "bar";
}
sa_data_type accepted_value "Acceptance flag" id "80300000-0000-4000-8000-000000000012" { definition Boolean; }
sa_exchange_item read_status "ReadStatus" id "80300000-0000-4000-8000-000000000020" {
kind Information; mechanism Operation;
}
sa_data_field read_scope "Scope" id "80300000-0000-4000-8000-000000000021" {
parent @read_status; type_ref { Named @text_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field read_result "Status" id "80300000-0000-4000-8000-000000000022" {
parent @read_status; type_ref { Named @text_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_exchange_item set_limit "SetLimit" id "80300000-0000-4000-8000-000000000030" {
kind Information; mechanism Operation;
}
sa_data_field limit_value "Pressure limit" id "80300000-0000-4000-8000-000000000031" {
parent @set_limit; type_ref { Named @pressure_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field limit_accepted "Accepted" id "80300000-0000-4000-8000-000000000032" {
parent @set_limit; type_ref { Named @accepted_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_interface valve_api "Valve commands" id "80300000-0000-4000-8000-000000000040" {}
interface_item_allocation read_allocation "ReadStatus allocation" id "80300000-0000-4000-8000-000000000041" {
source @valve_api; target @read_status; order 0;
transmission Synchronous; acquisition Accept;
}
interface_item_allocation limit_allocation "SetLimit allocation" id "80300000-0000-4000-8000-000000000042" {
source @valve_api; target @set_limit; order 1;
transmission Synchronous; acquisition Accept;
}
interface_requirement requires_api "Console requires Valve commands" id "80300000-0000-4000-8000-000000000043" {
source @caller_port; target @valve_api;
}
interface_provision provides_api "Valve provides Valve commands" id "80300000-0000-4000-8000-000000000044" {
source @provider_port; target @valve_api;
}
boundary_exchange service_channel "Valve service channel" id "80300000-0000-4000-8000-000000000045" {
source @caller_port; target @provider_port; oriented false;
items [@read_status, @set_limit];
}
sa_scenario service_review "Review service calls" id "80300000-0000-4000-8000-000000000050" {
viewpoint BoundaryInterface;
steps [@first_call, @first_reply, @control_call, @control_reply];
}
sa_lifeline caller "Console caller" id "80300000-0000-4000-8000-000000000051" {
parent @service_review; represented @console;
}
sa_lifeline provider "Valve provider" id "80300000-0000-4000-8000-000000000052" {
parent @service_review; represented @valve;
}
sa_occurrence first_call "Read primary status" id "80300000-0000-4000-8000-000000000060" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @read_allocation; };
values [{ path []; field @read_scope; expression "\"primary\""; }];
}; };
}
sa_occurrence first_reply "Primary status response" id "80300000-0000-4000-8000-000000000061" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @first_call;
values [{ path []; field @read_result; expression "\"READY\""; }];
}; };
}
sa_occurrence control_call "Set reserve limit" id "80300000-0000-4000-8000-000000000062" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @limit_allocation; };
values [{ path []; field @limit_value; expression "12.5"; }];
}; };
}
sa_occurrence control_reply "Reserve limit accepted" id "80300000-0000-4000-8000-000000000063" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @control_call;
values [{ path []; field @limit_accepted; expression "true"; }];
}; };
}
diagram service_details_view "Service calls - Details trial" id "80300000-0000-4000-8000-000000000070" {
layer Sa; projection { Scenario { scenario @service_review; }; };
layout { Scenario {
lanes [{ lifeline @caller; x 160; }, { lifeline @provider; x 650; }];
messages [
{ address { references []; occurrence @first_call; }; send_y 160; },
{ address { references []; occurrence @first_reply; }; send_y 270; },
{ address { references []; occurrence @control_call; }; send_y 390; },
{ address { references []; occurrence @control_reply; }; send_y 500; }
];
}; };
}
}
@@ -0,0 +1,6 @@
{
"utc": "2026-09-22T21:53:15.448Z",
"bytes": 6132,
"sha256": "0e4325222a451b9d4e503974ce86bb95a9931edd0d2d65b8cd9db8d0f99d69e5",
"path": "checkpoints/06-rejection-history-undo.arcadia"
}
@@ -0,0 +1,113 @@
arcadia 7;
project service_details "Valve service Details trial" id "80300000-0000-4000-8000-000000000000" {
sa_actor console "Operator console" id "80300000-0000-4000-8000-000000000001" {}
sa_system valve "Valve service" id "80300000-0000-4000-8000-000000000002" {}
sa_port caller_port "Console service client" id "80300000-0000-4000-8000-000000000003" {
parent @console; contract { Component { kind Standard; orientation Unset; }; };
}
sa_port provider_port "Valve service endpoint" id "80300000-0000-4000-8000-000000000004" {
parent @valve; contract { Component { kind Standard; orientation Unset; }; };
}
sa_data_type text_value "Service text" id "80300000-0000-4000-8000-000000000010" {
definition { String { minimum_length 0; maximum_length 128; }; };
}
sa_data_type pressure_value "Pressure in bar" id "80300000-0000-4000-8000-000000000011" {
definition { Real { minimum 0; maximum 100; }; }; unit "bar";
}
sa_data_type accepted_value "Acceptance flag" id "80300000-0000-4000-8000-000000000012" { definition Boolean; }
sa_exchange_item read_status "ReadStatus" id "80300000-0000-4000-8000-000000000020" {
kind Information; mechanism Operation;
}
sa_data_field read_scope "Scope" id "80300000-0000-4000-8000-000000000021" {
parent @read_status; type_ref { Named @text_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field read_result "Status" id "80300000-0000-4000-8000-000000000022" {
parent @read_status; type_ref { Named @text_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_exchange_item set_limit "SetLimit" id "80300000-0000-4000-8000-000000000030" {
kind Information; mechanism Operation;
}
sa_data_field limit_value "Pressure limit" id "80300000-0000-4000-8000-000000000031" {
parent @set_limit; type_ref { Named @pressure_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field limit_accepted "Accepted" id "80300000-0000-4000-8000-000000000032" {
parent @set_limit; type_ref { Named @accepted_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_interface valve_api "Valve commands" id "80300000-0000-4000-8000-000000000040" {}
interface_item_allocation read_allocation "ReadStatus allocation" id "80300000-0000-4000-8000-000000000041" {
source @valve_api; target @read_status; order 0;
transmission Synchronous; acquisition Accept;
}
interface_item_allocation limit_allocation "SetLimit allocation" id "80300000-0000-4000-8000-000000000042" {
source @valve_api; target @set_limit; order 1;
transmission Synchronous; acquisition Accept;
}
interface_requirement requires_api "Console requires Valve commands" id "80300000-0000-4000-8000-000000000043" {
source @caller_port; target @valve_api;
}
interface_provision provides_api "Valve provides Valve commands" id "80300000-0000-4000-8000-000000000044" {
source @provider_port; target @valve_api;
}
boundary_exchange service_channel "Valve service channel" id "80300000-0000-4000-8000-000000000045" {
source @caller_port; target @provider_port; oriented false;
items [@read_status, @set_limit];
}
sa_scenario service_review "Review service calls" id "80300000-0000-4000-8000-000000000050" {
viewpoint BoundaryInterface;
steps [@first_call, @first_reply, @control_call, @control_reply];
}
sa_lifeline caller "Console caller" id "80300000-0000-4000-8000-000000000051" {
parent @service_review; represented @console;
}
sa_lifeline provider "Valve provider" id "80300000-0000-4000-8000-000000000052" {
parent @service_review; represented @valve;
}
sa_occurrence first_call "Read primary status" id "80300000-0000-4000-8000-000000000060" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @read_allocation; };
values [{ path []; field @read_scope; expression "\"secondary\""; }];
}; };
}
sa_occurrence first_reply "Primary status response" id "80300000-0000-4000-8000-000000000061" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @first_call;
values [{ path []; field @read_result; expression "\"READY\""; }];
}; };
}
sa_occurrence control_call "Set reserve limit" id "80300000-0000-4000-8000-000000000062" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @limit_allocation; };
values [{ path []; field @limit_value; expression "12.5"; }];
}; };
}
sa_occurrence control_reply "Reserve limit accepted" id "80300000-0000-4000-8000-000000000063" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @control_call;
values [{ path []; field @limit_accepted; expression "true"; }];
}; };
}
diagram service_details_view "Service calls - Details trial" id "80300000-0000-4000-8000-000000000070" {
layer Sa; projection { Scenario { scenario @service_review; }; };
layout { Scenario {
lanes [{ lifeline @caller; x 160; }, { lifeline @provider; x 650; }];
messages [
{ address { references []; occurrence @first_call; }; send_y 160; },
{ address { references []; occurrence @first_reply; }; send_y 270; },
{ address { references []; occurrence @control_call; }; send_y 390; },
{ address { references []; occurrence @control_reply; }; send_y 500; }
];
}; };
}
}
@@ -0,0 +1,6 @@
{
"utc": "2026-09-22T21:53:37.298Z",
"bytes": 6134,
"sha256": "4cafcf18e45703b03b3c997080a0ed7fbbbee02d386062da3c6c00504e7be75e",
"path": "checkpoints/07-rejection-history-redo.arcadia"
}
@@ -0,0 +1,113 @@
arcadia 7;
project service_details "Valve service Details trial" id "80300000-0000-4000-8000-000000000000" {
sa_actor console "Operator console" id "80300000-0000-4000-8000-000000000001" {}
sa_system valve "Valve service" id "80300000-0000-4000-8000-000000000002" {}
sa_port caller_port "Console service client" id "80300000-0000-4000-8000-000000000003" {
parent @console; contract { Component { kind Standard; orientation Unset; }; };
}
sa_port provider_port "Valve service endpoint" id "80300000-0000-4000-8000-000000000004" {
parent @valve; contract { Component { kind Standard; orientation Unset; }; };
}
sa_data_type text_value "Service text" id "80300000-0000-4000-8000-000000000010" {
definition { String { minimum_length 0; maximum_length 128; }; };
}
sa_data_type pressure_value "Pressure in bar" id "80300000-0000-4000-8000-000000000011" {
definition { Real { minimum 0; maximum 100; }; }; unit "bar";
}
sa_data_type accepted_value "Acceptance flag" id "80300000-0000-4000-8000-000000000012" { definition Boolean; }
sa_exchange_item read_status "ReadStatus" id "80300000-0000-4000-8000-000000000020" {
kind Information; mechanism Operation;
}
sa_data_field read_scope "Scope" id "80300000-0000-4000-8000-000000000021" {
parent @read_status; type_ref { Named @text_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field read_result "Status" id "80300000-0000-4000-8000-000000000022" {
parent @read_status; type_ref { Named @text_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_exchange_item set_limit "SetLimit" id "80300000-0000-4000-8000-000000000030" {
kind Information; mechanism Operation;
}
sa_data_field limit_value "Pressure limit" id "80300000-0000-4000-8000-000000000031" {
parent @set_limit; type_ref { Named @pressure_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field limit_accepted "Accepted" id "80300000-0000-4000-8000-000000000032" {
parent @set_limit; type_ref { Named @accepted_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_interface valve_api "Valve commands" id "80300000-0000-4000-8000-000000000040" {}
interface_item_allocation read_allocation "ReadStatus allocation" id "80300000-0000-4000-8000-000000000041" {
source @valve_api; target @read_status; order 0;
transmission Synchronous; acquisition Accept;
}
interface_item_allocation limit_allocation "SetLimit allocation" id "80300000-0000-4000-8000-000000000042" {
source @valve_api; target @set_limit; order 1;
transmission Synchronous; acquisition Accept;
}
interface_requirement requires_api "Console requires Valve commands" id "80300000-0000-4000-8000-000000000043" {
source @caller_port; target @valve_api;
}
interface_provision provides_api "Valve provides Valve commands" id "80300000-0000-4000-8000-000000000044" {
source @provider_port; target @valve_api;
}
boundary_exchange service_channel "Valve service channel" id "80300000-0000-4000-8000-000000000045" {
source @caller_port; target @provider_port; oriented false;
items [@read_status, @set_limit];
}
sa_scenario service_review "Review service calls" id "80300000-0000-4000-8000-000000000050" {
viewpoint BoundaryInterface;
steps [@first_call, @first_reply, @control_call, @control_reply];
}
sa_lifeline caller "Console caller" id "80300000-0000-4000-8000-000000000051" {
parent @service_review; represented @console;
}
sa_lifeline provider "Valve provider" id "80300000-0000-4000-8000-000000000052" {
parent @service_review; represented @valve;
}
sa_occurrence first_call "Read primary status" id "80300000-0000-4000-8000-000000000060" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @read_allocation; };
values [{ path []; field @read_scope; expression "\"secondary\""; }];
}; };
}
sa_occurrence first_reply "Primary status response" id "80300000-0000-4000-8000-000000000061" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @first_call;
values [ ];
}; };
}
sa_occurrence control_call "Set reserve limit" id "80300000-0000-4000-8000-000000000062" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @limit_allocation; };
values [{ path []; field @limit_value; expression "12.5"; }];
}; };
}
sa_occurrence control_reply "Reserve limit accepted" id "80300000-0000-4000-8000-000000000063" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @control_call;
values [{ path []; field @limit_accepted; expression "true"; }];
}; };
}
diagram service_details_view "Service calls - Details trial" id "80300000-0000-4000-8000-000000000070" {
layer Sa; projection { Scenario { scenario @service_review; }; };
layout { Scenario {
lanes [{ lifeline @caller; x 160; }, { lifeline @provider; x 650; }];
messages [
{ address { references []; occurrence @first_call; }; send_y 160; },
{ address { references []; occurrence @first_reply; }; send_y 270; },
{ address { references []; occurrence @control_call; }; send_y 390; },
{ address { references []; occurrence @control_reply; }; send_y 500; }
];
}; };
}
}
@@ -0,0 +1,6 @@
{
"utc": "2026-09-22T21:55:10.391Z",
"bytes": 6085,
"sha256": "99d01b52440a3434952e0b14781077d5b1f1589c0f905939c870d03af61cfe28",
"path": "checkpoints/08-after-3a.arcadia"
}
@@ -0,0 +1,113 @@
arcadia 7;
project service_details "Valve service Details trial" id "80300000-0000-4000-8000-000000000000" {
sa_actor console "Operator console" id "80300000-0000-4000-8000-000000000001" {}
sa_system valve "Valve service" id "80300000-0000-4000-8000-000000000002" {}
sa_port caller_port "Console service client" id "80300000-0000-4000-8000-000000000003" {
parent @console; contract { Component { kind Standard; orientation Unset; }; };
}
sa_port provider_port "Valve service endpoint" id "80300000-0000-4000-8000-000000000004" {
parent @valve; contract { Component { kind Standard; orientation Unset; }; };
}
sa_data_type text_value "Service text" id "80300000-0000-4000-8000-000000000010" {
definition { String { minimum_length 0; maximum_length 128; }; };
}
sa_data_type pressure_value "Pressure in bar" id "80300000-0000-4000-8000-000000000011" {
definition { Real { minimum 0; maximum 100; }; }; unit "bar";
}
sa_data_type accepted_value "Acceptance flag" id "80300000-0000-4000-8000-000000000012" { definition Boolean; }
sa_exchange_item read_status "ReadStatus" id "80300000-0000-4000-8000-000000000020" {
kind Information; mechanism Operation;
}
sa_data_field read_scope "Scope" id "80300000-0000-4000-8000-000000000021" {
parent @read_status; type_ref { Named @text_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field read_result "Status" id "80300000-0000-4000-8000-000000000022" {
parent @read_status; type_ref { Named @text_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_exchange_item set_limit "SetLimit" id "80300000-0000-4000-8000-000000000030" {
kind Information; mechanism Operation;
}
sa_data_field limit_value "Pressure limit" id "80300000-0000-4000-8000-000000000031" {
parent @set_limit; type_ref { Named @pressure_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field limit_accepted "Accepted" id "80300000-0000-4000-8000-000000000032" {
parent @set_limit; type_ref { Named @accepted_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_interface valve_api "Valve commands" id "80300000-0000-4000-8000-000000000040" {}
interface_item_allocation read_allocation "ReadStatus allocation" id "80300000-0000-4000-8000-000000000041" {
source @valve_api; target @read_status; order 0;
transmission Synchronous; acquisition Accept;
}
interface_item_allocation limit_allocation "SetLimit allocation" id "80300000-0000-4000-8000-000000000042" {
source @valve_api; target @set_limit; order 1;
transmission Synchronous; acquisition Accept;
}
interface_requirement requires_api "Console requires Valve commands" id "80300000-0000-4000-8000-000000000043" {
source @caller_port; target @valve_api;
}
interface_provision provides_api "Valve provides Valve commands" id "80300000-0000-4000-8000-000000000044" {
source @provider_port; target @valve_api;
}
boundary_exchange service_channel "Valve service channel" id "80300000-0000-4000-8000-000000000045" {
source @caller_port; target @provider_port; oriented false;
items [@read_status, @set_limit];
}
sa_scenario service_review "Review service calls" id "80300000-0000-4000-8000-000000000050" {
viewpoint BoundaryInterface;
steps [@first_call, @first_reply, @control_call, @control_reply];
}
sa_lifeline caller "Console caller" id "80300000-0000-4000-8000-000000000051" {
parent @service_review; represented @console;
}
sa_lifeline provider "Valve provider" id "80300000-0000-4000-8000-000000000052" {
parent @service_review; represented @valve;
}
sa_occurrence first_call "Read primary status" id "80300000-0000-4000-8000-000000000060" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @read_allocation; };
values [{ path []; field @read_scope; expression "\"secondary\""; }];
}; };
}
sa_occurrence first_reply "Primary status response" id "80300000-0000-4000-8000-000000000061" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @first_call;
values [{ path []; field @read_result; expression "\"READY\""; }];
}; };
}
sa_occurrence control_call "Set reserve limit" id "80300000-0000-4000-8000-000000000062" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @limit_allocation; };
values [{ path []; field @limit_value; expression "12.5"; }];
}; };
}
sa_occurrence control_reply "Reserve limit accepted" id "80300000-0000-4000-8000-000000000063" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @control_call;
values [{ path []; field @limit_accepted; expression "true"; }];
}; };
}
diagram service_details_view "Service calls - Details trial" id "80300000-0000-4000-8000-000000000070" {
layer Sa; projection { Scenario { scenario @service_review; }; };
layout { Scenario {
lanes [{ lifeline @caller; x 160; }, { lifeline @provider; x 650; }];
messages [
{ address { references []; occurrence @first_call; }; send_y 160; },
{ address { references []; occurrence @first_reply; }; send_y 270; },
{ address { references []; occurrence @control_call; }; send_y 390; },
{ address { references []; occurrence @control_reply; }; send_y 500; }
];
}; };
}
}
@@ -0,0 +1,6 @@
{
"utc": "2026-09-22T21:55:26.669Z",
"bytes": 6134,
"sha256": "4cafcf18e45703b03b3c997080a0ed7fbbbee02d386062da3c6c00504e7be75e",
"path": "checkpoints/09-after-3a-undo.arcadia"
}
@@ -0,0 +1,113 @@
arcadia 7;
project service_details "Valve service Details trial" id "80300000-0000-4000-8000-000000000000" {
sa_actor console "Operator console" id "80300000-0000-4000-8000-000000000001" {}
sa_system valve "Valve service" id "80300000-0000-4000-8000-000000000002" {}
sa_port caller_port "Console service client" id "80300000-0000-4000-8000-000000000003" {
parent @console; contract { Component { kind Standard; orientation Unset; }; };
}
sa_port provider_port "Valve service endpoint" id "80300000-0000-4000-8000-000000000004" {
parent @valve; contract { Component { kind Standard; orientation Unset; }; };
}
sa_data_type text_value "Service text" id "80300000-0000-4000-8000-000000000010" {
definition { String { minimum_length 0; maximum_length 128; }; };
}
sa_data_type pressure_value "Pressure in bar" id "80300000-0000-4000-8000-000000000011" {
definition { Real { minimum 0; maximum 100; }; }; unit "bar";
}
sa_data_type accepted_value "Acceptance flag" id "80300000-0000-4000-8000-000000000012" { definition Boolean; }
sa_exchange_item read_status "ReadStatus" id "80300000-0000-4000-8000-000000000020" {
kind Information; mechanism Operation;
}
sa_data_field read_scope "Scope" id "80300000-0000-4000-8000-000000000021" {
parent @read_status; type_ref { Named @text_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field read_result "Status" id "80300000-0000-4000-8000-000000000022" {
parent @read_status; type_ref { Named @text_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_exchange_item set_limit "SetLimit" id "80300000-0000-4000-8000-000000000030" {
kind Information; mechanism Operation;
}
sa_data_field limit_value "Pressure limit" id "80300000-0000-4000-8000-000000000031" {
parent @set_limit; type_ref { Named @pressure_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field limit_accepted "Accepted" id "80300000-0000-4000-8000-000000000032" {
parent @set_limit; type_ref { Named @accepted_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_interface valve_api "Valve commands" id "80300000-0000-4000-8000-000000000040" {}
interface_item_allocation read_allocation "ReadStatus allocation" id "80300000-0000-4000-8000-000000000041" {
source @valve_api; target @read_status; order 0;
transmission Synchronous; acquisition Accept;
}
interface_item_allocation limit_allocation "SetLimit allocation" id "80300000-0000-4000-8000-000000000042" {
source @valve_api; target @set_limit; order 1;
transmission Synchronous; acquisition Accept;
}
interface_requirement requires_api "Console requires Valve commands" id "80300000-0000-4000-8000-000000000043" {
source @caller_port; target @valve_api;
}
interface_provision provides_api "Valve provides Valve commands" id "80300000-0000-4000-8000-000000000044" {
source @provider_port; target @valve_api;
}
boundary_exchange service_channel "Valve service channel" id "80300000-0000-4000-8000-000000000045" {
source @caller_port; target @provider_port; oriented false;
items [@read_status, @set_limit];
}
sa_scenario service_review "Review service calls" id "80300000-0000-4000-8000-000000000050" {
viewpoint BoundaryInterface;
steps [@first_call, @first_reply, @control_call, @control_reply];
}
sa_lifeline caller "Console caller" id "80300000-0000-4000-8000-000000000051" {
parent @service_review; represented @console;
}
sa_lifeline provider "Valve provider" id "80300000-0000-4000-8000-000000000052" {
parent @service_review; represented @valve;
}
sa_occurrence first_call "Read primary status" id "80300000-0000-4000-8000-000000000060" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @read_allocation; };
values [{ path []; field @read_scope; expression "\"secondary\""; }];
}; };
}
sa_occurrence first_reply "Primary status response" id "80300000-0000-4000-8000-000000000061" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @first_call;
values [ ];
}; };
}
sa_occurrence control_call "Set reserve limit" id "80300000-0000-4000-8000-000000000062" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @limit_allocation; };
values [{ path []; field @limit_value; expression "12.5"; }];
}; };
}
sa_occurrence control_reply "Reserve limit accepted" id "80300000-0000-4000-8000-000000000063" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @control_call;
values [{ path []; field @limit_accepted; expression "true"; }];
}; };
}
diagram service_details_view "Service calls - Details trial" id "80300000-0000-4000-8000-000000000070" {
layer Sa; projection { Scenario { scenario @service_review; }; };
layout { Scenario {
lanes [{ lifeline @caller; x 160; }, { lifeline @provider; x 650; }];
messages [
{ address { references []; occurrence @first_call; }; send_y 160; },
{ address { references []; occurrence @first_reply; }; send_y 270; },
{ address { references []; occurrence @control_call; }; send_y 390; },
{ address { references []; occurrence @control_reply; }; send_y 500; }
];
}; };
}
}
@@ -0,0 +1,6 @@
{
"utc": "2026-09-22T21:55:48.420Z",
"bytes": 6085,
"sha256": "99d01b52440a3434952e0b14781077d5b1f1589c0f905939c870d03af61cfe28",
"path": "checkpoints/10-after-3a-redo.arcadia"
}
@@ -0,0 +1,117 @@
arcadia 7;
project service_details "Valve service Details trial" id "80300000-0000-4000-8000-000000000000" {
sa_actor console "Operator console" id "80300000-0000-4000-8000-000000000001" {}
sa_system valve "Valve service" id "80300000-0000-4000-8000-000000000002" {}
sa_port caller_port "Console service client" id "80300000-0000-4000-8000-000000000003" {
parent @console; contract { Component { kind Standard; orientation Unset; }; };
}
sa_port provider_port "Valve service endpoint" id "80300000-0000-4000-8000-000000000004" {
parent @valve; contract { Component { kind Standard; orientation Unset; }; };
}
sa_data_type text_value "Service text" id "80300000-0000-4000-8000-000000000010" {
definition { String { minimum_length 0; maximum_length 128; }; };
}
sa_data_type pressure_value "Pressure in bar" id "80300000-0000-4000-8000-000000000011" {
definition { Real { minimum 0; maximum 100; }; }; unit "bar";
}
sa_data_type accepted_value "Acceptance flag" id "80300000-0000-4000-8000-000000000012" { definition Boolean; }
sa_exchange_item read_status "ReadStatus" id "80300000-0000-4000-8000-000000000020" {
kind Information; mechanism Operation;
}
sa_data_field read_scope "Scope" id "80300000-0000-4000-8000-000000000021" {
parent @read_status; type_ref { Named @text_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field read_result "Status" id "80300000-0000-4000-8000-000000000022" {
parent @read_status; type_ref { Named @text_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_exchange_item set_limit "SetLimit" id "80300000-0000-4000-8000-000000000030" {
kind Information; mechanism Operation;
}
sa_data_field limit_value "Pressure limit" id "80300000-0000-4000-8000-000000000031" {
parent @set_limit; type_ref { Named @pressure_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field limit_accepted "Accepted" id "80300000-0000-4000-8000-000000000032" {
parent @set_limit; type_ref { Named @accepted_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_interface valve_api "Valve commands" id "80300000-0000-4000-8000-000000000040" {}
interface_item_allocation read_allocation "ReadStatus allocation" id "80300000-0000-4000-8000-000000000041" {
source @valve_api; target @read_status; order 0;
transmission Synchronous; acquisition Accept;
}
interface_item_allocation limit_allocation "SetLimit allocation" id "80300000-0000-4000-8000-000000000042" {
source @valve_api; target @set_limit; order 1;
transmission Synchronous; acquisition Accept;
}
interface_requirement requires_api "Console requires Valve commands" id "80300000-0000-4000-8000-000000000043" {
source @caller_port; target @valve_api;
}
interface_provision provides_api "Valve provides Valve commands" id "80300000-0000-4000-8000-000000000044" {
source @provider_port; target @valve_api;
}
boundary_exchange service_channel "Valve service channel" id "80300000-0000-4000-8000-000000000045" {
source @caller_port; target @provider_port; oriented false;
items [@read_status, @set_limit];
}
sa_scenario service_review "Review service calls" id "80300000-0000-4000-8000-000000000050" {
viewpoint BoundaryInterface;
steps [@first_call, @first_reply, @control_call, @control_reply];
}
sa_lifeline caller "Console caller" id "80300000-0000-4000-8000-000000000051" {
parent @service_review; represented @console;
}
sa_lifeline provider "Valve provider" id "80300000-0000-4000-8000-000000000052" {
parent @service_review; represented @valve;
}
sa_occurrence first_call "Read primary status" id "80300000-0000-4000-8000-000000000060" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @limit_allocation; };
values [ {
expression "18.75";
field @limit_value;
path [];
} ];
}; };
}
sa_occurrence first_reply "Primary status response" id "80300000-0000-4000-8000-000000000061" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @first_call;
values [ ];
}; };
}
sa_occurrence control_call "Set reserve limit" id "80300000-0000-4000-8000-000000000062" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @limit_allocation; };
values [{ path []; field @limit_value; expression "12.5"; }];
}; };
}
sa_occurrence control_reply "Reserve limit accepted" id "80300000-0000-4000-8000-000000000063" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @control_call;
values [{ path []; field @limit_accepted; expression "true"; }];
}; };
}
diagram service_details_view "Service calls - Details trial" id "80300000-0000-4000-8000-000000000070" {
layer Sa; projection { Scenario { scenario @service_review; }; };
layout { Scenario {
lanes [{ lifeline @caller; x 160; }, { lifeline @provider; x 650; }];
messages [
{ address { references []; occurrence @first_call; }; send_y 160; },
{ address { references []; occurrence @first_reply; }; send_y 270; },
{ address { references []; occurrence @control_call; }; send_y 390; },
{ address { references []; occurrence @control_reply; }; send_y 500; }
];
}; };
}
}
@@ -0,0 +1,6 @@
{
"utc": "2026-09-22T21:58:10.174Z",
"bytes": 6147,
"sha256": "9a17724d04b05321e9e3e5aee25b153cd86415c75fc712069dbcc0b10d231dcc",
"path": "checkpoints/11-after-3b.arcadia"
}
@@ -0,0 +1,113 @@
arcadia 7;
project service_details "Valve service Details trial" id "80300000-0000-4000-8000-000000000000" {
sa_actor console "Operator console" id "80300000-0000-4000-8000-000000000001" {}
sa_system valve "Valve service" id "80300000-0000-4000-8000-000000000002" {}
sa_port caller_port "Console service client" id "80300000-0000-4000-8000-000000000003" {
parent @console; contract { Component { kind Standard; orientation Unset; }; };
}
sa_port provider_port "Valve service endpoint" id "80300000-0000-4000-8000-000000000004" {
parent @valve; contract { Component { kind Standard; orientation Unset; }; };
}
sa_data_type text_value "Service text" id "80300000-0000-4000-8000-000000000010" {
definition { String { minimum_length 0; maximum_length 128; }; };
}
sa_data_type pressure_value "Pressure in bar" id "80300000-0000-4000-8000-000000000011" {
definition { Real { minimum 0; maximum 100; }; }; unit "bar";
}
sa_data_type accepted_value "Acceptance flag" id "80300000-0000-4000-8000-000000000012" { definition Boolean; }
sa_exchange_item read_status "ReadStatus" id "80300000-0000-4000-8000-000000000020" {
kind Information; mechanism Operation;
}
sa_data_field read_scope "Scope" id "80300000-0000-4000-8000-000000000021" {
parent @read_status; type_ref { Named @text_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field read_result "Status" id "80300000-0000-4000-8000-000000000022" {
parent @read_status; type_ref { Named @text_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_exchange_item set_limit "SetLimit" id "80300000-0000-4000-8000-000000000030" {
kind Information; mechanism Operation;
}
sa_data_field limit_value "Pressure limit" id "80300000-0000-4000-8000-000000000031" {
parent @set_limit; type_ref { Named @pressure_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field limit_accepted "Accepted" id "80300000-0000-4000-8000-000000000032" {
parent @set_limit; type_ref { Named @accepted_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_interface valve_api "Valve commands" id "80300000-0000-4000-8000-000000000040" {}
interface_item_allocation read_allocation "ReadStatus allocation" id "80300000-0000-4000-8000-000000000041" {
source @valve_api; target @read_status; order 0;
transmission Synchronous; acquisition Accept;
}
interface_item_allocation limit_allocation "SetLimit allocation" id "80300000-0000-4000-8000-000000000042" {
source @valve_api; target @set_limit; order 1;
transmission Synchronous; acquisition Accept;
}
interface_requirement requires_api "Console requires Valve commands" id "80300000-0000-4000-8000-000000000043" {
source @caller_port; target @valve_api;
}
interface_provision provides_api "Valve provides Valve commands" id "80300000-0000-4000-8000-000000000044" {
source @provider_port; target @valve_api;
}
boundary_exchange service_channel "Valve service channel" id "80300000-0000-4000-8000-000000000045" {
source @caller_port; target @provider_port; oriented false;
items [@read_status, @set_limit];
}
sa_scenario service_review "Review service calls" id "80300000-0000-4000-8000-000000000050" {
viewpoint BoundaryInterface;
steps [@first_call, @first_reply, @control_call, @control_reply];
}
sa_lifeline caller "Console caller" id "80300000-0000-4000-8000-000000000051" {
parent @service_review; represented @console;
}
sa_lifeline provider "Valve provider" id "80300000-0000-4000-8000-000000000052" {
parent @service_review; represented @valve;
}
sa_occurrence first_call "Read primary status" id "80300000-0000-4000-8000-000000000060" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @read_allocation; };
values [{ path []; field @read_scope; expression "\"secondary\""; }];
}; };
}
sa_occurrence first_reply "Primary status response" id "80300000-0000-4000-8000-000000000061" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @first_call;
values [ ];
}; };
}
sa_occurrence control_call "Set reserve limit" id "80300000-0000-4000-8000-000000000062" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @limit_allocation; };
values [{ path []; field @limit_value; expression "12.5"; }];
}; };
}
sa_occurrence control_reply "Reserve limit accepted" id "80300000-0000-4000-8000-000000000063" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @control_call;
values [{ path []; field @limit_accepted; expression "true"; }];
}; };
}
diagram service_details_view "Service calls - Details trial" id "80300000-0000-4000-8000-000000000070" {
layer Sa; projection { Scenario { scenario @service_review; }; };
layout { Scenario {
lanes [{ lifeline @caller; x 160; }, { lifeline @provider; x 650; }];
messages [
{ address { references []; occurrence @first_call; }; send_y 160; },
{ address { references []; occurrence @first_reply; }; send_y 270; },
{ address { references []; occurrence @control_call; }; send_y 390; },
{ address { references []; occurrence @control_reply; }; send_y 500; }
];
}; };
}
}
@@ -0,0 +1,6 @@
{
"utc": "2026-09-22T21:58:32.912Z",
"bytes": 6085,
"sha256": "99d01b52440a3434952e0b14781077d5b1f1589c0f905939c870d03af61cfe28",
"path": "checkpoints/12-after-3b-undo.arcadia"
}
@@ -0,0 +1,117 @@
arcadia 7;
project service_details "Valve service Details trial" id "80300000-0000-4000-8000-000000000000" {
sa_actor console "Operator console" id "80300000-0000-4000-8000-000000000001" {}
sa_system valve "Valve service" id "80300000-0000-4000-8000-000000000002" {}
sa_port caller_port "Console service client" id "80300000-0000-4000-8000-000000000003" {
parent @console; contract { Component { kind Standard; orientation Unset; }; };
}
sa_port provider_port "Valve service endpoint" id "80300000-0000-4000-8000-000000000004" {
parent @valve; contract { Component { kind Standard; orientation Unset; }; };
}
sa_data_type text_value "Service text" id "80300000-0000-4000-8000-000000000010" {
definition { String { minimum_length 0; maximum_length 128; }; };
}
sa_data_type pressure_value "Pressure in bar" id "80300000-0000-4000-8000-000000000011" {
definition { Real { minimum 0; maximum 100; }; }; unit "bar";
}
sa_data_type accepted_value "Acceptance flag" id "80300000-0000-4000-8000-000000000012" { definition Boolean; }
sa_exchange_item read_status "ReadStatus" id "80300000-0000-4000-8000-000000000020" {
kind Information; mechanism Operation;
}
sa_data_field read_scope "Scope" id "80300000-0000-4000-8000-000000000021" {
parent @read_status; type_ref { Named @text_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field read_result "Status" id "80300000-0000-4000-8000-000000000022" {
parent @read_status; type_ref { Named @text_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_exchange_item set_limit "SetLimit" id "80300000-0000-4000-8000-000000000030" {
kind Information; mechanism Operation;
}
sa_data_field limit_value "Pressure limit" id "80300000-0000-4000-8000-000000000031" {
parent @set_limit; type_ref { Named @pressure_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field limit_accepted "Accepted" id "80300000-0000-4000-8000-000000000032" {
parent @set_limit; type_ref { Named @accepted_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_interface valve_api "Valve commands" id "80300000-0000-4000-8000-000000000040" {}
interface_item_allocation read_allocation "ReadStatus allocation" id "80300000-0000-4000-8000-000000000041" {
source @valve_api; target @read_status; order 0;
transmission Synchronous; acquisition Accept;
}
interface_item_allocation limit_allocation "SetLimit allocation" id "80300000-0000-4000-8000-000000000042" {
source @valve_api; target @set_limit; order 1;
transmission Synchronous; acquisition Accept;
}
interface_requirement requires_api "Console requires Valve commands" id "80300000-0000-4000-8000-000000000043" {
source @caller_port; target @valve_api;
}
interface_provision provides_api "Valve provides Valve commands" id "80300000-0000-4000-8000-000000000044" {
source @provider_port; target @valve_api;
}
boundary_exchange service_channel "Valve service channel" id "80300000-0000-4000-8000-000000000045" {
source @caller_port; target @provider_port; oriented false;
items [@read_status, @set_limit];
}
sa_scenario service_review "Review service calls" id "80300000-0000-4000-8000-000000000050" {
viewpoint BoundaryInterface;
steps [@first_call, @first_reply, @control_call, @control_reply];
}
sa_lifeline caller "Console caller" id "80300000-0000-4000-8000-000000000051" {
parent @service_review; represented @console;
}
sa_lifeline provider "Valve provider" id "80300000-0000-4000-8000-000000000052" {
parent @service_review; represented @valve;
}
sa_occurrence first_call "Read primary status" id "80300000-0000-4000-8000-000000000060" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @limit_allocation; };
values [ {
expression "18.75";
field @limit_value;
path [];
} ];
}; };
}
sa_occurrence first_reply "Primary status response" id "80300000-0000-4000-8000-000000000061" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @first_call;
values [ ];
}; };
}
sa_occurrence control_call "Set reserve limit" id "80300000-0000-4000-8000-000000000062" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @limit_allocation; };
values [{ path []; field @limit_value; expression "12.5"; }];
}; };
}
sa_occurrence control_reply "Reserve limit accepted" id "80300000-0000-4000-8000-000000000063" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @control_call;
values [{ path []; field @limit_accepted; expression "true"; }];
}; };
}
diagram service_details_view "Service calls - Details trial" id "80300000-0000-4000-8000-000000000070" {
layer Sa; projection { Scenario { scenario @service_review; }; };
layout { Scenario {
lanes [{ lifeline @caller; x 160; }, { lifeline @provider; x 650; }];
messages [
{ address { references []; occurrence @first_call; }; send_y 160; },
{ address { references []; occurrence @first_reply; }; send_y 270; },
{ address { references []; occurrence @control_call; }; send_y 390; },
{ address { references []; occurrence @control_reply; }; send_y 500; }
];
}; };
}
}
@@ -0,0 +1,6 @@
{
"utc": "2026-09-22T21:59:02.305Z",
"bytes": 6147,
"sha256": "9a17724d04b05321e9e3e5aee25b153cd86415c75fc712069dbcc0b10d231dcc",
"path": "checkpoints/13-after-3b-redo.arcadia"
}
@@ -0,0 +1,121 @@
arcadia 7;
project service_details "Valve service Details trial" id "80300000-0000-4000-8000-000000000000" {
sa_actor console "Operator console" id "80300000-0000-4000-8000-000000000001" {}
sa_system valve "Valve service" id "80300000-0000-4000-8000-000000000002" {}
sa_port caller_port "Console service client" id "80300000-0000-4000-8000-000000000003" {
parent @console; contract { Component { kind Standard; orientation Unset; }; };
}
sa_port provider_port "Valve service endpoint" id "80300000-0000-4000-8000-000000000004" {
parent @valve; contract { Component { kind Standard; orientation Unset; }; };
}
sa_data_type text_value "Service text" id "80300000-0000-4000-8000-000000000010" {
definition { String { minimum_length 0; maximum_length 128; }; };
}
sa_data_type pressure_value "Pressure in bar" id "80300000-0000-4000-8000-000000000011" {
definition { Real { minimum 0; maximum 100; }; }; unit "bar";
}
sa_data_type accepted_value "Acceptance flag" id "80300000-0000-4000-8000-000000000012" { definition Boolean; }
sa_exchange_item read_status "ReadStatus" id "80300000-0000-4000-8000-000000000020" {
kind Information; mechanism Operation;
}
sa_data_field read_scope "Scope" id "80300000-0000-4000-8000-000000000021" {
parent @read_status; type_ref { Named @text_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field read_result "Status" id "80300000-0000-4000-8000-000000000022" {
parent @read_status; type_ref { Named @text_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_exchange_item set_limit "SetLimit" id "80300000-0000-4000-8000-000000000030" {
kind Information; mechanism Operation;
}
sa_data_field limit_value "Pressure limit" id "80300000-0000-4000-8000-000000000031" {
parent @set_limit; type_ref { Named @pressure_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field limit_accepted "Accepted" id "80300000-0000-4000-8000-000000000032" {
parent @set_limit; type_ref { Named @accepted_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_interface valve_api "Valve commands" id "80300000-0000-4000-8000-000000000040" {}
interface_item_allocation read_allocation "ReadStatus allocation" id "80300000-0000-4000-8000-000000000041" {
source @valve_api; target @read_status; order 0;
transmission Synchronous; acquisition Accept;
}
interface_item_allocation limit_allocation "SetLimit allocation" id "80300000-0000-4000-8000-000000000042" {
source @valve_api; target @set_limit; order 1;
transmission Synchronous; acquisition Accept;
}
interface_requirement requires_api "Console requires Valve commands" id "80300000-0000-4000-8000-000000000043" {
source @caller_port; target @valve_api;
}
interface_provision provides_api "Valve provides Valve commands" id "80300000-0000-4000-8000-000000000044" {
source @provider_port; target @valve_api;
}
boundary_exchange service_channel "Valve service channel" id "80300000-0000-4000-8000-000000000045" {
source @caller_port; target @provider_port; oriented false;
items [@read_status, @set_limit];
}
sa_scenario service_review "Review service calls" id "80300000-0000-4000-8000-000000000050" {
viewpoint BoundaryInterface;
steps [@first_call, @first_reply, @control_call, @control_reply];
}
sa_lifeline caller "Console caller" id "80300000-0000-4000-8000-000000000051" {
parent @service_review; represented @console;
}
sa_lifeline provider "Valve provider" id "80300000-0000-4000-8000-000000000052" {
parent @service_review; represented @valve;
}
sa_occurrence first_call "Read primary status" id "80300000-0000-4000-8000-000000000060" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @limit_allocation; };
values [ {
expression "18.75";
field @limit_value;
path [];
} ];
}; };
}
sa_occurrence first_reply "Primary status response" id "80300000-0000-4000-8000-000000000061" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @first_call;
values [ {
expression "true";
field @limit_accepted;
path [];
} ];
}; };
}
sa_occurrence control_call "Set reserve limit" id "80300000-0000-4000-8000-000000000062" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @limit_allocation; };
values [{ path []; field @limit_value; expression "12.5"; }];
}; };
}
sa_occurrence control_reply "Reserve limit accepted" id "80300000-0000-4000-8000-000000000063" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @control_call;
values [{ path []; field @limit_accepted; expression "true"; }];
}; };
}
diagram service_details_view "Service calls - Details trial" id "80300000-0000-4000-8000-000000000070" {
layer Sa; projection { Scenario { scenario @service_review; }; };
layout { Scenario {
lanes [{ lifeline @caller; x 160; }, { lifeline @provider; x 650; }];
messages [
{ address { references []; occurrence @first_call; }; send_y 160; },
{ address { references []; occurrence @first_reply; }; send_y 270; },
{ address { references []; occurrence @control_call; }; send_y 390; },
{ address { references []; occurrence @control_reply; }; send_y 500; }
];
}; };
}
}
@@ -0,0 +1,6 @@
{
"utc": "2026-09-22T22:00:54.457Z",
"bytes": 6278,
"sha256": "1af3c01ea2b68b4b3c97c4aa94e5f87c8dfaaf3ea8b16c8f18c74ad7fa3021a8",
"path": "checkpoints/14-after-3c.arcadia"
}
@@ -0,0 +1,117 @@
arcadia 7;
project service_details "Valve service Details trial" id "80300000-0000-4000-8000-000000000000" {
sa_actor console "Operator console" id "80300000-0000-4000-8000-000000000001" {}
sa_system valve "Valve service" id "80300000-0000-4000-8000-000000000002" {}
sa_port caller_port "Console service client" id "80300000-0000-4000-8000-000000000003" {
parent @console; contract { Component { kind Standard; orientation Unset; }; };
}
sa_port provider_port "Valve service endpoint" id "80300000-0000-4000-8000-000000000004" {
parent @valve; contract { Component { kind Standard; orientation Unset; }; };
}
sa_data_type text_value "Service text" id "80300000-0000-4000-8000-000000000010" {
definition { String { minimum_length 0; maximum_length 128; }; };
}
sa_data_type pressure_value "Pressure in bar" id "80300000-0000-4000-8000-000000000011" {
definition { Real { minimum 0; maximum 100; }; }; unit "bar";
}
sa_data_type accepted_value "Acceptance flag" id "80300000-0000-4000-8000-000000000012" { definition Boolean; }
sa_exchange_item read_status "ReadStatus" id "80300000-0000-4000-8000-000000000020" {
kind Information; mechanism Operation;
}
sa_data_field read_scope "Scope" id "80300000-0000-4000-8000-000000000021" {
parent @read_status; type_ref { Named @text_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field read_result "Status" id "80300000-0000-4000-8000-000000000022" {
parent @read_status; type_ref { Named @text_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_exchange_item set_limit "SetLimit" id "80300000-0000-4000-8000-000000000030" {
kind Information; mechanism Operation;
}
sa_data_field limit_value "Pressure limit" id "80300000-0000-4000-8000-000000000031" {
parent @set_limit; type_ref { Named @pressure_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field limit_accepted "Accepted" id "80300000-0000-4000-8000-000000000032" {
parent @set_limit; type_ref { Named @accepted_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_interface valve_api "Valve commands" id "80300000-0000-4000-8000-000000000040" {}
interface_item_allocation read_allocation "ReadStatus allocation" id "80300000-0000-4000-8000-000000000041" {
source @valve_api; target @read_status; order 0;
transmission Synchronous; acquisition Accept;
}
interface_item_allocation limit_allocation "SetLimit allocation" id "80300000-0000-4000-8000-000000000042" {
source @valve_api; target @set_limit; order 1;
transmission Synchronous; acquisition Accept;
}
interface_requirement requires_api "Console requires Valve commands" id "80300000-0000-4000-8000-000000000043" {
source @caller_port; target @valve_api;
}
interface_provision provides_api "Valve provides Valve commands" id "80300000-0000-4000-8000-000000000044" {
source @provider_port; target @valve_api;
}
boundary_exchange service_channel "Valve service channel" id "80300000-0000-4000-8000-000000000045" {
source @caller_port; target @provider_port; oriented false;
items [@read_status, @set_limit];
}
sa_scenario service_review "Review service calls" id "80300000-0000-4000-8000-000000000050" {
viewpoint BoundaryInterface;
steps [@first_call, @first_reply, @control_call, @control_reply];
}
sa_lifeline caller "Console caller" id "80300000-0000-4000-8000-000000000051" {
parent @service_review; represented @console;
}
sa_lifeline provider "Valve provider" id "80300000-0000-4000-8000-000000000052" {
parent @service_review; represented @valve;
}
sa_occurrence first_call "Read primary status" id "80300000-0000-4000-8000-000000000060" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @limit_allocation; };
values [ {
expression "18.75";
field @limit_value;
path [];
} ];
}; };
}
sa_occurrence first_reply "Primary status response" id "80300000-0000-4000-8000-000000000061" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @first_call;
values [ ];
}; };
}
sa_occurrence control_call "Set reserve limit" id "80300000-0000-4000-8000-000000000062" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @limit_allocation; };
values [{ path []; field @limit_value; expression "12.5"; }];
}; };
}
sa_occurrence control_reply "Reserve limit accepted" id "80300000-0000-4000-8000-000000000063" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @control_call;
values [{ path []; field @limit_accepted; expression "true"; }];
}; };
}
diagram service_details_view "Service calls - Details trial" id "80300000-0000-4000-8000-000000000070" {
layer Sa; projection { Scenario { scenario @service_review; }; };
layout { Scenario {
lanes [{ lifeline @caller; x 160; }, { lifeline @provider; x 650; }];
messages [
{ address { references []; occurrence @first_call; }; send_y 160; },
{ address { references []; occurrence @first_reply; }; send_y 270; },
{ address { references []; occurrence @control_call; }; send_y 390; },
{ address { references []; occurrence @control_reply; }; send_y 500; }
];
}; };
}
}
@@ -0,0 +1,6 @@
{
"utc": "2026-09-22T22:01:09.134Z",
"bytes": 6147,
"sha256": "9a17724d04b05321e9e3e5aee25b153cd86415c75fc712069dbcc0b10d231dcc",
"path": "checkpoints/15-after-3c-undo.arcadia"
}
@@ -0,0 +1,121 @@
arcadia 7;
project service_details "Valve service Details trial" id "80300000-0000-4000-8000-000000000000" {
sa_actor console "Operator console" id "80300000-0000-4000-8000-000000000001" {}
sa_system valve "Valve service" id "80300000-0000-4000-8000-000000000002" {}
sa_port caller_port "Console service client" id "80300000-0000-4000-8000-000000000003" {
parent @console; contract { Component { kind Standard; orientation Unset; }; };
}
sa_port provider_port "Valve service endpoint" id "80300000-0000-4000-8000-000000000004" {
parent @valve; contract { Component { kind Standard; orientation Unset; }; };
}
sa_data_type text_value "Service text" id "80300000-0000-4000-8000-000000000010" {
definition { String { minimum_length 0; maximum_length 128; }; };
}
sa_data_type pressure_value "Pressure in bar" id "80300000-0000-4000-8000-000000000011" {
definition { Real { minimum 0; maximum 100; }; }; unit "bar";
}
sa_data_type accepted_value "Acceptance flag" id "80300000-0000-4000-8000-000000000012" { definition Boolean; }
sa_exchange_item read_status "ReadStatus" id "80300000-0000-4000-8000-000000000020" {
kind Information; mechanism Operation;
}
sa_data_field read_scope "Scope" id "80300000-0000-4000-8000-000000000021" {
parent @read_status; type_ref { Named @text_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field read_result "Status" id "80300000-0000-4000-8000-000000000022" {
parent @read_status; type_ref { Named @text_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_exchange_item set_limit "SetLimit" id "80300000-0000-4000-8000-000000000030" {
kind Information; mechanism Operation;
}
sa_data_field limit_value "Pressure limit" id "80300000-0000-4000-8000-000000000031" {
parent @set_limit; type_ref { Named @pressure_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field limit_accepted "Accepted" id "80300000-0000-4000-8000-000000000032" {
parent @set_limit; type_ref { Named @accepted_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_interface valve_api "Valve commands" id "80300000-0000-4000-8000-000000000040" {}
interface_item_allocation read_allocation "ReadStatus allocation" id "80300000-0000-4000-8000-000000000041" {
source @valve_api; target @read_status; order 0;
transmission Synchronous; acquisition Accept;
}
interface_item_allocation limit_allocation "SetLimit allocation" id "80300000-0000-4000-8000-000000000042" {
source @valve_api; target @set_limit; order 1;
transmission Synchronous; acquisition Accept;
}
interface_requirement requires_api "Console requires Valve commands" id "80300000-0000-4000-8000-000000000043" {
source @caller_port; target @valve_api;
}
interface_provision provides_api "Valve provides Valve commands" id "80300000-0000-4000-8000-000000000044" {
source @provider_port; target @valve_api;
}
boundary_exchange service_channel "Valve service channel" id "80300000-0000-4000-8000-000000000045" {
source @caller_port; target @provider_port; oriented false;
items [@read_status, @set_limit];
}
sa_scenario service_review "Review service calls" id "80300000-0000-4000-8000-000000000050" {
viewpoint BoundaryInterface;
steps [@first_call, @first_reply, @control_call, @control_reply];
}
sa_lifeline caller "Console caller" id "80300000-0000-4000-8000-000000000051" {
parent @service_review; represented @console;
}
sa_lifeline provider "Valve provider" id "80300000-0000-4000-8000-000000000052" {
parent @service_review; represented @valve;
}
sa_occurrence first_call "Read primary status" id "80300000-0000-4000-8000-000000000060" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @limit_allocation; };
values [ {
expression "18.75";
field @limit_value;
path [];
} ];
}; };
}
sa_occurrence first_reply "Primary status response" id "80300000-0000-4000-8000-000000000061" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @first_call;
values [ {
expression "true";
field @limit_accepted;
path [];
} ];
}; };
}
sa_occurrence control_call "Set reserve limit" id "80300000-0000-4000-8000-000000000062" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @limit_allocation; };
values [{ path []; field @limit_value; expression "12.5"; }];
}; };
}
sa_occurrence control_reply "Reserve limit accepted" id "80300000-0000-4000-8000-000000000063" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @control_call;
values [{ path []; field @limit_accepted; expression "true"; }];
}; };
}
diagram service_details_view "Service calls - Details trial" id "80300000-0000-4000-8000-000000000070" {
layer Sa; projection { Scenario { scenario @service_review; }; };
layout { Scenario {
lanes [{ lifeline @caller; x 160; }, { lifeline @provider; x 650; }];
messages [
{ address { references []; occurrence @first_call; }; send_y 160; },
{ address { references []; occurrence @first_reply; }; send_y 270; },
{ address { references []; occurrence @control_call; }; send_y 390; },
{ address { references []; occurrence @control_reply; }; send_y 500; }
];
}; };
}
}
@@ -0,0 +1,6 @@
{
"utc": "2026-09-22T22:01:33.194Z",
"bytes": 6278,
"sha256": "1af3c01ea2b68b4b3c97c4aa94e5f87c8dfaaf3ea8b16c8f18c74ad7fa3021a8",
"path": "checkpoints/16-after-3c-redo.arcadia"
}
@@ -0,0 +1,121 @@
arcadia 7;
project service_details "Valve service Details trial" id "80300000-0000-4000-8000-000000000000" {
sa_actor console "Operator console" id "80300000-0000-4000-8000-000000000001" {}
sa_system valve "Valve service" id "80300000-0000-4000-8000-000000000002" {}
sa_port caller_port "Console service client" id "80300000-0000-4000-8000-000000000003" {
parent @console; contract { Component { kind Standard; orientation Unset; }; };
}
sa_port provider_port "Valve service endpoint" id "80300000-0000-4000-8000-000000000004" {
parent @valve; contract { Component { kind Standard; orientation Unset; }; };
}
sa_data_type text_value "Service text" id "80300000-0000-4000-8000-000000000010" {
definition { String { minimum_length 0; maximum_length 128; }; };
}
sa_data_type pressure_value "Pressure in bar" id "80300000-0000-4000-8000-000000000011" {
definition { Real { minimum 0; maximum 100; }; }; unit "bar";
}
sa_data_type accepted_value "Acceptance flag" id "80300000-0000-4000-8000-000000000012" { definition Boolean; }
sa_exchange_item read_status "ReadStatus" id "80300000-0000-4000-8000-000000000020" {
kind Information; mechanism Operation;
}
sa_data_field read_scope "Scope" id "80300000-0000-4000-8000-000000000021" {
parent @read_status; type_ref { Named @text_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field read_result "Status" id "80300000-0000-4000-8000-000000000022" {
parent @read_status; type_ref { Named @text_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_exchange_item set_limit "SetLimit" id "80300000-0000-4000-8000-000000000030" {
kind Information; mechanism Operation;
}
sa_data_field limit_value "Pressure limit" id "80300000-0000-4000-8000-000000000031" {
parent @set_limit; type_ref { Named @pressure_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field limit_accepted "Accepted" id "80300000-0000-4000-8000-000000000032" {
parent @set_limit; type_ref { Named @accepted_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_interface valve_api "Valve commands" id "80300000-0000-4000-8000-000000000040" {}
interface_item_allocation read_allocation "ReadStatus allocation" id "80300000-0000-4000-8000-000000000041" {
source @valve_api; target @read_status; order 0;
transmission Synchronous; acquisition Accept;
}
interface_item_allocation limit_allocation "SetLimit allocation" id "80300000-0000-4000-8000-000000000042" {
source @valve_api; target @set_limit; order 1;
transmission Synchronous; acquisition Accept;
}
interface_requirement requires_api "Console requires Valve commands" id "80300000-0000-4000-8000-000000000043" {
source @caller_port; target @valve_api;
}
interface_provision provides_api "Valve provides Valve commands" id "80300000-0000-4000-8000-000000000044" {
source @provider_port; target @valve_api;
}
boundary_exchange service_channel "Valve service channel" id "80300000-0000-4000-8000-000000000045" {
source @caller_port; target @provider_port; oriented false;
items [@read_status, @set_limit];
}
sa_scenario service_review "Review service calls" id "80300000-0000-4000-8000-000000000050" {
viewpoint BoundaryInterface;
steps [@first_call, @first_reply, @control_call, @control_reply];
}
sa_lifeline caller "Console caller" id "80300000-0000-4000-8000-000000000051" {
parent @service_review; represented @console;
}
sa_lifeline provider "Valve provider" id "80300000-0000-4000-8000-000000000052" {
parent @service_review; represented @valve;
}
sa_occurrence first_call "Read primary status" id "80300000-0000-4000-8000-000000000060" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @limit_allocation; };
values [ {
expression "19.25";
field @limit_value;
path [];
} ];
}; };
}
sa_occurrence first_reply "Primary status response" id "80300000-0000-4000-8000-000000000061" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @first_call;
values [ {
expression "true";
field @limit_accepted;
path [];
} ];
}; };
}
sa_occurrence control_call "Set reserve limit" id "80300000-0000-4000-8000-000000000062" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @limit_allocation; };
values [{ path []; field @limit_value; expression "12.5"; }];
}; };
}
sa_occurrence control_reply "Reserve limit accepted" id "80300000-0000-4000-8000-000000000063" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @control_call;
values [{ path []; field @limit_accepted; expression "true"; }];
}; };
}
diagram service_details_view "Service calls - Details trial" id "80300000-0000-4000-8000-000000000070" {
layer Sa; projection { Scenario { scenario @service_review; }; };
layout { Scenario {
lanes [{ lifeline @caller; x 160; }, { lifeline @provider; x 650; }];
messages [
{ address { references []; occurrence @first_call; }; send_y 160; },
{ address { references []; occurrence @first_reply; }; send_y 270; },
{ address { references []; occurrence @control_call; }; send_y 390; },
{ address { references []; occurrence @control_reply; }; send_y 500; }
];
}; };
}
}
@@ -0,0 +1,6 @@
{
"utc": "2026-09-22T22:02:57.373Z",
"bytes": 6278,
"sha256": "92723225deb64884d7cd01e3bf50f24620fbdd583e8bab7bd3f391fb22a46f5d",
"path": "checkpoints/17-after-3d.arcadia"
}
@@ -0,0 +1,121 @@
arcadia 7;
project service_details "Valve service Details trial" id "80300000-0000-4000-8000-000000000000" {
sa_actor console "Operator console" id "80300000-0000-4000-8000-000000000001" {}
sa_system valve "Valve service" id "80300000-0000-4000-8000-000000000002" {}
sa_port caller_port "Console service client" id "80300000-0000-4000-8000-000000000003" {
parent @console; contract { Component { kind Standard; orientation Unset; }; };
}
sa_port provider_port "Valve service endpoint" id "80300000-0000-4000-8000-000000000004" {
parent @valve; contract { Component { kind Standard; orientation Unset; }; };
}
sa_data_type text_value "Service text" id "80300000-0000-4000-8000-000000000010" {
definition { String { minimum_length 0; maximum_length 128; }; };
}
sa_data_type pressure_value "Pressure in bar" id "80300000-0000-4000-8000-000000000011" {
definition { Real { minimum 0; maximum 100; }; }; unit "bar";
}
sa_data_type accepted_value "Acceptance flag" id "80300000-0000-4000-8000-000000000012" { definition Boolean; }
sa_exchange_item read_status "ReadStatus" id "80300000-0000-4000-8000-000000000020" {
kind Information; mechanism Operation;
}
sa_data_field read_scope "Scope" id "80300000-0000-4000-8000-000000000021" {
parent @read_status; type_ref { Named @text_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field read_result "Status" id "80300000-0000-4000-8000-000000000022" {
parent @read_status; type_ref { Named @text_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_exchange_item set_limit "SetLimit" id "80300000-0000-4000-8000-000000000030" {
kind Information; mechanism Operation;
}
sa_data_field limit_value "Pressure limit" id "80300000-0000-4000-8000-000000000031" {
parent @set_limit; type_ref { Named @pressure_value; }; direction In;
minimum 0; maximum 1; storage Value;
}
sa_data_field limit_accepted "Accepted" id "80300000-0000-4000-8000-000000000032" {
parent @set_limit; type_ref { Named @accepted_value; }; direction Return;
minimum 0; maximum 1; storage Value;
}
sa_interface valve_api "Valve commands" id "80300000-0000-4000-8000-000000000040" {}
interface_item_allocation read_allocation "ReadStatus allocation" id "80300000-0000-4000-8000-000000000041" {
source @valve_api; target @read_status; order 0;
transmission Synchronous; acquisition Accept;
}
interface_item_allocation limit_allocation "SetLimit allocation" id "80300000-0000-4000-8000-000000000042" {
source @valve_api; target @set_limit; order 1;
transmission Synchronous; acquisition Accept;
}
interface_requirement requires_api "Console requires Valve commands" id "80300000-0000-4000-8000-000000000043" {
source @caller_port; target @valve_api;
}
interface_provision provides_api "Valve provides Valve commands" id "80300000-0000-4000-8000-000000000044" {
source @provider_port; target @valve_api;
}
boundary_exchange service_channel "Valve service channel" id "80300000-0000-4000-8000-000000000045" {
source @caller_port; target @provider_port; oriented false;
items [@read_status, @set_limit];
}
sa_scenario service_review "Review service calls" id "80300000-0000-4000-8000-000000000050" {
viewpoint BoundaryInterface;
steps [@first_call, @first_reply, @control_call, @control_reply];
}
sa_lifeline caller "Console caller" id "80300000-0000-4000-8000-000000000051" {
parent @service_review; represented @console;
}
sa_lifeline provider "Valve provider" id "80300000-0000-4000-8000-000000000052" {
parent @service_review; represented @valve;
}
sa_occurrence first_call "Read primary status" id "80300000-0000-4000-8000-000000000060" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @limit_allocation; };
values [ {
expression "18.75";
field @limit_value;
path [];
} ];
}; };
}
sa_occurrence first_reply "Primary status response" id "80300000-0000-4000-8000-000000000061" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @first_call;
values [ {
expression "true";
field @limit_accepted;
path [];
} ];
}; };
}
sa_occurrence control_call "Set reserve limit" id "80300000-0000-4000-8000-000000000062" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @caller; receiver @provider; message_kind Call;
operation { allocation @limit_allocation; };
values [{ path []; field @limit_value; expression "12.5"; }];
}; };
}
sa_occurrence control_reply "Reserve limit accepted" id "80300000-0000-4000-8000-000000000063" {
parent @service_review;
body { Exchange {
exchange @service_channel; sender @provider; receiver @caller;
message_kind Reply; reply_to @control_call;
values [{ path []; field @limit_accepted; expression "true"; }];
}; };
}
diagram service_details_view "Service calls - Details trial" id "80300000-0000-4000-8000-000000000070" {
layer Sa; projection { Scenario { scenario @service_review; }; };
layout { Scenario {
lanes [{ lifeline @caller; x 160; }, { lifeline @provider; x 650; }];
messages [
{ address { references []; occurrence @first_call; }; send_y 160; },
{ address { references []; occurrence @first_reply; }; send_y 270; },
{ address { references []; occurrence @control_call; }; send_y 390; },
{ address { references []; occurrence @control_reply; }; send_y 500; }
];
}; };
}
}
@@ -0,0 +1,6 @@
{
"utc": "2026-09-22T22:03:16.639Z",
"bytes": 6278,
"sha256": "1af3c01ea2b68b4b3c97c4aa94e5f87c8dfaaf3ea8b16c8f18c74ad7fa3021a8",
"path": "checkpoints/18-after-3d-undo.arcadia"
}

Some files were not shown because too many files have changed in this diff Show More