diff --git a/harness/STATE.md b/harness/STATE.md index bed9fec1..2e48bf59 100644 --- a/harness/STATE.md +++ b/harness/STATE.md @@ -55,8 +55,12 @@ fixes, ambiguous/partial source navigation, and the 30-file engineering workflow explicit Save preserved complete models, identities and source bytes. It also found a repair-mode false-clean status against the prior saved destination. Its [saved-baseline correction](release-text-repair-save-state-20260911.md) -passes the full 755-test suite, strict Clippy and matching GUI B183 build; -new native repair/closing and package acceptance remain required. +at **33c6d83** passes the full 755-test suite, strict Clippy and matching GUI B183 +build. Its [native repair verification](release-text-repair-save-native-v4-20260911.md) +passed missing-include and duplicate-alias repairs plus interrupted-save rollback: +Apply/Recover retain unsaved status, Close warns, Cancel retains work, and explicit +Save yields exact complete model/identity/source equality. Package acceptance +remains separate and required. The [integrated evaluation](release-text-navigation-integrated-20260911.md) links exact input archives, earlier full-test scope and independent findings. The published contextual preview remains unchanged. diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/.gitattributes b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/.gitattributes new file mode 100644 index 00000000..95d1bffe --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/.gitattributes @@ -0,0 +1 @@ +** -text whitespace=-blank-at-eol,-blank-at-eof,cr-at-eol diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/.gitignore b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/.gitignore new file mode 100644 index 00000000..4e473164 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/.gitignore @@ -0,0 +1 @@ +!**/*.log diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/README.md b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/README.md new file mode 100644 index 00000000..d4a82911 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/README.md @@ -0,0 +1,11 @@ +# Repair/save native-v4 evidence + +Three root-operated native workflows passed on GUI B183/source33c6d83: missing include repair, duplicate alias repair, and v1 journal recovery. Apply kept repaired bytes unsaved; Close prompted; Cancel retained the work; explicit Save was followed by exact full-model/source equality. See the [native report](../../../release-text-repair-save-native-v4-20260911.md) for chronology and scope, and the [correction gates](../repair-save-correction/README.md) for source/build provenance. + +`preparation-README.md` is the original pre-launch document, preserved exactly. Its pending/no-launch wording describes preparation, not the completed trial. `helper.py`, `fixture-manifest.json` and all 64 fixture files are retained. Under `trial/` are seven disk checkpoints, three real saved-oracle receipts/log pairs, 20 original screenshot JPEG/metadata pairs, and launch/admission/binary/readback/empty process logs. + +All originals copied here are exact bytes. `manifest.json` is the complete payload whitelist, including original paths; `readback.json` records original/archive and fixture/checkpoint/equality checks. Omitted final trial model directories were byte-identical to retained fixtures/checkpoints, recorded in `excluded-duplicates.json`. No binaries, profile or temporary/cache contents are included. GUI/DLL identity remains in before/after receipts. + +Root observed normal close and subsequent window/PID absence. The helper records caller-observed absence, not an independently obtained numeric process exit code. Empty stdout/stderr and unchanged GUI/DLL are preserved. The window was 1442 by 932; this was not a minimum-size or full navigation retest, and no package/release/Linux result is implied. + +Run `python verify_archive.py` for read-only hash, whitelist, fixture, screenshot, checkpoint and saved-oracle receipt verification; it does not launch a binary or rerun an oracle. Python 3 standard library only. diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/excluded-duplicates.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/excluded-duplicates.json new file mode 100644 index 00000000..c3c85703 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/excluded-duplicates.json @@ -0,0 +1,80 @@ +{ + "trial/valid": { + "identicalTo": "fixtures/valid", + "files": { + "links.arcadia": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "project.arcadia": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + "救援/assess.arcadia": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "救援/confirm.arcadia": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919" + } + }, + "trial/release1": { + "identicalTo": "fixtures/release1", + "files": { + "expected-diagnostics.json": "3700393d76b940cfc076bf52861bd7b1f43370f8eabce3594531bd0bf1fc851e", + "model.json": "ef0ef4006c3e09d5db6e1b621256b3f7d6642f3a7b09cc34607cfbcca830c727", + "model.rs": "15f30f6bde655808fe754665c26d560e36f2a9bad340f346b09137d0d05045f5", + "project.arcadia": "b2674e6bf77cfe0f6f0ba79c81d2e96d92f39c02ca2c6266d80e91723bfb9fda", + "README.md": "113cfb1cf38a98b51bff60442d86a35d636a3d80ef206bece7d53d0aae67f2d5", + "traceability.arcadia": "48a96f543456c9b5a5798fc795594e4119147fe45f11a6f109f141b7f514560f", + "transition-before.json": "2253e6434f741687e22327c37d520ed15c043bc36025498650bc2366bb6a874d", + "transition-request.json": "43b9a22e5f95ad3bc0ebd2478ead0e14406854abc989ae94ded9367b013d812a", + "evidence/repair-check.md": "f4db17bdca4ecbb1bf0caef01b2da5f1f7f798ab3152b648ce6dd8696a6a68e5", + "oa/capabilities.arcadia": "fc8012e5554350b12e1cb80080f8feab80d933c9b33c0f2a7bb500cb7d609936", + "oa/model.arcadia": "f7cf914766ea73ec53b85e32d117ea9a9dba52d3e038246863541ae7069b1a15", + "oa/participants.arcadia": "951764c14179f27c10e315acf2ea37d1fff54c77b8441e23addd239e8c715ce3", + "oa/types.arcadia": "9d0396fb82dd5733edd8d1cf52f968ca84906927c704f9cf0944a7fae215cf49", + "sa/capabilities.arcadia": "b6912fb3ece439912345fa71724acd462e716a1e5a88203a1058a5c3b2c20a4f", + "sa/model.arcadia": "d431509251acb859fbb98733b6d18add952495e10a78703fbe8f31e40bc083c4", + "sa/participants.arcadia": "780d2eb08b217b67b55febb3d34846f727b8ee9018df6c5741748647e36b2ff8", + "sa/types.arcadia": "101fc0fbd99f1101514aa7b6da4f8e535aae0bb94c9e2b9e7e6c151135b28660", + "views/diagram_oa_allocation_view.arcadia": "dfc0eb61e0e2aa5bda45524571fbfa3494f44ce19696f3e15e07438074a07bc7", + "views/diagram_sa_allocation_view.arcadia": "b78b43a26a82efb8fbd5374b09c329fa341f57b29f635d397b9ef8aede71d389", + "views/diagram_sa_capability_view.arcadia": "75e8dc9fb30f25d6f8fd3c6b595593ab4f98958a25798f961e336e0fac557649", + "views/diagram_sa_service_view.arcadia": "b08c84f3ea633e7c78dfdad3272f75415f6256cf3614b6d99bfd4f0269076c9b", + "views/diagram_sa_state_view.arcadia": "5f42f4c605e57b817d8400ed21f2b14bfc4e1592aebe941ff113767504c2b869", + "oa/activities/activity_oa_restore_work.arcadia": "83e73d0a013d5c3e1a4af0d9139ab0cfa362d25a846671fc2dac59181061a9d4", + "oa/behavior/process_oa_assessment_procedure.arcadia": "172c32c044ef4b5bc58a1f4635cc81f48dabb4014479b47dce7b25fedf2dbd0d", + "oa/behavior/process_oa_field_procedure.arcadia": "d2552dc5383e2e91cb302a790364e197f663c2edc013a2ab1978789825c9c324", + "oa/behavior/process_oa_response.arcadia": "cf86f46fa5c5d70592ef43f1bc1cb4d968efd8add384ba88036bef6b88aa4abc", + "oa/behavior/scenario_oa_conversation.arcadia": "b25be524e98a35ebac5e4481b7609c027b32baf9605e8097f807560f94a77ca6", + "oa/behavior/scenario_oa_full_scenario.arcadia": "00a1edf2c9707a0eb62ac070c2d02467874f2c9c1f273cc6ddb53d6d65999a1c", + "oa/behavior/state_machine_oa_monitor.arcadia": "447c9ad1359f4a31ecf975ad07c0b08d8e7e03191fb0858e2fc56f377b223cd5", + "sa/behavior/process_sa_assessment_procedure.arcadia": "73928ced61c06cbc08728d7956676a50fd4c05aa5b7f1ff4f29ce27a0b0f2088", + "sa/behavior/process_sa_field_procedure.arcadia": "886d462af83110cbfa55dd232a667ea1446761234471357cbb878794e98e8768", + "sa/behavior/process_sa_response.arcadia": "041785fc22842423822431bd5e6e8d16094ebd0716965e7c765fb8c1d7549e8a", + "sa/behavior/scenario_sa_conversation.arcadia": "97276f5757ee9aa12a0dbd9d3ccd58174b3091162bb8bcce357cec20a45f5d85", + "sa/behavior/scenario_sa_full_scenario.arcadia": "e12fc406b99d60a2f7768aaa0b25ba560e8605f0b8e37f3a7cdd3b8443562b74", + "sa/behavior/state_machine_sa_monitor.arcadia": "05ce29af99424c491c47fe2450dc6f5f8ce995511c01ec7e17bb5855be3c9736", + "sa/functions/function_sa_audit_thresholds.arcadia": "e5a04325d52183956dca814dd90f4e56c96c6b7db0f4f202f203ecb49c3e0f4f", + "sa/functions/function_sa_restore_work.arcadia": "fddeb67308051325041fee641fe758ddf43345b7c47b66d433616ad07fdccdd6" + } + }, + "trial/missing-include": { + "identicalTo": "trial/checkpoints/missing-final-saved/sources", + "files": { + "links.arcadia": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "project.arcadia": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + "救援/assess.arcadia": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "救援/confirm.arcadia": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919" + } + }, + "trial/ambiguous": { + "identicalTo": "trial/checkpoints/duplicate-final-saved/sources", + "files": { + "links.arcadia": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "project.arcadia": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + "救援/assess.arcadia": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "救援/confirm.arcadia": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919" + } + }, + "trial/recovery": { + "identicalTo": "trial/checkpoints/recovery-final-saved/sources", + "files": { + "links.arcadia": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "project.arcadia": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + "救援/assess.arcadia": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "救援/confirm.arcadia": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919" + } + } +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixture-manifest.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixture-manifest.json new file mode 100644 index 00000000..55d3c4e5 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixture-manifest.json @@ -0,0 +1,351 @@ +{ + "atUtc": "2026-09-11T20:44:05.057097+00:00", + "originalManifestSha256": "edd4157fc31823f4494dee91862728b87f12ef51c49b8d1fd86a954bc9ecc1ed", + "copiedGroups": { + "valid": "valid-baseline", + "release1": "release1-baseline", + "ambiguous": "ambiguous-open", + "missing-include": "missing-include-open" + }, + "recovery": { + "scope": "Static v1 entry-only interrupted-save fixture; no recovery/app/oracle execution", + "journal": { + "version": 1, + "entry": "project.arcadia", + "files": [ + { + "path": "project.arcadia", + "before": true, + "write": true + } + ] + }, + "beforeEntrySha256": "6e9abf4ecf24175b9f04a8db11fe182146581059628eb8769e869597401f262e", + "afterEntrySha256": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + "beforeDiff": "Only project title changed from Navigation — 救援 to Before interrupted save — 救援. IDs/includes/other three files unchanged.", + "expectedFinalBaseline": "recovery-expected-after/project.arcadia", + "expectedAfterEqualsPinnedValid": true + }, + "files": [ + { + "path": "ambiguous/links.arcadia", + "bytes": 211, + "sha256": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b" + }, + { + "path": "ambiguous/project.arcadia", + "bytes": 277, + "sha256": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414" + }, + { + "path": "ambiguous/救援/assess.arcadia", + "bytes": 192, + "sha256": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992" + }, + { + "path": "ambiguous/救援/confirm.arcadia", + "bytes": 186, + "sha256": "ba3e222bdc7dfa94e4f1b16df091447835da6b5bea8a72701e12e077e77319a6" + }, + { + "path": "missing-include/links.arcadia", + "bytes": 211, + "sha256": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b" + }, + { + "path": "missing-include/project.arcadia", + "bytes": 320, + "sha256": "573357995f0a68fef39aa3eef3125e2271242d1ce01607c129624399b77e682e" + }, + { + "path": "missing-include/救援/assess.arcadia", + "bytes": 192, + "sha256": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992" + }, + { + "path": "missing-include/救援/confirm.arcadia", + "bytes": 92, + "sha256": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919" + }, + { + "path": "recovery/.arcadia-save-project.arcadia.journal/0.after", + "bytes": 277, + "sha256": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414" + }, + { + "path": "recovery/.arcadia-save-project.arcadia.journal/0.before", + "bytes": 290, + "sha256": "6e9abf4ecf24175b9f04a8db11fe182146581059628eb8769e869597401f262e" + }, + { + "path": "recovery/.arcadia-save-project.arcadia.journal/journal.json", + "bytes": 104, + "sha256": "08e19098159f9a539f33754ef8d8bbb5e653744baa0aa9784403e019498d4c42" + }, + { + "path": "recovery/links.arcadia", + "bytes": 211, + "sha256": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b" + }, + { + "path": "recovery/project.arcadia", + "bytes": 277, + "sha256": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414" + }, + { + "path": "recovery/救援/assess.arcadia", + "bytes": 192, + "sha256": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992" + }, + { + "path": "recovery/救援/confirm.arcadia", + "bytes": 92, + "sha256": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919" + }, + { + "path": "recovery-expected-after/links.arcadia", + "bytes": 211, + "sha256": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b" + }, + { + "path": "recovery-expected-after/project.arcadia", + "bytes": 277, + "sha256": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414" + }, + { + "path": "recovery-expected-after/救援/assess.arcadia", + "bytes": 192, + "sha256": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992" + }, + { + "path": "recovery-expected-after/救援/confirm.arcadia", + "bytes": 92, + "sha256": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919" + }, + { + "path": "recovery-expected-before/links.arcadia", + "bytes": 211, + "sha256": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b" + }, + { + "path": "recovery-expected-before/project.arcadia", + "bytes": 290, + "sha256": "6e9abf4ecf24175b9f04a8db11fe182146581059628eb8769e869597401f262e" + }, + { + "path": "recovery-expected-before/救援/assess.arcadia", + "bytes": 192, + "sha256": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992" + }, + { + "path": "recovery-expected-before/救援/confirm.arcadia", + "bytes": 92, + "sha256": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919" + }, + { + "path": "release1/evidence/repair-check.md", + "bytes": 1419, + "sha256": "f4db17bdca4ecbb1bf0caef01b2da5f1f7f798ab3152b648ce6dd8696a6a68e5" + }, + { + "path": "release1/expected-diagnostics.json", + "bytes": 288, + "sha256": "3700393d76b940cfc076bf52861bd7b1f43370f8eabce3594531bd0bf1fc851e" + }, + { + "path": "release1/model.json", + "bytes": 134520, + "sha256": "ef0ef4006c3e09d5db6e1b621256b3f7d6642f3a7b09cc34607cfbcca830c727" + }, + { + "path": "release1/model.rs", + "bytes": 28762, + "sha256": "15f30f6bde655808fe754665c26d560e36f2a9bad340f346b09137d0d05045f5" + }, + { + "path": "release1/oa/activities/activity_oa_restore_work.arcadia", + "bytes": 1307, + "sha256": "83e73d0a013d5c3e1a4af0d9139ab0cfa362d25a846671fc2dac59181061a9d4" + }, + { + "path": "release1/oa/behavior/process_oa_assessment_procedure.arcadia", + "bytes": 697, + "sha256": "172c32c044ef4b5bc58a1f4635cc81f48dabb4014479b47dce7b25fedf2dbd0d" + }, + { + "path": "release1/oa/behavior/process_oa_field_procedure.arcadia", + "bytes": 1781, + "sha256": "d2552dc5383e2e91cb302a790364e197f663c2edc013a2ab1978789825c9c324" + }, + { + "path": "release1/oa/behavior/process_oa_response.arcadia", + "bytes": 3225, + "sha256": "cf86f46fa5c5d70592ef43f1bc1cb4d968efd8add384ba88036bef6b88aa4abc" + }, + { + "path": "release1/oa/behavior/scenario_oa_conversation.arcadia", + "bytes": 1795, + "sha256": "b25be524e98a35ebac5e4481b7609c027b32baf9605e8097f807560f94a77ca6" + }, + { + "path": "release1/oa/behavior/scenario_oa_full_scenario.arcadia", + "bytes": 1261, + "sha256": "00a1edf2c9707a0eb62ac070c2d02467874f2c9c1f273cc6ddb53d6d65999a1c" + }, + { + "path": "release1/oa/behavior/state_machine_oa_monitor.arcadia", + "bytes": 2022, + "sha256": "447c9ad1359f4a31ecf975ad07c0b08d8e7e03191fb0858e2fc56f377b223cd5" + }, + { + "path": "release1/oa/capabilities.arcadia", + "bytes": 781, + "sha256": "fc8012e5554350b12e1cb80080f8feab80d933c9b33c0f2a7bb500cb7d609936" + }, + { + "path": "release1/oa/model.arcadia", + "bytes": 661, + "sha256": "f7cf914766ea73ec53b85e32d117ea9a9dba52d3e038246863541ae7069b1a15" + }, + { + "path": "release1/oa/participants.arcadia", + "bytes": 1834, + "sha256": "951764c14179f27c10e315acf2ea37d1fff54c77b8441e23addd239e8c715ce3" + }, + { + "path": "release1/oa/types.arcadia", + "bytes": 788, + "sha256": "9d0396fb82dd5733edd8d1cf52f968ca84906927c704f9cf0944a7fae215cf49" + }, + { + "path": "release1/project.arcadia", + "bytes": 1958, + "sha256": "b2674e6bf77cfe0f6f0ba79c81d2e96d92f39c02ca2c6266d80e91723bfb9fda" + }, + { + "path": "release1/README.md", + "bytes": 11137, + "sha256": "113cfb1cf38a98b51bff60442d86a35d636a3d80ef206bece7d53d0aae67f2d5" + }, + { + "path": "release1/sa/behavior/process_sa_assessment_procedure.arcadia", + "bytes": 706, + "sha256": "73928ced61c06cbc08728d7956676a50fd4c05aa5b7f1ff4f29ce27a0b0f2088" + }, + { + "path": "release1/sa/behavior/process_sa_field_procedure.arcadia", + "bytes": 1790, + "sha256": "886d462af83110cbfa55dd232a667ea1446761234471357cbb878794e98e8768" + }, + { + "path": "release1/sa/behavior/process_sa_response.arcadia", + "bytes": 3234, + "sha256": "041785fc22842423822431bd5e6e8d16094ebd0716965e7c765fb8c1d7549e8a" + }, + { + "path": "release1/sa/behavior/scenario_sa_conversation.arcadia", + "bytes": 2127, + "sha256": "97276f5757ee9aa12a0dbd9d3ccd58174b3091162bb8bcce357cec20a45f5d85" + }, + { + "path": "release1/sa/behavior/scenario_sa_full_scenario.arcadia", + "bytes": 1256, + "sha256": "e12fc406b99d60a2f7768aaa0b25ba560e8605f0b8e37f3a7cdd3b8443562b74" + }, + { + "path": "release1/sa/behavior/state_machine_sa_monitor.arcadia", + "bytes": 2022, + "sha256": "05ce29af99424c491c47fe2450dc6f5f8ce995511c01ec7e17bb5855be3c9736" + }, + { + "path": "release1/sa/capabilities.arcadia", + "bytes": 781, + "sha256": "b6912fb3ece439912345fa71724acd462e716a1e5a88203a1058a5c3b2c20a4f" + }, + { + "path": "release1/sa/functions/function_sa_audit_thresholds.arcadia", + "bytes": 297, + "sha256": "e5a04325d52183956dca814dd90f4e56c96c6b7db0f4f202f203ecb49c3e0f4f" + }, + { + "path": "release1/sa/functions/function_sa_restore_work.arcadia", + "bytes": 2576, + "sha256": "fddeb67308051325041fee641fe758ddf43345b7c47b66d433616ad07fdccdd6" + }, + { + "path": "release1/sa/model.arcadia", + "bytes": 661, + "sha256": "d431509251acb859fbb98733b6d18add952495e10a78703fbe8f31e40bc083c4" + }, + { + "path": "release1/sa/participants.arcadia", + "bytes": 4012, + "sha256": "780d2eb08b217b67b55febb3d34846f727b8ee9018df6c5741748647e36b2ff8" + }, + { + "path": "release1/sa/types.arcadia", + "bytes": 1227, + "sha256": "101fc0fbd99f1101514aa7b6da4f8e535aae0bb94c9e2b9e7e6c151135b28660" + }, + { + "path": "release1/traceability.arcadia", + "bytes": 29506, + "sha256": "48a96f543456c9b5a5798fc795594e4119147fe45f11a6f109f141b7f514560f" + }, + { + "path": "release1/transition-before.json", + "bytes": 35801, + "sha256": "2253e6434f741687e22327c37d520ed15c043bc36025498650bc2366bb6a874d" + }, + { + "path": "release1/transition-request.json", + "bytes": 4276, + "sha256": "43b9a22e5f95ad3bc0ebd2478ead0e14406854abc989ae94ded9367b013d812a" + }, + { + "path": "release1/views/diagram_oa_allocation_view.arcadia", + "bytes": 2176, + "sha256": "dfc0eb61e0e2aa5bda45524571fbfa3494f44ce19696f3e15e07438074a07bc7" + }, + { + "path": "release1/views/diagram_sa_allocation_view.arcadia", + "bytes": 2173, + "sha256": "b78b43a26a82efb8fbd5374b09c329fa341f57b29f635d397b9ef8aede71d389" + }, + { + "path": "release1/views/diagram_sa_capability_view.arcadia", + "bytes": 1620, + "sha256": "75e8dc9fb30f25d6f8fd3c6b595593ab4f98958a25798f961e336e0fac557649" + }, + { + "path": "release1/views/diagram_sa_service_view.arcadia", + "bytes": 2209, + "sha256": "b08c84f3ea633e7c78dfdad3272f75415f6256cf3614b6d99bfd4f0269076c9b" + }, + { + "path": "release1/views/diagram_sa_state_view.arcadia", + "bytes": 1931, + "sha256": "5f42f4c605e57b817d8400ed21f2b14bfc4e1592aebe941ff113767504c2b869" + }, + { + "path": "valid/links.arcadia", + "bytes": 211, + "sha256": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b" + }, + { + "path": "valid/project.arcadia", + "bytes": 277, + "sha256": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414" + }, + { + "path": "valid/救援/assess.arcadia", + "bytes": 192, + "sha256": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992" + }, + { + "path": "valid/救援/confirm.arcadia", + "bytes": 92, + "sha256": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919" + } + ] +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/ambiguous/links.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/ambiguous/links.arcadia new file mode 100644 index 00000000..8f99a9d8 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/ambiguous/links.arcadia @@ -0,0 +1,4 @@ +interaction handoff "Assessment handoff" id "9e8f0000-0000-4000-8000-000000000004" { + description "救援 @assess is prose"; source @assess; target @confirm; + // Another comment @assess is excluded. +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/ambiguous/project.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/ambiguous/project.arcadia new file mode 100644 index 00000000..2771b2bf --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/ambiguous/project.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project navigation_trial "Navigation — 救援" id "9e8f0000-0000-4000-8000-000000000001" { + description "Prose @assess must not be a lexical use."; + include "救援/assess.arcadia"; + include "救援/confirm.arcadia"; + include "links.arcadia"; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/ambiguous/救援/assess.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/ambiguous/救援/assess.arcadia new file mode 100644 index 00000000..2595a7db --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/ambiguous/救援/assess.arcadia @@ -0,0 +1,4 @@ +// Comment @assess must not be a lexical use. +oa_activity assess "Assess 救援 request" id "9e8f0000-0000-4000-8000-000000000002" { + description "Keep @assess as prose, not a use."; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/ambiguous/救援/confirm.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/ambiguous/救援/confirm.arcadia new file mode 100644 index 00000000..20e53049 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/ambiguous/救援/confirm.arcadia @@ -0,0 +1,2 @@ +oa_activity confirm "Confirm 救援 response" id "9e8f0000-0000-4000-8000-000000000003" {} +oa_activity assess "Duplicate draft assessment" id "9e8f0000-0000-4000-8000-000000000005" {} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/missing-include/links.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/missing-include/links.arcadia new file mode 100644 index 00000000..8f99a9d8 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/missing-include/links.arcadia @@ -0,0 +1,4 @@ +interaction handoff "Assessment handoff" id "9e8f0000-0000-4000-8000-000000000004" { + description "救援 @assess is prose"; source @assess; target @confirm; + // Another comment @assess is excluded. +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/missing-include/project.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/missing-include/project.arcadia new file mode 100644 index 00000000..2d5c664f --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/missing-include/project.arcadia @@ -0,0 +1,8 @@ +arcadia 7; +project navigation_trial "Navigation — 救援" id "9e8f0000-0000-4000-8000-000000000001" { + description "Prose @assess must not be a lexical use."; + include "救援/assess.arcadia"; + include "救援/confirm.arcadia"; + include "links.arcadia"; + include "missing/not-loaded.arcadia"; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/missing-include/救援/assess.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/missing-include/救援/assess.arcadia new file mode 100644 index 00000000..2595a7db --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/missing-include/救援/assess.arcadia @@ -0,0 +1,4 @@ +// Comment @assess must not be a lexical use. +oa_activity assess "Assess 救援 request" id "9e8f0000-0000-4000-8000-000000000002" { + description "Keep @assess as prose, not a use."; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/missing-include/救援/confirm.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/missing-include/救援/confirm.arcadia new file mode 100644 index 00000000..2d3ec804 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/missing-include/救援/confirm.arcadia @@ -0,0 +1 @@ +oa_activity confirm "Confirm 救援 response" id "9e8f0000-0000-4000-8000-000000000003" {} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery-expected-after/links.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery-expected-after/links.arcadia new file mode 100644 index 00000000..8f99a9d8 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery-expected-after/links.arcadia @@ -0,0 +1,4 @@ +interaction handoff "Assessment handoff" id "9e8f0000-0000-4000-8000-000000000004" { + description "救援 @assess is prose"; source @assess; target @confirm; + // Another comment @assess is excluded. +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery-expected-after/project.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery-expected-after/project.arcadia new file mode 100644 index 00000000..2771b2bf --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery-expected-after/project.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project navigation_trial "Navigation — 救援" id "9e8f0000-0000-4000-8000-000000000001" { + description "Prose @assess must not be a lexical use."; + include "救援/assess.arcadia"; + include "救援/confirm.arcadia"; + include "links.arcadia"; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery-expected-after/救援/assess.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery-expected-after/救援/assess.arcadia new file mode 100644 index 00000000..2595a7db --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery-expected-after/救援/assess.arcadia @@ -0,0 +1,4 @@ +// Comment @assess must not be a lexical use. +oa_activity assess "Assess 救援 request" id "9e8f0000-0000-4000-8000-000000000002" { + description "Keep @assess as prose, not a use."; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery-expected-after/救援/confirm.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery-expected-after/救援/confirm.arcadia new file mode 100644 index 00000000..2d3ec804 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery-expected-after/救援/confirm.arcadia @@ -0,0 +1 @@ +oa_activity confirm "Confirm 救援 response" id "9e8f0000-0000-4000-8000-000000000003" {} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery-expected-before/links.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery-expected-before/links.arcadia new file mode 100644 index 00000000..8f99a9d8 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery-expected-before/links.arcadia @@ -0,0 +1,4 @@ +interaction handoff "Assessment handoff" id "9e8f0000-0000-4000-8000-000000000004" { + description "救援 @assess is prose"; source @assess; target @confirm; + // Another comment @assess is excluded. +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery-expected-before/project.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery-expected-before/project.arcadia new file mode 100644 index 00000000..7dd1f114 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery-expected-before/project.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project navigation_trial "Before interrupted save — 救援" id "9e8f0000-0000-4000-8000-000000000001" { + description "Prose @assess must not be a lexical use."; + include "救援/assess.arcadia"; + include "救援/confirm.arcadia"; + include "links.arcadia"; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery-expected-before/救援/assess.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery-expected-before/救援/assess.arcadia new file mode 100644 index 00000000..2595a7db --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery-expected-before/救援/assess.arcadia @@ -0,0 +1,4 @@ +// Comment @assess must not be a lexical use. +oa_activity assess "Assess 救援 request" id "9e8f0000-0000-4000-8000-000000000002" { + description "Keep @assess as prose, not a use."; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery-expected-before/救援/confirm.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery-expected-before/救援/confirm.arcadia new file mode 100644 index 00000000..2d3ec804 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery-expected-before/救援/confirm.arcadia @@ -0,0 +1 @@ +oa_activity confirm "Confirm 救援 response" id "9e8f0000-0000-4000-8000-000000000003" {} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery/.arcadia-save-project.arcadia.journal/0.after b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery/.arcadia-save-project.arcadia.journal/0.after new file mode 100644 index 00000000..2771b2bf --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery/.arcadia-save-project.arcadia.journal/0.after @@ -0,0 +1,7 @@ +arcadia 7; +project navigation_trial "Navigation — 救援" id "9e8f0000-0000-4000-8000-000000000001" { + description "Prose @assess must not be a lexical use."; + include "救援/assess.arcadia"; + include "救援/confirm.arcadia"; + include "links.arcadia"; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery/.arcadia-save-project.arcadia.journal/0.before b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery/.arcadia-save-project.arcadia.journal/0.before new file mode 100644 index 00000000..7dd1f114 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery/.arcadia-save-project.arcadia.journal/0.before @@ -0,0 +1,7 @@ +arcadia 7; +project navigation_trial "Before interrupted save — 救援" id "9e8f0000-0000-4000-8000-000000000001" { + description "Prose @assess must not be a lexical use."; + include "救援/assess.arcadia"; + include "救援/confirm.arcadia"; + include "links.arcadia"; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery/.arcadia-save-project.arcadia.journal/journal.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery/.arcadia-save-project.arcadia.journal/journal.json new file mode 100644 index 00000000..f699fd45 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery/.arcadia-save-project.arcadia.journal/journal.json @@ -0,0 +1 @@ +{"version":1,"entry":"project.arcadia","files":[{"path":"project.arcadia","before":true,"write":true}]} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery/links.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery/links.arcadia new file mode 100644 index 00000000..8f99a9d8 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery/links.arcadia @@ -0,0 +1,4 @@ +interaction handoff "Assessment handoff" id "9e8f0000-0000-4000-8000-000000000004" { + description "救援 @assess is prose"; source @assess; target @confirm; + // Another comment @assess is excluded. +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery/project.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery/project.arcadia new file mode 100644 index 00000000..2771b2bf --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery/project.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project navigation_trial "Navigation — 救援" id "9e8f0000-0000-4000-8000-000000000001" { + description "Prose @assess must not be a lexical use."; + include "救援/assess.arcadia"; + include "救援/confirm.arcadia"; + include "links.arcadia"; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery/救援/assess.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery/救援/assess.arcadia new file mode 100644 index 00000000..2595a7db --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery/救援/assess.arcadia @@ -0,0 +1,4 @@ +// Comment @assess must not be a lexical use. +oa_activity assess "Assess 救援 request" id "9e8f0000-0000-4000-8000-000000000002" { + description "Keep @assess as prose, not a use."; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery/救援/confirm.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery/救援/confirm.arcadia new file mode 100644 index 00000000..2d3ec804 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/recovery/救援/confirm.arcadia @@ -0,0 +1 @@ +oa_activity confirm "Confirm 救援 response" id "9e8f0000-0000-4000-8000-000000000003" {} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/README.md b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/README.md new file mode 100644 index 00000000..f6f883d1 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/README.md @@ -0,0 +1,86 @@ +# Restore safe water pressure + +This source-7 project follows one engineering question: after a pressure alarm, can the control room restore service remotely, or must a technician repair a valve? It connects the operational need to an explicitly chosen coordination-service boundary. Allow about 25 minutes for the walkthrough. + +Copy the whole `examples/release1` folder to your working location, then open the copied `project.arcadia` in Arcadia Studio. Keep the folder together: the entry includes 29 modules, and the evidence link is relative to it. If you instead use Save As to a new folder, it copies model source files only: also copy `evidence/` beside the new entry and keep this README available. Save As does not copy external artifact targets. Existing older examples remain useful migration exercises. + +The numbers, guards and states describe an illustrative design. The model does not simulate hydraulics, execute a control algorithm, or establish the safety of an actual water network. + +## 1. Start with responsibility, not equipment + +Open saved view **1 · OA responsibility and repair traffic**. The **Control room** assesses the alarm, resets the valve and confirms pressure. The **Field technician** performs field repair. The parent activity **Restore safe pressure** groups these leaf activities; responsibility is allocated to the leaves. + +Inspect **Technician service conversation** (`oa_contact`). This unoriented CommunicationMean connects operational participants. **Request field repair** and **Report repair result** are Interactions between their allocated activities. Each Interaction is explicitly allocated to the communication mean. No OA port or implementation component has been introduced. + +Inspect the **Valve repair** exchange item and its `pressure` parameter. The parameter has direction InOut, Value storage, multiplicity 1..1, and a real-valued type bounded from 0 to 600 with unit text `kPa`. The unit documents the contract; no conversion is inferred. + +## 2. Follow the alternative and its reusable procedure + +Open process **Handle a pressure alarm** (`oa_response`) in the behavior workspace. Its first step references **Assess an alarm procedure** (`oa_assessment_procedure`), whose Action uses the assessment activity and whose ChainInvolvement supports **Assess an alarm**. Follow that reference to the Choice in the main process. The guarded branch allows an authorized remote reset; the `else` branch references **Field repair procedure** (`oa_field_procedure`). Both paths merge before confirmation. The explicit SequenceLinks define flow; the list of steps alone does not imply those branches. + +Open the referenced procedure. It contains request exchange, repair action, then report exchange. The parent process reuses that procedure by identity. It does not copy its actions. The main process contributes to the restoration capability. + +Open scenario **Repair request and measured reply** (`oa_conversation`). The Control room calls the technician using the communication mean, supplying `420.0`. The technician's correlated Reply returns `320.0` on the reversed participant pair. The reply points to the actual Call. The enclosing scenario (`oa_full_scenario`) reuses this conversation with two explicit lifeline bindings. + +The mission **Maintain safe water supply** links to the restoration capability, which includes the assessment capability. The repair conversation has the restoration context: it begins after assessment and coordinates repair. The assessment procedure supplies the separate assessment behavior support. + +## 3. Examine the explicit SA engineering decisions + +Open **2 · SA service boundary and functions**. The chosen System is **Pressure coordination service**; the technician remains outside as a SystemActor. OA activities have traced SA functions. The communication mean has a traced SA BoundaryExchange (`sa_contact`), with two explicitly chosen Standard component ports. The two Interactions have traced FunctionalExchanges with directional function ports. + +Inspect **Valve repair service** (`sa_repair_interface`), its synchronous Operation acceptance, and the client Requires / provider Provides links. Four PortAllocations connect the function ports to their component ports; two ExchangeAllocations connect functional traffic to the boundary exchange. These are explicit contract refinements. An operational channel cannot choose the technical interface or ports on the engineer's behalf. + +The generator performs the real OA→SA transition. `transition-before.json` is the OA model plus the two intentionally named SA participants. `transition-request.json` contains their explicit mappings and both component-port Create decisions. It deliberately leaves the operational ExchangeAllocations out of this first transition: those allocations require the later reviewed SA interface and port refinements. Omitting these allocations is explicit, not silently guessed. + +For a fresh transition exercise, import `transition-before.json`, select the OA content, map Control room to the existing System and Field technician to the existing SystemActor, and review both communication endpoint ports. The supplied request is the exact programmatic counterpart. The generated final project then adds the interface/port allocations, views, evidence and one unfinished function. Fresh transition UUIDs are normalized by the generator for stable published files, so an interactive replay is semantically comparable rather than byte-identical to `model.json`. + +## 4. Compare views without changing the architecture + +Switch between **2 · SA service boundary and functions** and **3 · SA service conversation only**. They place the same semantic identities. The focused view uses the participant exchange category, an explicitly empty work-category selection, and NameAndItems labels. It shows the boundary conversation and hides functional traffic. The underlying exchanges and their port positions remain unchanged. + +Open View properties to inspect the selections. Clearing a filter does not delete a relation. The category is an engineering collection of existing exchanges; it is not a replacement exchange. **4 · SA mission and included capability** supplies a separate goal view. + +Open **5 · SA pressure supervision** in the state workspace. Follow the initial state to monitoring, the typed high-pressure Change event into waiting, and the guarded return. Waiting has an Entry action linked to the assessment function. This is an event/action relationship, not free prose embedded in a transition label. + +## 5. Investigate the deliberate warning + +Model checks should report exactly one warning: `work_without_behavior_context` on **Audit pressure thresholds** (`sa_audit_thresholds`). It has a responsible System but no process/chain or scenario use. `expected-diagnostics.json` records the expected located issue. + +Decide whether threshold auditing belongs in the response process, in a separate maintenance behavior, or outside the intended model. Add the appropriate behavior use or remove the explicitly out-of-scope function. Merely hiding it in a view would not resolve the coverage question. The supplied model intentionally leaves this decision open. + +## 6. Make one reviewed change and inspect its source + +1. In OA, rename **Confirm safe pressure** (`oa_confirm`) to **Confirm stable pressure** and Apply the edit. +2. Open semantic OA→SA review for that activity and its existing function counterpart (`sa_confirm`). Review the Header Name facet and choose Take source. Preview, then Apply the reviewed change. +3. Confirm that the SA function name changed while the deliberately different System name remains **Pressure coordination service**. +4. In Source, inspect `sa/functions/function_sa_restore_work.arcadia` and `traceability.arcadia`. The counterpart name and review history change. Unrelated modules retain their text. Use Undo/Redo in this editing session to inspect the reviewed transaction; then Save and reopen to check persistence. Undo history is session-local; reopening restores the saved model, not the previous undo stack. + +The integration oracle executes this exact semantic review and source update. It separately proves that changing the request Interaction to target a Control-room-owned activity violates the communication allocation's performer pairing: command and source-update paths reject the invalid candidate together. + +## Source, service and reproducibility + +| File or folder | Purpose | +|---|---| +| `project.arcadia` | Openable source-7 entry with all module includes | +| `oa/`, `sa/` | Participants, work, data, capabilities and reusable behavior | +| `views/` | Five saved views; filters and placements are presentation state | +| `traceability.arcadia` | OA↔SA correspondence and review history | +| `model.json` | Current schema-7 interchange of the final accepted model | +| `transition-before.json`, `transition-request.json` | Explicit first-transition replay inputs | +| `evidence/repair-check.md` | Local teaching evidence linked from the SA conversation | +| `model.rs` | Deterministic lesson builder shared by generator and tests | + +The REST routes are documented in [the API reference](../../docs/api.rst). Import `model.json` with `POST /api/v1/projects/import`; query the returned resource's `/model` and `/validation`. Expect schema 7 and the one warning above. JSON import provides canonical source; to retain the exact modular source layout, use `/api/v1/projects/import-source-project` with a SourceBundle containing entry `project.arcadia` and only the 30 reachable `.arcadia` file strings, keyed by slash-separated relative paths. Neither route reads the artifact target from your local filesystem. + +For transition replay, import `transition-before.json` instead. Submit `transition-request.json` to that baseline resource's `/transitions/preview` with its current ETag in `If-Match`. Review the returned plan, then follow the documented `/transitions/apply` protocol. Use the baseline resource for this exercise: the final model already contains the mapped records and subsequent refinements. This tutorial's automated evidence is core/source validation; it does not claim a separate native or HTTP acceptance run of this particular example. + +From the repository root, with the supported Rust toolchain available: + +```text +cargo run --locked -p oa-core --example generate_release1 -- examples/release1 +cargo test --locked -p oa-core --test release1_teaching +``` + +Regeneration deliberately overwrites the generated source and JSON in the selected output folder. Copy the lesson before experimenting. No old examples are rewritten. The tests check deterministic regeneration, exact source/interchange parity, explicit transport and reply direction, behavior reuse, view identity/geometry, atomic rejection, and a reviewed name change preserving unrelated modules. + +The available SVG export is for architecture views. Faithful process, scenario and state-scene SVG export is outside this first-release export scope; the interactive behavior workspace is the authoritative rendering for this exercise. diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/evidence/repair-check.md b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/evidence/repair-check.md new file mode 100644 index 00000000..b3e9ddf8 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/evidence/repair-check.md @@ -0,0 +1,15 @@ +# Repair conversation acceptance notes + +Revision: lesson-1. Linked from `sa_conversation` by `repair_test_evidence`, relation Verifies, fragment `acceptance`. + +## Acceptance + +This is a reproducible teaching check, not field-test evidence for a real valve. + +- The Control room calls the Field technician across the operational channel; the correlated Reply reverses the actual Call pair. +- The SA conversation uses the selected service boundary and explicit Standard client/provider ports. A synchronous operation interface and its Requires/Provides links describe the contract. +- Both request and report functional exchanges are allocated through matching function/component ports and the boundary exchange. +- The example carries input/output pressure values `420.0` and `320.0` against the declared 0..600 real type. Values and unit text are descriptive model data; no hydraulic simulation has run. +- The remote reset and field-repair alternatives join before pressure confirmation. The field procedure and scenario conversation are reused through identities and explicit bindings. + +Run `cargo test --locked -p oa-core --test release1_teaching` from the repository root to reproduce the core/source oracles. The intentionally unfinished threshold-audit function remains a located coverage warning. Actual equipment safety assessment, executable control validation and field measurements are separate engineering work. diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/expected-diagnostics.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/expected-diagnostics.json new file mode 100644 index 00000000..e93a7fa7 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/expected-diagnostics.json @@ -0,0 +1,9 @@ +[ + { + "code": "work_without_behavior_context", + "element": "4149a872-3440-59de-9879-8981e78d27ab", + "field": null, + "message": "Include this leaf activity/function in a process/chain or scenario through a work action or exchange occurrence.", + "severity": "Warning" + } +] diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/model.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/model.json new file mode 100644 index 00000000..dd61c402 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/model.json @@ -0,0 +1,4401 @@ +{ + "alias": "pressure_restoration", + "artifact_links": { + "f5922bf7-05d8-590f-86e9-1d09f37f4fa6": { + "alias": "repair_test_evidence", + "description": "A local teaching artifact, not proof of a real valve's safety.", + "fragment": "acceptance", + "id": "f5922bf7-05d8-590f-86e9-1d09f37f4fa6", + "name": "Repair conversation acceptance notes", + "owner": "730b27ca-b039-5a3b-8dc6-03418f9061b3", + "relation": "Verifies", + "revision": "lesson-1", + "uri": "evidence/repair-check.md" + } + }, + "description": "A controller either resets a valve remotely or requests field repair. Compare the operational need with the explicitly chosen coordination-service boundary. Start with README.md beside project.arcadia. Units and guards are descriptive; this model does not simulate a real water network.", + "diagrams": { + "103ea62c-ac56-5827-94e7-cf09bca96ccc": { + "alias": "oa_allocation_view", + "description": "Teaching view: positions and filters do not change ownership or exchange identities.", + "id": "103ea62c-ac56-5827-94e7-cf09bca96ccc", + "layer": "Oa", + "name": "1 · OA responsibility and repair traffic", + "nodes": { + "202ebe37-ddb4-5099-8ce9-ec3e895ab9e9": { + "alias": "oa_allocation_view_oa_repair", + "collapsed": false, + "element": "a21465af-05f3-5fb5-8983-de26932422fb", + "id": "202ebe37-ddb4-5099-8ce9-ec3e895ab9e9", + "position": { + "x": 890.0, + "y": 170.0 + }, + "size": { + "height": 110.0, + "width": 245.0 + } + }, + "3191e05c-1c7f-5f0e-beb0-5f3bded54c48": { + "alias": "oa_allocation_view_oa_control", + "collapsed": false, + "element": "32aa9940-df6e-5a12-b9bd-6337e2d2ed22", + "id": "3191e05c-1c7f-5f0e-beb0-5f3bded54c48", + "position": { + "x": 60.0, + "y": 80.0 + }, + "size": { + "height": 110.0, + "width": 245.0 + } + }, + "5ae1c46d-59a3-50fd-8cc3-b292df21f951": { + "alias": "oa_allocation_view_oa_assess", + "collapsed": false, + "element": "61f7bbfb-74a4-5540-9182-2583dfb27a49", + "id": "5ae1c46d-59a3-50fd-8cc3-b292df21f951", + "position": { + "x": 100.0, + "y": 170.0 + }, + "size": { + "height": 110.0, + "width": 245.0 + } + }, + "7066f78c-9736-5349-b94a-0587331b980e": { + "alias": "oa_allocation_view_oa_reset", + "collapsed": false, + "element": "d0c8be87-d238-503a-a549-7558a210507f", + "id": "7066f78c-9736-5349-b94a-0587331b980e", + "position": { + "x": 100.0, + "y": 330.0 + }, + "size": { + "height": 110.0, + "width": 245.0 + } + }, + "d27f28ef-f10a-5355-9a05-6f2fd39b7de6": { + "alias": "oa_allocation_view_oa_technician", + "collapsed": false, + "element": "e07c3952-4a1a-5cc7-b7d5-03a01101ce49", + "id": "d27f28ef-f10a-5355-9a05-6f2fd39b7de6", + "position": { + "x": 850.0, + "y": 80.0 + }, + "size": { + "height": 110.0, + "width": 245.0 + } + }, + "edd74060-ac61-5450-a57c-a6577daa5d50": { + "alias": "oa_allocation_view_oa_confirm", + "collapsed": false, + "element": "727c0b5c-8db6-5eb7-83d6-735519c5949f", + "id": "edd74060-ac61-5450-a57c-a6577daa5d50", + "position": { + "x": 100.0, + "y": 490.0 + }, + "size": { + "height": 110.0, + "width": 245.0 + } + } + }, + "projection": "Allocation", + "routes": [], + "view_options": { + "coverage": "All", + "exchange_labels": "Name", + "hidden_edges": [], + "participant_categories": "All", + "relation_kinds": "All", + "work_categories": "All", + "work_contexts": "All" + } + }, + "30d5baf9-6581-5cb6-846a-bcaa1e6cce63": { + "alias": "sa_state_view", + "description": "Teaching view: positions and filters do not change ownership or exchange identities.", + "id": "30d5baf9-6581-5cb6-846a-bcaa1e6cce63", + "layer": "Sa", + "name": "5 · SA pressure supervision", + "nodes": { + "55a74f91-2025-5001-8db8-9566b1dbe783": { + "alias": "sa_state_view_sa_monitor_region", + "collapsed": false, + "element": "3ab11e24-4140-58fc-b3fa-da5f51c7fe2c", + "id": "55a74f91-2025-5001-8db8-9566b1dbe783", + "position": { + "x": 70.0, + "y": 95.0 + }, + "size": { + "height": 110.0, + "width": 245.0 + } + }, + "57acbb71-ca86-57fc-ae90-42dad195f0e0": { + "alias": "sa_state_view_sa_waiting", + "collapsed": false, + "element": "a6bb10b1-f1e5-5b31-8afd-5bad5a7b6c37", + "id": "57acbb71-ca86-57fc-ae90-42dad195f0e0", + "position": { + "x": 650.0, + "y": 200.0 + }, + "size": { + "height": 110.0, + "width": 245.0 + } + }, + "5e2326a0-0f6c-5f8d-8a21-fdded18a9281": { + "alias": "sa_state_view_sa_monitor_initial", + "collapsed": false, + "element": "57eb5348-14d8-560e-996a-8dbf993243e2", + "id": "5e2326a0-0f6c-5f8d-8a21-fdded18a9281", + "position": { + "x": 100.0, + "y": 200.0 + }, + "size": { + "height": 110.0, + "width": 245.0 + } + }, + "a676fbb9-0833-59a8-98cf-a10d8f4b7434": { + "alias": "sa_state_view_sa_monitor", + "collapsed": false, + "element": "132b3f28-3f88-5327-9868-8c8b645ed412", + "id": "a676fbb9-0833-59a8-98cf-a10d8f4b7434", + "position": { + "x": 30.0, + "y": 30.0 + }, + "size": { + "height": 110.0, + "width": 245.0 + } + }, + "b3af7b04-5a45-5b82-ab69-7eada4b876f0": { + "alias": "sa_state_view_sa_monitoring", + "collapsed": false, + "element": "8af21f9b-c21e-5aae-af0d-0958840f6655", + "id": "b3af7b04-5a45-5b82-ab69-7eada4b876f0", + "position": { + "x": 220.0, + "y": 200.0 + }, + "size": { + "height": 110.0, + "width": 245.0 + } + } + }, + "projection": { + "StateMachine": { + "machine": "132b3f28-3f88-5327-9868-8c8b645ed412" + } + }, + "routes": [], + "view_options": { + "coverage": "All", + "exchange_labels": "Name", + "hidden_edges": [], + "participant_categories": "All", + "relation_kinds": "All", + "work_categories": "All", + "work_contexts": "All" + } + }, + "35d3c24b-289e-59e5-a610-8333e2c6a4bb": { + "alias": "sa_allocation_view", + "description": "Teaching view: positions and filters do not change ownership or exchange identities.", + "id": "35d3c24b-289e-59e5-a610-8333e2c6a4bb", + "layer": "Sa", + "name": "2 · SA service boundary and functions", + "nodes": { + "34630a18-41b0-5fdd-bff4-ee86e93e8651": { + "alias": "sa_allocation_view_sa_repair", + "collapsed": false, + "element": "9497e10f-04c4-5586-8738-2464a6f00bd4", + "id": "34630a18-41b0-5fdd-bff4-ee86e93e8651", + "position": { + "x": 890.0, + "y": 170.0 + }, + "size": { + "height": 110.0, + "width": 245.0 + } + }, + "60f6ad74-b69e-5aef-b832-f1bd60b903ae": { + "alias": "sa_allocation_view_sa_assess", + "collapsed": false, + "element": "dddae020-a444-5d48-acc8-139d2696a672", + "id": "60f6ad74-b69e-5aef-b832-f1bd60b903ae", + "position": { + "x": 100.0, + "y": 170.0 + }, + "size": { + "height": 110.0, + "width": 245.0 + } + }, + "73406244-ebd7-5995-86c7-e17c73c50b32": { + "alias": "sa_allocation_view_sa_reset", + "collapsed": false, + "element": "09342ccb-044b-5483-ac58-87dc3cf7831c", + "id": "73406244-ebd7-5995-86c7-e17c73c50b32", + "position": { + "x": 100.0, + "y": 330.0 + }, + "size": { + "height": 110.0, + "width": 245.0 + } + }, + "7e3ba36f-bc68-5520-bdb9-77083bb7bba2": { + "alias": "sa_allocation_view_sa_confirm", + "collapsed": false, + "element": "d75eb3fa-a27d-52d5-8782-8b342b3865f6", + "id": "7e3ba36f-bc68-5520-bdb9-77083bb7bba2", + "position": { + "x": 100.0, + "y": 490.0 + }, + "size": { + "height": 110.0, + "width": 245.0 + } + }, + "8345c76a-8d85-5c31-902e-ec1cd33ed4a3": { + "alias": "sa_allocation_view_sa_control", + "collapsed": false, + "element": "435bf87c-73fd-5e4d-978a-4c471bc9eaf0", + "id": "8345c76a-8d85-5c31-902e-ec1cd33ed4a3", + "position": { + "x": 60.0, + "y": 80.0 + }, + "size": { + "height": 110.0, + "width": 245.0 + } + }, + "f7225d1c-e506-505d-bb20-916950269d4b": { + "alias": "sa_allocation_view_sa_technician", + "collapsed": false, + "element": "c05b9422-b9da-5de5-b21d-07ad23bd2b8a", + "id": "f7225d1c-e506-505d-bb20-916950269d4b", + "position": { + "x": 850.0, + "y": 80.0 + }, + "size": { + "height": 110.0, + "width": 245.0 + } + } + }, + "projection": "Allocation", + "routes": [], + "view_options": { + "coverage": "All", + "exchange_labels": "Name", + "hidden_edges": [], + "participant_categories": "All", + "relation_kinds": "All", + "work_categories": "All", + "work_contexts": "All" + } + }, + "3e6ad194-61b5-584c-b0f0-a78a20af5781": { + "alias": "sa_capability_view", + "description": "Teaching view: positions and filters do not change ownership or exchange identities.", + "id": "3e6ad194-61b5-584c-b0f0-a78a20af5781", + "layer": "Sa", + "name": "4 · SA mission and included capability", + "nodes": { + "069a3fb3-077c-59d8-91da-27b0665143c7": { + "alias": "sa_capability_view_sa_triage", + "collapsed": false, + "element": "bad8fa7c-f634-55fd-98d3-e1eb2da05d8f", + "id": "069a3fb3-077c-59d8-91da-27b0665143c7", + "position": { + "x": 800.0, + "y": 260.0 + }, + "size": { + "height": 110.0, + "width": 245.0 + } + }, + "41ddb68b-bd2b-5f91-82eb-efde01157828": { + "alias": "sa_capability_view_sa_control", + "collapsed": false, + "element": "435bf87c-73fd-5e4d-978a-4c471bc9eaf0", + "id": "41ddb68b-bd2b-5f91-82eb-efde01157828", + "position": { + "x": 60.0, + "y": 60.0 + }, + "size": { + "height": 110.0, + "width": 245.0 + } + }, + "4b814335-bf98-5b68-85d5-ea549766517a": { + "alias": "sa_capability_view_sa_mission", + "collapsed": false, + "element": "5ad034b1-084d-5273-9e70-971671766132", + "id": "4b814335-bf98-5b68-85d5-ea549766517a", + "position": { + "x": 420.0, + "y": 60.0 + }, + "size": { + "height": 110.0, + "width": 245.0 + } + }, + "d3bc13f9-7726-5280-83fe-63f391c45afb": { + "alias": "sa_capability_view_sa_restore", + "collapsed": false, + "element": "81259051-370a-512d-a3b5-6420a6f933b6", + "id": "d3bc13f9-7726-5280-83fe-63f391c45afb", + "position": { + "x": 420.0, + "y": 260.0 + }, + "size": { + "height": 110.0, + "width": 245.0 + } + } + }, + "projection": "Capabilities", + "routes": [], + "view_options": { + "coverage": "All", + "exchange_labels": "Name", + "hidden_edges": [], + "participant_categories": "All", + "relation_kinds": "All", + "work_categories": "All", + "work_contexts": "All" + } + }, + "50af4c9b-93ce-5ff5-a1f8-7a81eb97e779": { + "alias": "sa_service_view", + "description": "Teaching view: positions and filters do not change ownership or exchange identities.", + "id": "50af4c9b-93ce-5ff5-a1f8-7a81eb97e779", + "layer": "Sa", + "name": "3 · SA service conversation only", + "nodes": { + "40210589-69f7-5209-b329-10bb83cf615c": { + "alias": "sa_service_view_sa_technician", + "collapsed": false, + "element": "c05b9422-b9da-5de5-b21d-07ad23bd2b8a", + "id": "40210589-69f7-5209-b329-10bb83cf615c", + "position": { + "x": 850.0, + "y": 80.0 + }, + "size": { + "height": 110.0, + "width": 245.0 + } + }, + "439f1e45-e5ed-567c-978b-4c93ef267db1": { + "alias": "sa_service_view_sa_assess", + "collapsed": false, + "element": "dddae020-a444-5d48-acc8-139d2696a672", + "id": "439f1e45-e5ed-567c-978b-4c93ef267db1", + "position": { + "x": 100.0, + "y": 170.0 + }, + "size": { + "height": 110.0, + "width": 245.0 + } + }, + "6f138672-149b-5f88-ab07-7fc413a42262": { + "alias": "sa_service_view_sa_confirm", + "collapsed": false, + "element": "d75eb3fa-a27d-52d5-8782-8b342b3865f6", + "id": "6f138672-149b-5f88-ab07-7fc413a42262", + "position": { + "x": 100.0, + "y": 490.0 + }, + "size": { + "height": 110.0, + "width": 245.0 + } + }, + "ae36489d-6ec8-5f1c-b603-8b497227efba": { + "alias": "sa_service_view_sa_repair", + "collapsed": false, + "element": "9497e10f-04c4-5586-8738-2464a6f00bd4", + "id": "ae36489d-6ec8-5f1c-b603-8b497227efba", + "position": { + "x": 890.0, + "y": 170.0 + }, + "size": { + "height": 110.0, + "width": 245.0 + } + }, + "d52da4e6-40b7-5dbc-84fb-80c443711c69": { + "alias": "sa_service_view_sa_reset", + "collapsed": false, + "element": "09342ccb-044b-5483-ac58-87dc3cf7831c", + "id": "d52da4e6-40b7-5dbc-84fb-80c443711c69", + "position": { + "x": 100.0, + "y": 330.0 + }, + "size": { + "height": 110.0, + "width": 245.0 + } + }, + "f53d4352-b042-56a6-8b3e-c51cd27254f9": { + "alias": "sa_service_view_sa_control", + "collapsed": false, + "element": "435bf87c-73fd-5e4d-978a-4c471bc9eaf0", + "id": "f53d4352-b042-56a6-8b3e-c51cd27254f9", + "position": { + "x": 60.0, + "y": 80.0 + }, + "size": { + "height": 110.0, + "width": 245.0 + } + } + }, + "projection": "Allocation", + "routes": [], + "view_options": { + "coverage": "All", + "exchange_labels": "NameAndItems", + "hidden_edges": [], + "participant_categories": { + "Any": [ + "781cbe75-410f-5cc5-aeb8-a43491f77b99" + ] + }, + "relation_kinds": "All", + "work_categories": { + "Any": [] + }, + "work_contexts": "All" + } + } + }, + "elements": { + "01490fa8-2f01-5ac8-9722-d55d45414379": { + "alias": "sa_high_pressure", + "body": { + "Sa": { + "Shared": { + "Event": { + "body": { + "Change": { + "expression": "measured_pressure > operating_limit" + } + } + } + } + } + }, + "description": "", + "id": "01490fa8-2f01-5ac8-9722-d55d45414379", + "name": "Pressure alarm detected", + "parent": null + }, + "022d3cfa-bbaf-5e13-924a-8e55099b8745": { + "alias": "oa_assessment_procedure", + "body": { + "Oa": { + "Process": { + "steps": [ + "942975b8-0bef-5ae8-9fcb-c37497833fb0" + ] + } + } + }, + "description": "", + "id": "022d3cfa-bbaf-5e13-924a-8e55099b8745", + "name": "Assess an alarm procedure", + "parent": null + }, + "09342ccb-044b-5483-ac58-87dc3cf7831c": { + "alias": "sa_reset", + "body": { + "Sa": "Function" + }, + "description": "", + "id": "09342ccb-044b-5483-ac58-87dc3cf7831c", + "name": "Reset valve remotely", + "parent": "58867e7d-916e-5ebc-9e4c-8dbed1314be3" + }, + "0b07b9ed-492d-57f6-b0b1-ce8a709238a7": { + "alias": "oa_assess_step", + "body": { + "Oa": { + "Shared": { + "Occurrence": { + "body": { + "SequenceReference": { + "sequence": "022d3cfa-bbaf-5e13-924a-8e55099b8745" + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "0b07b9ed-492d-57f6-b0b1-ce8a709238a7", + "name": "Assess the alarm", + "parent": "58bae2b0-f560-50f2-818d-19091d22d18a" + }, + "0f195fea-3493-5ebd-966d-da9eddeb05d7": { + "alias": "sa_repair_step", + "body": { + "Sa": { + "Shared": { + "Occurrence": { + "body": { + "Action": { + "action": "9497e10f-04c4-5586-8738-2464a6f00bd4", + "lifeline": null + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "0f195fea-3493-5ebd-966d-da9eddeb05d7", + "name": "Repair the valve", + "parent": "93eb6479-54e9-59cb-ac7b-16912347bfc0" + }, + "132b3f28-3f88-5327-9868-8c8b645ed412": { + "alias": "sa_monitor", + "body": { + "Sa": { + "Shared": "StateMachine" + } + }, + "description": "", + "id": "132b3f28-3f88-5327-9868-8c8b645ed412", + "name": "Pressure supervision", + "parent": "435bf87c-73fd-5e4d-978a-4c471bc9eaf0" + }, + "155e4fe4-9e3b-5f4e-b886-28abcc3f086b": { + "alias": "sa_outer_technician", + "body": { + "Sa": { + "Shared": { + "Lifeline": { + "represented": "c05b9422-b9da-5de5-b21d-07ad23bd2b8a" + } + } + } + }, + "description": "", + "id": "155e4fe4-9e3b-5f4e-b886-28abcc3f086b", + "name": "Technician", + "parent": "f746a1cd-ff9f-55c0-b325-01c03d2f4fae" + }, + "1970608f-85d1-5234-ac86-5e2b0df27dc3": { + "alias": "oa_monitor", + "body": { + "Oa": { + "Shared": "StateMachine" + } + }, + "description": "", + "id": "1970608f-85d1-5234-ac86-5e2b0df27dc3", + "name": "Pressure supervision", + "parent": "32aa9940-df6e-5a12-b9bd-6337e2d2ed22" + }, + "19bd3a3a-4d0c-56d5-bf50-a6b43fd81771": { + "alias": "oa_contact_category", + "body": { + "Oa": { + "Shared": { + "ExchangeCategory": { + "exchanges": [ + "27b47887-baf0-518b-bf87-f5acbf7d0b93" + ], + "family": "Participant" + } + } + } + }, + "description": "", + "id": "19bd3a3a-4d0c-56d5-bf50-a6b43fd81771", + "name": "Field contact", + "parent": null + }, + "1b91f8a7-0bdb-514e-b1cd-955658e09927": { + "alias": "oa_restore_work", + "body": { + "Oa": "Activity" + }, + "description": "", + "id": "1b91f8a7-0bdb-514e-b1cd-955658e09927", + "name": "Restore safe pressure", + "parent": null + }, + "1c9da843-e2d3-5591-8e3f-db083a42867e": { + "alias": "sa_use_conversation", + "body": { + "Sa": { + "Shared": { + "Occurrence": { + "body": { + "ScenarioUse": { + "bindings": [ + { + "local": "1edfcf9e-9bfa-51f1-80d5-62b8fd8bb023", + "referenced": "98c61788-2fee-51f4-8cf9-de48e8c70e9e" + }, + { + "local": "155e4fe4-9e3b-5f4e-b886-28abcc3f086b", + "referenced": "6249b54a-e396-5338-82b9-89266c55670d" + } + ], + "scenario": "730b27ca-b039-5a3b-8dc6-03418f9061b3" + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "1c9da843-e2d3-5591-8e3f-db083a42867e", + "name": "Use the reviewed repair conversation", + "parent": "f746a1cd-ff9f-55c0-b325-01c03d2f4fae" + }, + "1edfcf9e-9bfa-51f1-80d5-62b8fd8bb023": { + "alias": "sa_outer_controller", + "body": { + "Sa": { + "Shared": { + "Lifeline": { + "represented": "435bf87c-73fd-5e4d-978a-4c471bc9eaf0" + } + } + } + }, + "description": "", + "id": "1edfcf9e-9bfa-51f1-80d5-62b8fd8bb023", + "name": "Controller", + "parent": "f746a1cd-ff9f-55c0-b325-01c03d2f4fae" + }, + "2011b3ac-614b-5a47-8891-7ff81965f425": { + "alias": "oa_outer_controller", + "body": { + "Oa": { + "Shared": { + "Lifeline": { + "represented": "32aa9940-df6e-5a12-b9bd-6337e2d2ed22" + } + } + } + }, + "description": "", + "id": "2011b3ac-614b-5a47-8891-7ff81965f425", + "name": "Controller", + "parent": "d6f881a4-95da-54e9-ad97-1b8965532629" + }, + "20472233-5ce6-5ffe-b4ad-0bdbccf3e423": { + "alias": "oa_conversation", + "body": { + "Oa": { + "Shared": { + "Scenario": { + "context": "3dfee23a-148b-5cec-ad2d-b774e84ea5bb", + "postcondition": "The controller has received the measured pressure after repair", + "precondition": "A pressure alarm has been assessed", + "steps": [ + "b97437c6-cd7a-5a05-b537-b30a17dd936a", + "cc2d497a-fd15-5455-9ee5-e70eb95811d8" + ], + "viewpoint": "ParticipantInteraction" + } + } + } + }, + "description": "", + "id": "20472233-5ce6-5ffe-b4ad-0bdbccf3e423", + "name": "Repair request and measured reply", + "parent": null + }, + "24a6850e-b819-57e0-af88-ca4ab76581b7": { + "alias": "sa_repair_request_out", + "body": { + "Sa": { + "Shared": { + "Port": { + "contract": { + "FunctionOutput": { + "outgoing_items": [ + "a962fc5e-3ab0-5296-8b0d-fd84633f9218" + ] + } + }, + "legacy": null + } + } + } + }, + "description": "", + "id": "24a6850e-b819-57e0-af88-ca4ab76581b7", + "name": "Request field repair output", + "parent": "dddae020-a444-5d48-acc8-139d2696a672" + }, + "30c8fad9-a49b-5692-9542-3148e76afd7b": { + "alias": "sa_decision", + "body": { + "Sa": { + "Shared": { + "Occurrence": { + "body": { + "Control": { + "kind": "Choice" + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "30c8fad9-a49b-5692-9542-3148e76afd7b", + "name": "Can a remote reset safely recover pressure?", + "parent": "5139ce73-56fd-5875-ba3a-e569fc890231" + }, + "32aa9940-df6e-5a12-b9bd-6337e2d2ed22": { + "alias": "oa_control", + "body": { + "Oa": "Entity" + }, + "description": "", + "id": "32aa9940-df6e-5a12-b9bd-6337e2d2ed22", + "name": "Control room", + "parent": null + }, + "391af7c4-b07d-53a7-8ddd-5c81461fc4f8": { + "alias": "sa_repair_report_in", + "body": { + "Sa": { + "Shared": { + "Port": { + "contract": { + "FunctionInput": { + "incoming_items": [ + "a962fc5e-3ab0-5296-8b0d-fd84633f9218" + ] + } + }, + "legacy": null + } + } + } + }, + "description": "", + "id": "391af7c4-b07d-53a7-8ddd-5c81461fc4f8", + "name": "Report repair result input", + "parent": "d75eb3fa-a27d-52d5-8782-8b342b3865f6" + }, + "3ab11e24-4140-58fc-b3fa-da5f51c7fe2c": { + "alias": "sa_monitor_region", + "body": { + "Sa": { + "Shared": "Region" + } + }, + "description": "", + "id": "3ab11e24-4140-58fc-b3fa-da5f51c7fe2c", + "name": "Supervision cycle", + "parent": "132b3f28-3f88-5327-9868-8c8b645ed412" + }, + "3dfee23a-148b-5cec-ad2d-b774e84ea5bb": { + "alias": "oa_restore", + "body": { + "Oa": "Capability" + }, + "description": "", + "id": "3dfee23a-148b-5cec-ad2d-b774e84ea5bb", + "name": "Restore a safe supply", + "parent": null + }, + "40d94322-baa2-5c81-b261-ff47cdc33782": { + "alias": "sa_request_step", + "body": { + "Sa": { + "Shared": { + "Occurrence": { + "body": { + "Exchange": { + "exchange": "93474111-f23e-56c1-b61b-b7c2396b91bd", + "message_kind": "Asynchronous", + "receiver": null, + "reply_to": null, + "sender": null, + "values": [] + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "40d94322-baa2-5c81-b261-ff47cdc33782", + "name": "Request the field repair", + "parent": "93eb6479-54e9-59cb-ac7b-16912347bfc0" + }, + "4149a872-3440-59de-9879-8981e78d27ab": { + "alias": "sa_audit_thresholds", + "body": { + "Sa": "Function" + }, + "description": "Deliberately unfinished: assigned to the service, but no behavior context yet. Model checks should expose this one work_without_behavior_context warning.", + "id": "4149a872-3440-59de-9879-8981e78d27ab", + "name": "Audit pressure thresholds", + "parent": null + }, + "41859a65-ded2-547b-ab03-14e2fa740cf9": { + "alias": "oa_caller", + "body": { + "Oa": { + "Shared": { + "Lifeline": { + "represented": "32aa9940-df6e-5a12-b9bd-6337e2d2ed22" + } + } + } + }, + "description": "", + "id": "41859a65-ded2-547b-ab03-14e2fa740cf9", + "name": "Controller", + "parent": "20472233-5ce6-5ffe-b4ad-0bdbccf3e423" + }, + "435bf87c-73fd-5e4d-978a-4c471bc9eaf0": { + "alias": "sa_control", + "body": { + "Sa": "System" + }, + "description": "", + "id": "435bf87c-73fd-5e4d-978a-4c471bc9eaf0", + "name": "Pressure coordination service", + "parent": null + }, + "47bec4f9-d6d0-5ed1-adca-fa0d960dc416": { + "alias": "sa_confirm_step", + "body": { + "Sa": { + "Shared": { + "Occurrence": { + "body": { + "Action": { + "action": "d75eb3fa-a27d-52d5-8782-8b342b3865f6", + "lifeline": null + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "47bec4f9-d6d0-5ed1-adca-fa0d960dc416", + "name": "Confirm safe pressure", + "parent": "5139ce73-56fd-5875-ba3a-e569fc890231" + }, + "4e1c0a56-ce80-5f13-a93a-6956de54880c": { + "alias": "sa_reply", + "body": { + "Sa": { + "Shared": { + "Occurrence": { + "body": { + "Exchange": { + "exchange": "63009b5f-539e-5914-b630-ec6b7fefb4d5", + "message_kind": "Reply", + "receiver": "98c61788-2fee-51f4-8cf9-de48e8c70e9e", + "reply_to": "8bab4783-a098-5984-9e36-493957caf26c", + "sender": "6249b54a-e396-5338-82b9-89266c55670d", + "values": [ + { + "expression": "320.0", + "field": "bb12ba5d-aab5-5a1b-99de-c767f5365b57", + "path": [] + } + ] + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "4e1c0a56-ce80-5f13-a93a-6956de54880c", + "name": "Return pressure after repair", + "parent": "730b27ca-b039-5a3b-8dc6-03418f9061b3" + }, + "4ed0dd9d-c9e0-5652-aedf-5f0ab4328a07": { + "alias": "sa_merge", + "body": { + "Sa": { + "Shared": { + "Occurrence": { + "body": { + "Control": { + "kind": "Merge" + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "4ed0dd9d-c9e0-5652-aedf-5f0ab4328a07", + "name": "Recovery path completed", + "parent": "5139ce73-56fd-5875-ba3a-e569fc890231" + }, + "5139ce73-56fd-5875-ba3a-e569fc890231": { + "alias": "sa_response", + "body": { + "Sa": { + "FunctionalChain": { + "steps": [ + "9024243c-ccc1-5edb-8477-2aa16e5e9a50", + "30c8fad9-a49b-5692-9542-3148e76afd7b", + "bfa2ef0b-ce68-55c2-a9e5-31ea8a74fce6", + "d5e61c5d-510b-5091-a878-da46f3a9e152", + "4ed0dd9d-c9e0-5652-aedf-5f0ab4328a07", + "47bec4f9-d6d0-5ed1-adca-fa0d960dc416" + ] + } + } + }, + "description": "", + "id": "5139ce73-56fd-5875-ba3a-e569fc890231", + "name": "Handle a pressure alarm", + "parent": null + }, + "57eb5348-14d8-560e-996a-8dbf993243e2": { + "alias": "sa_monitor_initial", + "body": { + "Sa": { + "Shared": { + "State": { + "do_activity": "", + "entry": "", + "exit": "", + "kind": "Initial" + } + } + } + }, + "description": "", + "id": "57eb5348-14d8-560e-996a-8dbf993243e2", + "name": "Start", + "parent": "3ab11e24-4140-58fc-b3fa-da5f51c7fe2c" + }, + "58867e7d-916e-5ebc-9e4c-8dbed1314be3": { + "alias": "sa_restore_work", + "body": { + "Sa": "Function" + }, + "description": "", + "id": "58867e7d-916e-5ebc-9e4c-8dbed1314be3", + "name": "Restore safe pressure", + "parent": null + }, + "58bae2b0-f560-50f2-818d-19091d22d18a": { + "alias": "oa_response", + "body": { + "Oa": { + "Process": { + "steps": [ + "0b07b9ed-492d-57f6-b0b1-ce8a709238a7", + "b280c6ca-e5f9-5424-a5c1-5676e01c2371", + "d2026fc2-74a8-5e22-9942-ff3eb68a3677", + "fc6763bf-a534-54bf-afcd-57ab285ff07d", + "6b945a6d-6aa0-5dd3-96e6-2e8d757d167d", + "e00594a3-6122-5a6b-b3c2-ecb5506c741d" + ] + } + } + }, + "description": "", + "id": "58bae2b0-f560-50f2-818d-19091d22d18a", + "name": "Handle a pressure alarm", + "parent": null + }, + "58c15833-6e75-523a-b57f-a88f19f6d672": { + "alias": "oa_waiting", + "body": { + "Oa": { + "Shared": { + "State": { + "do_activity": "", + "entry": "", + "exit": "", + "kind": "State" + } + } + } + }, + "description": "", + "id": "58c15833-6e75-523a-b57f-a88f19f6d672", + "name": "Awaiting repair", + "parent": "8412e9c6-96fe-5ed6-a903-1d37ec3c3bf7" + }, + "5ad034b1-084d-5273-9e70-971671766132": { + "alias": "sa_mission", + "body": { + "Sa": "Mission" + }, + "description": "", + "id": "5ad034b1-084d-5273-9e70-971671766132", + "name": "Maintain safe water supply", + "parent": null + }, + "5ba8079c-2dbe-5e98-ae82-2b60c6020a02": { + "alias": "oa_request_step", + "body": { + "Oa": { + "Shared": { + "Occurrence": { + "body": { + "Exchange": { + "exchange": "cf423ea2-8b2e-5a27-93d4-5e8542d9db8d", + "message_kind": "Asynchronous", + "receiver": null, + "reply_to": null, + "sender": null, + "values": [] + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "5ba8079c-2dbe-5e98-ae82-2b60c6020a02", + "name": "Request the field repair", + "parent": "5d3af417-244c-54bb-9588-16daedda4e1f" + }, + "5d3af417-244c-54bb-9588-16daedda4e1f": { + "alias": "oa_field_procedure", + "body": { + "Oa": { + "Process": { + "steps": [ + "5ba8079c-2dbe-5e98-ae82-2b60c6020a02", + "c59432fe-6092-5ee0-908d-9dbf39476471", + "df2fd3f8-6bc2-5380-a13f-36643ed35ac7" + ] + } + } + }, + "description": "", + "id": "5d3af417-244c-54bb-9588-16daedda4e1f", + "name": "Field repair procedure", + "parent": null + }, + "61f7bbfb-74a4-5540-9182-2583dfb27a49": { + "alias": "oa_assess", + "body": { + "Oa": "Activity" + }, + "description": "", + "id": "61f7bbfb-74a4-5540-9182-2583dfb27a49", + "name": "Assess pressure alarm", + "parent": "1b91f8a7-0bdb-514e-b1cd-955658e09927" + }, + "6249b54a-e396-5338-82b9-89266c55670d": { + "alias": "sa_responder", + "body": { + "Sa": { + "Shared": { + "Lifeline": { + "represented": "c05b9422-b9da-5de5-b21d-07ad23bd2b8a" + } + } + } + }, + "description": "", + "id": "6249b54a-e396-5338-82b9-89266c55670d", + "name": "Technician", + "parent": "730b27ca-b039-5a3b-8dc6-03418f9061b3" + }, + "65d6b8d6-271a-5c84-8b42-abbe310c955e": { + "alias": "oa_high_pressure", + "body": { + "Oa": { + "Shared": { + "Event": { + "body": { + "Change": { + "expression": "measured_pressure > operating_limit" + } + } + } + } + } + }, + "description": "", + "id": "65d6b8d6-271a-5c84-8b42-abbe310c955e", + "name": "Pressure alarm detected", + "parent": null + }, + "6a30b763-cc51-546d-907f-5c63657cfd03": { + "alias": "oa_triage", + "body": { + "Oa": "Capability" + }, + "description": "", + "id": "6a30b763-cc51-546d-907f-5c63657cfd03", + "name": "Assess an alarm", + "parent": null + }, + "6b945a6d-6aa0-5dd3-96e6-2e8d757d167d": { + "alias": "oa_merge", + "body": { + "Oa": { + "Shared": { + "Occurrence": { + "body": { + "Control": { + "kind": "Merge" + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "6b945a6d-6aa0-5dd3-96e6-2e8d757d167d", + "name": "Recovery path completed", + "parent": "58bae2b0-f560-50f2-818d-19091d22d18a" + }, + "6cbde0d8-9f5f-510a-a8c1-e29cb99ad4ae": { + "alias": "oa_monitoring", + "body": { + "Oa": { + "Shared": { + "State": { + "do_activity": "", + "entry": "", + "exit": "", + "kind": "State" + } + } + } + }, + "description": "", + "id": "6cbde0d8-9f5f-510a-a8c1-e29cb99ad4ae", + "name": "Monitoring", + "parent": "8412e9c6-96fe-5ed6-a903-1d37ec3c3bf7" + }, + "727c0b5c-8db6-5eb7-83d6-735519c5949f": { + "alias": "oa_confirm", + "body": { + "Oa": "Activity" + }, + "description": "", + "id": "727c0b5c-8db6-5eb7-83d6-735519c5949f", + "name": "Confirm safe pressure", + "parent": "1b91f8a7-0bdb-514e-b1cd-955658e09927" + }, + "730b27ca-b039-5a3b-8dc6-03418f9061b3": { + "alias": "sa_conversation", + "body": { + "Sa": { + "Shared": { + "Scenario": { + "context": "81259051-370a-512d-a3b5-6420a6f933b6", + "postcondition": "The controller has received the measured pressure after repair", + "precondition": "A pressure alarm has been assessed", + "steps": [ + "8bab4783-a098-5984-9e36-493957caf26c", + "4e1c0a56-ce80-5f13-a93a-6956de54880c" + ], + "viewpoint": "BoundaryInterface" + } + } + } + }, + "description": "", + "id": "730b27ca-b039-5a3b-8dc6-03418f9061b3", + "name": "Repair request and measured reply", + "parent": null + }, + "781cbe75-410f-5cc5-aeb8-a43491f77b99": { + "alias": "sa_contact_category", + "body": { + "Sa": { + "Shared": { + "ExchangeCategory": { + "exchanges": [ + "63009b5f-539e-5914-b630-ec6b7fefb4d5" + ], + "family": "Participant" + } + } + } + }, + "description": "", + "id": "781cbe75-410f-5cc5-aeb8-a43491f77b99", + "name": "Field contact", + "parent": null + }, + "81259051-370a-512d-a3b5-6420a6f933b6": { + "alias": "sa_restore", + "body": { + "Sa": "Capability" + }, + "description": "", + "id": "81259051-370a-512d-a3b5-6420a6f933b6", + "name": "Restore a safe supply", + "parent": null + }, + "8412e9c6-96fe-5ed6-a903-1d37ec3c3bf7": { + "alias": "oa_monitor_region", + "body": { + "Oa": { + "Shared": "Region" + } + }, + "description": "", + "id": "8412e9c6-96fe-5ed6-a903-1d37ec3c3bf7", + "name": "Supervision cycle", + "parent": "1970608f-85d1-5234-ac86-5e2b0df27dc3" + }, + "87d0a95b-af1b-5352-b753-e4c6533671a5": { + "alias": "sa_pressure", + "body": { + "Sa": { + "Shared": { + "DataType": { + "default": null, + "definition": { + "Real": { + "maximum": 600.0, + "minimum": 0.0 + } + }, + "unit": "kPa" + } + } + } + }, + "description": "", + "id": "87d0a95b-af1b-5352-b753-e4c6533671a5", + "name": "Measured pressure", + "parent": null + }, + "8af21f9b-c21e-5aae-af0d-0958840f6655": { + "alias": "sa_monitoring", + "body": { + "Sa": { + "Shared": { + "State": { + "do_activity": "", + "entry": "", + "exit": "", + "kind": "State" + } + } + } + }, + "description": "", + "id": "8af21f9b-c21e-5aae-af0d-0958840f6655", + "name": "Monitoring", + "parent": "3ab11e24-4140-58fc-b3fa-da5f51c7fe2c" + }, + "8bab4783-a098-5984-9e36-493957caf26c": { + "alias": "sa_call", + "body": { + "Sa": { + "Shared": { + "Occurrence": { + "body": { + "Exchange": { + "exchange": "63009b5f-539e-5914-b630-ec6b7fefb4d5", + "message_kind": "Call", + "receiver": "6249b54a-e396-5338-82b9-89266c55670d", + "reply_to": null, + "sender": "98c61788-2fee-51f4-8cf9-de48e8c70e9e", + "values": [ + { + "expression": "420.0", + "field": "bb12ba5d-aab5-5a1b-99de-c767f5365b57", + "path": [] + } + ] + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "8bab4783-a098-5984-9e36-493957caf26c", + "name": "Request valve repair", + "parent": "730b27ca-b039-5a3b-8dc6-03418f9061b3" + }, + "8bc6d0a4-3e87-559b-8bd7-1b679a2db5b7": { + "alias": "oa_pressure_parameter", + "body": { + "Oa": { + "Shared": { + "DataField": { + "default": null, + "direction": "InOut", + "maximum": 1, + "minimum": 1, + "storage": "Value", + "type_ref": { + "Named": "e7824764-5db9-5384-8198-2fbaea2b10b2" + }, + "unit": "" + } + } + } + }, + "description": "", + "id": "8bc6d0a4-3e87-559b-8bd7-1b679a2db5b7", + "name": "Pressure before / after repair", + "parent": "d736c7d6-d369-550a-8ba4-dae223e40bb3" + }, + "9024243c-ccc1-5edb-8477-2aa16e5e9a50": { + "alias": "sa_assess_step", + "body": { + "Sa": { + "Shared": { + "Occurrence": { + "body": { + "SequenceReference": { + "sequence": "acd5a018-f559-5298-a40d-1cf6e1353e74" + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "9024243c-ccc1-5edb-8477-2aa16e5e9a50", + "name": "Assess the alarm", + "parent": "5139ce73-56fd-5875-ba3a-e569fc890231" + }, + "9349b353-53f2-56f8-b571-a05b09335cdf": { + "alias": "oa_repair_traffic", + "body": { + "Oa": { + "Shared": { + "ExchangeCategory": { + "exchanges": [ + "cf423ea2-8b2e-5a27-93d4-5e8542d9db8d", + "b436d0b3-c824-5a96-af6b-2c269816d1cc" + ], + "family": "Work" + } + } + } + }, + "description": "", + "id": "9349b353-53f2-56f8-b571-a05b09335cdf", + "name": "Repair work exchanges", + "parent": null + }, + "93eb6479-54e9-59cb-ac7b-16912347bfc0": { + "alias": "sa_field_procedure", + "body": { + "Sa": { + "FunctionalChain": { + "steps": [ + "40d94322-baa2-5c81-b261-ff47cdc33782", + "0f195fea-3493-5ebd-966d-da9eddeb05d7", + "ea32e4ec-8bdc-57ea-8a90-7b09ba4f0eac" + ] + } + } + }, + "description": "", + "id": "93eb6479-54e9-59cb-ac7b-16912347bfc0", + "name": "Field repair procedure", + "parent": null + }, + "942975b8-0bef-5ae8-9fcb-c37497833fb0": { + "alias": "oa_assessment_action", + "body": { + "Oa": { + "Shared": { + "Occurrence": { + "body": { + "Action": { + "action": "61f7bbfb-74a4-5540-9182-2583dfb27a49", + "lifeline": null + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "942975b8-0bef-5ae8-9fcb-c37497833fb0", + "name": "Assess pressure alarm", + "parent": "022d3cfa-bbaf-5e13-924a-8e55099b8745" + }, + "9497e10f-04c4-5586-8738-2464a6f00bd4": { + "alias": "sa_repair", + "body": { + "Sa": "Function" + }, + "description": "", + "id": "9497e10f-04c4-5586-8738-2464a6f00bd4", + "name": "Repair valve in the field", + "parent": "58867e7d-916e-5ebc-9e4c-8dbed1314be3" + }, + "98c61788-2fee-51f4-8cf9-de48e8c70e9e": { + "alias": "sa_caller", + "body": { + "Sa": { + "Shared": { + "Lifeline": { + "represented": "435bf87c-73fd-5e4d-978a-4c471bc9eaf0" + } + } + } + }, + "description": "", + "id": "98c61788-2fee-51f4-8cf9-de48e8c70e9e", + "name": "Controller", + "parent": "730b27ca-b039-5a3b-8dc6-03418f9061b3" + }, + "98d411e7-7c65-5c3f-b543-8bf0f2522ea2": { + "alias": "sa_control_port", + "body": { + "Sa": { + "Shared": { + "Port": { + "contract": { + "Component": { + "kind": "Standard", + "orientation": "Unset" + } + }, + "legacy": null + } + } + } + }, + "description": "Explicitly chosen Standard component port for the repair service.", + "id": "98d411e7-7c65-5c3f-b543-8bf0f2522ea2", + "name": "Repair service client", + "parent": "435bf87c-73fd-5e4d-978a-4c471bc9eaf0" + }, + "994faed7-dbc8-5b96-9d62-7604ac0fbc3a": { + "alias": "sa_repair_report_out", + "body": { + "Sa": { + "Shared": { + "Port": { + "contract": { + "FunctionOutput": { + "outgoing_items": [ + "a962fc5e-3ab0-5296-8b0d-fd84633f9218" + ] + } + }, + "legacy": null + } + } + } + }, + "description": "", + "id": "994faed7-dbc8-5b96-9d62-7604ac0fbc3a", + "name": "Report repair result output", + "parent": "9497e10f-04c4-5586-8738-2464a6f00bd4" + }, + "9ff94014-afa1-50ab-a4d3-8e9dd0565cc5": { + "alias": "oa_use_conversation", + "body": { + "Oa": { + "Shared": { + "Occurrence": { + "body": { + "ScenarioUse": { + "bindings": [ + { + "local": "2011b3ac-614b-5a47-8891-7ff81965f425", + "referenced": "41859a65-ded2-547b-ab03-14e2fa740cf9" + }, + { + "local": "fffff882-78fd-5415-928d-c1ef7fac6576", + "referenced": "fc81c5f0-0442-5b88-992b-e5b10f351c59" + } + ], + "scenario": "20472233-5ce6-5ffe-b4ad-0bdbccf3e423" + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "9ff94014-afa1-50ab-a4d3-8e9dd0565cc5", + "name": "Use the reviewed repair conversation", + "parent": "d6f881a4-95da-54e9-ad97-1b8965532629" + }, + "a21465af-05f3-5fb5-8983-de26932422fb": { + "alias": "oa_repair", + "body": { + "Oa": "Activity" + }, + "description": "", + "id": "a21465af-05f3-5fb5-8983-de26932422fb", + "name": "Repair valve in the field", + "parent": "1b91f8a7-0bdb-514e-b1cd-955658e09927" + }, + "a4b8942e-a975-5f88-ad14-8f38c345baac": { + "alias": "sa_repair_interface", + "body": { + "Sa": { + "Shared": { + "Interface": { + "supertype": null + } + } + } + }, + "description": "", + "id": "a4b8942e-a975-5f88-ad14-8f38c345baac", + "name": "Valve repair service", + "parent": null + }, + "a6bb10b1-f1e5-5b31-8afd-5bad5a7b6c37": { + "alias": "sa_waiting", + "body": { + "Sa": { + "Shared": { + "State": { + "do_activity": "", + "entry": "", + "exit": "", + "kind": "State" + } + } + } + }, + "description": "", + "id": "a6bb10b1-f1e5-5b31-8afd-5bad5a7b6c37", + "name": "Awaiting repair", + "parent": "3ab11e24-4140-58fc-b3fa-da5f51c7fe2c" + }, + "a7ffb869-9dde-5e76-b276-c719c5c143a9": { + "alias": "oa_monitor_initial", + "body": { + "Oa": { + "Shared": { + "State": { + "do_activity": "", + "entry": "", + "exit": "", + "kind": "Initial" + } + } + } + }, + "description": "", + "id": "a7ffb869-9dde-5e76-b276-c719c5c143a9", + "name": "Start", + "parent": "8412e9c6-96fe-5ed6-a903-1d37ec3c3bf7" + }, + "a962fc5e-3ab0-5296-8b0d-fd84633f9218": { + "alias": "sa_repair_operation", + "body": { + "Sa": { + "Shared": { + "ExchangeItem": { + "kind": "Information", + "mechanism": "Operation", + "supertype": null + } + } + } + }, + "description": "", + "id": "a962fc5e-3ab0-5296-8b0d-fd84633f9218", + "name": "Valve repair", + "parent": null + }, + "a9a47e48-100c-57a8-95f0-7fe24da94f94": { + "alias": "sa_repair_traffic", + "body": { + "Sa": { + "Shared": { + "ExchangeCategory": { + "exchanges": [ + "93474111-f23e-56c1-b61b-b7c2396b91bd", + "684eadc3-e670-5779-a60f-bbc9a5bfb062" + ], + "family": "Work" + } + } + } + }, + "description": "", + "id": "a9a47e48-100c-57a8-95f0-7fe24da94f94", + "name": "Repair work exchanges", + "parent": null + }, + "acd5a018-f559-5298-a40d-1cf6e1353e74": { + "alias": "sa_assessment_procedure", + "body": { + "Sa": { + "FunctionalChain": { + "steps": [ + "bae5b192-5b8e-51c6-82ae-2331af0d33bf" + ] + } + } + }, + "description": "", + "id": "acd5a018-f559-5298-a40d-1cf6e1353e74", + "name": "Assess an alarm procedure", + "parent": null + }, + "b280c6ca-e5f9-5424-a5c1-5676e01c2371": { + "alias": "oa_decision", + "body": { + "Oa": { + "Shared": { + "Occurrence": { + "body": { + "Control": { + "kind": "Choice" + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "b280c6ca-e5f9-5424-a5c1-5676e01c2371", + "name": "Can a remote reset safely recover pressure?", + "parent": "58bae2b0-f560-50f2-818d-19091d22d18a" + }, + "b97437c6-cd7a-5a05-b537-b30a17dd936a": { + "alias": "oa_call", + "body": { + "Oa": { + "Shared": { + "Occurrence": { + "body": { + "Exchange": { + "exchange": "27b47887-baf0-518b-bf87-f5acbf7d0b93", + "message_kind": "Call", + "receiver": "fc81c5f0-0442-5b88-992b-e5b10f351c59", + "reply_to": null, + "sender": "41859a65-ded2-547b-ab03-14e2fa740cf9", + "values": [ + { + "expression": "420.0", + "field": "8bc6d0a4-3e87-559b-8bd7-1b679a2db5b7", + "path": [] + } + ] + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "b97437c6-cd7a-5a05-b537-b30a17dd936a", + "name": "Request valve repair", + "parent": "20472233-5ce6-5ffe-b4ad-0bdbccf3e423" + }, + "bad8fa7c-f634-55fd-98d3-e1eb2da05d8f": { + "alias": "sa_triage", + "body": { + "Sa": "Capability" + }, + "description": "", + "id": "bad8fa7c-f634-55fd-98d3-e1eb2da05d8f", + "name": "Assess an alarm", + "parent": null + }, + "bae5b192-5b8e-51c6-82ae-2331af0d33bf": { + "alias": "sa_assessment_action", + "body": { + "Sa": { + "Shared": { + "Occurrence": { + "body": { + "Action": { + "action": "dddae020-a444-5d48-acc8-139d2696a672", + "lifeline": null + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "bae5b192-5b8e-51c6-82ae-2331af0d33bf", + "name": "Assess pressure alarm", + "parent": "acd5a018-f559-5298-a40d-1cf6e1353e74" + }, + "bb12ba5d-aab5-5a1b-99de-c767f5365b57": { + "alias": "sa_pressure_parameter", + "body": { + "Sa": { + "Shared": { + "DataField": { + "default": null, + "direction": "InOut", + "maximum": 1, + "minimum": 1, + "storage": "Value", + "type_ref": { + "Named": "87d0a95b-af1b-5352-b753-e4c6533671a5" + }, + "unit": "" + } + } + } + }, + "description": "", + "id": "bb12ba5d-aab5-5a1b-99de-c767f5365b57", + "name": "Pressure before / after repair", + "parent": "a962fc5e-3ab0-5296-8b0d-fd84633f9218" + }, + "bfa2ef0b-ce68-55c2-a9e5-31ea8a74fce6": { + "alias": "sa_reset_step", + "body": { + "Sa": { + "Shared": { + "Occurrence": { + "body": { + "Action": { + "action": "09342ccb-044b-5483-ac58-87dc3cf7831c", + "lifeline": null + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "bfa2ef0b-ce68-55c2-a9e5-31ea8a74fce6", + "name": "Try the authorized remote reset", + "parent": "5139ce73-56fd-5875-ba3a-e569fc890231" + }, + "c05b9422-b9da-5de5-b21d-07ad23bd2b8a": { + "alias": "sa_technician", + "body": { + "Sa": "Actor" + }, + "description": "", + "id": "c05b9422-b9da-5de5-b21d-07ad23bd2b8a", + "name": "Field technician", + "parent": null + }, + "c59432fe-6092-5ee0-908d-9dbf39476471": { + "alias": "oa_repair_step", + "body": { + "Oa": { + "Shared": { + "Occurrence": { + "body": { + "Action": { + "action": "a21465af-05f3-5fb5-8983-de26932422fb", + "lifeline": null + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "c59432fe-6092-5ee0-908d-9dbf39476471", + "name": "Repair the valve", + "parent": "5d3af417-244c-54bb-9588-16daedda4e1f" + }, + "c9c61f50-06e0-5d17-973d-dcc57cd5cc90": { + "alias": "oa_mission", + "body": { + "Oa": "Mission" + }, + "description": "", + "id": "c9c61f50-06e0-5d17-973d-dcc57cd5cc90", + "name": "Maintain safe water supply", + "parent": null + }, + "cc2d497a-fd15-5455-9ee5-e70eb95811d8": { + "alias": "oa_reply", + "body": { + "Oa": { + "Shared": { + "Occurrence": { + "body": { + "Exchange": { + "exchange": "27b47887-baf0-518b-bf87-f5acbf7d0b93", + "message_kind": "Reply", + "receiver": "41859a65-ded2-547b-ab03-14e2fa740cf9", + "reply_to": "b97437c6-cd7a-5a05-b537-b30a17dd936a", + "sender": "fc81c5f0-0442-5b88-992b-e5b10f351c59", + "values": [ + { + "expression": "320.0", + "field": "8bc6d0a4-3e87-559b-8bd7-1b679a2db5b7", + "path": [] + } + ] + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "cc2d497a-fd15-5455-9ee5-e70eb95811d8", + "name": "Return pressure after repair", + "parent": "20472233-5ce6-5ffe-b4ad-0bdbccf3e423" + }, + "d0c8be87-d238-503a-a549-7558a210507f": { + "alias": "oa_reset", + "body": { + "Oa": "Activity" + }, + "description": "", + "id": "d0c8be87-d238-503a-a549-7558a210507f", + "name": "Reset valve remotely", + "parent": "1b91f8a7-0bdb-514e-b1cd-955658e09927" + }, + "d2026fc2-74a8-5e22-9942-ff3eb68a3677": { + "alias": "oa_reset_step", + "body": { + "Oa": { + "Shared": { + "Occurrence": { + "body": { + "Action": { + "action": "d0c8be87-d238-503a-a549-7558a210507f", + "lifeline": null + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "d2026fc2-74a8-5e22-9942-ff3eb68a3677", + "name": "Try the authorized remote reset", + "parent": "58bae2b0-f560-50f2-818d-19091d22d18a" + }, + "d2113fb0-a531-54ef-9484-13951b00ab8f": { + "alias": "sa_repair_request_in", + "body": { + "Sa": { + "Shared": { + "Port": { + "contract": { + "FunctionInput": { + "incoming_items": [ + "a962fc5e-3ab0-5296-8b0d-fd84633f9218" + ] + } + }, + "legacy": null + } + } + } + }, + "description": "", + "id": "d2113fb0-a531-54ef-9484-13951b00ab8f", + "name": "Request field repair input", + "parent": "9497e10f-04c4-5586-8738-2464a6f00bd4" + }, + "d5e61c5d-510b-5091-a878-da46f3a9e152": { + "alias": "sa_use_field", + "body": { + "Sa": { + "Shared": { + "Occurrence": { + "body": { + "SequenceReference": { + "sequence": "93eb6479-54e9-59cb-ac7b-16912347bfc0" + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "d5e61c5d-510b-5091-a878-da46f3a9e152", + "name": "Use the field repair procedure", + "parent": "5139ce73-56fd-5875-ba3a-e569fc890231" + }, + "d6f881a4-95da-54e9-ad97-1b8965532629": { + "alias": "oa_full_scenario", + "body": { + "Oa": { + "Shared": { + "Scenario": { + "context": "3dfee23a-148b-5cec-ad2d-b774e84ea5bb", + "postcondition": "The controller has received the measured pressure after repair", + "precondition": "A pressure alarm has been assessed", + "steps": [ + "9ff94014-afa1-50ab-a4d3-8e9dd0565cc5" + ], + "viewpoint": "ParticipantInteraction" + } + } + } + }, + "description": "", + "id": "d6f881a4-95da-54e9-ad97-1b8965532629", + "name": "Restore supply through field repair", + "parent": null + }, + "d736c7d6-d369-550a-8ba4-dae223e40bb3": { + "alias": "oa_repair_operation", + "body": { + "Oa": { + "Shared": { + "ExchangeItem": { + "kind": "Information", + "mechanism": "Operation", + "supertype": null + } + } + } + }, + "description": "", + "id": "d736c7d6-d369-550a-8ba4-dae223e40bb3", + "name": "Valve repair", + "parent": null + }, + "d75eb3fa-a27d-52d5-8782-8b342b3865f6": { + "alias": "sa_confirm", + "body": { + "Sa": "Function" + }, + "description": "", + "id": "d75eb3fa-a27d-52d5-8782-8b342b3865f6", + "name": "Confirm safe pressure", + "parent": "58867e7d-916e-5ebc-9e4c-8dbed1314be3" + }, + "dddae020-a444-5d48-acc8-139d2696a672": { + "alias": "sa_assess", + "body": { + "Sa": "Function" + }, + "description": "", + "id": "dddae020-a444-5d48-acc8-139d2696a672", + "name": "Assess pressure alarm", + "parent": "58867e7d-916e-5ebc-9e4c-8dbed1314be3" + }, + "df2fd3f8-6bc2-5380-a13f-36643ed35ac7": { + "alias": "oa_report_step", + "body": { + "Oa": { + "Shared": { + "Occurrence": { + "body": { + "Exchange": { + "exchange": "b436d0b3-c824-5a96-af6b-2c269816d1cc", + "message_kind": "Asynchronous", + "receiver": null, + "reply_to": null, + "sender": null, + "values": [] + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "df2fd3f8-6bc2-5380-a13f-36643ed35ac7", + "name": "Report the measured result", + "parent": "5d3af417-244c-54bb-9588-16daedda4e1f" + }, + "e00594a3-6122-5a6b-b3c2-ecb5506c741d": { + "alias": "oa_confirm_step", + "body": { + "Oa": { + "Shared": { + "Occurrence": { + "body": { + "Action": { + "action": "727c0b5c-8db6-5eb7-83d6-735519c5949f", + "lifeline": null + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "e00594a3-6122-5a6b-b3c2-ecb5506c741d", + "name": "Confirm safe pressure", + "parent": "58bae2b0-f560-50f2-818d-19091d22d18a" + }, + "e07c3952-4a1a-5cc7-b7d5-03a01101ce49": { + "alias": "oa_technician", + "body": { + "Oa": "Actor" + }, + "description": "", + "id": "e07c3952-4a1a-5cc7-b7d5-03a01101ce49", + "name": "Field technician", + "parent": null + }, + "e6d69cbd-99d7-596b-bbe3-dada6118a600": { + "alias": "sa_technician_port", + "body": { + "Sa": { + "Shared": { + "Port": { + "contract": { + "Component": { + "kind": "Standard", + "orientation": "Unset" + } + }, + "legacy": null + } + } + } + }, + "description": "Explicitly chosen Standard component port for the repair service.", + "id": "e6d69cbd-99d7-596b-bbe3-dada6118a600", + "name": "Repair service provider", + "parent": "c05b9422-b9da-5de5-b21d-07ad23bd2b8a" + }, + "e7824764-5db9-5384-8198-2fbaea2b10b2": { + "alias": "oa_pressure", + "body": { + "Oa": { + "Shared": { + "DataType": { + "default": null, + "definition": { + "Real": { + "maximum": 600.0, + "minimum": 0.0 + } + }, + "unit": "kPa" + } + } + } + }, + "description": "", + "id": "e7824764-5db9-5384-8198-2fbaea2b10b2", + "name": "Measured pressure", + "parent": null + }, + "ea32e4ec-8bdc-57ea-8a90-7b09ba4f0eac": { + "alias": "sa_report_step", + "body": { + "Sa": { + "Shared": { + "Occurrence": { + "body": { + "Exchange": { + "exchange": "684eadc3-e670-5779-a60f-bbc9a5bfb062", + "message_kind": "Asynchronous", + "receiver": null, + "reply_to": null, + "sender": null, + "values": [] + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "ea32e4ec-8bdc-57ea-8a90-7b09ba4f0eac", + "name": "Report the measured result", + "parent": "93eb6479-54e9-59cb-ac7b-16912347bfc0" + }, + "f746a1cd-ff9f-55c0-b325-01c03d2f4fae": { + "alias": "sa_full_scenario", + "body": { + "Sa": { + "Shared": { + "Scenario": { + "context": "81259051-370a-512d-a3b5-6420a6f933b6", + "postcondition": "The controller has received the measured pressure after repair", + "precondition": "A pressure alarm has been assessed", + "steps": [ + "1c9da843-e2d3-5591-8e3f-db083a42867e" + ], + "viewpoint": "BoundaryInterface" + } + } + } + }, + "description": "", + "id": "f746a1cd-ff9f-55c0-b325-01c03d2f4fae", + "name": "Restore supply through field repair", + "parent": null + }, + "fc6763bf-a534-54bf-afcd-57ab285ff07d": { + "alias": "oa_use_field", + "body": { + "Oa": { + "Shared": { + "Occurrence": { + "body": { + "SequenceReference": { + "sequence": "5d3af417-244c-54bb-9588-16daedda4e1f" + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "fc6763bf-a534-54bf-afcd-57ab285ff07d", + "name": "Use the field repair procedure", + "parent": "58bae2b0-f560-50f2-818d-19091d22d18a" + }, + "fc81c5f0-0442-5b88-992b-e5b10f351c59": { + "alias": "oa_responder", + "body": { + "Oa": { + "Shared": { + "Lifeline": { + "represented": "e07c3952-4a1a-5cc7-b7d5-03a01101ce49" + } + } + } + }, + "description": "", + "id": "fc81c5f0-0442-5b88-992b-e5b10f351c59", + "name": "Technician", + "parent": "20472233-5ce6-5ffe-b4ad-0bdbccf3e423" + }, + "fffff882-78fd-5415-928d-c1ef7fac6576": { + "alias": "oa_outer_technician", + "body": { + "Oa": { + "Shared": { + "Lifeline": { + "represented": "e07c3952-4a1a-5cc7-b7d5-03a01101ce49" + } + } + } + }, + "description": "", + "id": "fffff882-78fd-5415-928d-c1ef7fac6576", + "name": "Technician", + "parent": "d6f881a4-95da-54e9-ad97-1b8965532629" + } + }, + "id": "2786d72f-5763-5f33-a57f-2773a4ca1a6c", + "name": "Restore safe water pressure — release 1 walkthrough", + "relations": { + "094b888c-450c-5c4f-971a-7d75db059574": { + "alias": "oa_request_carriage", + "body": { + "ExchangeAllocation": { + "source": "27b47887-baf0-518b-bf87-f5acbf7d0b93", + "target": "cf423ea2-8b2e-5a27-93d4-5e8542d9db8d" + } + }, + "description": "", + "id": "094b888c-450c-5c4f-971a-7d75db059574", + "name": "Exchange allocation: Request field repair" + }, + "09eaa992-4cdf-5ea3-b748-f10fd74b8cba": { + "alias": "sa_port_request_in", + "body": { + "PortAllocation": { + "source": "e6d69cbd-99d7-596b-bbe3-dada6118a600", + "target": "d2113fb0-a531-54ef-9484-13951b00ab8f" + } + }, + "description": "", + "id": "09eaa992-4cdf-5ea3-b748-f10fd74b8cba", + "name": "Port allocation: Request field repair input" + }, + "0c4c9e58-ff32-5c00-b82a-d408a4be0183": { + "alias": "oa_mission_participant", + "body": { + "MissionInvolvement": { + "source": "32aa9940-df6e-5a12-b9bd-6337e2d2ed22", + "target": "c9c61f50-06e0-5d17-973d-dcc57cd5cc90" + } + }, + "description": "", + "id": "0c4c9e58-ff32-5c00-b82a-d408a4be0183", + "name": "Mission involvement: Maintain safe water supply" + }, + "0f6ac3fb-4ad6-581e-ad14-336472072d5e": { + "alias": "sa_field_merge", + "body": { + "SequenceLink": { + "guard": "", + "source": "d5e61c5d-510b-5091-a878-da46f3a9e152", + "target": "4ed0dd9d-c9e0-5652-aedf-5f0ab4328a07" + } + }, + "description": "", + "id": "0f6ac3fb-4ad6-581e-ad14-336472072d5e", + "name": "Continue" + }, + "109e2d6b-7e86-5934-93a5-fab56eced84e": { + "alias": "oa_assess_then_decide", + "body": { + "SequenceLink": { + "guard": "", + "source": "0b07b9ed-492d-57f6-b0b1-ce8a709238a7", + "target": "b280c6ca-e5f9-5424-a5c1-5676e01c2371" + } + }, + "description": "", + "id": "109e2d6b-7e86-5934-93a5-fab56eced84e", + "name": "Continue" + }, + "13c3bfa4-9254-5ab2-b96f-f65f402adf81": { + "alias": "sa_alarm_transition", + "body": { + "StateTransition": { + "effect": "", + "effects": [], + "guard": "", + "source": "8af21f9b-c21e-5aae-af0d-0958840f6655", + "target": "a6bb10b1-f1e5-5b31-8afd-5bad5a7b6c37", + "transition_kind": "External", + "trigger": "", + "triggers": [ + "01490fa8-2f01-5ac8-9722-d55d45414379" + ] + } + }, + "description": "", + "id": "13c3bfa4-9254-5ab2-b96f-f65f402adf81", + "name": "State transition: Awaiting repair" + }, + "1853df1f-30f4-5b1a-baac-2dcaf73c7b3a": { + "alias": "oa_reset_allocation", + "body": { + "Allocation": { + "source": "32aa9940-df6e-5a12-b9bd-6337e2d2ed22", + "target": "d0c8be87-d238-503a-a549-7558a210507f" + } + }, + "description": "", + "id": "1853df1f-30f4-5b1a-baac-2dcaf73c7b3a", + "name": "Allocation: Reset valve remotely" + }, + "1b245065-7242-5d81-8472-aaeb932054c9": { + "alias": "sa_audit_allocation", + "body": { + "Allocation": { + "source": "435bf87c-73fd-5e4d-978a-4c471bc9eaf0", + "target": "4149a872-3440-59de-9879-8981e78d27ab" + } + }, + "description": "", + "id": "1b245065-7242-5d81-8472-aaeb932054c9", + "name": "Allocation: Audit pressure thresholds" + }, + "1bbd5957-1173-51d8-97e3-ba4f084227ae": { + "alias": "sa_field_path", + "body": { + "SequenceLink": { + "guard": "else", + "source": "30c8fad9-a49b-5692-9542-3148e76afd7b", + "target": "d5e61c5d-510b-5091-a878-da46f3a9e152" + } + }, + "description": "", + "id": "1bbd5957-1173-51d8-97e3-ba4f084227ae", + "name": "else" + }, + "1c1e5634-ba8c-591f-b143-90a27cdc6cd2": { + "alias": "sa_mission_participant", + "body": { + "MissionInvolvement": { + "source": "435bf87c-73fd-5e4d-978a-4c471bc9eaf0", + "target": "5ad034b1-084d-5273-9e70-971671766132" + } + }, + "description": "", + "id": "1c1e5634-ba8c-591f-b143-90a27cdc6cd2", + "name": "Mission involvement: Maintain safe water supply" + }, + "1e738f27-a3a1-526d-b330-6384088b9689": { + "alias": "sa_confirm_path", + "body": { + "SequenceLink": { + "guard": "", + "source": "4ed0dd9d-c9e0-5652-aedf-5f0ab4328a07", + "target": "47bec4f9-d6d0-5ed1-adca-fa0d960dc416" + } + }, + "description": "", + "id": "1e738f27-a3a1-526d-b330-6384088b9689", + "name": "Continue" + }, + "1f8b1898-65f6-5360-99cf-b78a71bd50ec": { + "alias": "oa_mission_delivery", + "body": { + "MissionCapability": { + "source": "c9c61f50-06e0-5d17-973d-dcc57cd5cc90", + "target": "3dfee23a-148b-5cec-ad2d-b774e84ea5bb" + } + }, + "description": "", + "id": "1f8b1898-65f6-5360-99cf-b78a71bd50ec", + "name": "Mission capability: Restore a safe supply" + }, + "21fe5e8e-cbc2-5dad-b3e8-1df46e167d97": { + "alias": "oa_normal_transition", + "body": { + "StateTransition": { + "effect": "", + "effects": [], + "guard": "repair confirmed and pressure is safe", + "source": "58c15833-6e75-523a-b57f-a88f19f6d672", + "target": "6cbde0d8-9f5f-510a-a8c1-e29cb99ad4ae", + "transition_kind": "External", + "trigger": "", + "triggers": [] + } + }, + "description": "", + "id": "21fe5e8e-cbc2-5dad-b3e8-1df46e167d97", + "name": "State transition: Monitoring" + }, + "229ee94f-d147-50f6-9769-b5bd0c03a084": { + "alias": "oa_confirm_path", + "body": { + "SequenceLink": { + "guard": "", + "source": "6b945a6d-6aa0-5dd3-96e6-2e8d757d167d", + "target": "e00594a3-6122-5a6b-b3c2-ecb5506c741d" + } + }, + "description": "", + "id": "229ee94f-d147-50f6-9769-b5bd0c03a084", + "name": "Continue" + }, + "27b47887-baf0-518b-bf87-f5acbf7d0b93": { + "alias": "oa_contact", + "body": { + "CommunicationMean": { + "items": [ + "d736c7d6-d369-550a-8ba4-dae223e40bb3" + ], + "oriented": false, + "source": "32aa9940-df6e-5a12-b9bd-6337e2d2ed22", + "target": "e07c3952-4a1a-5cc7-b7d5-03a01101ce49" + } + }, + "description": "", + "id": "27b47887-baf0-518b-bf87-f5acbf7d0b93", + "name": "Technician service conversation" + }, + "2b00270c-79a5-52a5-af96-33346bea531b": { + "alias": "oa_start_monitoring", + "body": { + "StateTransition": { + "effect": "", + "effects": [], + "guard": "", + "source": "a7ffb869-9dde-5e76-b276-c719c5c143a9", + "target": "6cbde0d8-9f5f-510a-a8c1-e29cb99ad4ae", + "transition_kind": "External", + "trigger": "", + "triggers": [] + } + }, + "description": "", + "id": "2b00270c-79a5-52a5-af96-33346bea531b", + "name": "State transition: Monitoring" + }, + "3cc9ab52-2b00-57fd-8709-aabc75e5d3e3": { + "alias": "sa_reset_allocation", + "body": { + "Allocation": { + "source": "435bf87c-73fd-5e4d-978a-4c471bc9eaf0", + "target": "09342ccb-044b-5483-ac58-87dc3cf7831c" + } + }, + "description": "", + "id": "3cc9ab52-2b00-57fd-8709-aabc75e5d3e3", + "name": "Allocation: Reset valve remotely" + }, + "3f54d890-4ca5-5e36-873b-abb5c92d578c": { + "alias": "oa_request_then_repair", + "body": { + "SequenceLink": { + "guard": "", + "source": "5ba8079c-2dbe-5e98-ae82-2b60c6020a02", + "target": "c59432fe-6092-5ee0-908d-9dbf39476471" + } + }, + "description": "", + "id": "3f54d890-4ca5-5e36-873b-abb5c92d578c", + "name": "Sequence link: Repair the valve" + }, + "4549d3fa-5ab9-52a9-b4f9-3a78fc9d625a": { + "alias": "oa_report_carriage", + "body": { + "ExchangeAllocation": { + "source": "27b47887-baf0-518b-bf87-f5acbf7d0b93", + "target": "b436d0b3-c824-5a96-af6b-2c269816d1cc" + } + }, + "description": "", + "id": "4549d3fa-5ab9-52a9-b4f9-3a78fc9d625a", + "name": "Exchange allocation: Report repair result" + }, + "47730532-0372-5cc5-9d6d-0b8953aebdd8": { + "alias": "sa_start_monitoring", + "body": { + "StateTransition": { + "effect": "", + "effects": [], + "guard": "", + "source": "57eb5348-14d8-560e-996a-8dbf993243e2", + "target": "8af21f9b-c21e-5aae-af0d-0958840f6655", + "transition_kind": "External", + "trigger": "", + "triggers": [] + } + }, + "description": "", + "id": "47730532-0372-5cc5-9d6d-0b8953aebdd8", + "name": "State transition: Monitoring" + }, + "4c4c4851-5a3d-5bb9-94df-b19f9cf39819": { + "alias": "sa_request_carriage", + "body": { + "ExchangeAllocation": { + "source": "63009b5f-539e-5914-b630-ec6b7fefb4d5", + "target": "93474111-f23e-56c1-b61b-b7c2396b91bd" + } + }, + "description": "", + "id": "4c4c4851-5a3d-5bb9-94df-b19f9cf39819", + "name": "Exchange allocation: Request field repair" + }, + "4f85337b-f6eb-533c-a45a-9a5d1d9567ca": { + "alias": "sa_client_requires", + "body": { + "InterfaceRequirement": { + "source": "98d411e7-7c65-5c3f-b543-8bf0f2522ea2", + "target": "a4b8942e-a975-5f88-ad14-8f38c345baac" + } + }, + "description": "", + "id": "4f85337b-f6eb-533c-a45a-9a5d1d9567ca", + "name": "Interface requirement: Valve repair service" + }, + "55ec4dbf-bd17-5b0c-b3a3-95b2194aa8b9": { + "alias": "sa_port_request_out", + "body": { + "PortAllocation": { + "source": "98d411e7-7c65-5c3f-b543-8bf0f2522ea2", + "target": "24a6850e-b819-57e0-af88-ca4ab76581b7" + } + }, + "description": "", + "id": "55ec4dbf-bd17-5b0c-b3a3-95b2194aa8b9", + "name": "Port allocation: Request field repair output" + }, + "55f89fbf-aa3c-5ae1-95ef-ac676f9c1ada": { + "alias": "sa_provider_provides", + "body": { + "InterfaceProvision": { + "source": "e6d69cbd-99d7-596b-bbe3-dada6118a600", + "target": "a4b8942e-a975-5f88-ad14-8f38c345baac" + } + }, + "description": "", + "id": "55f89fbf-aa3c-5ae1-95ef-ac676f9c1ada", + "name": "Interface provision: Valve repair service" + }, + "568c5c01-de21-52a2-83bd-afdddc158085": { + "alias": "sa_port_report_in", + "body": { + "PortAllocation": { + "source": "98d411e7-7c65-5c3f-b543-8bf0f2522ea2", + "target": "391af7c4-b07d-53a7-8ddd-5c81461fc4f8" + } + }, + "description": "", + "id": "568c5c01-de21-52a2-83bd-afdddc158085", + "name": "Port allocation: Report repair result input" + }, + "594c61cd-94e0-5c07-890d-edfd520d7df9": { + "alias": "oa_assess_allocation", + "body": { + "Allocation": { + "source": "32aa9940-df6e-5a12-b9bd-6337e2d2ed22", + "target": "61f7bbfb-74a4-5540-9182-2583dfb27a49" + } + }, + "description": "", + "id": "594c61cd-94e0-5c07-890d-edfd520d7df9", + "name": "Allocation: Assess pressure alarm" + }, + "628cb4fc-fe63-5f6b-b364-6268f26b5740": { + "alias": "oa_assessment_delivery", + "body": { + "ChainInvolvement": { + "source": "022d3cfa-bbaf-5e13-924a-8e55099b8745", + "target": "6a30b763-cc51-546d-907f-5c63657cfd03" + } + }, + "description": "", + "id": "628cb4fc-fe63-5f6b-b364-6268f26b5740", + "name": "Chain involvement: Assess an alarm" + }, + "63009b5f-539e-5914-b630-ec6b7fefb4d5": { + "alias": "sa_contact", + "body": { + "BoundaryExchange": { + "items": [ + "a962fc5e-3ab0-5296-8b0d-fd84633f9218" + ], + "oriented": false, + "source": "98d411e7-7c65-5c3f-b543-8bf0f2522ea2", + "target": "e6d69cbd-99d7-596b-bbe3-dada6118a600" + } + }, + "description": "", + "id": "63009b5f-539e-5914-b630-ec6b7fefb4d5", + "name": "Technician service conversation" + }, + "66efc484-53c7-51a3-89e9-422429344b38": { + "alias": "sa_response_delivery", + "body": { + "ChainInvolvement": { + "source": "5139ce73-56fd-5875-ba3a-e569fc890231", + "target": "81259051-370a-512d-a3b5-6420a6f933b6" + } + }, + "description": "", + "id": "66efc484-53c7-51a3-89e9-422429344b38", + "name": "Chain involvement: Restore a safe supply" + }, + "684eadc3-e670-5779-a60f-bbc9a5bfb062": { + "alias": "sa_repair_report", + "body": { + "FunctionalExchange": { + "items": [ + "a962fc5e-3ab0-5296-8b0d-fd84633f9218" + ], + "source": "9497e10f-04c4-5586-8738-2464a6f00bd4", + "source_port": "994faed7-dbc8-5b96-9d62-7604ac0fbc3a", + "target": "d75eb3fa-a27d-52d5-8782-8b342b3865f6", + "target_port": "391af7c4-b07d-53a7-8ddd-5c81461fc4f8" + } + }, + "description": "", + "id": "684eadc3-e670-5779-a60f-bbc9a5bfb062", + "name": "Report repair result" + }, + "6a6d968f-26d6-5dbb-b721-5a27d362779a": { + "alias": "sa_request_then_repair", + "body": { + "SequenceLink": { + "guard": "", + "source": "40d94322-baa2-5c81-b261-ff47cdc33782", + "target": "0f195fea-3493-5ebd-966d-da9eddeb05d7" + } + }, + "description": "", + "id": "6a6d968f-26d6-5dbb-b721-5a27d362779a", + "name": "Sequence link: Repair the valve" + }, + "6e2c1b47-764c-577a-b325-ff66dd2a2768": { + "alias": "sa_normal_transition", + "body": { + "StateTransition": { + "effect": "", + "effects": [], + "guard": "repair confirmed and pressure is safe", + "source": "a6bb10b1-f1e5-5b31-8afd-5bad5a7b6c37", + "target": "8af21f9b-c21e-5aae-af0d-0958840f6655", + "transition_kind": "External", + "trigger": "", + "triggers": [] + } + }, + "description": "", + "id": "6e2c1b47-764c-577a-b325-ff66dd2a2768", + "name": "State transition: Monitoring" + }, + "725f2e1b-aa2c-5615-9b1f-28da178168fa": { + "alias": "sa_repair_allocation", + "body": { + "Allocation": { + "source": "c05b9422-b9da-5de5-b21d-07ad23bd2b8a", + "target": "9497e10f-04c4-5586-8738-2464a6f00bd4" + } + }, + "description": "", + "id": "725f2e1b-aa2c-5615-9b1f-28da178168fa", + "name": "Allocation: Repair valve in the field" + }, + "76218d89-68fd-531d-b35b-90c5b769a5ef": { + "alias": "oa_remote_path", + "body": { + "SequenceLink": { + "guard": "remote reset is authorized", + "source": "b280c6ca-e5f9-5424-a5c1-5676e01c2371", + "target": "d2026fc2-74a8-5e22-9942-ff3eb68a3677" + } + }, + "description": "", + "id": "76218d89-68fd-531d-b35b-90c5b769a5ef", + "name": "remote reset is authorized" + }, + "7fa37e63-db65-5aa7-88f2-31ff4347a787": { + "alias": "oa_assess_on_entry", + "body": { + "StateAction": { + "phase": "Entry", + "source": "58c15833-6e75-523a-b57f-a88f19f6d672", + "target": "61f7bbfb-74a4-5540-9182-2583dfb27a49" + } + }, + "description": "", + "id": "7fa37e63-db65-5aa7-88f2-31ff4347a787", + "name": "Assess when repair is needed" + }, + "7fb30b1d-195c-5f0e-a19c-a536f519a899": { + "alias": "sa_repair_then_report", + "body": { + "SequenceLink": { + "guard": "", + "source": "0f195fea-3493-5ebd-966d-da9eddeb05d7", + "target": "ea32e4ec-8bdc-57ea-8a90-7b09ba4f0eac" + } + }, + "description": "", + "id": "7fb30b1d-195c-5f0e-a19c-a536f519a899", + "name": "Sequence link: Report the measured result" + }, + "93474111-f23e-56c1-b61b-b7c2396b91bd": { + "alias": "sa_repair_request", + "body": { + "FunctionalExchange": { + "items": [ + "a962fc5e-3ab0-5296-8b0d-fd84633f9218" + ], + "source": "dddae020-a444-5d48-acc8-139d2696a672", + "source_port": "24a6850e-b819-57e0-af88-ca4ab76581b7", + "target": "9497e10f-04c4-5586-8738-2464a6f00bd4", + "target_port": "d2113fb0-a531-54ef-9484-13951b00ab8f" + } + }, + "description": "", + "id": "93474111-f23e-56c1-b61b-b7c2396b91bd", + "name": "Request field repair" + }, + "93eaad8d-83b7-5980-b9bb-86c9e3f31da4": { + "alias": "sa_assessment_support", + "body": { + "CapabilityInvolvement": { + "source": "dddae020-a444-5d48-acc8-139d2696a672", + "target": "bad8fa7c-f634-55fd-98d3-e1eb2da05d8f" + } + }, + "description": "", + "id": "93eaad8d-83b7-5980-b9bb-86c9e3f31da4", + "name": "Capability involvement: Assess an alarm" + }, + "9b9356d7-2db2-5a94-a47e-ea892cf02afe": { + "alias": "sa_assess_allocation", + "body": { + "Allocation": { + "source": "435bf87c-73fd-5e4d-978a-4c471bc9eaf0", + "target": "dddae020-a444-5d48-acc8-139d2696a672" + } + }, + "description": "", + "id": "9b9356d7-2db2-5a94-a47e-ea892cf02afe", + "name": "Allocation: Assess pressure alarm" + }, + "9d4a131f-36ad-5125-b21f-c3dd033b8c82": { + "alias": "sa_assess_then_decide", + "body": { + "SequenceLink": { + "guard": "", + "source": "9024243c-ccc1-5edb-8477-2aa16e5e9a50", + "target": "30c8fad9-a49b-5692-9542-3148e76afd7b" + } + }, + "description": "", + "id": "9d4a131f-36ad-5125-b21f-c3dd033b8c82", + "name": "Continue" + }, + "a0902e0f-3d18-576a-9aca-975a136dfdd7": { + "alias": "sa_mission_delivery", + "body": { + "MissionCapability": { + "source": "5ad034b1-084d-5273-9e70-971671766132", + "target": "81259051-370a-512d-a3b5-6420a6f933b6" + } + }, + "description": "", + "id": "a0902e0f-3d18-576a-9aca-975a136dfdd7", + "name": "Mission capability: Restore a safe supply" + }, + "a6d5a6be-fa6e-5fa0-a309-08e87ba40c57": { + "alias": "sa_assessment_delivery", + "body": { + "ChainInvolvement": { + "source": "acd5a018-f559-5298-a40d-1cf6e1353e74", + "target": "bad8fa7c-f634-55fd-98d3-e1eb2da05d8f" + } + }, + "description": "", + "id": "a6d5a6be-fa6e-5fa0-a309-08e87ba40c57", + "name": "Chain involvement: Assess an alarm" + }, + "a887f96a-37cb-5891-8070-011fa276e5b5": { + "alias": "sa_assess_on_entry", + "body": { + "StateAction": { + "phase": "Entry", + "source": "a6bb10b1-f1e5-5b31-8afd-5bad5a7b6c37", + "target": "dddae020-a444-5d48-acc8-139d2696a672" + } + }, + "description": "", + "id": "a887f96a-37cb-5891-8070-011fa276e5b5", + "name": "Assess when repair is needed" + }, + "ae53f363-0dec-5a7c-9afd-8fcd1b778ab2": { + "alias": "oa_repair_allocation", + "body": { + "Allocation": { + "source": "e07c3952-4a1a-5cc7-b7d5-03a01101ce49", + "target": "a21465af-05f3-5fb5-8983-de26932422fb" + } + }, + "description": "", + "id": "ae53f363-0dec-5a7c-9afd-8fcd1b778ab2", + "name": "Allocation: Repair valve in the field" + }, + "b436d0b3-c824-5a96-af6b-2c269816d1cc": { + "alias": "oa_repair_report", + "body": { + "Interaction": { + "items": [ + "d736c7d6-d369-550a-8ba4-dae223e40bb3" + ], + "source": "a21465af-05f3-5fb5-8983-de26932422fb", + "target": "727c0b5c-8db6-5eb7-83d6-735519c5949f" + } + }, + "description": "", + "id": "b436d0b3-c824-5a96-af6b-2c269816d1cc", + "name": "Report repair result" + }, + "b76bf8de-2fa4-563f-a540-dd30f30e6c49": { + "alias": "sa_confirm_allocation", + "body": { + "Allocation": { + "source": "435bf87c-73fd-5e4d-978a-4c471bc9eaf0", + "target": "d75eb3fa-a27d-52d5-8782-8b342b3865f6" + } + }, + "description": "", + "id": "b76bf8de-2fa4-563f-a540-dd30f30e6c49", + "name": "Allocation: Confirm safe pressure" + }, + "bac43d3b-910b-5bdc-be9b-f78cf973e1ed": { + "alias": "oa_remote_merge", + "body": { + "SequenceLink": { + "guard": "", + "source": "d2026fc2-74a8-5e22-9942-ff3eb68a3677", + "target": "6b945a6d-6aa0-5dd3-96e6-2e8d757d167d" + } + }, + "description": "", + "id": "bac43d3b-910b-5bdc-be9b-f78cf973e1ed", + "name": "Continue" + }, + "bfd4326e-ea65-5269-b5e6-e063a355d1e9": { + "alias": "oa_confirm_allocation", + "body": { + "Allocation": { + "source": "32aa9940-df6e-5a12-b9bd-6337e2d2ed22", + "target": "727c0b5c-8db6-5eb7-83d6-735519c5949f" + } + }, + "description": "", + "id": "bfd4326e-ea65-5269-b5e6-e063a355d1e9", + "name": "Allocation: Confirm safe pressure" + }, + "c1adbbd0-a762-5ee3-8b9a-5c18af377771": { + "alias": "oa_field_path", + "body": { + "SequenceLink": { + "guard": "else", + "source": "b280c6ca-e5f9-5424-a5c1-5676e01c2371", + "target": "fc6763bf-a534-54bf-afcd-57ab285ff07d" + } + }, + "description": "", + "id": "c1adbbd0-a762-5ee3-8b9a-5c18af377771", + "name": "else" + }, + "c7c248f8-28b8-55be-9023-0991d44021e3": { + "alias": "oa_response_delivery", + "body": { + "ChainInvolvement": { + "source": "58bae2b0-f560-50f2-818d-19091d22d18a", + "target": "3dfee23a-148b-5cec-ad2d-b774e84ea5bb" + } + }, + "description": "", + "id": "c7c248f8-28b8-55be-9023-0991d44021e3", + "name": "Chain involvement: Restore a safe supply" + }, + "c8196d35-2168-5fef-8b03-ba0d139bc00f": { + "alias": "oa_repair_then_report", + "body": { + "SequenceLink": { + "guard": "", + "source": "c59432fe-6092-5ee0-908d-9dbf39476471", + "target": "df2fd3f8-6bc2-5380-a13f-36643ed35ac7" + } + }, + "description": "", + "id": "c8196d35-2168-5fef-8b03-ba0d139bc00f", + "name": "Sequence link: Report the measured result" + }, + "c8593670-8906-530f-b6a2-3ada77a9c219": { + "alias": "oa_field_merge", + "body": { + "SequenceLink": { + "guard": "", + "source": "fc6763bf-a534-54bf-afcd-57ab285ff07d", + "target": "6b945a6d-6aa0-5dd3-96e6-2e8d757d167d" + } + }, + "description": "", + "id": "c8593670-8906-530f-b6a2-3ada77a9c219", + "name": "Continue" + }, + "cf423ea2-8b2e-5a27-93d4-5e8542d9db8d": { + "alias": "oa_repair_request", + "body": { + "Interaction": { + "items": [ + "d736c7d6-d369-550a-8ba4-dae223e40bb3" + ], + "source": "61f7bbfb-74a4-5540-9182-2583dfb27a49", + "target": "a21465af-05f3-5fb5-8983-de26932422fb" + } + }, + "description": "", + "id": "cf423ea2-8b2e-5a27-93d4-5e8542d9db8d", + "name": "Request field repair" + }, + "d8b6710a-e713-5979-934f-e5ca7d155bb4": { + "alias": "sa_remote_path", + "body": { + "SequenceLink": { + "guard": "remote reset is authorized", + "source": "30c8fad9-a49b-5692-9542-3148e76afd7b", + "target": "bfa2ef0b-ce68-55c2-a9e5-31ea8a74fce6" + } + }, + "description": "", + "id": "d8b6710a-e713-5979-934f-e5ca7d155bb4", + "name": "remote reset is authorized" + }, + "e21d9a54-ae8e-5618-a4f8-67ee22b92638": { + "alias": "oa_include_triage", + "body": { + "CapabilityInclude": { + "source": "3dfee23a-148b-5cec-ad2d-b774e84ea5bb", + "target": "6a30b763-cc51-546d-907f-5c63657cfd03" + } + }, + "description": "", + "id": "e21d9a54-ae8e-5618-a4f8-67ee22b92638", + "name": "Capability include: Assess an alarm" + }, + "e5279265-8eac-52e8-98dc-571b20475e1f": { + "alias": "sa_remote_merge", + "body": { + "SequenceLink": { + "guard": "", + "source": "bfa2ef0b-ce68-55c2-a9e5-31ea8a74fce6", + "target": "4ed0dd9d-c9e0-5652-aedf-5f0ab4328a07" + } + }, + "description": "", + "id": "e5279265-8eac-52e8-98dc-571b20475e1f", + "name": "Continue" + }, + "e53b7a40-e8a3-5b3f-826d-c2b5c164a84a": { + "alias": "sa_port_report_out", + "body": { + "PortAllocation": { + "source": "e6d69cbd-99d7-596b-bbe3-dada6118a600", + "target": "994faed7-dbc8-5b96-9d62-7604ac0fbc3a" + } + }, + "description": "", + "id": "e53b7a40-e8a3-5b3f-826d-c2b5c164a84a", + "name": "Port allocation: Report repair result output" + }, + "f074e041-23cf-54ad-af9c-f171e30621e7": { + "alias": "sa_repair_interface_item", + "body": { + "InterfaceItemAllocation": { + "acquisition": "Accept", + "order": 0, + "source": "a4b8942e-a975-5f88-ad14-8f38c345baac", + "target": "a962fc5e-3ab0-5296-8b0d-fd84633f9218", + "transmission": "Synchronous" + } + }, + "description": "", + "id": "f074e041-23cf-54ad-af9c-f171e30621e7", + "name": "Repair operation contract" + }, + "f3fe7690-734a-5877-8b57-a6599a4033c4": { + "alias": "sa_include_triage", + "body": { + "CapabilityInclude": { + "source": "81259051-370a-512d-a3b5-6420a6f933b6", + "target": "bad8fa7c-f634-55fd-98d3-e1eb2da05d8f" + } + }, + "description": "", + "id": "f3fe7690-734a-5877-8b57-a6599a4033c4", + "name": "Capability include: Assess an alarm" + }, + "fbde9d5e-c7e9-55db-a2be-497345c491b3": { + "alias": "oa_alarm_transition", + "body": { + "StateTransition": { + "effect": "", + "effects": [], + "guard": "", + "source": "6cbde0d8-9f5f-510a-a8c1-e29cb99ad4ae", + "target": "58c15833-6e75-523a-b57f-a88f19f6d672", + "transition_kind": "External", + "trigger": "", + "triggers": [ + "65d6b8d6-271a-5c84-8b42-abbe310c955e" + ] + } + }, + "description": "", + "id": "fbde9d5e-c7e9-55db-a2be-497345c491b3", + "name": "State transition: Awaiting repair" + }, + "ff9897b3-a23a-5994-a5b3-99a5b4d34ceb": { + "alias": "sa_report_carriage", + "body": { + "ExchangeAllocation": { + "source": "63009b5f-539e-5914-b630-ec6b7fefb4d5", + "target": "684eadc3-e670-5779-a60f-bbc9a5bfb062" + } + }, + "description": "", + "id": "ff9897b3-a23a-5994-a5b3-99a5b4d34ceb", + "name": "Exchange allocation: Report repair result" + }, + "ffdbfcd0-d423-5707-a880-0dfbe1400f72": { + "alias": "oa_assessment_support", + "body": { + "CapabilityInvolvement": { + "source": "61f7bbfb-74a4-5540-9182-2583dfb27a49", + "target": "6a30b763-cc51-546d-907f-5c63657cfd03" + } + }, + "description": "", + "id": "ffdbfcd0-d423-5707-a880-0dfbe1400f72", + "name": "Capability involvement: Assess an alarm" + } + }, + "schema_version": 7, + "traces": { + "0754be23-e4b8-53bc-b03c-89c2dbd80361": { + "alias": "trace_oa_waiting", + "baseline": { + "oa": { + "description": "", + "name": "Awaiting repair" + }, + "sa": { + "description": "", + "name": "Awaiting repair" + } + }, + "description": "", + "id": "0754be23-e4b8-53bc-b03c-89c2dbd80361", + "kind": "State", + "name": "Awaiting repair ↔ Awaiting repair", + "oa": "58c15833-6e75-523a-b57f-a88f19f6d672", + "sa": "a6bb10b1-f1e5-5b31-8afd-5bad5a7b6c37" + }, + "07a7b82a-b5a7-5737-abfa-09e422f7420e": { + "alias": "trace_oa_start_monitoring", + "baseline": { + "oa": { + "description": "", + "name": "State transition: Monitoring" + }, + "sa": { + "description": "", + "name": "State transition: Monitoring" + } + }, + "description": "", + "id": "07a7b82a-b5a7-5737-abfa-09e422f7420e", + "kind": "Manual", + "name": "State transition: Monitoring ↔ State transition: Monitoring", + "oa": "2b00270c-79a5-52a5-af96-33346bea531b", + "sa": "47730532-0372-5cc5-9d6d-0b8953aebdd8" + }, + "0c7c8a06-163e-5b3e-8a98-e66e2ce8963b": { + "alias": "trace_oa_alarm_transition", + "baseline": { + "oa": { + "description": "", + "name": "State transition: Awaiting repair" + }, + "sa": { + "description": "", + "name": "State transition: Awaiting repair" + } + }, + "description": "", + "id": "0c7c8a06-163e-5b3e-8a98-e66e2ce8963b", + "kind": "Manual", + "name": "State transition: Awaiting repair ↔ State transition: Awaiting repair", + "oa": "fbde9d5e-c7e9-55db-a2be-497345c491b3", + "sa": "13c3bfa4-9254-5ab2-b96f-f65f402adf81" + }, + "0c9de959-d366-5765-98eb-450ea27bd316": { + "alias": "trace_oa_merge", + "baseline": { + "oa": { + "description": "", + "name": "Recovery path completed" + }, + "sa": { + "description": "", + "name": "Recovery path completed" + } + }, + "description": "", + "id": "0c9de959-d366-5765-98eb-450ea27bd316", + "kind": "Sequence", + "name": "Recovery path completed ↔ Recovery path completed", + "oa": "6b945a6d-6aa0-5dd3-96e6-2e8d757d167d", + "sa": "4ed0dd9d-c9e0-5652-aedf-5f0ab4328a07" + }, + "0d905fbb-5b3c-56f0-9f11-a27091901eb0": { + "alias": "trace_oa_pressure_parameter", + "baseline": { + "oa": { + "description": "", + "name": "Pressure before / after repair" + }, + "sa": { + "description": "", + "name": "Pressure before / after repair" + } + }, + "description": "", + "id": "0d905fbb-5b3c-56f0-9f11-a27091901eb0", + "kind": "Item", + "name": "Pressure before / after repair ↔ Pressure before / after repair", + "oa": "8bc6d0a4-3e87-559b-8bd7-1b679a2db5b7", + "sa": "bb12ba5d-aab5-5a1b-99de-c767f5365b57" + }, + "0fbef164-b5d3-58ba-ba41-54d0e63709ab": { + "alias": "trace_oa_restore", + "baseline": { + "oa": { + "description": "", + "name": "Restore a safe supply" + }, + "sa": { + "description": "", + "name": "Restore a safe supply" + } + }, + "description": "", + "id": "0fbef164-b5d3-58ba-ba41-54d0e63709ab", + "kind": "Capability", + "name": "Restore a safe supply ↔ Restore a safe supply", + "oa": "3dfee23a-148b-5cec-ad2d-b774e84ea5bb", + "sa": "81259051-370a-512d-a3b5-6420a6f933b6" + }, + "12ec320f-2e14-5a5a-8c6b-bd2b6471dae9": { + "alias": "trace_oa_monitoring", + "baseline": { + "oa": { + "description": "", + "name": "Monitoring" + }, + "sa": { + "description": "", + "name": "Monitoring" + } + }, + "description": "", + "id": "12ec320f-2e14-5a5a-8c6b-bd2b6471dae9", + "kind": "State", + "name": "Monitoring ↔ Monitoring", + "oa": "6cbde0d8-9f5f-510a-a8c1-e29cb99ad4ae", + "sa": "8af21f9b-c21e-5aae-af0d-0958840f6655" + }, + "154abfce-c311-52d1-85d1-3f4c85203b26": { + "alias": "trace_oa_confirm_step", + "baseline": { + "oa": { + "description": "", + "name": "Confirm safe pressure" + }, + "sa": { + "description": "", + "name": "Confirm safe pressure" + } + }, + "description": "", + "id": "154abfce-c311-52d1-85d1-3f4c85203b26", + "kind": "Sequence", + "name": "Confirm safe pressure ↔ Confirm safe pressure", + "oa": "e00594a3-6122-5a6b-b3c2-ecb5506c741d", + "sa": "47bec4f9-d6d0-5ed1-adca-fa0d960dc416" + }, + "1b788e74-36b2-5c17-a936-642dbe51ca3c": { + "alias": "trace_oa_remote_merge", + "baseline": { + "oa": { + "description": "", + "name": "Continue" + }, + "sa": { + "description": "", + "name": "Continue" + } + }, + "description": "", + "id": "1b788e74-36b2-5c17-a936-642dbe51ca3c", + "kind": "Manual", + "name": "Continue ↔ Continue", + "oa": "bac43d3b-910b-5bdc-be9b-f78cf973e1ed", + "sa": "e5279265-8eac-52e8-98dc-571b20475e1f" + }, + "208753e0-9151-50d8-86ca-29fc28eca80b": { + "alias": "trace_oa_monitor_region", + "baseline": { + "oa": { + "description": "", + "name": "Supervision cycle" + }, + "sa": { + "description": "", + "name": "Supervision cycle" + } + }, + "description": "", + "id": "208753e0-9151-50d8-86ca-29fc28eca80b", + "kind": "State", + "name": "Supervision cycle ↔ Supervision cycle", + "oa": "8412e9c6-96fe-5ed6-a903-1d37ec3c3bf7", + "sa": "3ab11e24-4140-58fc-b3fa-da5f51c7fe2c" + }, + "241dfdac-2450-5704-a4cb-9f1047db1b6d": { + "alias": "trace_oa_caller", + "baseline": { + "oa": { + "description": "", + "name": "Controller" + }, + "sa": { + "description": "", + "name": "Controller" + } + }, + "description": "", + "id": "241dfdac-2450-5704-a4cb-9f1047db1b6d", + "kind": "Scenario", + "name": "Controller ↔ Controller", + "oa": "41859a65-ded2-547b-ab03-14e2fa740cf9", + "sa": "98c61788-2fee-51f4-8cf9-de48e8c70e9e" + }, + "2e849e31-35aa-5aef-a989-26948038e52b": { + "alias": "trace_oa_field_path", + "baseline": { + "oa": { + "description": "", + "name": "else" + }, + "sa": { + "description": "", + "name": "else" + } + }, + "description": "", + "id": "2e849e31-35aa-5aef-a989-26948038e52b", + "kind": "Manual", + "name": "else ↔ else", + "oa": "c1adbbd0-a762-5ee3-8b9a-5c18af377771", + "sa": "1bbd5957-1173-51d8-97e3-ba4f084227ae" + }, + "2fdcbc6f-526e-5a4e-bde5-314cf0cf3ef3": { + "alias": "trace_oa_confirm_allocation", + "baseline": { + "oa": { + "description": "", + "name": "Allocation: Confirm safe pressure" + }, + "sa": { + "description": "", + "name": "Allocation: Confirm safe pressure" + } + }, + "description": "", + "id": "2fdcbc6f-526e-5a4e-bde5-314cf0cf3ef3", + "kind": "Manual", + "name": "Allocation: Confirm safe pressure ↔ Allocation: Confirm safe pressure", + "oa": "bfd4326e-ea65-5269-b5e6-e063a355d1e9", + "sa": "b76bf8de-2fa4-563f-a540-dd30f30e6c49" + }, + "3694c752-ba80-5702-a7d7-9cc66b6b01d8": { + "alias": "trace_oa_conversation", + "baseline": { + "oa": { + "description": "", + "name": "Repair request and measured reply" + }, + "sa": { + "description": "", + "name": "Repair request and measured reply" + } + }, + "description": "", + "id": "3694c752-ba80-5702-a7d7-9cc66b6b01d8", + "kind": "Scenario", + "name": "Repair request and measured reply ↔ Repair request and measured reply", + "oa": "20472233-5ce6-5ffe-b4ad-0bdbccf3e423", + "sa": "730b27ca-b039-5a3b-8dc6-03418f9061b3" + }, + "3714d547-006f-5c3a-97f8-175ccc23d994": { + "alias": "trace_oa_repair_allocation", + "baseline": { + "oa": { + "description": "", + "name": "Allocation: Repair valve in the field" + }, + "sa": { + "description": "", + "name": "Allocation: Repair valve in the field" + } + }, + "description": "", + "id": "3714d547-006f-5c3a-97f8-175ccc23d994", + "kind": "Manual", + "name": "Allocation: Repair valve in the field ↔ Allocation: Repair valve in the field", + "oa": "ae53f363-0dec-5a7c-9afd-8fcd1b778ab2", + "sa": "725f2e1b-aa2c-5615-9b1f-28da178168fa" + }, + "3a33de40-20a3-5252-899c-c12dc35e9783": { + "alias": "trace_oa_assessment_action", + "baseline": { + "oa": { + "description": "", + "name": "Assess pressure alarm" + }, + "sa": { + "description": "", + "name": "Assess pressure alarm" + } + }, + "description": "", + "id": "3a33de40-20a3-5252-899c-c12dc35e9783", + "kind": "Sequence", + "name": "Assess pressure alarm ↔ Assess pressure alarm", + "oa": "942975b8-0bef-5ae8-9fcb-c37497833fb0", + "sa": "bae5b192-5b8e-51c6-82ae-2331af0d33bf" + }, + "3e7bde54-f9c1-549f-9e5b-2ce1ecb685a7": { + "alias": "trace_oa_repair_traffic", + "baseline": { + "oa": { + "description": "", + "name": "Repair work exchanges" + }, + "sa": { + "description": "", + "name": "Repair work exchanges" + } + }, + "description": "", + "id": "3e7bde54-f9c1-549f-9e5b-2ce1ecb685a7", + "kind": "Manual", + "name": "Repair work exchanges ↔ Repair work exchanges", + "oa": "9349b353-53f2-56f8-b571-a05b09335cdf", + "sa": "a9a47e48-100c-57a8-95f0-7fe24da94f94" + }, + "424eca39-1c29-5a2f-b9ee-33dd018926aa": { + "alias": "trace_oa_repair_report", + "baseline": { + "oa": { + "description": "", + "name": "Report repair result" + }, + "sa": { + "description": "", + "name": "Report repair result" + } + }, + "description": "", + "id": "424eca39-1c29-5a2f-b9ee-33dd018926aa", + "kind": "Exchange", + "name": "Report repair result ↔ Report repair result", + "oa": "b436d0b3-c824-5a96-af6b-2c269816d1cc", + "sa": "684eadc3-e670-5779-a60f-bbc9a5bfb062" + }, + "435bae4c-cf6d-59f3-9eb5-d660ebeec079": { + "alias": "trace_oa_full_scenario", + "baseline": { + "oa": { + "description": "", + "name": "Restore supply through field repair" + }, + "sa": { + "description": "", + "name": "Restore supply through field repair" + } + }, + "description": "", + "id": "435bae4c-cf6d-59f3-9eb5-d660ebeec079", + "kind": "Scenario", + "name": "Restore supply through field repair ↔ Restore supply through field repair", + "oa": "d6f881a4-95da-54e9-ad97-1b8965532629", + "sa": "f746a1cd-ff9f-55c0-b325-01c03d2f4fae" + }, + "48d243f0-553f-507e-acb0-9474ae156b63": { + "alias": "trace_oa_monitor_initial", + "baseline": { + "oa": { + "description": "", + "name": "Start" + }, + "sa": { + "description": "", + "name": "Start" + } + }, + "description": "", + "id": "48d243f0-553f-507e-acb0-9474ae156b63", + "kind": "State", + "name": "Start ↔ Start", + "oa": "a7ffb869-9dde-5e76-b276-c719c5c143a9", + "sa": "57eb5348-14d8-560e-996a-8dbf993243e2" + }, + "5309f955-53fd-5ff4-9c0a-91737e947341": { + "alias": "trace_oa_assess", + "baseline": { + "oa": { + "description": "", + "name": "Assess pressure alarm" + }, + "sa": { + "description": "", + "name": "Assess pressure alarm" + } + }, + "description": "", + "id": "5309f955-53fd-5ff4-9c0a-91737e947341", + "kind": "Refinement", + "name": "Assess pressure alarm ↔ Assess pressure alarm", + "oa": "61f7bbfb-74a4-5540-9182-2583dfb27a49", + "sa": "dddae020-a444-5d48-acc8-139d2696a672" + }, + "595b5729-ccd9-5291-b5d9-30d8c8bd9dfa": { + "alias": "trace_oa_reply", + "baseline": { + "oa": { + "description": "", + "name": "Return pressure after repair" + }, + "sa": { + "description": "", + "name": "Return pressure after repair" + } + }, + "description": "", + "id": "595b5729-ccd9-5291-b5d9-30d8c8bd9dfa", + "kind": "Scenario", + "name": "Return pressure after repair ↔ Return pressure after repair", + "oa": "cc2d497a-fd15-5455-9ee5-e70eb95811d8", + "sa": "4e1c0a56-ce80-5f13-a93a-6956de54880c" + }, + "5b96bfed-63e2-5d7f-b882-91e8b81f8efe": { + "alias": "trace_oa_assessment_delivery", + "baseline": { + "oa": { + "description": "", + "name": "Chain involvement: Assess an alarm" + }, + "sa": { + "description": "", + "name": "Chain involvement: Assess an alarm" + } + }, + "description": "", + "id": "5b96bfed-63e2-5d7f-b882-91e8b81f8efe", + "kind": "Manual", + "name": "Chain involvement: Assess an alarm ↔ Chain involvement: Assess an alarm", + "oa": "628cb4fc-fe63-5f6b-b364-6268f26b5740", + "sa": "a6d5a6be-fa6e-5fa0-a309-08e87ba40c57" + }, + "6acd072d-431e-5881-ab20-1813b4fda0c5": { + "alias": "trace_oa_triage", + "baseline": { + "oa": { + "description": "", + "name": "Assess an alarm" + }, + "sa": { + "description": "", + "name": "Assess an alarm" + } + }, + "description": "", + "id": "6acd072d-431e-5881-ab20-1813b4fda0c5", + "kind": "Capability", + "name": "Assess an alarm ↔ Assess an alarm", + "oa": "6a30b763-cc51-546d-907f-5c63657cfd03", + "sa": "bad8fa7c-f634-55fd-98d3-e1eb2da05d8f" + }, + "6ca4c78a-a5f2-5470-b401-732f5a8825d0": { + "alias": "trace_oa_assessment_procedure", + "baseline": { + "oa": { + "description": "", + "name": "Assess an alarm procedure" + }, + "sa": { + "description": "", + "name": "Assess an alarm procedure" + } + }, + "description": "", + "id": "6ca4c78a-a5f2-5470-b401-732f5a8825d0", + "kind": "Sequence", + "name": "Assess an alarm procedure ↔ Assess an alarm procedure", + "oa": "022d3cfa-bbaf-5e13-924a-8e55099b8745", + "sa": "acd5a018-f559-5298-a40d-1cf6e1353e74" + }, + "6e13cf86-7242-5e33-8912-b037cf6e8c87": { + "alias": "trace_oa_assessment_support", + "baseline": { + "oa": { + "description": "", + "name": "Capability involvement: Assess an alarm" + }, + "sa": { + "description": "", + "name": "Capability involvement: Assess an alarm" + } + }, + "description": "", + "id": "6e13cf86-7242-5e33-8912-b037cf6e8c87", + "kind": "Manual", + "name": "Capability involvement: Assess an alarm ↔ Capability involvement: Assess an alarm", + "oa": "ffdbfcd0-d423-5707-a880-0dfbe1400f72", + "sa": "93eaad8d-83b7-5980-b9bb-86c9e3f31da4" + }, + "70c90b0c-85ce-574a-a217-f0d19fad30e1": { + "alias": "trace_oa_response_delivery", + "baseline": { + "oa": { + "description": "", + "name": "Chain involvement: Restore a safe supply" + }, + "sa": { + "description": "", + "name": "Chain involvement: Restore a safe supply" + } + }, + "description": "", + "id": "70c90b0c-85ce-574a-a217-f0d19fad30e1", + "kind": "Manual", + "name": "Chain involvement: Restore a safe supply ↔ Chain involvement: Restore a safe supply", + "oa": "c7c248f8-28b8-55be-9023-0991d44021e3", + "sa": "66efc484-53c7-51a3-89e9-422429344b38" + }, + "77073fcb-53aa-5f06-987a-0317cbb6971d": { + "alias": "trace_oa_include_triage", + "baseline": { + "oa": { + "description": "", + "name": "Capability include: Assess an alarm" + }, + "sa": { + "description": "", + "name": "Capability include: Assess an alarm" + } + }, + "description": "", + "id": "77073fcb-53aa-5f06-987a-0317cbb6971d", + "kind": "Manual", + "name": "Capability include: Assess an alarm ↔ Capability include: Assess an alarm", + "oa": "e21d9a54-ae8e-5618-a4f8-67ee22b92638", + "sa": "f3fe7690-734a-5877-8b57-a6599a4033c4" + }, + "7a6b4b9c-4220-546a-a752-1587c2881fe1": { + "alias": "trace_oa_use_field", + "baseline": { + "oa": { + "description": "", + "name": "Use the field repair procedure" + }, + "sa": { + "description": "", + "name": "Use the field repair procedure" + } + }, + "description": "", + "id": "7a6b4b9c-4220-546a-a752-1587c2881fe1", + "kind": "Sequence", + "name": "Use the field repair procedure ↔ Use the field repair procedure", + "oa": "fc6763bf-a534-54bf-afcd-57ab285ff07d", + "sa": "d5e61c5d-510b-5091-a878-da46f3a9e152" + }, + "82a5be1a-92a8-578d-9448-086062a20d8f": { + "alias": "trace_oa_reset", + "baseline": { + "oa": { + "description": "", + "name": "Reset valve remotely" + }, + "sa": { + "description": "", + "name": "Reset valve remotely" + } + }, + "description": "", + "id": "82a5be1a-92a8-578d-9448-086062a20d8f", + "kind": "Refinement", + "name": "Reset valve remotely ↔ Reset valve remotely", + "oa": "d0c8be87-d238-503a-a549-7558a210507f", + "sa": "09342ccb-044b-5483-ac58-87dc3cf7831c" + }, + "82cca563-9d5d-5479-aa1a-9db03e9674d1": { + "alias": "trace_oa_restore_work", + "baseline": { + "oa": { + "description": "", + "name": "Restore safe pressure" + }, + "sa": { + "description": "", + "name": "Restore safe pressure" + } + }, + "description": "", + "id": "82cca563-9d5d-5479-aa1a-9db03e9674d1", + "kind": "Refinement", + "name": "Restore safe pressure ↔ Restore safe pressure", + "oa": "1b91f8a7-0bdb-514e-b1cd-955658e09927", + "sa": "58867e7d-916e-5ebc-9e4c-8dbed1314be3" + }, + "8d693d90-5017-56af-b056-d29d3cb46baa": { + "alias": "trace_oa_mission_participant", + "baseline": { + "oa": { + "description": "", + "name": "Mission involvement: Maintain safe water supply" + }, + "sa": { + "description": "", + "name": "Mission involvement: Maintain safe water supply" + } + }, + "description": "", + "id": "8d693d90-5017-56af-b056-d29d3cb46baa", + "kind": "Manual", + "name": "Mission involvement: Maintain safe water supply ↔ Mission involvement: Maintain safe water supply", + "oa": "0c4c9e58-ff32-5c00-b82a-d408a4be0183", + "sa": "1c1e5634-ba8c-591f-b143-90a27cdc6cd2" + }, + "98ef05b5-5381-5d35-a433-ebab55e9f382": { + "alias": "trace_oa_reset_allocation", + "baseline": { + "oa": { + "description": "", + "name": "Allocation: Reset valve remotely" + }, + "sa": { + "description": "", + "name": "Allocation: Reset valve remotely" + } + }, + "description": "", + "id": "98ef05b5-5381-5d35-a433-ebab55e9f382", + "kind": "Manual", + "name": "Allocation: Reset valve remotely ↔ Allocation: Reset valve remotely", + "oa": "1853df1f-30f4-5b1a-baac-2dcaf73c7b3a", + "sa": "3cc9ab52-2b00-57fd-8709-aabc75e5d3e3" + }, + "a106d183-c239-5c9f-b1f1-141af19fc778": { + "alias": "trace_oa_confirm_path", + "baseline": { + "oa": { + "description": "", + "name": "Continue" + }, + "sa": { + "description": "", + "name": "Continue" + } + }, + "description": "", + "id": "a106d183-c239-5c9f-b1f1-141af19fc778", + "kind": "Manual", + "name": "Continue ↔ Continue", + "oa": "229ee94f-d147-50f6-9769-b5bd0c03a084", + "sa": "1e738f27-a3a1-526d-b330-6384088b9689" + }, + "a5c1eb01-a95f-5f7a-9742-7f201493d7aa": { + "alias": "trace_oa_assess_then_decide", + "baseline": { + "oa": { + "description": "", + "name": "Continue" + }, + "sa": { + "description": "", + "name": "Continue" + } + }, + "description": "", + "id": "a5c1eb01-a95f-5f7a-9742-7f201493d7aa", + "kind": "Manual", + "name": "Continue ↔ Continue", + "oa": "109e2d6b-7e86-5934-93a5-fab56eced84e", + "sa": "9d4a131f-36ad-5125-b21f-c3dd033b8c82" + }, + "aa164208-394d-5bc7-8462-b0043f682aad": { + "alias": "trace_oa_mission_delivery", + "baseline": { + "oa": { + "description": "", + "name": "Mission capability: Restore a safe supply" + }, + "sa": { + "description": "", + "name": "Mission capability: Restore a safe supply" + } + }, + "description": "", + "id": "aa164208-394d-5bc7-8462-b0043f682aad", + "kind": "Manual", + "name": "Mission capability: Restore a safe supply ↔ Mission capability: Restore a safe supply", + "oa": "1f8b1898-65f6-5360-99cf-b78a71bd50ec", + "sa": "a0902e0f-3d18-576a-9aca-975a136dfdd7" + }, + "aba528ea-e396-582a-bfba-f6e2212d391a": { + "alias": "trace_oa_control", + "baseline": { + "oa": { + "description": "", + "name": "Control room" + }, + "sa": { + "description": "", + "name": "Pressure coordination service" + } + }, + "description": "", + "id": "aba528ea-e396-582a-bfba-f6e2212d391a", + "kind": "Participant", + "name": "Control room ↔ Pressure coordination service", + "oa": "32aa9940-df6e-5a12-b9bd-6337e2d2ed22", + "sa": "435bf87c-73fd-5e4d-978a-4c471bc9eaf0" + }, + "ac3aa6b0-568e-5a3f-963a-172aa3cfc7a4": { + "alias": "trace_oa_repair_step", + "baseline": { + "oa": { + "description": "", + "name": "Repair the valve" + }, + "sa": { + "description": "", + "name": "Repair the valve" + } + }, + "description": "", + "id": "ac3aa6b0-568e-5a3f-963a-172aa3cfc7a4", + "kind": "Sequence", + "name": "Repair the valve ↔ Repair the valve", + "oa": "c59432fe-6092-5ee0-908d-9dbf39476471", + "sa": "0f195fea-3493-5ebd-966d-da9eddeb05d7" + }, + "acdbee9c-5017-5154-804e-50801f0376ec": { + "alias": "trace_oa_assess_allocation", + "baseline": { + "oa": { + "description": "", + "name": "Allocation: Assess pressure alarm" + }, + "sa": { + "description": "", + "name": "Allocation: Assess pressure alarm" + } + }, + "description": "", + "id": "acdbee9c-5017-5154-804e-50801f0376ec", + "kind": "Manual", + "name": "Allocation: Assess pressure alarm ↔ Allocation: Assess pressure alarm", + "oa": "594c61cd-94e0-5c07-890d-edfd520d7df9", + "sa": "9b9356d7-2db2-5a94-a47e-ea892cf02afe" + }, + "ad697c00-07d9-5799-89b3-2c78da8dff4d": { + "alias": "trace_oa_request_step", + "baseline": { + "oa": { + "description": "", + "name": "Request the field repair" + }, + "sa": { + "description": "", + "name": "Request the field repair" + } + }, + "description": "", + "id": "ad697c00-07d9-5799-89b3-2c78da8dff4d", + "kind": "Sequence", + "name": "Request the field repair ↔ Request the field repair", + "oa": "5ba8079c-2dbe-5e98-ae82-2b60c6020a02", + "sa": "40d94322-baa2-5c81-b261-ff47cdc33782" + }, + "b13452bb-1a55-5ad6-b6d9-a37fb34e8d13": { + "alias": "trace_oa_repair", + "baseline": { + "oa": { + "description": "", + "name": "Repair valve in the field" + }, + "sa": { + "description": "", + "name": "Repair valve in the field" + } + }, + "description": "", + "id": "b13452bb-1a55-5ad6-b6d9-a37fb34e8d13", + "kind": "Refinement", + "name": "Repair valve in the field ↔ Repair valve in the field", + "oa": "a21465af-05f3-5fb5-8983-de26932422fb", + "sa": "9497e10f-04c4-5586-8738-2464a6f00bd4" + }, + "b53863a2-ed80-5f98-ad3c-50e1b821066d": { + "alias": "trace_oa_monitor", + "baseline": { + "oa": { + "description": "", + "name": "Pressure supervision" + }, + "sa": { + "description": "", + "name": "Pressure supervision" + } + }, + "description": "", + "id": "b53863a2-ed80-5f98-ad3c-50e1b821066d", + "kind": "State", + "name": "Pressure supervision ↔ Pressure supervision", + "oa": "1970608f-85d1-5234-ac86-5e2b0df27dc3", + "sa": "132b3f28-3f88-5327-9868-8c8b645ed412" + }, + "b97749d4-f9ad-5fb7-9d78-bc60a74e98eb": { + "alias": "trace_oa_high_pressure", + "baseline": { + "oa": { + "description": "", + "name": "Pressure alarm detected" + }, + "sa": { + "description": "", + "name": "Pressure alarm detected" + } + }, + "description": "", + "id": "b97749d4-f9ad-5fb7-9d78-bc60a74e98eb", + "kind": "State", + "name": "Pressure alarm detected ↔ Pressure alarm detected", + "oa": "65d6b8d6-271a-5c84-8b42-abbe310c955e", + "sa": "01490fa8-2f01-5ac8-9722-d55d45414379" + }, + "bb72b2c2-6e32-5f65-9d8e-b33c1a65da37": { + "alias": "trace_oa_field_procedure", + "baseline": { + "oa": { + "description": "", + "name": "Field repair procedure" + }, + "sa": { + "description": "", + "name": "Field repair procedure" + } + }, + "description": "", + "id": "bb72b2c2-6e32-5f65-9d8e-b33c1a65da37", + "kind": "Sequence", + "name": "Field repair procedure ↔ Field repair procedure", + "oa": "5d3af417-244c-54bb-9588-16daedda4e1f", + "sa": "93eb6479-54e9-59cb-ac7b-16912347bfc0" + }, + "bbf6f1a1-cb2b-5632-8ec0-bf4b8ef1a941": { + "alias": "trace_oa_decision", + "baseline": { + "oa": { + "description": "", + "name": "Can a remote reset safely recover pressure?" + }, + "sa": { + "description": "", + "name": "Can a remote reset safely recover pressure?" + } + }, + "description": "", + "id": "bbf6f1a1-cb2b-5632-8ec0-bf4b8ef1a941", + "kind": "Sequence", + "name": "Can a remote reset safely recover pressure? ↔ Can a remote reset safely recover pressure?", + "oa": "b280c6ca-e5f9-5424-a5c1-5676e01c2371", + "sa": "30c8fad9-a49b-5692-9542-3148e76afd7b" + }, + "c132a0df-1270-55a8-ac4e-6e5075823dc1": { + "alias": "trace_oa_outer_technician", + "baseline": { + "oa": { + "description": "", + "name": "Technician" + }, + "sa": { + "description": "", + "name": "Technician" + } + }, + "description": "", + "id": "c132a0df-1270-55a8-ac4e-6e5075823dc1", + "kind": "Scenario", + "name": "Technician ↔ Technician", + "oa": "fffff882-78fd-5415-928d-c1ef7fac6576", + "sa": "155e4fe4-9e3b-5f4e-b886-28abcc3f086b" + }, + "c47cf0b4-fe15-5175-bd62-5292e43adc39": { + "alias": "trace_oa_normal_transition", + "baseline": { + "oa": { + "description": "", + "name": "State transition: Monitoring" + }, + "sa": { + "description": "", + "name": "State transition: Monitoring" + } + }, + "description": "", + "id": "c47cf0b4-fe15-5175-bd62-5292e43adc39", + "kind": "Manual", + "name": "State transition: Monitoring ↔ State transition: Monitoring", + "oa": "21fe5e8e-cbc2-5dad-b3e8-1df46e167d97", + "sa": "6e2c1b47-764c-577a-b325-ff66dd2a2768" + }, + "c5051628-b7af-5fb1-a014-bb60a0b46e03": { + "alias": "trace_oa_responder", + "baseline": { + "oa": { + "description": "", + "name": "Technician" + }, + "sa": { + "description": "", + "name": "Technician" + } + }, + "description": "", + "id": "c5051628-b7af-5fb1-a014-bb60a0b46e03", + "kind": "Scenario", + "name": "Technician ↔ Technician", + "oa": "fc81c5f0-0442-5b88-992b-e5b10f351c59", + "sa": "6249b54a-e396-5338-82b9-89266c55670d" + }, + "c987bd0f-87f6-5550-945d-2a42450fe1c5": { + "alias": "trace_oa_mission", + "baseline": { + "oa": { + "description": "", + "name": "Maintain safe water supply" + }, + "sa": { + "description": "", + "name": "Maintain safe water supply" + } + }, + "description": "", + "id": "c987bd0f-87f6-5550-945d-2a42450fe1c5", + "kind": "Mission", + "name": "Maintain safe water supply ↔ Maintain safe water supply", + "oa": "c9c61f50-06e0-5d17-973d-dcc57cd5cc90", + "sa": "5ad034b1-084d-5273-9e70-971671766132" + }, + "c9d65349-3400-58eb-8a55-57fa02de4b67": { + "alias": "trace_oa_contact", + "baseline": { + "oa": { + "description": "", + "name": "Technician service conversation" + }, + "sa": { + "description": "", + "name": "Technician service conversation" + } + }, + "description": "", + "id": "c9d65349-3400-58eb-8a55-57fa02de4b67", + "kind": "Exchange", + "name": "Technician service conversation ↔ Technician service conversation", + "oa": "27b47887-baf0-518b-bf87-f5acbf7d0b93", + "sa": "63009b5f-539e-5914-b630-ec6b7fefb4d5" + }, + "cf92cedf-ea1a-510c-9bc5-89c16d60e8d2": { + "alias": "trace_oa_repair_operation", + "baseline": { + "oa": { + "description": "", + "name": "Valve repair" + }, + "sa": { + "description": "", + "name": "Valve repair" + } + }, + "description": "", + "id": "cf92cedf-ea1a-510c-9bc5-89c16d60e8d2", + "kind": "Item", + "name": "Valve repair ↔ Valve repair", + "oa": "d736c7d6-d369-550a-8ba4-dae223e40bb3", + "sa": "a962fc5e-3ab0-5296-8b0d-fd84633f9218" + }, + "d32dd433-9c9e-5b57-9355-2970cc44a5f2": { + "alias": "trace_oa_field_merge", + "baseline": { + "oa": { + "description": "", + "name": "Continue" + }, + "sa": { + "description": "", + "name": "Continue" + } + }, + "description": "", + "id": "d32dd433-9c9e-5b57-9355-2970cc44a5f2", + "kind": "Manual", + "name": "Continue ↔ Continue", + "oa": "c8593670-8906-530f-b6a2-3ada77a9c219", + "sa": "0f6ac3fb-4ad6-581e-ad14-336472072d5e" + }, + "d3626818-4846-5893-9c02-3407cdba7f3c": { + "alias": "trace_oa_response", + "baseline": { + "oa": { + "description": "", + "name": "Handle a pressure alarm" + }, + "sa": { + "description": "", + "name": "Handle a pressure alarm" + } + }, + "description": "", + "id": "d3626818-4846-5893-9c02-3407cdba7f3c", + "kind": "Sequence", + "name": "Handle a pressure alarm ↔ Handle a pressure alarm", + "oa": "58bae2b0-f560-50f2-818d-19091d22d18a", + "sa": "5139ce73-56fd-5875-ba3a-e569fc890231" + }, + "d47d3c36-50fb-5189-b801-d6fd1694bd49": { + "alias": "trace_oa_technician", + "baseline": { + "oa": { + "description": "", + "name": "Field technician" + }, + "sa": { + "description": "", + "name": "Field technician" + } + }, + "description": "", + "id": "d47d3c36-50fb-5189-b801-d6fd1694bd49", + "kind": "Participant", + "name": "Field technician ↔ Field technician", + "oa": "e07c3952-4a1a-5cc7-b7d5-03a01101ce49", + "sa": "c05b9422-b9da-5de5-b21d-07ad23bd2b8a" + }, + "d7773ff5-cef5-50c1-8f9d-c5659115e1f0": { + "alias": "trace_oa_confirm", + "baseline": { + "oa": { + "description": "", + "name": "Confirm safe pressure" + }, + "sa": { + "description": "", + "name": "Confirm safe pressure" + } + }, + "description": "", + "id": "d7773ff5-cef5-50c1-8f9d-c5659115e1f0", + "kind": "Refinement", + "name": "Confirm safe pressure ↔ Confirm safe pressure", + "oa": "727c0b5c-8db6-5eb7-83d6-735519c5949f", + "sa": "d75eb3fa-a27d-52d5-8782-8b342b3865f6" + }, + "d9d47371-e98d-5d29-9df7-4de2d28a5c73": { + "alias": "trace_oa_pressure", + "baseline": { + "oa": { + "description": "", + "name": "Measured pressure" + }, + "sa": { + "description": "", + "name": "Measured pressure" + } + }, + "description": "", + "id": "d9d47371-e98d-5d29-9df7-4de2d28a5c73", + "kind": "Item", + "name": "Measured pressure ↔ Measured pressure", + "oa": "e7824764-5db9-5384-8198-2fbaea2b10b2", + "sa": "87d0a95b-af1b-5352-b753-e4c6533671a5" + }, + "da8efc3c-78df-5b10-b2e5-1e28d6d99e86": { + "alias": "trace_oa_repair_request", + "baseline": { + "oa": { + "description": "", + "name": "Request field repair" + }, + "sa": { + "description": "", + "name": "Request field repair" + } + }, + "description": "", + "id": "da8efc3c-78df-5b10-b2e5-1e28d6d99e86", + "kind": "Exchange", + "name": "Request field repair ↔ Request field repair", + "oa": "cf423ea2-8b2e-5a27-93d4-5e8542d9db8d", + "sa": "93474111-f23e-56c1-b61b-b7c2396b91bd" + }, + "e63b14d2-f408-56a2-aec4-be20cf4ace73": { + "alias": "trace_oa_report_step", + "baseline": { + "oa": { + "description": "", + "name": "Report the measured result" + }, + "sa": { + "description": "", + "name": "Report the measured result" + } + }, + "description": "", + "id": "e63b14d2-f408-56a2-aec4-be20cf4ace73", + "kind": "Sequence", + "name": "Report the measured result ↔ Report the measured result", + "oa": "df2fd3f8-6bc2-5380-a13f-36643ed35ac7", + "sa": "ea32e4ec-8bdc-57ea-8a90-7b09ba4f0eac" + }, + "e848da41-445e-5e3c-8b4e-ef53fdddf1e1": { + "alias": "trace_oa_assess_step", + "baseline": { + "oa": { + "description": "", + "name": "Assess the alarm" + }, + "sa": { + "description": "", + "name": "Assess the alarm" + } + }, + "description": "", + "id": "e848da41-445e-5e3c-8b4e-ef53fdddf1e1", + "kind": "Sequence", + "name": "Assess the alarm ↔ Assess the alarm", + "oa": "0b07b9ed-492d-57f6-b0b1-ce8a709238a7", + "sa": "9024243c-ccc1-5edb-8477-2aa16e5e9a50" + }, + "e96ff119-bb4d-5fd9-9ab7-2ede0d3fd418": { + "alias": "trace_oa_contact_category", + "baseline": { + "oa": { + "description": "", + "name": "Field contact" + }, + "sa": { + "description": "", + "name": "Field contact" + } + }, + "description": "", + "id": "e96ff119-bb4d-5fd9-9ab7-2ede0d3fd418", + "kind": "Manual", + "name": "Field contact ↔ Field contact", + "oa": "19bd3a3a-4d0c-56d5-bf50-a6b43fd81771", + "sa": "781cbe75-410f-5cc5-aeb8-a43491f77b99" + }, + "eee79ec1-41d7-5374-986e-995a56b9026f": { + "alias": "trace_oa_remote_path", + "baseline": { + "oa": { + "description": "", + "name": "remote reset is authorized" + }, + "sa": { + "description": "", + "name": "remote reset is authorized" + } + }, + "description": "", + "id": "eee79ec1-41d7-5374-986e-995a56b9026f", + "kind": "Manual", + "name": "remote reset is authorized ↔ remote reset is authorized", + "oa": "76218d89-68fd-531d-b35b-90c5b769a5ef", + "sa": "d8b6710a-e713-5979-934f-e5ca7d155bb4" + }, + "f0cc86e5-f8fd-5091-a40d-dbfb6515072f": { + "alias": "trace_oa_call", + "baseline": { + "oa": { + "description": "", + "name": "Request valve repair" + }, + "sa": { + "description": "", + "name": "Request valve repair" + } + }, + "description": "", + "id": "f0cc86e5-f8fd-5091-a40d-dbfb6515072f", + "kind": "Scenario", + "name": "Request valve repair ↔ Request valve repair", + "oa": "b97437c6-cd7a-5a05-b537-b30a17dd936a", + "sa": "8bab4783-a098-5984-9e36-493957caf26c" + }, + "f2b7050c-629d-533f-b873-bffc33e072f7": { + "alias": "trace_oa_request_then_repair", + "baseline": { + "oa": { + "description": "", + "name": "Sequence link: Repair the valve" + }, + "sa": { + "description": "", + "name": "Sequence link: Repair the valve" + } + }, + "description": "", + "id": "f2b7050c-629d-533f-b873-bffc33e072f7", + "kind": "Manual", + "name": "Sequence link: Repair the valve ↔ Sequence link: Repair the valve", + "oa": "3f54d890-4ca5-5e36-873b-abb5c92d578c", + "sa": "6a6d968f-26d6-5dbb-b721-5a27d362779a" + }, + "f5733d3f-eee3-5cf7-a422-5edd2054d6a6": { + "alias": "trace_oa_use_conversation", + "baseline": { + "oa": { + "description": "", + "name": "Use the reviewed repair conversation" + }, + "sa": { + "description": "", + "name": "Use the reviewed repair conversation" + } + }, + "description": "", + "id": "f5733d3f-eee3-5cf7-a422-5edd2054d6a6", + "kind": "Scenario", + "name": "Use the reviewed repair conversation ↔ Use the reviewed repair conversation", + "oa": "9ff94014-afa1-50ab-a4d3-8e9dd0565cc5", + "sa": "1c9da843-e2d3-5591-8e3f-db083a42867e" + }, + "f8d34715-1dc8-504b-acdf-78b770aad1e8": { + "alias": "trace_oa_repair_then_report", + "baseline": { + "oa": { + "description": "", + "name": "Sequence link: Report the measured result" + }, + "sa": { + "description": "", + "name": "Sequence link: Report the measured result" + } + }, + "description": "", + "id": "f8d34715-1dc8-504b-acdf-78b770aad1e8", + "kind": "Manual", + "name": "Sequence link: Report the measured result ↔ Sequence link: Report the measured result", + "oa": "c8196d35-2168-5fef-8b03-ba0d139bc00f", + "sa": "7fb30b1d-195c-5f0e-a19c-a536f519a899" + }, + "fb02420d-b066-5773-87c1-198a056e0731": { + "alias": "trace_oa_assess_on_entry", + "baseline": { + "oa": { + "description": "", + "name": "Assess when repair is needed" + }, + "sa": { + "description": "", + "name": "Assess when repair is needed" + } + }, + "description": "", + "id": "fb02420d-b066-5773-87c1-198a056e0731", + "kind": "Manual", + "name": "Assess when repair is needed ↔ Assess when repair is needed", + "oa": "7fa37e63-db65-5aa7-88f2-31ff4347a787", + "sa": "a887f96a-37cb-5891-8070-011fa276e5b5" + }, + "fd195498-dbba-523b-94d0-49f3b9531a3e": { + "alias": "trace_oa_outer_controller", + "baseline": { + "oa": { + "description": "", + "name": "Controller" + }, + "sa": { + "description": "", + "name": "Controller" + } + }, + "description": "", + "id": "fd195498-dbba-523b-94d0-49f3b9531a3e", + "kind": "Scenario", + "name": "Controller ↔ Controller", + "oa": "2011b3ac-614b-5a47-8891-7ff81965f425", + "sa": "1edfcf9e-9bfa-51f1-80d5-62b8fd8bb023" + }, + "ff84fc06-6f99-5cf3-b73d-236e9eff98a3": { + "alias": "trace_oa_reset_step", + "baseline": { + "oa": { + "description": "", + "name": "Try the authorized remote reset" + }, + "sa": { + "description": "", + "name": "Try the authorized remote reset" + } + }, + "description": "", + "id": "ff84fc06-6f99-5cf3-b73d-236e9eff98a3", + "kind": "Sequence", + "name": "Try the authorized remote reset ↔ Try the authorized remote reset", + "oa": "d2026fc2-74a8-5e22-9942-ff3eb68a3677", + "sa": "bfa2ef0b-ce68-55c2-a9e5-31ea8a74fce6" + } + } +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/model.rs b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/model.rs new file mode 100644 index 00000000..e7a3e98b --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/model.rs @@ -0,0 +1,1040 @@ +//! Reproducible teaching model. The SA counterpart is produced by the real planner. +use oa_core::{source_project, transitions::*, validation, view_options::*, *}; +use std::collections::BTreeMap; + +pub fn id(alias: &str) -> Id { + Id::new_v5( + &Id::NAMESPACE_URL, + format!("https://arcadia-studio.example/lessons/pressure/{alias}").as_bytes(), + ) +} +fn element( + p: &mut Project, + alias: &str, + name: &str, + kind: Kind, + layer: Layer, + parent: Option, +) -> Id { + let id = id(alias); + p.elements.insert( + id, + Element { + id, + alias: alias.into(), + name: name.into(), + description: String::new(), + parent, + body: ElementBody::new(kind, layer).unwrap(), + }, + ); + id +} +fn shared(p: &mut Project, id: Id, body: SharedBody) { + *p.elements.get_mut(&id).unwrap().shared_mut().unwrap() = body; +} +fn relation(p: &mut Project, alias: &str, name: &str, body: RelationBody) -> Id { + let id = id(alias); + p.relations.insert( + id, + Relation { + id, + alias: alias.into(), + name: name.into(), + description: String::new(), + body, + }, + ); + id +} +fn link(p: &mut Project, alias: &str, kind: RelationKind, source: Id, target: Id) -> Id { + let name = format!("{kind}: {}", p.named(target)); + relation(p, alias, &name, RelationBody::new(kind, source, target)) +} +fn occurrence(p: &mut Project, owner: Id, alias: &str, name: &str, body: OccurrenceBody) -> Id { + let layer = p.elements[&owner].layer(); + let id = element(p, alias, name, Kind::Occurrence, layer, Some(owner)); + shared( + p, + id, + SharedBody::Occurrence { + body, + precondition: String::new(), + postcondition: String::new(), + }, + ); + p.elements + .get_mut(&owner) + .unwrap() + .steps_mut() + .unwrap() + .push(id); + id +} +fn line(p: &mut Project, owner: Id, alias: &str, name: &str, represented: Id) -> Id { + let id = element(p, alias, name, Kind::Lifeline, Layer::Oa, Some(owner)); + shared( + p, + id, + SharedBody::Lifeline { + represented: Some(represented), + }, + ); + id +} +fn scenario(p: &mut Project, alias: &str, name: &str, capability: Id) -> Id { + let id = element(p, alias, name, Kind::Scenario, Layer::Oa, None); + shared( + p, + id, + SharedBody::Scenario { + viewpoint: ScenarioViewpoint::ParticipantInteraction, + context: Some(capability), + precondition: "A pressure alarm has been assessed".into(), + postcondition: "The controller has received the measured pressure after repair".into(), + steps: vec![], + }, + ); + id +} +fn message( + exchange: Id, + sender: Id, + receiver: Id, + reply_to: Option, + field: Id, + value: &str, +) -> OccurrenceBody { + OccurrenceBody::Exchange { + operation: None, + exchange: Some(exchange), + sender: Some(sender), + receiver: Some(receiver), + message_kind: if reply_to.is_some() { + MessageKind::Reply + } else { + MessageKind::Call + }, + reply_to, + values: vec![MessageValue { + path: vec![], + field, + expression: value.into(), + }], + } +} +fn diagram( + p: &mut Project, + alias: &str, + name: &str, + layer: Layer, + projection: ProjectionKind, + members: &[(&str, f32, f32)], +) -> Id { + let diagram_id = id(alias); + let nodes = members + .iter() + .map(|(member, x, y)| { + let alias = format!("{alias}_{member}"); + let node = NodePlacement { + id: id(&alias), + alias, + element: id(member), + position: Position { x: *x, y: *y }, + size: Size { + width: 245., + height: 110., + }, + collapsed: false, + port_anchors: vec![], + }; + (node.id, node) + }) + .collect(); + p.diagrams.insert(diagram_id, Diagram { id: diagram_id, alias: alias.into(), name: name.into(), description: "Teaching view: positions and filters do not change ownership or exchange identities.".into(), layer, projection, view_options: ViewOptions::default(), nodes, routes: vec![] }); + diagram_id +} + +pub struct Lesson { + pub project: Project, + pub before_transition: Project, + pub request: TransitionRequest, +} + +pub fn build() -> Lesson { + let mut p = Project::empty(); + p.id = id("pressure_restoration"); + p.alias = "pressure_restoration".into(); + p.name = "Restore safe water pressure — release 1 walkthrough".into(); + p.description = "A controller either resets a valve remotely or requests field repair. Compare the operational need with the explicitly chosen coordination-service boundary. Start with README.md beside project.arcadia. Units and guards are descriptive; this model does not simulate a real water network.".into(); + let control = element( + &mut p, + "oa_control", + "Control room", + Kind::Entity, + Layer::Oa, + None, + ); + let technician = element( + &mut p, + "oa_technician", + "Field technician", + Kind::Actor, + Layer::Oa, + None, + ); + let parent = element( + &mut p, + "oa_restore_work", + "Restore safe pressure", + Kind::Activity, + Layer::Oa, + None, + ); + let mut works = vec![]; + for (alias, name, performer) in [ + ("oa_assess", "Assess pressure alarm", control), + ("oa_reset", "Reset valve remotely", control), + ("oa_repair", "Repair valve in the field", technician), + ("oa_confirm", "Confirm safe pressure", control), + ] { + let work = element(&mut p, alias, name, Kind::Activity, Layer::Oa, Some(parent)); + link( + &mut p, + &format!("{alias}_allocation"), + RelationKind::Allocation, + performer, + work, + ); + works.push(work); + } + let [assess, reset, repair, confirm] = works[..] else { + unreachable!() + }; + let mission = element( + &mut p, + "oa_mission", + "Maintain safe water supply", + Kind::OperationalMission, + Layer::Oa, + None, + ); + let capability = element( + &mut p, + "oa_restore", + "Restore a safe supply", + Kind::Capability, + Layer::Oa, + None, + ); + let triage = element( + &mut p, + "oa_triage", + "Assess an alarm", + Kind::Capability, + Layer::Oa, + None, + ); + link( + &mut p, + "oa_mission_delivery", + RelationKind::MissionCapability, + mission, + capability, + ); + link( + &mut p, + "oa_mission_participant", + RelationKind::MissionInvolvement, + control, + mission, + ); + link( + &mut p, + "oa_include_triage", + RelationKind::CapabilityInclude, + capability, + triage, + ); + link( + &mut p, + "oa_assessment_support", + RelationKind::CapabilityInvolvement, + assess, + triage, + ); + + let pressure = element( + &mut p, + "oa_pressure", + "Measured pressure", + Kind::DataType, + Layer::Oa, + None, + ); + shared( + &mut p, + pressure, + SharedBody::DataType { + definition: DataTypeDefinition::Real { + minimum: Some(0.), + maximum: Some(600.), + }, + default: None, + unit: "kPa".into(), + }, + ); + let ticket = element( + &mut p, + "oa_repair_operation", + "Valve repair", + Kind::ExchangeItem, + Layer::Oa, + None, + ); + shared( + &mut p, + ticket, + SharedBody::ExchangeItem { + kind: ExchangeItemKind::Information, + mechanism: ExchangeMechanism::Operation, + supertype: None, + }, + ); + let measured = element( + &mut p, + "oa_pressure_parameter", + "Pressure before / after repair", + Kind::DataField, + Layer::Oa, + Some(ticket), + ); + shared( + &mut p, + measured, + SharedBody::DataField { + type_ref: TypeRef::Named(pressure), + minimum: 1, + maximum: Some(1), + unit: String::new(), + direction: ParameterDirection::InOut, + storage: FieldStorage::Value, + default: None, + }, + ); + let request_exchange = relation( + &mut p, + "oa_repair_request", + "Request field repair", + RelationBody::Interaction { + source: assess, + target: repair, + items: vec![ticket], + }, + ); + let report_exchange = relation( + &mut p, + "oa_repair_report", + "Report repair result", + RelationBody::Interaction { + source: repair, + target: confirm, + items: vec![ticket], + }, + ); + let channel = relation( + &mut p, + "oa_contact", + "Technician service conversation", + RelationBody::CommunicationMean { + source: control, + target: technician, + oriented: false, + items: vec![ticket], + }, + ); + for (alias, exchange) in [ + ("oa_request_carriage", request_exchange), + ("oa_report_carriage", report_exchange), + ] { + link( + &mut p, + alias, + RelationKind::ExchangeAllocation, + channel, + exchange, + ); + } + for (alias, name, family, exchanges) in [ + ( + "oa_repair_traffic", + "Repair work exchanges", + ExchangeFamily::Work, + vec![request_exchange, report_exchange], + ), + ( + "oa_contact_category", + "Field contact", + ExchangeFamily::Participant, + vec![channel], + ), + ] { + let category = element(&mut p, alias, name, Kind::ExchangeCategory, Layer::Oa, None); + shared( + &mut p, + category, + SharedBody::ExchangeCategory { family, exchanges }, + ); + } + + let assessment = element( + &mut p, + "oa_assessment_procedure", + "Assess an alarm procedure", + Kind::Process, + Layer::Oa, + None, + ); + occurrence( + &mut p, + assessment, + "oa_assessment_action", + "Assess pressure alarm", + OccurrenceBody::Action { + action: Some(assess), + lifeline: None, + }, + ); + link( + &mut p, + "oa_assessment_delivery", + RelationKind::ChainInvolvement, + assessment, + triage, + ); + let field = element( + &mut p, + "oa_field_procedure", + "Field repair procedure", + Kind::Process, + Layer::Oa, + None, + ); + let ask = occurrence( + &mut p, + field, + "oa_request_step", + "Request the field repair", + OccurrenceBody::Exchange { + operation: None, + exchange: Some(request_exchange), + sender: None, + receiver: None, + message_kind: MessageKind::Asynchronous, + reply_to: None, + values: vec![], + }, + ); + let fix = occurrence( + &mut p, + field, + "oa_repair_step", + "Repair the valve", + OccurrenceBody::Action { + action: Some(repair), + lifeline: None, + }, + ); + let report = occurrence( + &mut p, + field, + "oa_report_step", + "Report the measured result", + OccurrenceBody::Exchange { + operation: None, + exchange: Some(report_exchange), + sender: None, + receiver: None, + message_kind: MessageKind::Asynchronous, + reply_to: None, + values: vec![], + }, + ); + link( + &mut p, + "oa_request_then_repair", + RelationKind::SequenceLink, + ask, + fix, + ); + link( + &mut p, + "oa_repair_then_report", + RelationKind::SequenceLink, + fix, + report, + ); + let process = element( + &mut p, + "oa_response", + "Handle a pressure alarm", + Kind::Process, + Layer::Oa, + None, + ); + link( + &mut p, + "oa_response_delivery", + RelationKind::ChainInvolvement, + process, + capability, + ); + let start = occurrence( + &mut p, + process, + "oa_assess_step", + "Assess the alarm", + OccurrenceBody::SequenceReference { + sequence: Some(assessment), + }, + ); + let choice = occurrence( + &mut p, + process, + "oa_decision", + "Can a remote reset safely recover pressure?", + OccurrenceBody::Control { + kind: ControlKind::Choice, + }, + ); + let remote = occurrence( + &mut p, + process, + "oa_reset_step", + "Try the authorized remote reset", + OccurrenceBody::Action { + action: Some(reset), + lifeline: None, + }, + ); + let reuse = occurrence( + &mut p, + process, + "oa_use_field", + "Use the field repair procedure", + OccurrenceBody::SequenceReference { + sequence: Some(field), + }, + ); + let merge = occurrence( + &mut p, + process, + "oa_merge", + "Recovery path completed", + OccurrenceBody::Control { + kind: ControlKind::Merge, + }, + ); + let end = occurrence( + &mut p, + process, + "oa_confirm_step", + "Confirm safe pressure", + OccurrenceBody::Action { + action: Some(confirm), + lifeline: None, + }, + ); + for (alias, a, b, guard) in [ + ("oa_assess_then_decide", start, choice, ""), + ( + "oa_remote_path", + choice, + remote, + "remote reset is authorized", + ), + ("oa_field_path", choice, reuse, "else"), + ("oa_remote_merge", remote, merge, ""), + ("oa_field_merge", reuse, merge, ""), + ("oa_confirm_path", merge, end, ""), + ] { + relation( + &mut p, + alias, + if guard.is_empty() { "Continue" } else { guard }, + RelationBody::SequenceLink { + source: a, + target: b, + guard: guard.into(), + }, + ); + } + let conversation = scenario( + &mut p, + "oa_conversation", + "Repair request and measured reply", + capability, + ); + let caller = line(&mut p, conversation, "oa_caller", "Controller", control); + let responder = line( + &mut p, + conversation, + "oa_responder", + "Technician", + technician, + ); + let call = occurrence( + &mut p, + conversation, + "oa_call", + "Request valve repair", + message(channel, caller, responder, None, measured, "420.0"), + ); + occurrence( + &mut p, + conversation, + "oa_reply", + "Return pressure after repair", + message(channel, responder, caller, Some(call), measured, "320.0"), + ); + let full = scenario( + &mut p, + "oa_full_scenario", + "Restore supply through field repair", + capability, + ); + let outer_control = line(&mut p, full, "oa_outer_controller", "Controller", control); + let outer_tech = line( + &mut p, + full, + "oa_outer_technician", + "Technician", + technician, + ); + occurrence( + &mut p, + full, + "oa_use_conversation", + "Use the reviewed repair conversation", + OccurrenceBody::ScenarioUse { + scenario: Some(conversation), + bindings: vec![ + LifelineBinding { + referenced: caller, + local: outer_control, + }, + LifelineBinding { + referenced: responder, + local: outer_tech, + }, + ], + }, + ); + + let machine = element( + &mut p, + "oa_monitor", + "Pressure supervision", + Kind::StateMachine, + Layer::Oa, + Some(control), + ); + let region = element( + &mut p, + "oa_monitor_region", + "Supervision cycle", + Kind::Region, + Layer::Oa, + Some(machine), + ); + let initial = element( + &mut p, + "oa_monitor_initial", + "Start", + Kind::Initial, + Layer::Oa, + Some(region), + ); + let watch = element( + &mut p, + "oa_monitoring", + "Monitoring", + Kind::State, + Layer::Oa, + Some(region), + ); + let waiting = element( + &mut p, + "oa_waiting", + "Awaiting repair", + Kind::State, + Layer::Oa, + Some(region), + ); + let high = element( + &mut p, + "oa_high_pressure", + "Pressure alarm detected", + Kind::Event, + Layer::Oa, + None, + ); + shared( + &mut p, + high, + SharedBody::Event { + body: EventBody::Change { + expression: "measured_pressure > operating_limit".into(), + }, + }, + ); + link( + &mut p, + "oa_start_monitoring", + RelationKind::StateTransition, + initial, + watch, + ); + let alarm = link( + &mut p, + "oa_alarm_transition", + RelationKind::StateTransition, + watch, + waiting, + ); + if let RelationBody::StateTransition { triggers, .. } = + &mut p.relations.get_mut(&alarm).unwrap().body + { + triggers.push(high); + } + let normal = link( + &mut p, + "oa_normal_transition", + RelationKind::StateTransition, + waiting, + watch, + ); + if let RelationBody::StateTransition { guard, .. } = + &mut p.relations.get_mut(&normal).unwrap().body + { + *guard = "repair confirmed and pressure is safe".into(); + } + relation( + &mut p, + "oa_assess_on_entry", + "Assess when repair is needed", + RelationBody::StateAction { + source: waiting, + target: assess, + phase: StateActionKind::Entry, + }, + ); + + // The engineer chooses this system boundary; the planner must never infer it. + let system = element( + &mut p, + "sa_control", + "Pressure coordination service", + Kind::System, + Layer::Sa, + None, + ); + let external = element( + &mut p, + "sa_technician", + "Field technician", + Kind::SystemActor, + Layer::Sa, + None, + ); + let mut request = TransitionRequest::new( + TransitionDirection::OaToSa, + p.elements + .values() + .filter(|e| e.layer() == Layer::Oa) + .map(|e| e.id) + .chain( + p.relations + .values() + .filter(|r| r.kind() != RelationKind::ExchangeAllocation) + .map(|r| r.id), + ) + .collect(), + ); + request.fields.clear(); // Existing selected participants retain their deliberately different names. + request.mappings = vec![ + TransitionMapping { + source: control, + target: Some(system), + target_kind: None, + }, + TransitionMapping { + source: technician, + target: Some(external), + target_kind: None, + }, + ]; + let port = |alias: &str, name: &str| CommunicationPortChoice::Create { + id: id(alias), + alias: alias.into(), + name: name.into(), + description: "Explicitly chosen Standard component port for the repair service.".into(), + kind: ComponentPortKind::Standard, + orientation: ComponentPortOrientation::Unset, + }; + request + .communication_endpoints + .push(CommunicationEndpointDecision { + source: channel, + source_port: port("sa_control_port", "Repair service client"), + target_port: port("sa_technician_port", "Repair service provider"), + }); + let before_transition = p.clone(); + let plan = plan_transition(&p, &request).expect("well-formed teaching transition"); + assert!( + plan.conflicts.is_empty(), + "teaching transition conflicts: {:?}", + plan.conflicts + ); + p = apply_transition(&p, &plan).expect("teaching transition is structurally valid"); + + // Canonical lesson aliases/UUIDs replace only generator-created identities. + // The real planner still determines every counterpart and function-port contract. + for change in &plan.changes { + let alias = before_transition + .identities() + .into_iter() + .find(|(id, _)| *id == change.source) + .unwrap() + .1 + .replacen("oa_", "sa_", 1); + if let Some(e) = p.elements.get_mut(&change.target) { + e.alias = alias.clone(); + } + if let Some(r) = p.relations.get_mut(&change.target) { + r.alias = alias; + } + } + let functions: Vec<_> = p + .relations + .values() + .filter_map(|r| { + if let RelationBody::FunctionalExchange { + source_port, + target_port, + .. + } = r.body + { + Some((r.alias.clone(), source_port, target_port)) + } else { + None + } + }) + .collect(); + for (alias, out, input) in functions { + p.elements.get_mut(&out).unwrap().alias = format!("{alias}_out"); + p.elements.get_mut(&input).unwrap().alias = format!("{alias}_in"); + } + let aliases: BTreeMap<_, _> = p + .identities() + .into_iter() + .map(|(id, alias)| (id, alias.to_owned())) + .collect(); + for trace in p.traces.values_mut() { + trace.alias = format!("trace_{}", aliases[&trace.oa]); + } + let identities: Vec<_> = p + .identities() + .into_iter() + .map(|(old, alias)| (old, id(alias))) + .collect(); + for (old, new) in identities { + session::reidentify(&mut p, old, new).unwrap(); + } + + let interface = element( + &mut p, + "sa_repair_interface", + "Valve repair service", + Kind::Interface, + Layer::Sa, + None, + ); + relation( + &mut p, + "sa_repair_interface_item", + "Repair operation contract", + RelationBody::InterfaceItemAllocation { + source: interface, + target: id("sa_repair_operation"), + order: 0, + transmission: TransmissionProtocol::Synchronous, + acquisition: AcquisitionProtocol::Accept, + }, + ); + link( + &mut p, + "sa_client_requires", + RelationKind::InterfaceRequirement, + id("sa_control_port"), + interface, + ); + link( + &mut p, + "sa_provider_provides", + RelationKind::InterfaceProvision, + id("sa_technician_port"), + interface, + ); + for (name, component, port) in [ + ("request_out", "sa_control_port", "sa_repair_request_out"), + ("request_in", "sa_technician_port", "sa_repair_request_in"), + ("report_out", "sa_technician_port", "sa_repair_report_out"), + ("report_in", "sa_control_port", "sa_repair_report_in"), + ] { + link( + &mut p, + &format!("sa_port_{name}"), + RelationKind::PortAllocation, + id(component), + id(port), + ); + } + for (alias, exchange) in [ + ("sa_request_carriage", "sa_repair_request"), + ("sa_report_carriage", "sa_repair_report"), + ] { + link( + &mut p, + alias, + RelationKind::ExchangeAllocation, + id("sa_contact"), + id(exchange), + ); + } + let audit = element( + &mut p, + "sa_audit_thresholds", + "Audit pressure thresholds", + Kind::Function, + Layer::Sa, + None, + ); + p.elements.get_mut(&audit).unwrap().description = "Deliberately unfinished: assigned to the service, but no behavior context yet. Model checks should expose this one work_without_behavior_context warning.".into(); + link( + &mut p, + "sa_audit_allocation", + RelationKind::Allocation, + id("sa_control"), + audit, + ); + let evidence = id("repair_test_evidence"); + p.artifact_links.insert( + evidence, + ArtifactLink { + id: evidence, + alias: "repair_test_evidence".into(), + name: "Repair conversation acceptance notes".into(), + description: "A local teaching artifact, not proof of a real valve's safety.".into(), + owner: id("sa_conversation"), + relation: ArtifactRelation::Verifies, + uri: "evidence/repair-check.md".into(), + revision: Some("lesson-1".into()), + fragment: Some("acceptance".into()), + }, + ); + + let layout = [ + ("control", 60., 80.), + ("technician", 850., 80.), + ("assess", 100., 170.), + ("reset", 100., 330.), + ("confirm", 100., 490.), + ("repair", 890., 170.), + ]; + for prefix in ["oa", "sa"] { + let names: Vec<_> = layout + .iter() + .map(|(n, x, y)| (format!("{prefix}_{n}"), *x, *y)) + .collect(); + let members: Vec<_> = names.iter().map(|(n, x, y)| (n.as_str(), *x, *y)).collect(); + diagram( + &mut p, + &format!("{prefix}_allocation_view"), + if prefix == "oa" { + "1 · OA responsibility and repair traffic" + } else { + "2 · SA service boundary and functions" + }, + if prefix == "oa" { Layer::Oa } else { Layer::Sa }, + ProjectionKind::Allocation, + &members, + ); + } + let mut focused = p.diagrams[&id("sa_allocation_view")].clone(); + focused.id = id("sa_service_view"); + focused.alias = "sa_service_view".into(); + focused.name = "3 · SA service conversation only".into(); + focused.nodes = focused + .nodes + .into_values() + .map(|mut n| { + n.alias = n.alias.replacen("sa_allocation_view", "sa_service_view", 1); + n.id = id(&n.alias); + (n.id, n) + }) + .collect(); + focused.view_options.work_categories = CategorySelection::Any(vec![]); + focused.view_options.participant_categories = + CategorySelection::Any(vec![id("sa_contact_category")]); + focused.view_options.exchange_labels = ExchangeLabels::NameAndItems; + p.diagrams.insert(focused.id, focused); + diagram( + &mut p, + "sa_capability_view", + "4 · SA mission and included capability", + Layer::Sa, + ProjectionKind::Capabilities, + &[ + ("sa_control", 60., 60.), + ("sa_mission", 420., 60.), + ("sa_restore", 420., 260.), + ("sa_triage", 800., 260.), + ], + ); + diagram( + &mut p, + "sa_state_view", + "5 · SA pressure supervision", + Layer::Sa, + ProjectionKind::StateMachine { + machine: id("sa_monitor"), + }, + &[ + ("sa_monitor", 30., 30.), + ("sa_monitor_region", 70., 95.), + ("sa_monitor_initial", 100., 200.), + ("sa_monitoring", 220., 200.), + ("sa_waiting", 650., 200.), + ], + ); + Lesson { + project: p, + before_transition, + request, + } +} + +pub fn checked_bundle(project: &Project) -> source_project::SourceBundle { + let issues = validation::validate(project); + let errors: Vec<_> = issues + .iter() + .filter(|i| i.severity == validation::Severity::Error) + .collect(); + assert!(errors.is_empty(), "teaching model errors: {errors:?}"); + let bundle = source_project::format_bundle(project); + let compiled = + source_project::compile_bundle(&bundle, source_project::ProjectLimits::default()).unwrap(); + assert_eq!(&compiled.decoded.project, project); + bundle +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/activities/activity_oa_restore_work.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/activities/activity_oa_restore_work.arcadia new file mode 100644 index 00000000..78781701 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/activities/activity_oa_restore_work.arcadia @@ -0,0 +1,45 @@ +oa_activity oa_restore_work "Restore safe pressure" id "1b91f8a7-0bdb-514e-b1cd-955658e09927" { + description ""; + parent none; +} + +oa_activity oa_assess "Assess pressure alarm" id "61f7bbfb-74a4-5540-9182-2583dfb27a49" { + description ""; + parent @oa_restore_work; +} + +oa_activity oa_confirm "Confirm safe pressure" id "727c0b5c-8db6-5eb7-83d6-735519c5949f" { + description ""; + parent @oa_restore_work; +} + +oa_activity oa_repair "Repair valve in the field" id "a21465af-05f3-5fb5-8983-de26932422fb" { + description ""; + parent @oa_restore_work; +} + +oa_activity oa_reset "Reset valve remotely" id "d0c8be87-d238-503a-a549-7558a210507f" { + description ""; + parent @oa_restore_work; +} + +capability_involvement oa_assessment_support "Capability involvement: Assess an alarm" id "ffdbfcd0-d423-5707-a880-0dfbe1400f72" { + description ""; + source @oa_assess; + target @oa_triage; +} + +interaction oa_repair_request "Request field repair" id "cf423ea2-8b2e-5a27-93d4-5e8542d9db8d" { + description ""; + items [@oa_repair_operation]; + source @oa_assess; + target @oa_repair; +} + +interaction oa_repair_report "Report repair result" id "b436d0b3-c824-5a96-af6b-2c269816d1cc" { + description ""; + items [@oa_repair_operation]; + source @oa_repair; + target @oa_confirm; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/behavior/process_oa_assessment_procedure.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/behavior/process_oa_assessment_procedure.arcadia new file mode 100644 index 00000000..4ab5bda8 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/behavior/process_oa_assessment_procedure.arcadia @@ -0,0 +1,25 @@ +oa_process oa_assessment_procedure "Assess an alarm procedure" id "022d3cfa-bbaf-5e13-924a-8e55099b8745" { + description ""; + parent none; + steps [@oa_assessment_action]; +} + +oa_occurrence oa_assessment_action "Assess pressure alarm" id "942975b8-0bef-5ae8-9fcb-c37497833fb0" { + body { + Action { + action @oa_assess; + lifeline none; + }; + }; + description ""; + parent @oa_assessment_procedure; + postcondition ""; + precondition ""; +} + +chain_involvement oa_assessment_delivery "Chain involvement: Assess an alarm" id "628cb4fc-fe63-5f6b-b364-6268f26b5740" { + description ""; + source @oa_assessment_procedure; + target @oa_triage; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/behavior/process_oa_field_procedure.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/behavior/process_oa_field_procedure.arcadia new file mode 100644 index 00000000..d639717f --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/behavior/process_oa_field_procedure.arcadia @@ -0,0 +1,67 @@ +oa_process oa_field_procedure "Field repair procedure" id "5d3af417-244c-54bb-9588-16daedda4e1f" { + description ""; + parent none; + steps [@oa_request_step, @oa_repair_step, @oa_report_step]; +} + +oa_occurrence oa_repair_step "Repair the valve" id "c59432fe-6092-5ee0-908d-9dbf39476471" { + body { + Action { + action @oa_repair; + lifeline none; + }; + }; + description ""; + parent @oa_field_procedure; + postcondition ""; + precondition ""; +} + +oa_occurrence oa_report_step "Report the measured result" id "df2fd3f8-6bc2-5380-a13f-36643ed35ac7" { + body { + Exchange { + exchange @oa_repair_report; + message_kind Asynchronous; + receiver none; + reply_to none; + sender none; + values []; + }; + }; + description ""; + parent @oa_field_procedure; + postcondition ""; + precondition ""; +} + +oa_occurrence oa_request_step "Request the field repair" id "5ba8079c-2dbe-5e98-ae82-2b60c6020a02" { + body { + Exchange { + exchange @oa_repair_request; + message_kind Asynchronous; + receiver none; + reply_to none; + sender none; + values []; + }; + }; + description ""; + parent @oa_field_procedure; + postcondition ""; + precondition ""; +} + +sequence_link oa_repair_then_report "Sequence link: Report the measured result" id "c8196d35-2168-5fef-8b03-ba0d139bc00f" { + description ""; + guard ""; + source @oa_repair_step; + target @oa_report_step; +} + +sequence_link oa_request_then_repair "Sequence link: Repair the valve" id "3f54d890-4ca5-5e36-873b-abb5c92d578c" { + description ""; + guard ""; + source @oa_request_step; + target @oa_repair_step; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/behavior/process_oa_response.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/behavior/process_oa_response.arcadia new file mode 100644 index 00000000..b4cf4c29 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/behavior/process_oa_response.arcadia @@ -0,0 +1,128 @@ +oa_process oa_response "Handle a pressure alarm" id "58bae2b0-f560-50f2-818d-19091d22d18a" { + description ""; + parent none; + steps [@oa_assess_step, @oa_decision, @oa_reset_step, @oa_use_field, @oa_merge, @oa_confirm_step]; +} + +oa_occurrence oa_assess_step "Assess the alarm" id "0b07b9ed-492d-57f6-b0b1-ce8a709238a7" { + body { + SequenceReference { + sequence @oa_assessment_procedure; + }; + }; + description ""; + parent @oa_response; + postcondition ""; + precondition ""; +} + +oa_occurrence oa_confirm_step "Confirm safe pressure" id "e00594a3-6122-5a6b-b3c2-ecb5506c741d" { + body { + Action { + action @oa_confirm; + lifeline none; + }; + }; + description ""; + parent @oa_response; + postcondition ""; + precondition ""; +} + +oa_occurrence oa_decision "Can a remote reset safely recover pressure?" id "b280c6ca-e5f9-5424-a5c1-5676e01c2371" { + body { + Control { + kind Choice; + }; + }; + description ""; + parent @oa_response; + postcondition ""; + precondition ""; +} + +oa_occurrence oa_merge "Recovery path completed" id "6b945a6d-6aa0-5dd3-96e6-2e8d757d167d" { + body { + Control { + kind Merge; + }; + }; + description ""; + parent @oa_response; + postcondition ""; + precondition ""; +} + +oa_occurrence oa_reset_step "Try the authorized remote reset" id "d2026fc2-74a8-5e22-9942-ff3eb68a3677" { + body { + Action { + action @oa_reset; + lifeline none; + }; + }; + description ""; + parent @oa_response; + postcondition ""; + precondition ""; +} + +oa_occurrence oa_use_field "Use the field repair procedure" id "fc6763bf-a534-54bf-afcd-57ab285ff07d" { + body { + SequenceReference { + sequence @oa_field_procedure; + }; + }; + description ""; + parent @oa_response; + postcondition ""; + precondition ""; +} + +sequence_link oa_assess_then_decide "Continue" id "109e2d6b-7e86-5934-93a5-fab56eced84e" { + description ""; + guard ""; + source @oa_assess_step; + target @oa_decision; +} + +sequence_link oa_field_path "else" id "c1adbbd0-a762-5ee3-8b9a-5c18af377771" { + description ""; + guard "else"; + source @oa_decision; + target @oa_use_field; +} + +sequence_link oa_remote_path "remote reset is authorized" id "76218d89-68fd-531d-b35b-90c5b769a5ef" { + description ""; + guard "remote reset is authorized"; + source @oa_decision; + target @oa_reset_step; +} + +sequence_link oa_confirm_path "Continue" id "229ee94f-d147-50f6-9769-b5bd0c03a084" { + description ""; + guard ""; + source @oa_merge; + target @oa_confirm_step; +} + +sequence_link oa_remote_merge "Continue" id "bac43d3b-910b-5bdc-be9b-f78cf973e1ed" { + description ""; + guard ""; + source @oa_reset_step; + target @oa_merge; +} + +chain_involvement oa_response_delivery "Chain involvement: Restore a safe supply" id "c7c248f8-28b8-55be-9023-0991d44021e3" { + description ""; + source @oa_response; + target @oa_restore; +} + +sequence_link oa_field_merge "Continue" id "c8593670-8906-530f-b6a2-3ada77a9c219" { + description ""; + guard ""; + source @oa_use_field; + target @oa_merge; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/behavior/scenario_oa_conversation.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/behavior/scenario_oa_conversation.arcadia new file mode 100644 index 00000000..89470e88 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/behavior/scenario_oa_conversation.arcadia @@ -0,0 +1,64 @@ +oa_scenario oa_conversation "Repair request and measured reply" id "20472233-5ce6-5ffe-b4ad-0bdbccf3e423" { + context @oa_restore; + description ""; + parent none; + postcondition "The controller has received the measured pressure after repair"; + precondition "A pressure alarm has been assessed"; + steps [@oa_call, @oa_reply]; + viewpoint ParticipantInteraction; +} + +oa_occurrence oa_call "Request valve repair" id "b97437c6-cd7a-5a05-b537-b30a17dd936a" { + body { + Exchange { + exchange @oa_contact; + message_kind Call; + receiver @oa_responder; + reply_to none; + sender @oa_caller; + values [{ + expression "420.0"; + field @oa_pressure_parameter; + path []; + }]; + }; + }; + description ""; + parent @oa_conversation; + postcondition ""; + precondition ""; +} + +oa_lifeline oa_caller "Controller" id "41859a65-ded2-547b-ab03-14e2fa740cf9" { + description ""; + parent @oa_conversation; + represented @oa_control; +} + +oa_occurrence oa_reply "Return pressure after repair" id "cc2d497a-fd15-5455-9ee5-e70eb95811d8" { + body { + Exchange { + exchange @oa_contact; + message_kind Reply; + receiver @oa_caller; + reply_to @oa_call; + sender @oa_responder; + values [{ + expression "320.0"; + field @oa_pressure_parameter; + path []; + }]; + }; + }; + description ""; + parent @oa_conversation; + postcondition ""; + precondition ""; +} + +oa_lifeline oa_responder "Technician" id "fc81c5f0-0442-5b88-992b-e5b10f351c59" { + description ""; + parent @oa_conversation; + represented @oa_technician; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/behavior/scenario_oa_full_scenario.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/behavior/scenario_oa_full_scenario.arcadia new file mode 100644 index 00000000..33c9aad1 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/behavior/scenario_oa_full_scenario.arcadia @@ -0,0 +1,41 @@ +oa_scenario oa_full_scenario "Restore supply through field repair" id "d6f881a4-95da-54e9-ad97-1b8965532629" { + context @oa_restore; + description ""; + parent none; + postcondition "The controller has received the measured pressure after repair"; + precondition "A pressure alarm has been assessed"; + steps [@oa_use_conversation]; + viewpoint ParticipantInteraction; +} + +oa_lifeline oa_outer_controller "Controller" id "2011b3ac-614b-5a47-8891-7ff81965f425" { + description ""; + parent @oa_full_scenario; + represented @oa_control; +} + +oa_lifeline oa_outer_technician "Technician" id "fffff882-78fd-5415-928d-c1ef7fac6576" { + description ""; + parent @oa_full_scenario; + represented @oa_technician; +} + +oa_occurrence oa_use_conversation "Use the reviewed repair conversation" id "9ff94014-afa1-50ab-a4d3-8e9dd0565cc5" { + body { + ScenarioUse { + bindings [{ + local @oa_outer_controller; + referenced @oa_caller; + }, { + local @oa_outer_technician; + referenced @oa_responder; + }]; + scenario @oa_conversation; + }; + }; + description ""; + parent @oa_full_scenario; + postcondition ""; + precondition ""; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/behavior/state_machine_oa_monitor.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/behavior/state_machine_oa_monitor.arcadia new file mode 100644 index 00000000..aeaa90cf --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/behavior/state_machine_oa_monitor.arcadia @@ -0,0 +1,80 @@ +oa_state_machine oa_monitor "Pressure supervision" id "1970608f-85d1-5234-ac86-5e2b0df27dc3" { + description ""; + parent @oa_control; +} + +oa_region oa_monitor_region "Supervision cycle" id "8412e9c6-96fe-5ed6-a903-1d37ec3c3bf7" { + description ""; + parent @oa_monitor; +} + +oa_initial oa_monitor_initial "Start" id "a7ffb869-9dde-5e76-b276-c719c5c143a9" { + description ""; + do_activity ""; + entry ""; + exit ""; + kind Initial; + parent @oa_monitor_region; +} + +oa_state oa_monitoring "Monitoring" id "6cbde0d8-9f5f-510a-a8c1-e29cb99ad4ae" { + description ""; + do_activity ""; + entry ""; + exit ""; + kind State; + parent @oa_monitor_region; +} + +oa_state oa_waiting "Awaiting repair" id "58c15833-6e75-523a-b57f-a88f19f6d672" { + description ""; + do_activity ""; + entry ""; + exit ""; + kind State; + parent @oa_monitor_region; +} + +state_transition oa_start_monitoring "State transition: Monitoring" id "2b00270c-79a5-52a5-af96-33346bea531b" { + description ""; + effect ""; + effects []; + guard ""; + source @oa_monitor_initial; + target @oa_monitoring; + transition_kind External; + trigger ""; + triggers []; +} + +state_transition oa_alarm_transition "State transition: Awaiting repair" id "fbde9d5e-c7e9-55db-a2be-497345c491b3" { + description ""; + effect ""; + effects []; + guard ""; + source @oa_monitoring; + target @oa_waiting; + transition_kind External; + trigger ""; + triggers [@oa_high_pressure]; +} + +state_action oa_assess_on_entry "Assess when repair is needed" id "7fa37e63-db65-5aa7-88f2-31ff4347a787" { + description ""; + phase Entry; + source @oa_waiting; + target @oa_assess; +} + +state_transition oa_normal_transition "State transition: Monitoring" id "21fe5e8e-cbc2-5dad-b3e8-1df46e167d97" { + description ""; + effect ""; + effects []; + guard "repair confirmed and pressure is safe"; + source @oa_waiting; + target @oa_monitoring; + transition_kind External; + trigger ""; + triggers []; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/capabilities.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/capabilities.arcadia new file mode 100644 index 00000000..77c2ab08 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/capabilities.arcadia @@ -0,0 +1,27 @@ +oa_mission oa_mission "Maintain safe water supply" id "c9c61f50-06e0-5d17-973d-dcc57cd5cc90" { + description ""; + parent none; +} + +oa_capability oa_restore "Restore a safe supply" id "3dfee23a-148b-5cec-ad2d-b774e84ea5bb" { + description ""; + parent none; +} + +oa_capability oa_triage "Assess an alarm" id "6a30b763-cc51-546d-907f-5c63657cfd03" { + description ""; + parent none; +} + +mission_capability oa_mission_delivery "Mission capability: Restore a safe supply" id "1f8b1898-65f6-5360-99cf-b78a71bd50ec" { + description ""; + source @oa_mission; + target @oa_restore; +} + +capability_include oa_include_triage "Capability include: Assess an alarm" id "e21d9a54-ae8e-5618-a4f8-67ee22b92638" { + description ""; + source @oa_restore; + target @oa_triage; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/model.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/model.arcadia new file mode 100644 index 00000000..b3f4a60a --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/model.arcadia @@ -0,0 +1,24 @@ +oa_exchange_category oa_contact_category "Field contact" id "19bd3a3a-4d0c-56d5-bf50-a6b43fd81771" { + description ""; + exchanges [@oa_contact]; + family "Participant"; + parent none; +} + +oa_event oa_high_pressure "Pressure alarm detected" id "65d6b8d6-271a-5c84-8b42-abbe310c955e" { + body { + Change { + expression "measured_pressure > operating_limit"; + }; + }; + description ""; + parent none; +} + +oa_exchange_category oa_repair_traffic "Repair work exchanges" id "9349b353-53f2-56f8-b571-a05b09335cdf" { + description ""; + exchanges [@oa_repair_request, @oa_repair_report]; + family "Work"; + parent none; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/participants.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/participants.arcadia new file mode 100644 index 00000000..ed901190 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/participants.arcadia @@ -0,0 +1,60 @@ +oa_entity oa_control "Control room" id "32aa9940-df6e-5a12-b9bd-6337e2d2ed22" { + description ""; + parent none; +} + +oa_actor oa_technician "Field technician" id "e07c3952-4a1a-5cc7-b7d5-03a01101ce49" { + description ""; + parent none; +} + +allocation oa_assess_allocation "Allocation: Assess pressure alarm" id "594c61cd-94e0-5c07-890d-edfd520d7df9" { + description ""; + source @oa_control; + target @oa_assess; +} + +allocation oa_confirm_allocation "Allocation: Confirm safe pressure" id "bfd4326e-ea65-5269-b5e6-e063a355d1e9" { + description ""; + source @oa_control; + target @oa_confirm; +} + +communication_mean oa_contact "Technician service conversation" id "27b47887-baf0-518b-bf87-f5acbf7d0b93" { + description ""; + items [@oa_repair_operation]; + oriented false; + source @oa_control; + target @oa_technician; +} + +exchange_allocation oa_report_carriage "Exchange allocation: Report repair result" id "4549d3fa-5ab9-52a9-b4f9-3a78fc9d625a" { + description ""; + source @oa_contact; + target @oa_repair_report; +} + +exchange_allocation oa_request_carriage "Exchange allocation: Request field repair" id "094b888c-450c-5c4f-971a-7d75db059574" { + description ""; + source @oa_contact; + target @oa_repair_request; +} + +mission_involvement oa_mission_participant "Mission involvement: Maintain safe water supply" id "0c4c9e58-ff32-5c00-b82a-d408a4be0183" { + description ""; + source @oa_control; + target @oa_mission; +} + +allocation oa_reset_allocation "Allocation: Reset valve remotely" id "1853df1f-30f4-5b1a-baac-2dcaf73c7b3a" { + description ""; + source @oa_control; + target @oa_reset; +} + +allocation oa_repair_allocation "Allocation: Repair valve in the field" id "ae53f363-0dec-5a7c-9afd-8fcd1b778ab2" { + description ""; + source @oa_technician; + target @oa_repair; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/types.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/types.arcadia new file mode 100644 index 00000000..c285895b --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/oa/types.arcadia @@ -0,0 +1,35 @@ +oa_data_type oa_pressure "Measured pressure" id "e7824764-5db9-5384-8198-2fbaea2b10b2" { + default none; + definition { + Real { + maximum 600.0; + minimum 0.0; + }; + }; + description ""; + parent none; + unit "kPa"; +} + +oa_exchange_item oa_repair_operation "Valve repair" id "d736c7d6-d369-550a-8ba4-dae223e40bb3" { + description ""; + kind Information; + mechanism Operation; + parent none; + supertype none; +} + +oa_data_field oa_pressure_parameter "Pressure before / after repair" id "8bc6d0a4-3e87-559b-8bd7-1b679a2db5b7" { + default none; + description ""; + direction InOut; + maximum 1; + minimum 1; + parent @oa_repair_operation; + storage Value; + type_ref { + Named @oa_pressure; + }; + unit ""; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/project.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/project.arcadia new file mode 100644 index 00000000..702dd7a3 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/project.arcadia @@ -0,0 +1,33 @@ +arcadia 7; +project pressure_restoration "Restore safe water pressure — release 1 walkthrough" id "2786d72f-5763-5f33-a57f-2773a4ca1a6c" { + description "A controller either resets a valve remotely or requests field repair. Compare the operational need with the explicitly chosen coordination-service boundary. Start with README.md beside project.arcadia. Units and guards are descriptive; this model does not simulate a real water network."; + include "oa/activities/activity_oa_restore_work.arcadia"; + include "oa/behavior/process_oa_assessment_procedure.arcadia"; + include "oa/behavior/process_oa_field_procedure.arcadia"; + include "oa/behavior/process_oa_response.arcadia"; + include "oa/behavior/scenario_oa_conversation.arcadia"; + include "oa/behavior/scenario_oa_full_scenario.arcadia"; + include "oa/behavior/state_machine_oa_monitor.arcadia"; + include "oa/capabilities.arcadia"; + include "oa/model.arcadia"; + include "oa/participants.arcadia"; + include "oa/types.arcadia"; + include "sa/behavior/process_sa_assessment_procedure.arcadia"; + include "sa/behavior/process_sa_field_procedure.arcadia"; + include "sa/behavior/process_sa_response.arcadia"; + include "sa/behavior/scenario_sa_conversation.arcadia"; + include "sa/behavior/scenario_sa_full_scenario.arcadia"; + include "sa/behavior/state_machine_sa_monitor.arcadia"; + include "sa/capabilities.arcadia"; + include "sa/functions/function_sa_audit_thresholds.arcadia"; + include "sa/functions/function_sa_restore_work.arcadia"; + include "sa/model.arcadia"; + include "sa/participants.arcadia"; + include "sa/types.arcadia"; + include "traceability.arcadia"; + include "views/diagram_oa_allocation_view.arcadia"; + include "views/diagram_sa_allocation_view.arcadia"; + include "views/diagram_sa_capability_view.arcadia"; + include "views/diagram_sa_service_view.arcadia"; + include "views/diagram_sa_state_view.arcadia"; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/behavior/process_sa_assessment_procedure.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/behavior/process_sa_assessment_procedure.arcadia new file mode 100644 index 00000000..ff30c34f --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/behavior/process_sa_assessment_procedure.arcadia @@ -0,0 +1,25 @@ +sa_functional_chain sa_assessment_procedure "Assess an alarm procedure" id "acd5a018-f559-5298-a40d-1cf6e1353e74" { + description ""; + parent none; + steps [@sa_assessment_action]; +} + +sa_occurrence sa_assessment_action "Assess pressure alarm" id "bae5b192-5b8e-51c6-82ae-2331af0d33bf" { + body { + Action { + action @sa_assess; + lifeline none; + }; + }; + description ""; + parent @sa_assessment_procedure; + postcondition ""; + precondition ""; +} + +chain_involvement sa_assessment_delivery "Chain involvement: Assess an alarm" id "a6d5a6be-fa6e-5fa0-a309-08e87ba40c57" { + description ""; + source @sa_assessment_procedure; + target @sa_triage; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/behavior/process_sa_field_procedure.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/behavior/process_sa_field_procedure.arcadia new file mode 100644 index 00000000..b6de2a32 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/behavior/process_sa_field_procedure.arcadia @@ -0,0 +1,67 @@ +sa_functional_chain sa_field_procedure "Field repair procedure" id "93eb6479-54e9-59cb-ac7b-16912347bfc0" { + description ""; + parent none; + steps [@sa_request_step, @sa_repair_step, @sa_report_step]; +} + +sa_occurrence sa_repair_step "Repair the valve" id "0f195fea-3493-5ebd-966d-da9eddeb05d7" { + body { + Action { + action @sa_repair; + lifeline none; + }; + }; + description ""; + parent @sa_field_procedure; + postcondition ""; + precondition ""; +} + +sa_occurrence sa_report_step "Report the measured result" id "ea32e4ec-8bdc-57ea-8a90-7b09ba4f0eac" { + body { + Exchange { + exchange @sa_repair_report; + message_kind Asynchronous; + receiver none; + reply_to none; + sender none; + values []; + }; + }; + description ""; + parent @sa_field_procedure; + postcondition ""; + precondition ""; +} + +sa_occurrence sa_request_step "Request the field repair" id "40d94322-baa2-5c81-b261-ff47cdc33782" { + body { + Exchange { + exchange @sa_repair_request; + message_kind Asynchronous; + receiver none; + reply_to none; + sender none; + values []; + }; + }; + description ""; + parent @sa_field_procedure; + postcondition ""; + precondition ""; +} + +sequence_link sa_repair_then_report "Sequence link: Report the measured result" id "7fb30b1d-195c-5f0e-a19c-a536f519a899" { + description ""; + guard ""; + source @sa_repair_step; + target @sa_report_step; +} + +sequence_link sa_request_then_repair "Sequence link: Repair the valve" id "6a6d968f-26d6-5dbb-b721-5a27d362779a" { + description ""; + guard ""; + source @sa_request_step; + target @sa_repair_step; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/behavior/process_sa_response.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/behavior/process_sa_response.arcadia new file mode 100644 index 00000000..241fb132 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/behavior/process_sa_response.arcadia @@ -0,0 +1,128 @@ +sa_functional_chain sa_response "Handle a pressure alarm" id "5139ce73-56fd-5875-ba3a-e569fc890231" { + description ""; + parent none; + steps [@sa_assess_step, @sa_decision, @sa_reset_step, @sa_use_field, @sa_merge, @sa_confirm_step]; +} + +sa_occurrence sa_assess_step "Assess the alarm" id "9024243c-ccc1-5edb-8477-2aa16e5e9a50" { + body { + SequenceReference { + sequence @sa_assessment_procedure; + }; + }; + description ""; + parent @sa_response; + postcondition ""; + precondition ""; +} + +sa_occurrence sa_confirm_step "Confirm safe pressure" id "47bec4f9-d6d0-5ed1-adca-fa0d960dc416" { + body { + Action { + action @sa_confirm; + lifeline none; + }; + }; + description ""; + parent @sa_response; + postcondition ""; + precondition ""; +} + +sa_occurrence sa_decision "Can a remote reset safely recover pressure?" id "30c8fad9-a49b-5692-9542-3148e76afd7b" { + body { + Control { + kind Choice; + }; + }; + description ""; + parent @sa_response; + postcondition ""; + precondition ""; +} + +sa_occurrence sa_merge "Recovery path completed" id "4ed0dd9d-c9e0-5652-aedf-5f0ab4328a07" { + body { + Control { + kind Merge; + }; + }; + description ""; + parent @sa_response; + postcondition ""; + precondition ""; +} + +sa_occurrence sa_reset_step "Try the authorized remote reset" id "bfa2ef0b-ce68-55c2-a9e5-31ea8a74fce6" { + body { + Action { + action @sa_reset; + lifeline none; + }; + }; + description ""; + parent @sa_response; + postcondition ""; + precondition ""; +} + +sa_occurrence sa_use_field "Use the field repair procedure" id "d5e61c5d-510b-5091-a878-da46f3a9e152" { + body { + SequenceReference { + sequence @sa_field_procedure; + }; + }; + description ""; + parent @sa_response; + postcondition ""; + precondition ""; +} + +sequence_link sa_assess_then_decide "Continue" id "9d4a131f-36ad-5125-b21f-c3dd033b8c82" { + description ""; + guard ""; + source @sa_assess_step; + target @sa_decision; +} + +sequence_link sa_field_path "else" id "1bbd5957-1173-51d8-97e3-ba4f084227ae" { + description ""; + guard "else"; + source @sa_decision; + target @sa_use_field; +} + +sequence_link sa_remote_path "remote reset is authorized" id "d8b6710a-e713-5979-934f-e5ca7d155bb4" { + description ""; + guard "remote reset is authorized"; + source @sa_decision; + target @sa_reset_step; +} + +sequence_link sa_confirm_path "Continue" id "1e738f27-a3a1-526d-b330-6384088b9689" { + description ""; + guard ""; + source @sa_merge; + target @sa_confirm_step; +} + +sequence_link sa_remote_merge "Continue" id "e5279265-8eac-52e8-98dc-571b20475e1f" { + description ""; + guard ""; + source @sa_reset_step; + target @sa_merge; +} + +chain_involvement sa_response_delivery "Chain involvement: Restore a safe supply" id "66efc484-53c7-51a3-89e9-422429344b38" { + description ""; + source @sa_response; + target @sa_restore; +} + +sequence_link sa_field_merge "Continue" id "0f6ac3fb-4ad6-581e-ad14-336472072d5e" { + description ""; + guard ""; + source @sa_use_field; + target @sa_merge; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/behavior/scenario_sa_conversation.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/behavior/scenario_sa_conversation.arcadia new file mode 100644 index 00000000..4e324730 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/behavior/scenario_sa_conversation.arcadia @@ -0,0 +1,73 @@ +sa_scenario sa_conversation "Repair request and measured reply" id "730b27ca-b039-5a3b-8dc6-03418f9061b3" { + context @sa_restore; + description ""; + parent none; + postcondition "The controller has received the measured pressure after repair"; + precondition "A pressure alarm has been assessed"; + steps [@sa_call, @sa_reply]; + viewpoint BoundaryInterface; +} + +sa_occurrence sa_call "Request valve repair" id "8bab4783-a098-5984-9e36-493957caf26c" { + body { + Exchange { + exchange @sa_contact; + message_kind Call; + receiver @sa_responder; + reply_to none; + sender @sa_caller; + values [{ + expression "420.0"; + field @sa_pressure_parameter; + path []; + }]; + }; + }; + description ""; + parent @sa_conversation; + postcondition ""; + precondition ""; +} + +sa_lifeline sa_caller "Controller" id "98c61788-2fee-51f4-8cf9-de48e8c70e9e" { + description ""; + parent @sa_conversation; + represented @sa_control; +} + +sa_occurrence sa_reply "Return pressure after repair" id "4e1c0a56-ce80-5f13-a93a-6956de54880c" { + body { + Exchange { + exchange @sa_contact; + message_kind Reply; + receiver @sa_caller; + reply_to @sa_call; + sender @sa_responder; + values [{ + expression "320.0"; + field @sa_pressure_parameter; + path []; + }]; + }; + }; + description ""; + parent @sa_conversation; + postcondition ""; + precondition ""; +} + +sa_lifeline sa_responder "Technician" id "6249b54a-e396-5338-82b9-89266c55670d" { + description ""; + parent @sa_conversation; + represented @sa_technician; +} + +artifact repair_test_evidence "Repair conversation acceptance notes" id "f5922bf7-05d8-590f-86e9-1d09f37f4fa6" { + description "A local teaching artifact, not proof of a real valve's safety."; + fragment "acceptance"; + owner @sa_conversation; + relation Verifies; + revision "lesson-1"; + uri "evidence/repair-check.md"; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/behavior/scenario_sa_full_scenario.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/behavior/scenario_sa_full_scenario.arcadia new file mode 100644 index 00000000..b88e5d12 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/behavior/scenario_sa_full_scenario.arcadia @@ -0,0 +1,41 @@ +sa_scenario sa_full_scenario "Restore supply through field repair" id "f746a1cd-ff9f-55c0-b325-01c03d2f4fae" { + context @sa_restore; + description ""; + parent none; + postcondition "The controller has received the measured pressure after repair"; + precondition "A pressure alarm has been assessed"; + steps [@sa_use_conversation]; + viewpoint BoundaryInterface; +} + +sa_lifeline sa_outer_controller "Controller" id "1edfcf9e-9bfa-51f1-80d5-62b8fd8bb023" { + description ""; + parent @sa_full_scenario; + represented @sa_control; +} + +sa_lifeline sa_outer_technician "Technician" id "155e4fe4-9e3b-5f4e-b886-28abcc3f086b" { + description ""; + parent @sa_full_scenario; + represented @sa_technician; +} + +sa_occurrence sa_use_conversation "Use the reviewed repair conversation" id "1c9da843-e2d3-5591-8e3f-db083a42867e" { + body { + ScenarioUse { + bindings [{ + local @sa_outer_controller; + referenced @sa_caller; + }, { + local @sa_outer_technician; + referenced @sa_responder; + }]; + scenario @sa_conversation; + }; + }; + description ""; + parent @sa_full_scenario; + postcondition ""; + precondition ""; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/behavior/state_machine_sa_monitor.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/behavior/state_machine_sa_monitor.arcadia new file mode 100644 index 00000000..46949f1b --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/behavior/state_machine_sa_monitor.arcadia @@ -0,0 +1,80 @@ +sa_state_machine sa_monitor "Pressure supervision" id "132b3f28-3f88-5327-9868-8c8b645ed412" { + description ""; + parent @sa_control; +} + +sa_region sa_monitor_region "Supervision cycle" id "3ab11e24-4140-58fc-b3fa-da5f51c7fe2c" { + description ""; + parent @sa_monitor; +} + +sa_initial sa_monitor_initial "Start" id "57eb5348-14d8-560e-996a-8dbf993243e2" { + description ""; + do_activity ""; + entry ""; + exit ""; + kind Initial; + parent @sa_monitor_region; +} + +sa_state sa_monitoring "Monitoring" id "8af21f9b-c21e-5aae-af0d-0958840f6655" { + description ""; + do_activity ""; + entry ""; + exit ""; + kind State; + parent @sa_monitor_region; +} + +sa_state sa_waiting "Awaiting repair" id "a6bb10b1-f1e5-5b31-8afd-5bad5a7b6c37" { + description ""; + do_activity ""; + entry ""; + exit ""; + kind State; + parent @sa_monitor_region; +} + +state_transition sa_start_monitoring "State transition: Monitoring" id "47730532-0372-5cc5-9d6d-0b8953aebdd8" { + description ""; + effect ""; + effects []; + guard ""; + source @sa_monitor_initial; + target @sa_monitoring; + transition_kind External; + trigger ""; + triggers []; +} + +state_transition sa_alarm_transition "State transition: Awaiting repair" id "13c3bfa4-9254-5ab2-b96f-f65f402adf81" { + description ""; + effect ""; + effects []; + guard ""; + source @sa_monitoring; + target @sa_waiting; + transition_kind External; + trigger ""; + triggers [@sa_high_pressure]; +} + +state_action sa_assess_on_entry "Assess when repair is needed" id "a887f96a-37cb-5891-8070-011fa276e5b5" { + description ""; + phase Entry; + source @sa_waiting; + target @sa_assess; +} + +state_transition sa_normal_transition "State transition: Monitoring" id "6e2c1b47-764c-577a-b325-ff66dd2a2768" { + description ""; + effect ""; + effects []; + guard "repair confirmed and pressure is safe"; + source @sa_waiting; + target @sa_monitoring; + transition_kind External; + trigger ""; + triggers []; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/capabilities.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/capabilities.arcadia new file mode 100644 index 00000000..4b5c4210 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/capabilities.arcadia @@ -0,0 +1,27 @@ +sa_mission sa_mission "Maintain safe water supply" id "5ad034b1-084d-5273-9e70-971671766132" { + description ""; + parent none; +} + +sa_capability sa_restore "Restore a safe supply" id "81259051-370a-512d-a3b5-6420a6f933b6" { + description ""; + parent none; +} + +sa_capability sa_triage "Assess an alarm" id "bad8fa7c-f634-55fd-98d3-e1eb2da05d8f" { + description ""; + parent none; +} + +mission_capability sa_mission_delivery "Mission capability: Restore a safe supply" id "a0902e0f-3d18-576a-9aca-975a136dfdd7" { + description ""; + source @sa_mission; + target @sa_restore; +} + +capability_include sa_include_triage "Capability include: Assess an alarm" id "f3fe7690-734a-5877-8b57-a6599a4033c4" { + description ""; + source @sa_restore; + target @sa_triage; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/functions/function_sa_audit_thresholds.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/functions/function_sa_audit_thresholds.arcadia new file mode 100644 index 00000000..2ec039aa --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/functions/function_sa_audit_thresholds.arcadia @@ -0,0 +1,5 @@ +sa_function sa_audit_thresholds "Audit pressure thresholds" id "4149a872-3440-59de-9879-8981e78d27ab" { + description "Deliberately unfinished: assigned to the service, but no behavior context yet. Model checks should expose this one work_without_behavior_context warning."; + parent none; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/functions/function_sa_restore_work.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/functions/function_sa_restore_work.arcadia new file mode 100644 index 00000000..772ec0f1 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/functions/function_sa_restore_work.arcadia @@ -0,0 +1,93 @@ +sa_function sa_restore_work "Restore safe pressure" id "58867e7d-916e-5ebc-9e4c-8dbed1314be3" { + description ""; + parent none; +} + +sa_function sa_assess "Assess pressure alarm" id "dddae020-a444-5d48-acc8-139d2696a672" { + description ""; + parent @sa_restore_work; +} + +sa_port sa_repair_request_out "Request field repair output" id "24a6850e-b819-57e0-af88-ca4ab76581b7" { + contract { + FunctionOutput { + outgoing_items [@sa_repair_operation]; + }; + }; + description ""; + legacy none; + parent @sa_assess; +} + +sa_function sa_confirm "Confirm safe pressure" id "d75eb3fa-a27d-52d5-8782-8b342b3865f6" { + description ""; + parent @sa_restore_work; +} + +sa_port sa_repair_report_in "Report repair result input" id "391af7c4-b07d-53a7-8ddd-5c81461fc4f8" { + contract { + FunctionInput { + incoming_items [@sa_repair_operation]; + }; + }; + description ""; + legacy none; + parent @sa_confirm; +} + +sa_function sa_repair "Repair valve in the field" id "9497e10f-04c4-5586-8738-2464a6f00bd4" { + description ""; + parent @sa_restore_work; +} + +sa_port sa_repair_report_out "Report repair result output" id "994faed7-dbc8-5b96-9d62-7604ac0fbc3a" { + contract { + FunctionOutput { + outgoing_items [@sa_repair_operation]; + }; + }; + description ""; + legacy none; + parent @sa_repair; +} + +sa_port sa_repair_request_in "Request field repair input" id "d2113fb0-a531-54ef-9484-13951b00ab8f" { + contract { + FunctionInput { + incoming_items [@sa_repair_operation]; + }; + }; + description ""; + legacy none; + parent @sa_repair; +} + +sa_function sa_reset "Reset valve remotely" id "09342ccb-044b-5483-ac58-87dc3cf7831c" { + description ""; + parent @sa_restore_work; +} + +capability_involvement sa_assessment_support "Capability involvement: Assess an alarm" id "93eaad8d-83b7-5980-b9bb-86c9e3f31da4" { + description ""; + source @sa_assess; + target @sa_triage; +} + +functional_exchange sa_repair_request "Request field repair" id "93474111-f23e-56c1-b61b-b7c2396b91bd" { + description ""; + items [@sa_repair_operation]; + source @sa_assess; + source_port @sa_repair_request_out; + target @sa_repair; + target_port @sa_repair_request_in; +} + +functional_exchange sa_repair_report "Report repair result" id "684eadc3-e670-5779-a60f-bbc9a5bfb062" { + description ""; + items [@sa_repair_operation]; + source @sa_repair; + source_port @sa_repair_report_out; + target @sa_confirm; + target_port @sa_repair_report_in; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/model.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/model.arcadia new file mode 100644 index 00000000..0856d908 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/model.arcadia @@ -0,0 +1,24 @@ +sa_exchange_category sa_contact_category "Field contact" id "781cbe75-410f-5cc5-aeb8-a43491f77b99" { + description ""; + exchanges [@sa_contact]; + family "Participant"; + parent none; +} + +sa_event sa_high_pressure "Pressure alarm detected" id "01490fa8-2f01-5ac8-9722-d55d45414379" { + body { + Change { + expression "measured_pressure > operating_limit"; + }; + }; + description ""; + parent none; +} + +sa_exchange_category sa_repair_traffic "Repair work exchanges" id "a9a47e48-100c-57a8-95f0-7fe24da94f94" { + description ""; + exchanges [@sa_repair_request, @sa_repair_report]; + family "Work"; + parent none; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/participants.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/participants.arcadia new file mode 100644 index 00000000..4b9c5558 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/participants.arcadia @@ -0,0 +1,126 @@ +sa_system sa_control "Pressure coordination service" id "435bf87c-73fd-5e4d-978a-4c471bc9eaf0" { + description ""; + parent none; +} + +sa_port sa_control_port "Repair service client" id "98d411e7-7c65-5c3f-b543-8bf0f2522ea2" { + contract { + Component { + kind Standard; + orientation Unset; + }; + }; + description "Explicitly chosen Standard component port for the repair service."; + legacy none; + parent @sa_control; +} + +sa_actor sa_technician "Field technician" id "c05b9422-b9da-5de5-b21d-07ad23bd2b8a" { + description ""; + parent none; +} + +sa_port sa_technician_port "Repair service provider" id "e6d69cbd-99d7-596b-bbe3-dada6118a600" { + contract { + Component { + kind Standard; + orientation Unset; + }; + }; + description "Explicitly chosen Standard component port for the repair service."; + legacy none; + parent @sa_technician; +} + +allocation sa_assess_allocation "Allocation: Assess pressure alarm" id "9b9356d7-2db2-5a94-a47e-ea892cf02afe" { + description ""; + source @sa_control; + target @sa_assess; +} + +allocation sa_audit_allocation "Allocation: Audit pressure thresholds" id "1b245065-7242-5d81-8472-aaeb932054c9" { + description ""; + source @sa_control; + target @sa_audit_thresholds; +} + +allocation sa_confirm_allocation "Allocation: Confirm safe pressure" id "b76bf8de-2fa4-563f-a540-dd30f30e6c49" { + description ""; + source @sa_control; + target @sa_confirm; +} + +interface_requirement sa_client_requires "Interface requirement: Valve repair service" id "4f85337b-f6eb-533c-a45a-9a5d1d9567ca" { + description ""; + source @sa_control_port; + target @sa_repair_interface; +} + +boundary_exchange sa_contact "Technician service conversation" id "63009b5f-539e-5914-b630-ec6b7fefb4d5" { + description ""; + items [@sa_repair_operation]; + oriented false; + source @sa_control_port; + target @sa_technician_port; +} + +exchange_allocation sa_report_carriage "Exchange allocation: Report repair result" id "ff9897b3-a23a-5994-a5b3-99a5b4d34ceb" { + description ""; + source @sa_contact; + target @sa_repair_report; +} + +exchange_allocation sa_request_carriage "Exchange allocation: Request field repair" id "4c4c4851-5a3d-5bb9-94df-b19f9cf39819" { + description ""; + source @sa_contact; + target @sa_repair_request; +} + +port_allocation sa_port_report_in "Port allocation: Report repair result input" id "568c5c01-de21-52a2-83bd-afdddc158085" { + description ""; + source @sa_control_port; + target @sa_repair_report_in; +} + +port_allocation sa_port_request_out "Port allocation: Request field repair output" id "55ec4dbf-bd17-5b0c-b3a3-95b2194aa8b9" { + description ""; + source @sa_control_port; + target @sa_repair_request_out; +} + +mission_involvement sa_mission_participant "Mission involvement: Maintain safe water supply" id "1c1e5634-ba8c-591f-b143-90a27cdc6cd2" { + description ""; + source @sa_control; + target @sa_mission; +} + +allocation sa_reset_allocation "Allocation: Reset valve remotely" id "3cc9ab52-2b00-57fd-8709-aabc75e5d3e3" { + description ""; + source @sa_control; + target @sa_reset; +} + +allocation sa_repair_allocation "Allocation: Repair valve in the field" id "725f2e1b-aa2c-5615-9b1f-28da178168fa" { + description ""; + source @sa_technician; + target @sa_repair; +} + +port_allocation sa_port_report_out "Port allocation: Report repair result output" id "e53b7a40-e8a3-5b3f-826d-c2b5c164a84a" { + description ""; + source @sa_technician_port; + target @sa_repair_report_out; +} + +port_allocation sa_port_request_in "Port allocation: Request field repair input" id "09eaa992-4cdf-5ea3-b748-f10fd74b8cba" { + description ""; + source @sa_technician_port; + target @sa_repair_request_in; +} + +interface_provision sa_provider_provides "Interface provision: Valve repair service" id "55f89fbf-aa3c-5ae1-95ef-ac676f9c1ada" { + description ""; + source @sa_technician_port; + target @sa_repair_interface; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/types.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/types.arcadia new file mode 100644 index 00000000..faa0117f --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/sa/types.arcadia @@ -0,0 +1,50 @@ +sa_data_type sa_pressure "Measured pressure" id "87d0a95b-af1b-5352-b753-e4c6533671a5" { + default none; + definition { + Real { + maximum 600.0; + minimum 0.0; + }; + }; + description ""; + parent none; + unit "kPa"; +} + +sa_interface sa_repair_interface "Valve repair service" id "a4b8942e-a975-5f88-ad14-8f38c345baac" { + description ""; + parent none; + supertype none; +} + +sa_exchange_item sa_repair_operation "Valve repair" id "a962fc5e-3ab0-5296-8b0d-fd84633f9218" { + description ""; + kind Information; + mechanism Operation; + parent none; + supertype none; +} + +sa_data_field sa_pressure_parameter "Pressure before / after repair" id "bb12ba5d-aab5-5a1b-99de-c767f5365b57" { + default none; + description ""; + direction InOut; + maximum 1; + minimum 1; + parent @sa_repair_operation; + storage Value; + type_ref { + Named @sa_pressure; + }; + unit ""; +} + +interface_item_allocation sa_repair_interface_item "Repair operation contract" id "f074e041-23cf-54ad-af9c-f171e30621e7" { + acquisition Accept; + description ""; + order 0; + source @sa_repair_interface; + target @sa_repair_operation; + transmission Synchronous; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/traceability.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/traceability.arcadia new file mode 100644 index 00000000..b185b027 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/traceability.arcadia @@ -0,0 +1,1156 @@ +trace trace_oa_alarm_transition "State transition: Awaiting repair ↔ State transition: Awaiting repair" id "0c7c8a06-163e-5b3e-8a98-e66e2ce8963b" { + baseline { + oa { + description ""; + name "State transition: Awaiting repair"; + }; + sa { + description ""; + name "State transition: Awaiting repair"; + }; + }; + description ""; + kind Manual; + oa @oa_alarm_transition; + sa @sa_alarm_transition; +} + +trace trace_oa_assess "Assess pressure alarm ↔ Assess pressure alarm" id "5309f955-53fd-5ff4-9c0a-91737e947341" { + baseline { + oa { + description ""; + name "Assess pressure alarm"; + }; + sa { + description ""; + name "Assess pressure alarm"; + }; + }; + description ""; + kind Refinement; + oa @oa_assess; + sa @sa_assess; +} + +trace trace_oa_assess_allocation "Allocation: Assess pressure alarm ↔ Allocation: Assess pressure alarm" id "acdbee9c-5017-5154-804e-50801f0376ec" { + baseline { + oa { + description ""; + name "Allocation: Assess pressure alarm"; + }; + sa { + description ""; + name "Allocation: Assess pressure alarm"; + }; + }; + description ""; + kind Manual; + oa @oa_assess_allocation; + sa @sa_assess_allocation; +} + +trace trace_oa_assess_on_entry "Assess when repair is needed ↔ Assess when repair is needed" id "fb02420d-b066-5773-87c1-198a056e0731" { + baseline { + oa { + description ""; + name "Assess when repair is needed"; + }; + sa { + description ""; + name "Assess when repair is needed"; + }; + }; + description ""; + kind Manual; + oa @oa_assess_on_entry; + sa @sa_assess_on_entry; +} + +trace trace_oa_assess_step "Assess the alarm ↔ Assess the alarm" id "e848da41-445e-5e3c-8b4e-ef53fdddf1e1" { + baseline { + oa { + description ""; + name "Assess the alarm"; + }; + sa { + description ""; + name "Assess the alarm"; + }; + }; + description ""; + kind Sequence; + oa @oa_assess_step; + sa @sa_assess_step; +} + +trace trace_oa_assess_then_decide "Continue ↔ Continue" id "a5c1eb01-a95f-5f7a-9742-7f201493d7aa" { + baseline { + oa { + description ""; + name "Continue"; + }; + sa { + description ""; + name "Continue"; + }; + }; + description ""; + kind Manual; + oa @oa_assess_then_decide; + sa @sa_assess_then_decide; +} + +trace trace_oa_assessment_action "Assess pressure alarm ↔ Assess pressure alarm" id "3a33de40-20a3-5252-899c-c12dc35e9783" { + baseline { + oa { + description ""; + name "Assess pressure alarm"; + }; + sa { + description ""; + name "Assess pressure alarm"; + }; + }; + description ""; + kind Sequence; + oa @oa_assessment_action; + sa @sa_assessment_action; +} + +trace trace_oa_assessment_delivery "Chain involvement: Assess an alarm ↔ Chain involvement: Assess an alarm" id "5b96bfed-63e2-5d7f-b882-91e8b81f8efe" { + baseline { + oa { + description ""; + name "Chain involvement: Assess an alarm"; + }; + sa { + description ""; + name "Chain involvement: Assess an alarm"; + }; + }; + description ""; + kind Manual; + oa @oa_assessment_delivery; + sa @sa_assessment_delivery; +} + +trace trace_oa_assessment_procedure "Assess an alarm procedure ↔ Assess an alarm procedure" id "6ca4c78a-a5f2-5470-b401-732f5a8825d0" { + baseline { + oa { + description ""; + name "Assess an alarm procedure"; + }; + sa { + description ""; + name "Assess an alarm procedure"; + }; + }; + description ""; + kind Sequence; + oa @oa_assessment_procedure; + sa @sa_assessment_procedure; +} + +trace trace_oa_assessment_support "Capability involvement: Assess an alarm ↔ Capability involvement: Assess an alarm" id "6e13cf86-7242-5e33-8912-b037cf6e8c87" { + baseline { + oa { + description ""; + name "Capability involvement: Assess an alarm"; + }; + sa { + description ""; + name "Capability involvement: Assess an alarm"; + }; + }; + description ""; + kind Manual; + oa @oa_assessment_support; + sa @sa_assessment_support; +} + +trace trace_oa_call "Request valve repair ↔ Request valve repair" id "f0cc86e5-f8fd-5091-a40d-dbfb6515072f" { + baseline { + oa { + description ""; + name "Request valve repair"; + }; + sa { + description ""; + name "Request valve repair"; + }; + }; + description ""; + kind Scenario; + oa @oa_call; + sa @sa_call; +} + +trace trace_oa_caller "Controller ↔ Controller" id "241dfdac-2450-5704-a4cb-9f1047db1b6d" { + baseline { + oa { + description ""; + name "Controller"; + }; + sa { + description ""; + name "Controller"; + }; + }; + description ""; + kind Scenario; + oa @oa_caller; + sa @sa_caller; +} + +trace trace_oa_confirm "Confirm safe pressure ↔ Confirm safe pressure" id "d7773ff5-cef5-50c1-8f9d-c5659115e1f0" { + baseline { + oa { + description ""; + name "Confirm safe pressure"; + }; + sa { + description ""; + name "Confirm safe pressure"; + }; + }; + description ""; + kind Refinement; + oa @oa_confirm; + sa @sa_confirm; +} + +trace trace_oa_confirm_allocation "Allocation: Confirm safe pressure ↔ Allocation: Confirm safe pressure" id "2fdcbc6f-526e-5a4e-bde5-314cf0cf3ef3" { + baseline { + oa { + description ""; + name "Allocation: Confirm safe pressure"; + }; + sa { + description ""; + name "Allocation: Confirm safe pressure"; + }; + }; + description ""; + kind Manual; + oa @oa_confirm_allocation; + sa @sa_confirm_allocation; +} + +trace trace_oa_confirm_path "Continue ↔ Continue" id "a106d183-c239-5c9f-b1f1-141af19fc778" { + baseline { + oa { + description ""; + name "Continue"; + }; + sa { + description ""; + name "Continue"; + }; + }; + description ""; + kind Manual; + oa @oa_confirm_path; + sa @sa_confirm_path; +} + +trace trace_oa_confirm_step "Confirm safe pressure ↔ Confirm safe pressure" id "154abfce-c311-52d1-85d1-3f4c85203b26" { + baseline { + oa { + description ""; + name "Confirm safe pressure"; + }; + sa { + description ""; + name "Confirm safe pressure"; + }; + }; + description ""; + kind Sequence; + oa @oa_confirm_step; + sa @sa_confirm_step; +} + +trace trace_oa_contact "Technician service conversation ↔ Technician service conversation" id "c9d65349-3400-58eb-8a55-57fa02de4b67" { + baseline { + oa { + description ""; + name "Technician service conversation"; + }; + sa { + description ""; + name "Technician service conversation"; + }; + }; + description ""; + kind Exchange; + oa @oa_contact; + sa @sa_contact; +} + +trace trace_oa_contact_category "Field contact ↔ Field contact" id "e96ff119-bb4d-5fd9-9ab7-2ede0d3fd418" { + baseline { + oa { + description ""; + name "Field contact"; + }; + sa { + description ""; + name "Field contact"; + }; + }; + description ""; + kind Manual; + oa @oa_contact_category; + sa @sa_contact_category; +} + +trace trace_oa_control "Control room ↔ Pressure coordination service" id "aba528ea-e396-582a-bfba-f6e2212d391a" { + baseline { + oa { + description ""; + name "Control room"; + }; + sa { + description ""; + name "Pressure coordination service"; + }; + }; + description ""; + kind Participant; + oa @oa_control; + sa @sa_control; +} + +trace trace_oa_conversation "Repair request and measured reply ↔ Repair request and measured reply" id "3694c752-ba80-5702-a7d7-9cc66b6b01d8" { + baseline { + oa { + description ""; + name "Repair request and measured reply"; + }; + sa { + description ""; + name "Repair request and measured reply"; + }; + }; + description ""; + kind Scenario; + oa @oa_conversation; + sa @sa_conversation; +} + +trace trace_oa_decision "Can a remote reset safely recover pressure? ↔ Can a remote reset safely recover pressure?" id "bbf6f1a1-cb2b-5632-8ec0-bf4b8ef1a941" { + baseline { + oa { + description ""; + name "Can a remote reset safely recover pressure?"; + }; + sa { + description ""; + name "Can a remote reset safely recover pressure?"; + }; + }; + description ""; + kind Sequence; + oa @oa_decision; + sa @sa_decision; +} + +trace trace_oa_field_merge "Continue ↔ Continue" id "d32dd433-9c9e-5b57-9355-2970cc44a5f2" { + baseline { + oa { + description ""; + name "Continue"; + }; + sa { + description ""; + name "Continue"; + }; + }; + description ""; + kind Manual; + oa @oa_field_merge; + sa @sa_field_merge; +} + +trace trace_oa_field_path "else ↔ else" id "2e849e31-35aa-5aef-a989-26948038e52b" { + baseline { + oa { + description ""; + name "else"; + }; + sa { + description ""; + name "else"; + }; + }; + description ""; + kind Manual; + oa @oa_field_path; + sa @sa_field_path; +} + +trace trace_oa_field_procedure "Field repair procedure ↔ Field repair procedure" id "bb72b2c2-6e32-5f65-9d8e-b33c1a65da37" { + baseline { + oa { + description ""; + name "Field repair procedure"; + }; + sa { + description ""; + name "Field repair procedure"; + }; + }; + description ""; + kind Sequence; + oa @oa_field_procedure; + sa @sa_field_procedure; +} + +trace trace_oa_full_scenario "Restore supply through field repair ↔ Restore supply through field repair" id "435bae4c-cf6d-59f3-9eb5-d660ebeec079" { + baseline { + oa { + description ""; + name "Restore supply through field repair"; + }; + sa { + description ""; + name "Restore supply through field repair"; + }; + }; + description ""; + kind Scenario; + oa @oa_full_scenario; + sa @sa_full_scenario; +} + +trace trace_oa_high_pressure "Pressure alarm detected ↔ Pressure alarm detected" id "b97749d4-f9ad-5fb7-9d78-bc60a74e98eb" { + baseline { + oa { + description ""; + name "Pressure alarm detected"; + }; + sa { + description ""; + name "Pressure alarm detected"; + }; + }; + description ""; + kind State; + oa @oa_high_pressure; + sa @sa_high_pressure; +} + +trace trace_oa_include_triage "Capability include: Assess an alarm ↔ Capability include: Assess an alarm" id "77073fcb-53aa-5f06-987a-0317cbb6971d" { + baseline { + oa { + description ""; + name "Capability include: Assess an alarm"; + }; + sa { + description ""; + name "Capability include: Assess an alarm"; + }; + }; + description ""; + kind Manual; + oa @oa_include_triage; + sa @sa_include_triage; +} + +trace trace_oa_merge "Recovery path completed ↔ Recovery path completed" id "0c9de959-d366-5765-98eb-450ea27bd316" { + baseline { + oa { + description ""; + name "Recovery path completed"; + }; + sa { + description ""; + name "Recovery path completed"; + }; + }; + description ""; + kind Sequence; + oa @oa_merge; + sa @sa_merge; +} + +trace trace_oa_mission "Maintain safe water supply ↔ Maintain safe water supply" id "c987bd0f-87f6-5550-945d-2a42450fe1c5" { + baseline { + oa { + description ""; + name "Maintain safe water supply"; + }; + sa { + description ""; + name "Maintain safe water supply"; + }; + }; + description ""; + kind Mission; + oa @oa_mission; + sa @sa_mission; +} + +trace trace_oa_mission_delivery "Mission capability: Restore a safe supply ↔ Mission capability: Restore a safe supply" id "aa164208-394d-5bc7-8462-b0043f682aad" { + baseline { + oa { + description ""; + name "Mission capability: Restore a safe supply"; + }; + sa { + description ""; + name "Mission capability: Restore a safe supply"; + }; + }; + description ""; + kind Manual; + oa @oa_mission_delivery; + sa @sa_mission_delivery; +} + +trace trace_oa_mission_participant "Mission involvement: Maintain safe water supply ↔ Mission involvement: Maintain safe water supply" id "8d693d90-5017-56af-b056-d29d3cb46baa" { + baseline { + oa { + description ""; + name "Mission involvement: Maintain safe water supply"; + }; + sa { + description ""; + name "Mission involvement: Maintain safe water supply"; + }; + }; + description ""; + kind Manual; + oa @oa_mission_participant; + sa @sa_mission_participant; +} + +trace trace_oa_monitor "Pressure supervision ↔ Pressure supervision" id "b53863a2-ed80-5f98-ad3c-50e1b821066d" { + baseline { + oa { + description ""; + name "Pressure supervision"; + }; + sa { + description ""; + name "Pressure supervision"; + }; + }; + description ""; + kind State; + oa @oa_monitor; + sa @sa_monitor; +} + +trace trace_oa_monitor_initial "Start ↔ Start" id "48d243f0-553f-507e-acb0-9474ae156b63" { + baseline { + oa { + description ""; + name "Start"; + }; + sa { + description ""; + name "Start"; + }; + }; + description ""; + kind State; + oa @oa_monitor_initial; + sa @sa_monitor_initial; +} + +trace trace_oa_monitor_region "Supervision cycle ↔ Supervision cycle" id "208753e0-9151-50d8-86ca-29fc28eca80b" { + baseline { + oa { + description ""; + name "Supervision cycle"; + }; + sa { + description ""; + name "Supervision cycle"; + }; + }; + description ""; + kind State; + oa @oa_monitor_region; + sa @sa_monitor_region; +} + +trace trace_oa_monitoring "Monitoring ↔ Monitoring" id "12ec320f-2e14-5a5a-8c6b-bd2b6471dae9" { + baseline { + oa { + description ""; + name "Monitoring"; + }; + sa { + description ""; + name "Monitoring"; + }; + }; + description ""; + kind State; + oa @oa_monitoring; + sa @sa_monitoring; +} + +trace trace_oa_normal_transition "State transition: Monitoring ↔ State transition: Monitoring" id "c47cf0b4-fe15-5175-bd62-5292e43adc39" { + baseline { + oa { + description ""; + name "State transition: Monitoring"; + }; + sa { + description ""; + name "State transition: Monitoring"; + }; + }; + description ""; + kind Manual; + oa @oa_normal_transition; + sa @sa_normal_transition; +} + +trace trace_oa_outer_controller "Controller ↔ Controller" id "fd195498-dbba-523b-94d0-49f3b9531a3e" { + baseline { + oa { + description ""; + name "Controller"; + }; + sa { + description ""; + name "Controller"; + }; + }; + description ""; + kind Scenario; + oa @oa_outer_controller; + sa @sa_outer_controller; +} + +trace trace_oa_outer_technician "Technician ↔ Technician" id "c132a0df-1270-55a8-ac4e-6e5075823dc1" { + baseline { + oa { + description ""; + name "Technician"; + }; + sa { + description ""; + name "Technician"; + }; + }; + description ""; + kind Scenario; + oa @oa_outer_technician; + sa @sa_outer_technician; +} + +trace trace_oa_pressure "Measured pressure ↔ Measured pressure" id "d9d47371-e98d-5d29-9df7-4de2d28a5c73" { + baseline { + oa { + description ""; + name "Measured pressure"; + }; + sa { + description ""; + name "Measured pressure"; + }; + }; + description ""; + kind Item; + oa @oa_pressure; + sa @sa_pressure; +} + +trace trace_oa_pressure_parameter "Pressure before / after repair ↔ Pressure before / after repair" id "0d905fbb-5b3c-56f0-9f11-a27091901eb0" { + baseline { + oa { + description ""; + name "Pressure before / after repair"; + }; + sa { + description ""; + name "Pressure before / after repair"; + }; + }; + description ""; + kind Item; + oa @oa_pressure_parameter; + sa @sa_pressure_parameter; +} + +trace trace_oa_remote_merge "Continue ↔ Continue" id "1b788e74-36b2-5c17-a936-642dbe51ca3c" { + baseline { + oa { + description ""; + name "Continue"; + }; + sa { + description ""; + name "Continue"; + }; + }; + description ""; + kind Manual; + oa @oa_remote_merge; + sa @sa_remote_merge; +} + +trace trace_oa_remote_path "remote reset is authorized ↔ remote reset is authorized" id "eee79ec1-41d7-5374-986e-995a56b9026f" { + baseline { + oa { + description ""; + name "remote reset is authorized"; + }; + sa { + description ""; + name "remote reset is authorized"; + }; + }; + description ""; + kind Manual; + oa @oa_remote_path; + sa @sa_remote_path; +} + +trace trace_oa_repair "Repair valve in the field ↔ Repair valve in the field" id "b13452bb-1a55-5ad6-b6d9-a37fb34e8d13" { + baseline { + oa { + description ""; + name "Repair valve in the field"; + }; + sa { + description ""; + name "Repair valve in the field"; + }; + }; + description ""; + kind Refinement; + oa @oa_repair; + sa @sa_repair; +} + +trace trace_oa_repair_allocation "Allocation: Repair valve in the field ↔ Allocation: Repair valve in the field" id "3714d547-006f-5c3a-97f8-175ccc23d994" { + baseline { + oa { + description ""; + name "Allocation: Repair valve in the field"; + }; + sa { + description ""; + name "Allocation: Repair valve in the field"; + }; + }; + description ""; + kind Manual; + oa @oa_repair_allocation; + sa @sa_repair_allocation; +} + +trace trace_oa_repair_operation "Valve repair ↔ Valve repair" id "cf92cedf-ea1a-510c-9bc5-89c16d60e8d2" { + baseline { + oa { + description ""; + name "Valve repair"; + }; + sa { + description ""; + name "Valve repair"; + }; + }; + description ""; + kind Item; + oa @oa_repair_operation; + sa @sa_repair_operation; +} + +trace trace_oa_repair_report "Report repair result ↔ Report repair result" id "424eca39-1c29-5a2f-b9ee-33dd018926aa" { + baseline { + oa { + description ""; + name "Report repair result"; + }; + sa { + description ""; + name "Report repair result"; + }; + }; + description ""; + kind Exchange; + oa @oa_repair_report; + sa @sa_repair_report; +} + +trace trace_oa_repair_request "Request field repair ↔ Request field repair" id "da8efc3c-78df-5b10-b2e5-1e28d6d99e86" { + baseline { + oa { + description ""; + name "Request field repair"; + }; + sa { + description ""; + name "Request field repair"; + }; + }; + description ""; + kind Exchange; + oa @oa_repair_request; + sa @sa_repair_request; +} + +trace trace_oa_repair_step "Repair the valve ↔ Repair the valve" id "ac3aa6b0-568e-5a3f-963a-172aa3cfc7a4" { + baseline { + oa { + description ""; + name "Repair the valve"; + }; + sa { + description ""; + name "Repair the valve"; + }; + }; + description ""; + kind Sequence; + oa @oa_repair_step; + sa @sa_repair_step; +} + +trace trace_oa_repair_then_report "Sequence link: Report the measured result ↔ Sequence link: Report the measured result" id "f8d34715-1dc8-504b-acdf-78b770aad1e8" { + baseline { + oa { + description ""; + name "Sequence link: Report the measured result"; + }; + sa { + description ""; + name "Sequence link: Report the measured result"; + }; + }; + description ""; + kind Manual; + oa @oa_repair_then_report; + sa @sa_repair_then_report; +} + +trace trace_oa_repair_traffic "Repair work exchanges ↔ Repair work exchanges" id "3e7bde54-f9c1-549f-9e5b-2ce1ecb685a7" { + baseline { + oa { + description ""; + name "Repair work exchanges"; + }; + sa { + description ""; + name "Repair work exchanges"; + }; + }; + description ""; + kind Manual; + oa @oa_repair_traffic; + sa @sa_repair_traffic; +} + +trace trace_oa_reply "Return pressure after repair ↔ Return pressure after repair" id "595b5729-ccd9-5291-b5d9-30d8c8bd9dfa" { + baseline { + oa { + description ""; + name "Return pressure after repair"; + }; + sa { + description ""; + name "Return pressure after repair"; + }; + }; + description ""; + kind Scenario; + oa @oa_reply; + sa @sa_reply; +} + +trace trace_oa_report_step "Report the measured result ↔ Report the measured result" id "e63b14d2-f408-56a2-aec4-be20cf4ace73" { + baseline { + oa { + description ""; + name "Report the measured result"; + }; + sa { + description ""; + name "Report the measured result"; + }; + }; + description ""; + kind Sequence; + oa @oa_report_step; + sa @sa_report_step; +} + +trace trace_oa_request_step "Request the field repair ↔ Request the field repair" id "ad697c00-07d9-5799-89b3-2c78da8dff4d" { + baseline { + oa { + description ""; + name "Request the field repair"; + }; + sa { + description ""; + name "Request the field repair"; + }; + }; + description ""; + kind Sequence; + oa @oa_request_step; + sa @sa_request_step; +} + +trace trace_oa_request_then_repair "Sequence link: Repair the valve ↔ Sequence link: Repair the valve" id "f2b7050c-629d-533f-b873-bffc33e072f7" { + baseline { + oa { + description ""; + name "Sequence link: Repair the valve"; + }; + sa { + description ""; + name "Sequence link: Repair the valve"; + }; + }; + description ""; + kind Manual; + oa @oa_request_then_repair; + sa @sa_request_then_repair; +} + +trace trace_oa_reset "Reset valve remotely ↔ Reset valve remotely" id "82a5be1a-92a8-578d-9448-086062a20d8f" { + baseline { + oa { + description ""; + name "Reset valve remotely"; + }; + sa { + description ""; + name "Reset valve remotely"; + }; + }; + description ""; + kind Refinement; + oa @oa_reset; + sa @sa_reset; +} + +trace trace_oa_reset_allocation "Allocation: Reset valve remotely ↔ Allocation: Reset valve remotely" id "98ef05b5-5381-5d35-a433-ebab55e9f382" { + baseline { + oa { + description ""; + name "Allocation: Reset valve remotely"; + }; + sa { + description ""; + name "Allocation: Reset valve remotely"; + }; + }; + description ""; + kind Manual; + oa @oa_reset_allocation; + sa @sa_reset_allocation; +} + +trace trace_oa_reset_step "Try the authorized remote reset ↔ Try the authorized remote reset" id "ff84fc06-6f99-5cf3-b73d-236e9eff98a3" { + baseline { + oa { + description ""; + name "Try the authorized remote reset"; + }; + sa { + description ""; + name "Try the authorized remote reset"; + }; + }; + description ""; + kind Sequence; + oa @oa_reset_step; + sa @sa_reset_step; +} + +trace trace_oa_responder "Technician ↔ Technician" id "c5051628-b7af-5fb1-a014-bb60a0b46e03" { + baseline { + oa { + description ""; + name "Technician"; + }; + sa { + description ""; + name "Technician"; + }; + }; + description ""; + kind Scenario; + oa @oa_responder; + sa @sa_responder; +} + +trace trace_oa_response "Handle a pressure alarm ↔ Handle a pressure alarm" id "d3626818-4846-5893-9c02-3407cdba7f3c" { + baseline { + oa { + description ""; + name "Handle a pressure alarm"; + }; + sa { + description ""; + name "Handle a pressure alarm"; + }; + }; + description ""; + kind Sequence; + oa @oa_response; + sa @sa_response; +} + +trace trace_oa_response_delivery "Chain involvement: Restore a safe supply ↔ Chain involvement: Restore a safe supply" id "70c90b0c-85ce-574a-a217-f0d19fad30e1" { + baseline { + oa { + description ""; + name "Chain involvement: Restore a safe supply"; + }; + sa { + description ""; + name "Chain involvement: Restore a safe supply"; + }; + }; + description ""; + kind Manual; + oa @oa_response_delivery; + sa @sa_response_delivery; +} + +trace trace_oa_restore "Restore a safe supply ↔ Restore a safe supply" id "0fbef164-b5d3-58ba-ba41-54d0e63709ab" { + baseline { + oa { + description ""; + name "Restore a safe supply"; + }; + sa { + description ""; + name "Restore a safe supply"; + }; + }; + description ""; + kind Capability; + oa @oa_restore; + sa @sa_restore; +} + +trace trace_oa_restore_work "Restore safe pressure ↔ Restore safe pressure" id "82cca563-9d5d-5479-aa1a-9db03e9674d1" { + baseline { + oa { + description ""; + name "Restore safe pressure"; + }; + sa { + description ""; + name "Restore safe pressure"; + }; + }; + description ""; + kind Refinement; + oa @oa_restore_work; + sa @sa_restore_work; +} + +trace trace_oa_start_monitoring "State transition: Monitoring ↔ State transition: Monitoring" id "07a7b82a-b5a7-5737-abfa-09e422f7420e" { + baseline { + oa { + description ""; + name "State transition: Monitoring"; + }; + sa { + description ""; + name "State transition: Monitoring"; + }; + }; + description ""; + kind Manual; + oa @oa_start_monitoring; + sa @sa_start_monitoring; +} + +trace trace_oa_technician "Field technician ↔ Field technician" id "d47d3c36-50fb-5189-b801-d6fd1694bd49" { + baseline { + oa { + description ""; + name "Field technician"; + }; + sa { + description ""; + name "Field technician"; + }; + }; + description ""; + kind Participant; + oa @oa_technician; + sa @sa_technician; +} + +trace trace_oa_triage "Assess an alarm ↔ Assess an alarm" id "6acd072d-431e-5881-ab20-1813b4fda0c5" { + baseline { + oa { + description ""; + name "Assess an alarm"; + }; + sa { + description ""; + name "Assess an alarm"; + }; + }; + description ""; + kind Capability; + oa @oa_triage; + sa @sa_triage; +} + +trace trace_oa_use_conversation "Use the reviewed repair conversation ↔ Use the reviewed repair conversation" id "f5733d3f-eee3-5cf7-a422-5edd2054d6a6" { + baseline { + oa { + description ""; + name "Use the reviewed repair conversation"; + }; + sa { + description ""; + name "Use the reviewed repair conversation"; + }; + }; + description ""; + kind Scenario; + oa @oa_use_conversation; + sa @sa_use_conversation; +} + +trace trace_oa_use_field "Use the field repair procedure ↔ Use the field repair procedure" id "7a6b4b9c-4220-546a-a752-1587c2881fe1" { + baseline { + oa { + description ""; + name "Use the field repair procedure"; + }; + sa { + description ""; + name "Use the field repair procedure"; + }; + }; + description ""; + kind Sequence; + oa @oa_use_field; + sa @sa_use_field; +} + +trace trace_oa_waiting "Awaiting repair ↔ Awaiting repair" id "0754be23-e4b8-53bc-b03c-89c2dbd80361" { + baseline { + oa { + description ""; + name "Awaiting repair"; + }; + sa { + description ""; + name "Awaiting repair"; + }; + }; + description ""; + kind State; + oa @oa_waiting; + sa @sa_waiting; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/transition-before.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/transition-before.json new file mode 100644 index 00000000..71f12774 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/transition-before.json @@ -0,0 +1,1198 @@ +{ + "alias": "pressure_restoration", + "artifact_links": {}, + "description": "A controller either resets a valve remotely or requests field repair. Compare the operational need with the explicitly chosen coordination-service boundary. Start with README.md beside project.arcadia. Units and guards are descriptive; this model does not simulate a real water network.", + "diagrams": {}, + "elements": { + "022d3cfa-bbaf-5e13-924a-8e55099b8745": { + "alias": "oa_assessment_procedure", + "body": { + "Oa": { + "Process": { + "steps": [ + "942975b8-0bef-5ae8-9fcb-c37497833fb0" + ] + } + } + }, + "description": "", + "id": "022d3cfa-bbaf-5e13-924a-8e55099b8745", + "name": "Assess an alarm procedure", + "parent": null + }, + "0b07b9ed-492d-57f6-b0b1-ce8a709238a7": { + "alias": "oa_assess_step", + "body": { + "Oa": { + "Shared": { + "Occurrence": { + "body": { + "SequenceReference": { + "sequence": "022d3cfa-bbaf-5e13-924a-8e55099b8745" + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "0b07b9ed-492d-57f6-b0b1-ce8a709238a7", + "name": "Assess the alarm", + "parent": "58bae2b0-f560-50f2-818d-19091d22d18a" + }, + "1970608f-85d1-5234-ac86-5e2b0df27dc3": { + "alias": "oa_monitor", + "body": { + "Oa": { + "Shared": "StateMachine" + } + }, + "description": "", + "id": "1970608f-85d1-5234-ac86-5e2b0df27dc3", + "name": "Pressure supervision", + "parent": "32aa9940-df6e-5a12-b9bd-6337e2d2ed22" + }, + "19bd3a3a-4d0c-56d5-bf50-a6b43fd81771": { + "alias": "oa_contact_category", + "body": { + "Oa": { + "Shared": { + "ExchangeCategory": { + "exchanges": [ + "27b47887-baf0-518b-bf87-f5acbf7d0b93" + ], + "family": "Participant" + } + } + } + }, + "description": "", + "id": "19bd3a3a-4d0c-56d5-bf50-a6b43fd81771", + "name": "Field contact", + "parent": null + }, + "1b91f8a7-0bdb-514e-b1cd-955658e09927": { + "alias": "oa_restore_work", + "body": { + "Oa": "Activity" + }, + "description": "", + "id": "1b91f8a7-0bdb-514e-b1cd-955658e09927", + "name": "Restore safe pressure", + "parent": null + }, + "2011b3ac-614b-5a47-8891-7ff81965f425": { + "alias": "oa_outer_controller", + "body": { + "Oa": { + "Shared": { + "Lifeline": { + "represented": "32aa9940-df6e-5a12-b9bd-6337e2d2ed22" + } + } + } + }, + "description": "", + "id": "2011b3ac-614b-5a47-8891-7ff81965f425", + "name": "Controller", + "parent": "d6f881a4-95da-54e9-ad97-1b8965532629" + }, + "20472233-5ce6-5ffe-b4ad-0bdbccf3e423": { + "alias": "oa_conversation", + "body": { + "Oa": { + "Shared": { + "Scenario": { + "context": "3dfee23a-148b-5cec-ad2d-b774e84ea5bb", + "postcondition": "The controller has received the measured pressure after repair", + "precondition": "A pressure alarm has been assessed", + "steps": [ + "b97437c6-cd7a-5a05-b537-b30a17dd936a", + "cc2d497a-fd15-5455-9ee5-e70eb95811d8" + ], + "viewpoint": "ParticipantInteraction" + } + } + } + }, + "description": "", + "id": "20472233-5ce6-5ffe-b4ad-0bdbccf3e423", + "name": "Repair request and measured reply", + "parent": null + }, + "32aa9940-df6e-5a12-b9bd-6337e2d2ed22": { + "alias": "oa_control", + "body": { + "Oa": "Entity" + }, + "description": "", + "id": "32aa9940-df6e-5a12-b9bd-6337e2d2ed22", + "name": "Control room", + "parent": null + }, + "3dfee23a-148b-5cec-ad2d-b774e84ea5bb": { + "alias": "oa_restore", + "body": { + "Oa": "Capability" + }, + "description": "", + "id": "3dfee23a-148b-5cec-ad2d-b774e84ea5bb", + "name": "Restore a safe supply", + "parent": null + }, + "41859a65-ded2-547b-ab03-14e2fa740cf9": { + "alias": "oa_caller", + "body": { + "Oa": { + "Shared": { + "Lifeline": { + "represented": "32aa9940-df6e-5a12-b9bd-6337e2d2ed22" + } + } + } + }, + "description": "", + "id": "41859a65-ded2-547b-ab03-14e2fa740cf9", + "name": "Controller", + "parent": "20472233-5ce6-5ffe-b4ad-0bdbccf3e423" + }, + "435bf87c-73fd-5e4d-978a-4c471bc9eaf0": { + "alias": "sa_control", + "body": { + "Sa": "System" + }, + "description": "", + "id": "435bf87c-73fd-5e4d-978a-4c471bc9eaf0", + "name": "Pressure coordination service", + "parent": null + }, + "58bae2b0-f560-50f2-818d-19091d22d18a": { + "alias": "oa_response", + "body": { + "Oa": { + "Process": { + "steps": [ + "0b07b9ed-492d-57f6-b0b1-ce8a709238a7", + "b280c6ca-e5f9-5424-a5c1-5676e01c2371", + "d2026fc2-74a8-5e22-9942-ff3eb68a3677", + "fc6763bf-a534-54bf-afcd-57ab285ff07d", + "6b945a6d-6aa0-5dd3-96e6-2e8d757d167d", + "e00594a3-6122-5a6b-b3c2-ecb5506c741d" + ] + } + } + }, + "description": "", + "id": "58bae2b0-f560-50f2-818d-19091d22d18a", + "name": "Handle a pressure alarm", + "parent": null + }, + "58c15833-6e75-523a-b57f-a88f19f6d672": { + "alias": "oa_waiting", + "body": { + "Oa": { + "Shared": { + "State": { + "do_activity": "", + "entry": "", + "exit": "", + "kind": "State" + } + } + } + }, + "description": "", + "id": "58c15833-6e75-523a-b57f-a88f19f6d672", + "name": "Awaiting repair", + "parent": "8412e9c6-96fe-5ed6-a903-1d37ec3c3bf7" + }, + "5ba8079c-2dbe-5e98-ae82-2b60c6020a02": { + "alias": "oa_request_step", + "body": { + "Oa": { + "Shared": { + "Occurrence": { + "body": { + "Exchange": { + "exchange": "cf423ea2-8b2e-5a27-93d4-5e8542d9db8d", + "message_kind": "Asynchronous", + "receiver": null, + "reply_to": null, + "sender": null, + "values": [] + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "5ba8079c-2dbe-5e98-ae82-2b60c6020a02", + "name": "Request the field repair", + "parent": "5d3af417-244c-54bb-9588-16daedda4e1f" + }, + "5d3af417-244c-54bb-9588-16daedda4e1f": { + "alias": "oa_field_procedure", + "body": { + "Oa": { + "Process": { + "steps": [ + "5ba8079c-2dbe-5e98-ae82-2b60c6020a02", + "c59432fe-6092-5ee0-908d-9dbf39476471", + "df2fd3f8-6bc2-5380-a13f-36643ed35ac7" + ] + } + } + }, + "description": "", + "id": "5d3af417-244c-54bb-9588-16daedda4e1f", + "name": "Field repair procedure", + "parent": null + }, + "61f7bbfb-74a4-5540-9182-2583dfb27a49": { + "alias": "oa_assess", + "body": { + "Oa": "Activity" + }, + "description": "", + "id": "61f7bbfb-74a4-5540-9182-2583dfb27a49", + "name": "Assess pressure alarm", + "parent": "1b91f8a7-0bdb-514e-b1cd-955658e09927" + }, + "65d6b8d6-271a-5c84-8b42-abbe310c955e": { + "alias": "oa_high_pressure", + "body": { + "Oa": { + "Shared": { + "Event": { + "body": { + "Change": { + "expression": "measured_pressure > operating_limit" + } + } + } + } + } + }, + "description": "", + "id": "65d6b8d6-271a-5c84-8b42-abbe310c955e", + "name": "Pressure alarm detected", + "parent": null + }, + "6a30b763-cc51-546d-907f-5c63657cfd03": { + "alias": "oa_triage", + "body": { + "Oa": "Capability" + }, + "description": "", + "id": "6a30b763-cc51-546d-907f-5c63657cfd03", + "name": "Assess an alarm", + "parent": null + }, + "6b945a6d-6aa0-5dd3-96e6-2e8d757d167d": { + "alias": "oa_merge", + "body": { + "Oa": { + "Shared": { + "Occurrence": { + "body": { + "Control": { + "kind": "Merge" + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "6b945a6d-6aa0-5dd3-96e6-2e8d757d167d", + "name": "Recovery path completed", + "parent": "58bae2b0-f560-50f2-818d-19091d22d18a" + }, + "6cbde0d8-9f5f-510a-a8c1-e29cb99ad4ae": { + "alias": "oa_monitoring", + "body": { + "Oa": { + "Shared": { + "State": { + "do_activity": "", + "entry": "", + "exit": "", + "kind": "State" + } + } + } + }, + "description": "", + "id": "6cbde0d8-9f5f-510a-a8c1-e29cb99ad4ae", + "name": "Monitoring", + "parent": "8412e9c6-96fe-5ed6-a903-1d37ec3c3bf7" + }, + "727c0b5c-8db6-5eb7-83d6-735519c5949f": { + "alias": "oa_confirm", + "body": { + "Oa": "Activity" + }, + "description": "", + "id": "727c0b5c-8db6-5eb7-83d6-735519c5949f", + "name": "Confirm safe pressure", + "parent": "1b91f8a7-0bdb-514e-b1cd-955658e09927" + }, + "8412e9c6-96fe-5ed6-a903-1d37ec3c3bf7": { + "alias": "oa_monitor_region", + "body": { + "Oa": { + "Shared": "Region" + } + }, + "description": "", + "id": "8412e9c6-96fe-5ed6-a903-1d37ec3c3bf7", + "name": "Supervision cycle", + "parent": "1970608f-85d1-5234-ac86-5e2b0df27dc3" + }, + "8bc6d0a4-3e87-559b-8bd7-1b679a2db5b7": { + "alias": "oa_pressure_parameter", + "body": { + "Oa": { + "Shared": { + "DataField": { + "default": null, + "direction": "InOut", + "maximum": 1, + "minimum": 1, + "storage": "Value", + "type_ref": { + "Named": "e7824764-5db9-5384-8198-2fbaea2b10b2" + }, + "unit": "" + } + } + } + }, + "description": "", + "id": "8bc6d0a4-3e87-559b-8bd7-1b679a2db5b7", + "name": "Pressure before / after repair", + "parent": "d736c7d6-d369-550a-8ba4-dae223e40bb3" + }, + "9349b353-53f2-56f8-b571-a05b09335cdf": { + "alias": "oa_repair_traffic", + "body": { + "Oa": { + "Shared": { + "ExchangeCategory": { + "exchanges": [ + "cf423ea2-8b2e-5a27-93d4-5e8542d9db8d", + "b436d0b3-c824-5a96-af6b-2c269816d1cc" + ], + "family": "Work" + } + } + } + }, + "description": "", + "id": "9349b353-53f2-56f8-b571-a05b09335cdf", + "name": "Repair work exchanges", + "parent": null + }, + "942975b8-0bef-5ae8-9fcb-c37497833fb0": { + "alias": "oa_assessment_action", + "body": { + "Oa": { + "Shared": { + "Occurrence": { + "body": { + "Action": { + "action": "61f7bbfb-74a4-5540-9182-2583dfb27a49", + "lifeline": null + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "942975b8-0bef-5ae8-9fcb-c37497833fb0", + "name": "Assess pressure alarm", + "parent": "022d3cfa-bbaf-5e13-924a-8e55099b8745" + }, + "9ff94014-afa1-50ab-a4d3-8e9dd0565cc5": { + "alias": "oa_use_conversation", + "body": { + "Oa": { + "Shared": { + "Occurrence": { + "body": { + "ScenarioUse": { + "bindings": [ + { + "local": "2011b3ac-614b-5a47-8891-7ff81965f425", + "referenced": "41859a65-ded2-547b-ab03-14e2fa740cf9" + }, + { + "local": "fffff882-78fd-5415-928d-c1ef7fac6576", + "referenced": "fc81c5f0-0442-5b88-992b-e5b10f351c59" + } + ], + "scenario": "20472233-5ce6-5ffe-b4ad-0bdbccf3e423" + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "9ff94014-afa1-50ab-a4d3-8e9dd0565cc5", + "name": "Use the reviewed repair conversation", + "parent": "d6f881a4-95da-54e9-ad97-1b8965532629" + }, + "a21465af-05f3-5fb5-8983-de26932422fb": { + "alias": "oa_repair", + "body": { + "Oa": "Activity" + }, + "description": "", + "id": "a21465af-05f3-5fb5-8983-de26932422fb", + "name": "Repair valve in the field", + "parent": "1b91f8a7-0bdb-514e-b1cd-955658e09927" + }, + "a7ffb869-9dde-5e76-b276-c719c5c143a9": { + "alias": "oa_monitor_initial", + "body": { + "Oa": { + "Shared": { + "State": { + "do_activity": "", + "entry": "", + "exit": "", + "kind": "Initial" + } + } + } + }, + "description": "", + "id": "a7ffb869-9dde-5e76-b276-c719c5c143a9", + "name": "Start", + "parent": "8412e9c6-96fe-5ed6-a903-1d37ec3c3bf7" + }, + "b280c6ca-e5f9-5424-a5c1-5676e01c2371": { + "alias": "oa_decision", + "body": { + "Oa": { + "Shared": { + "Occurrence": { + "body": { + "Control": { + "kind": "Choice" + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "b280c6ca-e5f9-5424-a5c1-5676e01c2371", + "name": "Can a remote reset safely recover pressure?", + "parent": "58bae2b0-f560-50f2-818d-19091d22d18a" + }, + "b97437c6-cd7a-5a05-b537-b30a17dd936a": { + "alias": "oa_call", + "body": { + "Oa": { + "Shared": { + "Occurrence": { + "body": { + "Exchange": { + "exchange": "27b47887-baf0-518b-bf87-f5acbf7d0b93", + "message_kind": "Call", + "receiver": "fc81c5f0-0442-5b88-992b-e5b10f351c59", + "reply_to": null, + "sender": "41859a65-ded2-547b-ab03-14e2fa740cf9", + "values": [ + { + "expression": "420.0", + "field": "8bc6d0a4-3e87-559b-8bd7-1b679a2db5b7", + "path": [] + } + ] + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "b97437c6-cd7a-5a05-b537-b30a17dd936a", + "name": "Request valve repair", + "parent": "20472233-5ce6-5ffe-b4ad-0bdbccf3e423" + }, + "c05b9422-b9da-5de5-b21d-07ad23bd2b8a": { + "alias": "sa_technician", + "body": { + "Sa": "Actor" + }, + "description": "", + "id": "c05b9422-b9da-5de5-b21d-07ad23bd2b8a", + "name": "Field technician", + "parent": null + }, + "c59432fe-6092-5ee0-908d-9dbf39476471": { + "alias": "oa_repair_step", + "body": { + "Oa": { + "Shared": { + "Occurrence": { + "body": { + "Action": { + "action": "a21465af-05f3-5fb5-8983-de26932422fb", + "lifeline": null + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "c59432fe-6092-5ee0-908d-9dbf39476471", + "name": "Repair the valve", + "parent": "5d3af417-244c-54bb-9588-16daedda4e1f" + }, + "c9c61f50-06e0-5d17-973d-dcc57cd5cc90": { + "alias": "oa_mission", + "body": { + "Oa": "Mission" + }, + "description": "", + "id": "c9c61f50-06e0-5d17-973d-dcc57cd5cc90", + "name": "Maintain safe water supply", + "parent": null + }, + "cc2d497a-fd15-5455-9ee5-e70eb95811d8": { + "alias": "oa_reply", + "body": { + "Oa": { + "Shared": { + "Occurrence": { + "body": { + "Exchange": { + "exchange": "27b47887-baf0-518b-bf87-f5acbf7d0b93", + "message_kind": "Reply", + "receiver": "41859a65-ded2-547b-ab03-14e2fa740cf9", + "reply_to": "b97437c6-cd7a-5a05-b537-b30a17dd936a", + "sender": "fc81c5f0-0442-5b88-992b-e5b10f351c59", + "values": [ + { + "expression": "320.0", + "field": "8bc6d0a4-3e87-559b-8bd7-1b679a2db5b7", + "path": [] + } + ] + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "cc2d497a-fd15-5455-9ee5-e70eb95811d8", + "name": "Return pressure after repair", + "parent": "20472233-5ce6-5ffe-b4ad-0bdbccf3e423" + }, + "d0c8be87-d238-503a-a549-7558a210507f": { + "alias": "oa_reset", + "body": { + "Oa": "Activity" + }, + "description": "", + "id": "d0c8be87-d238-503a-a549-7558a210507f", + "name": "Reset valve remotely", + "parent": "1b91f8a7-0bdb-514e-b1cd-955658e09927" + }, + "d2026fc2-74a8-5e22-9942-ff3eb68a3677": { + "alias": "oa_reset_step", + "body": { + "Oa": { + "Shared": { + "Occurrence": { + "body": { + "Action": { + "action": "d0c8be87-d238-503a-a549-7558a210507f", + "lifeline": null + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "d2026fc2-74a8-5e22-9942-ff3eb68a3677", + "name": "Try the authorized remote reset", + "parent": "58bae2b0-f560-50f2-818d-19091d22d18a" + }, + "d6f881a4-95da-54e9-ad97-1b8965532629": { + "alias": "oa_full_scenario", + "body": { + "Oa": { + "Shared": { + "Scenario": { + "context": "3dfee23a-148b-5cec-ad2d-b774e84ea5bb", + "postcondition": "The controller has received the measured pressure after repair", + "precondition": "A pressure alarm has been assessed", + "steps": [ + "9ff94014-afa1-50ab-a4d3-8e9dd0565cc5" + ], + "viewpoint": "ParticipantInteraction" + } + } + } + }, + "description": "", + "id": "d6f881a4-95da-54e9-ad97-1b8965532629", + "name": "Restore supply through field repair", + "parent": null + }, + "d736c7d6-d369-550a-8ba4-dae223e40bb3": { + "alias": "oa_repair_operation", + "body": { + "Oa": { + "Shared": { + "ExchangeItem": { + "kind": "Information", + "mechanism": "Operation", + "supertype": null + } + } + } + }, + "description": "", + "id": "d736c7d6-d369-550a-8ba4-dae223e40bb3", + "name": "Valve repair", + "parent": null + }, + "df2fd3f8-6bc2-5380-a13f-36643ed35ac7": { + "alias": "oa_report_step", + "body": { + "Oa": { + "Shared": { + "Occurrence": { + "body": { + "Exchange": { + "exchange": "b436d0b3-c824-5a96-af6b-2c269816d1cc", + "message_kind": "Asynchronous", + "receiver": null, + "reply_to": null, + "sender": null, + "values": [] + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "df2fd3f8-6bc2-5380-a13f-36643ed35ac7", + "name": "Report the measured result", + "parent": "5d3af417-244c-54bb-9588-16daedda4e1f" + }, + "e00594a3-6122-5a6b-b3c2-ecb5506c741d": { + "alias": "oa_confirm_step", + "body": { + "Oa": { + "Shared": { + "Occurrence": { + "body": { + "Action": { + "action": "727c0b5c-8db6-5eb7-83d6-735519c5949f", + "lifeline": null + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "e00594a3-6122-5a6b-b3c2-ecb5506c741d", + "name": "Confirm safe pressure", + "parent": "58bae2b0-f560-50f2-818d-19091d22d18a" + }, + "e07c3952-4a1a-5cc7-b7d5-03a01101ce49": { + "alias": "oa_technician", + "body": { + "Oa": "Actor" + }, + "description": "", + "id": "e07c3952-4a1a-5cc7-b7d5-03a01101ce49", + "name": "Field technician", + "parent": null + }, + "e7824764-5db9-5384-8198-2fbaea2b10b2": { + "alias": "oa_pressure", + "body": { + "Oa": { + "Shared": { + "DataType": { + "default": null, + "definition": { + "Real": { + "maximum": 600.0, + "minimum": 0.0 + } + }, + "unit": "kPa" + } + } + } + }, + "description": "", + "id": "e7824764-5db9-5384-8198-2fbaea2b10b2", + "name": "Measured pressure", + "parent": null + }, + "fc6763bf-a534-54bf-afcd-57ab285ff07d": { + "alias": "oa_use_field", + "body": { + "Oa": { + "Shared": { + "Occurrence": { + "body": { + "SequenceReference": { + "sequence": "5d3af417-244c-54bb-9588-16daedda4e1f" + } + }, + "postcondition": "", + "precondition": "" + } + } + } + }, + "description": "", + "id": "fc6763bf-a534-54bf-afcd-57ab285ff07d", + "name": "Use the field repair procedure", + "parent": "58bae2b0-f560-50f2-818d-19091d22d18a" + }, + "fc81c5f0-0442-5b88-992b-e5b10f351c59": { + "alias": "oa_responder", + "body": { + "Oa": { + "Shared": { + "Lifeline": { + "represented": "e07c3952-4a1a-5cc7-b7d5-03a01101ce49" + } + } + } + }, + "description": "", + "id": "fc81c5f0-0442-5b88-992b-e5b10f351c59", + "name": "Technician", + "parent": "20472233-5ce6-5ffe-b4ad-0bdbccf3e423" + }, + "fffff882-78fd-5415-928d-c1ef7fac6576": { + "alias": "oa_outer_technician", + "body": { + "Oa": { + "Shared": { + "Lifeline": { + "represented": "e07c3952-4a1a-5cc7-b7d5-03a01101ce49" + } + } + } + }, + "description": "", + "id": "fffff882-78fd-5415-928d-c1ef7fac6576", + "name": "Technician", + "parent": "d6f881a4-95da-54e9-ad97-1b8965532629" + } + }, + "id": "2786d72f-5763-5f33-a57f-2773a4ca1a6c", + "name": "Restore safe water pressure — release 1 walkthrough", + "relations": { + "094b888c-450c-5c4f-971a-7d75db059574": { + "alias": "oa_request_carriage", + "body": { + "ExchangeAllocation": { + "source": "27b47887-baf0-518b-bf87-f5acbf7d0b93", + "target": "cf423ea2-8b2e-5a27-93d4-5e8542d9db8d" + } + }, + "description": "", + "id": "094b888c-450c-5c4f-971a-7d75db059574", + "name": "Exchange allocation: Request field repair" + }, + "0c4c9e58-ff32-5c00-b82a-d408a4be0183": { + "alias": "oa_mission_participant", + "body": { + "MissionInvolvement": { + "source": "32aa9940-df6e-5a12-b9bd-6337e2d2ed22", + "target": "c9c61f50-06e0-5d17-973d-dcc57cd5cc90" + } + }, + "description": "", + "id": "0c4c9e58-ff32-5c00-b82a-d408a4be0183", + "name": "Mission involvement: Maintain safe water supply" + }, + "109e2d6b-7e86-5934-93a5-fab56eced84e": { + "alias": "oa_assess_then_decide", + "body": { + "SequenceLink": { + "guard": "", + "source": "0b07b9ed-492d-57f6-b0b1-ce8a709238a7", + "target": "b280c6ca-e5f9-5424-a5c1-5676e01c2371" + } + }, + "description": "", + "id": "109e2d6b-7e86-5934-93a5-fab56eced84e", + "name": "Continue" + }, + "1853df1f-30f4-5b1a-baac-2dcaf73c7b3a": { + "alias": "oa_reset_allocation", + "body": { + "Allocation": { + "source": "32aa9940-df6e-5a12-b9bd-6337e2d2ed22", + "target": "d0c8be87-d238-503a-a549-7558a210507f" + } + }, + "description": "", + "id": "1853df1f-30f4-5b1a-baac-2dcaf73c7b3a", + "name": "Allocation: Reset valve remotely" + }, + "1f8b1898-65f6-5360-99cf-b78a71bd50ec": { + "alias": "oa_mission_delivery", + "body": { + "MissionCapability": { + "source": "c9c61f50-06e0-5d17-973d-dcc57cd5cc90", + "target": "3dfee23a-148b-5cec-ad2d-b774e84ea5bb" + } + }, + "description": "", + "id": "1f8b1898-65f6-5360-99cf-b78a71bd50ec", + "name": "Mission capability: Restore a safe supply" + }, + "21fe5e8e-cbc2-5dad-b3e8-1df46e167d97": { + "alias": "oa_normal_transition", + "body": { + "StateTransition": { + "effect": "", + "effects": [], + "guard": "repair confirmed and pressure is safe", + "source": "58c15833-6e75-523a-b57f-a88f19f6d672", + "target": "6cbde0d8-9f5f-510a-a8c1-e29cb99ad4ae", + "transition_kind": "External", + "trigger": "", + "triggers": [] + } + }, + "description": "", + "id": "21fe5e8e-cbc2-5dad-b3e8-1df46e167d97", + "name": "State transition: Monitoring" + }, + "229ee94f-d147-50f6-9769-b5bd0c03a084": { + "alias": "oa_confirm_path", + "body": { + "SequenceLink": { + "guard": "", + "source": "6b945a6d-6aa0-5dd3-96e6-2e8d757d167d", + "target": "e00594a3-6122-5a6b-b3c2-ecb5506c741d" + } + }, + "description": "", + "id": "229ee94f-d147-50f6-9769-b5bd0c03a084", + "name": "Continue" + }, + "27b47887-baf0-518b-bf87-f5acbf7d0b93": { + "alias": "oa_contact", + "body": { + "CommunicationMean": { + "items": [ + "d736c7d6-d369-550a-8ba4-dae223e40bb3" + ], + "oriented": false, + "source": "32aa9940-df6e-5a12-b9bd-6337e2d2ed22", + "target": "e07c3952-4a1a-5cc7-b7d5-03a01101ce49" + } + }, + "description": "", + "id": "27b47887-baf0-518b-bf87-f5acbf7d0b93", + "name": "Technician service conversation" + }, + "2b00270c-79a5-52a5-af96-33346bea531b": { + "alias": "oa_start_monitoring", + "body": { + "StateTransition": { + "effect": "", + "effects": [], + "guard": "", + "source": "a7ffb869-9dde-5e76-b276-c719c5c143a9", + "target": "6cbde0d8-9f5f-510a-a8c1-e29cb99ad4ae", + "transition_kind": "External", + "trigger": "", + "triggers": [] + } + }, + "description": "", + "id": "2b00270c-79a5-52a5-af96-33346bea531b", + "name": "State transition: Monitoring" + }, + "3f54d890-4ca5-5e36-873b-abb5c92d578c": { + "alias": "oa_request_then_repair", + "body": { + "SequenceLink": { + "guard": "", + "source": "5ba8079c-2dbe-5e98-ae82-2b60c6020a02", + "target": "c59432fe-6092-5ee0-908d-9dbf39476471" + } + }, + "description": "", + "id": "3f54d890-4ca5-5e36-873b-abb5c92d578c", + "name": "Sequence link: Repair the valve" + }, + "4549d3fa-5ab9-52a9-b4f9-3a78fc9d625a": { + "alias": "oa_report_carriage", + "body": { + "ExchangeAllocation": { + "source": "27b47887-baf0-518b-bf87-f5acbf7d0b93", + "target": "b436d0b3-c824-5a96-af6b-2c269816d1cc" + } + }, + "description": "", + "id": "4549d3fa-5ab9-52a9-b4f9-3a78fc9d625a", + "name": "Exchange allocation: Report repair result" + }, + "594c61cd-94e0-5c07-890d-edfd520d7df9": { + "alias": "oa_assess_allocation", + "body": { + "Allocation": { + "source": "32aa9940-df6e-5a12-b9bd-6337e2d2ed22", + "target": "61f7bbfb-74a4-5540-9182-2583dfb27a49" + } + }, + "description": "", + "id": "594c61cd-94e0-5c07-890d-edfd520d7df9", + "name": "Allocation: Assess pressure alarm" + }, + "628cb4fc-fe63-5f6b-b364-6268f26b5740": { + "alias": "oa_assessment_delivery", + "body": { + "ChainInvolvement": { + "source": "022d3cfa-bbaf-5e13-924a-8e55099b8745", + "target": "6a30b763-cc51-546d-907f-5c63657cfd03" + } + }, + "description": "", + "id": "628cb4fc-fe63-5f6b-b364-6268f26b5740", + "name": "Chain involvement: Assess an alarm" + }, + "76218d89-68fd-531d-b35b-90c5b769a5ef": { + "alias": "oa_remote_path", + "body": { + "SequenceLink": { + "guard": "remote reset is authorized", + "source": "b280c6ca-e5f9-5424-a5c1-5676e01c2371", + "target": "d2026fc2-74a8-5e22-9942-ff3eb68a3677" + } + }, + "description": "", + "id": "76218d89-68fd-531d-b35b-90c5b769a5ef", + "name": "remote reset is authorized" + }, + "7fa37e63-db65-5aa7-88f2-31ff4347a787": { + "alias": "oa_assess_on_entry", + "body": { + "StateAction": { + "phase": "Entry", + "source": "58c15833-6e75-523a-b57f-a88f19f6d672", + "target": "61f7bbfb-74a4-5540-9182-2583dfb27a49" + } + }, + "description": "", + "id": "7fa37e63-db65-5aa7-88f2-31ff4347a787", + "name": "Assess when repair is needed" + }, + "ae53f363-0dec-5a7c-9afd-8fcd1b778ab2": { + "alias": "oa_repair_allocation", + "body": { + "Allocation": { + "source": "e07c3952-4a1a-5cc7-b7d5-03a01101ce49", + "target": "a21465af-05f3-5fb5-8983-de26932422fb" + } + }, + "description": "", + "id": "ae53f363-0dec-5a7c-9afd-8fcd1b778ab2", + "name": "Allocation: Repair valve in the field" + }, + "b436d0b3-c824-5a96-af6b-2c269816d1cc": { + "alias": "oa_repair_report", + "body": { + "Interaction": { + "items": [ + "d736c7d6-d369-550a-8ba4-dae223e40bb3" + ], + "source": "a21465af-05f3-5fb5-8983-de26932422fb", + "target": "727c0b5c-8db6-5eb7-83d6-735519c5949f" + } + }, + "description": "", + "id": "b436d0b3-c824-5a96-af6b-2c269816d1cc", + "name": "Report repair result" + }, + "bac43d3b-910b-5bdc-be9b-f78cf973e1ed": { + "alias": "oa_remote_merge", + "body": { + "SequenceLink": { + "guard": "", + "source": "d2026fc2-74a8-5e22-9942-ff3eb68a3677", + "target": "6b945a6d-6aa0-5dd3-96e6-2e8d757d167d" + } + }, + "description": "", + "id": "bac43d3b-910b-5bdc-be9b-f78cf973e1ed", + "name": "Continue" + }, + "bfd4326e-ea65-5269-b5e6-e063a355d1e9": { + "alias": "oa_confirm_allocation", + "body": { + "Allocation": { + "source": "32aa9940-df6e-5a12-b9bd-6337e2d2ed22", + "target": "727c0b5c-8db6-5eb7-83d6-735519c5949f" + } + }, + "description": "", + "id": "bfd4326e-ea65-5269-b5e6-e063a355d1e9", + "name": "Allocation: Confirm safe pressure" + }, + "c1adbbd0-a762-5ee3-8b9a-5c18af377771": { + "alias": "oa_field_path", + "body": { + "SequenceLink": { + "guard": "else", + "source": "b280c6ca-e5f9-5424-a5c1-5676e01c2371", + "target": "fc6763bf-a534-54bf-afcd-57ab285ff07d" + } + }, + "description": "", + "id": "c1adbbd0-a762-5ee3-8b9a-5c18af377771", + "name": "else" + }, + "c7c248f8-28b8-55be-9023-0991d44021e3": { + "alias": "oa_response_delivery", + "body": { + "ChainInvolvement": { + "source": "58bae2b0-f560-50f2-818d-19091d22d18a", + "target": "3dfee23a-148b-5cec-ad2d-b774e84ea5bb" + } + }, + "description": "", + "id": "c7c248f8-28b8-55be-9023-0991d44021e3", + "name": "Chain involvement: Restore a safe supply" + }, + "c8196d35-2168-5fef-8b03-ba0d139bc00f": { + "alias": "oa_repair_then_report", + "body": { + "SequenceLink": { + "guard": "", + "source": "c59432fe-6092-5ee0-908d-9dbf39476471", + "target": "df2fd3f8-6bc2-5380-a13f-36643ed35ac7" + } + }, + "description": "", + "id": "c8196d35-2168-5fef-8b03-ba0d139bc00f", + "name": "Sequence link: Report the measured result" + }, + "c8593670-8906-530f-b6a2-3ada77a9c219": { + "alias": "oa_field_merge", + "body": { + "SequenceLink": { + "guard": "", + "source": "fc6763bf-a534-54bf-afcd-57ab285ff07d", + "target": "6b945a6d-6aa0-5dd3-96e6-2e8d757d167d" + } + }, + "description": "", + "id": "c8593670-8906-530f-b6a2-3ada77a9c219", + "name": "Continue" + }, + "cf423ea2-8b2e-5a27-93d4-5e8542d9db8d": { + "alias": "oa_repair_request", + "body": { + "Interaction": { + "items": [ + "d736c7d6-d369-550a-8ba4-dae223e40bb3" + ], + "source": "61f7bbfb-74a4-5540-9182-2583dfb27a49", + "target": "a21465af-05f3-5fb5-8983-de26932422fb" + } + }, + "description": "", + "id": "cf423ea2-8b2e-5a27-93d4-5e8542d9db8d", + "name": "Request field repair" + }, + "e21d9a54-ae8e-5618-a4f8-67ee22b92638": { + "alias": "oa_include_triage", + "body": { + "CapabilityInclude": { + "source": "3dfee23a-148b-5cec-ad2d-b774e84ea5bb", + "target": "6a30b763-cc51-546d-907f-5c63657cfd03" + } + }, + "description": "", + "id": "e21d9a54-ae8e-5618-a4f8-67ee22b92638", + "name": "Capability include: Assess an alarm" + }, + "fbde9d5e-c7e9-55db-a2be-497345c491b3": { + "alias": "oa_alarm_transition", + "body": { + "StateTransition": { + "effect": "", + "effects": [], + "guard": "", + "source": "6cbde0d8-9f5f-510a-a8c1-e29cb99ad4ae", + "target": "58c15833-6e75-523a-b57f-a88f19f6d672", + "transition_kind": "External", + "trigger": "", + "triggers": [ + "65d6b8d6-271a-5c84-8b42-abbe310c955e" + ] + } + }, + "description": "", + "id": "fbde9d5e-c7e9-55db-a2be-497345c491b3", + "name": "State transition: Awaiting repair" + }, + "ffdbfcd0-d423-5707-a880-0dfbe1400f72": { + "alias": "oa_assessment_support", + "body": { + "CapabilityInvolvement": { + "source": "61f7bbfb-74a4-5540-9182-2583dfb27a49", + "target": "6a30b763-cc51-546d-907f-5c63657cfd03" + } + }, + "description": "", + "id": "ffdbfcd0-d423-5707-a880-0dfbe1400f72", + "name": "Capability involvement: Assess an alarm" + } + }, + "schema_version": 7, + "traces": {} +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/transition-request.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/transition-request.json new file mode 100644 index 00000000..b2cc442b --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/transition-request.json @@ -0,0 +1,114 @@ +{ + "communication_endpoints": [ + { + "source": "27b47887-baf0-518b-bf87-f5acbf7d0b93", + "source_port": { + "Create": { + "alias": "sa_control_port", + "description": "Explicitly chosen Standard component port for the repair service.", + "id": "98d411e7-7c65-5c3f-b543-8bf0f2522ea2", + "kind": "Standard", + "name": "Repair service client", + "orientation": "Unset" + } + }, + "target_port": { + "Create": { + "alias": "sa_technician_port", + "description": "Explicitly chosen Standard component port for the repair service.", + "id": "e6d69cbd-99d7-596b-bbe3-dada6118a600", + "kind": "Standard", + "name": "Repair service provider", + "orientation": "Unset" + } + } + } + ], + "destination_diagram": null, + "direction": "OaToSa", + "fields": [], + "mappings": [ + { + "source": "32aa9940-df6e-5a12-b9bd-6337e2d2ed22", + "target": "435bf87c-73fd-5e4d-978a-4c471bc9eaf0", + "target_kind": null + }, + { + "source": "e07c3952-4a1a-5cc7-b7d5-03a01101ce49", + "target": "c05b9422-b9da-5de5-b21d-07ad23bd2b8a", + "target_kind": null + } + ], + "resolutions": [], + "scope": "SelectedOnly", + "sources": [ + "022d3cfa-bbaf-5e13-924a-8e55099b8745", + "0b07b9ed-492d-57f6-b0b1-ce8a709238a7", + "1970608f-85d1-5234-ac86-5e2b0df27dc3", + "19bd3a3a-4d0c-56d5-bf50-a6b43fd81771", + "1b91f8a7-0bdb-514e-b1cd-955658e09927", + "2011b3ac-614b-5a47-8891-7ff81965f425", + "20472233-5ce6-5ffe-b4ad-0bdbccf3e423", + "32aa9940-df6e-5a12-b9bd-6337e2d2ed22", + "3dfee23a-148b-5cec-ad2d-b774e84ea5bb", + "41859a65-ded2-547b-ab03-14e2fa740cf9", + "58bae2b0-f560-50f2-818d-19091d22d18a", + "58c15833-6e75-523a-b57f-a88f19f6d672", + "5ba8079c-2dbe-5e98-ae82-2b60c6020a02", + "5d3af417-244c-54bb-9588-16daedda4e1f", + "61f7bbfb-74a4-5540-9182-2583dfb27a49", + "65d6b8d6-271a-5c84-8b42-abbe310c955e", + "6a30b763-cc51-546d-907f-5c63657cfd03", + "6b945a6d-6aa0-5dd3-96e6-2e8d757d167d", + "6cbde0d8-9f5f-510a-a8c1-e29cb99ad4ae", + "727c0b5c-8db6-5eb7-83d6-735519c5949f", + "8412e9c6-96fe-5ed6-a903-1d37ec3c3bf7", + "8bc6d0a4-3e87-559b-8bd7-1b679a2db5b7", + "9349b353-53f2-56f8-b571-a05b09335cdf", + "942975b8-0bef-5ae8-9fcb-c37497833fb0", + "9ff94014-afa1-50ab-a4d3-8e9dd0565cc5", + "a21465af-05f3-5fb5-8983-de26932422fb", + "a7ffb869-9dde-5e76-b276-c719c5c143a9", + "b280c6ca-e5f9-5424-a5c1-5676e01c2371", + "b97437c6-cd7a-5a05-b537-b30a17dd936a", + "c59432fe-6092-5ee0-908d-9dbf39476471", + "c9c61f50-06e0-5d17-973d-dcc57cd5cc90", + "cc2d497a-fd15-5455-9ee5-e70eb95811d8", + "d0c8be87-d238-503a-a549-7558a210507f", + "d2026fc2-74a8-5e22-9942-ff3eb68a3677", + "d6f881a4-95da-54e9-ad97-1b8965532629", + "d736c7d6-d369-550a-8ba4-dae223e40bb3", + "df2fd3f8-6bc2-5380-a13f-36643ed35ac7", + "e00594a3-6122-5a6b-b3c2-ecb5506c741d", + "e07c3952-4a1a-5cc7-b7d5-03a01101ce49", + "e7824764-5db9-5384-8198-2fbaea2b10b2", + "fc6763bf-a534-54bf-afcd-57ab285ff07d", + "fc81c5f0-0442-5b88-992b-e5b10f351c59", + "fffff882-78fd-5415-928d-c1ef7fac6576", + "0c4c9e58-ff32-5c00-b82a-d408a4be0183", + "109e2d6b-7e86-5934-93a5-fab56eced84e", + "1853df1f-30f4-5b1a-baac-2dcaf73c7b3a", + "1f8b1898-65f6-5360-99cf-b78a71bd50ec", + "21fe5e8e-cbc2-5dad-b3e8-1df46e167d97", + "229ee94f-d147-50f6-9769-b5bd0c03a084", + "27b47887-baf0-518b-bf87-f5acbf7d0b93", + "2b00270c-79a5-52a5-af96-33346bea531b", + "3f54d890-4ca5-5e36-873b-abb5c92d578c", + "594c61cd-94e0-5c07-890d-edfd520d7df9", + "628cb4fc-fe63-5f6b-b364-6268f26b5740", + "76218d89-68fd-531d-b35b-90c5b769a5ef", + "7fa37e63-db65-5aa7-88f2-31ff4347a787", + "ae53f363-0dec-5a7c-9afd-8fcd1b778ab2", + "b436d0b3-c824-5a96-af6b-2c269816d1cc", + "bac43d3b-910b-5bdc-be9b-f78cf973e1ed", + "bfd4326e-ea65-5269-b5e6-e063a355d1e9", + "c1adbbd0-a762-5ee3-8b9a-5c18af377771", + "c7c248f8-28b8-55be-9023-0991d44021e3", + "c8196d35-2168-5fef-8b03-ba0d139bc00f", + "c8593670-8906-530f-b6a2-3ada77a9c219", + "cf423ea2-8b2e-5a27-93d4-5e8542d9db8d", + "e21d9a54-ae8e-5618-a4f8-67ee22b92638", + "fbde9d5e-c7e9-55db-a2be-497345c491b3", + "ffdbfcd0-d423-5707-a880-0dfbe1400f72" + ] +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/views/diagram_oa_allocation_view.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/views/diagram_oa_allocation_view.arcadia new file mode 100644 index 00000000..0c34ca06 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/views/diagram_oa_allocation_view.arcadia @@ -0,0 +1,100 @@ +diagram oa_allocation_view "1 · OA responsibility and repair traffic" id "103ea62c-ac56-5827-94e7-cf09bca96ccc" { + description "Teaching view: positions and filters do not change ownership or exchange identities."; + layer Oa; + projection Allocation; + routes []; + view_options { + coverage "All"; + exchange_labels "Name"; + hidden_edges []; + participant_categories "All"; + relation_kinds "All"; + work_categories "All"; + work_contexts "All"; + }; +} + +node oa_allocation_view_oa_assess id "5ae1c46d-59a3-50fd-8cc3-b292df21f951" { + collapsed false; + diagram @oa_allocation_view; + element @oa_assess; + position { + x 100.0; + y 170.0; + }; + size { + height 110.0; + width 245.0; + }; +} + +node oa_allocation_view_oa_confirm id "edd74060-ac61-5450-a57c-a6577daa5d50" { + collapsed false; + diagram @oa_allocation_view; + element @oa_confirm; + position { + x 100.0; + y 490.0; + }; + size { + height 110.0; + width 245.0; + }; +} + +node oa_allocation_view_oa_control id "3191e05c-1c7f-5f0e-beb0-5f3bded54c48" { + collapsed false; + diagram @oa_allocation_view; + element @oa_control; + position { + x 60.0; + y 80.0; + }; + size { + height 110.0; + width 245.0; + }; +} + +node oa_allocation_view_oa_repair id "202ebe37-ddb4-5099-8ce9-ec3e895ab9e9" { + collapsed false; + diagram @oa_allocation_view; + element @oa_repair; + position { + x 890.0; + y 170.0; + }; + size { + height 110.0; + width 245.0; + }; +} + +node oa_allocation_view_oa_reset id "7066f78c-9736-5349-b94a-0587331b980e" { + collapsed false; + diagram @oa_allocation_view; + element @oa_reset; + position { + x 100.0; + y 330.0; + }; + size { + height 110.0; + width 245.0; + }; +} + +node oa_allocation_view_oa_technician id "d27f28ef-f10a-5355-9a05-6f2fd39b7de6" { + collapsed false; + diagram @oa_allocation_view; + element @oa_technician; + position { + x 850.0; + y 80.0; + }; + size { + height 110.0; + width 245.0; + }; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/views/diagram_sa_allocation_view.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/views/diagram_sa_allocation_view.arcadia new file mode 100644 index 00000000..b3f72d22 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/views/diagram_sa_allocation_view.arcadia @@ -0,0 +1,100 @@ +diagram sa_allocation_view "2 · SA service boundary and functions" id "35d3c24b-289e-59e5-a610-8333e2c6a4bb" { + description "Teaching view: positions and filters do not change ownership or exchange identities."; + layer Sa; + projection Allocation; + routes []; + view_options { + coverage "All"; + exchange_labels "Name"; + hidden_edges []; + participant_categories "All"; + relation_kinds "All"; + work_categories "All"; + work_contexts "All"; + }; +} + +node sa_allocation_view_sa_assess id "60f6ad74-b69e-5aef-b832-f1bd60b903ae" { + collapsed false; + diagram @sa_allocation_view; + element @sa_assess; + position { + x 100.0; + y 170.0; + }; + size { + height 110.0; + width 245.0; + }; +} + +node sa_allocation_view_sa_confirm id "7e3ba36f-bc68-5520-bdb9-77083bb7bba2" { + collapsed false; + diagram @sa_allocation_view; + element @sa_confirm; + position { + x 100.0; + y 490.0; + }; + size { + height 110.0; + width 245.0; + }; +} + +node sa_allocation_view_sa_control id "8345c76a-8d85-5c31-902e-ec1cd33ed4a3" { + collapsed false; + diagram @sa_allocation_view; + element @sa_control; + position { + x 60.0; + y 80.0; + }; + size { + height 110.0; + width 245.0; + }; +} + +node sa_allocation_view_sa_repair id "34630a18-41b0-5fdd-bff4-ee86e93e8651" { + collapsed false; + diagram @sa_allocation_view; + element @sa_repair; + position { + x 890.0; + y 170.0; + }; + size { + height 110.0; + width 245.0; + }; +} + +node sa_allocation_view_sa_reset id "73406244-ebd7-5995-86c7-e17c73c50b32" { + collapsed false; + diagram @sa_allocation_view; + element @sa_reset; + position { + x 100.0; + y 330.0; + }; + size { + height 110.0; + width 245.0; + }; +} + +node sa_allocation_view_sa_technician id "f7225d1c-e506-505d-bb20-916950269d4b" { + collapsed false; + diagram @sa_allocation_view; + element @sa_technician; + position { + x 850.0; + y 80.0; + }; + size { + height 110.0; + width 245.0; + }; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/views/diagram_sa_capability_view.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/views/diagram_sa_capability_view.arcadia new file mode 100644 index 00000000..0b6b78ed --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/views/diagram_sa_capability_view.arcadia @@ -0,0 +1,72 @@ +diagram sa_capability_view "4 · SA mission and included capability" id "3e6ad194-61b5-584c-b0f0-a78a20af5781" { + description "Teaching view: positions and filters do not change ownership or exchange identities."; + layer Sa; + projection Capabilities; + routes []; + view_options { + coverage "All"; + exchange_labels "Name"; + hidden_edges []; + participant_categories "All"; + relation_kinds "All"; + work_categories "All"; + work_contexts "All"; + }; +} + +node sa_capability_view_sa_control id "41ddb68b-bd2b-5f91-82eb-efde01157828" { + collapsed false; + diagram @sa_capability_view; + element @sa_control; + position { + x 60.0; + y 60.0; + }; + size { + height 110.0; + width 245.0; + }; +} + +node sa_capability_view_sa_mission id "4b814335-bf98-5b68-85d5-ea549766517a" { + collapsed false; + diagram @sa_capability_view; + element @sa_mission; + position { + x 420.0; + y 60.0; + }; + size { + height 110.0; + width 245.0; + }; +} + +node sa_capability_view_sa_restore id "d3bc13f9-7726-5280-83fe-63f391c45afb" { + collapsed false; + diagram @sa_capability_view; + element @sa_restore; + position { + x 420.0; + y 260.0; + }; + size { + height 110.0; + width 245.0; + }; +} + +node sa_capability_view_sa_triage id "069a3fb3-077c-59d8-91da-27b0665143c7" { + collapsed false; + diagram @sa_capability_view; + element @sa_triage; + position { + x 800.0; + y 260.0; + }; + size { + height 110.0; + width 245.0; + }; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/views/diagram_sa_service_view.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/views/diagram_sa_service_view.arcadia new file mode 100644 index 00000000..48576c7b --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/views/diagram_sa_service_view.arcadia @@ -0,0 +1,104 @@ +diagram sa_service_view "3 · SA service conversation only" id "50af4c9b-93ce-5ff5-a1f8-7a81eb97e779" { + description "Teaching view: positions and filters do not change ownership or exchange identities."; + layer Sa; + projection Allocation; + routes []; + view_options { + coverage "All"; + exchange_labels "NameAndItems"; + hidden_edges []; + participant_categories { + Any [@sa_contact_category]; + }; + relation_kinds "All"; + work_categories { + Any []; + }; + work_contexts "All"; + }; +} + +node sa_service_view_sa_assess id "439f1e45-e5ed-567c-978b-4c93ef267db1" { + collapsed false; + diagram @sa_service_view; + element @sa_assess; + position { + x 100.0; + y 170.0; + }; + size { + height 110.0; + width 245.0; + }; +} + +node sa_service_view_sa_confirm id "6f138672-149b-5f88-ab07-7fc413a42262" { + collapsed false; + diagram @sa_service_view; + element @sa_confirm; + position { + x 100.0; + y 490.0; + }; + size { + height 110.0; + width 245.0; + }; +} + +node sa_service_view_sa_control id "f53d4352-b042-56a6-8b3e-c51cd27254f9" { + collapsed false; + diagram @sa_service_view; + element @sa_control; + position { + x 60.0; + y 80.0; + }; + size { + height 110.0; + width 245.0; + }; +} + +node sa_service_view_sa_repair id "ae36489d-6ec8-5f1c-b603-8b497227efba" { + collapsed false; + diagram @sa_service_view; + element @sa_repair; + position { + x 890.0; + y 170.0; + }; + size { + height 110.0; + width 245.0; + }; +} + +node sa_service_view_sa_reset id "d52da4e6-40b7-5dbc-84fb-80c443711c69" { + collapsed false; + diagram @sa_service_view; + element @sa_reset; + position { + x 100.0; + y 330.0; + }; + size { + height 110.0; + width 245.0; + }; +} + +node sa_service_view_sa_technician id "40210589-69f7-5209-b329-10bb83cf615c" { + collapsed false; + diagram @sa_service_view; + element @sa_technician; + position { + x 850.0; + y 80.0; + }; + size { + height 110.0; + width 245.0; + }; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/views/diagram_sa_state_view.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/views/diagram_sa_state_view.arcadia new file mode 100644 index 00000000..6bbb6df1 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/release1/views/diagram_sa_state_view.arcadia @@ -0,0 +1,90 @@ +diagram sa_state_view "5 · SA pressure supervision" id "30d5baf9-6581-5cb6-846a-bcaa1e6cce63" { + description "Teaching view: positions and filters do not change ownership or exchange identities."; + layer Sa; + projection { + StateMachine { + machine @sa_monitor; + }; + }; + routes []; + view_options { + coverage "All"; + exchange_labels "Name"; + hidden_edges []; + participant_categories "All"; + relation_kinds "All"; + work_categories "All"; + work_contexts "All"; + }; +} + +node sa_state_view_sa_monitor id "a676fbb9-0833-59a8-98cf-a10d8f4b7434" { + collapsed false; + diagram @sa_state_view; + element @sa_monitor; + position { + x 30.0; + y 30.0; + }; + size { + height 110.0; + width 245.0; + }; +} + +node sa_state_view_sa_monitor_initial id "5e2326a0-0f6c-5f8d-8a21-fdded18a9281" { + collapsed false; + diagram @sa_state_view; + element @sa_monitor_initial; + position { + x 100.0; + y 200.0; + }; + size { + height 110.0; + width 245.0; + }; +} + +node sa_state_view_sa_monitor_region id "55a74f91-2025-5001-8db8-9566b1dbe783" { + collapsed false; + diagram @sa_state_view; + element @sa_monitor_region; + position { + x 70.0; + y 95.0; + }; + size { + height 110.0; + width 245.0; + }; +} + +node sa_state_view_sa_monitoring id "b3af7b04-5a45-5b82-ab69-7eada4b876f0" { + collapsed false; + diagram @sa_state_view; + element @sa_monitoring; + position { + x 220.0; + y 200.0; + }; + size { + height 110.0; + width 245.0; + }; +} + +node sa_state_view_sa_waiting id "57acbb71-ca86-57fc-ae90-42dad195f0e0" { + collapsed false; + diagram @sa_state_view; + element @sa_waiting; + position { + x 650.0; + y 200.0; + }; + size { + height 110.0; + width 245.0; + }; +} + diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/valid/links.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/valid/links.arcadia new file mode 100644 index 00000000..8f99a9d8 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/valid/links.arcadia @@ -0,0 +1,4 @@ +interaction handoff "Assessment handoff" id "9e8f0000-0000-4000-8000-000000000004" { + description "救援 @assess is prose"; source @assess; target @confirm; + // Another comment @assess is excluded. +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/valid/project.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/valid/project.arcadia new file mode 100644 index 00000000..2771b2bf --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/valid/project.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project navigation_trial "Navigation — 救援" id "9e8f0000-0000-4000-8000-000000000001" { + description "Prose @assess must not be a lexical use."; + include "救援/assess.arcadia"; + include "救援/confirm.arcadia"; + include "links.arcadia"; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/valid/救援/assess.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/valid/救援/assess.arcadia new file mode 100644 index 00000000..2595a7db --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/valid/救援/assess.arcadia @@ -0,0 +1,4 @@ +// Comment @assess must not be a lexical use. +oa_activity assess "Assess 救援 request" id "9e8f0000-0000-4000-8000-000000000002" { + description "Keep @assess as prose, not a use."; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/valid/救援/confirm.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/valid/救援/confirm.arcadia new file mode 100644 index 00000000..2d3ec804 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/fixtures/valid/救援/confirm.arcadia @@ -0,0 +1 @@ +oa_activity confirm "Confirm 救援 response" id "9e8f0000-0000-4000-8000-000000000003" {} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/helper.py b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/helper.py new file mode 100644 index 00000000..467eca6a --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/helper.py @@ -0,0 +1,281 @@ +"""Explicit native-v4 launch/checkpoint helper. Never operates GUI or compiles. + +Launch/check/closed require the corresponding root-observed boundary. Merely +copying a snapshot never claims Apply, Save, recovery or model acceptance. +""" +import argparse +from datetime import datetime, timezone +import hashlib +import json +import os +from pathlib import Path +import re +import shutil +import subprocess +import sys +import zipfile + +ROOT = Path(__file__).resolve().parents[2] +BASE = Path(__file__).resolve().parent +TRIAL = BASE / 'trial' +FIXTURES = BASE / 'fixtures' +ORIGINAL = ROOT / '.local/text-navigation-native-20260911-preparation' +GATES = ROOT / '.local/text-repair-save-20260911' +ZIP_SHA = '213fdb39ea7c3601b4baac674c3ab3ecc863ac44db1b092d922d3e24f26887b7' +SOURCE_COMMIT = '33c6d83e9ba9a5b1310b1b627d7c40affcbcf15c' +FIXTURE_MANIFEST_SHA = '7bccf622c8e2ff42f9e71ac8e5d08ea27b3493c9ebc689ce5f7fbac9aa63f851' +ORIGINAL_MANIFEST_SHA = 'edd4157fc31823f4494dee91862728b87f12ef51c49b8d1fd86a954bc9ecc1ed' +DLL_SHA = 'f45604a12e8bcd839fd86f667c1be1cc7c4f9da2b3c69ff381ac708f0e1ae7d4' +ORACLE_SHA = '967d9ba3c6fb3a7efb410833903ec94556ca2d48a67d5072c8bb160f40a00f9c' +RUNTIME = ROOT / '.local/toolchain/llvm-mingw-20260826-ucrt-x86_64/bin/libunwind.dll' +ORACLE = ROOT / '.local/staged-source-oracle-20260911/staged-source-authoring-contract.exe' +MODELS = ('valid', 'release1', 'ambiguous', 'missing-include', 'recovery') +JOURNAL = '.arcadia-save-project.arcadia.journal' +COMMANDS = { + 'desktop-tests': ['cargo', 'test', '--locked', '--offline', '-p', 'oa-desktop', '--bin', 'arcadia-studio', '--', '--test-threads=1'], + 'desktop-clippy': ['cargo', 'clippy', '--locked', '--offline', '-p', 'oa-desktop', '--all-targets', '--', '-D', 'warnings'], + 'scoped-fmt': ['rustfmt', '--check', '--edition', '2024', '--config', 'skip_children=true', 'crates/oa-desktop/src/app.rs', 'crates/oa-desktop/src/document.rs', 'crates/oa-desktop/src/app/repair_save_state_tests.rs'], + 'diff-check': ['git', 'diff', '--check'], + 'gui-build': ['cargo', 'build', '--locked', '--offline', '-p', 'oa-desktop', '--bin', 'arcadia-studio', '--message-format=json-render-diagnostics'], +} + + +def now(): + return datetime.now(timezone.utc).isoformat() + + +def ordinary(path): + path = Path(path).absolute() + for p in (path, *path.parents): + if p.exists(): + assert not p.is_symlink() and not (getattr(p.lstat(), 'st_file_attributes', 0) & 0x400), str(p) + return path + + +def sha(path): + with ordinary(path).open('rb') as stream: + return hashlib.file_digest(stream, 'sha256').hexdigest() + + +def load(path): + return json.loads(ordinary(path).read_text(encoding='utf-8')) + + +def record(path, value): + ordinary(path) + with path.open('x', encoding='utf-8', newline='\n') as out: + json.dump(value, out, ensure_ascii=False, indent=2) + out.write('\n') + + +def inventory(folder): + ordinary(folder) + result = {} + for p in folder.rglob('*'): + ordinary(p) + if p.is_file(): + result[p.relative_to(folder).as_posix()] = sha(p) + assert len({p.casefold() for p in result}) == len(result) + return result + + +def copy_exact(source, destination): + before = inventory(source) + assert not destination.exists() + shutil.copytree(source, destination) + assert inventory(source) == inventory(destination) == before + return before + + +def git(*args): + return subprocess.check_output(['git', *args], cwd=ROOT) + + +def fixture_admission(): + assert sha(ORIGINAL / 'fixture-manifest.json') == ORIGINAL_MANIFEST_SHA + for item in load(ORIGINAL / 'fixture-manifest.json'): + path = (ORIGINAL / item['path']).resolve() + assert path.is_relative_to(ORIGINAL) + assert sha(path) == item['sha256'] and path.stat().st_size == item['bytes'] + assert sha(BASE / 'fixture-manifest.json') == FIXTURE_MANIFEST_SHA + frozen = load(BASE / 'fixture-manifest.json') + expected = {item['path']: item['sha256'] for item in frozen['files']} + assert len(expected) == len(frozen['files']) and inventory(FIXTURES) == expected + mapping = {'valid': 'valid-baseline', 'release1': 'release1-baseline', 'ambiguous': 'ambiguous-open', 'missing-include': 'missing-include-open'} + for destination, original in mapping.items(): + assert inventory(FIXTURES / destination) == inventory(ORIGINAL / original) + after = FIXTURES / 'recovery-expected-after' + before = FIXTURES / 'recovery-expected-before' + assert inventory(after) == inventory(FIXTURES / 'valid') + a = (after / 'project.arcadia').read_bytes() + b = (before / 'project.arcadia').read_bytes() + title = '"Navigation — 救援"'.encode('utf-8') + old_title = '"Before interrupted save — 救援"'.encode('utf-8') + assert a.count(title) == 1 and b == a.replace(title, old_title, 1) + assert {p: h for p, h in inventory(before).items() if p != 'project.arcadia'} == {p: h for p, h in inventory(after).items() if p != 'project.arcadia'} + recovery = FIXTURES / 'recovery' + assert load(recovery / JOURNAL / 'journal.json') == {'version': 1, 'entry': 'project.arcadia', 'files': [{'path': 'project.arcadia', 'before': True, 'write': True}]} + assert (recovery / JOURNAL / '0.before').read_bytes() == b + assert (recovery / JOURNAL / '0.after').read_bytes() == a + assert {p: h for p, h in inventory(recovery).items() if not p.startswith(JOURNAL + '/')} == inventory(after) + return frozen + + +def gate_admission(source_commit): + assert source_commit == SOURCE_COMMIT + assert git('rev-parse', 'HEAD').decode().strip() == source_commit + manifest = load(GATES / 'inputs1.json') + assert manifest['archiveSha256'] == sha(GATES / 'inputs1.zip') == ZIP_SHA + entries = {e['path']: e for e in manifest['files']} + assert len(entries) == len(manifest['files']) == 500 + selectors = ['crates', '.cargo', 'Cargo.toml', 'Cargo.lock', 'docs', 'examples', 'harness/fixtures'] + assert not git('status', '--porcelain', '--', *selectors).strip(), 'Source must be committed before launch.' + paths = git('ls-files', '-z', '--cached', '--others', '--exclude-standard', '--', *selectors).decode().split('\0')[:-1] + assert sorted(set(paths)) == sorted(entries) + with zipfile.ZipFile(GATES / 'inputs1.zip') as archive: + assert len(archive.namelist()) == len(entries) and set(archive.namelist()) == set(entries) + for name, item in entries.items(): + path = (ROOT / name).resolve() + assert path.is_relative_to(ROOT) + raw = ordinary(path).read_bytes() + assert len(raw) == item['bytes'] and hashlib.sha256(raw).hexdigest() == item['sha256'] + assert archive.read(name) == raw + complete = load(GATES / 'complete.json') + assert complete['archiveSha256'] == ZIP_SHA and complete['inputsUnchanged'] is True + assert complete['gates'] == list(COMMANDS) and complete['sourceHead'] == manifest['head'] + receipts = {} + for name, command in COMMANDS.items(): + receipt = load(GATES / (name + '-result.json')) + assert receipt['exitCode'] == 0 and receipt['inputsUnchanged'] is True and receipt['command'] == command + assert sha(GATES / (name + '-stdout.log')) == receipt['stdoutSha256'] + assert sha(GATES / (name + '-stderr.log')) == receipt['stderrSha256'] + receipts[name] = sha(GATES / (name + '-result.json')) + summaries = re.findall(r'test result: ok\. (\d+) passed; (\d+) failed; (\d+) ignored; (\d+) measured; (\d+) filtered out;', (GATES / 'desktop-tests-stdout.log').read_text(encoding='utf-8')) + assert summaries == [('755', '0', '1', '0', '0')] + build = load(GATES / 'gui-build-result.json')['binary'] + artifact = build['artifact'] + assert artifact['target']['name'] == 'arcadia-studio' and artifact['profile']['test'] is False + assert artifact['profile']['opt_level'] == '0' and artifact['profile']['debug_assertions'] is True + assert Path(artifact['executable']).resolve() == Path(build['path']).resolve() + assert Path(build['path']).resolve().is_relative_to(ROOT / '.local/target-gnullvm') + binary = GATES / 'gui-repair.exe' + assert sha(binary) == build['sha256'] and binary.stat().st_size == build['bytes'] + assert sha(RUNTIME) == DLL_SHA and sha(ORACLE) == ORACLE_SHA + return binary, build, receipts + + +def environment(): + parent = {k.upper(): v for k, v in os.environ.items()} + names = ('SystemRoot', 'SystemDrive', 'ProgramData', 'ALLUSERSPROFILE', 'PUBLIC') + standard = {name: parent[name.upper()] for name in names} + assert all(value and '%' not in value for value in standard.values()) + system = standard['SystemRoot'] + return {**standard, 'WINDIR': system, 'PATH': system + '\\System32;' + system, + 'USERPROFILE': str(TRIAL / 'profile'), 'LOCALAPPDATA': str(TRIAL / 'profile/local'), + 'APPDATA': str(TRIAL / 'profile/roaming'), 'TEMP': str(TRIAL / 'tmp'), 'TMP': str(TRIAL / 'tmp')} + + +def launch(args): + assert not TRIAL.exists(), 'A previous trial must remain untouched.' + frozen = fixture_admission() + binary, build, receipts = gate_admission(args.source_commit) + ordinary(BASE) + TRIAL.mkdir() + for name in ('bin', 'profile/local', 'profile/roaming', 'profile/Desktop', 'tmp', 'screenshots', 'checkpoints'): + (TRIAL / name).mkdir(parents=True) + for source, name, checksum in ((binary, 'arcadia-studio.exe', build['sha256']), (RUNTIME, 'libunwind.dll', DLL_SHA)): + with source.open('rb') as src, (TRIAL / 'bin' / name).open('xb') as dst: + shutil.copyfileobj(src, dst) + assert sha(source) == sha(TRIAL / 'bin' / name) == checksum + sources = {model: copy_exact(FIXTURES / model, TRIAL / model) for model in MODELS} + record(TRIAL / 'source-before.json', sources) + record(TRIAL / 'binary-before.json', inventory(TRIAL / 'bin')) + record(TRIAL / 'admission.json', {'atUtc': now(), 'sourceCommit': args.source_commit, 'inputArchiveSha256': ZIP_SHA, + 'gateReceipts': receipts, 'completeReceiptSha256': sha(GATES / 'complete.json'), 'fixtureManifestSha256': sha(BASE / 'fixture-manifest.json'), + 'originalFixtureManifestSha256': ORIGINAL_MANIFEST_SHA, 'binary': build, 'scope': 'Gate/fixture admission only, not native acceptance.'}) + env = environment() + startup = subprocess.STARTUPINFO() + startup.dwFlags |= subprocess.STARTF_USESHOWWINDOW + startup.wShowWindow = 0 + with (TRIAL / 'stdout.log').open('xb') as out, (TRIAL / 'stderr.log').open('xb') as err: + process = subprocess.Popen([str(TRIAL / 'bin/arcadia-studio.exe')], cwd=TRIAL / 'bin', env=env, stdout=out, stderr=err, startupinfo=startup) + receipt = {'atUtc': now(), 'pid': process.pid, 'sourceCommit': args.source_commit, 'binarySha256': build['sha256'], + 'guiBuildReceiptSha256': receipts['gui-build'], 'environment': env, 'modelEntries': {m: str(TRIAL / m / 'project.arcadia') for m in MODELS}, + 'scope': 'Explicitly launched identified Windows GUI; native results pending.'} + record(TRIAL / 'launch.json', receipt) + print(json.dumps(receipt, ensure_ascii=False, indent=2)) + + +def checkpoint(args, check): + assert args.label and re.fullmatch('[a-z0-9][a-z0-9-]{0,79}', args.label) + if check: + assert args.after_visible_save, 'Oracle check requires root-observed successful Save.' + fixture_admission() + launch_receipt = load(TRIAL / 'launch.json') + before_bin = load(TRIAL / 'binary-before.json') + assert inventory(TRIAL / 'bin') == before_bin and before_bin['arcadia-studio.exe'] == launch_receipt['binarySha256'] + folder = TRIAL / 'checkpoints' / args.label + assert not folder.exists() + folder.mkdir() + source = TRIAL / args.model + files = copy_exact(source, folder / 'sources') + journals = {p: h for p, h in files.items() if p.split('/')[0].startswith('.arcadia-save-')} + state = {'atUtc': now(), 'label': args.label, 'model': args.model, 'files': files, + 'arcadiaFiles': sum(p.endswith('.arcadia') for p in files), 'journalFiles': journals, + 'pendingJournalExists': (source / JOURNAL).exists(), 'binaryFilesUnchanged': True, + 'scope': 'On-disk snapshot only; no accepted graph, Apply, Save or recovery success inferred.'} + record(folder / 'snapshot.json', state) + if not check: + print(json.dumps(state, ensure_ascii=False, indent=2)) + return + assert not journals, 'Final saved oracle cannot bypass a retained transaction journal.' + assert sha(ORACLE) == ORACLE_SHA + expected = FIXTURES / ('release1' if args.model == 'release1' else 'recovery-expected-after' if args.model == 'recovery' else 'valid') + env = environment() + env['PATH'] = str(TRIAL / 'bin') + ';' + env['PATH'] + command = [str(ORACLE), 'same', str(expected / 'project.arcadia'), str(folder / 'sources/project.arcadia')] + result = subprocess.run(command, capture_output=True, env=env) + with (folder / 'oracle.stdout.log').open('xb') as out: + out.write(result.stdout) + with (folder / 'oracle.stderr.log').open('xb') as err: + err.write(result.stderr) + receipt = {'atUtc': now(), 'command': command, 'exitCode': result.returncode, 'oracleSha256': ORACLE_SHA, + 'afterVisibleSaveConfirmedByCaller': True, 'model': args.model, 'expected': str(expected), 'files': files, + 'binaryFilesUnchanged': inventory(TRIAL / 'bin') == before_bin, + 'scope': 'Actual saved oracle result; complete Project/identity/reachable and physical Arcadia equality only if exitCode is zero.'} + record(folder / 'oracle.json', receipt) + print(result.stdout.decode('utf-8', errors='replace')) + print(json.dumps(receipt, ensure_ascii=False, indent=2)) + assert receipt['binaryFilesUnchanged'] + if result.returncode: + print(result.stderr.decode('utf-8', errors='replace')) + raise SystemExit(result.returncode) + + +def closed(args): + assert args.observed_absent, 'Root must first verify the process/window is absent.' + before = load(TRIAL / 'binary-before.json') + after = inventory(TRIAL / 'bin') + record(TRIAL / 'binary-after-close.json', {'atUtc': now(), 'files': after, 'unchanged': before == after, + 'absenceObservedByCaller': True, 'scope': 'Binary readback only, not a process/exit-code observation by this helper.'}) + assert before == after + print(json.dumps({'unchanged': True, 'files': len(after)})) + + +if __name__ == '__main__': + sys.stdout.reconfigure(encoding='utf-8') + sys.stderr.reconfigure(encoding='utf-8') + parser = argparse.ArgumentParser() + parser.add_argument('action', choices=('launch', 'snapshot', 'check', 'closed')) + parser.add_argument('--source-commit') + parser.add_argument('--model', choices=MODELS, default='valid') + parser.add_argument('--label') + parser.add_argument('--after-visible-save', action='store_true') + parser.add_argument('--observed-absent', action='store_true') + arguments = parser.parse_args() + if arguments.action == 'launch': + launch(arguments) + elif arguments.action in ('snapshot', 'check'): + checkpoint(arguments, arguments.action == 'check') + else: + closed(arguments) diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/manifest.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/manifest.json new file mode 100644 index 00000000..32a037a4 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/manifest.json @@ -0,0 +1,998 @@ +{ + "scope": "Exact native repair/save evidence; no binaries or final release claim", + "payloadFiles": 166, + "payloadBytes": 2421715, + "files": [ + { + "path": ".gitattributes", + "bytes": 58, + "sha256": "0a38b8af3fddb7ebb709c8c891e57657b0f5c8fe54a86e63ae4f4c3bfac4808c" + }, + { + "path": ".gitignore", + "bytes": 10, + "sha256": "1b7c01abb4d9e16cc4187667732237bf0ee6cee7bbad14c3b860b7216bc9c4b8" + }, + { + "path": "excluded-duplicates.json", + "bytes": 6127, + "sha256": "ae4c44205c6ddc2d1bcddfabfc788065070e323e86632469368af687c0cfe73e" + }, + { + "path": "fixture-manifest.json", + "bytes": 12194, + "sha256": "7bccf622c8e2ff42f9e71ac8e5d08ea27b3493c9ebc689ce5f7fbac9aa63f851", + "original": ".local/text-repair-save-native-20260911/fixture-manifest.json" + }, + { + "path": "fixtures/ambiguous/links.arcadia", + "bytes": 211, + "sha256": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "original": ".local/text-repair-save-native-20260911/fixtures/ambiguous/links.arcadia" + }, + { + "path": "fixtures/ambiguous/project.arcadia", + "bytes": 277, + "sha256": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + "original": ".local/text-repair-save-native-20260911/fixtures/ambiguous/project.arcadia" + }, + { + "path": "fixtures/ambiguous/救援/assess.arcadia", + "bytes": 192, + "sha256": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "original": ".local/text-repair-save-native-20260911/fixtures/ambiguous/救援/assess.arcadia" + }, + { + "path": "fixtures/ambiguous/救援/confirm.arcadia", + "bytes": 186, + "sha256": "ba3e222bdc7dfa94e4f1b16df091447835da6b5bea8a72701e12e077e77319a6", + "original": ".local/text-repair-save-native-20260911/fixtures/ambiguous/救援/confirm.arcadia" + }, + { + "path": "fixtures/missing-include/links.arcadia", + "bytes": 211, + "sha256": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "original": ".local/text-repair-save-native-20260911/fixtures/missing-include/links.arcadia" + }, + { + "path": "fixtures/missing-include/project.arcadia", + "bytes": 320, + "sha256": "573357995f0a68fef39aa3eef3125e2271242d1ce01607c129624399b77e682e", + "original": ".local/text-repair-save-native-20260911/fixtures/missing-include/project.arcadia" + }, + { + "path": "fixtures/missing-include/救援/assess.arcadia", + "bytes": 192, + "sha256": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "original": ".local/text-repair-save-native-20260911/fixtures/missing-include/救援/assess.arcadia" + }, + { + "path": "fixtures/missing-include/救援/confirm.arcadia", + "bytes": 92, + "sha256": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919", + "original": ".local/text-repair-save-native-20260911/fixtures/missing-include/救援/confirm.arcadia" + }, + { + "path": "fixtures/recovery/.arcadia-save-project.arcadia.journal/0.after", + "bytes": 277, + "sha256": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + "original": ".local/text-repair-save-native-20260911/fixtures/recovery/.arcadia-save-project.arcadia.journal/0.after" + }, + { + "path": "fixtures/recovery/.arcadia-save-project.arcadia.journal/0.before", + "bytes": 290, + "sha256": "6e9abf4ecf24175b9f04a8db11fe182146581059628eb8769e869597401f262e", + "original": ".local/text-repair-save-native-20260911/fixtures/recovery/.arcadia-save-project.arcadia.journal/0.before" + }, + { + "path": "fixtures/recovery/.arcadia-save-project.arcadia.journal/journal.json", + "bytes": 104, + "sha256": "08e19098159f9a539f33754ef8d8bbb5e653744baa0aa9784403e019498d4c42", + "original": ".local/text-repair-save-native-20260911/fixtures/recovery/.arcadia-save-project.arcadia.journal/journal.json" + }, + { + "path": "fixtures/recovery/links.arcadia", + "bytes": 211, + "sha256": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "original": ".local/text-repair-save-native-20260911/fixtures/recovery/links.arcadia" + }, + { + "path": "fixtures/recovery/project.arcadia", + "bytes": 277, + "sha256": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + "original": ".local/text-repair-save-native-20260911/fixtures/recovery/project.arcadia" + }, + { + "path": "fixtures/recovery/救援/assess.arcadia", + "bytes": 192, + "sha256": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "original": ".local/text-repair-save-native-20260911/fixtures/recovery/救援/assess.arcadia" + }, + { + "path": "fixtures/recovery/救援/confirm.arcadia", + "bytes": 92, + "sha256": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919", + "original": ".local/text-repair-save-native-20260911/fixtures/recovery/救援/confirm.arcadia" + }, + { + "path": "fixtures/recovery-expected-after/links.arcadia", + "bytes": 211, + "sha256": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "original": ".local/text-repair-save-native-20260911/fixtures/recovery-expected-after/links.arcadia" + }, + { + "path": "fixtures/recovery-expected-after/project.arcadia", + "bytes": 277, + "sha256": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + "original": ".local/text-repair-save-native-20260911/fixtures/recovery-expected-after/project.arcadia" + }, + { + "path": "fixtures/recovery-expected-after/救援/assess.arcadia", + "bytes": 192, + "sha256": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "original": ".local/text-repair-save-native-20260911/fixtures/recovery-expected-after/救援/assess.arcadia" + }, + { + "path": "fixtures/recovery-expected-after/救援/confirm.arcadia", + "bytes": 92, + "sha256": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919", + "original": ".local/text-repair-save-native-20260911/fixtures/recovery-expected-after/救援/confirm.arcadia" + }, + { + "path": "fixtures/recovery-expected-before/links.arcadia", + "bytes": 211, + "sha256": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "original": ".local/text-repair-save-native-20260911/fixtures/recovery-expected-before/links.arcadia" + }, + { + "path": "fixtures/recovery-expected-before/project.arcadia", + "bytes": 290, + "sha256": "6e9abf4ecf24175b9f04a8db11fe182146581059628eb8769e869597401f262e", + "original": ".local/text-repair-save-native-20260911/fixtures/recovery-expected-before/project.arcadia" + }, + { + "path": "fixtures/recovery-expected-before/救援/assess.arcadia", + "bytes": 192, + "sha256": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "original": ".local/text-repair-save-native-20260911/fixtures/recovery-expected-before/救援/assess.arcadia" + }, + { + "path": "fixtures/recovery-expected-before/救援/confirm.arcadia", + "bytes": 92, + "sha256": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919", + "original": ".local/text-repair-save-native-20260911/fixtures/recovery-expected-before/救援/confirm.arcadia" + }, + { + "path": "fixtures/release1/evidence/repair-check.md", + "bytes": 1419, + "sha256": "f4db17bdca4ecbb1bf0caef01b2da5f1f7f798ab3152b648ce6dd8696a6a68e5", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/evidence/repair-check.md" + }, + { + "path": "fixtures/release1/expected-diagnostics.json", + "bytes": 288, + "sha256": "3700393d76b940cfc076bf52861bd7b1f43370f8eabce3594531bd0bf1fc851e", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/expected-diagnostics.json" + }, + { + "path": "fixtures/release1/model.json", + "bytes": 134520, + "sha256": "ef0ef4006c3e09d5db6e1b621256b3f7d6642f3a7b09cc34607cfbcca830c727", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/model.json" + }, + { + "path": "fixtures/release1/model.rs", + "bytes": 28762, + "sha256": "15f30f6bde655808fe754665c26d560e36f2a9bad340f346b09137d0d05045f5", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/model.rs" + }, + { + "path": "fixtures/release1/oa/activities/activity_oa_restore_work.arcadia", + "bytes": 1307, + "sha256": "83e73d0a013d5c3e1a4af0d9139ab0cfa362d25a846671fc2dac59181061a9d4", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/oa/activities/activity_oa_restore_work.arcadia" + }, + { + "path": "fixtures/release1/oa/behavior/process_oa_assessment_procedure.arcadia", + "bytes": 697, + "sha256": "172c32c044ef4b5bc58a1f4635cc81f48dabb4014479b47dce7b25fedf2dbd0d", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/oa/behavior/process_oa_assessment_procedure.arcadia" + }, + { + "path": "fixtures/release1/oa/behavior/process_oa_field_procedure.arcadia", + "bytes": 1781, + "sha256": "d2552dc5383e2e91cb302a790364e197f663c2edc013a2ab1978789825c9c324", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/oa/behavior/process_oa_field_procedure.arcadia" + }, + { + "path": "fixtures/release1/oa/behavior/process_oa_response.arcadia", + "bytes": 3225, + "sha256": "cf86f46fa5c5d70592ef43f1bc1cb4d968efd8add384ba88036bef6b88aa4abc", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/oa/behavior/process_oa_response.arcadia" + }, + { + "path": "fixtures/release1/oa/behavior/scenario_oa_conversation.arcadia", + "bytes": 1795, + "sha256": "b25be524e98a35ebac5e4481b7609c027b32baf9605e8097f807560f94a77ca6", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/oa/behavior/scenario_oa_conversation.arcadia" + }, + { + "path": "fixtures/release1/oa/behavior/scenario_oa_full_scenario.arcadia", + "bytes": 1261, + "sha256": "00a1edf2c9707a0eb62ac070c2d02467874f2c9c1f273cc6ddb53d6d65999a1c", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/oa/behavior/scenario_oa_full_scenario.arcadia" + }, + { + "path": "fixtures/release1/oa/behavior/state_machine_oa_monitor.arcadia", + "bytes": 2022, + "sha256": "447c9ad1359f4a31ecf975ad07c0b08d8e7e03191fb0858e2fc56f377b223cd5", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/oa/behavior/state_machine_oa_monitor.arcadia" + }, + { + "path": "fixtures/release1/oa/capabilities.arcadia", + "bytes": 781, + "sha256": "fc8012e5554350b12e1cb80080f8feab80d933c9b33c0f2a7bb500cb7d609936", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/oa/capabilities.arcadia" + }, + { + "path": "fixtures/release1/oa/model.arcadia", + "bytes": 661, + "sha256": "f7cf914766ea73ec53b85e32d117ea9a9dba52d3e038246863541ae7069b1a15", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/oa/model.arcadia" + }, + { + "path": "fixtures/release1/oa/participants.arcadia", + "bytes": 1834, + "sha256": "951764c14179f27c10e315acf2ea37d1fff54c77b8441e23addd239e8c715ce3", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/oa/participants.arcadia" + }, + { + "path": "fixtures/release1/oa/types.arcadia", + "bytes": 788, + "sha256": "9d0396fb82dd5733edd8d1cf52f968ca84906927c704f9cf0944a7fae215cf49", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/oa/types.arcadia" + }, + { + "path": "fixtures/release1/project.arcadia", + "bytes": 1958, + "sha256": "b2674e6bf77cfe0f6f0ba79c81d2e96d92f39c02ca2c6266d80e91723bfb9fda", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/project.arcadia" + }, + { + "path": "fixtures/release1/README.md", + "bytes": 11137, + "sha256": "113cfb1cf38a98b51bff60442d86a35d636a3d80ef206bece7d53d0aae67f2d5", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/README.md" + }, + { + "path": "fixtures/release1/sa/behavior/process_sa_assessment_procedure.arcadia", + "bytes": 706, + "sha256": "73928ced61c06cbc08728d7956676a50fd4c05aa5b7f1ff4f29ce27a0b0f2088", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/sa/behavior/process_sa_assessment_procedure.arcadia" + }, + { + "path": "fixtures/release1/sa/behavior/process_sa_field_procedure.arcadia", + "bytes": 1790, + "sha256": "886d462af83110cbfa55dd232a667ea1446761234471357cbb878794e98e8768", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/sa/behavior/process_sa_field_procedure.arcadia" + }, + { + "path": "fixtures/release1/sa/behavior/process_sa_response.arcadia", + "bytes": 3234, + "sha256": "041785fc22842423822431bd5e6e8d16094ebd0716965e7c765fb8c1d7549e8a", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/sa/behavior/process_sa_response.arcadia" + }, + { + "path": "fixtures/release1/sa/behavior/scenario_sa_conversation.arcadia", + "bytes": 2127, + "sha256": "97276f5757ee9aa12a0dbd9d3ccd58174b3091162bb8bcce357cec20a45f5d85", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/sa/behavior/scenario_sa_conversation.arcadia" + }, + { + "path": "fixtures/release1/sa/behavior/scenario_sa_full_scenario.arcadia", + "bytes": 1256, + "sha256": "e12fc406b99d60a2f7768aaa0b25ba560e8605f0b8e37f3a7cdd3b8443562b74", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/sa/behavior/scenario_sa_full_scenario.arcadia" + }, + { + "path": "fixtures/release1/sa/behavior/state_machine_sa_monitor.arcadia", + "bytes": 2022, + "sha256": "05ce29af99424c491c47fe2450dc6f5f8ce995511c01ec7e17bb5855be3c9736", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/sa/behavior/state_machine_sa_monitor.arcadia" + }, + { + "path": "fixtures/release1/sa/capabilities.arcadia", + "bytes": 781, + "sha256": "b6912fb3ece439912345fa71724acd462e716a1e5a88203a1058a5c3b2c20a4f", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/sa/capabilities.arcadia" + }, + { + "path": "fixtures/release1/sa/functions/function_sa_audit_thresholds.arcadia", + "bytes": 297, + "sha256": "e5a04325d52183956dca814dd90f4e56c96c6b7db0f4f202f203ecb49c3e0f4f", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/sa/functions/function_sa_audit_thresholds.arcadia" + }, + { + "path": "fixtures/release1/sa/functions/function_sa_restore_work.arcadia", + "bytes": 2576, + "sha256": "fddeb67308051325041fee641fe758ddf43345b7c47b66d433616ad07fdccdd6", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/sa/functions/function_sa_restore_work.arcadia" + }, + { + "path": "fixtures/release1/sa/model.arcadia", + "bytes": 661, + "sha256": "d431509251acb859fbb98733b6d18add952495e10a78703fbe8f31e40bc083c4", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/sa/model.arcadia" + }, + { + "path": "fixtures/release1/sa/participants.arcadia", + "bytes": 4012, + "sha256": "780d2eb08b217b67b55febb3d34846f727b8ee9018df6c5741748647e36b2ff8", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/sa/participants.arcadia" + }, + { + "path": "fixtures/release1/sa/types.arcadia", + "bytes": 1227, + "sha256": "101fc0fbd99f1101514aa7b6da4f8e535aae0bb94c9e2b9e7e6c151135b28660", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/sa/types.arcadia" + }, + { + "path": "fixtures/release1/traceability.arcadia", + "bytes": 29506, + "sha256": "48a96f543456c9b5a5798fc795594e4119147fe45f11a6f109f141b7f514560f", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/traceability.arcadia" + }, + { + "path": "fixtures/release1/transition-before.json", + "bytes": 35801, + "sha256": "2253e6434f741687e22327c37d520ed15c043bc36025498650bc2366bb6a874d", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/transition-before.json" + }, + { + "path": "fixtures/release1/transition-request.json", + "bytes": 4276, + "sha256": "43b9a22e5f95ad3bc0ebd2478ead0e14406854abc989ae94ded9367b013d812a", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/transition-request.json" + }, + { + "path": "fixtures/release1/views/diagram_oa_allocation_view.arcadia", + "bytes": 2176, + "sha256": "dfc0eb61e0e2aa5bda45524571fbfa3494f44ce19696f3e15e07438074a07bc7", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/views/diagram_oa_allocation_view.arcadia" + }, + { + "path": "fixtures/release1/views/diagram_sa_allocation_view.arcadia", + "bytes": 2173, + "sha256": "b78b43a26a82efb8fbd5374b09c329fa341f57b29f635d397b9ef8aede71d389", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/views/diagram_sa_allocation_view.arcadia" + }, + { + "path": "fixtures/release1/views/diagram_sa_capability_view.arcadia", + "bytes": 1620, + "sha256": "75e8dc9fb30f25d6f8fd3c6b595593ab4f98958a25798f961e336e0fac557649", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/views/diagram_sa_capability_view.arcadia" + }, + { + "path": "fixtures/release1/views/diagram_sa_service_view.arcadia", + "bytes": 2209, + "sha256": "b08c84f3ea633e7c78dfdad3272f75415f6256cf3614b6d99bfd4f0269076c9b", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/views/diagram_sa_service_view.arcadia" + }, + { + "path": "fixtures/release1/views/diagram_sa_state_view.arcadia", + "bytes": 1931, + "sha256": "5f42f4c605e57b817d8400ed21f2b14bfc4e1592aebe941ff113767504c2b869", + "original": ".local/text-repair-save-native-20260911/fixtures/release1/views/diagram_sa_state_view.arcadia" + }, + { + "path": "fixtures/valid/links.arcadia", + "bytes": 211, + "sha256": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "original": ".local/text-repair-save-native-20260911/fixtures/valid/links.arcadia" + }, + { + "path": "fixtures/valid/project.arcadia", + "bytes": 277, + "sha256": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + "original": ".local/text-repair-save-native-20260911/fixtures/valid/project.arcadia" + }, + { + "path": "fixtures/valid/救援/assess.arcadia", + "bytes": 192, + "sha256": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "original": ".local/text-repair-save-native-20260911/fixtures/valid/救援/assess.arcadia" + }, + { + "path": "fixtures/valid/救援/confirm.arcadia", + "bytes": 92, + "sha256": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919", + "original": ".local/text-repair-save-native-20260911/fixtures/valid/救援/confirm.arcadia" + }, + { + "path": "helper.py", + "bytes": 15136, + "sha256": "dc783418b68855ebba7c45fd5fee473f92e1b63b08454aec80120aaa045a395e", + "original": ".local/text-repair-save-native-20260911/helper.py" + }, + { + "path": "preparation-README.md", + "bytes": 6252, + "sha256": "3f7e55c5d67b5f316f61f94b7f9bf1c68775b1d7656daf518d4af38e57dab708", + "original": ".local/text-repair-save-native-20260911/README.md" + }, + { + "path": "README.md", + "bytes": 1956, + "sha256": "7fb02bde5bc0a464e8b4659a7451a866eda1fe9f45957e58cf542bae09d6220c" + }, + { + "path": "trial/admission.json", + "bytes": 2361, + "sha256": "f75e79380fc6d45448c55ae7696e918b0403bf0d3e383edbddc2a41e449c1efc", + "original": ".local/text-repair-save-native-20260911/trial/admission.json" + }, + { + "path": "trial/binary-after-close.json", + "bytes": 394, + "sha256": "2b7d1fc6217063bbcd44eee7d774e7d19fe3d9f8cfb8ed7a7d135fe595b45534", + "original": ".local/text-repair-save-native-20260911/trial/binary-after-close.json" + }, + { + "path": "trial/binary-before.json", + "bytes": 182, + "sha256": "2c317e1af71965c9ec8fb0541b8af0792069440da55af943706cd181e3a06dd0", + "original": ".local/text-repair-save-native-20260911/trial/binary-before.json" + }, + { + "path": "trial/checkpoints/duplicate-after-apply-before-save/snapshot.json", + "bytes": 720, + "sha256": "ecae4639320a193d1aa19cbd24bd5a36dad77e649f44c67e43ceb5ac13dbb208", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/duplicate-after-apply-before-save/snapshot.json" + }, + { + "path": "trial/checkpoints/duplicate-after-apply-before-save/sources/links.arcadia", + "bytes": 211, + "sha256": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/duplicate-after-apply-before-save/sources/links.arcadia" + }, + { + "path": "trial/checkpoints/duplicate-after-apply-before-save/sources/project.arcadia", + "bytes": 277, + "sha256": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/duplicate-after-apply-before-save/sources/project.arcadia" + }, + { + "path": "trial/checkpoints/duplicate-after-apply-before-save/sources/救援/assess.arcadia", + "bytes": 192, + "sha256": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/duplicate-after-apply-before-save/sources/救援/assess.arcadia" + }, + { + "path": "trial/checkpoints/duplicate-after-apply-before-save/sources/救援/confirm.arcadia", + "bytes": 186, + "sha256": "ba3e222bdc7dfa94e4f1b16df091447835da6b5bea8a72701e12e077e77319a6", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/duplicate-after-apply-before-save/sources/救援/confirm.arcadia" + }, + { + "path": "trial/checkpoints/duplicate-final-saved/oracle.json", + "bytes": 1364, + "sha256": "2363b932e2f827ebba764bb2cc9562151122360d188a3a236800b3e0d8e3c6a9", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/duplicate-final-saved/oracle.json" + }, + { + "path": "trial/checkpoints/duplicate-final-saved/oracle.stderr.log", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/duplicate-final-saved/oracle.stderr.log" + }, + { + "path": "trial/checkpoints/duplicate-final-saved/oracle.stdout.log", + "bytes": 86, + "sha256": "5ac622cfcc05242dca7c1368aba77293d42ab9ce5e56df7b2aedd2287d66d5e7", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/duplicate-final-saved/oracle.stdout.log" + }, + { + "path": "trial/checkpoints/duplicate-final-saved/snapshot.json", + "bytes": 708, + "sha256": "706fce991a90267671ba031a3f837e8bfade907390d1864ca2e496ce590647a4", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/duplicate-final-saved/snapshot.json" + }, + { + "path": "trial/checkpoints/duplicate-final-saved/sources/links.arcadia", + "bytes": 211, + "sha256": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/duplicate-final-saved/sources/links.arcadia" + }, + { + "path": "trial/checkpoints/duplicate-final-saved/sources/project.arcadia", + "bytes": 277, + "sha256": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/duplicate-final-saved/sources/project.arcadia" + }, + { + "path": "trial/checkpoints/duplicate-final-saved/sources/救援/assess.arcadia", + "bytes": 192, + "sha256": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/duplicate-final-saved/sources/救援/assess.arcadia" + }, + { + "path": "trial/checkpoints/duplicate-final-saved/sources/救援/confirm.arcadia", + "bytes": 92, + "sha256": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/duplicate-final-saved/sources/救援/confirm.arcadia" + }, + { + "path": "trial/checkpoints/missing-after-apply-before-save/snapshot.json", + "bytes": 724, + "sha256": "ceab583e0cb00023b2780a707e587ec4da924299146902179f84abc0c9600e67", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/missing-after-apply-before-save/snapshot.json" + }, + { + "path": "trial/checkpoints/missing-after-apply-before-save/sources/links.arcadia", + "bytes": 211, + "sha256": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/missing-after-apply-before-save/sources/links.arcadia" + }, + { + "path": "trial/checkpoints/missing-after-apply-before-save/sources/project.arcadia", + "bytes": 320, + "sha256": "573357995f0a68fef39aa3eef3125e2271242d1ce01607c129624399b77e682e", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/missing-after-apply-before-save/sources/project.arcadia" + }, + { + "path": "trial/checkpoints/missing-after-apply-before-save/sources/救援/assess.arcadia", + "bytes": 192, + "sha256": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/missing-after-apply-before-save/sources/救援/assess.arcadia" + }, + { + "path": "trial/checkpoints/missing-after-apply-before-save/sources/救援/confirm.arcadia", + "bytes": 92, + "sha256": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/missing-after-apply-before-save/sources/救援/confirm.arcadia" + }, + { + "path": "trial/checkpoints/missing-final-saved/oracle.json", + "bytes": 1368, + "sha256": "4de9ebf80205ca4ea33871040417e03681bbae0771eb2a9d306e8d4a6a4a5d31", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/missing-final-saved/oracle.json" + }, + { + "path": "trial/checkpoints/missing-final-saved/oracle.stderr.log", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/missing-final-saved/oracle.stderr.log" + }, + { + "path": "trial/checkpoints/missing-final-saved/oracle.stdout.log", + "bytes": 86, + "sha256": "5ac622cfcc05242dca7c1368aba77293d42ab9ce5e56df7b2aedd2287d66d5e7", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/missing-final-saved/oracle.stdout.log" + }, + { + "path": "trial/checkpoints/missing-final-saved/snapshot.json", + "bytes": 712, + "sha256": "4dc5db77fe671b5f2919adf42d1f0d84da5efea20a459c9b6d27a55b4a126349", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/missing-final-saved/snapshot.json" + }, + { + "path": "trial/checkpoints/missing-final-saved/sources/links.arcadia", + "bytes": 211, + "sha256": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/missing-final-saved/sources/links.arcadia" + }, + { + "path": "trial/checkpoints/missing-final-saved/sources/project.arcadia", + "bytes": 277, + "sha256": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/missing-final-saved/sources/project.arcadia" + }, + { + "path": "trial/checkpoints/missing-final-saved/sources/救援/assess.arcadia", + "bytes": 192, + "sha256": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/missing-final-saved/sources/救援/assess.arcadia" + }, + { + "path": "trial/checkpoints/missing-final-saved/sources/救援/confirm.arcadia", + "bytes": 92, + "sha256": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/missing-final-saved/sources/救援/confirm.arcadia" + }, + { + "path": "trial/checkpoints/recovery-after-rollback-before-save/snapshot.json", + "bytes": 721, + "sha256": "7484c4ec2eda264e0196bfe85eb0b9846a38f19b69158d513dc0210094904f69", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/recovery-after-rollback-before-save/snapshot.json" + }, + { + "path": "trial/checkpoints/recovery-after-rollback-before-save/sources/links.arcadia", + "bytes": 211, + "sha256": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/recovery-after-rollback-before-save/sources/links.arcadia" + }, + { + "path": "trial/checkpoints/recovery-after-rollback-before-save/sources/project.arcadia", + "bytes": 290, + "sha256": "6e9abf4ecf24175b9f04a8db11fe182146581059628eb8769e869597401f262e", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/recovery-after-rollback-before-save/sources/project.arcadia" + }, + { + "path": "trial/checkpoints/recovery-after-rollback-before-save/sources/救援/assess.arcadia", + "bytes": 192, + "sha256": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/recovery-after-rollback-before-save/sources/救援/assess.arcadia" + }, + { + "path": "trial/checkpoints/recovery-after-rollback-before-save/sources/救援/confirm.arcadia", + "bytes": 92, + "sha256": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/recovery-after-rollback-before-save/sources/救援/confirm.arcadia" + }, + { + "path": "trial/checkpoints/recovery-final-saved/oracle.json", + "bytes": 1398, + "sha256": "963c1bca595e90d60217274d5fbc4e97638719c06772a3de4d9bd86279533783", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/recovery-final-saved/oracle.json" + }, + { + "path": "trial/checkpoints/recovery-final-saved/oracle.stderr.log", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/recovery-final-saved/oracle.stderr.log" + }, + { + "path": "trial/checkpoints/recovery-final-saved/oracle.stdout.log", + "bytes": 86, + "sha256": "5ac622cfcc05242dca7c1368aba77293d42ab9ce5e56df7b2aedd2287d66d5e7", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/recovery-final-saved/oracle.stdout.log" + }, + { + "path": "trial/checkpoints/recovery-final-saved/snapshot.json", + "bytes": 706, + "sha256": "8351d03c03847bed08dd714a94588fe69c88099cb26a4a8ffc92688b75bcad1f", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/recovery-final-saved/snapshot.json" + }, + { + "path": "trial/checkpoints/recovery-final-saved/sources/links.arcadia", + "bytes": 211, + "sha256": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/recovery-final-saved/sources/links.arcadia" + }, + { + "path": "trial/checkpoints/recovery-final-saved/sources/project.arcadia", + "bytes": 277, + "sha256": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/recovery-final-saved/sources/project.arcadia" + }, + { + "path": "trial/checkpoints/recovery-final-saved/sources/救援/assess.arcadia", + "bytes": 192, + "sha256": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/recovery-final-saved/sources/救援/assess.arcadia" + }, + { + "path": "trial/checkpoints/recovery-final-saved/sources/救援/confirm.arcadia", + "bytes": 92, + "sha256": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/recovery-final-saved/sources/救援/confirm.arcadia" + }, + { + "path": "trial/checkpoints/recovery-open-journal/snapshot.json", + "bytes": 1446, + "sha256": "a7b7ac6ffd4e71ebe7fd6917930be53fd050611551e8038af3fd35aace61d922", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/recovery-open-journal/snapshot.json" + }, + { + "path": "trial/checkpoints/recovery-open-journal/sources/.arcadia-save-project.arcadia.journal/0.after", + "bytes": 277, + "sha256": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/recovery-open-journal/sources/.arcadia-save-project.arcadia.journal/0.after" + }, + { + "path": "trial/checkpoints/recovery-open-journal/sources/.arcadia-save-project.arcadia.journal/0.before", + "bytes": 290, + "sha256": "6e9abf4ecf24175b9f04a8db11fe182146581059628eb8769e869597401f262e", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/recovery-open-journal/sources/.arcadia-save-project.arcadia.journal/0.before" + }, + { + "path": "trial/checkpoints/recovery-open-journal/sources/.arcadia-save-project.arcadia.journal/journal.json", + "bytes": 104, + "sha256": "08e19098159f9a539f33754ef8d8bbb5e653744baa0aa9784403e019498d4c42", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/recovery-open-journal/sources/.arcadia-save-project.arcadia.journal/journal.json" + }, + { + "path": "trial/checkpoints/recovery-open-journal/sources/links.arcadia", + "bytes": 211, + "sha256": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/recovery-open-journal/sources/links.arcadia" + }, + { + "path": "trial/checkpoints/recovery-open-journal/sources/project.arcadia", + "bytes": 277, + "sha256": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/recovery-open-journal/sources/project.arcadia" + }, + { + "path": "trial/checkpoints/recovery-open-journal/sources/救援/assess.arcadia", + "bytes": 192, + "sha256": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/recovery-open-journal/sources/救援/assess.arcadia" + }, + { + "path": "trial/checkpoints/recovery-open-journal/sources/救援/confirm.arcadia", + "bytes": 92, + "sha256": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919", + "original": ".local/text-repair-save-native-20260911/trial/checkpoints/recovery-open-journal/sources/救援/confirm.arcadia" + }, + { + "path": "trial/launch.json", + "bytes": 2044, + "sha256": "3b567e93d7982b1a5a88f3119cb752aa93f43c0412c33f4f7d593e45295a727f", + "original": ".local/text-repair-save-native-20260911/trial/launch.json" + }, + { + "path": "trial/screenshots/01-launch-0.jpg", + "bytes": 98106, + "sha256": "8d1f6bc97af2d1ee216d7503482c703aa9014310b21a22dd8212b4c142af55aa", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/01-launch-0.jpg" + }, + { + "path": "trial/screenshots/01-launch.json", + "bytes": 525, + "sha256": "db1e18994dbad6909612b79c79216ab6c320df998a881d8e14721381cd141c9e", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/01-launch.json" + }, + { + "path": "trial/screenshots/02-valid-clean-0.jpg", + "bytes": 92308, + "sha256": "9510ce5aa81599f28ea60bb6d9e68b164231dda48c1832587fec1a47667169ee", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/02-valid-clean-0.jpg" + }, + { + "path": "trial/screenshots/02-valid-clean.json", + "bytes": 535, + "sha256": "83c534909aff299f8b4ad43fc32f62d903e93d9c281b72ac9ae9bb7becbedd07", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/02-valid-clean.json" + }, + { + "path": "trial/screenshots/03-missing-open-unsaved-0.jpg", + "bytes": 105988, + "sha256": "2ebecc16d2476f62c2b7c8de3d51bcfdb2582afe8a62e605a725316074deab9a", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/03-missing-open-unsaved-0.jpg" + }, + { + "path": "trial/screenshots/03-missing-open-unsaved.json", + "bytes": 558, + "sha256": "98466f94f5730c5b82dcb46563c51e372abf0661caab795640be11e659d1b7cd", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/03-missing-open-unsaved.json" + }, + { + "path": "trial/screenshots/04-missing-draft-repaired-0.jpg", + "bytes": 95265, + "sha256": "b980bbcc0c888568cc6481603244ab1fbda831c70375a3b5d216c450e755a513", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/04-missing-draft-repaired-0.jpg" + }, + { + "path": "trial/screenshots/04-missing-draft-repaired.json", + "bytes": 564, + "sha256": "dae9ad3aaf193a0e534010543b797d181b7c20bf559e15d8183c1b89247e6887", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/04-missing-draft-repaired.json" + }, + { + "path": "trial/screenshots/05-missing-applied-unsaved-0.jpg", + "bytes": 109414, + "sha256": "01585f17872e616d249e3b4b27ec5a537deab4a6211ce784ab24e60f6b226628", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/05-missing-applied-unsaved-0.jpg" + }, + { + "path": "trial/screenshots/05-missing-applied-unsaved.json", + "bytes": 566, + "sha256": "2a6c3ce1c9d16312fd7bf8c854ed55640103bc506894e2e093a30d0a7eff7e5e", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/05-missing-applied-unsaved.json" + }, + { + "path": "trial/screenshots/06-missing-close-warning-0.jpg", + "bytes": 94940, + "sha256": "1a9dec53e4f9788a362a756e2194a219276d9fce2bec6b2bf12cf8e2c5bbef87", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/06-missing-close-warning-0.jpg" + }, + { + "path": "trial/screenshots/06-missing-close-warning.json", + "bytes": 562, + "sha256": "022b6a876355e10b44fc845f8804a6f9e5b3e0f2838e243a72814a32201005ed", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/06-missing-close-warning.json" + }, + { + "path": "trial/screenshots/07-missing-close-cancel-retained-0.jpg", + "bytes": 109378, + "sha256": "8e747d03928beee1f9faa843a83d57983d187951346a9a1506ac242ee8ddcf3c", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/07-missing-close-cancel-retained-0.jpg" + }, + { + "path": "trial/screenshots/07-missing-close-cancel-retained.json", + "bytes": 578, + "sha256": "e087c2a5814d15dceb893c8024a3b3e08ee0917ce8f7a308cb6a36e71c01e522", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/07-missing-close-cancel-retained.json" + }, + { + "path": "trial/screenshots/08-missing-save-clean-0.jpg", + "bytes": 108509, + "sha256": "41a06b12ef86af7523fd358590f5b6549cb9adf8c41755c5a8270b8af6c1d9ba", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/08-missing-save-clean-0.jpg" + }, + { + "path": "trial/screenshots/08-missing-save-clean.json", + "bytes": 554, + "sha256": "c768a5b99dff60c8c9ebb60c0f525b7229fe999b9b1d7841facfd9c6ebf6e6b3", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/08-missing-save-clean.json" + }, + { + "path": "trial/screenshots/09-duplicate-open-unsaved-0.jpg", + "bytes": 95252, + "sha256": "9a87a03ad2dee3f43e2acb31a1dcde395becef3c8f978433bcfcfbc71a7fd557", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/09-duplicate-open-unsaved-0.jpg" + }, + { + "path": "trial/screenshots/09-duplicate-open-unsaved.json", + "bytes": 562, + "sha256": "97e23b27beb7bd204c757cca61333681d2ba589825076de7be1dfc117daa6682", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/09-duplicate-open-unsaved.json" + }, + { + "path": "trial/screenshots/10-duplicate-draft-repaired-0.jpg", + "bytes": 88663, + "sha256": "1b0a974b05a4c85f5de1b5b9e95094d3b3c1c5616ecff0766e7169d81396f02f", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/10-duplicate-draft-repaired-0.jpg" + }, + { + "path": "trial/screenshots/10-duplicate-draft-repaired.json", + "bytes": 568, + "sha256": "adfcdf5d618fab0d986eaac5e7d6bd0f9585fb0ccbb0eeb6b46a4f294fa23d9f", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/10-duplicate-draft-repaired.json" + }, + { + "path": "trial/screenshots/11-duplicate-applied-unsaved-0.jpg", + "bytes": 102903, + "sha256": "b3d17ed76a16dc855ca95e8e283eb0111de2be5398fcf02cd4336ca5f414d61c", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/11-duplicate-applied-unsaved-0.jpg" + }, + { + "path": "trial/screenshots/11-duplicate-applied-unsaved.json", + "bytes": 570, + "sha256": "444fa705198bd3e1748d6d5484f9d995a7e7d0fe34bd69cfecf4b3e10ed12c60", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/11-duplicate-applied-unsaved.json" + }, + { + "path": "trial/screenshots/12-duplicate-close-warning-0.jpg", + "bytes": 88560, + "sha256": "9317ca25f5d435c159078dbfc98e36267b43d1083e3c9a6c2d38cc719259e25c", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/12-duplicate-close-warning-0.jpg" + }, + { + "path": "trial/screenshots/12-duplicate-close-warning.json", + "bytes": 566, + "sha256": "aa72a337b80f18ef2fc0866974cbec783f6e195821fa7eacc7b72c9f441d2f5a", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/12-duplicate-close-warning.json" + }, + { + "path": "trial/screenshots/13-duplicate-close-cancel-retained-0.jpg", + "bytes": 102838, + "sha256": "195dc2813ef7149aedc1257c4c8855ca6e0efd01c602c5125f76b3d505b5f59f", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/13-duplicate-close-cancel-retained-0.jpg" + }, + { + "path": "trial/screenshots/13-duplicate-close-cancel-retained.json", + "bytes": 582, + "sha256": "564c40b4bef60b9aacc1d08c1b966a0ae9d5808e82796c000d4d61b0417628b0", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/13-duplicate-close-cancel-retained.json" + }, + { + "path": "trial/screenshots/14-duplicate-save-clean-0.jpg", + "bytes": 101477, + "sha256": "24c974e3b1c856f1c934d2d45d00bf015c6a04b90ef334206c2299d079aeefd8", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/14-duplicate-save-clean-0.jpg" + }, + { + "path": "trial/screenshots/14-duplicate-save-clean.json", + "bytes": 558, + "sha256": "c4d6e41fae579accf66a75c094d3b63e7127dec63407e6c44c392aef58db6f8c", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/14-duplicate-save-clean.json" + }, + { + "path": "trial/screenshots/15-recovery-open-journal-0.jpg", + "bytes": 107952, + "sha256": "d8e8876d40a850ea32ba737f9c47b66d097edbf22f90fb582ad4d1d909e73e41", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/15-recovery-open-journal-0.jpg" + }, + { + "path": "trial/screenshots/15-recovery-open-journal.json", + "bytes": 560, + "sha256": "430bf13fa81682a57b145be952c2b7bc50457ad45c83f7c9d0646aced779e4ae", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/15-recovery-open-journal.json" + }, + { + "path": "trial/screenshots/16-recovery-applied-before-rollback-0.jpg", + "bytes": 106619, + "sha256": "46705dc1982c76ac3acae57ec942b1c500ad0e26fd7281b46cd547cc89180158", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/16-recovery-applied-before-rollback-0.jpg" + }, + { + "path": "trial/screenshots/16-recovery-applied-before-rollback.json", + "bytes": 582, + "sha256": "85d94f75cd4b3c5a9db83135e83f9e97d524c0d1dfac951869c312f6c9978029", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/16-recovery-applied-before-rollback.json" + }, + { + "path": "trial/screenshots/17-recovery-rollback-retained-unsaved-0.jpg", + "bytes": 112006, + "sha256": "ece8db936fe1988ad2b9317a089f7fd5f0a003ae8fa7dffe81d8c81cfaad14aa", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/17-recovery-rollback-retained-unsaved-0.jpg" + }, + { + "path": "trial/screenshots/17-recovery-rollback-retained-unsaved.json", + "bytes": 588, + "sha256": "4dbbff55837296a7c805867ec4d7f51693731b72bd485410d04de9a04189ba92", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/17-recovery-rollback-retained-unsaved.json" + }, + { + "path": "trial/screenshots/18-recovery-close-warning-0.jpg", + "bytes": 96969, + "sha256": "a7099e91e5e2533369acb54b6c408af7df8f362530a6f7a911644c0262632f02", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/18-recovery-close-warning-0.jpg" + }, + { + "path": "trial/screenshots/18-recovery-close-warning.json", + "bytes": 564, + "sha256": "479fbd9495f587393e490acce4cbc9a8639153644bad76572410bd8adf276aa2", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/18-recovery-close-warning.json" + }, + { + "path": "trial/screenshots/19-recovery-close-cancel-retained-0.jpg", + "bytes": 111806, + "sha256": "31978d3377959b20d9f659e632af58b5a12c090e2be0886307232997d24d231a", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/19-recovery-close-cancel-retained-0.jpg" + }, + { + "path": "trial/screenshots/19-recovery-close-cancel-retained.json", + "bytes": 580, + "sha256": "36437e199ff8e59cc35db1f2a530e1bdd0361c85595adcee62d8028421d3a2b1", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/19-recovery-close-cancel-retained.json" + }, + { + "path": "trial/screenshots/20-recovery-save-clean-0.jpg", + "bytes": 108733, + "sha256": "3078e0cf554be48a20cc61978ff30fdb44e590a80022f87813b0a59843edb8ce", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/20-recovery-save-clean-0.jpg" + }, + { + "path": "trial/screenshots/20-recovery-save-clean.json", + "bytes": 556, + "sha256": "3e1d80cb7c03b0ef4b900669f0a6e0ad0961069388a8698d06c324c0d8e72832", + "original": ".local/text-repair-save-native-20260911/trial/screenshots/20-recovery-save-clean.json" + }, + { + "path": "trial/source-before.json", + "bytes": 5971, + "sha256": "9f6a4304855c9d7871c774727dbea28c49d8bb5f6c10d6814ec9fd852ad61ac5", + "original": ".local/text-repair-save-native-20260911/trial/source-before.json" + }, + { + "path": "trial/stderr.log", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "original": ".local/text-repair-save-native-20260911/trial/stderr.log" + }, + { + "path": "trial/stdout.log", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "original": ".local/text-repair-save-native-20260911/trial/stdout.log" + }, + { + "path": "verify_archive.py", + "bytes": 3646, + "sha256": "2c0b8aeaae220d2af077a8dc76e25c223fe7923132ad69009c329d74c077f566" + } + ] +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/preparation-README.md b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/preparation-README.md new file mode 100644 index 00000000..3e10df68 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/preparation-README.md @@ -0,0 +1,41 @@ +# Repair/save native-v4 preparation — no launch performed + +Owner: Codex-9e8r6t /root/release_audit. Root operates the GUI and owns acceptance. `helper.py` is an adaptation of the reviewed native_v3 helper, with fail-closed gate/source admission and separate snapshot versus saved-oracle actions. No helper action, application, oracle, compiler or recovery operation was run during preparation. Only fixture copies/static checks and Python AST parsing were performed. Existing v3 data and packaging adapters were untouched. + +The new source commit is `33c6d83e9ba9a5b1310b1b627d7c40affcbcf15c`. Its 500 raw inputs must match `.local/text-repair-save-20260911/inputs1.json` and ZIP SHA256 `213fdb39ea7c3601b4baac674c3ab3ecc863ac44db1b092d922d3e24f26887b7`. Future launch requires all five exact successful gate commands/results, their stdout/stderr hashes, complete.json and the actual 755/0/1 full-suite log. The manifest's captured precommit HEAD remains eeeaa126; the launch commit is the committed byte-equivalent correction above. + +The GUI hash is read from successful `gui-build-result.json`, never copied from old v3. The helper uses root's preserved `.local/text-repair-save-20260911/gui-repair.exe`, verifies its size/hash against the actual binary record and copies it exclusively to trial/bin. Current receipt identifies B183EF31…B168848, 113,206,272 bytes, but this abbreviation is documentation only; executable admission uses the full actual receipt. F456 DLL and oracle967 hashes remain explicitly pinned. + +## Paths and future commands + +Base preparation directory already exists. **trial/** does not: launch refuses to overwrite it. Trial models, private profile/Desktop/APPDATA/TEMP, bin and checkpoints are created only on an explicitly authorized launch. The child environment has Windows-only PATH plus standard SystemRoot/SystemDrive/ProgramData/ALLUSERSPROFILE/PUBLIC values; no arbitrary parent credential/proxy environment is inherited. Python stdout/stderr are configured UTF-8 to avoid the earlier cp1252 print failure. + +Use `C:/Users/User/.cache/codex-runtimes/codex-primary-runtime/dependencies/python/python.exe` from repository cwd. Examples below are **not executed**: + +```text +python .local/text-repair-save-native-20260911/helper.py launch --source-commit 33c6d83e9ba9a5b1310b1b627d7c40affcbcf15c +python .local/text-repair-save-native-20260911/helper.py snapshot --model missing-include --label missing-before-apply +python .local/text-repair-save-native-20260911/helper.py snapshot --model missing-include --label missing-after-apply-before-save +python .local/text-repair-save-native-20260911/helper.py check --model missing-include --label missing-final-saved --after-visible-save +python .local/text-repair-save-native-20260911/helper.py closed --observed-absent +``` + +Replace `python` with that full bundled executable. Available models: valid, release1, ambiguous, missing-include, recovery. A unique lowercase/hyphen label is required for every snapshot/check. Snapshot creates an exact disk copy and hash/journal receipt only, with no oracle or accepted-model claim. Check additionally requires root's explicit confirmation that a successful Save was observed, then invokes the pinned complete `same` oracle; valid/repaired ambiguity/repaired missing cases compare with exact valid four-file baseline, engineering with its release1 baseline, recovery with expected AFTER. Oracle stdout/stderr/status are retained even on failure. It refuses remaining save-journal files in a final acceptance checkpoint. + +`closed --observed-absent` is allowed only after root independently observes the relevant process/window absent. It records binary readback, not its own process observation or exit code. The helper never closes or kills an application. + +## Frozen fixtures and optional recovery sequence + +`fixtures/` has 64 files / 300,070 bytes. `fixture-manifest.json` SHA256 is `7bccf622c8e2ff42f9e71ac8e5d08ea27b3493c9ebc689ce5f7fbac9aa63f851`. The four ordinary model groups are byte-exact copies from the original pinned fixture manifest `edd4157f…ecc1ed`: valid (four files), ambiguous (four), missing include (four), release1 (37 total including 30 Arcadia). There are no profile/executable copies in the prepared fixtures. + +Recovery adds three small directories: + +* `recovery-expected-after`: exact valid four-file baseline; project title `Navigation — 救援`. +* `recovery-expected-before`: only the entry project-title string changes to `Before interrupted save — 救援`; IDs, alias, includes, descriptions and the other three files are byte-identical. +* `recovery`: disk initially equals AFTER, plus `.arcadia-save-project.arcadia.journal/{journal.json,0.before,0.after}`. The v1 journal has exactly one entry with path project.arcadia, before=true and write=true. The stage files are exact BEFORE/AFTER. This mirrors the accepted v1 contract in source_files.rs and repair_save_state_tests.rs; no core recovery was run in preparation. + +Entry BEFORE SHA256: `6e9abf4ecf24175b9f04a8db11fe182146581059628eb8769e869597401f262e`. AFTER SHA256: `79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414`. + +Optional native evaluator: first open the valid AFTER project; then open trial/recovery/project.arcadia. Inspect the interrupted-save banner and snapshot the disk/journal. Explicitly Apply the displayed AFTER source as in the headless regression, then invoke actual Recover. Recovery should remove the journal and restore BEFORE on disk while retaining the accepted AFTER graph/source. Snapshot immediately: this is **not saved acceptance**. Verify visible Unsaved changes and the close/cancel guard without discarding; explicitly Save the retained AFTER model. Only then run `check --model recovery --label recovery-final-saved --after-visible-save`, whose oracle expects exact AFTER. Do not call the helper to perform Recover or fabricate the post-Recover state. + +No native first-save deletion fixture is included; the headless tests cover it. The helper does not validate arbitrary alternate GUI builds or later source edits: any changed freeze needs a separately reviewed new helper/trial. Old navigation packaging adapters remain historical and must not be executed for this repaired candidate. diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/readback.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/readback.json new file mode 100644 index 00000000..5188e6f6 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/readback.json @@ -0,0 +1,8 @@ +{ + "atUtc": "2026-09-11T21:04:09.115973+00:00", + "originalsMatchArchive": true, + "originalFilesCopied": 161, + "manifestSha256": "3a32afc0d93dafdead2066a7d1fddaf5fedddf99cf4a9b481cd7691007b6f9d9", + "excludedDuplicateFiles": 53, + "observedProcessExitCode": null +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/admission.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/admission.json new file mode 100644 index 00000000..8760fbed --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/admission.json @@ -0,0 +1,53 @@ +{ + "atUtc": "2026-09-11T20:52:45.624917+00:00", + "sourceCommit": "33c6d83e9ba9a5b1310b1b627d7c40affcbcf15c", + "inputArchiveSha256": "213fdb39ea7c3601b4baac674c3ab3ecc863ac44db1b092d922d3e24f26887b7", + "gateReceipts": { + "desktop-tests": "e6873ad9ac0bd3451785608618c7dbc11aceb05858fb4eee21aff472c14ef9c5", + "desktop-clippy": "b3ea09aa7097400077f13e809c44e908469c37e844c47b73ef25813c484279b9", + "scoped-fmt": "9906fb9bde7e0f6a9037ea0b2ccb61f4b9c61c7741c69a52ce995850259ac020", + "diff-check": "cec5b925f98e43f9c8d29e0ef99b3b0d817f7433f4d5464acda974b8bd516a81", + "gui-build": "044588599aad6a8b879288050fb2eda204854cf3048c3deef164367eac22bbdf" + }, + "completeReceiptSha256": "20034a0ccfd935fbcac0218ff0f1e370899e5f8a32b6dde35aebb62a7d0b98c8", + "fixtureManifestSha256": "7bccf622c8e2ff42f9e71ac8e5d08ea27b3493c9ebc689ce5f7fbac9aa63f851", + "originalFixtureManifestSha256": "edd4157fc31823f4494dee91862728b87f12ef51c49b8d1fd86a954bc9ecc1ed", + "binary": { + "path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\target-gnullvm\\debug\\arcadia-studio.exe", + "bytes": 113206272, + "sha256": "b183ef31f16b3986538b3f2aba8435eab45978635c47f99ca01be6e72b168848", + "artifact": { + "reason": "compiler-artifact", + "package_id": "path+file:///C:/Users/User/Documents/Git/ARCADIA-Studio/crates/oa-desktop#0.2.0", + "manifest_path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\crates\\oa-desktop\\Cargo.toml", + "target": { + "kind": [ + "bin" + ], + "crate_types": [ + "bin" + ], + "name": "arcadia-studio", + "src_path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\crates\\oa-desktop\\src\\main.rs", + "edition": "2024", + "doc": true, + "doctest": false, + "test": true + }, + "profile": { + "opt_level": "0", + "debuginfo": 0, + "debug_assertions": true, + "overflow_checks": true, + "test": false + }, + "features": [], + "filenames": [ + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\target-gnullvm\\debug\\arcadia-studio.exe" + ], + "executable": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\target-gnullvm\\debug\\arcadia-studio.exe", + "fresh": false + } + }, + "scope": "Gate/fixture admission only, not native acceptance." +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/binary-after-close.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/binary-after-close.json new file mode 100644 index 00000000..f9425065 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/binary-after-close.json @@ -0,0 +1,10 @@ +{ + "atUtc": "2026-09-11T20:59:59.044480+00:00", + "files": { + "arcadia-studio.exe": "b183ef31f16b3986538b3f2aba8435eab45978635c47f99ca01be6e72b168848", + "libunwind.dll": "f45604a12e8bcd839fd86f667c1be1cc7c4f9da2b3c69ff381ac708f0e1ae7d4" + }, + "unchanged": true, + "absenceObservedByCaller": true, + "scope": "Binary readback only, not a process/exit-code observation by this helper." +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/binary-before.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/binary-before.json new file mode 100644 index 00000000..90033765 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/binary-before.json @@ -0,0 +1,4 @@ +{ + "arcadia-studio.exe": "b183ef31f16b3986538b3f2aba8435eab45978635c47f99ca01be6e72b168848", + "libunwind.dll": "f45604a12e8bcd839fd86f667c1be1cc7c4f9da2b3c69ff381ac708f0e1ae7d4" +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-after-apply-before-save/snapshot.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-after-apply-before-save/snapshot.json new file mode 100644 index 00000000..fc8ecf5e --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-after-apply-before-save/snapshot.json @@ -0,0 +1,16 @@ +{ + "atUtc": "2026-09-11T20:57:26.123783+00:00", + "label": "duplicate-after-apply-before-save", + "model": "ambiguous", + "files": { + "links.arcadia": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "project.arcadia": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + "救援/assess.arcadia": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "救援/confirm.arcadia": "ba3e222bdc7dfa94e4f1b16df091447835da6b5bea8a72701e12e077e77319a6" + }, + "arcadiaFiles": 4, + "journalFiles": {}, + "pendingJournalExists": false, + "binaryFilesUnchanged": true, + "scope": "On-disk snapshot only; no accepted graph, Apply, Save or recovery success inferred." +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-after-apply-before-save/sources/links.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-after-apply-before-save/sources/links.arcadia new file mode 100644 index 00000000..8f99a9d8 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-after-apply-before-save/sources/links.arcadia @@ -0,0 +1,4 @@ +interaction handoff "Assessment handoff" id "9e8f0000-0000-4000-8000-000000000004" { + description "救援 @assess is prose"; source @assess; target @confirm; + // Another comment @assess is excluded. +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-after-apply-before-save/sources/project.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-after-apply-before-save/sources/project.arcadia new file mode 100644 index 00000000..2771b2bf --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-after-apply-before-save/sources/project.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project navigation_trial "Navigation — 救援" id "9e8f0000-0000-4000-8000-000000000001" { + description "Prose @assess must not be a lexical use."; + include "救援/assess.arcadia"; + include "救援/confirm.arcadia"; + include "links.arcadia"; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-after-apply-before-save/sources/救援/assess.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-after-apply-before-save/sources/救援/assess.arcadia new file mode 100644 index 00000000..2595a7db --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-after-apply-before-save/sources/救援/assess.arcadia @@ -0,0 +1,4 @@ +// Comment @assess must not be a lexical use. +oa_activity assess "Assess 救援 request" id "9e8f0000-0000-4000-8000-000000000002" { + description "Keep @assess as prose, not a use."; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-after-apply-before-save/sources/救援/confirm.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-after-apply-before-save/sources/救援/confirm.arcadia new file mode 100644 index 00000000..20e53049 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-after-apply-before-save/sources/救援/confirm.arcadia @@ -0,0 +1,2 @@ +oa_activity confirm "Confirm 救援 response" id "9e8f0000-0000-4000-8000-000000000003" {} +oa_activity assess "Duplicate draft assessment" id "9e8f0000-0000-4000-8000-000000000005" {} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-final-saved/oracle.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-final-saved/oracle.json new file mode 100644 index 00000000..5127eef3 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-final-saved/oracle.json @@ -0,0 +1,22 @@ +{ + "atUtc": "2026-09-11T20:57:52.527850+00:00", + "command": [ + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\staged-source-oracle-20260911\\staged-source-authoring-contract.exe", + "same", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\fixtures\\valid\\project.arcadia", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\checkpoints\\duplicate-final-saved\\sources\\project.arcadia" + ], + "exitCode": 0, + "oracleSha256": "967d9ba3c6fb3a7efb410833903ec94556ca2d48a67d5072c8bb160f40a00f9c", + "afterVisibleSaveConfirmedByCaller": true, + "model": "ambiguous", + "expected": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\fixtures\\valid", + "files": { + "links.arcadia": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "project.arcadia": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + "救援/assess.arcadia": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "救援/confirm.arcadia": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919" + }, + "binaryFilesUnchanged": true, + "scope": "Actual saved oracle result; complete Project/identity/reachable and physical Arcadia equality only if exitCode is zero." +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-final-saved/oracle.stderr.log b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-final-saved/oracle.stderr.log new file mode 100644 index 00000000..e69de29b diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-final-saved/oracle.stdout.log b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-final-saved/oracle.stdout.log new file mode 100644 index 00000000..dfcbc2b3 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-final-saved/oracle.stdout.log @@ -0,0 +1 @@ +PASS exact model/identity/4 reachable sources; 4 exact disk files (0 proven retained) diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-final-saved/snapshot.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-final-saved/snapshot.json new file mode 100644 index 00000000..cf62d417 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-final-saved/snapshot.json @@ -0,0 +1,16 @@ +{ + "atUtc": "2026-09-11T20:57:52.358626+00:00", + "label": "duplicate-final-saved", + "model": "ambiguous", + "files": { + "links.arcadia": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "project.arcadia": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + "救援/assess.arcadia": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "救援/confirm.arcadia": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919" + }, + "arcadiaFiles": 4, + "journalFiles": {}, + "pendingJournalExists": false, + "binaryFilesUnchanged": true, + "scope": "On-disk snapshot only; no accepted graph, Apply, Save or recovery success inferred." +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-final-saved/sources/links.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-final-saved/sources/links.arcadia new file mode 100644 index 00000000..8f99a9d8 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-final-saved/sources/links.arcadia @@ -0,0 +1,4 @@ +interaction handoff "Assessment handoff" id "9e8f0000-0000-4000-8000-000000000004" { + description "救援 @assess is prose"; source @assess; target @confirm; + // Another comment @assess is excluded. +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-final-saved/sources/project.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-final-saved/sources/project.arcadia new file mode 100644 index 00000000..2771b2bf --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-final-saved/sources/project.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project navigation_trial "Navigation — 救援" id "9e8f0000-0000-4000-8000-000000000001" { + description "Prose @assess must not be a lexical use."; + include "救援/assess.arcadia"; + include "救援/confirm.arcadia"; + include "links.arcadia"; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-final-saved/sources/救援/assess.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-final-saved/sources/救援/assess.arcadia new file mode 100644 index 00000000..2595a7db --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-final-saved/sources/救援/assess.arcadia @@ -0,0 +1,4 @@ +// Comment @assess must not be a lexical use. +oa_activity assess "Assess 救援 request" id "9e8f0000-0000-4000-8000-000000000002" { + description "Keep @assess as prose, not a use."; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-final-saved/sources/救援/confirm.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-final-saved/sources/救援/confirm.arcadia new file mode 100644 index 00000000..2d3ec804 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/duplicate-final-saved/sources/救援/confirm.arcadia @@ -0,0 +1 @@ +oa_activity confirm "Confirm 救援 response" id "9e8f0000-0000-4000-8000-000000000003" {} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-after-apply-before-save/snapshot.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-after-apply-before-save/snapshot.json new file mode 100644 index 00000000..84d1d5cb --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-after-apply-before-save/snapshot.json @@ -0,0 +1,16 @@ +{ + "atUtc": "2026-09-11T20:55:26.325080+00:00", + "label": "missing-after-apply-before-save", + "model": "missing-include", + "files": { + "links.arcadia": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "project.arcadia": "573357995f0a68fef39aa3eef3125e2271242d1ce01607c129624399b77e682e", + "救援/assess.arcadia": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "救援/confirm.arcadia": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919" + }, + "arcadiaFiles": 4, + "journalFiles": {}, + "pendingJournalExists": false, + "binaryFilesUnchanged": true, + "scope": "On-disk snapshot only; no accepted graph, Apply, Save or recovery success inferred." +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-after-apply-before-save/sources/links.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-after-apply-before-save/sources/links.arcadia new file mode 100644 index 00000000..8f99a9d8 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-after-apply-before-save/sources/links.arcadia @@ -0,0 +1,4 @@ +interaction handoff "Assessment handoff" id "9e8f0000-0000-4000-8000-000000000004" { + description "救援 @assess is prose"; source @assess; target @confirm; + // Another comment @assess is excluded. +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-after-apply-before-save/sources/project.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-after-apply-before-save/sources/project.arcadia new file mode 100644 index 00000000..2d5c664f --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-after-apply-before-save/sources/project.arcadia @@ -0,0 +1,8 @@ +arcadia 7; +project navigation_trial "Navigation — 救援" id "9e8f0000-0000-4000-8000-000000000001" { + description "Prose @assess must not be a lexical use."; + include "救援/assess.arcadia"; + include "救援/confirm.arcadia"; + include "links.arcadia"; + include "missing/not-loaded.arcadia"; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-after-apply-before-save/sources/救援/assess.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-after-apply-before-save/sources/救援/assess.arcadia new file mode 100644 index 00000000..2595a7db --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-after-apply-before-save/sources/救援/assess.arcadia @@ -0,0 +1,4 @@ +// Comment @assess must not be a lexical use. +oa_activity assess "Assess 救援 request" id "9e8f0000-0000-4000-8000-000000000002" { + description "Keep @assess as prose, not a use."; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-after-apply-before-save/sources/救援/confirm.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-after-apply-before-save/sources/救援/confirm.arcadia new file mode 100644 index 00000000..2d3ec804 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-after-apply-before-save/sources/救援/confirm.arcadia @@ -0,0 +1 @@ +oa_activity confirm "Confirm 救援 response" id "9e8f0000-0000-4000-8000-000000000003" {} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-final-saved/oracle.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-final-saved/oracle.json new file mode 100644 index 00000000..0ec22094 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-final-saved/oracle.json @@ -0,0 +1,22 @@ +{ + "atUtc": "2026-09-11T20:55:51.960147+00:00", + "command": [ + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\staged-source-oracle-20260911\\staged-source-authoring-contract.exe", + "same", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\fixtures\\valid\\project.arcadia", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\checkpoints\\missing-final-saved\\sources\\project.arcadia" + ], + "exitCode": 0, + "oracleSha256": "967d9ba3c6fb3a7efb410833903ec94556ca2d48a67d5072c8bb160f40a00f9c", + "afterVisibleSaveConfirmedByCaller": true, + "model": "missing-include", + "expected": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\fixtures\\valid", + "files": { + "links.arcadia": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "project.arcadia": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + "救援/assess.arcadia": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "救援/confirm.arcadia": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919" + }, + "binaryFilesUnchanged": true, + "scope": "Actual saved oracle result; complete Project/identity/reachable and physical Arcadia equality only if exitCode is zero." +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-final-saved/oracle.stderr.log b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-final-saved/oracle.stderr.log new file mode 100644 index 00000000..e69de29b diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-final-saved/oracle.stdout.log b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-final-saved/oracle.stdout.log new file mode 100644 index 00000000..dfcbc2b3 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-final-saved/oracle.stdout.log @@ -0,0 +1 @@ +PASS exact model/identity/4 reachable sources; 4 exact disk files (0 proven retained) diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-final-saved/snapshot.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-final-saved/snapshot.json new file mode 100644 index 00000000..a97115bf --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-final-saved/snapshot.json @@ -0,0 +1,16 @@ +{ + "atUtc": "2026-09-11T20:55:51.723485+00:00", + "label": "missing-final-saved", + "model": "missing-include", + "files": { + "links.arcadia": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "project.arcadia": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + "救援/assess.arcadia": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "救援/confirm.arcadia": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919" + }, + "arcadiaFiles": 4, + "journalFiles": {}, + "pendingJournalExists": false, + "binaryFilesUnchanged": true, + "scope": "On-disk snapshot only; no accepted graph, Apply, Save or recovery success inferred." +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-final-saved/sources/links.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-final-saved/sources/links.arcadia new file mode 100644 index 00000000..8f99a9d8 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-final-saved/sources/links.arcadia @@ -0,0 +1,4 @@ +interaction handoff "Assessment handoff" id "9e8f0000-0000-4000-8000-000000000004" { + description "救援 @assess is prose"; source @assess; target @confirm; + // Another comment @assess is excluded. +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-final-saved/sources/project.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-final-saved/sources/project.arcadia new file mode 100644 index 00000000..2771b2bf --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-final-saved/sources/project.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project navigation_trial "Navigation — 救援" id "9e8f0000-0000-4000-8000-000000000001" { + description "Prose @assess must not be a lexical use."; + include "救援/assess.arcadia"; + include "救援/confirm.arcadia"; + include "links.arcadia"; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-final-saved/sources/救援/assess.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-final-saved/sources/救援/assess.arcadia new file mode 100644 index 00000000..2595a7db --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-final-saved/sources/救援/assess.arcadia @@ -0,0 +1,4 @@ +// Comment @assess must not be a lexical use. +oa_activity assess "Assess 救援 request" id "9e8f0000-0000-4000-8000-000000000002" { + description "Keep @assess as prose, not a use."; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-final-saved/sources/救援/confirm.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-final-saved/sources/救援/confirm.arcadia new file mode 100644 index 00000000..2d3ec804 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/missing-final-saved/sources/救援/confirm.arcadia @@ -0,0 +1 @@ +oa_activity confirm "Confirm 救援 response" id "9e8f0000-0000-4000-8000-000000000003" {} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-after-rollback-before-save/snapshot.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-after-rollback-before-save/snapshot.json new file mode 100644 index 00000000..bdd0350c --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-after-rollback-before-save/snapshot.json @@ -0,0 +1,16 @@ +{ + "atUtc": "2026-09-11T20:59:11.073268+00:00", + "label": "recovery-after-rollback-before-save", + "model": "recovery", + "files": { + "links.arcadia": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "project.arcadia": "6e9abf4ecf24175b9f04a8db11fe182146581059628eb8769e869597401f262e", + "救援/assess.arcadia": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "救援/confirm.arcadia": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919" + }, + "arcadiaFiles": 4, + "journalFiles": {}, + "pendingJournalExists": false, + "binaryFilesUnchanged": true, + "scope": "On-disk snapshot only; no accepted graph, Apply, Save or recovery success inferred." +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-after-rollback-before-save/sources/links.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-after-rollback-before-save/sources/links.arcadia new file mode 100644 index 00000000..8f99a9d8 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-after-rollback-before-save/sources/links.arcadia @@ -0,0 +1,4 @@ +interaction handoff "Assessment handoff" id "9e8f0000-0000-4000-8000-000000000004" { + description "救援 @assess is prose"; source @assess; target @confirm; + // Another comment @assess is excluded. +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-after-rollback-before-save/sources/project.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-after-rollback-before-save/sources/project.arcadia new file mode 100644 index 00000000..7dd1f114 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-after-rollback-before-save/sources/project.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project navigation_trial "Before interrupted save — 救援" id "9e8f0000-0000-4000-8000-000000000001" { + description "Prose @assess must not be a lexical use."; + include "救援/assess.arcadia"; + include "救援/confirm.arcadia"; + include "links.arcadia"; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-after-rollback-before-save/sources/救援/assess.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-after-rollback-before-save/sources/救援/assess.arcadia new file mode 100644 index 00000000..2595a7db --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-after-rollback-before-save/sources/救援/assess.arcadia @@ -0,0 +1,4 @@ +// Comment @assess must not be a lexical use. +oa_activity assess "Assess 救援 request" id "9e8f0000-0000-4000-8000-000000000002" { + description "Keep @assess as prose, not a use."; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-after-rollback-before-save/sources/救援/confirm.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-after-rollback-before-save/sources/救援/confirm.arcadia new file mode 100644 index 00000000..2d3ec804 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-after-rollback-before-save/sources/救援/confirm.arcadia @@ -0,0 +1 @@ +oa_activity confirm "Confirm 救援 response" id "9e8f0000-0000-4000-8000-000000000003" {} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-final-saved/oracle.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-final-saved/oracle.json new file mode 100644 index 00000000..ce12166c --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-final-saved/oracle.json @@ -0,0 +1,22 @@ +{ + "atUtc": "2026-09-11T20:59:36.033034+00:00", + "command": [ + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\staged-source-oracle-20260911\\staged-source-authoring-contract.exe", + "same", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\fixtures\\recovery-expected-after\\project.arcadia", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\checkpoints\\recovery-final-saved\\sources\\project.arcadia" + ], + "exitCode": 0, + "oracleSha256": "967d9ba3c6fb3a7efb410833903ec94556ca2d48a67d5072c8bb160f40a00f9c", + "afterVisibleSaveConfirmedByCaller": true, + "model": "recovery", + "expected": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\fixtures\\recovery-expected-after", + "files": { + "links.arcadia": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "project.arcadia": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + "救援/assess.arcadia": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "救援/confirm.arcadia": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919" + }, + "binaryFilesUnchanged": true, + "scope": "Actual saved oracle result; complete Project/identity/reachable and physical Arcadia equality only if exitCode is zero." +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-final-saved/oracle.stderr.log b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-final-saved/oracle.stderr.log new file mode 100644 index 00000000..e69de29b diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-final-saved/oracle.stdout.log b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-final-saved/oracle.stdout.log new file mode 100644 index 00000000..dfcbc2b3 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-final-saved/oracle.stdout.log @@ -0,0 +1 @@ +PASS exact model/identity/4 reachable sources; 4 exact disk files (0 proven retained) diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-final-saved/snapshot.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-final-saved/snapshot.json new file mode 100644 index 00000000..d1be713f --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-final-saved/snapshot.json @@ -0,0 +1,16 @@ +{ + "atUtc": "2026-09-11T20:59:35.892590+00:00", + "label": "recovery-final-saved", + "model": "recovery", + "files": { + "links.arcadia": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "project.arcadia": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + "救援/assess.arcadia": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "救援/confirm.arcadia": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919" + }, + "arcadiaFiles": 4, + "journalFiles": {}, + "pendingJournalExists": false, + "binaryFilesUnchanged": true, + "scope": "On-disk snapshot only; no accepted graph, Apply, Save or recovery success inferred." +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-final-saved/sources/links.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-final-saved/sources/links.arcadia new file mode 100644 index 00000000..8f99a9d8 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-final-saved/sources/links.arcadia @@ -0,0 +1,4 @@ +interaction handoff "Assessment handoff" id "9e8f0000-0000-4000-8000-000000000004" { + description "救援 @assess is prose"; source @assess; target @confirm; + // Another comment @assess is excluded. +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-final-saved/sources/project.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-final-saved/sources/project.arcadia new file mode 100644 index 00000000..2771b2bf --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-final-saved/sources/project.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project navigation_trial "Navigation — 救援" id "9e8f0000-0000-4000-8000-000000000001" { + description "Prose @assess must not be a lexical use."; + include "救援/assess.arcadia"; + include "救援/confirm.arcadia"; + include "links.arcadia"; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-final-saved/sources/救援/assess.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-final-saved/sources/救援/assess.arcadia new file mode 100644 index 00000000..2595a7db --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-final-saved/sources/救援/assess.arcadia @@ -0,0 +1,4 @@ +// Comment @assess must not be a lexical use. +oa_activity assess "Assess 救援 request" id "9e8f0000-0000-4000-8000-000000000002" { + description "Keep @assess as prose, not a use."; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-final-saved/sources/救援/confirm.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-final-saved/sources/救援/confirm.arcadia new file mode 100644 index 00000000..2d3ec804 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-final-saved/sources/救援/confirm.arcadia @@ -0,0 +1 @@ +oa_activity confirm "Confirm 救援 response" id "9e8f0000-0000-4000-8000-000000000003" {} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-open-journal/snapshot.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-open-journal/snapshot.json new file mode 100644 index 00000000..e96591b5 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-open-journal/snapshot.json @@ -0,0 +1,23 @@ +{ + "atUtc": "2026-09-11T20:58:52.628255+00:00", + "label": "recovery-open-journal", + "model": "recovery", + "files": { + "links.arcadia": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "project.arcadia": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + ".arcadia-save-project.arcadia.journal/0.after": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + ".arcadia-save-project.arcadia.journal/0.before": "6e9abf4ecf24175b9f04a8db11fe182146581059628eb8769e869597401f262e", + ".arcadia-save-project.arcadia.journal/journal.json": "08e19098159f9a539f33754ef8d8bbb5e653744baa0aa9784403e019498d4c42", + "救援/assess.arcadia": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "救援/confirm.arcadia": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919" + }, + "arcadiaFiles": 4, + "journalFiles": { + ".arcadia-save-project.arcadia.journal/0.after": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + ".arcadia-save-project.arcadia.journal/0.before": "6e9abf4ecf24175b9f04a8db11fe182146581059628eb8769e869597401f262e", + ".arcadia-save-project.arcadia.journal/journal.json": "08e19098159f9a539f33754ef8d8bbb5e653744baa0aa9784403e019498d4c42" + }, + "pendingJournalExists": true, + "binaryFilesUnchanged": true, + "scope": "On-disk snapshot only; no accepted graph, Apply, Save or recovery success inferred." +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-open-journal/sources/.arcadia-save-project.arcadia.journal/0.after b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-open-journal/sources/.arcadia-save-project.arcadia.journal/0.after new file mode 100644 index 00000000..2771b2bf --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-open-journal/sources/.arcadia-save-project.arcadia.journal/0.after @@ -0,0 +1,7 @@ +arcadia 7; +project navigation_trial "Navigation — 救援" id "9e8f0000-0000-4000-8000-000000000001" { + description "Prose @assess must not be a lexical use."; + include "救援/assess.arcadia"; + include "救援/confirm.arcadia"; + include "links.arcadia"; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-open-journal/sources/.arcadia-save-project.arcadia.journal/0.before b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-open-journal/sources/.arcadia-save-project.arcadia.journal/0.before new file mode 100644 index 00000000..7dd1f114 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-open-journal/sources/.arcadia-save-project.arcadia.journal/0.before @@ -0,0 +1,7 @@ +arcadia 7; +project navigation_trial "Before interrupted save — 救援" id "9e8f0000-0000-4000-8000-000000000001" { + description "Prose @assess must not be a lexical use."; + include "救援/assess.arcadia"; + include "救援/confirm.arcadia"; + include "links.arcadia"; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-open-journal/sources/.arcadia-save-project.arcadia.journal/journal.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-open-journal/sources/.arcadia-save-project.arcadia.journal/journal.json new file mode 100644 index 00000000..f699fd45 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-open-journal/sources/.arcadia-save-project.arcadia.journal/journal.json @@ -0,0 +1 @@ +{"version":1,"entry":"project.arcadia","files":[{"path":"project.arcadia","before":true,"write":true}]} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-open-journal/sources/links.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-open-journal/sources/links.arcadia new file mode 100644 index 00000000..8f99a9d8 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-open-journal/sources/links.arcadia @@ -0,0 +1,4 @@ +interaction handoff "Assessment handoff" id "9e8f0000-0000-4000-8000-000000000004" { + description "救援 @assess is prose"; source @assess; target @confirm; + // Another comment @assess is excluded. +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-open-journal/sources/project.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-open-journal/sources/project.arcadia new file mode 100644 index 00000000..2771b2bf --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-open-journal/sources/project.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project navigation_trial "Navigation — 救援" id "9e8f0000-0000-4000-8000-000000000001" { + description "Prose @assess must not be a lexical use."; + include "救援/assess.arcadia"; + include "救援/confirm.arcadia"; + include "links.arcadia"; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-open-journal/sources/救援/assess.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-open-journal/sources/救援/assess.arcadia new file mode 100644 index 00000000..2595a7db --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-open-journal/sources/救援/assess.arcadia @@ -0,0 +1,4 @@ +// Comment @assess must not be a lexical use. +oa_activity assess "Assess 救援 request" id "9e8f0000-0000-4000-8000-000000000002" { + description "Keep @assess as prose, not a use."; +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-open-journal/sources/救援/confirm.arcadia b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-open-journal/sources/救援/confirm.arcadia new file mode 100644 index 00000000..2d3ec804 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/checkpoints/recovery-open-journal/sources/救援/confirm.arcadia @@ -0,0 +1 @@ +oa_activity confirm "Confirm 救援 response" id "9e8f0000-0000-4000-8000-000000000003" {} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/launch.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/launch.json new file mode 100644 index 00000000..77590012 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/launch.json @@ -0,0 +1,29 @@ +{ + "atUtc": "2026-09-11T20:52:46.022546+00:00", + "pid": 10016, + "sourceCommit": "33c6d83e9ba9a5b1310b1b627d7c40affcbcf15c", + "binarySha256": "b183ef31f16b3986538b3f2aba8435eab45978635c47f99ca01be6e72b168848", + "guiBuildReceiptSha256": "044588599aad6a8b879288050fb2eda204854cf3048c3deef164367eac22bbdf", + "environment": { + "SystemRoot": "C:\\Windows", + "SystemDrive": "C:", + "ProgramData": "C:\\ProgramData", + "ALLUSERSPROFILE": "C:\\ProgramData", + "PUBLIC": "C:\\Users\\Public", + "WINDIR": "C:\\Windows", + "PATH": "C:\\Windows\\System32;C:\\Windows", + "USERPROFILE": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\profile", + "LOCALAPPDATA": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\profile\\local", + "APPDATA": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\profile\\roaming", + "TEMP": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\tmp", + "TMP": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\tmp" + }, + "modelEntries": { + "valid": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\valid\\project.arcadia", + "release1": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\release1\\project.arcadia", + "ambiguous": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\ambiguous\\project.arcadia", + "missing-include": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\missing-include\\project.arcadia", + "recovery": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\recovery\\project.arcadia" + }, + "scope": "Explicitly launched identified Windows GUI; native results pending." +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/01-launch-0.jpg b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/01-launch-0.jpg new file mode 100644 index 00000000..2ca07193 Binary files /dev/null and b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/01-launch-0.jpg differ diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/01-launch.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/01-launch.json new file mode 100644 index 00000000..7fcb0a33 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/01-launch.json @@ -0,0 +1,21 @@ +{ + "atUtc": "2026-09-11T20:53:20.154Z", + "label": "01-launch", + "window": { + "app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\bin\\arcadia-studio.exe", + "id": 1901418, + "title": "Untitled mission — Arcadia Studio" + }, + "accessibility": null, + "screenshots": [ + { + "height": 932, + "id": "screenshot-0", + "originX": 241, + "originY": 234, + "width": 1442, + "zIndex": 0, + "file": "01-launch-0.jpg" + } + ] +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/02-valid-clean-0.jpg b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/02-valid-clean-0.jpg new file mode 100644 index 00000000..3106132b Binary files /dev/null and b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/02-valid-clean-0.jpg differ diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/02-valid-clean.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/02-valid-clean.json new file mode 100644 index 00000000..20a72c2f --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/02-valid-clean.json @@ -0,0 +1,21 @@ +{ + "atUtc": "2026-09-11T20:54:08.722Z", + "label": "02-valid-clean", + "window": { + "app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\bin\\arcadia-studio.exe", + "id": 1901418, + "title": "Untitled mission — Arcadia Studio" + }, + "accessibility": null, + "screenshots": [ + { + "height": 932, + "id": "screenshot-0", + "originX": 241, + "originY": 234, + "width": 1442, + "zIndex": 0, + "file": "02-valid-clean-0.jpg" + } + ] +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/03-missing-open-unsaved-0.jpg b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/03-missing-open-unsaved-0.jpg new file mode 100644 index 00000000..85260c04 Binary files /dev/null and b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/03-missing-open-unsaved-0.jpg differ diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/03-missing-open-unsaved.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/03-missing-open-unsaved.json new file mode 100644 index 00000000..29855ea6 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/03-missing-open-unsaved.json @@ -0,0 +1,21 @@ +{ + "atUtc": "2026-09-11T20:54:48.910Z", + "label": "03-missing-open-unsaved", + "window": { + "app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\bin\\arcadia-studio.exe", + "id": 1901418, + "title": "Navigation — 救援 — Arcadia Studio" + }, + "accessibility": null, + "screenshots": [ + { + "height": 932, + "id": "screenshot-0", + "originX": 241, + "originY": 234, + "width": 1442, + "zIndex": 0, + "file": "03-missing-open-unsaved-0.jpg" + } + ] +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/04-missing-draft-repaired-0.jpg b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/04-missing-draft-repaired-0.jpg new file mode 100644 index 00000000..2194ea5f Binary files /dev/null and b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/04-missing-draft-repaired-0.jpg differ diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/04-missing-draft-repaired.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/04-missing-draft-repaired.json new file mode 100644 index 00000000..739bc1c7 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/04-missing-draft-repaired.json @@ -0,0 +1,21 @@ +{ + "atUtc": "2026-09-11T20:55:14.199Z", + "label": "04-missing-draft-repaired", + "window": { + "app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\bin\\arcadia-studio.exe", + "id": 1901418, + "title": "Navigation — 救援 * — Arcadia Studio" + }, + "accessibility": null, + "screenshots": [ + { + "height": 932, + "id": "screenshot-0", + "originX": 241, + "originY": 234, + "width": 1442, + "zIndex": 0, + "file": "04-missing-draft-repaired-0.jpg" + } + ] +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/05-missing-applied-unsaved-0.jpg b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/05-missing-applied-unsaved-0.jpg new file mode 100644 index 00000000..4151e364 Binary files /dev/null and b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/05-missing-applied-unsaved-0.jpg differ diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/05-missing-applied-unsaved.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/05-missing-applied-unsaved.json new file mode 100644 index 00000000..2d677f05 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/05-missing-applied-unsaved.json @@ -0,0 +1,21 @@ +{ + "atUtc": "2026-09-11T20:55:26.609Z", + "label": "05-missing-applied-unsaved", + "window": { + "app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\bin\\arcadia-studio.exe", + "id": 1901418, + "title": "Navigation — 救援 * — Arcadia Studio" + }, + "accessibility": null, + "screenshots": [ + { + "height": 932, + "id": "screenshot-0", + "originX": 241, + "originY": 234, + "width": 1442, + "zIndex": 0, + "file": "05-missing-applied-unsaved-0.jpg" + } + ] +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/06-missing-close-warning-0.jpg b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/06-missing-close-warning-0.jpg new file mode 100644 index 00000000..fa1de1db Binary files /dev/null and b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/06-missing-close-warning-0.jpg differ diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/06-missing-close-warning.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/06-missing-close-warning.json new file mode 100644 index 00000000..800e2ae3 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/06-missing-close-warning.json @@ -0,0 +1,21 @@ +{ + "atUtc": "2026-09-11T20:55:32.744Z", + "label": "06-missing-close-warning", + "window": { + "app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\bin\\arcadia-studio.exe", + "id": 1901418, + "title": "Navigation — 救援 * — Arcadia Studio" + }, + "accessibility": null, + "screenshots": [ + { + "height": 932, + "id": "screenshot-0", + "originX": 241, + "originY": 234, + "width": 1442, + "zIndex": 0, + "file": "06-missing-close-warning-0.jpg" + } + ] +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/07-missing-close-cancel-retained-0.jpg b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/07-missing-close-cancel-retained-0.jpg new file mode 100644 index 00000000..f2cc2b88 Binary files /dev/null and b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/07-missing-close-cancel-retained-0.jpg differ diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/07-missing-close-cancel-retained.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/07-missing-close-cancel-retained.json new file mode 100644 index 00000000..ba7e73c2 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/07-missing-close-cancel-retained.json @@ -0,0 +1,21 @@ +{ + "atUtc": "2026-09-11T20:55:39.361Z", + "label": "07-missing-close-cancel-retained", + "window": { + "app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\bin\\arcadia-studio.exe", + "id": 1901418, + "title": "Navigation — 救援 * — Arcadia Studio" + }, + "accessibility": null, + "screenshots": [ + { + "height": 932, + "id": "screenshot-0", + "originX": 241, + "originY": 234, + "width": 1442, + "zIndex": 0, + "file": "07-missing-close-cancel-retained-0.jpg" + } + ] +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/08-missing-save-clean-0.jpg b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/08-missing-save-clean-0.jpg new file mode 100644 index 00000000..524873f0 Binary files /dev/null and b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/08-missing-save-clean-0.jpg differ diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/08-missing-save-clean.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/08-missing-save-clean.json new file mode 100644 index 00000000..44286ecc --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/08-missing-save-clean.json @@ -0,0 +1,21 @@ +{ + "atUtc": "2026-09-11T20:55:46.901Z", + "label": "08-missing-save-clean", + "window": { + "app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\bin\\arcadia-studio.exe", + "id": 1901418, + "title": "Navigation — 救援 — Arcadia Studio" + }, + "accessibility": null, + "screenshots": [ + { + "height": 932, + "id": "screenshot-0", + "originX": 241, + "originY": 234, + "width": 1442, + "zIndex": 0, + "file": "08-missing-save-clean-0.jpg" + } + ] +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/09-duplicate-open-unsaved-0.jpg b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/09-duplicate-open-unsaved-0.jpg new file mode 100644 index 00000000..a1a62727 Binary files /dev/null and b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/09-duplicate-open-unsaved-0.jpg differ diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/09-duplicate-open-unsaved.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/09-duplicate-open-unsaved.json new file mode 100644 index 00000000..a480a3fe --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/09-duplicate-open-unsaved.json @@ -0,0 +1,21 @@ +{ + "atUtc": "2026-09-11T20:56:47.422Z", + "label": "09-duplicate-open-unsaved", + "window": { + "app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\bin\\arcadia-studio.exe", + "id": 1901418, + "title": "Navigation — 救援 — Arcadia Studio" + }, + "accessibility": null, + "screenshots": [ + { + "height": 932, + "id": "screenshot-0", + "originX": 241, + "originY": 234, + "width": 1442, + "zIndex": 0, + "file": "09-duplicate-open-unsaved-0.jpg" + } + ] +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/10-duplicate-draft-repaired-0.jpg b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/10-duplicate-draft-repaired-0.jpg new file mode 100644 index 00000000..a16d34df Binary files /dev/null and b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/10-duplicate-draft-repaired-0.jpg differ diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/10-duplicate-draft-repaired.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/10-duplicate-draft-repaired.json new file mode 100644 index 00000000..607e165e --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/10-duplicate-draft-repaired.json @@ -0,0 +1,21 @@ +{ + "atUtc": "2026-09-11T20:57:14.994Z", + "label": "10-duplicate-draft-repaired", + "window": { + "app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\bin\\arcadia-studio.exe", + "id": 1901418, + "title": "Navigation — 救援 * — Arcadia Studio" + }, + "accessibility": null, + "screenshots": [ + { + "height": 932, + "id": "screenshot-0", + "originX": 241, + "originY": 234, + "width": 1442, + "zIndex": 0, + "file": "10-duplicate-draft-repaired-0.jpg" + } + ] +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/11-duplicate-applied-unsaved-0.jpg b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/11-duplicate-applied-unsaved-0.jpg new file mode 100644 index 00000000..fc1fc7cd Binary files /dev/null and b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/11-duplicate-applied-unsaved-0.jpg differ diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/11-duplicate-applied-unsaved.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/11-duplicate-applied-unsaved.json new file mode 100644 index 00000000..40cd8ec2 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/11-duplicate-applied-unsaved.json @@ -0,0 +1,21 @@ +{ + "atUtc": "2026-09-11T20:57:26.539Z", + "label": "11-duplicate-applied-unsaved", + "window": { + "app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\bin\\arcadia-studio.exe", + "id": 1901418, + "title": "Navigation — 救援 * — Arcadia Studio" + }, + "accessibility": null, + "screenshots": [ + { + "height": 932, + "id": "screenshot-0", + "originX": 241, + "originY": 234, + "width": 1442, + "zIndex": 0, + "file": "11-duplicate-applied-unsaved-0.jpg" + } + ] +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/12-duplicate-close-warning-0.jpg b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/12-duplicate-close-warning-0.jpg new file mode 100644 index 00000000..48ca7a34 Binary files /dev/null and b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/12-duplicate-close-warning-0.jpg differ diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/12-duplicate-close-warning.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/12-duplicate-close-warning.json new file mode 100644 index 00000000..978f2727 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/12-duplicate-close-warning.json @@ -0,0 +1,21 @@ +{ + "atUtc": "2026-09-11T20:57:33.719Z", + "label": "12-duplicate-close-warning", + "window": { + "app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\bin\\arcadia-studio.exe", + "id": 1901418, + "title": "Navigation — 救援 * — Arcadia Studio" + }, + "accessibility": null, + "screenshots": [ + { + "height": 932, + "id": "screenshot-0", + "originX": 241, + "originY": 234, + "width": 1442, + "zIndex": 0, + "file": "12-duplicate-close-warning-0.jpg" + } + ] +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/13-duplicate-close-cancel-retained-0.jpg b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/13-duplicate-close-cancel-retained-0.jpg new file mode 100644 index 00000000..cb1685dc Binary files /dev/null and b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/13-duplicate-close-cancel-retained-0.jpg differ diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/13-duplicate-close-cancel-retained.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/13-duplicate-close-cancel-retained.json new file mode 100644 index 00000000..528b684d --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/13-duplicate-close-cancel-retained.json @@ -0,0 +1,21 @@ +{ + "atUtc": "2026-09-11T20:57:40.407Z", + "label": "13-duplicate-close-cancel-retained", + "window": { + "app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\bin\\arcadia-studio.exe", + "id": 1901418, + "title": "Navigation — 救援 * — Arcadia Studio" + }, + "accessibility": null, + "screenshots": [ + { + "height": 932, + "id": "screenshot-0", + "originX": 241, + "originY": 234, + "width": 1442, + "zIndex": 0, + "file": "13-duplicate-close-cancel-retained-0.jpg" + } + ] +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/14-duplicate-save-clean-0.jpg b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/14-duplicate-save-clean-0.jpg new file mode 100644 index 00000000..0c5f3ab8 Binary files /dev/null and b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/14-duplicate-save-clean-0.jpg differ diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/14-duplicate-save-clean.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/14-duplicate-save-clean.json new file mode 100644 index 00000000..f243c824 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/14-duplicate-save-clean.json @@ -0,0 +1,21 @@ +{ + "atUtc": "2026-09-11T20:57:48.025Z", + "label": "14-duplicate-save-clean", + "window": { + "app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\bin\\arcadia-studio.exe", + "id": 1901418, + "title": "Navigation — 救援 — Arcadia Studio" + }, + "accessibility": null, + "screenshots": [ + { + "height": 932, + "id": "screenshot-0", + "originX": 241, + "originY": 234, + "width": 1442, + "zIndex": 0, + "file": "14-duplicate-save-clean-0.jpg" + } + ] +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/15-recovery-open-journal-0.jpg b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/15-recovery-open-journal-0.jpg new file mode 100644 index 00000000..f64b1439 Binary files /dev/null and b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/15-recovery-open-journal-0.jpg differ diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/15-recovery-open-journal.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/15-recovery-open-journal.json new file mode 100644 index 00000000..f09a2634 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/15-recovery-open-journal.json @@ -0,0 +1,21 @@ +{ + "atUtc": "2026-09-11T20:58:52.837Z", + "label": "15-recovery-open-journal", + "window": { + "app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\bin\\arcadia-studio.exe", + "id": 1901418, + "title": "Navigation — 救援 — Arcadia Studio" + }, + "accessibility": null, + "screenshots": [ + { + "height": 932, + "id": "screenshot-0", + "originX": 241, + "originY": 234, + "width": 1442, + "zIndex": 0, + "file": "15-recovery-open-journal-0.jpg" + } + ] +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/16-recovery-applied-before-rollback-0.jpg b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/16-recovery-applied-before-rollback-0.jpg new file mode 100644 index 00000000..6c4cff27 Binary files /dev/null and b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/16-recovery-applied-before-rollback-0.jpg differ diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/16-recovery-applied-before-rollback.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/16-recovery-applied-before-rollback.json new file mode 100644 index 00000000..4494b129 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/16-recovery-applied-before-rollback.json @@ -0,0 +1,21 @@ +{ + "atUtc": "2026-09-11T20:58:59.144Z", + "label": "16-recovery-applied-before-rollback", + "window": { + "app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\bin\\arcadia-studio.exe", + "id": 1901418, + "title": "Navigation — 救援 — Arcadia Studio" + }, + "accessibility": null, + "screenshots": [ + { + "height": 932, + "id": "screenshot-0", + "originX": 241, + "originY": 234, + "width": 1442, + "zIndex": 0, + "file": "16-recovery-applied-before-rollback-0.jpg" + } + ] +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/17-recovery-rollback-retained-unsaved-0.jpg b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/17-recovery-rollback-retained-unsaved-0.jpg new file mode 100644 index 00000000..6dc92d11 Binary files /dev/null and b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/17-recovery-rollback-retained-unsaved-0.jpg differ diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/17-recovery-rollback-retained-unsaved.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/17-recovery-rollback-retained-unsaved.json new file mode 100644 index 00000000..78686d16 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/17-recovery-rollback-retained-unsaved.json @@ -0,0 +1,21 @@ +{ + "atUtc": "2026-09-11T20:59:11.348Z", + "label": "17-recovery-rollback-retained-unsaved", + "window": { + "app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\bin\\arcadia-studio.exe", + "id": 1901418, + "title": "Navigation — 救援 * — Arcadia Studio" + }, + "accessibility": null, + "screenshots": [ + { + "height": 932, + "id": "screenshot-0", + "originX": 241, + "originY": 234, + "width": 1442, + "zIndex": 0, + "file": "17-recovery-rollback-retained-unsaved-0.jpg" + } + ] +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/18-recovery-close-warning-0.jpg b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/18-recovery-close-warning-0.jpg new file mode 100644 index 00000000..7f360bea Binary files /dev/null and b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/18-recovery-close-warning-0.jpg differ diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/18-recovery-close-warning.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/18-recovery-close-warning.json new file mode 100644 index 00000000..952df9f2 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/18-recovery-close-warning.json @@ -0,0 +1,21 @@ +{ + "atUtc": "2026-09-11T20:59:17.444Z", + "label": "18-recovery-close-warning", + "window": { + "app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\bin\\arcadia-studio.exe", + "id": 1901418, + "title": "Navigation — 救援 * — Arcadia Studio" + }, + "accessibility": null, + "screenshots": [ + { + "height": 932, + "id": "screenshot-0", + "originX": 241, + "originY": 234, + "width": 1442, + "zIndex": 0, + "file": "18-recovery-close-warning-0.jpg" + } + ] +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/19-recovery-close-cancel-retained-0.jpg b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/19-recovery-close-cancel-retained-0.jpg new file mode 100644 index 00000000..77e80c5d Binary files /dev/null and b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/19-recovery-close-cancel-retained-0.jpg differ diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/19-recovery-close-cancel-retained.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/19-recovery-close-cancel-retained.json new file mode 100644 index 00000000..7d0cba29 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/19-recovery-close-cancel-retained.json @@ -0,0 +1,21 @@ +{ + "atUtc": "2026-09-11T20:59:24.875Z", + "label": "19-recovery-close-cancel-retained", + "window": { + "app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\bin\\arcadia-studio.exe", + "id": 1901418, + "title": "Navigation — 救援 * — Arcadia Studio" + }, + "accessibility": null, + "screenshots": [ + { + "height": 932, + "id": "screenshot-0", + "originX": 241, + "originY": 234, + "width": 1442, + "zIndex": 0, + "file": "19-recovery-close-cancel-retained-0.jpg" + } + ] +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/20-recovery-save-clean-0.jpg b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/20-recovery-save-clean-0.jpg new file mode 100644 index 00000000..68c54926 Binary files /dev/null and b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/20-recovery-save-clean-0.jpg differ diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/20-recovery-save-clean.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/20-recovery-save-clean.json new file mode 100644 index 00000000..91c7c253 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/screenshots/20-recovery-save-clean.json @@ -0,0 +1,21 @@ +{ + "atUtc": "2026-09-11T20:59:33.000Z", + "label": "20-recovery-save-clean", + "window": { + "app": "process:C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\text-repair-save-native-20260911\\trial\\bin\\arcadia-studio.exe", + "id": 1901418, + "title": "Navigation — 救援 — Arcadia Studio" + }, + "accessibility": null, + "screenshots": [ + { + "height": 932, + "id": "screenshot-0", + "originX": 241, + "originY": 234, + "width": 1442, + "zIndex": 0, + "file": "20-recovery-save-clean-0.jpg" + } + ] +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/source-before.json b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/source-before.json new file mode 100644 index 00000000..2c629b68 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/source-before.json @@ -0,0 +1,68 @@ +{ + "valid": { + "links.arcadia": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "project.arcadia": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + "救援/assess.arcadia": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "救援/confirm.arcadia": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919" + }, + "release1": { + "expected-diagnostics.json": "3700393d76b940cfc076bf52861bd7b1f43370f8eabce3594531bd0bf1fc851e", + "model.json": "ef0ef4006c3e09d5db6e1b621256b3f7d6642f3a7b09cc34607cfbcca830c727", + "model.rs": "15f30f6bde655808fe754665c26d560e36f2a9bad340f346b09137d0d05045f5", + "project.arcadia": "b2674e6bf77cfe0f6f0ba79c81d2e96d92f39c02ca2c6266d80e91723bfb9fda", + "README.md": "113cfb1cf38a98b51bff60442d86a35d636a3d80ef206bece7d53d0aae67f2d5", + "traceability.arcadia": "48a96f543456c9b5a5798fc795594e4119147fe45f11a6f109f141b7f514560f", + "transition-before.json": "2253e6434f741687e22327c37d520ed15c043bc36025498650bc2366bb6a874d", + "transition-request.json": "43b9a22e5f95ad3bc0ebd2478ead0e14406854abc989ae94ded9367b013d812a", + "evidence/repair-check.md": "f4db17bdca4ecbb1bf0caef01b2da5f1f7f798ab3152b648ce6dd8696a6a68e5", + "oa/capabilities.arcadia": "fc8012e5554350b12e1cb80080f8feab80d933c9b33c0f2a7bb500cb7d609936", + "oa/model.arcadia": "f7cf914766ea73ec53b85e32d117ea9a9dba52d3e038246863541ae7069b1a15", + "oa/participants.arcadia": "951764c14179f27c10e315acf2ea37d1fff54c77b8441e23addd239e8c715ce3", + "oa/types.arcadia": "9d0396fb82dd5733edd8d1cf52f968ca84906927c704f9cf0944a7fae215cf49", + "sa/capabilities.arcadia": "b6912fb3ece439912345fa71724acd462e716a1e5a88203a1058a5c3b2c20a4f", + "sa/model.arcadia": "d431509251acb859fbb98733b6d18add952495e10a78703fbe8f31e40bc083c4", + "sa/participants.arcadia": "780d2eb08b217b67b55febb3d34846f727b8ee9018df6c5741748647e36b2ff8", + "sa/types.arcadia": "101fc0fbd99f1101514aa7b6da4f8e535aae0bb94c9e2b9e7e6c151135b28660", + "views/diagram_oa_allocation_view.arcadia": "dfc0eb61e0e2aa5bda45524571fbfa3494f44ce19696f3e15e07438074a07bc7", + "views/diagram_sa_allocation_view.arcadia": "b78b43a26a82efb8fbd5374b09c329fa341f57b29f635d397b9ef8aede71d389", + "views/diagram_sa_capability_view.arcadia": "75e8dc9fb30f25d6f8fd3c6b595593ab4f98958a25798f961e336e0fac557649", + "views/diagram_sa_service_view.arcadia": "b08c84f3ea633e7c78dfdad3272f75415f6256cf3614b6d99bfd4f0269076c9b", + "views/diagram_sa_state_view.arcadia": "5f42f4c605e57b817d8400ed21f2b14bfc4e1592aebe941ff113767504c2b869", + "oa/activities/activity_oa_restore_work.arcadia": "83e73d0a013d5c3e1a4af0d9139ab0cfa362d25a846671fc2dac59181061a9d4", + "oa/behavior/process_oa_assessment_procedure.arcadia": "172c32c044ef4b5bc58a1f4635cc81f48dabb4014479b47dce7b25fedf2dbd0d", + "oa/behavior/process_oa_field_procedure.arcadia": "d2552dc5383e2e91cb302a790364e197f663c2edc013a2ab1978789825c9c324", + "oa/behavior/process_oa_response.arcadia": "cf86f46fa5c5d70592ef43f1bc1cb4d968efd8add384ba88036bef6b88aa4abc", + "oa/behavior/scenario_oa_conversation.arcadia": "b25be524e98a35ebac5e4481b7609c027b32baf9605e8097f807560f94a77ca6", + "oa/behavior/scenario_oa_full_scenario.arcadia": "00a1edf2c9707a0eb62ac070c2d02467874f2c9c1f273cc6ddb53d6d65999a1c", + "oa/behavior/state_machine_oa_monitor.arcadia": "447c9ad1359f4a31ecf975ad07c0b08d8e7e03191fb0858e2fc56f377b223cd5", + "sa/behavior/process_sa_assessment_procedure.arcadia": "73928ced61c06cbc08728d7956676a50fd4c05aa5b7f1ff4f29ce27a0b0f2088", + "sa/behavior/process_sa_field_procedure.arcadia": "886d462af83110cbfa55dd232a667ea1446761234471357cbb878794e98e8768", + "sa/behavior/process_sa_response.arcadia": "041785fc22842423822431bd5e6e8d16094ebd0716965e7c765fb8c1d7549e8a", + "sa/behavior/scenario_sa_conversation.arcadia": "97276f5757ee9aa12a0dbd9d3ccd58174b3091162bb8bcce357cec20a45f5d85", + "sa/behavior/scenario_sa_full_scenario.arcadia": "e12fc406b99d60a2f7768aaa0b25ba560e8605f0b8e37f3a7cdd3b8443562b74", + "sa/behavior/state_machine_sa_monitor.arcadia": "05ce29af99424c491c47fe2450dc6f5f8ce995511c01ec7e17bb5855be3c9736", + "sa/functions/function_sa_audit_thresholds.arcadia": "e5a04325d52183956dca814dd90f4e56c96c6b7db0f4f202f203ecb49c3e0f4f", + "sa/functions/function_sa_restore_work.arcadia": "fddeb67308051325041fee641fe758ddf43345b7c47b66d433616ad07fdccdd6" + }, + "ambiguous": { + "links.arcadia": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "project.arcadia": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + "救援/assess.arcadia": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "救援/confirm.arcadia": "ba3e222bdc7dfa94e4f1b16df091447835da6b5bea8a72701e12e077e77319a6" + }, + "missing-include": { + "links.arcadia": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "project.arcadia": "573357995f0a68fef39aa3eef3125e2271242d1ce01607c129624399b77e682e", + "救援/assess.arcadia": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "救援/confirm.arcadia": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919" + }, + "recovery": { + "links.arcadia": "d3229ecf6300804103eb7f85bd5891c022f6f6c194dbdbbdcb54e9550338dc3b", + "project.arcadia": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + ".arcadia-save-project.arcadia.journal/0.after": "79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414", + ".arcadia-save-project.arcadia.journal/0.before": "6e9abf4ecf24175b9f04a8db11fe182146581059628eb8769e869597401f262e", + ".arcadia-save-project.arcadia.journal/journal.json": "08e19098159f9a539f33754ef8d8bbb5e653744baa0aa9784403e019498d4c42", + "救援/assess.arcadia": "d99593537e67b2dfd293623f467ffbd46af4ea259dffae55d1fe9995c86e6992", + "救援/confirm.arcadia": "591b32db3b1282825750d002d9293cfc450d55252506623302ce36c949fe9919" + } +} diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/stderr.log b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/stderr.log new file mode 100644 index 00000000..e69de29b diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/stdout.log b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/trial/stdout.log new file mode 100644 index 00000000..e69de29b diff --git a/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/verify_archive.py b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/verify_archive.py new file mode 100644 index 00000000..525acd95 --- /dev/null +++ b/harness/experiments/text-navigation-native-20260911/repair-save-native-v4/verify_archive.py @@ -0,0 +1,69 @@ +"""Read-only raw-archive validation. Does not execute any binary or rewrite files.""" +import hashlib +import json +from pathlib import Path + +base = Path(__file__).resolve().parent + +def read(path): + return json.loads(path.read_text(encoding="utf-8")) + +def sha(path): + return hashlib.sha256(path.read_bytes()).hexdigest() + +def tree(path): + return {p.relative_to(path).as_posix(): sha(p) for p in path.rglob("*") if p.is_file()} + +manifest = read(base / "manifest.json") +expected = {item["path"] for item in manifest["files"]} +assert set(tree(base)) == expected | {"manifest.json", "readback.json"} +for item in manifest["files"]: + path = base / item["path"] + assert path.stat().st_size == item["bytes"] and sha(path) == item["sha256"], item["path"] +assert sha(base / "manifest.json") == read(base / "readback.json")["manifestSha256"] + +fixtures = read(base / "fixture-manifest.json") +assert len(fixtures["files"]) == 64 +assert tree(base / "fixtures") == {item["path"]: item["sha256"] for item in fixtures["files"]} +screenshots = base / "trial/screenshots" +metadata = sorted(screenshots.glob("*.json")) +assert len(metadata) == 20 +images = set() +for index, path in enumerate(metadata, 1): + assert path.name.startswith(f"{index:02d}-") + value = read(path) + assert len(value["screenshots"]) == 1 + image = value["screenshots"][0] + assert (image["width"], image["height"]) == (1442, 932) + images.add(image["file"]) +assert images == {p.name for p in screenshots.glob("*.jpg")} + +checkpoints = base / "trial/checkpoints" +directories = sorted(p for p in checkpoints.iterdir() if p.is_dir()) +assert len(directories) == 7 +saved = {} +for directory in directories: + snapshot = read(directory / "snapshot.json") + assert tree(directory / "sources") == snapshot["files"], directory.name + assert snapshot["arcadiaFiles"] == 4 and snapshot["binaryFilesUnchanged"] + assert snapshot["pendingJournalExists"] == (directory.name == "recovery-open-journal") + if directory.name.endswith("final-saved"): + receipt = read(directory / "oracle.json") + assert receipt["exitCode"] == 0 and receipt["afterVisibleSaveConfirmedByCaller"] + assert receipt["files"] == snapshot["files"] == tree(base / "fixtures/valid") + assert receipt["oracleSha256"] == "967d9ba3c6fb3a7efb410833903ec94556ca2d48a67d5072c8bb160f40a00f9c" + assert (directory / "oracle.stderr.log").read_bytes() == b"" + output = (directory / "oracle.stdout.log").read_text(encoding="utf-8") + assert "4" in output and "PASS" in output + saved[directory.name] = receipt["atUtc"] +assert len(saved) == 3 +for label, fixture in {"missing-after-apply-before-save": "missing-include", "duplicate-after-apply-before-save": "ambiguous", "recovery-open-journal": "recovery", "recovery-after-rollback-before-save": "recovery-expected-before"}.items(): + assert tree(checkpoints / label / "sources") == tree(base / "fixtures" / fixture), label + +launch = read(base / "trial/launch.json") +closed = read(base / "trial/binary-after-close.json") +assert launch["pid"] == 10016 and launch["sourceCommit"] == "33c6d83e9ba9a5b1310b1b627d7c40affcbcf15c" +assert launch["binarySha256"] == closed["files"]["arcadia-studio.exe"] == "b183ef31f16b3986538b3f2aba8435eab45978635c47f99ca01be6e72b168848" +assert closed["unchanged"] and closed["absenceObservedByCaller"] +assert (base / "trial/stdout.log").read_bytes() == (base / "trial/stderr.log").read_bytes() == b"" +print(json.dumps({"passed": True, "payloadFiles": len(expected), "fixtureFiles": 64, "screenshots": 20, "checkpoints": 7, "savedOracleReceipts": saved, "numericProcessExitCode": None})) diff --git a/harness/release-text-navigation-integrated-20260911.md b/harness/release-text-navigation-integrated-20260911.md index 02983678..8b8b2714 100644 --- a/harness/release-text-navigation-integrated-20260911.md +++ b/harness/release-text-navigation-integrated-20260911.md @@ -119,9 +119,13 @@ after independent review. Matching GUI5478 [native evaluation](release-text-navi verified the four interaction fixes, invalid-source navigation and the 30-file engineering workflow. Explicit saved-source/model equality passed. The trial also found a repair save-status defect: Apply could compare against the previous -destination and report clean before Save. That correction needs its own gates -and native recheck before publication. All raw inputs and failed attempts retain -their original scopes. +destination and report clean before Save. The [saved-state correction](release-text-repair-save-state-20260911.md) +at `33c6d83` passed all 755 desktop tests, strict Clippy and matching GUI B183. +Its [native recheck](release-text-repair-save-native-v4-20260911.md) passed both +invalid-source repairs and actual interrupted-save rollback, with retained +unsaved state, Close/Cancel protection and three exact final saved-model/source +comparisons. Package acceptance remains separate. All raw inputs and failed +attempts retain their original scopes. - [Component and prepared fixture archive](experiments/text-navigation-components-20260911/README.md) - [Desktop gate archive](experiments/text-navigation-desktop-20260911/README.md) diff --git a/harness/release-text-repair-save-native-v4-20260911.md b/harness/release-text-repair-save-native-v4-20260911.md new file mode 100644 index 00000000..affb9916 --- /dev/null +++ b/harness/release-text-repair-save-native-v4-20260911.md @@ -0,0 +1,40 @@ +# Repair/save native verification — 2026-09-11 + +Native operator: Codex-9e8r6t `/root`. Independent archive and stored-evidence inspection: Codex-9e8r6t `/root/linux_readiness`. + +The corrected Windows GUI passed three bounded native repair workflows: missing include, duplicate alias, and interrupted-save rollback. Repaired accepted source remained visibly unsaved until explicit Save; attempted Close prompted and Cancel retained the work. After each final visible Save, the complete saved-model/source oracle passed with all four files and authored identities equal to the intended baseline. + +Root operated the native application. This report's author independently inspected stored screenshots and checked the exact saved files, receipts, and archive bytes without rerunning the application or oracle. [The correction report](release-text-repair-save-state-20260911.md) records implementation and the 755-test/Clippy gates; [raw native evidence](experiments/text-navigation-native-20260911/repair-save-native-v4/manifest.json) preserves this trial. + +## Identity and method + +Launch receipt: **2026-09-11 20:52:46 UTC**, PID **10016**, source commit **33c6d83e9ba9a5b1310b1b627d7c40affcbcf15c**. Admission bound the 500 input files and successful gate receipts to input ZIP SHA256 `213fdb39ea7c3601b4baac674c3ab3ecc863ac44db1b092d922d3e24f26887b7`. + +GUI: **113,206,272 bytes**, SHA256 `b183ef31f16b3986538b3f2aba8435eab45978635c47f99ca01be6e72b168848`. The bundled `libunwind.dll` SHA256 was `f45604a12e8bcd839fd86f667c1be1cc7c4f9da2b3c69ff381ac708f0e1ae7d4`. A private profile/TEMP and Windows-only PATH isolated the trial from the development toolchain. All 20 original screenshot captures include their metadata and show a **1442 × 932 outer window**. + +Edits, Apply, Close/Cancel, Recover and Save were performed through the GUI. The helper only launched, copied/read disk checkpoints, ran the pinned saved-equality oracle after the caller confirmed visible Save, and recorded binary readback. Snapshot receipts alone make no Apply or accepted-model claim. The oracle executable was SHA256 `967d9ba3c6fb3a7efb410833903ec94556ca2d48a67d5072c8bb160f40a00f9c`. + +## Observed outcomes + +| Trial | Visible state and before-save disk evidence | Final saved check | +| --- | --- | --- | +| Missing include | Captures 03–05: invalid Open, repaired draft, then Model in sync **and Unsaved changes** after Apply. Disk snapshot at 20:55:26 still contains the broken include. Captures 06–07 show Close warning and Cancel retaining the repair. | Capture 08 shows clean after explicit Save. Oracle at 20:55:51 exits 0; exact valid baseline, complete Project/IDs and all four source files. | +| Duplicate alias | Captures 09–11: invalid Open, duplicate declaration removed, then Model in sync **and Unsaved changes** after Apply. Disk snapshot at 20:57:26 still contains the duplicate declaration. Captures 12–13 show Close warning and Cancel retaining the repair. | Capture 14 shows clean after explicit Save. Oracle at 20:57:52 exits 0; complete valid Project/IDs and four exact files. | +| Journal recovery | Capture 15 and 20:58:52 snapshot retain AFTER plus the three v1 journal files. Capture 16 shows unchanged Apply clean while disk still equals AFTER and the recovery banner remains. Actual Recover removes the journal and restores BEFORE on disk at 20:59:11; capture 17 shows retained AFTER text now **unsaved**, with Model in sync. Captures 18–19 show Close warning and Cancel. | Capture 20 shows clean after explicit Save. Oracle at 20:59:36 exits 0; full intended AFTER Project/IDs and four exact files. | + +The distinguishing pre-save hashes are retained in the checkpoint manifests and copied source: + +- Broken-include entry: `573357995f0a68fef39aa3eef3125e2271242d1ce01607c129624399b77e682e`. +- Duplicate `救援/confirm.arcadia`: `ba3e222bdc7dfa94e4f1b16df091447835da6b5bea8a72701e12e077e77319a6`. +- Recovery BEFORE entry: `6e9abf4ecf24175b9f04a8db11fe182146581059628eb8769e869597401f262e`. +- Valid/AFTER entry after final Save: `79e26836c048a35aaf98b21ff006ae8ac931160abd9913b9e67b542303215414`. + +Root then closed the window normally and independently observed window/PID absence. The 20:59:59 helper receipt records the caller's absence confirmation and unchanged GUI/DLL bytes. Application stdout and stderr are empty. **No numeric process exit code was observed**; neither the helper nor this report infers one. + +## Scope + +No native failure occurred in these three repair trials. They resolve the false-clean defect observed in [GUI5478's historical native trial](release-text-navigation-native-v3-20260911.md). They do not repeat the entire navigation/engineering trial, establish minimum-size layout behavior, exercise native first-save deletion or injected reload failure, or establish package/release acceptance. The earlier GUI5478 record retains its own navigation/engineering scope. Linux/WSL remained paused. + +The archive retains preparation helpers and their original **pre-launch** README, all 64 frozen fixture files, all seven checkpoints, all 20 JPEG/metadata pairs, launch/admission/close receipts and empty/raw logs. The historical preparation README remains explicitly historical. Redundant final trial model trees are omitted only after exact byte equality with preserved fixtures/checkpoints was verified. Binaries/profile/cache are excluded; executable identity remains in receipts. No originals were removed. + +Archive verification passed for **166 payload files / 2,421,715 bytes**, plus manifest/readback. Manifest SHA256: `3a32afc0d93dafdead2066a7d1fddaf5fedddf99cf4a9b481cd7691007b6f9d9`. Readback SHA256: `b726cb6e8338488636fdd08c5254367fa44981aad19af18509839f7cf424a2cc`. The read-only verifier checks every payload, all fixture and checkpoint hashes, screenshot counts/dimensions, final four-file equality and the three actual oracle result records without rerunning an oracle. All 53 omitted duplicate trial files were matched to retained bytes. diff --git a/harness/release-text-repair-save-state-20260911.md b/harness/release-text-repair-save-state-20260911.md index f1ac6635..3743d1ac 100644 --- a/harness/release-text-repair-save-state-20260911.md +++ b/harness/release-text-repair-save-state-20260911.md @@ -4,7 +4,8 @@ Codex-9e8r6t `/root`; [issue 6](http://217.177.34.108:3000/sorokin.oleg.edu/ARCA The correction keeps repaired source unsaved until its current destination actually contains those bytes. It passes all **755 Windows desktop tests** (zero failed, one ignored), strict Clippy, formatting and a matching GUI build. -Native verification of that new executable remains separate and pending. +[Native verification of that executable passed](release-text-repair-save-native-v4-20260911.md) +for missing-include repair, duplicate-alias repair and interrupted-save rollback. ## Problem and correction @@ -59,6 +60,8 @@ Windows gates used the locked offline workspace and one Cargo build job: preserves 29 payloads / 2,583,613 bytes of inputs, receipts, actual streams, helpers and independent review. Manifest SHA256: `cd2d4dc7f5bebd774a09ecde2e103c42cff891e6725da929384f21c5f8468bac`. -No new native, package or Linux result is implied by these gates. Before -publication, repeat repair → Apply → attempted Close/Cancel → explicit Save on -this GUI, compare the complete saved model/source, and check relevant recovery. +The separately recorded [native-v4 trial](release-text-repair-save-native-v4-20260911.md) +confirmed repair → Apply stays unsaved, Close prompts, Cancel retains the work, +and explicit Save passes complete model/source equality in all three cases, +including actual journal recovery. Package/release and Linux acceptance remain +outside these results.