139 lines
10 KiB
Markdown
139 lines
10 KiB
Markdown
# 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.
|