90 lines
5.8 KiB
Markdown
90 lines
5.8 KiB
Markdown
# Native behavior creation contract
|
||
|
||
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. 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`.
|
||
It contains 10 elements, two relations, four diagrams, one trace and six source
|
||
files. Do not edit or overwrite that baseline or an earlier checkpoint.
|
||
|
||
Perform these cumulative operations through Behavior → New, saving a separate
|
||
whole-directory checkpoint after each Create and open:
|
||
|
||
| Stage | Intended fields and exact result |
|
||
| --- | --- |
|
||
| `process` | OA **Operational process**, name **Coordinate rescue**. Root ownership, empty steps and description; no diagram or implicit work. |
|
||
| `scenario` | OA **Scenario**, name **Rescue coordination conversation**. Explicit **Participants · interactions** (`ParticipantInteraction`) viewpoint; optional context **Rescue capability**, UUID `b451c000-0000-4000-8000-00000000001f`. Root ownership is separate from context. Empty precondition, postcondition, steps and description; no lifelines/messages or diagram. |
|
||
| `machine` | SA **State machine**, name **Rescue team operating modes**. Existing **Rescue team** SystemActor owner, UUID `c0629449-1209-4b50-afac-f558a9a0fc7f`. Opt into **Create the first state view**. No regions or states. |
|
||
|
||
Before observing output, the first-view contract is fixed as **Rescue team
|
||
operating modes · states**, SA `StateMachine { machine: NEW_MACHINE }` projection,
|
||
empty description/routes, default view options, exactly one placement of the
|
||
new machine. Its initial position is 60,60 and size 336×104; the independent
|
||
shared-core Layout prediction retains those values. The machine's semantic
|
||
parent remains the SystemActor, not its diagram. Every previous object and
|
||
source byte is retained except the explicitly predicted additions/includes.
|
||
|
||
Build only within a coordinated direct-rustc writer window. This imports
|
||
`oa_core` and no desktop creation producer:
|
||
|
||
```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-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
|
||
& $oracle check process $base PATH_TO_PROCESS_ENTRY PATH_TO_PROCESS_ENTRY
|
||
& $oracle check scenario $base PATH_TO_SCENARIO_ENTRY PATH_TO_SCENARIO_ENTRY
|
||
& $oracle check machine $base PATH_TO_MACHINE_ENTRY PATH_TO_MACHINE_ENTRY
|
||
```
|
||
|
||
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 FIRST_COMMITTED_ENTRY
|
||
& $oracle check machine $base REDO_ENTRY FIRST_MACHINE_ENTRY
|
||
& $oracle same FIRST_MACHINE_ENTRY REOPEN_ENTRY
|
||
```
|
||
|
||
Use the corresponding stage for Process/Scenario history. This pins original
|
||
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,
|
||
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. 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.
|