Compare commits

...
7 changed files with 78 additions and 15 deletions
@@ -1,6 +1,7 @@
use super::*;
use crate::app::multiselect::{self, Choice};
use crate::diagram_usage::Target as SelectionTarget;
use iced::widget::text_editor;
#[path = "group/connection_lifetime.rs"]
mod connection_lifetime;
@@ -37,7 +37,7 @@ fn routed_group() -> (Group, Id) {
g.f.app.fit_to_view = false;
choose(&mut g.f.app, SelectionTarget::Edge(edge), Choice::Replace);
assert_eq!(g.f.app.selected, edge);
let view = project_view(g.f.app.project(), g.f.diagram);
let view = projection::project_view(g.f.app.project(), g.f.diagram);
assert!(view.edges.iter().any(|e| e.id == edge));
assert_eq!(
crate::route_edit::attachment_node(
@@ -10,6 +10,11 @@ async fn press_escape(mounted: &mut Mounted, app: &mut App) -> Vec<Message> {
std::slice::from_ref(&input),
mouse::Cursor::Unavailable,
);
assert_eq!(
statuses,
[iced::event::Status::Captured],
"the mounted picker must capture Escape before App subscriptions"
);
crate::app::escape::tests::subscriptions(app, input, statuses[0], &mut messages);
for message in messages.iter().cloned() {
let task = app.update(message);
@@ -41,17 +46,11 @@ async fn mounted_state_missing_picker_escape_preserves_exact_document_then_reope
send(&mut app, Message::BehaviorDiagram(choice));
let mut mounted = Mounted::new(&mut app).await;
assert_eq!(state_edit::unplaced(app.project(), diagram), vec![f.b]);
let focus_id = iced::advanced::widget::Id::from("diagram-keyboard-owner");
let (_, canvas, _) = mounted
.geometry(&app)
.focused
.into_iter()
.find(|(id, _, _)| id.as_ref() == Some(&focus_id))
.unwrap();
// The existing picker is immediately above the measured canvas, separated
// by 8px. Its 12px text and 8px padding give a 31.6px row.
let picker = iced::Point::new(canvas.center_x(), canvas.y - 24.);
let option = iced::Point::new(picker.x, canvas.y + 8.);
// Locate the stable picker slot itself: selection controls may sit between
// it and the canvas. The single menu option opens below this slot.
let bounds = mounted.geometry(&app).bounds("state-missing-picker");
let picker = bounds.center();
let option = iced::Point::new(picker.x, bounds.y + bounds.height * 1.5);
let before = app.document.snapshot();
let original = app.project().clone();
let source = app.document.bundle().clone();
+1 -1
View File
@@ -187,7 +187,7 @@ pub fn view<'a>(app: &'a App, machine: Id, mut out: Column<'a, Message>) -> Elem
.into();
out = out.push(
column![
missing_controls,
container(missing_controls).id("state-missing-picker"),
selection_controls(app),
crate::diagram::focus::wrap(
canvas.map(event),
+15 -2
View File
@@ -9,7 +9,8 @@ excluded by the user's explicit request, including after networking recovers.**
## Assembled source and acceptance boundary
Combined code **a6b9f6029aad618a84d136c5293353688d36809f** adds the reviewed
Combined code through **4deced53b98cd4d7649ba7aa60fa4b9b30d2f3b8**, plus the
test-only import correction from **7c2b06b63f8a0fe14b3f001996bdf965b36a4e85**, adds the reviewed
Connection/Route early-admission correction to the assembled Scenario/Text,
ordinary/State/Process/Allocation selection, direct drawing, Traceability and
picker changes. The [source handoff](prerelease-integrated-source-20260924.md)
@@ -18,7 +19,19 @@ The nine event regressions and existing completed-Text-Apply cases are retained.
Direct formatting and whitespace checks pass; this source checkpoint does not
claim combined Cargo, native, packaged or release acceptance. The independent
[event-fix review](reviews/prerelease37-event-admission-20260924.md) found no
further material source defect in its stated scope.
further material source defect in its stated scope. A subsequent peer compile
found a missing `projection::` qualification in the new Route test helper;
the current code includes that one-line correction. The original compile failed
before running tests. The first combined compile at `897d9f04` subsequently
found a missing `text_editor` import in the Allocation Text Apply regression;
the current source includes that one-line correction too. Both failures remain
recorded in the source handoff. The subsequent full test run at `8ddfadf4`
failed the mounted State picker fixture: added selection controls invalidated
its canvas-relative clicks. Source successor `a9cd364eacbbffa0693bab05b5a2b65f9d105535`
measures an identified fixed-height picker slot and checks Escape capture,
retaining the exact preservation/reopen/Place/Undo assertions. The source
handoff links the preserved failed and interrupted attempts. Corrected combined
Windows execution and package acceptance remain pending.
Live build, final-source and publication results belong in
[issue37](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/37).
@@ -80,8 +80,50 @@ actionable defect in the stated boundary. These do not substitute for the final
combined execution. The vendor patch-description correction is incorporated at
`17eaa03fd69741dff746f21d150dc04c341411b3`.
## Mounted State picker correction
The combined Windows test run at `8ddfadf440b5c208b1adb6b211a97ba0c99cff04`
failed the mounted State missing-picker Escape regression. The test located the
picker relative to the canvas, but the integrated selection toolbar adds 56px
plus an 8px gap between them. Both the opening and option clicks were stale.
Parent and independent source inspection agreed on this fixture defect; they
found no reason to change the production Escape policy from this failure.
Successor `a9cd364eacbbffa0693bab05b5a2b65f9d105535` adds a zero-padding
identified container around the existing fixed-height picker slot. The fixture
measures that slot, checks Escape capture before App subscriptions, and retains
zero messages, exact document/source/selection/camera/revision/history,
reopen-and-Place, and exact source Undo checks. The option coordinate assumes
this fixture's single downward-opening menu at 1800 by 1100; it is not a general
overlay geometry evaluator. No production Escape handler changes.
The peer records 2,199 passes, one failure and eight ignores for that failed
full run, with lint and product builds not run. The earlier final-02 attempt
was interrupted during harness listing before test bodies; neither attempt is
a passed gate. [Preserved attempts and v2 recipe](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/src/commit/184c1307d1ae3d49007480020fa1c080c94ececa/harness/prerelease37-windows-gates-20260924/attempts-8dd)
retain their distinct boundaries. The corrected source requires current
combined Windows gates and packaged native acceptance.
## Combined gates and package handoff
The first peer compilation exposed E0425 in the new Route fixture: its
`project_view` call lacked the `projection::` qualification used by the parent
helpers. Combined successor `4deced53b98cd4d7649ba7aa60fa4b9b30d2f3b8`
cherry-picks peer `e68a83959900e556768d8470640e28a7df7d8cb8` to correct that
single test line. Production code is unchanged. This concrete finding supersedes
the earlier `9e99618c` build handoff; the failed compile ran no tests and remains
part of the peer's evidence. Source review and formatting did not catch it.
The first combined Windows attempt on `897d9f04` then found E0433 in the
Allocation Text Apply test added at `542b10ac`: the test's module lacked
`iced::widget::text_editor`. The current successor incorporates peer
`7c2b06b63f8a0fe14b3f001996bdf965b36a4e85`, adding that import only. Production
code remains unchanged. The failed combined compile ran no tests, lint or
product build; its 3,709 source inputs stayed unchanged and formatting passed.
[Preserved failure evidence](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/src/commit/2bd0e615204be728b5c2b77cc7e28504c18a2277/harness/prerelease37-windows-gates-20260924/README.md)
records that distinct failure. The corrected successor requires fresh combined
execution; no earlier pass is substituted.
Codex-ytr83r owns the exact-candidate Windows build/package on its separate
machine. Codex-9e8r6t owns independent source/seam review and a downloaded-package
check. Codex-956atf remains the sole integration, tag and release publication owner.
@@ -2,6 +2,14 @@
2026-09-24. Independent source review; no confirmed actionable finding in the bounded change.
Parent follow-up: the later peer compile found E0425 at
`route_lifetime.rs:40`, which this source review missed. Peer correction
`e68a83959900e556768d8470640e28a7df7d8cb8` qualifies the call as
`projection::project_view`; combined code `4deced53b98cd4d7649ba7aa60fa4b9b30d2f3b8`
incorporates it. This is test-only and does not change the guard analysis below.
The failed compile ran no tests; passing corrected execution must be recorded
separately. The original review is retained below with its original scope.
Reviewed exact delta `340a5c56b0783e22d7336a07ce96ddb7c2b79b0d..6f247af795b7bec1818c588b2dabf203f8f68d8a` (code commits `44217307`, `72b1bb7`, `6f247af`) against combined candidate `17eaa03fd69741dff746f21d150dc04c341411b3`. This is compatibility review before the parent's integration, not verification of an already integrated commit. Read AGENTS.md, App update/connection/route handlers, Allocation retirement adapter, both new regression modules, group fixtures/history evaluator, and existing combined Allocation connection regressions. Formed independent judgment before reading peer reviews at `c655c5eeaaa32c1c21074a7543844ae99a1d6fd5`.
The 21-line early guards precede pending-reveal reconciliation, allocation_before, inner dispatch and post-dispatch reconciliation. The preceding preview/selection-boundary computations are reads. Connection Endpoint/Restart require both current route Context and extant matching session; Choose/Begin retain their intentional new-owner behavior. Current Restart remains admitted and creates a fresh Choose session. Route Commit/CommitAttachment require current Context and payload edge equal to current selected edge, without incorrectly demanding a Connection session or armed attachment.