From 5fa9c905c85dfc837b64b1df1adc057af460528f Mon Sep 17 00:00:00 2001 From: "sorokin.oleg.edu" Date: Sun, 6 Sep 2026 04:54:22 +0300 Subject: [PATCH] Record verified scenario review fixes and fresh binary evidence --- harness/STATE.md | 12 ++-- harness/release-scenario-editing.md | 91 ++++++++++++++++++++++++++--- 2 files changed, 90 insertions(+), 13 deletions(-) diff --git a/harness/STATE.md b/harness/STATE.md index 997bdfd1..2d169498 100644 --- a/harness/STATE.md +++ b/harness/STATE.md @@ -7,11 +7,13 @@ Direct scenario work is now in isolated `codex/scenario-direct`, checkout `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 implemented in d1d8f0b. Final Windows desktop tests pass -274/274, strict all-target desktop Clippy and optimized build pass. Exact artifact -hash and logs are recorded in release-scenario-editing.md. Independent review and -native Windows/Linux trials remain pending and root-owned; this branch claims no -native acceptance and does not close process/chain work. +activation rendering are implemented in d1d8f0b, with independent-review fixes +in 7a66607 for stale scroll slots, actual Iced scroll coordinates, operand-specific +activation segments and repeated picker cost. Final Windows desktop tests pass +282/282, strict all-target desktop Clippy and optimized build pass. Exact artifact +hash, before/after failures and timings are in release-scenario-editing.md. +Independent recheck and native Windows/Linux trials remain pending and 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, diff --git a/harness/release-scenario-editing.md b/harness/release-scenario-editing.md index ce2518f2..f44cd898 100644 --- a/harness/release-scenario-editing.md +++ b/harness/release-scenario-editing.md @@ -1,9 +1,10 @@ # 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. +`codex/scenario-direct` checkout, based on ab661f2. Initial production is d1d8f0b; +independent-review fixes are in 7a66607. The fixes are awaiting independent recheck +and root-owned Windows/Linux native trials. This does not complete the release +or the separate process/chain work. ## Decisions @@ -17,8 +18,11 @@ 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. +typed draft with those endpoints. Exchanges are filtered by layer, viewpoint and +the core's represented-endpoint compatibility. Earlier calls retain complete +exact-slot validation, cached by document revision, owner, slot and endpoints. +Choices use search plus 24-item pages; every final creation still validates the +complete ordinary command at the captured insertion slot. 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. @@ -32,8 +36,9 @@ 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. +drafts cancel gestures. Scroll, bounds changes and actual window resize also +cancel the captured source/slot. Ordered raw pointer events are translated by the +actual combined inner/page Scrollable offsets. 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 @@ -58,7 +63,7 @@ Root native tasks (not yet performed): 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 +## Initial automated evidence — 2026-09-06 (superseded by review fixes) Source checkout: `D:/CodexBuilds/Capella2-scenario-direct`, production commit `d1d8f0bbed5aa0112189138a1cc025affe26c09b`. Changes are confined to desktop @@ -91,3 +96,73 @@ This artifact has not been native-tested. Widget-tree/event tests do not establi visual usability, scrolling behavior or GPU rendering acceptance; the three native tasks above remain required. Process/chain direct editing remains outside this bounded implementation. + + +## Independent-review fixes and final automated evidence — 2026-09-06 + +Production commit: `7a666076bfcfd1f2258d2f5508328db5adf40825`, same isolated +checkout and dedicated target. Only the three previously owned desktop source +files changed. No core/source/schema or process/chain features were added. + +The new event regressions failed on the prior implementation: a bounds shift kept +the first click's source/slot armed, and a held drag could still publish its old +slot after the bounds changed. Both now cancel. After scrolling, resizing or +clipping changes, the next click starts a fresh gesture. App tests also verify +unchanged-size notifications retain context, actual resize invalidates it, and +scrolling preserves property/source history and the pending behavior form. + +Local Iced inspection established that Scrollable translates its supplied cursor +but leaves raw CursorMoved coordinates and the canvas layout unchanged. The +existing inner and outer scrollables now have a local, passive observer which +reads their actual translation through Widget::operate. Ordinary on_scroll cannot +report initial/remounted state or passive content-size clamping. The observer +forwards layout, drawing, overlays and event capture, and publishes only changed +translations or document/owner context. Reporting before child input makes a +result using an old slot stale before App processes it; reporting after input +captures wheel/scrollbar changes. The real Iced Scrollable test uses its debug +null renderer and verifies 0 → 180 wheel offset → 50 passive clamp → 180 on +expansion → 0 after remount, with no repeated messages on unchanged redraws. + +The reported ALT fixture also failed before the fix: a root Call, Reply then +Action in operand one, another Reply in operand two, and a third operand without +a Reply. Derived execution geometry now splits at operand boundaries, stops each +returned operand at its own correlated Reply, leaves its following Action outside +that segment, and marks the reply-free operand open. It does not imply chronology +between alternative operands or add persistent execution records. + +Picker measurement on the same Windows debug target: + +| Probe | Before | After | +| --- | --- | --- | +| 500 compatible exchange choices | 7.87 s | 1.46 ms | +| Same choices after one name edit | 8.14 s | 1.48 ms | +| 100 exact-slot earlier calls, initial validation | not measured | 595 ms | +| Those calls after name/value/search/page edits | not measured | 34–39 µs | + +The exchange list no longer clones and validates the entire project per candidate. +Final Apply still rejects a Delete inserted before a later Call on that lifeline; +the new regression confirms appending that same Delete succeeds. Reply choices +retain exact validation, invalidate for changed slot/document/revision/endpoints, +and do not lose their cached eligibility while expressions are being typed. +These are bounded picker measurements, not complete native-frame timings. + +Final checks (`--locked --offline`): 27 focused matching tests passed; all 282 +desktop tests passed, zero failures/ignored tests; strict desktop all-target +Clippy passed; optimized desktop build passed; git diff --check passed. Clippy +requested one test-only nested-if cleanup, which was applied before the final +clean Clippy/build. + +Logs under `D:/CodexBuilds/`: +`Capella2-scenario-review-before-tests.log`, `Capella2-scenario-alt-before.log`, +`Capella2-scenario-scroll-observer-tests.log`, +`Capella2-scenario-review-desktop-tests.log`, +`Capella2-scenario-review-clippy.log`, `Capella2-scenario-review-release.log`. + +Current Windows binary: +`D:/CodexBuilds/Capella2-scenario-target/release/arcadia-studio.exe`, +20,349,952 bytes, SHA-256 +`1AE729097F267DE596AE0970D3A62AE06C0C89CE2FDE70DF980AD785A0E0A8E6`. +It supersedes the initial artifact above. Native acceptance is still pending. +Root should repeat the three primary native tasks, including inner/outer wheel +and scrollbar cancellation at a middle slot, resize/remount/clamp recovery, and +the three-operand ALT fixture. The broader release objective remains incomplete.