94 lines
5.8 KiB
Markdown
94 lines
5.8 KiB
Markdown
# Lifetime extension of the actual Scene experiment — not executed
|
||
|
||
Prepared 2026-09-12 in `codex/behavior-layout-scene-ytr83r-20260912`, inspected
|
||
HEAD `911f63e`. This extension owns only `lifetime.arcadia`, `lifetime.rs`, this
|
||
note, and the `mod lifetime;` declaration in the existing experiment module.
|
||
The original fixture and its seven baseline tests are unchanged. Root owns the
|
||
README compatibility note, compiler resource, source integration and publication.
|
||
No production renderer, parser or model code was edited here.
|
||
|
||
## Question and method
|
||
|
||
Does the current test-only row-anchor hook propagate a changed Create/Delete
|
||
position into the actual Scene's local lifetime, marker hit identity, aligned
|
||
message endpoints and activation clipping, while leaving semantic/source state
|
||
and occurrence IDs intact?
|
||
|
||
The separate source fixture declares stable UUIDs, a sender action before receiver
|
||
birth, then Create, Call and receiver Delete. All three messages reference one
|
||
valid Interaction; explicit sender/receiver lifelines represent its Activity
|
||
endpoints. A Reply is deliberately absent: receiver death must not manufacture a
|
||
reply or erase the unanswered-call presentation cue. The test requires real
|
||
language parsing, no semantic errors, ordinary `Document::from_bundle` admission,
|
||
canonical format/reparse Project equality and exact original source retention.
|
||
Warnings are allowed and are not promoted into semantic acceptance requirements.
|
||
|
||
The evaluator calls the existing `Scene::sequence` and scoped `render`/`drag`
|
||
helpers. It reads `Rendering::alive_spans` and `marker_at`, real Scene line
|
||
polylines and actual activation `BoxItem` records. It does not construct an
|
||
alternative activation/lifetime implementation or edit final geometry afterward.
|
||
|
||
## Independent expectations
|
||
|
||
Current Scene metrics give sender action148, Create243, Call335 and Delete427:
|
||
the action consumes95 and each following message92. The scene height is564 and
|
||
its root insertion bounds are106–477. These numbers are regression oracles for
|
||
the inspected implementation, not permanent product spacing requirements.
|
||
|
||
The receiver is alive exactly243–427; the sender remains alive throughout the
|
||
visible root span. Create ends at the 140px birth capsule's near edge, 70px before
|
||
the receiver lane, while Delete ends at the death cross's center. Marker and
|
||
Scene hit queries return the original Create/Delete occurrence IDs. The actual
|
||
8px activation starts at Call335 and ends at death427, with no minimum-height tail
|
||
after death. The unresolved-call cue stays at receiver-x+12, death-y−16.
|
||
|
||
Three tests establish these expectations if they pass:
|
||
|
||
1. Baseline parsed Scene has those independent rows, line endpoints, lifetime
|
||
extents, hit identities, activation bounds and unanswered-call cue. Its real
|
||
geometry remains equal after source round trip and an empty hook scope.
|
||
2. Moving Create down60 changes its row to303 and propagates Call395/Delete487;
|
||
the actual receiver lifetime, birth/death markers and activation follow. The
|
||
preceding action's box stays fixed, line/row UUIDs stay stable, and the old
|
||
birth point is no longer a lifecycle marker.
|
||
3. Moving only Delete down48 changes death to475 and extends the same real
|
||
activation to475, while Create and Call polylines stay fixed. Moving Create
|
||
with an authored Delete request still at427 forces displayed death487; either
|
||
signed-zero pointer delta preserves the entire latent map and Scene. Moving
|
||
Create back restores baseline geometry and the original authored map.
|
||
|
||
Every test compares the entire accepted Project and source bundle against the
|
||
original snapshot, and requires no dirty state or undo/redo history. No test
|
||
weakens equality to just the occurrence list.
|
||
|
||
## Contract reused and limits
|
||
|
||
The inspected implementation builds lifecycle geometry after recording occurrence
|
||
rows (`behavior.rs:1332–1344`), aligns Create/Delete messages through
|
||
`scenario_lifecycle::render::Rendering::align_messages`, and constructs actual
|
||
activation boxes through `activation_sequence`/`activation_segment`
|
||
(`behavior.rs:1663–1734`). The latter intersects segments with `alive_spans` and
|
||
keeps a cue when Delete terminates an unanswered call. Existing
|
||
`scenario_lifecycle/render_tests.rs` tests real root birth/death alignment and
|
||
branch-local activation clipping. This extension exercises those current
|
||
contracts through the layout hook; it does not replace them.
|
||
|
||
The peer `8112dea` typed activation correction has a different future integration
|
||
boundary and, as reported to this task, has no production lifecycle clipping yet.
|
||
These tests are not evidence that that unmerged source is compatible. A future
|
||
typed activation union needs its own tests for clipping, typed call/segment IDs,
|
||
self/nested activation receive geometry, branch behavior, depth and paint order.
|
||
Do not preserve a legacy width/classification assertion blindly when deliberately
|
||
changing the activation representation; retain independent lifetime endpoints,
|
||
identity and no-after-death expectations on the new actual records.
|
||
|
||
This extension remains uncompiled and unexecuted. It does not establish persisted
|
||
layout syntax, a production drag transaction, undoable geometry edits, native
|
||
pointer behavior, GPU painting, performance, or general upward/free positioning.
|
||
The existing hook still applies a next-row floor. Root should run the existing
|
||
`cargo test -p oa-desktop behavior_layout_scene_experiment -- --nocapture` gate
|
||
on the exact identified wired source, then publish fixture, evaluator and result
|
||
together. Remote peer machines cannot use workspace-local links.
|
||
|
||
Independent bounded source review confirmed the fixture ownership/endpoint contract and the numerical expectations above. Formatting and whitespace checks passed. Compilation and execution remain pending; these findings do not establish an editing transaction or native behavior.
|