diff --git a/.gitattributes b/.gitattributes index 7da18690..5819a290 100644 --- a/.gitattributes +++ b/.gitattributes @@ -30,6 +30,10 @@ harness/fixtures/scenario-authoring/base/** -text whitespace=cr-at-eol harness/experiments/textual-authoring-20260911/** -text whitespace=cr-at-eol harness/experiments/textual-authoring-20260911/observed/split-entry.arcadia whitespace=-blank-at-eol,cr-at-eol harness/experiments/analysis-context-20260911/** -text whitespace=cr-at-eol +harness/experiments/constructor-defaults-20260911/** -text whitespace=blank-at-eol,blank-at-eof,space-before-tab,cr-at-eol +harness/experiments/constructor-defaults-20260911/results/*.arcadia whitespace=-blank-at-eol,cr-at-eol +harness/experiments/behavior-creation-native-20260911/** -text whitespace=blank-at-eol,blank-at-eof,space-before-tab,cr-at-eol +harness/behavior-creation-contract.rs -text whitespace=cr-at-eol # Preserve checksum-bound font notices verbatim through Git round trips. scripts/windows-notices/GNOME-Cantarell-61362600e104-COPYING -text diff --git a/AGENTS.md b/AGENTS.md index c273b641..d93cddac 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -8,6 +8,7 @@ Use Gitea MCP to coordinate with other agents working on this project. - Respect work already in progress. Coordinate overlapping changes and preserve other agents' edits. - Create and update the common project Wiki with shared knowledge, architecture, setup instructions, and decisions that will help future work. Keep it accurate as the project changes. - Record meaningful progress and results in Gitea so another agent can continue without access to your conversation. Include relevant commits, validation results, and next steps. +- Publish versioned Gitea releases at meaningful, working milestones so the user can see progress and try the application. Include runnable builds or appropriate distributable artifacts, concise release notes, launch instructions, known limitations, and what was verified. Mark unfinished versions as prereleases. Coordinate release ownership to avoid duplicates. - Keep coordination concise and useful. Use the available MCP tools, and report access failures honestly. Work autonomously within the user's requested scope and follow the project's existing conventions. diff --git a/harness/behavior-creation-contract.rs b/harness/behavior-creation-contract.rs index 1615138e..773c6979 100644 --- a/harness/behavior-creation-contract.rs +++ b/harness/behavior-creation-contract.rs @@ -1,5 +1,5 @@ //! Independent native creation oracle; no desktop producer is imported. -//! self-check BASE | check STAGE BASE ACTUAL ROLES | same EXPECTED ACTUAL +//! self-check BASE | check STAGE BASE ACTUAL ROLES | same EXPECTED ACTUAL [UNDO_FROM] use oa_core::{source_project::*, *}; use std::{ collections::{BTreeMap, BTreeSet}, @@ -41,7 +41,9 @@ impl Stage { } } -fn source_paths(root: &Path, here: &Path, paths: &mut BTreeSet) { +type DiskSources = BTreeMap>; + +fn source_paths(root: &Path, here: &Path, paths: &mut DiskSources) { for entry in fs::read_dir(here).unwrap() { let entry = entry.unwrap(); let kind = entry.file_type().unwrap(); @@ -61,11 +63,12 @@ fn source_paths(root: &Path, here: &Path, paths: &mut BTreeSet) { .to_str() .unwrap() .replace('\\', "/"), + fs::read(entry.path()).unwrap(), ); } } } -fn load(entry: &Path) -> CompiledSourceProject { +fn load_checkpoint(entry: &Path) -> (CompiledSourceProject, DiskSources) { let files = source_files::load_project(entry, ProjectLimits::default()).unwrap(); let raw = files.reachable_bundle(); let compiled = compile_bundle(&raw, ProjectLimits::default()).unwrap(); @@ -74,13 +77,30 @@ fn load(entry: &Path) -> CompiledSourceProject { "No migration, normalization or implicit identity insertion" ); execute_batch(&compiled.decoded.project, &[]).unwrap(); - let mut disk = BTreeSet::new(); + let mut disk = BTreeMap::new(); let root = entry.parent().unwrap(); source_paths(root, root, &mut disk); + (compiled, disk) +} +fn predicted_disk(reachable: &SourceBundle, undo_from: Option<&DiskSources>) -> DiskSources { + // Saving Undo writes the restored reachable files and deliberately keeps + // detached files from the previously saved checkpoint. Never infer their + // bytes from the actual Undo directory: its explicit origin is the oracle. + let mut expected = undo_from.cloned().unwrap_or_default(); + expected.extend( + reachable + .files + .iter() + .map(|(path, source)| (path.clone(), source.as_bytes().to_vec())), + ); + expected +} +fn load(entry: &Path) -> CompiledSourceProject { + let (compiled, disk) = load_checkpoint(entry); assert_eq!( disk, - raw.files.keys().cloned().collect(), - "Reject detached extra source files too" + predicted_disk(&compiled.bundle, None), + "Ordinary checkpoints must contain exactly their reachable source files; retained Undo files require an explicit origin" ); compiled } @@ -526,6 +546,76 @@ fn self_check(base: &CompiledSourceProject) { "Reject an altered baseline before use" ); assert_equal(&original, base); + let before = predict(base, Stage::Scenario, &carrier); + let created = predict(base, Stage::Machine, &carrier); + let origin = predicted_disk(&created.bundle, None); + let detached: Vec<_> = created + .bundle + .files + .keys() + .filter(|path| !before.bundle.files.contains_key(*path)) + .cloned() + .collect(); + assert_eq!( + detached.len(), + 1, + "A machine creation adds one source module" + ); + // Independently simulate the saver's observable result: restored reachable + // bytes plus the one new module left on disk by the prior creation. + let mut retained = predicted_disk(&before.bundle, None); + retained.insert( + detached[0].clone(), + created.bundle.files[&detached[0]].as_bytes().to_vec(), + ); + assert_eq!( + retained[&detached[0]], origin[&detached[0]], + "Retained bytes must come from the exact created checkpoint" + ); + assert_ne!( + retained, + predicted_disk(&before.bundle, None), + "Ordinary comparison must not accept detached history files" + ); + assert_eq!( + retained, + predicted_disk(&before.bundle, Some(&origin)), + "Explicit Undo origin permits only the expected retained bytes" + ); + let mut unknown = retained.clone(); + unknown.insert("unknown.arcadia".into(), b"// Unclaimed file\n".to_vec()); + assert_ne!( + unknown, + predicted_disk(&before.bundle, Some(&origin)), + "Reject unknown detached files" + ); + let mut changed = retained.clone(); + changed.get_mut(&detached[0]).unwrap().push(b' '); + assert_ne!( + changed, + predicted_disk(&before.bundle, Some(&origin)), + "Reject changed detached bytes" + ); + let mut missing = retained.clone(); + missing.remove(&detached[0]); + assert_ne!( + missing, + predicted_disk(&before.bundle, Some(&origin)), + "The retained file set is exact, not optional" + ); + let mut reachable_drift = retained.clone(); + reachable_drift + .get_mut("rationale.arcadia") + .unwrap() + .push(b' '); + assert_ne!( + reachable_drift, + predicted_disk(&before.bundle, Some(&origin)), + "An Undo exemption cannot hide reachable-source changes" + ); + println!( + "PASS explicit Undo disk contract: known detached retention accepted; unknown, changed, missing and reachable drift rejected" + ); println!("PASS baseline retained unchanged; no native acceptance claimed"); } fn main() { @@ -554,15 +644,33 @@ fn main() { ); } Some("same") => { - assert_eq!(args.len(), 4, "same EXPECTED_CHECKPOINT ACTUAL_CHECKPOINT"); + assert!( + matches!(args.len(), 4 | 5), + "same EXPECTED_CHECKPOINT ACTUAL_CHECKPOINT [UNDO_FROM_CHECKPOINT]" + ); let expected = load(Path::new(&args[2])); - let actual = load(Path::new(&args[3])); + let (actual, disk) = load_checkpoint(Path::new(&args[3])); assert_equal(&expected, &actual); + let origin = args.get(4).map(|entry| { + // The first committed checkpoint is itself exact. This keeps + // arbitrary pre-existing detached files out of the exception. + let committed = load(Path::new(entry)); + predicted_disk(&committed.bundle, None) + }); + assert_eq!( + disk, + predicted_disk(&expected.bundle, origin.as_ref()), + "Disk source files differ from the exact checkpoint plus explicitly proven retained Undo files" + ); println!( - "PASS exact checkpoint identity/model/{}-file SourceBundle equality", - actual.bundle.files.len() + "PASS exact checkpoint identity/model/{}-file SourceBundle equality; {} exact disk files ({} known retained)", + actual.bundle.files.len(), + disk.len(), + disk.len() - actual.bundle.files.len() ); } - _ => panic!("self-check BASE | check STAGE BASE ACTUAL ROLES | same EXPECTED ACTUAL"), + _ => panic!( + "self-check BASE | check STAGE BASE ACTUAL ROLES | same EXPECTED ACTUAL [UNDO_FROM]" + ), } } diff --git a/harness/experiments/behavior-creation-native-20260911/manifest.json b/harness/experiments/behavior-creation-native-20260911/manifest.json new file mode 100644 index 00000000..799b9774 --- /dev/null +++ b/harness/experiments/behavior-creation-native-20260911/manifest.json @@ -0,0 +1,671 @@ +{ + "reviewer": "Codex-9e8r6t /root/palette_finish", + "started_utc": "2026-09-11T09:18:19.944507+00:00", + "finished_utc": "2026-09-11T09:18:23.213965+00:00", + "scope": "Frozen checkpoints only; no live work/profile/UI access or compilation.", + "artifacts": [ + { + "path": ".local/behavior-creation-oracle-20260911/behavior-creation-contract-v2.exe", + "bytes": 20757504, + "sha256": "056eefd444924916bf6ac3c4897ab2ff4a8a4bb892e1dbc16adad32e59bf6a36" + }, + { + "path": "harness/behavior-creation-contract.rs", + "bytes": 23982, + "sha256": "51ab2ffa1826dd949b79f3a9690042a2f9e38daf9ed91517cade3861482117ba" + }, + { + "path": "harness/experiments/behavior-creation-native-20260911/verify.py", + "bytes": 5348, + "sha256": "4921c4615071240c3ac3bbe1223c0db3bf472fe5e3eec2ae5dac12f95b1674df" + }, + { + "path": ".local/native-qa/behavior-20260911-v4/bin/arcadia-studio.exe", + "bytes": 111163904, + "sha256": "d4d9c2bd937e301ff1009d7cb93a34ee5aa6dfc837ff7e87d468c85371b20c31" + }, + { + "path": ".local/native-qa/behavior-20260911-v4/bin/libunwind.dll", + "bytes": 190976, + "sha256": "f45604a12e8bcd839fd86f667c1be1cc7c4f9da2b3c69ff381ac708f0e1ae7d4" + }, + { + "path": ".local/native-qa/behavior-20260911-v4/bin/manifest.json", + "bytes": 41579, + "sha256": "e0470afae0ae21941ac6da63fadfb3c70d0ce646317c65fafa5c186e94f18fe2" + }, + { + "path": ".local/native-qa/behavior-20260911-v4/baseline-source-manifest.json", + "bytes": 927, + "sha256": "7b5bcd66739ad9f3ddaa3a50db7a4bba3be144d13d161e1db85d2d43f3038259" + }, + { + "path": ".local/native-qa/behavior-20260911-v4/cancel-save-verification.json", + "bytes": 1439, + "sha256": "5fb79d14a000fa0ecc046fba64bcd2846d3bc2eb8708a88e334db0ede4ce16a1" + }, + { + "path": ".local/native-qa/behavior-20260911-v4/scenario-empty-saved.png", + "bytes": 90419, + "sha256": "b03fb33d3f4cf1e5f95e7ac4198a4dee30ffd9af5e250d481e0d5dc2a2a0f90c" + }, + { + "path": ".local/native-qa/behavior-20260911-v4/machine-created-saved.png", + "bytes": 98897, + "sha256": "1e7af3d6219c430eaafb0de5afd8df4c51b4efeb80de3f642084188633dcb65b" + } + ], + "checkpoints": { + "baseline": { + "path": ".local/native-qa/palette-20260910-v3/checkpoint-transition-reopen", + "files": { + "oa/activities/activity_assess_incident.arcadia": { + "bytes": 376, + "sha256": "ae41d7c20b062b39c2edab7fb890a3d88a9ce18fd8d03018ef2d6f95eeff62e8" + }, + "oa/participants.arcadia": { + "bytes": 403, + "sha256": "094cab67f34b64902942c10a35bbcd0f760886d862588a0816d6ceb57bacf51b" + }, + "project.arcadia": { + "bytes": 4844, + "sha256": "b35a3f63f223cc4fe2760d6308e87b016ed1eadfbef0a3a4bd051b52c9080958" + }, + "rationale.arcadia": { + "bytes": 57, + "sha256": "c01867c9dc0d40726853119fac3c6ad24a40d8d362a93a8b9d20df04ec2e273f" + }, + "sa/participants.arcadia": { + "bytes": 124, + "sha256": "fb975b83d3ec164c38936bf27fe7d2021cc46805574902a534744b040f7d3ae8" + }, + "traceability.arcadia": { + "bytes": 395, + "sha256": "f778acaaa85de0940cedcd9514cd803032a11e782d859454203235febb73e5f0" + } + } + }, + "process": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-process", + "files": { + "oa/activities/activity_assess_incident.arcadia": { + "bytes": 376, + "sha256": "ae41d7c20b062b39c2edab7fb890a3d88a9ce18fd8d03018ef2d6f95eeff62e8" + }, + "oa/behavior/process_coordinate_rescue.arcadia": { + "bytes": 149, + "sha256": "8f393d1cee5e7eed5e41af14539b1fe7ae1c7300dd9383ca0ef1ee17254b6253" + }, + "oa/participants.arcadia": { + "bytes": 403, + "sha256": "094cab67f34b64902942c10a35bbcd0f760886d862588a0816d6ceb57bacf51b" + }, + "project.arcadia": { + "bytes": 4906, + "sha256": "961d99c287dd7728c8ece8b20ca1a7965ac2d0581b3eaedf11a2b243975b0ea8" + }, + "rationale.arcadia": { + "bytes": 57, + "sha256": "c01867c9dc0d40726853119fac3c6ad24a40d8d362a93a8b9d20df04ec2e273f" + }, + "sa/participants.arcadia": { + "bytes": 124, + "sha256": "fb975b83d3ec164c38936bf27fe7d2021cc46805574902a534744b040f7d3ae8" + }, + "traceability.arcadia": { + "bytes": 395, + "sha256": "f778acaaa85de0940cedcd9514cd803032a11e782d859454203235febb73e5f0" + } + } + }, + "process-undo": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-process-undo", + "files": { + "oa/activities/activity_assess_incident.arcadia": { + "bytes": 376, + "sha256": "ae41d7c20b062b39c2edab7fb890a3d88a9ce18fd8d03018ef2d6f95eeff62e8" + }, + "oa/behavior/process_coordinate_rescue.arcadia": { + "bytes": 149, + "sha256": "8f393d1cee5e7eed5e41af14539b1fe7ae1c7300dd9383ca0ef1ee17254b6253" + }, + "oa/participants.arcadia": { + "bytes": 403, + "sha256": "094cab67f34b64902942c10a35bbcd0f760886d862588a0816d6ceb57bacf51b" + }, + "project.arcadia": { + "bytes": 4844, + "sha256": "b35a3f63f223cc4fe2760d6308e87b016ed1eadfbef0a3a4bd051b52c9080958" + }, + "rationale.arcadia": { + "bytes": 57, + "sha256": "c01867c9dc0d40726853119fac3c6ad24a40d8d362a93a8b9d20df04ec2e273f" + }, + "sa/participants.arcadia": { + "bytes": 124, + "sha256": "fb975b83d3ec164c38936bf27fe7d2021cc46805574902a534744b040f7d3ae8" + }, + "traceability.arcadia": { + "bytes": 395, + "sha256": "f778acaaa85de0940cedcd9514cd803032a11e782d859454203235febb73e5f0" + } + } + }, + "process-redo": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-process-redo", + "files": { + "oa/activities/activity_assess_incident.arcadia": { + "bytes": 376, + "sha256": "ae41d7c20b062b39c2edab7fb890a3d88a9ce18fd8d03018ef2d6f95eeff62e8" + }, + "oa/behavior/process_coordinate_rescue.arcadia": { + "bytes": 149, + "sha256": "8f393d1cee5e7eed5e41af14539b1fe7ae1c7300dd9383ca0ef1ee17254b6253" + }, + "oa/participants.arcadia": { + "bytes": 403, + "sha256": "094cab67f34b64902942c10a35bbcd0f760886d862588a0816d6ceb57bacf51b" + }, + "project.arcadia": { + "bytes": 4906, + "sha256": "961d99c287dd7728c8ece8b20ca1a7965ac2d0581b3eaedf11a2b243975b0ea8" + }, + "rationale.arcadia": { + "bytes": 57, + "sha256": "c01867c9dc0d40726853119fac3c6ad24a40d8d362a93a8b9d20df04ec2e273f" + }, + "sa/participants.arcadia": { + "bytes": 124, + "sha256": "fb975b83d3ec164c38936bf27fe7d2021cc46805574902a534744b040f7d3ae8" + }, + "traceability.arcadia": { + "bytes": 395, + "sha256": "f778acaaa85de0940cedcd9514cd803032a11e782d859454203235febb73e5f0" + } + } + }, + "scenario": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-scenario", + "files": { + "oa/activities/activity_assess_incident.arcadia": { + "bytes": 376, + "sha256": "ae41d7c20b062b39c2edab7fb890a3d88a9ce18fd8d03018ef2d6f95eeff62e8" + }, + "oa/behavior/process_coordinate_rescue.arcadia": { + "bytes": 149, + "sha256": "8f393d1cee5e7eed5e41af14539b1fe7ae1c7300dd9383ca0ef1ee17254b6253" + }, + "oa/behavior/scenario_rescue_coordination_conversation.arcadia": { + "bytes": 284, + "sha256": "8eed98446dfb4f4dbd5261f550ce8cae1a21d638975d91b32baaf6f309daba98" + }, + "oa/participants.arcadia": { + "bytes": 403, + "sha256": "094cab67f34b64902942c10a35bbcd0f760886d862588a0816d6ceb57bacf51b" + }, + "project.arcadia": { + "bytes": 4984, + "sha256": "1fa6dd826fd53ccdf3c93cfdcdd657487e344313d76dabe0c438e08128851ee6" + }, + "rationale.arcadia": { + "bytes": 57, + "sha256": "c01867c9dc0d40726853119fac3c6ad24a40d8d362a93a8b9d20df04ec2e273f" + }, + "sa/participants.arcadia": { + "bytes": 124, + "sha256": "fb975b83d3ec164c38936bf27fe7d2021cc46805574902a534744b040f7d3ae8" + }, + "traceability.arcadia": { + "bytes": 395, + "sha256": "f778acaaa85de0940cedcd9514cd803032a11e782d859454203235febb73e5f0" + } + } + }, + "scenario-undo": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-scenario-undo", + "files": { + "oa/activities/activity_assess_incident.arcadia": { + "bytes": 376, + "sha256": "ae41d7c20b062b39c2edab7fb890a3d88a9ce18fd8d03018ef2d6f95eeff62e8" + }, + "oa/behavior/process_coordinate_rescue.arcadia": { + "bytes": 149, + "sha256": "8f393d1cee5e7eed5e41af14539b1fe7ae1c7300dd9383ca0ef1ee17254b6253" + }, + "oa/behavior/scenario_rescue_coordination_conversation.arcadia": { + "bytes": 284, + "sha256": "8eed98446dfb4f4dbd5261f550ce8cae1a21d638975d91b32baaf6f309daba98" + }, + "oa/participants.arcadia": { + "bytes": 403, + "sha256": "094cab67f34b64902942c10a35bbcd0f760886d862588a0816d6ceb57bacf51b" + }, + "project.arcadia": { + "bytes": 4906, + "sha256": "961d99c287dd7728c8ece8b20ca1a7965ac2d0581b3eaedf11a2b243975b0ea8" + }, + "rationale.arcadia": { + "bytes": 57, + "sha256": "c01867c9dc0d40726853119fac3c6ad24a40d8d362a93a8b9d20df04ec2e273f" + }, + "sa/participants.arcadia": { + "bytes": 124, + "sha256": "fb975b83d3ec164c38936bf27fe7d2021cc46805574902a534744b040f7d3ae8" + }, + "traceability.arcadia": { + "bytes": 395, + "sha256": "f778acaaa85de0940cedcd9514cd803032a11e782d859454203235febb73e5f0" + } + } + }, + "scenario-redo": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-scenario-redo", + "files": { + "oa/activities/activity_assess_incident.arcadia": { + "bytes": 376, + "sha256": "ae41d7c20b062b39c2edab7fb890a3d88a9ce18fd8d03018ef2d6f95eeff62e8" + }, + "oa/behavior/process_coordinate_rescue.arcadia": { + "bytes": 149, + "sha256": "8f393d1cee5e7eed5e41af14539b1fe7ae1c7300dd9383ca0ef1ee17254b6253" + }, + "oa/behavior/scenario_rescue_coordination_conversation.arcadia": { + "bytes": 284, + "sha256": "8eed98446dfb4f4dbd5261f550ce8cae1a21d638975d91b32baaf6f309daba98" + }, + "oa/participants.arcadia": { + "bytes": 403, + "sha256": "094cab67f34b64902942c10a35bbcd0f760886d862588a0816d6ceb57bacf51b" + }, + "project.arcadia": { + "bytes": 4984, + "sha256": "1fa6dd826fd53ccdf3c93cfdcdd657487e344313d76dabe0c438e08128851ee6" + }, + "rationale.arcadia": { + "bytes": 57, + "sha256": "c01867c9dc0d40726853119fac3c6ad24a40d8d362a93a8b9d20df04ec2e273f" + }, + "sa/participants.arcadia": { + "bytes": 124, + "sha256": "fb975b83d3ec164c38936bf27fe7d2021cc46805574902a534744b040f7d3ae8" + }, + "traceability.arcadia": { + "bytes": 395, + "sha256": "f778acaaa85de0940cedcd9514cd803032a11e782d859454203235febb73e5f0" + } + } + }, + "machine": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-machine", + "files": { + "oa/activities/activity_assess_incident.arcadia": { + "bytes": 376, + "sha256": "ae41d7c20b062b39c2edab7fb890a3d88a9ce18fd8d03018ef2d6f95eeff62e8" + }, + "oa/behavior/process_coordinate_rescue.arcadia": { + "bytes": 149, + "sha256": "8f393d1cee5e7eed5e41af14539b1fe7ae1c7300dd9383ca0ef1ee17254b6253" + }, + "oa/behavior/scenario_rescue_coordination_conversation.arcadia": { + "bytes": 284, + "sha256": "8eed98446dfb4f4dbd5261f550ce8cae1a21d638975d91b32baaf6f309daba98" + }, + "oa/participants.arcadia": { + "bytes": 403, + "sha256": "094cab67f34b64902942c10a35bbcd0f760886d862588a0816d6ceb57bacf51b" + }, + "project.arcadia": { + "bytes": 5057, + "sha256": "59b61b321b0cf4817c1ff9276fa59deafc09518765e761a2ebd9e5602afab9cb" + }, + "rationale.arcadia": { + "bytes": 57, + "sha256": "c01867c9dc0d40726853119fac3c6ad24a40d8d362a93a8b9d20df04ec2e273f" + }, + "sa/participants.arcadia": { + "bytes": 285, + "sha256": "9b77b88f66e4e80540ae33b83f1af1f3edcd37dafb98c33a861d4c34c66d2559" + }, + "traceability.arcadia": { + "bytes": 395, + "sha256": "f778acaaa85de0940cedcd9514cd803032a11e782d859454203235febb73e5f0" + }, + "views/diagram_rescue_team_operating_modes_states.arcadia": { + "bytes": 842, + "sha256": "498eab80da7ac4523883622a0d008b9033a1305e5bb5f168b8e9d4c41dde62de" + } + } + }, + "machine-undo": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-machine-undo", + "files": { + "oa/activities/activity_assess_incident.arcadia": { + "bytes": 376, + "sha256": "ae41d7c20b062b39c2edab7fb890a3d88a9ce18fd8d03018ef2d6f95eeff62e8" + }, + "oa/behavior/process_coordinate_rescue.arcadia": { + "bytes": 149, + "sha256": "8f393d1cee5e7eed5e41af14539b1fe7ae1c7300dd9383ca0ef1ee17254b6253" + }, + "oa/behavior/scenario_rescue_coordination_conversation.arcadia": { + "bytes": 284, + "sha256": "8eed98446dfb4f4dbd5261f550ce8cae1a21d638975d91b32baaf6f309daba98" + }, + "oa/participants.arcadia": { + "bytes": 403, + "sha256": "094cab67f34b64902942c10a35bbcd0f760886d862588a0816d6ceb57bacf51b" + }, + "project.arcadia": { + "bytes": 4984, + "sha256": "1fa6dd826fd53ccdf3c93cfdcdd657487e344313d76dabe0c438e08128851ee6" + }, + "rationale.arcadia": { + "bytes": 57, + "sha256": "c01867c9dc0d40726853119fac3c6ad24a40d8d362a93a8b9d20df04ec2e273f" + }, + "sa/participants.arcadia": { + "bytes": 124, + "sha256": "fb975b83d3ec164c38936bf27fe7d2021cc46805574902a534744b040f7d3ae8" + }, + "traceability.arcadia": { + "bytes": 395, + "sha256": "f778acaaa85de0940cedcd9514cd803032a11e782d859454203235febb73e5f0" + }, + "views/diagram_rescue_team_operating_modes_states.arcadia": { + "bytes": 842, + "sha256": "498eab80da7ac4523883622a0d008b9033a1305e5bb5f168b8e9d4c41dde62de" + } + } + }, + "machine-redo": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-machine-redo", + "files": { + "oa/activities/activity_assess_incident.arcadia": { + "bytes": 376, + "sha256": "ae41d7c20b062b39c2edab7fb890a3d88a9ce18fd8d03018ef2d6f95eeff62e8" + }, + "oa/behavior/process_coordinate_rescue.arcadia": { + "bytes": 149, + "sha256": "8f393d1cee5e7eed5e41af14539b1fe7ae1c7300dd9383ca0ef1ee17254b6253" + }, + "oa/behavior/scenario_rescue_coordination_conversation.arcadia": { + "bytes": 284, + "sha256": "8eed98446dfb4f4dbd5261f550ce8cae1a21d638975d91b32baaf6f309daba98" + }, + "oa/participants.arcadia": { + "bytes": 403, + "sha256": "094cab67f34b64902942c10a35bbcd0f760886d862588a0816d6ceb57bacf51b" + }, + "project.arcadia": { + "bytes": 5057, + "sha256": "59b61b321b0cf4817c1ff9276fa59deafc09518765e761a2ebd9e5602afab9cb" + }, + "rationale.arcadia": { + "bytes": 57, + "sha256": "c01867c9dc0d40726853119fac3c6ad24a40d8d362a93a8b9d20df04ec2e273f" + }, + "sa/participants.arcadia": { + "bytes": 285, + "sha256": "9b77b88f66e4e80540ae33b83f1af1f3edcd37dafb98c33a861d4c34c66d2559" + }, + "traceability.arcadia": { + "bytes": 395, + "sha256": "f778acaaa85de0940cedcd9514cd803032a11e782d859454203235febb73e5f0" + }, + "views/diagram_rescue_team_operating_modes_states.arcadia": { + "bytes": 842, + "sha256": "498eab80da7ac4523883622a0d008b9033a1305e5bb5f168b8e9d4c41dde62de" + } + } + }, + "creation-reopen": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-creation-reopen", + "files": { + "oa/activities/activity_assess_incident.arcadia": { + "bytes": 376, + "sha256": "ae41d7c20b062b39c2edab7fb890a3d88a9ce18fd8d03018ef2d6f95eeff62e8" + }, + "oa/behavior/process_coordinate_rescue.arcadia": { + "bytes": 149, + "sha256": "8f393d1cee5e7eed5e41af14539b1fe7ae1c7300dd9383ca0ef1ee17254b6253" + }, + "oa/behavior/scenario_rescue_coordination_conversation.arcadia": { + "bytes": 284, + "sha256": "8eed98446dfb4f4dbd5261f550ce8cae1a21d638975d91b32baaf6f309daba98" + }, + "oa/participants.arcadia": { + "bytes": 403, + "sha256": "094cab67f34b64902942c10a35bbcd0f760886d862588a0816d6ceb57bacf51b" + }, + "project.arcadia": { + "bytes": 5057, + "sha256": "59b61b321b0cf4817c1ff9276fa59deafc09518765e761a2ebd9e5602afab9cb" + }, + "rationale.arcadia": { + "bytes": 57, + "sha256": "c01867c9dc0d40726853119fac3c6ad24a40d8d362a93a8b9d20df04ec2e273f" + }, + "sa/participants.arcadia": { + "bytes": 285, + "sha256": "9b77b88f66e4e80540ae33b83f1af1f3edcd37dafb98c33a861d4c34c66d2559" + }, + "traceability.arcadia": { + "bytes": 395, + "sha256": "f778acaaa85de0940cedcd9514cd803032a11e782d859454203235febb73e5f0" + }, + "views/diagram_rescue_team_operating_modes_states.arcadia": { + "bytes": 842, + "sha256": "498eab80da7ac4523883622a0d008b9033a1305e5bb5f168b8e9d4c41dde62de" + } + } + } + }, + "commands": [ + { + "label": "self-check", + "command_argv": [ + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\behavior-creation-oracle-20260911\\behavior-creation-contract-v2.exe", + "self-check", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\palette-20260910-v3\\checkpoint-transition-reopen\\project.arcadia" + ], + "exit_code": 0, + "elapsed_seconds": 0.967588, + "stdout": "PASS self-check Process: full source fixed point; false metadata, unrelated edits and source-only drift rejected\nPASS self-check Scenario: full source fixed point; false metadata, unrelated edits and source-only drift rejected\nPREDICT first view: Rescue team operating modes \u00b7 states; machine-root position Position { x: 60.0, y: 60.0 }, size Size { width: 336.0, height: 104.0 }; 9 exact source files\nPASS self-check Machine: full source fixed point; false metadata, unrelated edits and source-only drift rejected\nPASS explicit Undo disk contract: known detached retention accepted; unknown, changed, missing and reachable drift rejected\nPASS baseline retained unchanged; no native acceptance claimed\n", + "stderr": "" + }, + { + "label": "baseline", + "command_argv": [ + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\behavior-creation-oracle-20260911\\behavior-creation-contract-v2.exe", + "check", + "baseline", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\palette-20260910-v3\\checkpoint-transition-reopen\\project.arcadia", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\palette-20260910-v3\\checkpoint-transition-reopen\\project.arcadia", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\palette-20260910-v3\\checkpoint-transition-reopen\\project.arcadia" + ], + "exit_code": 0, + "elapsed_seconds": 0.119426, + "stdout": "PASS Baseline: complete Project + 6 exact source files; only fresh literal-role UUIDs borrowed\n", + "stderr": "" + }, + { + "label": "process", + "command_argv": [ + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\behavior-creation-oracle-20260911\\behavior-creation-contract-v2.exe", + "check", + "process", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\palette-20260910-v3\\checkpoint-transition-reopen\\project.arcadia", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\behavior-20260911-v4\\checkpoint-process\\project.arcadia", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\behavior-20260911-v4\\checkpoint-process\\project.arcadia" + ], + "exit_code": 0, + "elapsed_seconds": 0.163785, + "stdout": "PASS Process: complete Project + 7 exact source files; only fresh literal-role UUIDs borrowed\n", + "stderr": "" + }, + { + "label": "process-undo", + "command_argv": [ + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\behavior-creation-oracle-20260911\\behavior-creation-contract-v2.exe", + "same", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\palette-20260910-v3\\checkpoint-transition-reopen\\project.arcadia", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\behavior-20260911-v4\\checkpoint-process-undo\\project.arcadia", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\behavior-20260911-v4\\checkpoint-process\\project.arcadia" + ], + "exit_code": 0, + "elapsed_seconds": 0.155607, + "stdout": "PASS exact checkpoint identity/model/6-file SourceBundle equality; 7 exact disk files (1 known retained)\n", + "stderr": "" + }, + { + "label": "process-redo", + "command_argv": [ + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\behavior-creation-oracle-20260911\\behavior-creation-contract-v2.exe", + "check", + "process", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\palette-20260910-v3\\checkpoint-transition-reopen\\project.arcadia", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\behavior-20260911-v4\\checkpoint-process-redo\\project.arcadia", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\behavior-20260911-v4\\checkpoint-process\\project.arcadia" + ], + "exit_code": 0, + "elapsed_seconds": 0.187937, + "stdout": "PASS Process: complete Project + 7 exact source files; only fresh literal-role UUIDs borrowed\n", + "stderr": "" + }, + { + "label": "scenario", + "command_argv": [ + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\behavior-creation-oracle-20260911\\behavior-creation-contract-v2.exe", + "check", + "scenario", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\palette-20260910-v3\\checkpoint-transition-reopen\\project.arcadia", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\behavior-20260911-v4\\checkpoint-scenario\\project.arcadia", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\behavior-20260911-v4\\checkpoint-scenario\\project.arcadia" + ], + "exit_code": 0, + "elapsed_seconds": 0.253057, + "stdout": "PASS Scenario: complete Project + 8 exact source files; only fresh literal-role UUIDs borrowed\n", + "stderr": "" + }, + { + "label": "scenario-undo", + "command_argv": [ + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\behavior-creation-oracle-20260911\\behavior-creation-contract-v2.exe", + "same", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\behavior-20260911-v4\\checkpoint-process\\project.arcadia", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\behavior-20260911-v4\\checkpoint-scenario-undo\\project.arcadia", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\behavior-20260911-v4\\checkpoint-scenario\\project.arcadia" + ], + "exit_code": 0, + "elapsed_seconds": 0.160712, + "stdout": "PASS exact checkpoint identity/model/7-file SourceBundle equality; 8 exact disk files (1 known retained)\n", + "stderr": "" + }, + { + "label": "scenario-redo", + "command_argv": [ + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\behavior-creation-oracle-20260911\\behavior-creation-contract-v2.exe", + "check", + "scenario", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\palette-20260910-v3\\checkpoint-transition-reopen\\project.arcadia", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\behavior-20260911-v4\\checkpoint-scenario-redo\\project.arcadia", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\behavior-20260911-v4\\checkpoint-scenario\\project.arcadia" + ], + "exit_code": 0, + "elapsed_seconds": 0.222, + "stdout": "PASS Scenario: complete Project + 8 exact source files; only fresh literal-role UUIDs borrowed\n", + "stderr": "" + }, + { + "label": "machine", + "command_argv": [ + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\behavior-creation-oracle-20260911\\behavior-creation-contract-v2.exe", + "check", + "machine", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\palette-20260910-v3\\checkpoint-transition-reopen\\project.arcadia", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\behavior-20260911-v4\\checkpoint-machine\\project.arcadia", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\behavior-20260911-v4\\checkpoint-machine\\project.arcadia" + ], + "exit_code": 0, + "elapsed_seconds": 0.266748, + "stdout": "PASS Machine: complete Project + 9 exact source files; only fresh literal-role UUIDs borrowed\n", + "stderr": "" + }, + { + "label": "machine-undo", + "command_argv": [ + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\behavior-creation-oracle-20260911\\behavior-creation-contract-v2.exe", + "same", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\behavior-20260911-v4\\checkpoint-scenario\\project.arcadia", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\behavior-20260911-v4\\checkpoint-machine-undo\\project.arcadia", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\behavior-20260911-v4\\checkpoint-machine\\project.arcadia" + ], + "exit_code": 0, + "elapsed_seconds": 0.122982, + "stdout": "PASS exact checkpoint identity/model/8-file SourceBundle equality; 9 exact disk files (1 known retained)\n", + "stderr": "" + }, + { + "label": "machine-redo", + "command_argv": [ + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\behavior-creation-oracle-20260911\\behavior-creation-contract-v2.exe", + "check", + "machine", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\palette-20260910-v3\\checkpoint-transition-reopen\\project.arcadia", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\behavior-20260911-v4\\checkpoint-machine-redo\\project.arcadia", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\behavior-20260911-v4\\checkpoint-machine\\project.arcadia" + ], + "exit_code": 0, + "elapsed_seconds": 0.229706, + "stdout": "PASS Machine: complete Project + 9 exact source files; only fresh literal-role UUIDs borrowed\n", + "stderr": "" + }, + { + "label": "reopen-contract", + "command_argv": [ + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\behavior-creation-oracle-20260911\\behavior-creation-contract-v2.exe", + "check", + "machine", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\palette-20260910-v3\\checkpoint-transition-reopen\\project.arcadia", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\behavior-20260911-v4\\checkpoint-creation-reopen\\project.arcadia", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\behavior-20260911-v4\\checkpoint-machine\\project.arcadia" + ], + "exit_code": 0, + "elapsed_seconds": 0.192465, + "stdout": "PASS Machine: complete Project + 9 exact source files; only fresh literal-role UUIDs borrowed\n", + "stderr": "" + }, + { + "label": "reopen-exact-redo", + "command_argv": [ + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\behavior-creation-oracle-20260911\\behavior-creation-contract-v2.exe", + "same", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\behavior-20260911-v4\\checkpoint-machine-redo\\project.arcadia", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\behavior-20260911-v4\\checkpoint-creation-reopen\\project.arcadia" + ], + "exit_code": 0, + "elapsed_seconds": 0.131742, + "stdout": "PASS exact checkpoint identity/model/9-file SourceBundle equality; 9 exact disk files (0 known retained)\n", + "stderr": "" + } + ], + "all_checkpoint_files_unchanged": true, + "machine_redo_reopen_inventory_equal": true, + "machine_redo_reopen_direct_byte_comparisons": { + "oa/activities/activity_assess_incident.arcadia": true, + "oa/behavior/process_coordinate_rescue.arcadia": true, + "oa/behavior/scenario_rescue_coordination_conversation.arcadia": true, + "oa/participants.arcadia": true, + "project.arcadia": true, + "rationale.arcadia": true, + "sa/participants.arcadia": true, + "traceability.arcadia": true, + "views/diagram_rescue_team_operating_modes_states.arcadia": true + }, + "log": { + "path": "harness/experiments/behavior-creation-native-20260911/commands-results.log", + "bytes": 9392, + "sha256": "f5bfbee185f7064419b1bd9fe33ec6a48526b5bbe3f818c006feb74eddf8e189" + }, + "pass": true +} diff --git a/harness/experiments/behavior-creation-native-20260911/recovery-manifest.json b/harness/experiments/behavior-creation-native-20260911/recovery-manifest.json new file mode 100644 index 00000000..febbe73c --- /dev/null +++ b/harness/experiments/behavior-creation-native-20260911/recovery-manifest.json @@ -0,0 +1,200 @@ +{ + "reviewer": "Codex-9e8r6t /root/palette_finish", + "started_utc": "2026-09-11T09:22:33.387447+00:00", + "finished_utc": "2026-09-11T09:22:34.502189+00:00", + "scope": "Immutable evidence only; native observations supplied separately by root. No live work/profile/UI/Cargo access; no persisted Undo claim.", + "artifacts": [ + { + "path": "harness/experiments/behavior-creation-native-20260911/verify-recovery.py", + "bytes": 5560, + "sha256": "3546b4fe68d3e1a2474015be1b652a665af238e5fcf63e04bac3f25df3d35e90" + }, + { + "path": "harness/experiments/behavior-creation-native-20260911/manifest.json", + "bytes": 30406, + "sha256": "356dfbb27dec04764a4b3f2372602f39953b472baac0a3de3e72acd9c1d76b8a" + }, + { + "path": ".local/behavior-creation-oracle-20260911/behavior-creation-contract-v2.exe", + "bytes": 20757504, + "sha256": "056eefd444924916bf6ac3c4897ab2ff4a8a4bb892e1dbc16adad32e59bf6a36" + }, + { + "path": ".local/native-qa/behavior-20260911-v4/recovery-evidence/before-interruption.json", + "bytes": 27382, + "sha256": "0c355aa3c7b9be623d767ff35c4b85cf7b2907eb9bc3be39d619aa610c989692" + }, + { + "path": ".local/native-qa/behavior-20260911-v4/recovery-evidence/after-recovery-and-typing.json", + "bytes": 27263, + "sha256": "fafa7a884275bac09afab365f8ab0063f998ca56c5ffc70be596db6f78a10103" + }, + { + "path": ".local/native-qa/behavior-20260911-v4/recovery-evidence/restored-draft.png", + "bytes": 113820, + "sha256": "8ae0fe8957d5a935b6e2605a6ffb68934bd0e8840f3594c43e63865ab89d03c9" + }, + { + "path": ".local/native-qa/behavior-20260911-v4/recovery-launch.json", + "bytes": 812, + "sha256": "641ff05ea50d551a51e642f728650cf254dbf131cfb2f585865db436a8877396" + }, + { + "path": ".local/native-qa/behavior-20260911-v4/bin/arcadia-studio.exe", + "bytes": 111163904, + "sha256": "d4d9c2bd937e301ff1009d7cb93a34ee5aa6dfc837ff7e87d468c85371b20c31" + } + ], + "input_file_inventories": { + ".local\\native-qa\\behavior-20260911-v4\\checkpoint-creation-reopen": { + "oa/activities/activity_assess_incident.arcadia": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-creation-reopen/oa/activities/activity_assess_incident.arcadia", + "bytes": 376, + "sha256": "ae41d7c20b062b39c2edab7fb890a3d88a9ce18fd8d03018ef2d6f95eeff62e8" + }, + "oa/behavior/process_coordinate_rescue.arcadia": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-creation-reopen/oa/behavior/process_coordinate_rescue.arcadia", + "bytes": 149, + "sha256": "8f393d1cee5e7eed5e41af14539b1fe7ae1c7300dd9383ca0ef1ee17254b6253" + }, + "oa/behavior/scenario_rescue_coordination_conversation.arcadia": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-creation-reopen/oa/behavior/scenario_rescue_coordination_conversation.arcadia", + "bytes": 284, + "sha256": "8eed98446dfb4f4dbd5261f550ce8cae1a21d638975d91b32baaf6f309daba98" + }, + "oa/participants.arcadia": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-creation-reopen/oa/participants.arcadia", + "bytes": 403, + "sha256": "094cab67f34b64902942c10a35bbcd0f760886d862588a0816d6ceb57bacf51b" + }, + "project.arcadia": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-creation-reopen/project.arcadia", + "bytes": 5057, + "sha256": "59b61b321b0cf4817c1ff9276fa59deafc09518765e761a2ebd9e5602afab9cb" + }, + "rationale.arcadia": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-creation-reopen/rationale.arcadia", + "bytes": 57, + "sha256": "c01867c9dc0d40726853119fac3c6ad24a40d8d362a93a8b9d20df04ec2e273f" + }, + "sa/participants.arcadia": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-creation-reopen/sa/participants.arcadia", + "bytes": 285, + "sha256": "9b77b88f66e4e80540ae33b83f1af1f3edcd37dafb98c33a861d4c34c66d2559" + }, + "traceability.arcadia": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-creation-reopen/traceability.arcadia", + "bytes": 395, + "sha256": "f778acaaa85de0940cedcd9514cd803032a11e782d859454203235febb73e5f0" + }, + "views/diagram_rescue_team_operating_modes_states.arcadia": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-creation-reopen/views/diagram_rescue_team_operating_modes_states.arcadia", + "bytes": 842, + "sha256": "498eab80da7ac4523883622a0d008b9033a1305e5bb5f168b8e9d4c41dde62de" + } + }, + ".local\\native-qa\\behavior-20260911-v4\\checkpoint-recovery-cancel": { + "oa/activities/activity_assess_incident.arcadia": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-recovery-cancel/oa/activities/activity_assess_incident.arcadia", + "bytes": 376, + "sha256": "ae41d7c20b062b39c2edab7fb890a3d88a9ce18fd8d03018ef2d6f95eeff62e8" + }, + "oa/behavior/process_coordinate_rescue.arcadia": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-recovery-cancel/oa/behavior/process_coordinate_rescue.arcadia", + "bytes": 149, + "sha256": "8f393d1cee5e7eed5e41af14539b1fe7ae1c7300dd9383ca0ef1ee17254b6253" + }, + "oa/behavior/scenario_rescue_coordination_conversation.arcadia": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-recovery-cancel/oa/behavior/scenario_rescue_coordination_conversation.arcadia", + "bytes": 284, + "sha256": "8eed98446dfb4f4dbd5261f550ce8cae1a21d638975d91b32baaf6f309daba98" + }, + "oa/participants.arcadia": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-recovery-cancel/oa/participants.arcadia", + "bytes": 403, + "sha256": "094cab67f34b64902942c10a35bbcd0f760886d862588a0816d6ceb57bacf51b" + }, + "project.arcadia": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-recovery-cancel/project.arcadia", + "bytes": 5057, + "sha256": "59b61b321b0cf4817c1ff9276fa59deafc09518765e761a2ebd9e5602afab9cb" + }, + "rationale.arcadia": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-recovery-cancel/rationale.arcadia", + "bytes": 57, + "sha256": "c01867c9dc0d40726853119fac3c6ad24a40d8d362a93a8b9d20df04ec2e273f" + }, + "sa/participants.arcadia": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-recovery-cancel/sa/participants.arcadia", + "bytes": 285, + "sha256": "9b77b88f66e4e80540ae33b83f1af1f3edcd37dafb98c33a861d4c34c66d2559" + }, + "traceability.arcadia": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-recovery-cancel/traceability.arcadia", + "bytes": 395, + "sha256": "f778acaaa85de0940cedcd9514cd803032a11e782d859454203235febb73e5f0" + }, + "views/diagram_rescue_team_operating_modes_states.arcadia": { + "path": ".local/native-qa/behavior-20260911-v4/checkpoint-recovery-cancel/views/diagram_rescue_team_operating_modes_states.arcadia", + "bytes": 842, + "sha256": "498eab80da7ac4523883622a0d008b9033a1305e5bb5f168b8e9d4c41dde62de" + } + } + }, + "checks": { + "literal_name_before": true, + "literal_name_after": true, + "sa_machine": true, + "selected_exact_system_actor": true, + "first_view_selected": true, + "complete_behavior_equal_except_deliberate_suffix": true, + "accepted_exact_json_equality": true, + "workspace_exact_json_equality": true, + "property_exact_json_equality": true, + "workflow_exact_json_equality": true, + "selected_exact_json_equality": true, + "reserved_ids_unchanged": true, + "complete_file_inventory_equal": true, + "complete_file_bytes_equal": true, + "accepted_snapshot_exactly_matches_saved_checkpoint": true, + "reserved_objects_not_committed": true, + "oracle_same_pass": true, + "input_files_unchanged": true, + "evidence_and_prior_manifest_unchanged": true + }, + "reserved_ids": { + "element": "c6f559f5-401e-4e0d-af93-91faee68d3f5", + "diagram": "11ad8f0a-73aa-416a-bbeb-9b886bf39854", + "placement": "171f7d7e-3a8f-4200-86f6-a9e2efd87610" + }, + "reopen_recovery_cancel_direct_byte_comparisons": { + "views/diagram_rescue_team_operating_modes_states.arcadia": true, + "traceability.arcadia": true, + "oa/activities/activity_assess_incident.arcadia": true, + "sa/participants.arcadia": true, + "rationale.arcadia": true, + "oa/behavior/process_coordinate_rescue.arcadia": true, + "project.arcadia": true, + "oa/participants.arcadia": true, + "oa/behavior/scenario_rescue_coordination_conversation.arcadia": true + }, + "comparison_origin": "checkpoint-creation-reopen", + "command": { + "command_argv": [ + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\behavior-creation-oracle-20260911\\behavior-creation-contract-v2.exe", + "same", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\behavior-20260911-v4\\checkpoint-creation-reopen\\project.arcadia", + "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\native-qa\\behavior-20260911-v4\\checkpoint-recovery-cancel\\project.arcadia" + ], + "exit_code": 0, + "elapsed_seconds": 0.147209, + "stdout": "PASS exact checkpoint identity/model/9-file SourceBundle equality; 9 exact disk files (0 known retained)\n", + "stderr": "" + }, + "log": { + "path": "harness/experiments/behavior-creation-native-20260911/recovery-commands-results.log", + "bytes": 641, + "sha256": "1dc3e89aa46660bfad796e7b6bf821bebd7e5bc5a7902a826021d461a3e74c68" + }, + "pass": true +} diff --git a/harness/experiments/behavior-creation-native-20260911/verify-recovery.py b/harness/experiments/behavior-creation-native-20260911/verify-recovery.py new file mode 100644 index 00000000..cecf34b9 --- /dev/null +++ b/harness/experiments/behavior-creation-native-20260911/verify-recovery.py @@ -0,0 +1,89 @@ +"""Verify immutable recovery evidence; never access live profile/work or UI.""" +from pathlib import Path +import copy +import datetime +import hashlib +import json +import os +import subprocess +import time + +ROOT = Path(__file__).resolve().parents[3] +OUT = Path(__file__).resolve().parent +STAGE = ROOT / '.local/native-qa/behavior-20260911-v4' +EVIDENCE = STAGE / 'recovery-evidence' +EXPECTED = STAGE / 'checkpoint-creation-reopen' +ACTUAL = STAGE / 'checkpoint-recovery-cancel' +EXE = ROOT / '.local/behavior-creation-oracle-20260911/behavior-creation-contract-v2.exe' + + +def record(path): + data = path.read_bytes() + return {'path': path.relative_to(ROOT).as_posix(), 'bytes': len(data), + 'sha256': hashlib.sha256(data).hexdigest()} + + +def inventory(directory): + return {p.relative_to(directory).as_posix(): record(p) + for p in sorted(directory.rglob('*')) if p.is_file()} + + +artifacts = [record(p) for p in (Path(__file__), OUT / 'manifest.json', EXE, + EVIDENCE / 'before-interruption.json', EVIDENCE / 'after-recovery-and-typing.json', + EVIDENCE / 'restored-draft.png', STAGE / 'recovery-launch.json', STAGE / 'bin/arcadia-studio.exe')] +assert artifacts[1]['sha256'] == '356dfbb27dec04764a4b3f2372602f39953b472baac0a3de3e72acd9c1d76b8a' +assert artifacts[2]['sha256'] == '056eefd444924916bf6ac3c4897ab2ff4a8a4bb892e1dbc16adad32e59bf6a36' +before = json.loads((EVIDENCE / 'before-interruption.json').read_text(encoding='utf-8-sig')) +after = json.loads((EVIDENCE / 'after-recovery-and-typing.json').read_text(encoding='utf-8-sig')) +draft = before['behavior']['draft'] +expected_name = 'Recovery — secours Δ «operating modes»' +checks = {'literal_name_before': draft['name'] == expected_name, + 'literal_name_after': after['behavior']['draft']['name'] == expected_name + ' · resumed', + 'sa_machine': draft['layer'] == 'Sa' and draft['family'] == 'Machine', + 'selected_exact_system_actor': draft['owner'] == 'c0629449-1209-4b50-afac-f558a9a0fc7f', + 'first_view_selected': draft['first_view'] is True} +normalized = copy.deepcopy(after['behavior']) +if checks['literal_name_after']: + normalized['draft']['name'] = expected_name +checks['complete_behavior_equal_except_deliberate_suffix'] = normalized == before['behavior'] +for field in ('accepted', 'workspace', 'property', 'workflow', 'selected'): + checks[field + '_exact_json_equality'] = before[field] == after[field] +reserved = {field: draft[field] for field in ('element', 'diagram', 'placement')} +checks['reserved_ids_unchanged'] = all(after['behavior']['draft'][k] == v for k, v in reserved.items()) +inputs = {str(p.relative_to(ROOT)): inventory(p) for p in (EXPECTED, ACTUAL)} +expected_names = set(inputs[str(EXPECTED.relative_to(ROOT))]) +actual_names = set(inputs[str(ACTUAL.relative_to(ROOT))]) +checks['complete_file_inventory_equal'] = expected_names == actual_names +byte_results = {name: (EXPECTED / name).read_bytes() == (ACTUAL / name).read_bytes() + for name in expected_names if name in actual_names} +checks['complete_file_bytes_equal'] = all(byte_results.values()) and len(byte_results) == len(expected_names) +checks['accepted_snapshot_exactly_matches_saved_checkpoint'] = ( + set(before['accepted']['files']) == expected_names and + all(text.encode('utf-8') == (EXPECTED / name).read_bytes() + for name, text in before['accepted']['files'].items())) +checks['reserved_objects_not_committed'] = all( + all(value.encode('utf-8') not in (ACTUAL / name).read_bytes() for value in reserved.values()) + for name in actual_names) +command = [str(EXE), 'same', str(EXPECTED / 'project.arcadia'), str(ACTUAL / 'project.arcadia')] +env = os.environ.copy() +env['PATH'] = str(STAGE / 'bin') + os.pathsep + env.get('PATH', '') +started = datetime.datetime.now(datetime.timezone.utc).isoformat() +tick = time.perf_counter() +run = subprocess.run(command, cwd=ROOT, env=env, capture_output=True, text=True, encoding='utf-8', errors='replace', timeout=60) +elapsed = time.perf_counter() - tick +checks['oracle_same_pass'] = run.returncode == 0 +checks['input_files_unchanged'] = inputs == {str(p.relative_to(ROOT)): inventory(p) for p in (EXPECTED, ACTUAL)} +checks['evidence_and_prior_manifest_unchanged'] = artifacts == [record(ROOT / item['path']) for item in artifacts] +result = {'command_argv': command, 'exit_code': run.returncode, + 'elapsed_seconds': round(elapsed, 6), 'stdout': run.stdout, 'stderr': run.stderr} +(OUT / 'recovery-commands-results.log').write_text(json.dumps(result, indent=2) + '\n', encoding='utf-8', newline='\n') +manifest = {'reviewer': 'Codex-9e8r6t /root/palette_finish', 'started_utc': started, + 'finished_utc': datetime.datetime.now(datetime.timezone.utc).isoformat(), + 'scope': 'Immutable evidence only; native observations supplied separately by root. No live work/profile/UI/Cargo access; no persisted Undo claim.', + 'artifacts': artifacts, 'input_file_inventories': inputs, 'checks': checks, + 'reserved_ids': reserved, 'reopen_recovery_cancel_direct_byte_comparisons': byte_results, + 'comparison_origin': 'checkpoint-creation-reopen', 'command': result, + 'log': record(OUT / 'recovery-commands-results.log'), 'pass': all(checks.values())} +(OUT / 'recovery-manifest.json').write_text(json.dumps(manifest, indent=2) + '\n', encoding='utf-8', newline='\n') +print(json.dumps({'pass': manifest['pass'], 'checks': checks, 'manifest': record(OUT / 'recovery-manifest.json')})) +raise SystemExit(0 if manifest['pass'] else 1) diff --git a/harness/experiments/behavior-creation-native-20260911/verify.py b/harness/experiments/behavior-creation-native-20260911/verify.py new file mode 100644 index 00000000..1637b9a2 --- /dev/null +++ b/harness/experiments/behavior-creation-native-20260911/verify.py @@ -0,0 +1,93 @@ +"""Read only frozen checkpoints; run the existing v2 oracle without compiling.""" +from pathlib import Path +import datetime +import hashlib +import json +import os +import subprocess +import time + +ROOT = Path(__file__).resolve().parents[3] +OUT = Path(__file__).resolve().parent +STAGE = ROOT / '.local/native-qa/behavior-20260911-v4' +BASE = ROOT / '.local/native-qa/palette-20260910-v3/checkpoint-transition-reopen' +EXE = ROOT / '.local/behavior-creation-oracle-20260911/behavior-creation-contract-v2.exe' + + +def record(path): + data = path.read_bytes() + return {'path': path.relative_to(ROOT).as_posix(), 'bytes': len(data), + 'sha256': hashlib.sha256(data).hexdigest()} + + +def inventory(directory): + return {p.relative_to(directory).as_posix(): { + 'bytes': p.stat().st_size, 'sha256': hashlib.sha256(p.read_bytes()).hexdigest() + } for p in sorted(directory.rglob('*')) if p.is_file()} + + +def entry(directory): + return str(directory / 'project.arcadia') + + +checkpoints = {'baseline': BASE} +for family in ('process', 'scenario', 'machine'): + for suffix in ('', '-undo', '-redo'): + checkpoints[family + suffix] = STAGE / ('checkpoint-' + family + suffix) +checkpoints['creation-reopen'] = STAGE / 'checkpoint-creation-reopen' +before = {name: inventory(path) for name, path in checkpoints.items()} +artifacts = [record(p) for p in ( + EXE, ROOT / 'harness/behavior-creation-contract.rs', Path(__file__), + STAGE / 'bin/arcadia-studio.exe', STAGE / 'bin/libunwind.dll', + STAGE / 'bin/manifest.json', STAGE / 'baseline-source-manifest.json', + STAGE / 'cancel-save-verification.json', STAGE / 'scenario-empty-saved.png', + STAGE / 'machine-created-saved.png')] +assert artifacts[0]['sha256'] == '056eefd444924916bf6ac3c4897ab2ff4a8a4bb892e1dbc16adad32e59bf6a36' +assert artifacts[1]['sha256'] == '51ab2ffa1826dd949b79f3a9690042a2f9e38daf9ed91517cade3861482117ba' +commands = [('self-check', ['self-check', entry(BASE)]), + ('baseline', ['check', 'baseline', entry(BASE), entry(BASE), entry(BASE)])] +previous = BASE +for family in ('process', 'scenario', 'machine'): + first = checkpoints[family] + commands.extend([ + (family, ['check', family, entry(BASE), entry(first), entry(first)]), + (family + '-undo', ['same', entry(previous), entry(checkpoints[family + '-undo']), entry(first)]), + (family + '-redo', ['check', family, entry(BASE), entry(checkpoints[family + '-redo']), entry(first)])]) + previous = first +commands.extend([ + ('reopen-contract', ['check', 'machine', entry(BASE), entry(checkpoints['creation-reopen']), entry(checkpoints['machine'])]), + ('reopen-exact-redo', ['same', entry(checkpoints['machine-redo']), entry(checkpoints['creation-reopen'])])]) +env = os.environ.copy() +env['PATH'] = str(STAGE / 'bin') + os.pathsep + env.get('PATH', '') +started = datetime.datetime.now(datetime.timezone.utc).isoformat() +results = [] +for label, args in commands: + t = time.perf_counter() + command = [str(EXE), *args] + run = subprocess.run(command, cwd=ROOT, env=env, capture_output=True, text=True, encoding='utf-8', errors='replace', timeout=60) + results.append({'label': label, 'command_argv': command, 'exit_code': run.returncode, + 'elapsed_seconds': round(time.perf_counter() - t, 6), + 'stdout': run.stdout, 'stderr': run.stderr}) +after = {name: inventory(path) for name, path in checkpoints.items()} +redo_files = checkpoints['machine-redo'] +reopen_files = checkpoints['creation-reopen'] +same_names = set(before['machine-redo']) == set(before['creation-reopen']) +byte_results = {name: (redo_files / name).read_bytes() == (reopen_files / name).read_bytes() + for name in before['machine-redo'] if (reopen_files / name).is_file()} +success = (all(r['exit_code'] == 0 for r in results) and before == after + and same_names and all(byte_results.values())) +log = '\n\n'.join(f"[{r['label']}] argv={json.dumps(r['command_argv'])}\nexit={r['exit_code']} elapsed={r['elapsed_seconds']}s\nstdout:\n{r['stdout']}stderr:\n{r['stderr']}" for r in results) +(OUT / 'commands-results.log').write_text(log + '\n', encoding='utf-8', newline='\n') +manifest = {'reviewer': 'Codex-9e8r6t /root/palette_finish', 'started_utc': started, + 'finished_utc': datetime.datetime.now(datetime.timezone.utc).isoformat(), + 'scope': 'Frozen checkpoints only; no live work/profile/UI access or compilation.', + 'artifacts': artifacts, 'checkpoints': {name: {'path': path.relative_to(ROOT).as_posix(), 'files': before[name]} for name, path in checkpoints.items()}, + 'commands': results, 'all_checkpoint_files_unchanged': before == after, + 'machine_redo_reopen_inventory_equal': same_names, + 'machine_redo_reopen_direct_byte_comparisons': byte_results, + 'log': record(OUT / 'commands-results.log'), 'pass': success} +(OUT / 'manifest.json').write_text(json.dumps(manifest, indent=2) + '\n', encoding='utf-8', newline='\n') +print(json.dumps({'pass': success, 'commands_passed': sum(r['exit_code'] == 0 for r in results), + 'commands_total': len(results), 'unchanged_checkpoints': before == after, + 'reopen_exact_files': len(byte_results), 'manifest': record(OUT / 'manifest.json')})) +raise SystemExit(0 if success else 1) diff --git a/harness/experiments/constructor-defaults-20260911/README.md b/harness/experiments/constructor-defaults-20260911/README.md new file mode 100644 index 00000000..b2e9d958 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/README.md @@ -0,0 +1,37 @@ +# Existing source-7 constructor defaults + +Compatibility experiment, not proposed grammar. `probe.rs` imports only the +matching existing `oa_core` rlib; it performs no production or Cargo edits. + +In a coordinated direct-rustc writer slot: + +```powershell +. .local/toolchain/env.ps1 +rustc --edition 2024 -D warnings --crate-name constructor_defaults_probe harness/experiments/constructor-defaults-20260911/probe.rs --extern oa_core=.local/target-gnullvm/debug/deps/liboa_core-3e81c616fea1d901.rlib -L dependency=.local/target-gnullvm/debug/deps -C linker=clang.exe -o .local/constructor-defaults-20260911/probe.exe +& .local/constructor-defaults-20260911/probe.exe NEW_ISOLATED_OUTPUT_DIRECTORY +``` + +Use a fresh output directory when reproducing so the committed evidence is not +overwritten. The rlib SHA256 is +`5018A1FD7286ED9DFEDCBBF5B68B399AD5D143F2A9AAAED3078CFC934C9589C4`. +The exact compiler, core source hashes, executable hash and result inventory +are in `provenance.json`. + +`results/results.tsv` records **54 admitted explicit/omitted cases** and +**12 missing-required-field refusals**, covering both OA and SA source 7. +Every admitted occurrence is compared with a literal expected typed body and +the full explicit-case Project. It also requires exact source retention on +stabilization/no-op, a name-only patch retaining omissions, and canonical +format/reparse equality. Both scenario viewpoint omission cases separately +require MixedLegacy equality and canonical stability. + +The `.canonical.arcadia` siblings intentionally expand hydrated defaults; +they are not expected to retain authored omission. Exchange `operation none` +is deliberately omitted by canonical serialization. Files named +`omit-bindings`, `omit-kind`, `omit-operator`, `omit-branches`, `omit-guard`, or +`omit-occurrences` are **expected invalid fixtures**, retained to show the +specific missing-field diagnostic. They are not modeling examples. + +The program/result files are durable evidence. The compiled executable and +initial/final build logs remain in ignored `.local/constructor-defaults-20260911/`. +Other constructor families and old schema versions were not exhaustively tested. diff --git a/harness/experiments/constructor-defaults-20260911/probe.rs b/harness/experiments/constructor-defaults-20260911/probe.rs new file mode 100644 index 00000000..89695188 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/probe.rs @@ -0,0 +1,316 @@ +//! Existing source-7 admission experiment; imports no desktop producer. +use oa_core::{source_project::*, *}; +use std::{fs, path::Path}; + +struct Case { + kind: &'static str, + fields: Vec<(&'static str, &'static str, bool)>, + expected: OccurrenceBody, +} +fn cases() -> Vec { + vec![ + Case { + kind: "Exchange", + fields: vec![ + ("exchange", "none", false), + ("sender", "none", false), + ("receiver", "none", false), + ("message_kind", "Asynchronous", false), + ("reply_to", "none", false), + ("values", "[]", false), + ("operation", "none", false), + ], + expected: OccurrenceBody::Exchange { + exchange: None, + sender: None, + receiver: None, + message_kind: MessageKind::Asynchronous, + reply_to: None, + values: vec![], + operation: None, + }, + }, + Case { + kind: "Action", + fields: vec![("action", "none", false), ("lifeline", "none", false)], + expected: OccurrenceBody::Action { + action: None, + lifeline: None, + }, + }, + Case { + kind: "State", + fields: vec![("state", "none", false), ("lifeline", "none", false)], + expected: OccurrenceBody::State { + state: None, + lifeline: None, + }, + }, + Case { + kind: "SequenceReference", + fields: vec![("sequence", "none", false)], + expected: OccurrenceBody::SequenceReference { sequence: None }, + }, + Case { + kind: "ScenarioUse", + fields: vec![("scenario", "none", false), ("bindings", "[]", true)], + expected: OccurrenceBody::ScenarioUse { + scenario: None, + bindings: vec![], + }, + }, + Case { + kind: "Control", + fields: vec![("kind", "Choice", true)], + expected: OccurrenceBody::Control { + kind: ControlKind::Choice, + }, + }, + Case { + kind: "Fragment", + fields: vec![("operator", "Alternative", true), ("branches", "[]", true)], + expected: OccurrenceBody::Fragment { + operator: FragmentOperator::Alternative, + branches: vec![], + }, + }, + Case { + kind: "Branch", + fields: vec![("guard", "\"\"", true), ("occurrences", "[]", true)], + expected: OccurrenceBody::Branch { + guard: String::new(), + occurrences: vec![], + }, + }, + ] +} +fn id(last: u8) -> Id { + Id::parse_str(&format!("00000000-0000-4000-8000-{last:012}")).unwrap() +} +fn fixture(layer: Layer, kind: &str, fields: &str) -> String { + let prefix = if layer == Layer::Oa { "oa" } else { "sa" }; + let sequence = if layer == Layer::Oa { + "oa_process" + } else { + "sa_functional_chain" + }; + let viewpoint = if layer == Layer::Oa { + "OperationalActivity" + } else { + "Functional" + }; + let root_sequence = matches!( + kind, + "Exchange" | "Action" | "Control" | "SequenceReference" + ); + let owner_kind = if root_sequence { + sequence.to_owned() + } else { + format!("{prefix}_scenario") + }; + let owner_view = if root_sequence { + String::new() + } else { + format!("viewpoint {viewpoint};") + }; + let step = if kind == "Branch" { + "holder" + } else { + "subject" + }; + let parent = if kind == "Branch" { "holder" } else { "owner" }; + let holder = if kind == "Branch" { + format!( + "{prefix}_occurrence holder \"Fragment owner\" id \"{}\" {{ parent @owner; body {{ Fragment {{ operator Alternative; branches [@subject]; }}; }}; }}", + id(4) + ) + } else { + String::new() + }; + format!( + "arcadia 7;\nproject defaults \"Constructor defaults\" id \"{}\" {{\n {owner_kind} owner \"Owner\" id \"{}\" {{ {owner_view} steps [@{step}]; }}\n {holder}\n // Authored omissions must stay omitted through no-op and a name edit.\n {prefix}_occurrence subject \"Subject\" id \"{}\" {{ parent @{parent}; body {{ {kind} {{ {fields} }}; }}; }}\n}}\n", + id(1), + id(2), + id(3) + ) +} +fn bundle(source: &str) -> SourceBundle { + SourceBundle { + entry: "project.arcadia".into(), + files: [("project.arcadia".into(), source.into())] + .into_iter() + .collect(), + } +} +fn compile(source: &str) -> Result> { + compile_bundle(&bundle(source), ProjectLimits::default()) +} +fn body(project: &Project) -> &OccurrenceBody { + let Some(SharedBody::Occurrence { body, .. }) = project.elements[&id(3)].shared() else { + panic!("Subject is not an occurrence") + }; + body +} +fn accepted(out: &Path, name: &str, source: &str, expected: &Project) -> usize { + fs::write(out.join(format!("{name}.arcadia")), source).unwrap(); + let compiled = compile(source).unwrap_or_else(|e| panic!("{name}: {e:?}")); + assert_eq!( + &compiled.decoded.project, expected, + "{name}: exact complete Project" + ); + assert_eq!( + compiled.bundle, + bundle(source), + "{name}: explicit UUIDs need no stabilization edit" + ); + execute_batch(expected, &[]).unwrap(); + let noop = update_bundle(&compiled, expected, ProjectLimits::default()).unwrap(); + assert_eq!( + noop.bundle, compiled.bundle, + "{name}: no-op preserves all authored omissions" + ); + let renamed = execute_batch( + expected, + &[Command::Rename(id(3), "Renamed subject".into())], + ) + .unwrap(); + let edited = update_bundle(&compiled, &renamed, ProjectLimits::default()).unwrap(); + assert_eq!( + edited.bundle, + bundle(&source.replace("\"Subject\"", "\"Renamed subject\"")), + "{name}: name-only edit preserves constructor spelling" + ); + let canonical = language::format(expected); + fs::write(out.join(format!("{name}.canonical.arcadia")), &canonical).unwrap(); + assert_eq!( + compile(&canonical).unwrap().decoded.project, + *expected, + "{name}: canonical roundtrip" + ); + if matches!( + body(expected), + OccurrenceBody::Exchange { + operation: None, + .. + } + ) { + assert!(canonical.contains("message_kind Asynchronous;")); + assert!(canonical.contains("reply_to none;") && canonical.contains("values [];")); + assert!( + !canonical.contains("operation "), + "None operation is deliberately skipped by canonical serialization" + ); + } + validation::validate(expected).len() +} +fn main() { + let out_arg = std::env::args().nth(1).expect("output directory"); + let out = Path::new(&out_arg); + fs::create_dir_all(out).unwrap(); + let mut rows = String::from("case\tlayer\tresult\tdetail\n"); + let mut passes = 0; + let mut rejects = 0; + for layer in [Layer::Oa, Layer::Sa] { + for case in cases() { + let explicit_fields = case + .fields + .iter() + .map(|(name, value, _)| format!("{name} {value};")) + .collect::>() + .join(" "); + let explicit = fixture(layer, case.kind, &explicit_fields); + let baseline = compile(&explicit) + .unwrap_or_else(|e| panic!("{layer} {} explicit: {e:?}", case.kind)); + assert_eq!(body(&baseline.decoded.project), &case.expected); + let name = format!("{layer}-{}-explicit", case.kind); + let issues = accepted(out, &name, &explicit, &baseline.decoded.project); + rows.push_str(&format!("{name}\t{layer}\taccept\texact Project, raw/no-op/name/canonical; {issues} model issues\n")); + passes += 1; + for (omit, _, required) in &case.fields { + let fields = case + .fields + .iter() + .filter(|(field, _, _)| field != omit) + .map(|(field, value, _)| format!("{field} {value};")) + .collect::>() + .join(" "); + let source = fixture(layer, case.kind, &fields); + let name = format!("{layer}-{}-omit-{omit}", case.kind); + if *required { + fs::write(out.join(format!("{name}.arcadia")), &source).unwrap(); + let errors = compile(&source).expect_err("Required field omission must reject"); + let detail = format!("{errors:?}"); + assert!( + detail.contains("missing field") && detail.contains(omit), + "{name}: must fail on the missing constructor field: {detail}" + ); + rows.push_str(&format!("{name}\t{layer}\treject\t{detail}\n")); + rejects += 1; + } else { + let issues = accepted(out, &name, &source, &baseline.decoded.project); + rows.push_str(&format!("{name}\t{layer}\taccept\texact Project, raw/no-op/name/canonical; {issues} model issues\n")); + passes += 1; + } + } + if case.fields.iter().any(|(_, _, required)| !required) { + let fields = case + .fields + .iter() + .filter(|(_, _, required)| *required) + .map(|(field, value, _)| format!("{field} {value};")) + .collect::>() + .join(" "); + let name = format!("{layer}-{}-omit-all-optional", case.kind); + let issues = accepted( + out, + &name, + &fixture(layer, case.kind, &fields), + &baseline.decoded.project, + ); + rows.push_str(&format!("{name}\t{layer}\taccept\texact Project, raw/no-op/name/canonical; {issues} model issues\n")); + passes += 1; + } + } + let prefix = if layer == Layer::Oa { "oa" } else { "sa" }; + let source = format!( + "arcadia 7;\nproject defaults \"Defaults\" id \"{}\" {{ {prefix}_scenario scene \"Scene\" id \"{}\" {{ }} }}\n", + id(1), + id(2) + ); + let compiled = compile(&source).unwrap(); + let explicit = source.replace("{ }", "{ viewpoint MixedLegacy; }"); + assert_eq!( + compiled.decoded.project, + compile(&explicit).unwrap().decoded.project + ); + assert_eq!(compiled.bundle, bundle(&source)); + assert!(matches!( + compiled.decoded.project.elements[&id(2)].shared(), + Some(SharedBody::Scenario { + viewpoint: ScenarioViewpoint::MixedLegacy, + .. + }) + )); + let canonical = language::format(&compiled.decoded.project); + assert_eq!( + compile(&canonical).unwrap().decoded.project, + compiled.decoded.project + ); + fs::write( + out.join(format!("{layer}-scenario-viewpoint-omitted.arcadia")), + source, + ) + .unwrap(); + fs::write( + out.join(format!("{layer}-scenario-viewpoint-explicit.arcadia")), + explicit, + ) + .unwrap(); + rows.push_str(&format!("{layer}-scenario-viewpoint\t{layer}\taccept\texact MixedLegacy Project, retained omission, canonical roundtrip\n")); + passes += 1; + } + fs::write(out.join("results.tsv"), rows).unwrap(); + println!( + "PASS: {passes} accepted explicit/omitted comparisons; {rejects} missing-required-field refusals; both source-7 layers. Full Project, canonical roundtrip, no-op and exact name-only source retention checked." + ); +} diff --git a/harness/experiments/constructor-defaults-20260911/provenance.json b/harness/experiments/constructor-defaults-20260911/provenance.json new file mode 100644 index 00000000..acbeeb37 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/provenance.json @@ -0,0 +1,1001 @@ +{ + "corePath": ".local/target-gnullvm/debug/deps/liboa_core-3e81c616fea1d901.rlib", + "artifacts": [ + { + "bytes": 410, + "path": "results/OA-Action-explicit.arcadia", + "sha256": "B2856BADCD10BC10AAC8E26CB57030E13C8F0503EC50803757126B32B2A2BB39" + }, + { + "bytes": 576, + "path": "results/OA-Action-explicit.canonical.arcadia", + "sha256": "0DEE0D30413717C2139AB1AE5802B09444FEF711326064459B69435E67A78675" + }, + { + "bytes": 397, + "path": "results/OA-Action-omit-action.arcadia", + "sha256": "92E0E8D181C2CCD183A3C6E6FEC8557727497307770C8E5AB3BDC2D07E497388" + }, + { + "bytes": 576, + "path": "results/OA-Action-omit-action.canonical.arcadia", + "sha256": "0DEE0D30413717C2139AB1AE5802B09444FEF711326064459B69435E67A78675" + }, + { + "bytes": 383, + "path": "results/OA-Action-omit-all-optional.arcadia", + "sha256": "0926058672C362AB9394185449B1ACF533CE2A5848808C53DE6F9929CDA6B6C7" + }, + { + "bytes": 576, + "path": "results/OA-Action-omit-all-optional.canonical.arcadia", + "sha256": "0DEE0D30413717C2139AB1AE5802B09444FEF711326064459B69435E67A78675" + }, + { + "bytes": 395, + "path": "results/OA-Action-omit-lifeline.arcadia", + "sha256": "C357EEAF278A55EDE2AC86FAECD9A439AF299F466B5AA3BB90C275A0722CE55D" + }, + { + "bytes": 576, + "path": "results/OA-Action-omit-lifeline.canonical.arcadia", + "sha256": "0DEE0D30413717C2139AB1AE5802B09444FEF711326064459B69435E67A78675" + }, + { + "bytes": 604, + "path": "results/OA-Branch-explicit.arcadia", + "sha256": "929622A1F49B98B5ABD25BB7B621606C7B8A04C4C33CC8FBD216FC5DA8F689ED" + }, + { + "bytes": 1017, + "path": "results/OA-Branch-explicit.canonical.arcadia", + "sha256": "72E19DBE36EFEE4F2B4885244484DA9BDF4936220F8D77F6653BFE859626767A" + }, + { + "bytes": 594, + "path": "results/OA-Branch-omit-guard.arcadia", + "sha256": "AD33E92CF13F6549685F00E01AD7956C7E362C64723C303306B4DD592686CC60" + }, + { + "bytes": 588, + "path": "results/OA-Branch-omit-occurrences.arcadia", + "sha256": "FF9F1B38E5B4B848A3C35557D39D2592EED8C14E08526CA6F63D1DF40C3BF3AD" + }, + { + "bytes": 396, + "path": "results/OA-Control-explicit.arcadia", + "sha256": "278553ED933EC3A7269A0A6A0F9B43C77980C769CF8544E9DB5D3688D12620F9" + }, + { + "bytes": 546, + "path": "results/OA-Control-explicit.canonical.arcadia", + "sha256": "AF30D01DEBD0102C5312219F5508DC2693F2FA54E36BA0A8039C870428C4F043" + }, + { + "bytes": 384, + "path": "results/OA-Control-omit-kind.arcadia", + "sha256": "2FCC2787F957CD4A02A357D985378AC73F4F9A4FFF185FB472A06BA673BCC009" + }, + { + "bytes": 496, + "path": "results/OA-Exchange-explicit.arcadia", + "sha256": "BA6179CDD0690B7BD868AC0B771796EE9030AA9E9136C1850933E6F56634C1C6" + }, + { + "bytes": 710, + "path": "results/OA-Exchange-explicit.canonical.arcadia", + "sha256": "B8EBFDD57E8894AA40E571F7142438341ED994A8CF60EBF02B2754CA2244044F" + }, + { + "bytes": 385, + "path": "results/OA-Exchange-omit-all-optional.arcadia", + "sha256": "D2E6C3177427B3F8CEA9B17075E831848FD2585234E3F72064325B53803874A0" + }, + { + "bytes": 710, + "path": "results/OA-Exchange-omit-all-optional.canonical.arcadia", + "sha256": "B8EBFDD57E8894AA40E571F7142438341ED994A8CF60EBF02B2754CA2244044F" + }, + { + "bytes": 481, + "path": "results/OA-Exchange-omit-exchange.arcadia", + "sha256": "037873086154727B1450ED72F2A702431EB9ED46CFCB4571C7C3DADBDEC5394B" + }, + { + "bytes": 710, + "path": "results/OA-Exchange-omit-exchange.canonical.arcadia", + "sha256": "B8EBFDD57E8894AA40E571F7142438341ED994A8CF60EBF02B2754CA2244044F" + }, + { + "bytes": 469, + "path": "results/OA-Exchange-omit-message_kind.arcadia", + "sha256": "AC07C2D65CC39D1AF7736CE932346E7E57B711BA47B3636B10ADA8404116F1EF" + }, + { + "bytes": 710, + "path": "results/OA-Exchange-omit-message_kind.canonical.arcadia", + "sha256": "B8EBFDD57E8894AA40E571F7142438341ED994A8CF60EBF02B2754CA2244044F" + }, + { + "bytes": 480, + "path": "results/OA-Exchange-omit-operation.arcadia", + "sha256": "341132234936D9F253508B091635F437652F4C19496EA7E92AB685BBAA63A63A" + }, + { + "bytes": 710, + "path": "results/OA-Exchange-omit-operation.canonical.arcadia", + "sha256": "B8EBFDD57E8894AA40E571F7142438341ED994A8CF60EBF02B2754CA2244044F" + }, + { + "bytes": 481, + "path": "results/OA-Exchange-omit-receiver.arcadia", + "sha256": "779568D2BA8D0B6D79002882764E40C62143B739E5B80DF2B3BF779AC54B7C53" + }, + { + "bytes": 710, + "path": "results/OA-Exchange-omit-receiver.canonical.arcadia", + "sha256": "B8EBFDD57E8894AA40E571F7142438341ED994A8CF60EBF02B2754CA2244044F" + }, + { + "bytes": 481, + "path": "results/OA-Exchange-omit-reply_to.arcadia", + "sha256": "EE5314D1500D7FFC646A7D4A69E1DC7D9042BB6F867E58A8F59D69AF373788A1" + }, + { + "bytes": 710, + "path": "results/OA-Exchange-omit-reply_to.canonical.arcadia", + "sha256": "B8EBFDD57E8894AA40E571F7142438341ED994A8CF60EBF02B2754CA2244044F" + }, + { + "bytes": 483, + "path": "results/OA-Exchange-omit-sender.arcadia", + "sha256": "BABAD648E1ACC3CDECDF5486E25F8BB0BA73609B27BA49730D91596EEFA75446" + }, + { + "bytes": 710, + "path": "results/OA-Exchange-omit-sender.canonical.arcadia", + "sha256": "B8EBFDD57E8894AA40E571F7142438341ED994A8CF60EBF02B2754CA2244044F" + }, + { + "bytes": 485, + "path": "results/OA-Exchange-omit-values.arcadia", + "sha256": "49E1D54CAAEF374BC4F5C77E884A304987B656C5137E66AED1FA2B76297A886B" + }, + { + "bytes": 710, + "path": "results/OA-Exchange-omit-values.canonical.arcadia", + "sha256": "B8EBFDD57E8894AA40E571F7142438341ED994A8CF60EBF02B2754CA2244044F" + }, + { + "bytes": 450, + "path": "results/OA-Fragment-explicit.arcadia", + "sha256": "01438C6F8985D8EE732468D136ED4BED5C8E6D297024226583A190AA82719311" + }, + { + "bytes": 698, + "path": "results/OA-Fragment-explicit.canonical.arcadia", + "sha256": "8E384EFCCFF6E15B886DAF9F2D06D56D075FED188B5B4DD45138F0FBC6BD2079" + }, + { + "bytes": 437, + "path": "results/OA-Fragment-omit-branches.arcadia", + "sha256": "A8D98FA8FEB515A6C35A7D3D2D2FA02DEF111DB12239AF8CEFF13B408E00385F" + }, + { + "bytes": 428, + "path": "results/OA-Fragment-omit-operator.arcadia", + "sha256": "8C0332BD56735683E24746F41B63D56DF4F89FAEAFE41348BF60D9C706396AC1" + }, + { + "bytes": 180, + "path": "results/OA-scenario-viewpoint-explicit.arcadia", + "sha256": "04A715448510822A5C5A80FB9B8E27175C22EDC8D470F17CF336CB66D84DC118" + }, + { + "bytes": 157, + "path": "results/OA-scenario-viewpoint-omitted.arcadia", + "sha256": "4EC85A87A4B0B8807D0F98497A9A8870602AB0484089E4845799F53028684558" + }, + { + "bytes": 446, + "path": "results/OA-ScenarioUse-explicit.arcadia", + "sha256": "1E0516E569BC611D573EDC3690BD2D50E3B1CDB96596CD2164BB077F068F3FAA" + }, + { + "bytes": 694, + "path": "results/OA-ScenarioUse-explicit.canonical.arcadia", + "sha256": "027BB8CA6D1EE48DE7B3AA9F7DBB838F7E2E54ACC87429CD2A4C7893C011B10C" + }, + { + "bytes": 431, + "path": "results/OA-ScenarioUse-omit-all-optional.arcadia", + "sha256": "4E7A42E85A18BF40F5D282D3223AF99EFDC5B314806979909674E39673FFE301" + }, + { + "bytes": 694, + "path": "results/OA-ScenarioUse-omit-all-optional.canonical.arcadia", + "sha256": "027BB8CA6D1EE48DE7B3AA9F7DBB838F7E2E54ACC87429CD2A4C7893C011B10C" + }, + { + "bytes": 433, + "path": "results/OA-ScenarioUse-omit-bindings.arcadia", + "sha256": "E610BFA303388AC37E6CB53B412299942C22F3E3C99D379666DB57D56144D2BE" + }, + { + "bytes": 431, + "path": "results/OA-ScenarioUse-omit-scenario.arcadia", + "sha256": "4E7A42E85A18BF40F5D282D3223AF99EFDC5B314806979909674E39673FFE301" + }, + { + "bytes": 694, + "path": "results/OA-ScenarioUse-omit-scenario.canonical.arcadia", + "sha256": "027BB8CA6D1EE48DE7B3AA9F7DBB838F7E2E54ACC87429CD2A4C7893C011B10C" + }, + { + "bytes": 408, + "path": "results/OA-SequenceReference-explicit.arcadia", + "sha256": "6C571B93605EC55EC85BAC19FFB6B8655365514966736D1BB16827FE2B51D8EC" + }, + { + "bytes": 558, + "path": "results/OA-SequenceReference-explicit.canonical.arcadia", + "sha256": "02E5F876154A486EA5CD0AC9973FB7B0FD820D6AB8FE56A3A4BBA984B9847E3D" + }, + { + "bytes": 394, + "path": "results/OA-SequenceReference-omit-all-optional.arcadia", + "sha256": "C8DD7DDFBB0445A3F426FCF3419ED5E6BF544AE3646B9174AE71117E7AA97A10" + }, + { + "bytes": 558, + "path": "results/OA-SequenceReference-omit-all-optional.canonical.arcadia", + "sha256": "02E5F876154A486EA5CD0AC9973FB7B0FD820D6AB8FE56A3A4BBA984B9847E3D" + }, + { + "bytes": 394, + "path": "results/OA-SequenceReference-omit-sequence.arcadia", + "sha256": "C8DD7DDFBB0445A3F426FCF3419ED5E6BF544AE3646B9174AE71117E7AA97A10" + }, + { + "bytes": 558, + "path": "results/OA-SequenceReference-omit-sequence.canonical.arcadia", + "sha256": "02E5F876154A486EA5CD0AC9973FB7B0FD820D6AB8FE56A3A4BBA984B9847E3D" + }, + { + "bytes": 439, + "path": "results/OA-State-explicit.arcadia", + "sha256": "C9D77C67EDE054704025C3E3ED931A995373F8290CCEC66B15390DDD42695514" + }, + { + "bytes": 687, + "path": "results/OA-State-explicit.canonical.arcadia", + "sha256": "BF6EFCAB6ECEC6A941AD33E5764BFC55402AD7750CD4325BC4DEE1C14B2DF870" + }, + { + "bytes": 413, + "path": "results/OA-State-omit-all-optional.arcadia", + "sha256": "619C7012019F9E26F62B82FF2CD691C799167A40056ECED36BA24EBA50B497EB" + }, + { + "bytes": 687, + "path": "results/OA-State-omit-all-optional.canonical.arcadia", + "sha256": "BF6EFCAB6ECEC6A941AD33E5764BFC55402AD7750CD4325BC4DEE1C14B2DF870" + }, + { + "bytes": 424, + "path": "results/OA-State-omit-lifeline.arcadia", + "sha256": "C6C2680DEBD179BE983BD8A9AA84D9D8771DC01533E114E353E1D2757BA678A4" + }, + { + "bytes": 687, + "path": "results/OA-State-omit-lifeline.canonical.arcadia", + "sha256": "BF6EFCAB6ECEC6A941AD33E5764BFC55402AD7750CD4325BC4DEE1C14B2DF870" + }, + { + "bytes": 427, + "path": "results/OA-State-omit-state.arcadia", + "sha256": "32BD00CF088F07B4BE1FB5D1BE1EF0FC751EA45375C7C33D0B07B9A7E074379F" + }, + { + "bytes": 687, + "path": "results/OA-State-omit-state.canonical.arcadia", + "sha256": "BF6EFCAB6ECEC6A941AD33E5764BFC55402AD7750CD4325BC4DEE1C14B2DF870" + }, + { + "bytes": 8419, + "path": "results/results.tsv", + "sha256": "2C1BB97234EDFAC386A5DDCA46C28B5B46972CC879B7CC2B1C4179066BAB8AEF" + }, + { + "bytes": 419, + "path": "results/SA-Action-explicit.arcadia", + "sha256": "C02F4EC5C86E07AC225752C0DF8F2E8E381617F1551043BFAE67EB67B7C05BE3" + }, + { + "bytes": 585, + "path": "results/SA-Action-explicit.canonical.arcadia", + "sha256": "8B659C6AB5295D966744118AC2B52ACBAC0282D3DC6974EF7ED66A97039930D8" + }, + { + "bytes": 406, + "path": "results/SA-Action-omit-action.arcadia", + "sha256": "4BC9E2C7E7B8F4EE35CCFE7AACB9D993AE900E831EB4448B3F0317D75594BABD" + }, + { + "bytes": 585, + "path": "results/SA-Action-omit-action.canonical.arcadia", + "sha256": "8B659C6AB5295D966744118AC2B52ACBAC0282D3DC6974EF7ED66A97039930D8" + }, + { + "bytes": 392, + "path": "results/SA-Action-omit-all-optional.arcadia", + "sha256": "5D52B9401289EB18C175B5F360091F6770DBDF4FCF1D613056117658E947BA67" + }, + { + "bytes": 585, + "path": "results/SA-Action-omit-all-optional.canonical.arcadia", + "sha256": "8B659C6AB5295D966744118AC2B52ACBAC0282D3DC6974EF7ED66A97039930D8" + }, + { + "bytes": 404, + "path": "results/SA-Action-omit-lifeline.arcadia", + "sha256": "360D7FDA81074D59491ACE12606C55EC31C6D8C31470099C071C27A03E4160F1" + }, + { + "bytes": 585, + "path": "results/SA-Action-omit-lifeline.canonical.arcadia", + "sha256": "8B659C6AB5295D966744118AC2B52ACBAC0282D3DC6974EF7ED66A97039930D8" + }, + { + "bytes": 595, + "path": "results/SA-Branch-explicit.arcadia", + "sha256": "2F5667850C6BDCC91B4AD3AF7284B9E1D3358BD671EA53E958FB7F911310B5AA" + }, + { + "bytes": 1008, + "path": "results/SA-Branch-explicit.canonical.arcadia", + "sha256": "0B6F227CFEDCC48F031420508D67A03FF124430FF78F530E7E03995A002997FD" + }, + { + "bytes": 585, + "path": "results/SA-Branch-omit-guard.arcadia", + "sha256": "7753AC98168B6CBA220B446DA01DEAA766BBD8347462722DC4531EE22959A770" + }, + { + "bytes": 579, + "path": "results/SA-Branch-omit-occurrences.arcadia", + "sha256": "74608C96407F3C20E9B24D53434486D4E06A7F74DDFFDD5B9FAC81BC2EC14CB0" + }, + { + "bytes": 405, + "path": "results/SA-Control-explicit.arcadia", + "sha256": "222989078599D385889F6E603273FC96A357623347408CD5B7CB09148F7F9E50" + }, + { + "bytes": 555, + "path": "results/SA-Control-explicit.canonical.arcadia", + "sha256": "DDCE14E3CD1955593EE17A86613B65550FF32F19503FC6E772307D8B8399AC98" + }, + { + "bytes": 393, + "path": "results/SA-Control-omit-kind.arcadia", + "sha256": "62C86948C582E2D167C6589DC1F31916C8BD2380520DCF1E6FDB623A52AB058D" + }, + { + "bytes": 505, + "path": "results/SA-Exchange-explicit.arcadia", + "sha256": "AB600959E5DE90AB21CD4C7DBBD39941C5F824B53F4A08F533A6881D0D5F6C4D" + }, + { + "bytes": 719, + "path": "results/SA-Exchange-explicit.canonical.arcadia", + "sha256": "7B5508169100654EFA6893C2163DE250DD73C90988D419CA6DE93CDC16F43D0C" + }, + { + "bytes": 394, + "path": "results/SA-Exchange-omit-all-optional.arcadia", + "sha256": "5AD2E32C000C2A33DEEBE75DFE42711309F135E528C1F4CC2CB10F372E82A484" + }, + { + "bytes": 719, + "path": "results/SA-Exchange-omit-all-optional.canonical.arcadia", + "sha256": "7B5508169100654EFA6893C2163DE250DD73C90988D419CA6DE93CDC16F43D0C" + }, + { + "bytes": 490, + "path": "results/SA-Exchange-omit-exchange.arcadia", + "sha256": "7FA14291E6BA6B02111B5BFEAFB8F5530D546E4DB544F48591F357E43559D65A" + }, + { + "bytes": 719, + "path": "results/SA-Exchange-omit-exchange.canonical.arcadia", + "sha256": "7B5508169100654EFA6893C2163DE250DD73C90988D419CA6DE93CDC16F43D0C" + }, + { + "bytes": 478, + "path": "results/SA-Exchange-omit-message_kind.arcadia", + "sha256": "BFBC6EDD72E04D291721BFA5A01881CA286957F984D9AF80D748FAC78735DF49" + }, + { + "bytes": 719, + "path": "results/SA-Exchange-omit-message_kind.canonical.arcadia", + "sha256": "7B5508169100654EFA6893C2163DE250DD73C90988D419CA6DE93CDC16F43D0C" + }, + { + "bytes": 489, + "path": "results/SA-Exchange-omit-operation.arcadia", + "sha256": "222ED17452FA6FA54126504AA7F8866F49A8F9BE996F8FBC872FADC303CF3A01" + }, + { + "bytes": 719, + "path": "results/SA-Exchange-omit-operation.canonical.arcadia", + "sha256": "7B5508169100654EFA6893C2163DE250DD73C90988D419CA6DE93CDC16F43D0C" + }, + { + "bytes": 490, + "path": "results/SA-Exchange-omit-receiver.arcadia", + "sha256": "0F479EEFA9117CC3C318E1229D703FEA763DC387D3D4EA749E3EA8ABCDB6F924" + }, + { + "bytes": 719, + "path": "results/SA-Exchange-omit-receiver.canonical.arcadia", + "sha256": "7B5508169100654EFA6893C2163DE250DD73C90988D419CA6DE93CDC16F43D0C" + }, + { + "bytes": 490, + "path": "results/SA-Exchange-omit-reply_to.arcadia", + "sha256": "6DEDB085A300BB7791CCDD4F33AA130C6288F2FC4BE4E37C7369EF1BF35E7B30" + }, + { + "bytes": 719, + "path": "results/SA-Exchange-omit-reply_to.canonical.arcadia", + "sha256": "7B5508169100654EFA6893C2163DE250DD73C90988D419CA6DE93CDC16F43D0C" + }, + { + "bytes": 492, + "path": "results/SA-Exchange-omit-sender.arcadia", + "sha256": "9A0097A61F6853DDAF55D378D69B481247F1D87E805EF10274CAF9216DC47B22" + }, + { + "bytes": 719, + "path": "results/SA-Exchange-omit-sender.canonical.arcadia", + "sha256": "7B5508169100654EFA6893C2163DE250DD73C90988D419CA6DE93CDC16F43D0C" + }, + { + "bytes": 494, + "path": "results/SA-Exchange-omit-values.arcadia", + "sha256": "C2E42697B8661C83DD0C11FDD6A45DF671F38E8AB30241C310B2C7B448FF9D9F" + }, + { + "bytes": 719, + "path": "results/SA-Exchange-omit-values.canonical.arcadia", + "sha256": "7B5508169100654EFA6893C2163DE250DD73C90988D419CA6DE93CDC16F43D0C" + }, + { + "bytes": 441, + "path": "results/SA-Fragment-explicit.arcadia", + "sha256": "3D67F772C4CC437EADDD94A8A64554C1B8457440AA73D9CED124DE04A76DD381" + }, + { + "bytes": 689, + "path": "results/SA-Fragment-explicit.canonical.arcadia", + "sha256": "00BC627F557CFD84599052FC6A0476649C4BA50A8A3A280287E6D65BE5B571BA" + }, + { + "bytes": 428, + "path": "results/SA-Fragment-omit-branches.arcadia", + "sha256": "B9077CF0D204952C21D93EA3350D6D6E86EB54F94DAA06291AA9452435E5CB52" + }, + { + "bytes": 419, + "path": "results/SA-Fragment-omit-operator.arcadia", + "sha256": "B837BED4A6CEF7FECD0615E747A56C0616BE27BDC197477A2C9E6ECC38979559" + }, + { + "bytes": 180, + "path": "results/SA-scenario-viewpoint-explicit.arcadia", + "sha256": "47391866214833C4E85EAD1668AF9A0F1A9AB908E9E9BF4ADB147C3A1F2AEBD2" + }, + { + "bytes": 157, + "path": "results/SA-scenario-viewpoint-omitted.arcadia", + "sha256": "D96F1ACC0D02E478139C838A5F7A11572137D4933C95FD7EAD948FC7C7CEFBF7" + }, + { + "bytes": 437, + "path": "results/SA-ScenarioUse-explicit.arcadia", + "sha256": "A3EE50450FE0CE5D5E65D68C7C33F8B22FEB95AAEA80C5236A6AF192CECEB642" + }, + { + "bytes": 685, + "path": "results/SA-ScenarioUse-explicit.canonical.arcadia", + "sha256": "A9C4E63FAF7BFC7D011950D397C38C6B7EAA99BF8F11808211921465BB92432D" + }, + { + "bytes": 422, + "path": "results/SA-ScenarioUse-omit-all-optional.arcadia", + "sha256": "8CBAFD88B4946167D0C5AD749DEB63E713B6F8445A9ADD6203C6EDEC8A296D78" + }, + { + "bytes": 685, + "path": "results/SA-ScenarioUse-omit-all-optional.canonical.arcadia", + "sha256": "A9C4E63FAF7BFC7D011950D397C38C6B7EAA99BF8F11808211921465BB92432D" + }, + { + "bytes": 424, + "path": "results/SA-ScenarioUse-omit-bindings.arcadia", + "sha256": "EB60EAD7AC12535BE029107C47C5FB8D12AF8A94A866A0F10E04F9331F52A0E8" + }, + { + "bytes": 422, + "path": "results/SA-ScenarioUse-omit-scenario.arcadia", + "sha256": "8CBAFD88B4946167D0C5AD749DEB63E713B6F8445A9ADD6203C6EDEC8A296D78" + }, + { + "bytes": 685, + "path": "results/SA-ScenarioUse-omit-scenario.canonical.arcadia", + "sha256": "A9C4E63FAF7BFC7D011950D397C38C6B7EAA99BF8F11808211921465BB92432D" + }, + { + "bytes": 417, + "path": "results/SA-SequenceReference-explicit.arcadia", + "sha256": "FD0CB7801D9E0C164DBE4BC346FAF17FA32D6F45AD615FB2EC785B9853EF44B8" + }, + { + "bytes": 567, + "path": "results/SA-SequenceReference-explicit.canonical.arcadia", + "sha256": "1E61E6B6C85EB350A8D2DBA6B248F8BD58C3D551047B0FD04FF681A229137081" + }, + { + "bytes": 403, + "path": "results/SA-SequenceReference-omit-all-optional.arcadia", + "sha256": "DF044824FDFE3F704C862191D462DEA1F875F3BE1DE4EAD0A8B5FB86D16C055D" + }, + { + "bytes": 567, + "path": "results/SA-SequenceReference-omit-all-optional.canonical.arcadia", + "sha256": "1E61E6B6C85EB350A8D2DBA6B248F8BD58C3D551047B0FD04FF681A229137081" + }, + { + "bytes": 403, + "path": "results/SA-SequenceReference-omit-sequence.arcadia", + "sha256": "DF044824FDFE3F704C862191D462DEA1F875F3BE1DE4EAD0A8B5FB86D16C055D" + }, + { + "bytes": 567, + "path": "results/SA-SequenceReference-omit-sequence.canonical.arcadia", + "sha256": "1E61E6B6C85EB350A8D2DBA6B248F8BD58C3D551047B0FD04FF681A229137081" + }, + { + "bytes": 430, + "path": "results/SA-State-explicit.arcadia", + "sha256": "D89CC915D95EC328421F3CA566765A0258FA5B27FFE7E5C369C3E83D690CE9C7" + }, + { + "bytes": 678, + "path": "results/SA-State-explicit.canonical.arcadia", + "sha256": "6AD404F8674353802D4D3B8B26F689BE63287E1F1290994698ACA11C8E8A3AEC" + }, + { + "bytes": 404, + "path": "results/SA-State-omit-all-optional.arcadia", + "sha256": "E49EB739A9E6EDF4EBB666DCDC5FDB6D0868EDC5D56B1370EED99FE37F240FA6" + }, + { + "bytes": 678, + "path": "results/SA-State-omit-all-optional.canonical.arcadia", + "sha256": "6AD404F8674353802D4D3B8B26F689BE63287E1F1290994698ACA11C8E8A3AEC" + }, + { + "bytes": 415, + "path": "results/SA-State-omit-lifeline.arcadia", + "sha256": "A7263DB138768E0AE1CAEBF5AF8D76186A5644080F458F0E97C0A733FFD4C3EA" + }, + { + "bytes": 678, + "path": "results/SA-State-omit-lifeline.canonical.arcadia", + "sha256": "6AD404F8674353802D4D3B8B26F689BE63287E1F1290994698ACA11C8E8A3AEC" + }, + { + "bytes": 418, + "path": "results/SA-State-omit-state.arcadia", + "sha256": "F65BD487140BB7C66CF2366F9DD0BB56E58DED44AEA325D3BC32DAEC16899F2B" + }, + { + "bytes": 678, + "path": "results/SA-State-omit-state.canonical.arcadia", + "sha256": "6AD404F8674353802D4D3B8B26F689BE63287E1F1290994698ACA11C8E8A3AEC" + } + ], + "probeSha256": "FAA1A98BEA7A87E24047991D72A54919AE9C66F84B6EB465E24B13FDC82EE040", + "result": "PASS54 accepted explicit/omitted comparisons and12 required-field refusals in source7 OA/SA", + "head": "4bb4aaf3dc47b9738625b4d3f23ef8c74f286395", + "recorded": "2026-09-11T09:05:36.4691011Z", + "coreSha256": "5018A1FD7286ED9DFEDCBBF5B68B399AD5D143F2A9AAAED3078CFC934C9589C4", + "coreInputs": [ + { + "path": "crates/oa-core/build.rs", + "sha256": "AB1BE6AE1FD8BF3EBAEEF6348347A9D5E666BDE693126F199E041659E0B094A9" + }, + { + "path": "crates/oa-core/Cargo.toml", + "sha256": "64824EC447BE777841A972BF06C894EF2624A37E4725583BCFE0389DEB9F00A3" + }, + { + "path": "crates/oa-core/examples/generate_demo.rs", + "sha256": "E26F432C95331AECA50985DBB3AD2C558AFFD43023B585811F0F7BFAA59F6661" + }, + { + "path": "crates/oa-core/examples/generate_release1.rs", + "sha256": "1D5F11165D74893E4BC18DBF3A2F2111F4026BD89FD06EE7F0BAE69E45C4D4B5" + }, + { + "path": "crates/oa-core/examples/release_dense_views.rs", + "sha256": "A83158488EF9B7394F136C52B1496719BE935C4E5BDFE457CAB5C9894F5F9412" + }, + { + "path": "crates/oa-core/examples/routing_workshop.rs", + "sha256": "571307B18B6D4FA04700C5A4D4B0C2154C419E93A21292B2028E7B6F46A2FAA7" + }, + { + "path": "crates/oa-core/src/data.rs", + "sha256": "7F9C7C7DD8353CB5A38597B92CDE6D3E890203D392473187EB387D41FF37414A" + }, + { + "path": "crates/oa-core/src/demo.rs", + "sha256": "AD62123F96C20FF023CAFC1A9849B0FA06BC62EDD1FB9701799E4599B458600C" + }, + { + "path": "crates/oa-core/src/language_nesting_tests.rs", + "sha256": "BD061611E8CB6F28AB203C73E544AC98BF275EB464CD314AD5FBD25F773DF33B" + }, + { + "path": "crates/oa-core/src/language.rs", + "sha256": "638F08A42E9CF4996B5D07F69B4D6F517A518369F3604D25BE1006E40E080765" + }, + { + "path": "crates/oa-core/src/language/semantic_source.rs", + "sha256": "584B5BB59D87A7B8D44D5DD2D124C3A1323B21492B138A17BC9526C0087C9E29" + }, + { + "path": "crates/oa-core/src/lib.rs", + "sha256": "52CB6EE7A4FFC00711ECF121C1A1B14CA154863F7CA27B0D2A8E239EDCE8ACA7" + }, + { + "path": "crates/oa-core/src/migration_v2/adapter.rs", + "sha256": "66741B4C8354A23B8A932ECC5BF1BC3BB6E74279558757B8C35BC2157A7E51B5" + }, + { + "path": "crates/oa-core/src/migration_v2/mod.rs", + "sha256": "857D8BB13B6814DABA6780CA770C16352943C01CB130245D055F11B3B957B3E9" + }, + { + "path": "crates/oa-core/src/migration_v2/model.rs", + "sha256": "8AC63EB59B2E57BDECFF2477EE0634096090924D3DD1851E1C454880A889DACB" + }, + { + "path": "crates/oa-core/src/migration_v2/references.rs", + "sha256": "33A6819ABC83139FDAEBEEBD1B553238A328637106CCE7DD5A535F1791D43E20" + }, + { + "path": "crates/oa-core/src/migration_v2/source.rs", + "sha256": "74FEE9B24E7C912182C998AB9D9AEEC125E2009C3214959229E844C67AFE2BF6" + }, + { + "path": "crates/oa-core/src/migration_v2/state_validation.rs", + "sha256": "E29EF071BAB0A68460DDF55C46131C6F66C022D52C3C602C37C013C3649DA1B0" + }, + { + "path": "crates/oa-core/src/migration_v2/transitions.rs", + "sha256": "F74174C532BA56B57C80B719A11FB4ADEA0A78CCC2828FFF72FE2B9EDA5A10B1" + }, + { + "path": "crates/oa-core/src/migration_v2/validation.rs", + "sha256": "6D5E4A4E2805AE5045BF789A0485E14A61C63346587BACE2B4A91173A688F780" + }, + { + "path": "crates/oa-core/src/migration_v3/mod.rs", + "sha256": "F4EDB6A0B50ECFE8670973776D703047B064420CB1F05913129C00FC656B3722" + }, + { + "path": "crates/oa-core/src/migration_v4.rs", + "sha256": "50C652964F0F309E7F3F54B6EF12C40D42FCECC0490F005995C713DF1179AF70" + }, + { + "path": "crates/oa-core/src/model.rs", + "sha256": "4585C895C64C4A183941C92CF047A9E52FF0CBE41971E16E78D229EA9DC101FB" + }, + { + "path": "crates/oa-core/src/operations.rs", + "sha256": "A5FFBBF54CD440316A106D1188BFB699B57DAE59F466EDCB33618C333CD19F41" + }, + { + "path": "crates/oa-core/src/persistence.rs", + "sha256": "1C01474F906A63E552C0D590B272C95821C00A100B3E79E58E67DBBEAC341A14" + }, + { + "path": "crates/oa-core/src/ports.rs", + "sha256": "5CAC12EEA70A54EBEBBD6BE77B63CE92E3195325C4BC7D27705C518686CBAC80" + }, + { + "path": "crates/oa-core/src/projection.rs", + "sha256": "69ED12BACE2CC5024E151752A174AB14034AC2D05EB741FCF13E9A27521C059B" + }, + { + "path": "crates/oa-core/src/projection/port_layout.rs", + "sha256": "A08D17D10A58BB8B206DD001B19B91D5AA3A9F743B298A4DA57D503223C20079" + }, + { + "path": "crates/oa-core/src/projection/state.rs", + "sha256": "73A607BAC713EC7FF49A509FEFB1A53C7686DCA93EE241FFC835564D743AFB28" + }, + { + "path": "crates/oa-core/src/references.rs", + "sha256": "93553C234F32DA35F1F41A7B83AD81C471C9803EFA78CA222CF7DE3C2F86C0BB" + }, + { + "path": "crates/oa-core/src/routing.rs", + "sha256": "C5EBB350BA76F731F5C48D968BFBBA4B6EF68EC046EB5893D116C4637EF15080" + }, + { + "path": "crates/oa-core/src/semantic.rs", + "sha256": "F9895DD5B8FB27D10D4CFBB41C3542EF2018365A589B8D5778E5674AE5A1F239" + }, + { + "path": "crates/oa-core/src/semantic/catalog.rs", + "sha256": "1FF74FCCA18084D178681D7FF38EE1CCAC632C27C4DE0595BA1CEAB8067AB3A4" + }, + { + "path": "crates/oa-core/src/semantic/historical.rs", + "sha256": "EAF3284BF234312698514CDB636BC8348E1B5D746CB16B18DF777E77D312ABFB" + }, + { + "path": "crates/oa-core/src/semantic/linked.rs", + "sha256": "6F335B14E809AECFC35DEFCAF77CB821B080D1506DBC46297912B25AF98C07A2" + }, + { + "path": "crates/oa-core/src/semantic/mutate.rs", + "sha256": "DC2B4C4A6EB156FE468EAA8C85FD37A505C0CD8EA1F226CB69CD01689AFD3D9D" + }, + { + "path": "crates/oa-core/src/semantic/review.rs", + "sha256": "0C157D2C327E72E89CCA3B423E71EE73798105C5BB7271439C1A101642C91E3E" + }, + { + "path": "crates/oa-core/src/semantic/types.rs", + "sha256": "6922FE35089F12FAD43AB0CE1C6886D01A3855F90B8E2543E99802AC5E6F1BBB" + }, + { + "path": "crates/oa-core/src/session.rs", + "sha256": "1EB77B329B2986FC6F5DC0171E77FD860375CDFD8C769A1367B445D6C49EBE00" + }, + { + "path": "crates/oa-core/src/source_files.rs", + "sha256": "669491DBDDB8E8E6556161426DFFA1A49AC1C826D31020BFF0956D81A4D84683" + }, + { + "path": "crates/oa-core/src/source_project.rs", + "sha256": "1394370BCC5908873B830C2C11312E6E1611AF41F46C4F43CA0A6BCB713BB466" + }, + { + "path": "crates/oa-core/src/source_project/source_migration.rs", + "sha256": "ADD463AE85C420F853D324B00A221F0F874164CC3F3ED6BBB07557A9ED7A8C95" + }, + { + "path": "crates/oa-core/src/source_project/source_structure.rs", + "sha256": "9F1F83315856A7025FE662C0FBB13452F31613224A03663150D6225D1DDC162F" + }, + { + "path": "crates/oa-core/src/state_validation.rs", + "sha256": "E28D7F74385E2A78763716B34491BD73A00BFECCC085970CEB130627E3FAEE18" + }, + { + "path": "crates/oa-core/src/topology_context.rs", + "sha256": "16DE69B297DE95D93C73808621607833B713AF811DD082F0169186AE1E5C3E2D" + }, + { + "path": "crates/oa-core/src/topology_context/analysis_tests.rs", + "sha256": "17839263410815E96FE027D4EBA3AAE0A9AB3B82B16947E2B29EBE0D09782B56" + }, + { + "path": "crates/oa-core/src/topology_context/analysis.rs", + "sha256": "DEAD6194F0AA60CC46045C0E5EE10DBDBB689158C38634DFBBBC45D2BA88AC65" + }, + { + "path": "crates/oa-core/src/transitions.rs", + "sha256": "FADD1B07B89CAE4117B91ABB4F1AC9EA81FF818EF20F2175E76EE8CF21FB708D" + }, + { + "path": "crates/oa-core/src/transitions/communication.rs", + "sha256": "2B476630A88EDD9021B9156CA12A5402E01604095F0D4002AFB452671903A028" + }, + { + "path": "crates/oa-core/src/validation.rs", + "sha256": "7C1B4AE5E4EBBA13E99AF9158CCDE138DFC5E9A7AFB580E76FBA72D0B64BA74E" + }, + { + "path": "crates/oa-core/src/validation/coverage.rs", + "sha256": "B08E4B344ECAD055714168C83BEFF7FE29BA4EDC53EDBFFA2EAE04E5580A4D5F" + }, + { + "path": "crates/oa-core/src/view_options_tests.rs", + "sha256": "64AAC44DE2DF42A1012239A3DD75C473DAF0C8990B3170B7BF7E78A556080208" + }, + { + "path": "crates/oa-core/src/view_options.rs", + "sha256": "421EDE0A04C593CA1DF0E6E0D06FABCFCC8113CDBCFB0ADC7F5C8EF4D1724208" + }, + { + "path": "crates/oa-core/tests/communication_boundary_scenarios.rs", + "sha256": "E1100B8F363910A487D90C73ACC7DF543DC6D532158C3C63AD11CD3D40D8E12B" + }, + { + "path": "crates/oa-core/tests/communication_means.rs", + "sha256": "A25F2749180BC6F4BEB1445BFAD3351EEDF0669131A7439B633AB804439E95A4" + }, + { + "path": "crates/oa-core/tests/coverage_diagnostics.rs", + "sha256": "E2E9C3996DAAB47F2BD23F5D8C48B4E372AF33331152F5FC85B76F06D04FCDF4" + }, + { + "path": "crates/oa-core/tests/language.rs", + "sha256": "77F6CB2A69976BFB5F60B243B71C07FB0EDC7505002C1E9E73FCD6DDF6D9496E" + }, + { + "path": "crates/oa-core/tests/port_anchors.rs", + "sha256": "EFBC0FA18733B1AAAC501F9785A4C392FC49C05C45A5778D26E9B5DD951CA6FA" + }, + { + "path": "crates/oa-core/tests/port_migration.rs", + "sha256": "1801C376A5435AC7EFB2A8342348B2C7FFEF930BBA65DECA4ACB66B06E0483D7" + }, + { + "path": "crates/oa-core/tests/port_source.rs", + "sha256": "8D2DDACA4045D330F6EDA2591561497B858AAD53769A823249D0BEA4F5916E12" + }, + { + "path": "crates/oa-core/tests/prepared_commands.rs", + "sha256": "52CAB1C668064777412DF0A6A3C20D74D579B33794B4B00525B9F151C06EAC9B" + }, + { + "path": "crates/oa-core/tests/process_diagnostics.rs", + "sha256": "1DBBC590239EF7542BE4A2BDC9543AAA64D108417B03DD312A0894E364745906" + }, + { + "path": "crates/oa-core/tests/r3_constructor_ack.rs", + "sha256": "E5C44676EA0AAB97F2E091DDAC2F4BC4A4A90F5877F7BBF08B61229600944DD0" + }, + { + "path": "crates/oa-core/tests/r3_migration.rs", + "sha256": "EBD04120F5215B3956FDC79EE78F6E38734C7D13392F1FC28AABA957912265BD" + }, + { + "path": "crates/oa-core/tests/r3_semantic.rs", + "sha256": "49C3763EAF2131070A7C46CC23A84F917D292D41610B6404510E5607F8890C32" + }, + { + "path": "crates/oa-core/tests/r3_source.rs", + "sha256": "F31F60659DF3C7EF601650D1CFF140589D8729F01A3F65A4A6A6C2272F15C408" + }, + { + "path": "crates/oa-core/tests/r6_data.rs", + "sha256": "5F7FFB3BC73C3C85423623FE56F8680646DC97040327BDBEAD9D47A37E80F155" + }, + { + "path": "crates/oa-core/tests/r6_migration.rs", + "sha256": "81519BC1512F5E069432E9A1CDAD04C10216D492DF01B4B75B02102480EBD6A1" + }, + { + "path": "crates/oa-core/tests/r6_source.rs", + "sha256": "88A0AA087A7678E2898FF6057538072CA92072190712F05FFF08372CC56EBED6" + }, + { + "path": "crates/oa-core/tests/release_capabilities.rs", + "sha256": "B92CBA2A562E78287DDD7DC3E94557848D17FAA0C8A102601B50286B9AF48A30" + }, + { + "path": "crates/oa-core/tests/release_diagrams.rs", + "sha256": "CEFCC0582D91266D5DE6EE5DAEFCFE41B606AB971AB235B59034A8E1DBC24B7D" + }, + { + "path": "crates/oa-core/tests/release_language_limits.rs", + "sha256": "8578DA4F76BBD2D0E1BFE295AB1259E2162A3FE3D0D2BA8901915D7A40942806" + }, + { + "path": "crates/oa-core/tests/release_ports.rs", + "sha256": "506E62BEAB0C7EC0CECE83E9E0C1A810FA1F99285C9E1CAB0C77F06DE55A40E1" + }, + { + "path": "crates/oa-core/tests/release_routing.rs", + "sha256": "AE168FAABA23769B7CA1FD65F217B9DB671726E67276EB5A04E5E72B1447A462" + }, + { + "path": "crates/oa-core/tests/release_scenarios.rs", + "sha256": "0F5D876BADEEC653FC7B12610A77D867E9A53582E605253DEFF8D379DA21572F" + }, + { + "path": "crates/oa-core/tests/release_states.rs", + "sha256": "B1A26ACEE95EABA7F9920F9DA738A1E33606552EB078E6D298895DAFF7E3D811" + }, + { + "path": "crates/oa-core/tests/release_topology.rs", + "sha256": "C51DBE5AA5A038F9ED830DAA02AA67714472179EB7FD6DA5CE36DC6931C8B3A9" + }, + { + "path": "crates/oa-core/tests/release1_teaching.rs", + "sha256": "BE179290D871125DC97CFD2A3067C7AC89C8A538FDB0AFAFC5B825BCDFB2BEF2" + }, + { + "path": "crates/oa-core/tests/review_regressions.rs", + "sha256": "F154E5C88D35E31512E2B07733A1327EA3E2FCFD1EF8EB23066A4E9573F387C1" + }, + { + "path": "crates/oa-core/tests/route_source.rs", + "sha256": "1A73FDBAC0D0AE0E84D8D67B6AD398E11223958F5DCA007F73757C91827DECFB" + }, + { + "path": "crates/oa-core/tests/routing_geometry.rs", + "sha256": "2D8EEA4A2BBA535ED0EA6DAABCCDAF87B375828C404BAA10518C7BD7FD6253D3" + }, + { + "path": "crates/oa-core/tests/routing_labels.rs", + "sha256": "DFF884D799C3C5C9257210248C55767E294E3CB317C605CBD0DDC9600C216EB6" + }, + { + "path": "crates/oa-core/tests/semantic_artifact_absence_oracle.rs", + "sha256": "D93EAF9667F4221232168BEF0FE9F069E5BE1B1F23410BDA5DD67010B96E5C8A" + }, + { + "path": "crates/oa-core/tests/semantic_attachments_gui_oracle.rs", + "sha256": "7F526D363BA05E7AC89FAF0FEAD0796E419C34EE204EDF44A1B46C78308B0970" + }, + { + "path": "crates/oa-core/tests/source_files.rs", + "sha256": "F0429A0B89A443458EA9AF7083C1E4E7411417A7E6B47E618BFBB9266DC164F9" + }, + { + "path": "crates/oa-core/tests/source_identity_updates.rs", + "sha256": "F52AA38B4D317E532C641AD7463472E4B40E802E60052CF0017556FFC63DA06C" + }, + { + "path": "crates/oa-core/tests/source_nested_updates.rs", + "sha256": "9AC3390936C0D250651EA94A1B8FAF0ADFB680F061ECECC56F2A52909B5BA855" + }, + { + "path": "crates/oa-core/tests/source_project.rs", + "sha256": "CEF58ADB16AA4D2527DDC0628AEC3E26F0B42B4BE70014A7E360FAFDAC13A942" + }, + { + "path": "crates/oa-core/tests/source6_view_contract.rs", + "sha256": "FA566DE53946D40BBBD9033EDFEED177180C4DC44AFA2F2F4667FFDC622EB3BB" + }, + { + "path": "crates/oa-core/tests/source7_contract.rs", + "sha256": "CAD4F1A135DDBD947BDF3C71D1B44F1E438725095EA8C4D893464BC721C2363F" + }, + { + "path": "crates/oa-core/tests/state_diagrams.rs", + "sha256": "6B02B387A3AE559CB3AD72DE24292A5ABCB76AAAC0ADBAB5D2AA5211B22CD2E5" + }, + { + "path": "crates/oa-core/tests/workflows.rs", + "sha256": "BD843DFDDBD5724EC08F657571F887496203056FE2FA5864EF50A168A613B89B" + } + ], + "build": { + "started": "2026-09-11T09:02:48.6509187Z", + "exitCode": 0, + "finished": "2026-09-11T09:02:51.6243422Z" + }, + "executableSha256": "3ADC6F980C2F185AAA41BEC2148066ADFAD54729EDAB1AD4144E4AA1F7E7B684", + "command": "rustc --edition 2024 -D warnings --crate-name constructor_defaults_probe harness/experiments/constructor-defaults-20260911/probe.rs --extern oa_core=.local/target-gnullvm/debug/deps/liboa_core-3e81c616fea1d901.rlib -L dependency=.local/target-gnullvm/debug/deps -C linker=clang.exe -o .local/constructor-defaults-20260911/probe.exe", + "compiler": [ + "rustc 1.98.1 (48a229cea 2026-09-01)", + "binary: rustc", + "commit-hash: 48a229ceaefd4985c50990b14116b6d856af0985", + "commit-date: 2026-09-01", + "host: x86_64-pc-windows-gnullvm", + "release: 1.98.1", + "LLVM version: 22.1.8" + ] +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Action-explicit.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Action-explicit.arcadia new file mode 100644 index 00000000..3b5cd336 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Action-explicit.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Action { action none; lifeline none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Action-explicit.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Action-explicit.canonical.arcadia new file mode 100644 index 00000000..c8bdf8ee --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Action-explicit.canonical.arcadia @@ -0,0 +1,24 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Action { + action none; + lifeline none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Action-omit-action.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Action-omit-action.arcadia new file mode 100644 index 00000000..1be81cc2 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Action-omit-action.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Action { lifeline none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Action-omit-action.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Action-omit-action.canonical.arcadia new file mode 100644 index 00000000..c8bdf8ee --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Action-omit-action.canonical.arcadia @@ -0,0 +1,24 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Action { + action none; + lifeline none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Action-omit-all-optional.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Action-omit-all-optional.arcadia new file mode 100644 index 00000000..7ce2cae4 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Action-omit-all-optional.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Action { }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Action-omit-all-optional.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Action-omit-all-optional.canonical.arcadia new file mode 100644 index 00000000..c8bdf8ee --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Action-omit-all-optional.canonical.arcadia @@ -0,0 +1,24 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Action { + action none; + lifeline none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Action-omit-lifeline.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Action-omit-lifeline.arcadia new file mode 100644 index 00000000..5a3e348f --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Action-omit-lifeline.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Action { action none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Action-omit-lifeline.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Action-omit-lifeline.canonical.arcadia new file mode 100644 index 00000000..c8bdf8ee --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Action-omit-lifeline.canonical.arcadia @@ -0,0 +1,24 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Action { + action none; + lifeline none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Branch-explicit.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Branch-explicit.arcadia new file mode 100644 index 00000000..26b49934 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Branch-explicit.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint OperationalActivity; steps [@holder]; } + oa_occurrence holder "Fragment owner" id "00000000-0000-4000-8000-000000000004" { parent @owner; body { Fragment { operator Alternative; branches [@subject]; }; }; } + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @holder; body { Branch { guard ""; occurrences []; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Branch-explicit.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Branch-explicit.canonical.arcadia new file mode 100644 index 00000000..2c886470 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Branch-explicit.canonical.arcadia @@ -0,0 +1,41 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + oa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { + context none; + description ""; + parent none; + postcondition ""; + precondition ""; + steps [@holder]; + viewpoint OperationalActivity; + } + + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Branch { + guard ""; + occurrences []; + }; + }; + description ""; + parent @holder; + postcondition ""; + precondition ""; + } + + oa_occurrence holder "Fragment owner" id "00000000-0000-4000-8000-000000000004" { + body { + Fragment { + branches [@subject]; + operator Alternative; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Branch-omit-guard.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Branch-omit-guard.arcadia new file mode 100644 index 00000000..ce90395a --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Branch-omit-guard.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint OperationalActivity; steps [@holder]; } + oa_occurrence holder "Fragment owner" id "00000000-0000-4000-8000-000000000004" { parent @owner; body { Fragment { operator Alternative; branches [@subject]; }; }; } + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @holder; body { Branch { occurrences []; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Branch-omit-occurrences.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Branch-omit-occurrences.arcadia new file mode 100644 index 00000000..53865c64 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Branch-omit-occurrences.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint OperationalActivity; steps [@holder]; } + oa_occurrence holder "Fragment owner" id "00000000-0000-4000-8000-000000000004" { parent @owner; body { Fragment { operator Alternative; branches [@subject]; }; }; } + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @holder; body { Branch { guard ""; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Control-explicit.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Control-explicit.arcadia new file mode 100644 index 00000000..7520d3c1 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Control-explicit.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Control { kind Choice; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Control-explicit.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Control-explicit.canonical.arcadia new file mode 100644 index 00000000..e924cf4d --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Control-explicit.canonical.arcadia @@ -0,0 +1,23 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Control { + kind Choice; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Control-omit-kind.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Control-omit-kind.arcadia new file mode 100644 index 00000000..6f7834cb --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Control-omit-kind.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Control { }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-explicit.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-explicit.arcadia new file mode 100644 index 00000000..d33e840d --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-explicit.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Exchange { exchange none; sender none; receiver none; message_kind Asynchronous; reply_to none; values []; operation none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-explicit.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-explicit.canonical.arcadia new file mode 100644 index 00000000..a5a1336e --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-explicit.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Exchange { + exchange none; + message_kind Asynchronous; + receiver none; + reply_to none; + sender none; + values []; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-all-optional.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-all-optional.arcadia new file mode 100644 index 00000000..44259c8c --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-all-optional.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Exchange { }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-all-optional.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-all-optional.canonical.arcadia new file mode 100644 index 00000000..a5a1336e --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-all-optional.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Exchange { + exchange none; + message_kind Asynchronous; + receiver none; + reply_to none; + sender none; + values []; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-exchange.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-exchange.arcadia new file mode 100644 index 00000000..21b3fa80 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-exchange.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Exchange { sender none; receiver none; message_kind Asynchronous; reply_to none; values []; operation none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-exchange.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-exchange.canonical.arcadia new file mode 100644 index 00000000..a5a1336e --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-exchange.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Exchange { + exchange none; + message_kind Asynchronous; + receiver none; + reply_to none; + sender none; + values []; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-message_kind.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-message_kind.arcadia new file mode 100644 index 00000000..9b5e7349 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-message_kind.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Exchange { exchange none; sender none; receiver none; reply_to none; values []; operation none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-message_kind.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-message_kind.canonical.arcadia new file mode 100644 index 00000000..a5a1336e --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-message_kind.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Exchange { + exchange none; + message_kind Asynchronous; + receiver none; + reply_to none; + sender none; + values []; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-operation.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-operation.arcadia new file mode 100644 index 00000000..9fcee778 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-operation.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Exchange { exchange none; sender none; receiver none; message_kind Asynchronous; reply_to none; values []; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-operation.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-operation.canonical.arcadia new file mode 100644 index 00000000..a5a1336e --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-operation.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Exchange { + exchange none; + message_kind Asynchronous; + receiver none; + reply_to none; + sender none; + values []; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-receiver.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-receiver.arcadia new file mode 100644 index 00000000..efe42b53 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-receiver.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Exchange { exchange none; sender none; message_kind Asynchronous; reply_to none; values []; operation none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-receiver.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-receiver.canonical.arcadia new file mode 100644 index 00000000..a5a1336e --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-receiver.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Exchange { + exchange none; + message_kind Asynchronous; + receiver none; + reply_to none; + sender none; + values []; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-reply_to.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-reply_to.arcadia new file mode 100644 index 00000000..cd340b11 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-reply_to.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Exchange { exchange none; sender none; receiver none; message_kind Asynchronous; values []; operation none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-reply_to.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-reply_to.canonical.arcadia new file mode 100644 index 00000000..a5a1336e --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-reply_to.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Exchange { + exchange none; + message_kind Asynchronous; + receiver none; + reply_to none; + sender none; + values []; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-sender.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-sender.arcadia new file mode 100644 index 00000000..413da356 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-sender.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Exchange { exchange none; receiver none; message_kind Asynchronous; reply_to none; values []; operation none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-sender.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-sender.canonical.arcadia new file mode 100644 index 00000000..a5a1336e --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-sender.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Exchange { + exchange none; + message_kind Asynchronous; + receiver none; + reply_to none; + sender none; + values []; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-values.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-values.arcadia new file mode 100644 index 00000000..977037ee --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-values.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Exchange { exchange none; sender none; receiver none; message_kind Asynchronous; reply_to none; operation none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-values.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-values.canonical.arcadia new file mode 100644 index 00000000..a5a1336e --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Exchange-omit-values.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Exchange { + exchange none; + message_kind Asynchronous; + receiver none; + reply_to none; + sender none; + values []; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Fragment-explicit.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Fragment-explicit.arcadia new file mode 100644 index 00000000..c40ec1ed --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Fragment-explicit.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint OperationalActivity; steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Fragment { operator Alternative; branches []; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Fragment-explicit.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Fragment-explicit.canonical.arcadia new file mode 100644 index 00000000..4d745be1 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Fragment-explicit.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + oa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { + context none; + description ""; + parent none; + postcondition ""; + precondition ""; + steps [@subject]; + viewpoint OperationalActivity; + } + + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Fragment { + branches []; + operator Alternative; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Fragment-omit-branches.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Fragment-omit-branches.arcadia new file mode 100644 index 00000000..a3de0d0c --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Fragment-omit-branches.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint OperationalActivity; steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Fragment { operator Alternative; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-Fragment-omit-operator.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-Fragment-omit-operator.arcadia new file mode 100644 index 00000000..85d0bf86 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-Fragment-omit-operator.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint OperationalActivity; steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Fragment { branches []; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-ScenarioUse-explicit.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-ScenarioUse-explicit.arcadia new file mode 100644 index 00000000..82956fd9 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-ScenarioUse-explicit.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint OperationalActivity; steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { ScenarioUse { scenario none; bindings []; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-ScenarioUse-explicit.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-ScenarioUse-explicit.canonical.arcadia new file mode 100644 index 00000000..bf812cf6 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-ScenarioUse-explicit.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + oa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { + context none; + description ""; + parent none; + postcondition ""; + precondition ""; + steps [@subject]; + viewpoint OperationalActivity; + } + + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + ScenarioUse { + bindings []; + scenario none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-ScenarioUse-omit-all-optional.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-ScenarioUse-omit-all-optional.arcadia new file mode 100644 index 00000000..12f1faea --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-ScenarioUse-omit-all-optional.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint OperationalActivity; steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { ScenarioUse { bindings []; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-ScenarioUse-omit-all-optional.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-ScenarioUse-omit-all-optional.canonical.arcadia new file mode 100644 index 00000000..bf812cf6 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-ScenarioUse-omit-all-optional.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + oa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { + context none; + description ""; + parent none; + postcondition ""; + precondition ""; + steps [@subject]; + viewpoint OperationalActivity; + } + + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + ScenarioUse { + bindings []; + scenario none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-ScenarioUse-omit-bindings.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-ScenarioUse-omit-bindings.arcadia new file mode 100644 index 00000000..ced56bce --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-ScenarioUse-omit-bindings.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint OperationalActivity; steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { ScenarioUse { scenario none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-ScenarioUse-omit-scenario.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-ScenarioUse-omit-scenario.arcadia new file mode 100644 index 00000000..12f1faea --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-ScenarioUse-omit-scenario.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint OperationalActivity; steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { ScenarioUse { bindings []; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-ScenarioUse-omit-scenario.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-ScenarioUse-omit-scenario.canonical.arcadia new file mode 100644 index 00000000..bf812cf6 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-ScenarioUse-omit-scenario.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + oa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { + context none; + description ""; + parent none; + postcondition ""; + precondition ""; + steps [@subject]; + viewpoint OperationalActivity; + } + + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + ScenarioUse { + bindings []; + scenario none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-SequenceReference-explicit.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-SequenceReference-explicit.arcadia new file mode 100644 index 00000000..76ddc0f2 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-SequenceReference-explicit.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { SequenceReference { sequence none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-SequenceReference-explicit.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-SequenceReference-explicit.canonical.arcadia new file mode 100644 index 00000000..4d88c625 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-SequenceReference-explicit.canonical.arcadia @@ -0,0 +1,23 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + SequenceReference { + sequence none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-SequenceReference-omit-all-optional.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-SequenceReference-omit-all-optional.arcadia new file mode 100644 index 00000000..cba4369a --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-SequenceReference-omit-all-optional.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { SequenceReference { }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-SequenceReference-omit-all-optional.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-SequenceReference-omit-all-optional.canonical.arcadia new file mode 100644 index 00000000..4d88c625 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-SequenceReference-omit-all-optional.canonical.arcadia @@ -0,0 +1,23 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + SequenceReference { + sequence none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-SequenceReference-omit-sequence.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-SequenceReference-omit-sequence.arcadia new file mode 100644 index 00000000..cba4369a --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-SequenceReference-omit-sequence.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { SequenceReference { }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-SequenceReference-omit-sequence.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-SequenceReference-omit-sequence.canonical.arcadia new file mode 100644 index 00000000..4d88c625 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-SequenceReference-omit-sequence.canonical.arcadia @@ -0,0 +1,23 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + oa_process owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + SequenceReference { + sequence none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-State-explicit.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-State-explicit.arcadia new file mode 100644 index 00000000..54abba22 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-State-explicit.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint OperationalActivity; steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { State { state none; lifeline none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-State-explicit.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-State-explicit.canonical.arcadia new file mode 100644 index 00000000..73cbbd7c --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-State-explicit.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + oa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { + context none; + description ""; + parent none; + postcondition ""; + precondition ""; + steps [@subject]; + viewpoint OperationalActivity; + } + + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + State { + lifeline none; + state none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-State-omit-all-optional.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-State-omit-all-optional.arcadia new file mode 100644 index 00000000..2609c14d --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-State-omit-all-optional.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint OperationalActivity; steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { State { }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-State-omit-all-optional.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-State-omit-all-optional.canonical.arcadia new file mode 100644 index 00000000..73cbbd7c --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-State-omit-all-optional.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + oa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { + context none; + description ""; + parent none; + postcondition ""; + precondition ""; + steps [@subject]; + viewpoint OperationalActivity; + } + + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + State { + lifeline none; + state none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-State-omit-lifeline.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-State-omit-lifeline.arcadia new file mode 100644 index 00000000..4d758c17 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-State-omit-lifeline.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint OperationalActivity; steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { State { state none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-State-omit-lifeline.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-State-omit-lifeline.canonical.arcadia new file mode 100644 index 00000000..73cbbd7c --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-State-omit-lifeline.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + oa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { + context none; + description ""; + parent none; + postcondition ""; + precondition ""; + steps [@subject]; + viewpoint OperationalActivity; + } + + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + State { + lifeline none; + state none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-State-omit-state.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-State-omit-state.arcadia new file mode 100644 index 00000000..f04e1f5e --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-State-omit-state.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + oa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint OperationalActivity; steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { State { lifeline none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-State-omit-state.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-State-omit-state.canonical.arcadia new file mode 100644 index 00000000..73cbbd7c --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-State-omit-state.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + oa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { + context none; + description ""; + parent none; + postcondition ""; + precondition ""; + steps [@subject]; + viewpoint OperationalActivity; + } + + oa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + State { + lifeline none; + state none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-scenario-viewpoint-explicit.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-scenario-viewpoint-explicit.arcadia new file mode 100644 index 00000000..6d935fc9 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-scenario-viewpoint-explicit.arcadia @@ -0,0 +1,2 @@ +arcadia 7; +project defaults "Defaults" id "00000000-0000-4000-8000-000000000001" { oa_scenario scene "Scene" id "00000000-0000-4000-8000-000000000002" { viewpoint MixedLegacy; } } diff --git a/harness/experiments/constructor-defaults-20260911/results/OA-scenario-viewpoint-omitted.arcadia b/harness/experiments/constructor-defaults-20260911/results/OA-scenario-viewpoint-omitted.arcadia new file mode 100644 index 00000000..b75d71b5 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/OA-scenario-viewpoint-omitted.arcadia @@ -0,0 +1,2 @@ +arcadia 7; +project defaults "Defaults" id "00000000-0000-4000-8000-000000000001" { oa_scenario scene "Scene" id "00000000-0000-4000-8000-000000000002" { } } diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Action-explicit.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Action-explicit.arcadia new file mode 100644 index 00000000..d6fbfaf3 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Action-explicit.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Action { action none; lifeline none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Action-explicit.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Action-explicit.canonical.arcadia new file mode 100644 index 00000000..a893693e --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Action-explicit.canonical.arcadia @@ -0,0 +1,24 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Action { + action none; + lifeline none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Action-omit-action.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Action-omit-action.arcadia new file mode 100644 index 00000000..e531d27d --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Action-omit-action.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Action { lifeline none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Action-omit-action.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Action-omit-action.canonical.arcadia new file mode 100644 index 00000000..a893693e --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Action-omit-action.canonical.arcadia @@ -0,0 +1,24 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Action { + action none; + lifeline none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Action-omit-all-optional.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Action-omit-all-optional.arcadia new file mode 100644 index 00000000..70b38048 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Action-omit-all-optional.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Action { }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Action-omit-all-optional.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Action-omit-all-optional.canonical.arcadia new file mode 100644 index 00000000..a893693e --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Action-omit-all-optional.canonical.arcadia @@ -0,0 +1,24 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Action { + action none; + lifeline none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Action-omit-lifeline.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Action-omit-lifeline.arcadia new file mode 100644 index 00000000..20c4bd39 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Action-omit-lifeline.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Action { action none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Action-omit-lifeline.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Action-omit-lifeline.canonical.arcadia new file mode 100644 index 00000000..a893693e --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Action-omit-lifeline.canonical.arcadia @@ -0,0 +1,24 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Action { + action none; + lifeline none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Branch-explicit.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Branch-explicit.arcadia new file mode 100644 index 00000000..0feb8fc4 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Branch-explicit.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint Functional; steps [@holder]; } + sa_occurrence holder "Fragment owner" id "00000000-0000-4000-8000-000000000004" { parent @owner; body { Fragment { operator Alternative; branches [@subject]; }; }; } + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @holder; body { Branch { guard ""; occurrences []; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Branch-explicit.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Branch-explicit.canonical.arcadia new file mode 100644 index 00000000..bb4af872 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Branch-explicit.canonical.arcadia @@ -0,0 +1,41 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + sa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { + context none; + description ""; + parent none; + postcondition ""; + precondition ""; + steps [@holder]; + viewpoint Functional; + } + + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Branch { + guard ""; + occurrences []; + }; + }; + description ""; + parent @holder; + postcondition ""; + precondition ""; + } + + sa_occurrence holder "Fragment owner" id "00000000-0000-4000-8000-000000000004" { + body { + Fragment { + branches [@subject]; + operator Alternative; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Branch-omit-guard.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Branch-omit-guard.arcadia new file mode 100644 index 00000000..a4849106 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Branch-omit-guard.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint Functional; steps [@holder]; } + sa_occurrence holder "Fragment owner" id "00000000-0000-4000-8000-000000000004" { parent @owner; body { Fragment { operator Alternative; branches [@subject]; }; }; } + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @holder; body { Branch { occurrences []; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Branch-omit-occurrences.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Branch-omit-occurrences.arcadia new file mode 100644 index 00000000..93bc981e --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Branch-omit-occurrences.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint Functional; steps [@holder]; } + sa_occurrence holder "Fragment owner" id "00000000-0000-4000-8000-000000000004" { parent @owner; body { Fragment { operator Alternative; branches [@subject]; }; }; } + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @holder; body { Branch { guard ""; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Control-explicit.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Control-explicit.arcadia new file mode 100644 index 00000000..0b1b01af --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Control-explicit.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Control { kind Choice; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Control-explicit.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Control-explicit.canonical.arcadia new file mode 100644 index 00000000..42ec5ae4 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Control-explicit.canonical.arcadia @@ -0,0 +1,23 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Control { + kind Choice; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Control-omit-kind.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Control-omit-kind.arcadia new file mode 100644 index 00000000..0ddcb907 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Control-omit-kind.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Control { }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-explicit.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-explicit.arcadia new file mode 100644 index 00000000..a46415dd --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-explicit.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Exchange { exchange none; sender none; receiver none; message_kind Asynchronous; reply_to none; values []; operation none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-explicit.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-explicit.canonical.arcadia new file mode 100644 index 00000000..89c53774 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-explicit.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Exchange { + exchange none; + message_kind Asynchronous; + receiver none; + reply_to none; + sender none; + values []; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-all-optional.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-all-optional.arcadia new file mode 100644 index 00000000..25483175 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-all-optional.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Exchange { }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-all-optional.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-all-optional.canonical.arcadia new file mode 100644 index 00000000..89c53774 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-all-optional.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Exchange { + exchange none; + message_kind Asynchronous; + receiver none; + reply_to none; + sender none; + values []; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-exchange.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-exchange.arcadia new file mode 100644 index 00000000..8a3c3354 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-exchange.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Exchange { sender none; receiver none; message_kind Asynchronous; reply_to none; values []; operation none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-exchange.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-exchange.canonical.arcadia new file mode 100644 index 00000000..89c53774 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-exchange.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Exchange { + exchange none; + message_kind Asynchronous; + receiver none; + reply_to none; + sender none; + values []; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-message_kind.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-message_kind.arcadia new file mode 100644 index 00000000..17a4e317 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-message_kind.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Exchange { exchange none; sender none; receiver none; reply_to none; values []; operation none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-message_kind.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-message_kind.canonical.arcadia new file mode 100644 index 00000000..89c53774 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-message_kind.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Exchange { + exchange none; + message_kind Asynchronous; + receiver none; + reply_to none; + sender none; + values []; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-operation.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-operation.arcadia new file mode 100644 index 00000000..9d645462 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-operation.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Exchange { exchange none; sender none; receiver none; message_kind Asynchronous; reply_to none; values []; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-operation.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-operation.canonical.arcadia new file mode 100644 index 00000000..89c53774 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-operation.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Exchange { + exchange none; + message_kind Asynchronous; + receiver none; + reply_to none; + sender none; + values []; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-receiver.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-receiver.arcadia new file mode 100644 index 00000000..0cdc0309 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-receiver.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Exchange { exchange none; sender none; message_kind Asynchronous; reply_to none; values []; operation none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-receiver.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-receiver.canonical.arcadia new file mode 100644 index 00000000..89c53774 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-receiver.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Exchange { + exchange none; + message_kind Asynchronous; + receiver none; + reply_to none; + sender none; + values []; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-reply_to.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-reply_to.arcadia new file mode 100644 index 00000000..2f8c936b --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-reply_to.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Exchange { exchange none; sender none; receiver none; message_kind Asynchronous; values []; operation none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-reply_to.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-reply_to.canonical.arcadia new file mode 100644 index 00000000..89c53774 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-reply_to.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Exchange { + exchange none; + message_kind Asynchronous; + receiver none; + reply_to none; + sender none; + values []; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-sender.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-sender.arcadia new file mode 100644 index 00000000..cc3e3593 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-sender.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Exchange { exchange none; receiver none; message_kind Asynchronous; reply_to none; values []; operation none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-sender.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-sender.canonical.arcadia new file mode 100644 index 00000000..89c53774 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-sender.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Exchange { + exchange none; + message_kind Asynchronous; + receiver none; + reply_to none; + sender none; + values []; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-values.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-values.arcadia new file mode 100644 index 00000000..ffee12b8 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-values.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Exchange { exchange none; sender none; receiver none; message_kind Asynchronous; reply_to none; operation none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-values.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-values.canonical.arcadia new file mode 100644 index 00000000..89c53774 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Exchange-omit-values.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Exchange { + exchange none; + message_kind Asynchronous; + receiver none; + reply_to none; + sender none; + values []; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Fragment-explicit.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Fragment-explicit.arcadia new file mode 100644 index 00000000..945f14fe --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Fragment-explicit.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint Functional; steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Fragment { operator Alternative; branches []; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Fragment-explicit.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Fragment-explicit.canonical.arcadia new file mode 100644 index 00000000..d06b59d6 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Fragment-explicit.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + sa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { + context none; + description ""; + parent none; + postcondition ""; + precondition ""; + steps [@subject]; + viewpoint Functional; + } + + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + Fragment { + branches []; + operator Alternative; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Fragment-omit-branches.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Fragment-omit-branches.arcadia new file mode 100644 index 00000000..ddd550f8 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Fragment-omit-branches.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint Functional; steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Fragment { operator Alternative; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-Fragment-omit-operator.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-Fragment-omit-operator.arcadia new file mode 100644 index 00000000..d7008ed5 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-Fragment-omit-operator.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint Functional; steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { Fragment { branches []; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-ScenarioUse-explicit.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-ScenarioUse-explicit.arcadia new file mode 100644 index 00000000..28270d6b --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-ScenarioUse-explicit.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint Functional; steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { ScenarioUse { scenario none; bindings []; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-ScenarioUse-explicit.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-ScenarioUse-explicit.canonical.arcadia new file mode 100644 index 00000000..ecb024d2 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-ScenarioUse-explicit.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + sa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { + context none; + description ""; + parent none; + postcondition ""; + precondition ""; + steps [@subject]; + viewpoint Functional; + } + + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + ScenarioUse { + bindings []; + scenario none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-ScenarioUse-omit-all-optional.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-ScenarioUse-omit-all-optional.arcadia new file mode 100644 index 00000000..6906d729 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-ScenarioUse-omit-all-optional.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint Functional; steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { ScenarioUse { bindings []; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-ScenarioUse-omit-all-optional.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-ScenarioUse-omit-all-optional.canonical.arcadia new file mode 100644 index 00000000..ecb024d2 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-ScenarioUse-omit-all-optional.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + sa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { + context none; + description ""; + parent none; + postcondition ""; + precondition ""; + steps [@subject]; + viewpoint Functional; + } + + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + ScenarioUse { + bindings []; + scenario none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-ScenarioUse-omit-bindings.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-ScenarioUse-omit-bindings.arcadia new file mode 100644 index 00000000..f07d3d27 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-ScenarioUse-omit-bindings.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint Functional; steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { ScenarioUse { scenario none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-ScenarioUse-omit-scenario.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-ScenarioUse-omit-scenario.arcadia new file mode 100644 index 00000000..6906d729 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-ScenarioUse-omit-scenario.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint Functional; steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { ScenarioUse { bindings []; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-ScenarioUse-omit-scenario.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-ScenarioUse-omit-scenario.canonical.arcadia new file mode 100644 index 00000000..ecb024d2 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-ScenarioUse-omit-scenario.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + sa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { + context none; + description ""; + parent none; + postcondition ""; + precondition ""; + steps [@subject]; + viewpoint Functional; + } + + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + ScenarioUse { + bindings []; + scenario none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-SequenceReference-explicit.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-SequenceReference-explicit.arcadia new file mode 100644 index 00000000..33ae8790 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-SequenceReference-explicit.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { SequenceReference { sequence none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-SequenceReference-explicit.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-SequenceReference-explicit.canonical.arcadia new file mode 100644 index 00000000..c8641a6c --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-SequenceReference-explicit.canonical.arcadia @@ -0,0 +1,23 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + SequenceReference { + sequence none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-SequenceReference-omit-all-optional.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-SequenceReference-omit-all-optional.arcadia new file mode 100644 index 00000000..042133db --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-SequenceReference-omit-all-optional.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { SequenceReference { }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-SequenceReference-omit-all-optional.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-SequenceReference-omit-all-optional.canonical.arcadia new file mode 100644 index 00000000..c8641a6c --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-SequenceReference-omit-all-optional.canonical.arcadia @@ -0,0 +1,23 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + SequenceReference { + sequence none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-SequenceReference-omit-sequence.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-SequenceReference-omit-sequence.arcadia new file mode 100644 index 00000000..042133db --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-SequenceReference-omit-sequence.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { SequenceReference { }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-SequenceReference-omit-sequence.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-SequenceReference-omit-sequence.canonical.arcadia new file mode 100644 index 00000000..c8641a6c --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-SequenceReference-omit-sequence.canonical.arcadia @@ -0,0 +1,23 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + sa_functional_chain owner "Owner" id "00000000-0000-4000-8000-000000000002" { + description ""; + parent none; + steps [@subject]; + } + + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + SequenceReference { + sequence none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-State-explicit.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-State-explicit.arcadia new file mode 100644 index 00000000..0e15faef --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-State-explicit.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint Functional; steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { State { state none; lifeline none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-State-explicit.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-State-explicit.canonical.arcadia new file mode 100644 index 00000000..297d1195 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-State-explicit.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + sa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { + context none; + description ""; + parent none; + postcondition ""; + precondition ""; + steps [@subject]; + viewpoint Functional; + } + + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + State { + lifeline none; + state none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-State-omit-all-optional.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-State-omit-all-optional.arcadia new file mode 100644 index 00000000..47e34183 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-State-omit-all-optional.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint Functional; steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { State { }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-State-omit-all-optional.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-State-omit-all-optional.canonical.arcadia new file mode 100644 index 00000000..297d1195 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-State-omit-all-optional.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + sa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { + context none; + description ""; + parent none; + postcondition ""; + precondition ""; + steps [@subject]; + viewpoint Functional; + } + + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + State { + lifeline none; + state none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-State-omit-lifeline.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-State-omit-lifeline.arcadia new file mode 100644 index 00000000..2f094f39 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-State-omit-lifeline.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint Functional; steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { State { state none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-State-omit-lifeline.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-State-omit-lifeline.canonical.arcadia new file mode 100644 index 00000000..297d1195 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-State-omit-lifeline.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + sa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { + context none; + description ""; + parent none; + postcondition ""; + precondition ""; + steps [@subject]; + viewpoint Functional; + } + + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + State { + lifeline none; + state none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-State-omit-state.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-State-omit-state.arcadia new file mode 100644 index 00000000..980c68f7 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-State-omit-state.arcadia @@ -0,0 +1,7 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + sa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { viewpoint Functional; steps [@subject]; } + + // Authored omissions must stay omitted through no-op and a name edit. + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { parent @owner; body { State { lifeline none; }; }; } +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-State-omit-state.canonical.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-State-omit-state.canonical.arcadia new file mode 100644 index 00000000..297d1195 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-State-omit-state.canonical.arcadia @@ -0,0 +1,28 @@ +arcadia 7; +project defaults "Constructor defaults" id "00000000-0000-4000-8000-000000000001" { + description ""; + + sa_scenario owner "Owner" id "00000000-0000-4000-8000-000000000002" { + context none; + description ""; + parent none; + postcondition ""; + precondition ""; + steps [@subject]; + viewpoint Functional; + } + + sa_occurrence subject "Subject" id "00000000-0000-4000-8000-000000000003" { + body { + State { + lifeline none; + state none; + }; + }; + description ""; + parent @owner; + postcondition ""; + precondition ""; + } + +} diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-scenario-viewpoint-explicit.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-scenario-viewpoint-explicit.arcadia new file mode 100644 index 00000000..91a99a41 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-scenario-viewpoint-explicit.arcadia @@ -0,0 +1,2 @@ +arcadia 7; +project defaults "Defaults" id "00000000-0000-4000-8000-000000000001" { sa_scenario scene "Scene" id "00000000-0000-4000-8000-000000000002" { viewpoint MixedLegacy; } } diff --git a/harness/experiments/constructor-defaults-20260911/results/SA-scenario-viewpoint-omitted.arcadia b/harness/experiments/constructor-defaults-20260911/results/SA-scenario-viewpoint-omitted.arcadia new file mode 100644 index 00000000..ce78dcc4 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/SA-scenario-viewpoint-omitted.arcadia @@ -0,0 +1,2 @@ +arcadia 7; +project defaults "Defaults" id "00000000-0000-4000-8000-000000000001" { sa_scenario scene "Scene" id "00000000-0000-4000-8000-000000000002" { } } diff --git a/harness/experiments/constructor-defaults-20260911/results/results.tsv b/harness/experiments/constructor-defaults-20260911/results/results.tsv new file mode 100644 index 00000000..98143a80 --- /dev/null +++ b/harness/experiments/constructor-defaults-20260911/results/results.tsv @@ -0,0 +1,67 @@ +case layer result detail +OA-Exchange-explicit OA accept exact Project, raw/no-op/name/canonical; 2 model issues +OA-Exchange-omit-exchange OA accept exact Project, raw/no-op/name/canonical; 2 model issues +OA-Exchange-omit-sender OA accept exact Project, raw/no-op/name/canonical; 2 model issues +OA-Exchange-omit-receiver OA accept exact Project, raw/no-op/name/canonical; 2 model issues +OA-Exchange-omit-message_kind OA accept exact Project, raw/no-op/name/canonical; 2 model issues +OA-Exchange-omit-reply_to OA accept exact Project, raw/no-op/name/canonical; 2 model issues +OA-Exchange-omit-values OA accept exact Project, raw/no-op/name/canonical; 2 model issues +OA-Exchange-omit-operation OA accept exact Project, raw/no-op/name/canonical; 2 model issues +OA-Exchange-omit-all-optional OA accept exact Project, raw/no-op/name/canonical; 2 model issues +OA-Action-explicit OA accept exact Project, raw/no-op/name/canonical; 1 model issues +OA-Action-omit-action OA accept exact Project, raw/no-op/name/canonical; 1 model issues +OA-Action-omit-lifeline OA accept exact Project, raw/no-op/name/canonical; 1 model issues +OA-Action-omit-all-optional OA accept exact Project, raw/no-op/name/canonical; 1 model issues +OA-State-explicit OA accept exact Project, raw/no-op/name/canonical; 2 model issues +OA-State-omit-state OA accept exact Project, raw/no-op/name/canonical; 2 model issues +OA-State-omit-lifeline OA accept exact Project, raw/no-op/name/canonical; 2 model issues +OA-State-omit-all-optional OA accept exact Project, raw/no-op/name/canonical; 2 model issues +OA-SequenceReference-explicit OA accept exact Project, raw/no-op/name/canonical; 1 model issues +OA-SequenceReference-omit-sequence OA accept exact Project, raw/no-op/name/canonical; 1 model issues +OA-SequenceReference-omit-all-optional OA accept exact Project, raw/no-op/name/canonical; 1 model issues +OA-ScenarioUse-explicit OA accept exact Project, raw/no-op/name/canonical; 1 model issues +OA-ScenarioUse-omit-scenario OA accept exact Project, raw/no-op/name/canonical; 1 model issues +OA-ScenarioUse-omit-bindings OA reject [SourceDiagnostic { path: "project.arcadia", diagnostic: Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 6, column: 3, message: "missing field `bindings`", span: Span { start: 296, end: 297 } }, related: [] }] +OA-ScenarioUse-omit-all-optional OA accept exact Project, raw/no-op/name/canonical; 1 model issues +OA-Control-explicit OA accept exact Project, raw/no-op/name/canonical; 1 model issues +OA-Control-omit-kind OA reject [SourceDiagnostic { path: "project.arcadia", diagnostic: Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 6, column: 3, message: "missing field `kind`", span: Span { start: 265, end: 266 } }, related: [] }] +OA-Fragment-explicit OA accept exact Project, raw/no-op/name/canonical; 0 model issues +OA-Fragment-omit-operator OA reject [SourceDiagnostic { path: "project.arcadia", diagnostic: Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 6, column: 3, message: "missing field `operator`", span: Span { start: 296, end: 297 } }, related: [] }] +OA-Fragment-omit-branches OA reject [SourceDiagnostic { path: "project.arcadia", diagnostic: Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 6, column: 3, message: "missing field `branches`", span: Span { start: 296, end: 297 } }, related: [] }] +OA-Branch-explicit OA accept exact Project, raw/no-op/name/canonical; 0 model issues +OA-Branch-omit-guard OA reject [SourceDiagnostic { path: "project.arcadia", diagnostic: Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 6, column: 3, message: "missing field `guard`", span: Span { start: 460, end: 461 } }, related: [] }] +OA-Branch-omit-occurrences OA reject [SourceDiagnostic { path: "project.arcadia", diagnostic: Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 6, column: 3, message: "missing field `occurrences`", span: Span { start: 460, end: 461 } }, related: [] }] +OA-scenario-viewpoint OA accept exact MixedLegacy Project, retained omission, canonical roundtrip +SA-Exchange-explicit SA accept exact Project, raw/no-op/name/canonical; 3 model issues +SA-Exchange-omit-exchange SA accept exact Project, raw/no-op/name/canonical; 3 model issues +SA-Exchange-omit-sender SA accept exact Project, raw/no-op/name/canonical; 3 model issues +SA-Exchange-omit-receiver SA accept exact Project, raw/no-op/name/canonical; 3 model issues +SA-Exchange-omit-message_kind SA accept exact Project, raw/no-op/name/canonical; 3 model issues +SA-Exchange-omit-reply_to SA accept exact Project, raw/no-op/name/canonical; 3 model issues +SA-Exchange-omit-values SA accept exact Project, raw/no-op/name/canonical; 3 model issues +SA-Exchange-omit-operation SA accept exact Project, raw/no-op/name/canonical; 3 model issues +SA-Exchange-omit-all-optional SA accept exact Project, raw/no-op/name/canonical; 3 model issues +SA-Action-explicit SA accept exact Project, raw/no-op/name/canonical; 2 model issues +SA-Action-omit-action SA accept exact Project, raw/no-op/name/canonical; 2 model issues +SA-Action-omit-lifeline SA accept exact Project, raw/no-op/name/canonical; 2 model issues +SA-Action-omit-all-optional SA accept exact Project, raw/no-op/name/canonical; 2 model issues +SA-State-explicit SA accept exact Project, raw/no-op/name/canonical; 3 model issues +SA-State-omit-state SA accept exact Project, raw/no-op/name/canonical; 3 model issues +SA-State-omit-lifeline SA accept exact Project, raw/no-op/name/canonical; 3 model issues +SA-State-omit-all-optional SA accept exact Project, raw/no-op/name/canonical; 3 model issues +SA-SequenceReference-explicit SA accept exact Project, raw/no-op/name/canonical; 2 model issues +SA-SequenceReference-omit-sequence SA accept exact Project, raw/no-op/name/canonical; 2 model issues +SA-SequenceReference-omit-all-optional SA accept exact Project, raw/no-op/name/canonical; 2 model issues +SA-ScenarioUse-explicit SA accept exact Project, raw/no-op/name/canonical; 2 model issues +SA-ScenarioUse-omit-scenario SA accept exact Project, raw/no-op/name/canonical; 2 model issues +SA-ScenarioUse-omit-bindings SA reject [SourceDiagnostic { path: "project.arcadia", diagnostic: Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 6, column: 3, message: "missing field `bindings`", span: Span { start: 287, end: 288 } }, related: [] }] +SA-ScenarioUse-omit-all-optional SA accept exact Project, raw/no-op/name/canonical; 2 model issues +SA-Control-explicit SA accept exact Project, raw/no-op/name/canonical; 2 model issues +SA-Control-omit-kind SA reject [SourceDiagnostic { path: "project.arcadia", diagnostic: Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 6, column: 3, message: "missing field `kind`", span: Span { start: 274, end: 275 } }, related: [] }] +SA-Fragment-explicit SA accept exact Project, raw/no-op/name/canonical; 1 model issues +SA-Fragment-omit-operator SA reject [SourceDiagnostic { path: "project.arcadia", diagnostic: Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 6, column: 3, message: "missing field `operator`", span: Span { start: 287, end: 288 } }, related: [] }] +SA-Fragment-omit-branches SA reject [SourceDiagnostic { path: "project.arcadia", diagnostic: Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 6, column: 3, message: "missing field `branches`", span: Span { start: 287, end: 288 } }, related: [] }] +SA-Branch-explicit SA accept exact Project, raw/no-op/name/canonical; 1 model issues +SA-Branch-omit-guard SA reject [SourceDiagnostic { path: "project.arcadia", diagnostic: Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 6, column: 3, message: "missing field `guard`", span: Span { start: 451, end: 452 } }, related: [] }] +SA-Branch-omit-occurrences SA reject [SourceDiagnostic { path: "project.arcadia", diagnostic: Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 6, column: 3, message: "missing field `occurrences`", span: Span { start: 451, end: 452 } }, related: [] }] +SA-scenario-viewpoint SA accept exact MixedLegacy Project, retained omission, canonical roundtrip diff --git a/harness/fixtures/behavior-creation/README.md b/harness/fixtures/behavior-creation/README.md index 6bf9cab7..7f570d5a 100644 --- a/harness/fixtures/behavior-creation/README.md +++ b/harness/fixtures/behavior-creation/README.md @@ -3,7 +3,8 @@ Independent checker: `harness/behavior-creation-contract.rs`. The contract was prepared before reading any created output on 2026-09-11. Its direct-rustc build, self-check and unchanged-baseline comparison pass; native creation acceptance -is not implied. +is not implied. Use the corrected **v2** checker: the initial version published +in `4bb4aaf` incorrectly rejected files safely retained on disk after Undo. Use a whole-directory copy of the preserved input: `.local/native-qa/palette-20260910-v3/checkpoint-transition-reopen/project.arcadia`. @@ -32,8 +33,8 @@ Build only within a coordinated direct-rustc writer window. This imports ```powershell . .local/toolchain/env.ps1 -rustc --edition 2024 -D warnings --crate-name behavior_creation_contract harness/behavior-creation-contract.rs --extern oa_core=.local/target-gnullvm/debug/deps/liboa_core-3e81c616fea1d901.rlib -L dependency=.local/target-gnullvm/debug/deps -C linker=clang.exe -o .local/behavior-creation-oracle-20260911/behavior-creation-contract.exe -$oracle = '.local/behavior-creation-oracle-20260911/behavior-creation-contract.exe' +rustc --edition 2024 -D warnings --crate-name behavior_creation_contract harness/behavior-creation-contract.rs --extern oa_core=.local/target-gnullvm/debug/deps/liboa_core-3e81c616fea1d901.rlib -L dependency=.local/target-gnullvm/debug/deps -C linker=clang.exe -o .local/behavior-creation-oracle-20260911/behavior-creation-contract-v2.exe +$oracle = '.local/behavior-creation-oracle-20260911/behavior-creation-contract-v2.exe' $base = '.local/native-qa/palette-20260910-v3/checkpoint-transition-reopen/project.arcadia' & $oracle self-check $base & $oracle check baseline $base $base $base @@ -42,13 +43,15 @@ $base = '.local/native-qa/palette-20260910-v3/checkpoint-transition-reopen/proje & $oracle check machine $base PATH_TO_MACHINE_ENTRY PATH_TO_MACHINE_ENTRY ``` -After each creation, Undo once and Save into a fresh checkpoint; `same` must -compare that checkpoint with the preceding accepted stage (the initial baseline -for Process). Redo once and Save into another fresh checkpoint. For Redo and +After each creation, Undo once and Save into a fresh checkpoint; `same` compares +it with the preceding accepted stage (the initial baseline for Process). Supply +the first committed creation checkpoint as the explicit `UNDO_FROM` argument: +the safe saver preserves newly detached files instead of deleting them. Redo +once and Save into another fresh checkpoint. For Redo and reopen, pass the **first committed checkpoint** as the final role argument: ```powershell -& $oracle same PREVIOUS_ACCEPTED_ENTRY UNDO_ENTRY +& $oracle same PREVIOUS_ACCEPTED_ENTRY UNDO_ENTRY FIRST_COMMITTED_ENTRY & $oracle check machine $base REDO_ENTRY FIRST_MACHINE_ENTRY & $oracle same FIRST_MACHINE_ENTRY REOPEN_ENTRY ``` @@ -58,16 +61,29 @@ UUIDs across history; using a redo file as its own role carrier would not prove identity retention. A cancellation has no predicted addition: compare its checkpoint with the accepted pre-cancellation checkpoint using `same`. +For Undo, the complete reachable Project and SourceBundle must still equal the +previous accepted stage. The complete disk `.arcadia` file map must equal the +exact `UNDO_FROM` file map with those expected reachable files overlaid. Thus +only known retained paths with exact previously committed bytes are accepted; +unknown files, changed or missing retained files, or changed reachable bytes +fail. The supplied first-commit checkpoint must itself contain exactly its +reachable files. Ordinary creation, cancellation and reopen checks retain that +strict file-set rule; there is no arbitrary detached-file exemption. + The checker borrows only unique fresh UUIDv4 values with exact literal kind/layer/name, view projection/name, or diagram/element placement roles. Descriptions, aliases, parents, viewpoint/context, body defaults and geometry are independently constructed. It compares complete Project and SourceBundle, -rejects detached extra `.arcadia` files, and uses pinned six-file byte lengths +checks the exact disk-file policy above, and uses pinned six-file byte lengths and FNV-1a fingerprints to refuse a substituted baseline. SHA-256 provenance is recorded in `harness/release-behavior-creation-oracle-20260911.md`. Self-checks use deliberately false metadata/geometry in the role carrier, then reject changed scenario semantics, unrelated edits, extra objects/files and -source-only comment drift. Native focus, readable labels, minimum/wide layout, +source-only comment drift. V2 additionally accepts an independently constructed +valid Undo retention case and rejects unknown, changed or missing detached +files. The existing immutable transition Undo also passes with four reachable +sources and six exact disk files; real isolated copies with an unknown or +modified detached file fail. Native focus, readable labels, minimum/wide layout, selection of the new owner/view, and one-step Undo/Redo are separate observations; saved equality alone cannot establish them. diff --git a/harness/release-behavior-creation-native-20260911.md b/harness/release-behavior-creation-native-20260911.md new file mode 100644 index 00000000..92531d10 --- /dev/null +++ b/harness/release-behavior-creation-native-20260911.md @@ -0,0 +1,149 @@ +# Behavior creation cancellation — native Windows check, 2026-09-11 + +Codex-9e8r6t /root/palette_finish. Root assigned exclusive native input; all input used the Computer Use skill's `@oai/sky` through `node_repl`. This is a bounded cancellation/layout check, not acceptance of new behavior objects or the complete creation workflow. No Rust/Cargo work occurred. + +## Exact candidate and isolated state + +Waited for the author's post-lint immutable GUI rather than substituting the earlier build. Copied `.local/behavior-creation-20260911/gui-verified/{arcadia-studio.exe,libunwind.dll,manifest.json}` to `.local/native-qa/behavior-20260911-v4/bin`. + +| File | Bytes | SHA256 | +| --- | ---: | --- | +| `arcadia-studio.exe` | 111163904 | `d4d9c2bd937e301ff1009d7cb93a34ee5aa6dfc837ff7e87d468c85371b20c31` | +| `libunwind.dll` | 190976 | `f45604a12e8bcd839fd86f667c1be1cc7c4f9da2b3c69ff381ac708f0e1ae7d4` | + +The copied author manifest records the source snapshot and narrow post-lint difference. This reviewer did not rerun its automated gates. GUI started at **08:50:49 UTC**, PID **5184**, with `LOCALAPPDATA` and `APPDATA` redirected to fresh `v4/profile/local` and `v4/profile/roaming`. Runtime PATH contained only the staged bin and Windows/System32 directories. `launch.json` records the executable, environment and timestamp. No existing recents/recovery store was copied. + +Copied the entire preserved `.local/native-qa/palette-20260910-v3/checkpoint-transition-reopen` into `v4/work/basic-rescue`; pre-open comparison required all six source files to match exactly. Opened this copy through Studio's native Open dialog. Main returned window **6095570**, exact staged process path; Open dialog **3277858**. A file-dialog `set_value` attempt reported `Requested property was not in the CacheRequest (0x80070057)`. Fresh observation plus coordinate focus/type successfully entered the full authorized path. No user-stop, helper timeout, security prompt or unsupported UI automation occurred. + +## Actual window sizes and supported sizing procedure + +Initial capture was **1442×932**, corresponding to the configured **1440×900 client**. Minimum capture was actually observed as **1102×732**, corresponding to the supported **1100×700 client**; no screenshot scaling or source setting alone substitutes for this observation. + +Direct corner/bottom drag attempts did not resize the window. The working native sequence was: + +1. `Alt+Space`; inspect the returned System menu and select **Size**. +2. Press **Right**, then drag the right edge inward. The capture became 1102×932, with width clamped at the supported minimum. +3. Repeat `Alt+Space` → **Size**, press **Down**, then drag the bottom edge inward. Capture became 1102×732. + +Each input used the current returned window and was followed by a fresh observation. The evidence supports this alternative sizing procedure; it does not identify an underlying defect in the initial direct-drag attempts. + +## Observed bounded matrix + +Every draft below was canceled; **Create and open was never pressed**. The accepted model count remained the baseline display of 10 objects / 2 links. Source equality was independently checked after the final Save, as recorded below. + +| Check | Observed result | +| --- | --- | +| Wide OA family chooser | New shows three cards: Operational process, Scenario, State machine, with short purposes. Cancel remains at the bottom of the creation card. | +| Wide OA process naming | Choosing Operational process focused the name field automatically; typing worked without another field click. A long name containing `雨` and an em dash stayed within the single-line input and horizontally scrolled to the caret. Create/Cancel remained visible. | +| First Escape from focused process name | One Escape removed the whole draft/card, restored **All changes saved**, and showed **Behavior creation cancelled**. It did not merely unfocus the input. | +| Minimum OA family/scenario | All family cards and actions fit. Choosing Scenario focused its name input. Two explicit viewpoints were shown, neither initially selected. Selected **Participants · interactions**. Ownership text explicitly said OA layer root. | +| Minimum optional context | Initially collapsed. Opening it showed search/results in the scrolling field area; Create/Cancel stayed below that area. Search `capability` produced one result, **Rescue capability**, with kind/alias/OA-root context. Selected it and collapsed the picker; the summary retained name, kind, alias and layer. Long scenario name stayed inside the input. Explicit **Cancel · Esc** restored the clean saved state. | +| Minimum machine owner | Choosing State machine focused its name input. Search `rescue_team` reduced two existing OA participants to the intended Rescue team. Candidate and selected summary showed Entity / rescue_team / OA root. Selected this owner. | +| Minimum first-view option | **Create the first state view** was initially unchecked; toggled it on as draft state. The explanation that the machine starts without regions/states and both actions remained visible. Refocused the retained long name, then one Escape canceled the machine and optional-view draft together. Clean saved state returned. | +| Minimum SA family/chain | After cancellation, switched to SA. New correctly offered **Functional chain**, Scenario and State machine. Functional-chain naming autofocused; a long Unicode draft stayed within its input. First Escape canceled it and returned to the existing SA state-machine workspace. | +| Save after all cancellations | **Save all** completed with **All source files saved** and a clean title. No confirmation or recovery dialog remained. | + +Typed long drafts deliberately exercised horizontal input bounds, not multiline text wrapping. The fixture's candidate labels are short root names; this run does not establish wrapping of long ancestor chains, same-name nested-owner discovery, six-result pagination, or large-catalog performance. The optional context's unfiltered list did require scrolling at minimum size; fixed actions remained visible and filtering removed the overflow. No actionable creation defect was found within the exercised matrix. + +## Independent source preservation check + +At **08:58:59 UTC**, compared complete file inventory, length and SHA256 after all cancellations and native Save against the pre-open baseline: **6/6 files PASS; no added or missing files**. Exact machine-readable records are `v4/baseline-source-manifest.json` and `v4/cancel-save-verification.json`. + +| Relative source | Bytes | SHA256 before and after | +| --- | ---: | --- | +| `project.arcadia` | 4844 | `b35a3f63f223cc4fe2760d6308e87b016ed1eadfbef0a3a4bd051b52c9080958` | +| `rationale.arcadia` | 57 | `c01867c9dc0d40726853119fac3c6ad24a40d8d362a93a8b9d20df04ec2e273f` | +| `traceability.arcadia` | 395 | `f778acaaa85de0940cedcd9514cd803032a11e782d859454203235febb73e5f0` | +| `oa/participants.arcadia` | 403 | `094cab67f34b64902942c10a35bbcd0f760886d862588a0816d6ceb57bacf51b` | +| `oa/activities/activity_assess_incident.arcadia` | 376 | `ae41d7c20b062b39c2edab7fb890a3d88a9ce18fd8d03018ef2d6f95eeff62e8` | +| `sa/participants.arcadia` | 124 | `fb975b83d3ec164c38936bf27fe7d2021cc46805574902a534744b040f7d3ae8` | + +`stderr.log` was **0 bytes**. Screenshots were inspected directly in Computer Use results; no separate screenshot archive is claimed. + +## Handoff and remaining gates + +Native-input lease returned explicitly to root at approximately **08:59 UTC**. PID5184 was left running at minimum size, SA Behavior / States & modes, displaying the baseline **Decoy operating modes** selection. All drafts were canceled, all source saved, no dialog open. This reviewer performed no further native input after handoff. + +Actual creation and command-correlated opening, model/source Undo/Redo, recovery of a pending creation, modal-priority Escape, source-write rejection during creation, long nested labels, and crowded picker pagination remain separate acceptance gates. Automated evidence for some of them exists in the owner's report; it is not relabeled as native evidence here. Root owns the independent accepted-object oracle and next native work. + +## Follow-up: accepted creation, history and reopen + +The section above records this reviewer's earlier cancellation-only session. Root subsequently performed the following native model-producing sequence in the **same D4D9C2BD…1B20C31 candidate**, at the actually observed **1100×700 client**. Root retained exclusive native input; the reviewer independently reran the existing v2 checker against immutable checkpoints at **09:18:19–09:18:23 UTC**. No live `work` model, profile or UI was accessed during that readback, and no Cargo/compiler ran. UI observations below are attributed to root; checkpoint assertions are this reviewer's independent execution of the previously specified oracle. + +1. In OA **Behavior → New → Operational process**, type **Coordinate rescue**, then **Create and open**. The new process opened. Save and preserve `checkpoint-process`; Undo **once**, Save and preserve `checkpoint-process-undo`; Redo **once**, Save and preserve `checkpoint-process-redo`. +2. In OA **Behavior → New → Scenario**, type **Rescue coordination conversation**, explicitly select **Participants · interactions** (`ParticipantInteraction`), expand optional context and select **Rescue capability** (`b451c000-0000-4000-8000-00000000001f`). **Create and open** opened the scenario. Save as `checkpoint-scenario`; separately perform one Undo/Save and one Redo/Save, preserving `checkpoint-scenario-undo` and `checkpoint-scenario-redo`. +3. Switch to SA, then **Behavior → New → State machine**. Type **Rescue team operating modes**, select the existing SA **Rescue team** SystemActor (`c0629449-1209-4b50-afac-f558a9a0fc7f`), and check **Create the first state view**. **Create and open** selected the expected machine/view. Save as `checkpoint-machine`; separately perform one Undo/Save and one Redo/Save, preserving `checkpoint-machine-undo` and `checkpoint-machine-redo`. +4. Open the saved project through the actual native file picker, then Save again and preserve `checkpoint-creation-reopen`. Root reported a dialog-target retry: typing against the parent window did not fill the dialog, and a bounds error required fresh dialog observation/retargeting. The subsequent dialog Open succeeded. The final model/source checkpoint proves the resulting reopen, not the failed input attempt. + +All ten named checkpoints are whole-directory snapshots under `.local/native-qa/behavior-20260911-v4`. Root reported the same running PID5184/window6095570 and zero-byte stderr at completion; this consolidation did not poll or control that live process. + +### Independently rerun contract and exact file checks + +**13/13 commands passed**, including the checker's falsifier self-check and pinned baseline check. Every first-commit checkpoint was its own fresh-role carrier; its **original** role identities were then reused for Redo and final reopen. Each Undo used the preceding first-commit stage as expected state and the corresponding creation's first-commit snapshot as explicit `UNDO_FROM`. Thus Redo is not allowed to pass by borrowing newly substituted identities from itself. + +| Checkpoint | Complete semantic and source result | Exact physical source files | +| --- | --- | ---: | +| Process / Process Redo | Predicted OA process and all previous data; 7 reachable sources | 7 | +| Process Undo | Exact initial baseline model/identities and 6 reachable sources | 7, including 1 proven retained file | +| Scenario / Scenario Redo | Cumulative process plus explicitly qualified/contextual scenario; 8 reachable sources | 8 | +| Scenario Undo | Exact original Process checkpoint; 7 reachable sources | 8, including 1 proven retained file | +| Machine / Machine Redo | Cumulative objects plus owned machine and opt-in first view; 9 reachable sources | 9 | +| Machine Undo | Exact original Scenario checkpoint; 8 reachable sources | 9, including 1 proven retained file | +| Reopen | Full Machine contract using original machine identities, plus exact Machine Redo equality | 9 | + +The complete predicted Project and SourceBundle comparisons cover root ownership versus scenario context, explicit viewpoint, exact names/defaults, retained unrelated records, and the new machine's SystemActor parent. The optional view is **Rescue team operating modes · states**, SA StateMachine projection with exactly one machine placement at **60,60**, size **336×104**, no states or regions and default options. These are the independently specified fixture expectations, not values inferred wholesale from the produced model. + +In addition to the oracle, the runner compared **every physical file's actual bytes** between `checkpoint-machine-redo` and `checkpoint-creation-reopen`: **9/9 equal**, with identical path inventory. All eleven input directories (baseline plus ten checkpoints) retained the same complete inventory, lengths and SHA256 values before and after execution. No checkpoint source files were copied into the tracked evidence directory. + +The durable runner, every command argv/stdout/stderr/exit code/timing, all checkpoint file hashes, and candidate/oracle/screenshot provenance are in `harness/experiments/behavior-creation-native-20260911/`: + +| Artifact | SHA256 | +| --- | --- | +| `verify.py` | `4921c4615071240c3ac3bbe1223c0db3bf472fe5e3eec2ae5dac12f95b1674df` | +| `commands-results.log` | `f5bfbee185f7064419b1bd9fe33ec6a48526b5bbe3f818c006feb74eddf8e189` | +| `manifest.json` | `356dfbb27dec04764a4b3f2372602f39953b472baac0a3de3e72acd9c1d76b8a` | +| Existing v2 executable | `056eefd444924916bf6ac3c4897ab2ff4a8a4bb892e1dbc16adad32e59bf6a36` | +| Oracle source | `51ab2ffa1826dd949b79f3a9690042a2f9e38daf9ed91517cade3861482117ba` | + +Reproduce without building: run `python harness/experiments/behavior-creation-native-20260911/verify.py` with the preserved existing executable, checkpoints and staged runtime. The script verifies the expected executable/source hashes before executing. It prepends the staged bin to its child runtime PATH. Its JSON records absolute executed arguments and repository-relative input manifests. + +**Harness correction:** oracle v1 incorrectly required every disk file to remain reachable after Undo. Studio's documented safe saver retains newly detached files instead of deleting them. V2 accepts only the exact previously committed retained paths/bytes proven by the explicit Undo origin, while still demanding complete model and reachable-source equality. Unknown, missing or modified retained files fail. This is a correction to the test's disk contract, **not a product regression or a relaxation for arbitrary orphan files**; see `harness/release-behavior-creation-oracle-20260911.md`. + +### Actionable empty-workspace finding and limits + +Root observed that the newly created Process presented a blank white canvas with **Tools / Selection details / Fit overview** but no visible first action. The empty Scenario likewise showed no first-lifeline action; its helper instructed selecting/reordering a lifeline or occurrence when none existed. Both require the engineer to infer that hidden Tools begins modeling. Root retained `v4/scenario-empty-saved.png` (SHA256 `b03fb33d3f4cf1e5f95e7ac4198a4dee30ffd9af5e250d481e0d5dc2a2a0f90c`) and `v4/machine-created-saved.png` (SHA256 `1e7af3d6219c430eaafb0de5afd8df4c51b4efeb80de3f642084188633dcb65b`); their hashes are also in the manifest. + +The bounded recommendation and falsifiable acceptance cases are in [the contextual-source creation plan](release-contextual-source-creation-plan-20260911.md): a semantic empty-state **Add first activity/function contribution** or **Add first lifeline** action opens the same contextual authoring form, preserves explicit viewpoint, and offers staged creation of missing sources. This is an open usability finding; successful object creation does not resolve it. + +This follow-up establishes the stated three creation/one-step-history/saved-reopen paths, in conjunction with root's native observations. It does **not** establish pending-draft recovery, camera/scroll restoration, modal-priority Escape, write-failure behavior, large-model/long-ancestry usability, or complete release readiness. Earlier cancellation evidence remains intact. No additional native lease was acquired for consolidation. + +## Follow-up: pending SA machine recovery, autofocus and cancellation + +Root supplied this additional native recovery slice; this reviewer independently verified only its immutable JSON, launch record and saved cancellation checkpoint. The earlier 13-command manifest is preserved byte for byte. This section closes the specific pending-creation recovery case described here, superseding only that portion of the preceding open-gate statement. + +After the nine-file saved reopen, root started an SA Machine draft named exactly **Recovery — secours Δ «operating modes»**, selected the existing SA **Rescue team** SystemActor, and checked the first-view option. Root verified the persisted private checkpoint and preserved `v4/recovery-evidence/before-interruption.json`. Root then force-terminated only the verified isolated PID5184 and relaunched the same executable/profile/runtime. `v4/recovery-launch.json` records launch at **09:17:07.8245552 UTC**, new PID **1284**, the original staged GUI SHA256, isolated AppData directories and clean staged-bin/Windows PATH. Root's newly returned native window was **6161106**. + +Actual **Home → Recover** restored the SA creation form, selected owner, checked first-view option and name caret. Root typed **` · resumed` without clicking a field**, directly demonstrating recovery autofocus, and preserved `after-recovery-and-typing.json`. Root then pressed **Escape once from the focused input**: the draft disappeared and status read **Behavior creation cancelled**. Actual **Save As** to a new `checkpoint-recovery-cancel/project.arcadia` succeeded. The recovered machine/view draft was never accepted. Root reported zero-byte recovery stderr and a saved recovered copy left open at wide 1442×932; this reviewer did not inspect the running UI or log. Root also compared the original live work copy with the nine-file baseline; this consolidation independently checks the immutable saved recovery copy only. + +Independent immutable readback at **09:22:33–09:22:34 UTC** passed **19/19 explicit checks**, including one existing v2 `same` command (exit 0, **0.147209 s**): + +- Exact literal Unicode name before interruption and exact deliberate suffix afterward; SA Machine family, original SystemActor UUID and `first_view: true`. +- Complete `behavior` JSON equality after removing only the deliberate suffix. No other draft fields were normalized or dropped. Reserved element `c6f559f5-401e-4e0d-af93-91faee68d3f5`, diagram `11ad8f0a-73aa-416a-bbeb-9b886bf39854`, and placement `171f7d7e-3a8f-4200-86f6-a9e2efd87610` IDs remained exact. +- Complete `accepted`, `workspace`, `property`, `workflow` and `selected` JSON values each remained exactly equal. The accepted source snapshot also matched the preceding immutable saved checkpoint's complete nine-file byte map. +- V2 `same checkpoint-creation-reopen/project.arcadia checkpoint-recovery-cancel/project.arcadia` passed complete Project, identity and nine-file SourceBundle equality, with nine exact disk files and zero retained exceptions. Separate direct-byte comparisons passed **9/9 files**, with identical complete path inventories. None of the three reserved draft IDs appeared in any saved file. +- All input checkpoint inventories, preserved evidence hashes and the original 13-command manifest remained unchanged during verification. + +The wrapper metadata (`origin`, checkpoint identity and modification time) is not asserted equal: recovery opens a distinct unsaved copy. More importantly, **persisted Undo history is not restored**; the UI explicitly explains that limitation. The evidence establishes pending draft/value/identity restoration, native autofocus, first focused Escape cancellation and saved-source preservation. It does not claim Undo/Redo continuation across recovery, accepted creation from the recovered draft, other creation families, or camera/large-model recovery coverage. + +Separate durable evidence under `harness/experiments/behavior-creation-native-20260911/`: + +| Artifact | SHA256 | +| --- | --- | +| `verify-recovery.py` | `3546b4fe68d3e1a2474015be1b652a665af238e5fcf63e04bac3f25df3d35e90` | +| `recovery-commands-results.log` | `1dc3e89aa46660bfad796e7b6bf821bebd7e5bc5a7902a826021d461a3e74c68` | +| `recovery-manifest.json` | `68e2fcf653f7a59037c9eb0b31f6c9e629dc0ab88af545d5b78a2bbf8c980a72` | +| Preserved `before-interruption.json` | `0c355aa3c7b9be623d767ff35c4b85cf7b2907eb9bc3be39d619aa610c989692` | +| Preserved `after-recovery-and-typing.json` | `fafa7a884275bac09afab365f8ab0063f998ca56c5ffc70be596db6f78a10103` | +| Root's `restored-draft.png` | `8ae0fe8957d5a935b6e2605a6ffb68934bd0e8840f3594c43e63865ab89d03c9` | + +Reproduce with `python harness/experiments/behavior-creation-native-20260911/verify-recovery.py` using the preserved files and existing oracle/runtime. It reads only the explicit immutable inputs, never the live `work` or profile paths mentioned inside JSON. No native input, production changes or compilation occurred during this consolidation. diff --git a/harness/release-behavior-creation-oracle-20260911.md b/harness/release-behavior-creation-oracle-20260911.md index b29299eb..8f4d33b9 100644 --- a/harness/release-behavior-creation-oracle-20260911.md +++ b/harness/release-behavior-creation-oracle-20260911.md @@ -1,5 +1,10 @@ # Independent native creation oracle — 2026-09-11 +Current checker: **v2**, source `51AB2FFA1826DD949B79F3A9690042A2F9E38DAF9ED91517CADE3861482117BA`, +executable `056EEFD444924916BF6AC3C4897AB2FF4A8A4BB892E1DBC16ADAD32E59BF6A36`. +It supersedes the initial version's incorrect strict-disk rule for Undo; +the initial build evidence below is retained as history. + Codex-9e8r6t /root/behavior_audit. Owns only the new standalone `harness/behavior-creation-contract.rs`, fixture README and this report. No production Rust, Cargo, native input, commit or push. Read PROJECT_GOAL, @@ -52,3 +57,38 @@ be mistaken for history preservation. `same` compares all identities and source bytes with a previously accepted checkpoint. The reused core transaction/layout and source updater define the published model/source contract; independent native observations must still establish UI behavior and transaction boundaries. + +## V2: explicitly proven retained files after Undo + +Root independently found the initial harness defect before new native creation: +`checkpoint-transition-undo` restores the basic four-source reachable bundle but +physically retains six source files. This follows `source_files.rs:817` (detached +files are never deleted) and `docs/language.rst:1854`; the initial `load` check +would incorrectly fail an otherwise exact Undo. Published `4bb4aaf` contains that +initial oracle, not this correction. No model or desktop fix was needed. + +The corrected `same EXPECTED ACTUAL [UNDO_FROM]` keeps full Project and reachable +SourceBundle equality. With an explicit origin, expected disk bytes are the +exact first-committed checkpoint's source file map overlaid with EXPECTED's +reachable files. The origin is itself checked for an exact reachable file set. +Without that argument, ordinary comparisons continue to reject detached files. +Unknown, changed or missing retained files and reachable-source drift all fail. + +V2 direct-rustc `-D warnings` compilation passed; lease returned before runtime +checks. Built-in self-checks now independently simulate one retained machine +module and falsify unknown/changed/missing detached files and reachable drift. +The pre-existing immutable native transition Undo passes with **four exact +reachable sources and six exact disk files, two proven retained**. Separate +isolated copies with an unknown detached file or an appended byte in retained +`traceability.arcadia` both return exit 101. The same valid Undo without an +origin also returns 101, proving there is no general orphan exemption. Baseline +comparison and all previous model/source self-checks still pass. No new behavior +creation output was read; the stated three-action expectations are unchanged. + +New evidence under `.local/behavior-creation-oracle-20260911/`: +`build-v2.log`, `build-v2-result.json`, `self-check-v2.log`, `baseline-v2.log`, +`old-transition-undo-v2.log`, `checks-v2-result.json`, +`strict-undo-rejection-v2.log`, `unknown-detached-rejection-v2.log`, +`changed-detached-rejection-v2.log`, `disk-falsifiers-v2-result.json`, +`manifest-v2.json`, and `behavior-creation-contract-v2.exe`. Initial artifacts +remain intact; isolated changed copies are named `probe-v2-*`. diff --git a/harness/release-constructor-defaults-review-20260911.md b/harness/release-constructor-defaults-review-20260911.md new file mode 100644 index 00000000..8a8ddef5 --- /dev/null +++ b/harness/release-constructor-defaults-review-20260911.md @@ -0,0 +1,95 @@ +# Source-7 constructor omission compatibility — 2026-09-11 + +Codex-9e8r6t `/root/release_audit`. Root assigned a bounded independent check of +other-host issue 1 comment 122. Read current issue/comments/Wiki, source parser, +typed model and relevant specification sections before testing. No production +Rust, Cargo, schema/grammar, GUI or HTML edits were made. Only the constructor +wording/table and contradictory Scenario default-table entry in +`docs/language.rst` were corrected; root owns HTML regeneration/publication. + +## Finding and executed evidence + +The former blanket statement that every explicitly selected constructor field +must be supplied, with a schema-2-only Exchange exception, contradicts current +source 7. The declaration parser merges declaration-level defaults, but replaces +an explicit constructor payload and deserializes that payload through its own +typed contract (`language.rs`, around the final `serde_json::from_value` of an +ElementBody). The `OccurrenceBody` definition has nullable references and +explicit serde defaults, so some fields may be absent without copying the +payload of the factory's default constructor. + +The independent handwritten probe in +`harness/experiments/constructor-defaults-20260911/probe.rs` passed **54 +accepted comparisons and 12 missing-required-field refusals**, in both OA and +SA source 7. Fixed explicit UUIDs ensure a full Project equality comparison; +no generated identities are normalized away. Expected occurrence bodies are +literal typed values, not obtained from a UI producer or inferred from the +omitted result. The same accepted cases also pass core command admission. + +| Constructor | Omission admitted with this meaning | Omission rejected | +| --- | --- | --- | +| Exchange | exchange/sender/receiver/reply_to/operation → None; message_kind → Asynchronous; values → empty list | None of these fields is required to be present. | +| Action | action/lifeline → None | — | +| State | state/lifeline → None | — | +| SequenceReference | sequence → None | — | +| ScenarioUse | scenario → None | bindings | +| Control | — | kind | +| Fragment | — | operator, branches | +| Branch | — | guard, occurrences | + +Each nullable/default field is omitted individually and all optional fields +are also omitted together. Required-field failures must identify the actual +missing field, not merely fail unrelated semantic validation. For each of the +52 admitted occurrence fixtures, exact stabilization/no-op source bytes remain +unchanged, a Rename changes only the subject's quoted name, and canonical +format/reparse returns the complete identical Project. Incomplete admitted +records can still have model-check warnings; no completeness claim is made. + +Canonical Exchange output explicitly contains Asynchronous, `reply_to none` +and `values []`, while `operation None` is absent because its serializer omits +that value. This distinction is verified, not a general claim that canonical +output prints every field. Lossless name/no-op editing preserves the authored +omissions instead of forcing canonical expansion. + +Two further fresh source-7 cases, one per layer, omit Scenario viewpoint and +compare exactly with explicit MixedLegacy. The authored omission is retained +and canonical formatting reparses identically. This confirms the Scenario +default table needed the same source-7 clarification already present in +section 4.3. + +## Provenance and reproducibility + +- Matching core: `.local/target-gnullvm/debug/deps/liboa_core-3e81c616fea1d901.rlib`, + SHA256 `5018A1FD7286ED9DFEDCBBF5B68B399AD5D143F2A9AAAED3078CFC934C9589C4`. + All listed current core sources were rehashed against the frozen verified GUI + manifest before compilation; none differed. +- Probe SHA256: `FAA1A98BEA7A87E24047991D72A54919AE9C66F84B6EB465E24B13FDC82EE040`. +- Results TSV SHA256: `2C1BB97234EDFAC386A5DDCA46C28B5B46972CC879B7CC2B1C4179066BAB8AEF`. +- `provenance.json` records compiler details, core inputs, executable hash and + all 121 result artifacts. `run.log` records the final successful run. +- Build/run instructions are in the experiment README. The only initial + failure was a harness compile typo using struct syntax for tuple + `Command::Rename`; it was corrected before any counted execution. Both build + attempts remain logged under `.local/constructor-defaults-20260911/`. + +The successful direct-rustc build used edition 2024 and `-D warnings`; the +writer slot was released immediately afterward. No Cargo or native test is +claimed by this experiment. + +## Specification correction and limits + +The constructor paragraph now distinguishes declaration defaults, a selected +constructor's own contract, nullable values and optional presence. The +OccurrenceBody table explicitly lists required fields and current source-7 +omission values, including `operation`. It documents canonical versus retained +authored spelling and removes the false schema-2-only restriction. The +Scenario declaration table now agrees with section 4.3. + +This is compatibility clarification: it neither changes admitted syntax nor +silently rejects source already accepted by the application. Unknown omission +contracts in other constructor/record families remain a separate audit. In +particular, this experiment does not establish complete defaults for nested +MessageKind payloads, MessageValue/OperationUse records, DataTypeDefinition, +DataValue, PortContract, EventBody, contextual endpoints, projections or history +facets, and does not test every older schema. Their defaults must not be inferred +from the OccurrenceBody table. Root owns subsequent broader normative coverage. diff --git a/harness/release-contextual-source-creation-plan-20260911.md b/harness/release-contextual-source-creation-plan-20260911.md new file mode 100644 index 00000000..58a10d93 --- /dev/null +++ b/harness/release-contextual-source-creation-plan-20260911.md @@ -0,0 +1,89 @@ +# Contextual source creation — bounded implementation plan, 2026-09-11 + +Codex-9e8r6t /root/palette_finish. Root-assigned design only; Gitea #1 coordination read through #133, ownership recorded in #134. No production edits, Cargo, native input or new language contract. Codex-956atf retains the reference-chooser component; this plan concerns behavior draft orchestration and command planning, not that widget's search, popup, keyboard or scrolling implementation. Root must synthesize before implementation. + +## Concrete problem and current seams + +An engineer creating behavior can name a contribution or lifeline before discovering that its semantic source is missing. The current guarded workflow requires canceling that draft to create the prerequisite elsewhere, then reconstructing the original intent. + +| Current path | Code evidence | User consequence | +| --- | --- | --- | +| Scenario → Add lifeline | `behavior/scenario/workspace.rs:331` offers `sources(p, d)` through a named-source picker; `scenario.rs:941` enumerates existing elements filtered by layer/viewpoint. `scenario.rs:1274` requires a chosen compatible target and creates only a Lifeline pointing to it. | Missing Activity/Function/participant cannot be authored from this form. A name already typed belongs to the lifeline, not automatically to a new model source. | +| Process/chain → Involve work | `behavior/topology.rs:326` enumerates existing same-layer work. `:595` requires an existing target; `topology/view.rs:444` renders that picker separately from the contribution name. | A blank process over a model with no work has no useful work target. The test called `legacy_edit_preserves_order_and_new_work_in_one_undo` adds a contribution referencing an existing target; it does not establish semantic Activity/Function creation. | +| Scenario → Add action on a lifeline | `scenario.rs:941` offers existing work; action/lifeline association is additionally checked by core endpoint/performer validation (`validation.rs:1290`, `:3045`). | Creating any arbitrary same-layer work is insufficient: a participant lifeline needs a compatible performer relationship, while a work lifeline already represents a particular work identity. | +| New State machine → owner | `behavior/creation.rs:619` explicitly instructs a user with no matching participant to refine search or cancel and create a participant in Architecture first. | The named machine draft and first-view choice must be reconstructed after the detour. The new creation flow otherwise correctly distinguishes root-owned processes/scenarios from participant-owned machines. | +| Navigation while pending | `app.rs:1265` blocks leaving Behavior while a behavior form is pending; `App::apply_behavior` rejects conflicting raw source/property drafts. | Sending the user to Architecture while retaining an ordinary active form is not currently supported. Relaxing the global guard would expose unrelated edits and weaken draft protection. | +| Existing recovery/commit | Scenario and topology drafts serialize raw names, references, insertion/branch positions and browsing state. `app/checkpoints.rs:173` restores behavior before selecting its pending layer/page. `App::execute` at `app.rs:850` adopts through `Document::execute` and updates selection after success. | These are usable boundaries for a nested draft and atomic operation. A new source must not be installed outside them merely to make a picker see it. | + +The installed Capella study provides one narrow positive pattern: in OAS, **Activity** at a point created a semantic Activity and its lifeline in place; **Activities** opened an existing-source transfer dialog. Saved XML proved distinct source/InstanceRole identities. Capella also added a capability involvement; Studio must not copy that implicit semantic addition. The exercised SFCD function-involvement picker still required an existing Function, so Capella is not evidence that every source detour is solved. See `release-capella-creation-study-20260910.md` for exact scope. + +Root supplied additional native observations after this worker returned its input lease: at minimum size, successful creation opened a blank process canvas with Tools/Selection/Fit controls but no first-action prompt; the empty scenario still said to select a lifeline/occurrence and drag its handle, although none existed. This worker did not repeat that native action. `topology/view.rs` puts authoring tools in the Tools shelf, and `scenario/workspace.rs:173` gives generic Select/reorder guidance without a zero-content branch, consistent with the reported problem. + +## Three materially distinct interaction options + +| Option | Concrete interaction and commit boundary | Tradeoff | +| --- | --- | --- | +| **A. Stage a source inside the current behavior draft — recommended** | Beside the compatible-source field, **Create new activity/function/participant…** opens a small typed subform in the same editor area. **Use this new source** validates/stages it and returns to the parent form. The parent's final Apply/Create commits the source and consuming behavior edit together. | Preserves raw parent state, supports one Undo, and makes Cancel harmless. Requires explicit draft-only identities and a preview project so existing compatibility checks can see staged records. | +| **B. Suspend the form and visit Architecture** | Preserve a return token and checkpoint, open Architecture, create the source there, then return and bind it. | Reuses a richer editor, but early source creation creates a separate history entry and can leave an orphan when the parent is canceled. Rolling back automatically can remove independently edited work. Deferring every Architecture edit until the original form commits would require a much broader transaction workspace. This is a possible later advanced workflow, not the smallest coherent first slice. | +| **C. Dedicated source-plus-usage tools** | Scenario **New activity lifeline** or process **New function contribution** opens one combined form and commits both identities immediately on its single Create. Existing-source tools remain separate. | Very direct for an empty canvas, comparable to the observed Capella Activity tool. It multiplies tools and does not solve a source discovered missing inside an already partially completed form or a new machine's owner without separate implementations. It can later be a shortcut over A's planner, not a competing command path. | + +Recommend **A**, with the empty-canvas entry points below. It solves the existing-form problem and can support C-like first actions using the same draft and transaction. Do not add a general element catalog, replace the external chooser, auto-create a source from a failed search string, or commit a prerequisite merely when the child form is accepted. + +## Proposed first flow and semantic scope + +1. Keep **Use existing** as the current reference path. Add one adjacent, explicitly named **Create new…** action where a supported source kind is meaningful. It must remain available even when a search has matches: no matches is not permission to create, and duplicate display names are legal. +2. Open a source subform replacing the parent's editable field area. Retain a compact context line such as `New activity for lifeline in Assess distress · OA · Operational activities` or `New function for contribution before Verify pressure · SA`. Show only admissible kinds, a separate **Source name**, and the proposed semantic parent. Keep the original lifeline/contribution name separately; do not overwrite it with the source name. Omitted original names can continue to use the source as the existing default. +3. Use **Use this new source** to return to the original form with a visible `New · ` selected reference. This is still a draft. Preserve original name, viewpoint, branch/slot, guards, values, query, scroll/focus and other selections. **Back** or first Escape from the source subform cancels only that subform, leaving the parent draft unchanged; no model/history change occurs. +4. The final parent action commits the new source and consumer in one validated `Command::Batch`. Preview exactly what is created: `1 Activity + 1 Lifeline`, `1 Function + 1 contribution`, or `1 Actor + 1 State machine (+ first view if selected)`. On failure retain both forms and all raw values. After success open/select the consumer, not the prerequisite source. One model Undo restores the complete pre-operation model and accepted source bundle. + +Admissible initial cases: + +| Consumer/reference | New source and explicit semantics | +| --- | --- | +| OA OperationalActivity scenario lifeline | New Activity at OA work root, or an explicitly selected valid Activity parent. Create a distinct Lifeline under this scenario with `represented` equal to the new Activity. No allocation, capability involvement or architecture placement inferred. | +| SA Functional scenario lifeline | New Function with explicit work ownership and distinct Lifeline under this scenario. Missing performer can remain an ordinary completeness warning, matching staged authoring policy. | +| OA ParticipantInteraction scenario lifeline | Explicit Entity/Actor/Role choice admitted by the actual viewpoint validator; source semantic ownership shown independently from the scenario. No participant subtype guessed from its name. | +| SA BoundaryInterface scenario lifeline | Explicit System or external Actor choice where admitted. Existing System-of-Interest uniqueness must be respected; do not create a second System or silently substitute an Actor. Creating a participant does not create ports, interfaces or a boundary exchange. | +| OA process / SA chain Work target | New Activity/Function plus an Action contribution at the preserved insertion. Reuse existing topology planning for explicit links/legacy conversion. Do not parent the work to the process, infer control flow from layout, or alter reusable definitions referenced elsewhere. | +| State-machine owner in New Behavior | Explicit valid same-layer participant kind/name/parent; then the pending machine owns that exact source reference. Optional first view remains part of the same parent transaction. This must work before any participant exists in the layer. | + +**Action-on-lifeline needs a deliberately restricted extension, not generic source insertion.** For a participant lifeline, offer an explicitly labeled **Create activity/function allocated to this participant…** only when the core admits that direct allocation. The preview includes the allocation and new Action occurrence. For a lifeline already representing work, prefer **Use this represented activity/function**; a different newly created work cannot silently replace its `represented` identity. An unresolved lifeline or ambiguous role/performer requires explicit resolution while retaining the Action draft. Do not invent a participant, allocation or lifeline to make validation pass. Implement these qualified Action cases after the three basic consumer adapters above, using the same staging primitive. + +New exchanges, operation/interface contracts, scenarios for reuse, machine states, nested library instantiation and arbitrary multi-level source dependencies are outside this first slice. Their source kinds have additional contracts and should not be silently exposed through a generic Create button. Existing references continue through the current/external chooser. + +## First action on an empty canvas + +When no form is pending and the current semantic sequence genuinely has no content, show one small in-canvas prompt with **Add first activity contribution** (OA process), **Add first function contribution** (SA chain), or **Add first lifeline** (scenario). This opens the corresponding existing parent form at the explicit root append slot; the source field offers existing or staged new source as above. Show the scenario's chosen viewpoint in that prompt so “lifeline” has a concrete meaning. Avoid introducing a second global toolbar. + +For a scenario that already has lifelines but no occurrences, the first prompt should change to an applicable **Add first message/action** route. It must not say “select an occurrence” when none exists. Do not infer a compatible exchange or lifecycle event from lifeline names. Keep the existing tools available for alternate starts such as a fragment or reused scenario. Hide the first-action prompt once content or a draft exists; if content is merely offscreen/filtered, offer navigation rather than claiming the model is empty. For process graphs count semantic contributions, not rendered or collapsed nodes. + +This is contextual guidance, not an automatic wizard: it must not change model/history just by appearing, steal keyboard focus on passive resize, or reset the user's Tools/Selection shelf on every frame. At 1100×700 client size, the prompt and the source subform's Back/Use actions must fit while the canvas and parent context remain understandable. + +## Draft, atomicity and recovery contract for implementation review + +Use a **typed source request owned by the parent draft**, containing document identity, layer, parent draft/invocation identity, exact reference field, source kind/semantic parent, and the original consumer context. For a contribution include the exact process/scenario owner, operand/branch and insertion address; for a machine retain pending machine/view IDs. Bind by ID and explicit field, never by display name, current selection, first eligible object or nearest visible lane. + +Reserve the new source and any dependent allocation/consumer IDs once and serialize them with the raw source subform. Repeated preview, retry, recovery and final submission must not create fresh identities each time. Build a private preview Project from the staged prerequisite commands, run existing candidate predicates and parent planning against it, then validate the full combined batch through the existing Document/source boundary. Do not insert staged objects into the accepted catalog, source buffers or generic chooser inventory. The exact prepared batch determines the post-success selected consumer; unrelated/trailing commands must not borrow that selection result. + +A source subform is the only nested editing level in this first slice. The main application continues to reject unrelated navigation/mutations while it is pending. Route its events through the existing Behavior ownership guard; do not globally waive `has_pending`. The separate reference-chooser component needs at most a host-owned adjacent create action/typed result adapter; do not add model mutation or source creation policy to that component. + +On stale document, owner/slot, source-parent eligibility or perspective, refuse final adoption and retain both raw drafts with a precise repair action. Passive viewport events are not model edits and must not invalidate a useful draft. If a model revision changes, revalidate explicitly against it; never silently rebind to same-ID-but-changed-kind/ownership data. For a changed insertion position, require choosing the position again or an explicit append action, preserving entered text. A nested reference's active callee and caller return path must remain distinct. + +Cancel source subform: no mutation, restore parent exactly. Cancel parent: discard all its staged sources and dependencies, no mutation. Switching back to an existing source must not accidentally commit the abandoned staged source; keep it as inactive raw draft for toggling/recovery or explicitly discard it, but final reachability of draft dependencies determines the batch. A name collision must never trigger “reuse existing” implicitly. + +Checkpoint capture includes both raw forms, staging mode, typed target, fixed IDs and original context. Recovery first restores accepted model/source and then the entire pending behavior state; select the captured layer/consumer and focus the innermost source name when that form is open. Restore lint tasks together with focus. Do not perform automatic creation on recovery. Missing dependencies remain visible and repairable. Existing raw property/source drafts must remain retained and continue to block adoption where they conflict. + +Ordinary modal priority remains above this nested draft: first Escape dismisses an active file/hosted/workflow dialog, next Escape backs out of the source subform, next cancels the parent. A focused text input's captured Escape must follow that same route. Undo of an accepted combined command restores exact accepted source/history; restart retains the saved result but does not invent persisted Undo history. Preserve existing source-save behavior for safely retained detached files after Undo, as clarified by the independent oracle in Gitea #132. + +## Falsifiable acceptance scenarios + +1. **Blank OA activity scenario:** explicit OperationalActivity viewpoint, no Activities. Add first lifeline → Create new Activity, source name `Assess distress`, independently typed lifeline label `Assessment role`. Before final Apply, accepted element/source counts are unchanged. Apply creates exactly one Activity and one Lifeline, correct separate names/ownership/represented UUID; no allocation/capability/view. One Undo restores exact original model and reachable source. +2. **New function inside an existing chain path:** click an insertion between two contributions, type an occurrence name, stage a new Function, return, then Apply. Exactly the selected insertion/link repair occurs; original guards, sibling paths and referenced reusable definitions survive. Failed validation or source-write budget preserves both names and the insertion. Undo/Redo preserves UUIDs and exact source provenance. +3. **Machine before owner:** in a layer with no participant, name a machine and opt into first view, stage an explicit valid owner, then return. Cancel parent creates nothing, including no view/placement. A second attempt committed successfully creates owner+machine+requested presentation in one history entry and opens the machine. Repeat in SA with an already existing System; illegal second-System creation refuses without fallback. +4. **Qualified action:** on a participant lifeline, explicit create-and-allocate yields exactly new work + direct allocation + action occurrence. On a work lifeline, no different work is silently attached. Wrong layer, invalid owner, unresolved lifeline and ambiguous role cases retain drafts and produce explicit errors. +5. **Recovery and stale responses:** recover while typing the child source name, with a long Unicode parent name and fixed branch slot. Exact raw text, IDs, layer and intended reference survive; no object appears merely on recovery. Late selection/Use events from a canceled or different invocation cannot mutate the new draft. Remove/change the parent or slot between preview and submit: reject and retain intent. +6. **Existing/new switch and cancellation:** start from an existing reference, stage a same-named new source, cancel child; original reference and raw parent text remain exact. Stage again, then choose existing and commit; no unused source is created. Test focused first Escape and overlay-priority Escape at actual minimum size. +7. **Empty-state onboarding:** create/open genuinely empty OA process, SA chain and both scenario viewpoint families at 1100×700. An engineer can start the first useful contribution/lifeline without opening a hidden shelf or leaving Behavior. Existing offscreen/filtered content does not trigger a false empty-state prompt. Showing/hiding/resizing the prompt does not mutate source/history or steal input focus. +8. **Preservation and chooser boundary:** use same-named sources under different owners plus a large candidate list. Only the explicit typed source request affects the parent; existing chooser search/navigation remains unchanged. Verify full Project and accepted SourceBundle equality after Cancel/failed Apply, plus the documented exact reachable/detached file policy after Undo. Do not equate a successful model count with exact-source preservation. + +Implementation should start with the staged-source primitive and the Lifeline, process Work, and machine-owner adapters, together with semantic empty-state first actions. Add qualified Action creation only when its explicit allocation/representation gates pass. This is a proposed bounded sequence, not an approved production change or a completed usability result. diff --git a/harness/release-contextual-source-creation-review-20260911.md b/harness/release-contextual-source-creation-review-20260911.md new file mode 100644 index 00000000..eed96683 --- /dev/null +++ b/harness/release-contextual-source-creation-review-20260911.md @@ -0,0 +1,138 @@ +# Contextual source creation: independent preimplementation review + +Codex-9e8r6t /root/behavior_audit, 2026-09-11. Reviewed the proposed +`release-contextual-source-creation-plan-20260911.md` against committed +`4bb4aaf3dc47b9738625b4d3f23ef8c74f286395` desktop contracts and current unchanged +core. Read AGENTS, revised PROJECT_GOAL, Gitea issue1 through #138, empty open PR +inventory and LocalBehaviorCreation20260911 Wiki. No evolving implementation was +read; no production edits, Cargo, direct rustc or native input. These are +source-derived integration traps and exact acceptance expectations, not findings +against the new implementation. Urgent items were sent directly to its author. + +The proposed staged-source transaction is coherent for Lifeline, process Work +and new machine owner. Keep qualified Action allocation, new ScenarioUse targets +and the external chooser implementation outside this slice. The following +existing contracts require explicit handling; a generic wrapper is insufficient. + +## Ranked material traps + +1. **P1 — New first-action routes can implicitly commit another editor.** + In committed `app.rs:2326`, non-creation `starts_form()` invokes `self.apply()`. + A new first-lifeline/contribution button routed to the existing Start event, + arriving while a valid raw property draft exists, commits that property + before opening its form. The explicit Canvas Choose guard does not protect + this route. Reject source/property/pending conflicts in the actual new App + event path before generic Apply; a disabled button alone cannot guard stale + dispatch. Assert accepted snapshot/history and all raw strings unchanged. + +2. **P1 — Stale scenario owners can panic before transaction validation.** + `scenario.rs`'s `parents()` always includes the supplied owner ID, even if that + element is absent. A recovered Lifeline draft therefore passes the first + destination check in `Draft::command`, then `sources()` at line 941 indexes + `p.elements[&d.owner]`. A removed owner can panic before `execute_batch` gets + a chance to reject it. Validate owner existence/kind/layer/viewpoint before + candidate rendering and parent planning. Show repair/cancel with both raw + drafts retained. Do not interpret a same UUID with changed kind or viewpoint + as the unchanged invocation merely because a new source still exists. + +3. **P2 — Nesting the old process batch loses consumer selection.** + `topology/direct.rs:209` scans only immediate Batch children for a newly + created contribution. `Batch[CreateSource, Batch(parent_commands)]` therefore + returns no contribution selection. Core `session.rs:386` uses the last + selected operation and `SetSteps` at line 703 selects the process owner. + Flatten with preserved command order, or carry the exact prepared command's + consumer target through success. Test the actual App selection, including + rejection of changed/trailing commands borrowing that target. + +4. **P2 — Stable source identity does not make the combined plan stable.** + `scenario.rs:1274` still creates a fresh Lifeline via `make_element` each + prepare; `topology.rs:476–508` creates fresh occurrence and link UUIDs. + Reserve/cache the complete created identity set, including repaired links. + With a blank consumer label, source and consumer share a display name: the + source already owns its alias in the private preview, so the consumer alias + includes its UUID suffix. Replacing only the temporary consumer ID leaves an + alias derived from a discarded UUID. All aliases, endpoints, SetSteps, + parent references and optional machine/view IDs must use the reserved set. + Require full prepared-Command equality across preview/retry/recovery, not + merely equality of the source UUID or final object count. + +5. **P2 — A fresh Work source cannot satisfy every captured insertion.** + `topology.rs:438–449` requires a Work target next to an Exchange contribution + to equal that exchange's exact source/target UUID. A newly created Function + cannot equal an existing endpoint. The plan's successful “between two + contributions” case should use Action→Action. An Exchange-adjacent case must + refuse and retain both names and the exact slot; it must not retarget the + shared exchange, change a reusable definition, choose a different source or + silently append. Keep the existing full compatibility check on the preview. + +## Semantic constraints that the new source form must expose accurately + +`validation.rs:92` separates source containment from its use. Activity may be +root-owned or owned by Activity; Function by Function; OA Entity/Actor/Role may +be roots or children of Entity. Current SA System and SystemActor admit no +semantic parent, so a new SA owner is a root even when its machine is nested +under it. Neither process, scenario nor lifeline owns new work. A new Lifeline +belongs directly to its scenario, never an operand, and does not enter its +ordered steps (`session.rs:336` attaches Occurrences only). + +`viewpoint_represents` at validation.rs:1262 admits Activity, Function, +Entity/Actor/Role, and System/SystemActor for the four explicit viewpoints +respectively. Role is valid for an OA participant lifeline but **not** a machine +owner: `Kind::is_performer` at model.rs:153 excludes Role. SA System uniqueness +is a hard project-wide error at validation.rs:238. A second System must refuse, +even if named differently; an Actor requires a separate explicit choice. + +Do not turn completeness warnings into new blockers. Unallocated leaf work and +a missing SA System are warnings. Adding a lifeline to an already reused callee +can also be accepted while existing uses gain `missing_lifeline_binding` +warnings (`validation.rs:2112`); keep all caller bindings unchanged. By contrast, +an explicitly incompatible binding is an error. Compatibility uses represented +identities or explicit RoleRealization/RoleAssignment, never equal names +(`validation.rs:1283`, `:2073`). A new same-named Role does not impersonate an +existing referenced role, and staging it creates no realization or allocation. + +Persist authored state and reserve identities, but separate it from runtime +canvas generations. Existing behavior recovery deliberately drops viewport and +revision tokens (`behavior.rs:789`); App reset gives a fresh `canvas_document`. +A recovered valid draft must be rebound to that runtime document without +reusing stale event invocations. A child invocation token must still reject +late Use/Name/Back events after that child was cancelled/reopened. Passive +scroll/viewport epoch changes must neither discard input nor count as a semantic +context change. New optional recovery fields must preserve older pending forms. + +## Compact exact acceptance matrix + +Use separate fixed symbols for source `S`, consumer `C`, child invocation `I`, +new link `L`, and optional machine/view/placement `M/V/N`. Only a new cancelled- +then-reopened invocation may reserve a new set. Every accepted row compares the +complete Project and SourceBundle against the explicit delta; every refused or +cancelled row requires exact accepted baseline and raw-draft preservation. + +| Case | Exact expected result | +| --- | --- | +| OA activity lifeline | OperationalActivity scenario; source **Assess distress**, consumer **Assessment role**. Exactly Activity `S` at selected valid work parent/root and Lifeline `C` under the original scenario with `represented=S`. Names remain separate, description/body defaults empty, scenario steps unchanged. No allocation, capability involvement, actor, view or placement. Blank consumer label uses the source name; explicit label follows the existing consumer trimming policy, while raw text remains exact during staging. | +| SA function lifeline | Functional scenario, no existing Function/System. Exactly Function `S` at root or selected Function parent plus Lifeline `C`, with fixed represented identity. Missing allocation/System warnings do not cause fallback or automatic participant creation. Wrong-viewpoint source kind refuses. | +| OA Role and reuse mapping | ParticipantInteraction scenario can create Role `S` plus Lifeline `C`; no relationship is inferred. An existing local Actor maps to an existing referenced Role only through its explicit realization. A new same-named Role without that relationship cannot satisfy the old binding. While editing a reused callee, adding `C` leaves both existing caller-use records byte-for-byte unchanged; missing-binding warnings are expected, not auto-binding or rejection. | +| SA boundary and new owner kinds | BoundaryInterface permits explicit System/SystemActor, not Function/Role. Empty SA permits one new System; existing System makes another System refuse unchanged. Explicit SystemActor remains valid. Role cannot own a machine. Illegal source-parent choices refuse; source-parent change must not become machine-parent change. | +| Work at exact Action→Action link | For captured `A —(R, guard g)→ B`, source `S`, contribution `C`: add root/valid-parent work `S`; `C` is `Action { action:S, lifeline:None }` owned by that process. Preserve `R`'s ID/name/alias/guard and change only its target to `C`; add `L: C→B` with empty guard; insert `C` in the captured order. All sibling paths and referenced definitions unchanged. Select `C`. Repeat preparation/recovery with exactly the same new IDs/aliases. | +| Work next to Exchange / stale slot | A new UUID cannot equal the captured existing exchange endpoint; refuse without changing it. Also remove/change the captured link or presentation-before ID between staging and Apply: retain both drafts and require an explicit position repair. Never fall back to current selection or append. | +| Machine before participant | Name machine **Rescue modes**, opt into first view, stage explicit valid participant **Rescue team**. Commit exactly participant `S` + machine `M` with `parent=S`; optional view `V` named **Rescue modes · states**, StateMachine projection, one placement `N`, no regions/states/routes. Select/open `M/V`. Child Back restores prior owner; parent Cancel creates nothing. Re-selecting an existing owner commits no abandoned staged source. | +| Invocation, recovery and Escape | Parent label, source raw name, search, original reference, viewpoint, slot and IDs survive child opening/Back/recovery. Old invocation `I` cannot affect a reopened child `I2`, even with identical names and owner IDs. Restored valid drafts survive the fresh runtime canvas ID; missing owner refuses without panic. Overlay Escape closes the overlay first, then child Back, then parent Cancel. The focused captured-Escape path must follow the same ordering. | +| Semantic first action and history | With no semantic contributions, first-work action is directly visible; with no lifelines/occurrences, first-lifeline action is visible. An unresolved lifeline (`represented=None`), offscreen content, ScenarioUse or fragment prevents a false “empty” claim. A lifeline-only scenario gets applicable guidance without inventing an exchange/action allocation. CTA appearance/resize and rejected stale Start leave model/source/history/raw properties unchanged. | + +For committed names with leading/trailing whitespace, pin source and consumer +policies explicitly: current scenario/topology planners trim an explicit +consumer label; they do not overwrite it with the selected source's label. Do +not claim all committed names remain byte-exact by inspecting only raw recovery. + +One Undo must restore the prior Project and reachable SourceBundle, while disk +Save may retain newly detached source files. Use the corrected oracle's explicit +history origin: disk equals the first committed checkpoint's file map overlaid +with expected reachable files; unknown/changed retained bytes fail. Redo/reopen +uses original committed role IDs, not newly borrowed replacement UUIDs. + +This matrix deliberately excludes qualified Action allocation and new reuse +definitions. Those require further explicit semantic intent; they are not +required to validate this staged-source slice. The external chooser remains +owned separately. Implementation review and native evidence follow only after +the author freezes the new source.