4.4 KiB
Scenario workspace — 2026-09-10
Owner: Codex-9e8r6t /root/behavior_audit. Root assigned the bounded layout slice after the source audit. Scope is the scenario canvas, compact shelves, focus and independently scrollable form. Existing semantics, source grammar, REST commands and raw-draft recovery remain authoritative. No owner creation, missing-source creation, reuse semantics, state naming or commits/pushes are included.
Coordination and current status
Design only; production remains unchanged. Palette_finish released its source freeze after desktop588/build/fmt/Clippy and returned Cargo to root. Separately, Codex-956atf owns the clicked-slot Action/Observation/Reuse/Fragment work on another host. Root is coordinating its patch before this layout starts; this report does not supersede that ownership. Do not launch Cargo without root's sole-writer lease. Root owns real native QA and common ledgers/Wiki.
Bounded implementation design
- Integrate the other host's clicked-slot work first. Then move the existing scenario view/outline to
behavior/scenario/workspace.rs, leaving its updated draft/planner/event semantics inscenario.rs. Keep the extracted fields/forms behavior unchanged before replacing its outer layout. - Use a compact stable header for owner, focus and shelf/camera actions. Tools and Selection are disclosures; place the existing sequence outline inside a scrolling shelf rather than beneath the diagram. Default shelves closed. Active-tool guidance is concise and always visible.
- Keep a fixed widget-tree slot for the closed shelf (
Column::from_vec; a zero-height child must not disappear). Allocate header and shelf once, then divide actual remaining height between the canvas and pending editor. Keep both canvas and form slots stable when the form opens/closes. Fields scroll independently; Create/Cancel remain outside the field scroller. No enclosing page scrollable. - Extend the existing process focus layout slot in
views.rsto scenarios without moving the main workspace in the widget tree. Focus must retain selection, canvas state and raw draft. Coordinate any App change with root. - Evaluate measured viewport Fit/manual scale against actual Scene geometry. Existing Scene draws with
scaleand transforms pointer positions by that scale. If included, get viewport size from a sensor around the actual canvas scrollable, accept passive viewport changes under document/owner/revision guards, and invalidate old pointer epochs on geometry/scale changes. Use a readable default of 100%; tool changes must not force another scale. A Fit overview must be explicit, and limited overview scale must be disclosed. Do not infer available height from total window size.
Planned verification
- Use the exact generic production pane builders with real Iced layout and scroll operations at minimum/wide center-pane sizes, with short/wrapped headers, open/closed shelves, pending forms and focused widths. Assert all canvas/action/field rectangles lie within the actual parent allocation; assert remaining space grows with the viewport.
- Establish real canvas/form scroll offsets, then diff across shelves, form open/cancel, focus and resize. Verify stable widget state and independent scrolling, not just widget counts. Full App tree-diff tests also preserve selected UUID, raw behavior recovery snapshot and the accepted document Arc.
- If camera controls are included, test default/manual/Fit against the scene bounds and measured viewport; finite inputs only; correct same-size notifications; stale context rejection; production click-click, drag and reorder at multiple scales with nonzero scroll origins.
- Retain existing scenario paired-call/branch/reorder/source/Undo/Redo/recovery tests. New geometry events remain passive during async saves and modal guards; drawing continues to reject pending source/properties/behavior edits.
- Root-owned native before/after task at 1440×900 and 1100×700: draw into a visible ALT operand, open a message/value form, scroll fields, reach Create/Cancel, open/close shelves and Focus, then Save/Undo/Redo/reopen. Actual Windows and Linux acceptance remain separate from unit/build results.
Evidence
No implementation checks or native acceptance have run for this slice yet. Palette588 is an upstream snapshot gate, not a scenario-workspace test pass. Append exact edits, commands, results, binary identity and unresolved acceptance after implementation.