94 lines
5.4 KiB
Markdown
94 lines
5.4 KiB
Markdown
# Direct scenario editing — bounded implementation plan
|
|
|
|
Status: implementation and automated Windows checks passed in the isolated
|
|
`codex/scenario-direct` checkout, based on ab661f2. Production commit is d1d8f0b.
|
|
Independent review and native acceptance remain pending the root's Windows/Linux
|
|
trials. This does not complete the release or the separate process/chain work.
|
|
|
|
## Decisions
|
|
|
|
Extend the existing `behavior::Scene`; retain its derived lifeline columns and
|
|
ordered occurrence rows. No model/schema/layout records are added. Lifeline and
|
|
occurrence UUIDs remain distinct from represented work and global exchanges.
|
|
|
|
Select mode selects headers, stems, messages and occurrence boxes. A selected
|
|
occurrence has a reorder handle; dragging it chooses a visible slot in its same
|
|
parent sequence. It never reparents or changes lifeline columns. A Message tool
|
|
uses the existing MessageStyle, with Call + correlated reply initially selected.
|
|
Click-click or drag between represented lifelines captures a highlighted explicit
|
|
insertion slot `(parent, before occurrence or append)` and opens the existing
|
|
typed draft with those endpoints. Existing exchanges/calls are filtered against
|
|
the complete candidate at that slot and shown through search plus 24-item pages.
|
|
No compatible exchange produces an actionable retained draft, not a new global
|
|
exchange or a silently changed endpoint. Timer remains available as a local tool.
|
|
|
|
The canvas remains rendered while a bounded, independently scrollable form is
|
|
open. Values keep the existing qualified-path editor and lifecycle. Final creation
|
|
uses ordinary CreateElement plus SetSteps in one Batch; paired call/reply are
|
|
inserted together and undo together. Reordering uses SetSteps within the captured
|
|
parent. Existing core validation decides reply order, branch dominance, lifetime,
|
|
phase and endpoint compatibility. Failed preparation/source writes retain drafts.
|
|
|
|
Transient events capture document/scenario/revision/epoch, and the App validates
|
|
the current Behavior owner before handling them. Selection does not invalidate a
|
|
gesture within the same scenario. Escape, unfocus, context/tool change and pending
|
|
drafts cancel gestures. Ordered pointer events and captured window positions avoid
|
|
coalesced-click and changed-scroll-origin commits. No geometry is persisted.
|
|
|
|
Execution bars derive their ends from actual correlated reply positions; separate
|
|
conditional reply branches render their corresponding spans. Calls without a
|
|
visible reply use a short explicitly open activation, not a fabricated reply.
|
|
|
|
## Acceptance checks
|
|
|
|
Production-event tests cover hit priority, click-click/drag, scroll-origin changes,
|
|
Escape/unfocus/stale contexts and exactly one result per gesture. Planner/App tests
|
|
cover middle/operand insertion, paired identities, complete SetSteps ordering,
|
|
same-parent reorder, rejected reply-before-call, unchanged global exchanges, exact
|
|
source/model Undo, draft retention and bounded exchange/call controls. Run focused
|
|
and full desktop tests, strict all-target desktop Clippy and optimized build with
|
|
the dedicated `D:/CodexBuilds/Capella2-scenario-target` target.
|
|
|
|
Root native tasks (not yet performed):
|
|
1. Draw an existing exchange again into the middle of a scenario as Call+Reply;
|
|
enter a qualified value, select both occurrences, Undo/Redo, save/reopen.
|
|
2. Insert inside an ALT/LOOP operand, reorder within it, reject a reply before its
|
|
call, and inspect correlated execution bars and preserved occurrence identities.
|
|
3. Cancel drawing after scrolling/layout change, retry, retain typed values while
|
|
navigation is blocked, and open/return from a referenced scenario. Verify at
|
|
1440x900 and 1100x700 on Windows and Linux before scoped acceptance.
|
|
|
|
## Automated evidence — 2026-09-06
|
|
|
|
Source checkout: `D:/CodexBuilds/Capella2-scenario-direct`, production commit
|
|
`d1d8f0bbed5aa0112189138a1cc025affe26c09b`. Changes are confined to desktop
|
|
`app.rs`, `behavior.rs` and `behavior/scenario.rs`; no core model, persisted layout
|
|
or schema changes are included.
|
|
|
|
All commands used the dedicated `D:/CodexBuilds/Capella2-scenario-target` target
|
|
with `--locked --offline`:
|
|
|
|
- `cargo check -p oa-desktop --all-targets`: passed.
|
|
- `cargo test -p oa-desktop direct_`: 19 passed, including 13 new direct-scenario
|
|
tests and six existing matching tests.
|
|
- `cargo test -p oa-desktop`: final source passed all 274 tests, zero failures or
|
|
ignored tests. This includes exact source/model Undo, creation and reorder
|
|
selection, rejected stale contexts, retained failed-write drafts, bounded
|
|
contextual controls, scroll-origin cancellation and correlated activation spans.
|
|
- `cargo clippy -p oa-desktop --all-targets -- -D warnings`: passed.
|
|
- `cargo build -p oa-desktop --release`: passed.
|
|
- `git diff --check`: passed before the production commit.
|
|
|
|
Logs are under `D:/CodexBuilds/`: `Capella2-scenario-check.log`,
|
|
`Capella2-scenario-direct-tests.log`, `Capella2-scenario-desktop-final-tests.log`,
|
|
`Capella2-scenario-desktop-clippy.log` and `Capella2-scenario-desktop-release.log`.
|
|
|
|
Windows artifact:
|
|
`D:/CodexBuilds/Capella2-scenario-target/release/arcadia-studio.exe`,
|
|
20,345,856 bytes, SHA-256
|
|
`7CC6DCDB7ECC0C6B144137D31DB0BE9BC1555FEFAE6B465DAEABCF52DFE1A166`.
|
|
This artifact has not been native-tested. Widget-tree/event tests do not establish
|
|
visual usability, scrolling behavior or GPU rendering acceptance; the three native
|
|
tasks above remain required. Process/chain direct editing remains outside this
|
|
bounded implementation.
|