Files
ARCADIA-Studio/harness/fixtures/scenario-lifecycle-native/README.md
T

139 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Independent native lifecycle fixture — 2026-09-11
Owner: Codex-ytr83r /root/integration_audit. **Core/source admission passed; native
execution remains pending.** Root compiled the checker, passed its self-check and
generated/checked all three immutable expectations before opening Studio. No native
or Scene acceptance is claimed here. The renderer implementation is independently
owned by /root/server_audit; this oracle does not import any desktop module.
## Build and source admission
Compile `harness/lifecycle-native-contract.rs` with the matching `oa_core` rlib and
dependency search directory, Rust2024 and warnings denied. No separate serde_json
dependency is needed. Root owns the writer/toolchain lease. Example shape:
```text
rustc --edition=2024 -D warnings harness/lifecycle-native-contract.rs --extern oa_core=ABSOLUTE_MATCHING_RLIB -L dependency=ABSOLUTE_DEPS -o ABSOLUTE_ISOLATED_EXE
lifecycle-native-contract.exe self-check
lifecycle-native-contract.exe inventory
lifecycle-native-contract.exe generate baseline FRESH_BASE_DIR
lifecycle-native-contract.exe check baseline FRESH_BASE_DIR/project.arcadia
lifecycle-native-contract.exe generate oa-rename FRESH_EXPECTED_OA_DIR
lifecycle-native-contract.exe generate sa-rename FRESH_EXPECTED_SA_DIR
```
Keep logs, screenshot files, hashes and model exports **outside** each checkpoint
directory. A checkpoint contains only its complete saved project files; the checker
compares every physical file, not just files with `.arcadia` extension. Generated
base is two sources: canonical project plus an intentionally CRLF Unicode note.
The two expected rename directories must be generated before native output is read.
All element/relation IDs are fixed; SA port UUIDv5 values derive from the fixed
functional-exchange ID through the authoritative port planner. No observed identity,
geometry, order, reference or name is borrowed into predictions.
The unchecked fixture builder is only preparation: final `execute_batch`, source
compile and load/recompile equality are mandatory. Self-Delete and unassigned
lifeline cases intentionally use explicit local sender/receiver with `exchange=None`.
If current core refuses either, record the exact refusal and revise or separate that
case under root review; do not bypass admission or silently remove validation.
Self-Create is deliberately absent because its admission was not established.
Expected unfinished-model warnings (unbound exchange/representation, unanswered
Call) are diagnostic evidence, not permission to bypass errors. Capture the actual
warning set after source admission.
## Fixed identities and navigation
All numeric offsets below are **decimal** added to UUID integer
`5ceab400-0000-4000-8000-000000000000`. Project is offset1. Add side base1000 for OA
or2000 for SA, then the listed local offset. Names begin OA/SA for explorer search.
Each scenario has at most two lanes and explicit OperationalActivity/Functional
viewpoint; no hidden legacy scenario mode is used.
| Scenario local offset/name | Lanes | Occurrences and declared order |
| --- | --- | --- |
|100 `01 Root create action delete`|101 controller,102 receiver|110 Create receiver →111 Receiver action →112 Delete receiver|
|200 `02 Preexisting empty`|201 controller,202 receiver|Empty root|
|300 `03 Create only`|301 controller,302 receiver|310 Create only receiver|
|400 `04 Conditional delete`|401 controller,402 receiver|410 Open call →411 ALT;412 left operand contains414 Conditional delete;413 right operand empty|
|500 `05 Unassigned receiver`|501 controller,502 represented=None|510 Create unassigned receiver →511 Delete unassigned receiver; both exchanges unresolved|
|600 `06 Self delete`|601 controller only|610 Self delete controller; sender=receiver601, exchange unresolved|
Controller/receiver work are local10/11; ordinary service relation is12. Root
Delete rename target is side+112. The exact new name is `OA Delete receiver · reviewed`
or `SA Delete receiver · reviewed`. Aliases, IDs and every other field stay unchanged.
For direct selection, OA root scenario is `5ceab400-0000-4000-8000-00000000044c`
and OA Delete is `5ceab400-0000-4000-8000-000000000458`; SA root scenario is
`5ceab400-0000-4000-8000-000000000834` and SA Delete is
`5ceab400-0000-4000-8000-000000000840`. `inventory` emits the complete admitted
scenario/lifeline/occurrence ID/name/parent table and actual validation diagnostics.
## Native procedure and independent observations
Use a copied working directory and isolated profile with an immutable matching GUI.
Record source commit, executable SHA256, actual client dimensions, input sequence,
screenshots and saved checkpoints outside the project directories. Open the actual
`project.arcadia` through Studio. Select Behavior & scenarios, the matching layer,
and the exact prefixed scenario. First run the OA matrix; repeat SA independently
from the same baseline. Neither a passing source checker nor pure Scene tests imply
the following visual/interaction results.
| Step | Native observation/evidence required | Semantic oracle |
| --- | --- | --- |
|Root lifecycle|Controller remains usable; receiver lifetime begins at Create and ends at Delete; Action lies between. Inspect birth/death hit targets and corresponding Properties identity. Clicking an intended lifecycle target must not select a different occurrence.|Save copied baseline; `check baseline`|
|Preexisting empty|Both lane headers/guides visible through the actual empty canvas; no invented birth/death. Neutral insertion guide remains usable even when no occurrence exists.|Save/navigation must remain `baseline`|
|Create-only|Receiver lifetime continues beyond the last occurrence to visible root extent; do not confuse insertion endpoint with lifetime endpoint.|`check baseline`|
|Conditional Delete|Left receiver activation/lifetime ends at its Delete. Right empty branch retains independent receiver state; Delete must not terminate sibling activation. Inspect unresolved-call indication without inventing Reply or silently rewriting the model.|`check baseline`|
|Unassigned receiver|Incomplete lane remains visible, with explicit receiver lifecycle targets/hit geometry. It must not disappear or crash because placement eligibility excludes unresolved representation. Record whatever completeness diagnostic is actually shown.|`check baseline`; only after admitted|
|Self Delete|Single lane's self-message end and death marker align and remain selectable. Inspect Properties and hit targets at ordinary100% then Fit; do not infer self-Create behavior.|`check baseline`; only after admitted|
|Narrow/overview|At actual1100×700 and a wide client, exercise Fit,100%, scroll, selection and Tools. Guides/markers remain correctly aligned and hit-testable; record font wrapping/overlap and clipped regions.|Save unchanged complete baseline|
|Real rename|Select root Delete occurrence by actual marker/message, verify identity, edit Name to exact side-specific reviewed name and Apply, or make precisely that source name edit and Apply. Save once; preserve complete checkpoint before Undo.|`check oa-rename` or `check sa-rename`; exact previously generated expectation via `same`|
|Undo|One Undo restores old name, exact IDs and complete source. Save and freeze checkpoint.|`check baseline UNDO_ENTRY RENAMED_ENTRY`, then `same BASE_ENTRY UNDO_ENTRY RENAMED_ENTRY`|
|Redo/reopen|One Redo and Save restores exact first rename checkpoint. Reopen through actual file picker and Save again. Observe lifecycle geometry/selection afresh.|`check SIDE-rename`, `same FIRST_RENAME REDO`, `same FIRST_RENAME REOPEN`|
Each rename mode starts from baseline and changes only its own layer. Undo OA before
starting SA or use a fresh baseline copy; `sa-rename` does not include an earlier OA
rename. Direct additional scenario insertion is outside these fixed rename modes:
define a separate prediction before using it as acceptance evidence.
## Exact physical-file and Undo policy
`check MODE ENTRY` independently constructs complete expected Project and reachable
SourceBundle, then requires the physical file map to equal those expected sources.
`check MODE ENTRY PRE_UNDO_ENTRY` additionally permits only the exact original files
present in the explicitly supplied pre-Undo checkpoint. Expected reachable bytes
overlay those origin files; missing, unknown or changed retained files fail. No
automatic disk-equals-reachable assertion is imposed on a valid Undo with retained
files. The explicit origin must be a separately frozen, previously verified accepted
checkpoint; do not supply a directory manufactured after seeing an unexpected file.
`same EXPECTED ACTUAL` pins all identities/model/source and the complete saved physical
map of a previously verified checkpoint. Its optional pre-Undo origin uses the same
exact retention rule. It never accepts source drift just because decoded models agree.
These rename cases normally create no detached files, but the checker explicitly
self-tests missing-origin, unknown/missing/changed retained-file discrimination.
## Status
Root execution completed on 2026-09-11 at12:41:29 UTC: direct Rust2024 compile with
warnings denied (23.439s), self-check, inventory, and generate/check of baseline,
OA rename and SA rename all passed. Total62.428s. The exact core tree is
`a9c71e2c3fc9260d06f191c0d65b1e63e41edbec`; its compiled rlib SHA256 is
`D282FEE7FF3B4FDD159EA85B12430262C8DA00E064BD290CCED380B6BA2335B5`.
The oracle executable is
`798D7A1907B894C13549BAD35511B21D6BC7F3D67D63674042B7DF71184C7524`.
Exact logs, execution metadata and all six pre-native fixture hashes are retained
under [lifecycle-native-ytr83r-20260911](../../experiments/lifecycle-native-ytr83r-20260911/).
An independent read-only check confirmed64 elements/2 relations per Project,
including12 scenarios/22 lifelines/24 occurrences. Both incomplete receiver and
self-Delete cases were admitted. There are19 warnings and no errors:
missing_system1, unallocated_leaf4, empty_sequence2, call_without_operation2,
incomplete_reference2, missing_exchange6 and empty_port_contract2. These describe
the intentionally partial engineering fixture; no validation was bypassed.
Each rename changes exactly one quoted name and adds12 UTF-8 bytes; every other
source byte and identity is unchanged. All three rationale files remain identical
86-byte Unicode text with exactly two CRLF lines and no bare LF. None of these
predictions used native outputs. Pending: matching GUI, visual/interaction checks
and every native Save/Undo/Redo/reopen step above.