2
BehaviorCanvasPhase120260911
Codex-956atf edited this page 2026-09-11 15:33:02 +00:00

Shared behavior canvas phase 1 — corrected source, execution pending

Codex-956atf /root/behavior_canvas_resume, 2026-09-11. Isolated codex/behavior-canvas-20260911 remains at checkpoint e511c415 plus uncommitted source. Root owns independent review, integration, compiler/native gates and publication. This is not issue #2 closure.

Both actual production scenario and process/chain views use the shared Fill viewport, permanent narrow palette and stable right overlay for the existing single draft/source-child/details editor. Draw/hit/markers share pan plus scale. Camera is transient; constrained domain commands and source/history APIs remain the existing ones. Accepted placement is still derived.

The independent review (issue2 comment332, harness/release-behavior-canvas-phase1-review-20260911.md) found C1 stale camera lifetime and C2 inaccessible toolbar controls. Correction lease comment340 is now source-frozen. Both Camera messages carry a separate input lifetime. External context/owner/bounds/tool/Fit/panel/chooser changes invalidate it; own ordered relative deltas preserve it while semantic epochs still invalidate authoring gestures. Viewport also cancels on changed actual bounds, disabled ownership and conflicting pointer input. Presentation toolbar events can cross only semantic epochs produced within their uninterrupted camera batch, so a real Fit after a prior movement in that same batch is accepted. Retained pre-Fit or pre-A→B→Back packets are refused.

Palette, Canvas/Fit/zoom/Details and panel controls now register real focusable targets, activate on Enter/Space, and draw a contrasting focus ring even on selected tools. F6 explicitly enters the canvas; Tab/Shift+Tab cycle enabled controls; Escape/F6 release canvas focus and the next ordinary Tab returns to existing Inspector entry. Live root widget Tasks verify an enabled current-lifetime viewport before focusing/revealing a member. Dirty editing, source children, chooser and Review/modal owners disable the background targets. The only app/reference_authoring.rs change is the root-authorized read-only reference_input_active accessor. A replayed process tool action now refuses dirty drafts instead of implicitly applying them.

Root's frozen generic behavior/form_session.rs (SHA256 F5027FB3A5A5599A182E7D1A10DBA56DD66EB1F23A4BA4C4A1744C9A6A5B6E61) is adopted by both scenario session and process invocation. It explicitly resets field child state on replacement; Iced's one-child keyed_column cannot guarantee that reset. The retained outline Observer process flag wiring is coherent; obsolete Canvas ScrollReveal is not restored.

Thirteen actual App::view/WGPU mounted tests and two shared math/input tests are prepared. Seven new production tests cover held drag interrupted by real controls/resize, retained App packets/caller return, keyboard-only entry/traversal/activation/exit and raw Inspector retention, selected palette/Fit screenshot focus pixels, real chooser/Review ownership with delayed returned Tasks, disable/reenable cancellation and process session replacement without a closed render. Existing semantic/source/history/direct authoring tests remain. The helper awaits returned Task streams and Widget chains, processes real overlays and renders screenshots; backend failure is explicit, not skipped. Scoped rustfmt parse/format and scoped git diff --check pass. No tests/Cargo/rustc/native/WSL were run by this worker.

Durable exact handoff: harness/release-behavior-canvas-phase1-corrections-20260911.md, SHA256 3949C3774C244E04D14DD5C017711D729AEE53F85A707F4A0F4B1BDA7FDE2204. It lists all nineteen Rust path fingerprints; combined ordered source manifest SHA256 2EF8CED44BF26C43CEEDC296EBDF8A0E6573EB07424B106399D58DBF2E2A8CD5. The original source report is retained with a supersession pointer.

Root must union I1/I2 mount-bound Name/FormShown/rearm/root owner/same-axis focus changes and five parent-focus regressions, retain the scenario replacement-scroll gate, and preserve current chooser/API/compiler corrections. B4 remains ytr83r-owned: pan plus scale must transform BOTH clip rectangles and clipped child text. No B4 file was changed. Windows compilation/tests/pixels/native acceptance remain pending for this source; Linux/WSL execution is deferred by the user's latest instruction until WSL2 networking is resolved. Persistent authored placement/view contracts, full process/body/endpoint/fragment gestures and broader naming/editing remain separate phases.