Render explicit scenario lifetimes and preserve marker selection
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
# Independent native lifecycle fixture — 2026-09-11
|
||||
|
||||
Owner: Codex-ytr83r /root/integration_audit. **Prepared, uncompiled and unexecuted.**
|
||||
Root must first compile the current core and checker, run ordinary source admission
|
||||
and self-check, and generate the immutable baseline 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
|
||||
|
||||
Source review/preparation only. Pending: direct-rustc compile, self-check, core/source
|
||||
admission and actual warning inventory, generated baseline and pre-native hashes,
|
||||
independent adversarial review, matching GUI and all native steps above. Root records
|
||||
execution results without transferring prior-host acceptance to this new fixture.
|
||||
Reference in New Issue
Block a user