Add reproducible native child-work verification fixtures
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
# Child-work native fixture and oracle
|
||||
|
||||
[Issue4](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/4): create children of work displayed inside its performer. [Contract](../../child-work-native-contract.rs) is a standalone Rust2024 helper, adapted from basic-editing-contract.rs; it is not a production crate target. OA contains a directly allocated activity with two matching role assignments and evidence links. SA contains a directly allocated function with evidence. Parent work starts folded inside Performer. Included rationale files retain Unicode and CRLF bytes.
|
||||
|
||||
## Build and admit
|
||||
|
||||
Choose the exact tested oa_core rlib and matching dependency directory from the source build being evaluated. Do not select an arbitrary newest cached rlib. From repository root, in PowerShell:
|
||||
|
||||
```powershell
|
||||
& $Rustc --edition=2024 -D warnings --crate-name child_work_native_contract harness/child-work-native-contract.rs --extern "oa_core=$CoreRlib" -L "dependency=$Deps" -o $ContractExe
|
||||
& $ContractExe self-check
|
||||
& $ContractExe generate $NewRunDirectory
|
||||
```
|
||||
|
||||
The variables are explicit caller-selected toolchain, dependency, executable and fresh run-directory paths. Generation refuses an existing destination and creates deterministic `oa/project.arcadia` and `sa/project.arcadia` with included notes. Alternatively copy these checked-in case directories to a fresh writable run directory. Never perform native editing in the checked-in fixtures.
|
||||
|
||||
## Native procedure
|
||||
|
||||
Repeat for `oa` and `sa`. `ENTRY` is the working case's absolute project.arcadia path. Save in place after each action. Keep default names New activity / New function; do not run Layout, move cards, rename objects or manually change fold state during this strict workflow.
|
||||
|
||||
1. Run `check CASE 0 ENTRY`, then `snapshot ENTRY BASELINE_DIR`. Open ENTRY in Studio and select its Allocation view.
|
||||
2. Right-click Parent work → Create child work; Save. Run `check CASE 1 ENTRY`, then `snapshot ENTRY STAGE1_DIR`. Parent work unfolds; original allocation and OA role assignments target the new first child with their IDs, metadata and evidence references preserved.
|
||||
3. Undo once, Save, then `check CASE 0 ENTRY` and `compare ENTRY BASELINE_DIR`. Redo once, Save, then `check CASE 1 ENTRY` and `compare ENTRY STAGE1_DIR`.
|
||||
4. Right-click Parent work → Create child work again; Save. Run `check CASE 2 ENTRY STAGE1_DIR`, then `snapshot ENTRY STAGE2_DIR`. The sibling receives a new direct allocation to the same performer; roles remain on the first child. Undo/Save must compare exactly with STAGE1_DIR; Redo/Save with STAGE2_DIR.
|
||||
5. Right-click the upper FIRST child → Create child work; Save. Run `check CASE 3 ENTRY STAGE1_DIR STAGE2_DIR`, then `snapshot ENTRY STAGE3_DIR`. Original responsibilities transfer to the grandchild. The sibling retains its identity/allocation and moves below the expanded subtree. Undo/Save must compare with STAGE2_DIR; Redo/Save with STAGE3_DIR.
|
||||
6. Close/reopen the saved project in Studio, inspect nesting and responsibility properties, Save, then repeat stage3 check and `compare ENTRY STAGE3_DIR`. Record screenshots and terminal results with the tested native executable/source hashes.
|
||||
|
||||
Each command above is an argument list to the compiled helper. Snapshot directories must be new. Stage2 requires the ORIGINAL accepted stage1 snapshot; stage3 requires the ORIGINAL accepted stage1 and stage2 snapshots. The oracle revalidates earlier snapshots and pins prior child, placement, sibling and allocation IDs. Do not replace those snapshots with newly captured Undo/Redo results. Redo/reopen comparisons also use original first-commit snapshots.
|
||||
|
||||
## Validation scope and admitted evidence
|
||||
|
||||
The oracle compares the complete Project, including placements, routes, metadata and references, and exact reachable SourceBundle bytes. It admits only fresh UUIDv4 identities from predicted typed structural roles. Fixed fixture coordinates are independently predicted without desktop creation/reflow helpers: first child108,188; sibling108,298; grandchild132,252; displaced sibling108,394. It shares the core parser, validator, alias convention and source patcher; it is not an independent parser. It does not inventory unrelated/unreachable physical files. Preserve a separate complete directory inventory when making physical-disk claims.
|
||||
|
||||
On 2026-09-11 root compiled exact contract bytes below using direct rustc with `-D warnings` (exit0). Oracle self-check, fresh fixture generation, and OA/SA stage0 checks all completed exit0. Root executable SHA256: C772BF4A6477BB540A838B20E60CF59C60DDA51B6D2FD2CB3AFEE57F151A9C96; linked core rlib SHA256: D282FEE7FF3B4FDD159EA85B12430262C8DA00E064BD290CCED380B6BA2335B5. Local original logs: `.local/child-work-native/compile-01/`. Independent source review found no material blocker. These are oracle/fixture admission results; **native creation, Undo/Redo and reopen acceptance remain pending** at promotion. Self-check fixed points are not native proof or a general layout evaluator.
|
||||
|
||||
## Exact promoted bytes
|
||||
|
||||
All five promoted files were copied byte-for-byte from the admitted private contract and generated run-01 fixtures, then SHA256-compared to their originals. The rationale files intentionally retain CRLF.
|
||||
|
||||
| File | SHA256 |
|
||||
| --- | --- |
|
||||
| ../../child-work-native-contract.rs | E5522CDF3591C07DE509B69E90B442F7C2F188B8C43C35A7C666C9ABF3387BE0 |
|
||||
| oa/project.arcadia | 68762402F53529AA54A2E906670DA118CD8F0EF1ADB5CB3962FDD92E84A819D0 |
|
||||
| oa/rationale.arcadia | F7B894B4045246C4A87F1F08AC813D45BBAEA3CD740FCC7E86532174FDB8A74E |
|
||||
| sa/project.arcadia | 3A50F2FA68A08C107D905C57D598071B9BB1F20F473157E1DD82DEE3DDA20F82 |
|
||||
| sa/rationale.arcadia | F7B894B4045246C4A87F1F08AC813D45BBAEA3CD740FCC7E86532174FDB8A74E |
|
||||
@@ -0,0 +1,127 @@
|
||||
arcadia 7;
|
||||
project child_work_native "Issue4 Oa child work" id "c1140000-0000-4000-8000-000000000001" {
|
||||
include "rationale.arcadia";
|
||||
description "";
|
||||
|
||||
oa_entity seed_10 "Performer" id "c1140000-0000-4000-8000-00000000000a" {
|
||||
description "Preserve original Performer";
|
||||
parent none;
|
||||
}
|
||||
|
||||
oa_activity seed_11 "Parent work" id "c1140000-0000-4000-8000-00000000000b" {
|
||||
description "Preserve original Parent work";
|
||||
parent none;
|
||||
}
|
||||
|
||||
oa_role role_12 "Responsibility role 12" id "c1140000-0000-4000-8000-00000000000c" {
|
||||
description "Preserve role";
|
||||
parent none;
|
||||
}
|
||||
|
||||
oa_role role_13 "Responsibility role 13" id "c1140000-0000-4000-8000-00000000000d" {
|
||||
description "Preserve role";
|
||||
parent none;
|
||||
}
|
||||
|
||||
allocation original_allocation "Original responsibility" id "c1140000-0000-4000-8000-000000000014" {
|
||||
description "Preserve allocation engineering rationale 雨";
|
||||
source @seed_10;
|
||||
target @seed_11;
|
||||
}
|
||||
|
||||
role_assignment responsibility_22 "Role link 22" id "c1140000-0000-4000-8000-000000000016" {
|
||||
description "Retain role link metadata 22";
|
||||
source @role_12;
|
||||
target @seed_11;
|
||||
}
|
||||
|
||||
role_assignment responsibility_23 "Role link 23" id "c1140000-0000-4000-8000-000000000017" {
|
||||
description "Retain role link metadata 23";
|
||||
source @role_13;
|
||||
target @seed_11;
|
||||
}
|
||||
|
||||
role_realization responsibility_32 "Role link 32" id "c1140000-0000-4000-8000-000000000020" {
|
||||
description "Retain role link metadata 32";
|
||||
source @seed_10;
|
||||
target @role_12;
|
||||
}
|
||||
|
||||
role_realization responsibility_33 "Role link 33" id "c1140000-0000-4000-8000-000000000021" {
|
||||
description "Retain role link metadata 33";
|
||||
source @seed_10;
|
||||
target @role_13;
|
||||
}
|
||||
|
||||
diagram allocation_view "Oa allocated work" id "c1140000-0000-4000-8000-000000000002" {
|
||||
description "Native child-work fixture";
|
||||
layer Oa;
|
||||
projection Allocation;
|
||||
routes [];
|
||||
view_options {
|
||||
coverage "All";
|
||||
exchange_labels "Name";
|
||||
hidden_edges [];
|
||||
participant_categories "All";
|
||||
relation_kinds "All";
|
||||
work_categories "All";
|
||||
work_contexts "All";
|
||||
};
|
||||
}
|
||||
|
||||
node seed_view_40 id "c1140000-0000-4000-8000-000000000028" {
|
||||
collapsed false;
|
||||
diagram @allocation_view;
|
||||
element @seed_10;
|
||||
position {
|
||||
x 60.0;
|
||||
y 60.0;
|
||||
};
|
||||
size {
|
||||
height 94.0;
|
||||
width 224.0;
|
||||
};
|
||||
}
|
||||
|
||||
node seed_view_41 id "c1140000-0000-4000-8000-000000000029" {
|
||||
collapsed true;
|
||||
diagram @allocation_view;
|
||||
element @seed_11;
|
||||
position {
|
||||
x 84.0;
|
||||
y 124.0;
|
||||
};
|
||||
size {
|
||||
height 94.0;
|
||||
width 224.0;
|
||||
};
|
||||
}
|
||||
|
||||
artifact evidence_0 "Responsibility evidence 0" id "c1140000-0000-4000-8000-000000000032" {
|
||||
description "Keep owner identity and evidence metadata";
|
||||
fragment "assignment";
|
||||
owner @original_allocation;
|
||||
relation References;
|
||||
revision "review-7";
|
||||
uri "https://example.invalid/evidence/0";
|
||||
}
|
||||
|
||||
artifact evidence_1 "Responsibility evidence 1" id "c1140000-0000-4000-8000-000000000033" {
|
||||
description "Keep owner identity and evidence metadata";
|
||||
fragment "assignment";
|
||||
owner @responsibility_22;
|
||||
relation References;
|
||||
revision "review-7";
|
||||
uri "https://example.invalid/evidence/1";
|
||||
}
|
||||
|
||||
artifact evidence_2 "Responsibility evidence 2" id "c1140000-0000-4000-8000-000000000034" {
|
||||
description "Keep owner identity and evidence metadata";
|
||||
fragment "assignment";
|
||||
owner @responsibility_23;
|
||||
relation References;
|
||||
revision "review-7";
|
||||
uri "https://example.invalid/evidence/2";
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
// Preserve included note bytes: responsibility 雨.
|
||||
@@ -0,0 +1,75 @@
|
||||
arcadia 7;
|
||||
project child_work_native "Issue4 Sa child work" id "c1140000-0000-4000-8000-000000000001" {
|
||||
include "rationale.arcadia";
|
||||
description "";
|
||||
|
||||
sa_system seed_10 "Performer" id "c1140000-0000-4000-8000-00000000000a" {
|
||||
description "Preserve original Performer";
|
||||
parent none;
|
||||
}
|
||||
|
||||
sa_function seed_11 "Parent work" id "c1140000-0000-4000-8000-00000000000b" {
|
||||
description "Preserve original Parent work";
|
||||
parent none;
|
||||
}
|
||||
|
||||
allocation original_allocation "Original responsibility" id "c1140000-0000-4000-8000-000000000014" {
|
||||
description "Preserve allocation engineering rationale 雨";
|
||||
source @seed_10;
|
||||
target @seed_11;
|
||||
}
|
||||
|
||||
diagram allocation_view "Sa allocated work" id "c1140000-0000-4000-8000-000000000002" {
|
||||
description "Native child-work fixture";
|
||||
layer Sa;
|
||||
projection Allocation;
|
||||
routes [];
|
||||
view_options {
|
||||
coverage "All";
|
||||
exchange_labels "Name";
|
||||
hidden_edges [];
|
||||
participant_categories "All";
|
||||
relation_kinds "All";
|
||||
work_categories "All";
|
||||
work_contexts "All";
|
||||
};
|
||||
}
|
||||
|
||||
node seed_view_40 id "c1140000-0000-4000-8000-000000000028" {
|
||||
collapsed false;
|
||||
diagram @allocation_view;
|
||||
element @seed_10;
|
||||
position {
|
||||
x 60.0;
|
||||
y 60.0;
|
||||
};
|
||||
size {
|
||||
height 94.0;
|
||||
width 224.0;
|
||||
};
|
||||
}
|
||||
|
||||
node seed_view_41 id "c1140000-0000-4000-8000-000000000029" {
|
||||
collapsed true;
|
||||
diagram @allocation_view;
|
||||
element @seed_11;
|
||||
position {
|
||||
x 84.0;
|
||||
y 124.0;
|
||||
};
|
||||
size {
|
||||
height 94.0;
|
||||
width 224.0;
|
||||
};
|
||||
}
|
||||
|
||||
artifact evidence_0 "Responsibility evidence 0" id "c1140000-0000-4000-8000-000000000032" {
|
||||
description "Keep owner identity and evidence metadata";
|
||||
fragment "assignment";
|
||||
owner @original_allocation;
|
||||
relation References;
|
||||
revision "review-7";
|
||||
uri "https://example.invalid/evidence/0";
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
// Preserve included note bytes: responsibility 雨.
|
||||
Reference in New Issue
Block a user