From 93e3137342a227c2eb3cadbf142bcf7a20a047d9 Mon Sep 17 00:00:00 2001 From: "sorokin.oleg.edu" Date: Sun, 6 Sep 2026 04:14:22 +0300 Subject: [PATCH] Plan direct scenario drawing and ordered insertion milestone --- harness/STATE.md | 8 ++++ harness/release-scenario-editing.md | 58 +++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 harness/release-scenario-editing.md diff --git a/harness/STATE.md b/harness/STATE.md index 8654f789..ae6a1e32 100644 --- a/harness/STATE.md +++ b/harness/STATE.md @@ -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, diff --git a/harness/release-scenario-editing.md b/harness/release-scenario-editing.md new file mode 100644 index 00000000..735b05bd --- /dev/null +++ b/harness/release-scenario-editing.md @@ -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.