Plan direct scenario drawing and ordered insertion milestone
This commit is contained in:
@@ -2,6 +2,14 @@
|
||||
|
||||
## Objective and phase
|
||||
|
||||
Direct scenario work is now in isolated `codex/scenario-direct`, checkout
|
||||
`D:/CodexBuilds/Capella2-scenario-direct`, base ab661f2, dedicated target
|
||||
`D:/CodexBuilds/Capella2-scenario-target`. Scope and acceptance are recorded in
|
||||
release-scenario-editing.md. Existing scene/order semantics and typed drafts are
|
||||
retained; direct drawing, explicit insertion, same-parent reorder and correlated
|
||||
activation rendering are in implementation. Native input remains root-owned;
|
||||
this branch claims no native acceptance and does not close process/chain work.
|
||||
|
||||
The first-release goal remains active and incomplete. Deliver usable Rust/Iced
|
||||
Operational Analysis and System Analysis/System Architecture, equivalent graphical,
|
||||
textual and REST semantics, artifact traceability, directly editable behavior,
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
# Direct scenario editing — bounded implementation plan
|
||||
|
||||
Status: implementation in the isolated `codex/scenario-direct` checkout, based on
|
||||
ab661f2. Native acceptance is pending the root's Windows/Linux trials. This does
|
||||
not complete the release or the separate process/chain gesture 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.
|
||||
Reference in New Issue
Block a user