12 KiB
Editable routing — verification record
Status on 2026-09-05: routing passed code and native acceptance, including
65fa9ab label-placement corrections and desktop checkpoint 23535b4 with the
release-cursor fix. The six reproduced default SA label-overlap pairs are
resolved; native typed reopen and final minimum-size gestures passed. Final
independent native review found no unresolved material UI finding. This is subsystem
acceptance, not first-release completion. Native trials were performed and
reported by the lead; the documentation worker inspected logs and saved
artifacts and did not perform additional native input.
Implementation checkpoints
| Commit | Scope |
|---|---|
4e5a88d |
Route schema, commands, movement, validation and identity lifecycle |
a7c6f96 |
Source/source-project/JSON/REST parity and normative contracts |
68b1eff |
Shared orthogonal routing, hierarchy/port geometry and stable previews |
30c7db1 |
Settled route budgets and label-only path invariance |
4b8545d |
Deterministic three-participant routing workshop |
65fa9ab |
Stable bounded label placement; six workshop overlap pairs reduced to zero |
23535b4 |
Accepted desktop route authoring, shared rendering and final gesture correction |
Desktop integration passed its final native iteration and is checkpointed. Shared route geometry drives canvas rendering, hit tests, preview, Fit and SVG; persistent routes belong to a diagram and refer to existing semantic edges. See release-routing-contract.md for the contract.
Automated evidence
Logs are under D:/CodexBuilds/Capella2-release1-01a06e2e unless noted otherwise.
routing-workspace-tests.log: 196 core, 103 desktop and 22 server tests passed with the locked workspace command. This run preceded the last budget regression test. The server count is one unit test and 21 HTTP tests.routing-workspace-clippy.log: strict locked workspace Clippy passed.routing-review-build.log,routing-budget-build.logandrouting-native-final-build.logrecord successful subsequent builds. A build log alone does not establish that its executable was launched or exercised.- Core lifecycle coverage includes 13 routing tests for independent per-diagram
metadata, set/remove/no-op behavior, validation, exact undo, delete/reidentify,
default migration, one-endpoint pin preservation and grouped endpoint movement.
D:/CodexBuilds/Capella2-01a06e2e/routing-core-final-tests.logrecords 180 passing core tests before the separate geometry suite was integrated. Frozen historical migration fixtures were retained; comparisons explicitly normalize the new empty route default. - Source/API coverage includes five routing source tests, two cross-file route update regressions, malformed route diagnostics, JSON/source equality, default loading, conditional HTTP updates and durable reopening. The server suite and strict core/server Clippy passed after those changes.
routing-review-desktop-tests.log: 103 desktop tests passed, including actual pointer events at 50%, 100% and 150% zoom; cache reuse on pan/zoom; stale, Escape and invalid-draft guards; one-step undo; shared Fit/SVG geometry; close port-lead bend insertion; displaced-label picking and dragging.- Independent follow-up on
30c7db1ran all 17 geometry tests, four targeted desktop regressions, six external preview/commit fixtures and a valid 1500-edge route-budget reproducer. Label-only edits preserved paths and warnings; editing one edge preserved unrelated settled routes. Strict core Clippy passed. No unresolved blocking/high-impact routing code finding remained at that checkpoint. - Final follow-up: all 18 geometry tests, strict core Clippy and fresh independent
correctness review passed for
65fa9ab.routing-final-desktop-tests.logrecords 104 passing desktop tests, including fast drags with no final motion event.routing-final-clippy.logrecords strict full-workspace Clippy androuting-final-build.logrecords a successful desktop/server build. Four focused desktop tests independently passed after the release-cursor fix. This is explicit focused regression evidence after the earlier full-workspace test pass, not a claim that every workspace test was rerun after every change.
Review findings and resulting fixes
An independent correctness/architecture reviewer reproduced six concrete findings; a separate requirements/UI reviewer inspected default and minimum native screenshots. Fixes cover detached label selection and occlusion, label fraction preservation, bend insertion near port leads, SVG header layering, routing warning visibility and selected-edge hit ties. The native first build exposed a retracing single-pin spur; shared geometry was corrected and the reviewed native run below repeated the gesture successfully. Promoted endpoints suspend bend editing while retaining metadata. Toolbar controls use a stable row and the guide explains the gestures. A duplicate fold notice was removed after the reviewed native trial.
A later fresh UX reviewer found six overlap pairs among the workshop's default
SA labels. Commit 65fa9ab reduces those pairs to zero with stable bounded label
placement. The 18-test geometry suite and fresh correctness review passed; native
reopen showed separated labels and continuous dragging of an automatically
displaced label. The final desktop correction uses the cursor position at
release when motion events are coalesced. Its automated regression and first-try
short native drags passed. Both findings are closed for this routing slice.
Native evidence already performed
Reviewed executable:
D:/CodexBuilds/Capella2-release1-01a06e2e/ui-routing-reviewed/arcadia-studio.exe.
SHA256: 6DAD490D75F2A67A79A0804F33192EF62A3DCBEA92F5EEDA8EA47788D12273B8.
Root exercised the default-size OA view:
- Selected an edge without moving the canvas and dragged an automatic segment to create a non-retracing detour.
- Dragged the label while the polyline stayed unchanged, selected a node, then clicked the displaced label to reselect its edge.
- Dragged an existing bend; exercised Undo/Redo, Remove bend and undo, then Reset routing and undo.
- Folded the source container: the promoted edge routed automatically and route editing was disabled. Expansion restored the saved pin and label.
- Saved
routing-authoring-ui.arcadiaand exportedrouting-authoring-ui.svgin the same reviewed directory. Model checks remained zero throughout.
The saved source is 33,548 bytes and contains @distress_signal routing with a
waypoint (400, 10), label fraction 0.5 and offset approximately
(-69.83374, -83.17815). The SVG is 2,564 bytes.
Root then launched ui-routing-final/arcadia-studio.exe, SHA256
5558CC203E9DAFED3D0BCA1C40B5E4BDE426F00F8BC37DCD9B33A7338ADD5615, containing
30c7db1, duplicate fold-notice cleanup and export-dialog copy changes:
- Native Open reopened the saved authored source. The UI reported “All changes saved”, 41 objects, 25 links and zero checks; the saved bend was visible and clicking the detached label selected the same edge.
- Root rendered the actual exported SVG separately to PNG using Sharp and visually inspected the correct authored detour, label, bounds and nesting.
- The routing workshop loaded in OA with 12 cards and seven links, then SA with 12 cards and 12 links. The model reported 75 objects, 61 links and zero checks.
- Dragging the internal Incident decision line created a pin. Moving one of its functions kept the pin fixed. Moving the whole System by snapped diagram delta (-20, +40) translated the pin by the same delta. Single-step Undo/Redo restored both the placement and pin changes.
- Controls fit at 1100 pixels width. The height-resize attempt did not change the window; this establishes width behavior, not a new 1100×700 pass.
Unexpected concurrent arrangement/view changes were preserved by native Save As
to ui-routing-final/workshop-arrangement-preserved.arcadia (66,434 bytes), then
the original fixture was reopened. The later typed internal-route trial was
saved separately as described below. A capture briefly returned only a 16-pixel
icon; subsequent full native captures succeeded. The anomaly did not establish
an application failure.
Final native verification:
- Root saved
ui-routing-final/typed-routing-authoring-ui.arcadia(66,598 bytes), folded and expanded its System, and observed the authored route restored with “All changes saved”. ui-routing-labels/arcadia-studio.exe, SHA2564D4C8163EA2A81F2D9A241921571BE3118AE57ECD2987E7088878CBCA9F50536, reopened that typed source. Its SA custom pin persisted and default labels were separated. An automatically displaced label dragged continuously; Undo worked.- Accepted executable
ui-routing-accepted/arcadia-studio.exe, SHA256E9B662788CC3979F8E883299CAF9B16917498D6F0DEAB62E02D9A6CE5C18AFB2, was operated at 1100×700 (captured frame 1102×732). A short 29-pixel bend drag and approximately 18-pixel label drag succeeded on the first attempt, with stable canvas and controls. This supersedes the earlier width-only resize trial. - The minimum-size SVG dialog copy fitted. Native export completed as
ui-routing-accepted/minimum-routing-ui.svg(2,540 bytes). Its rendered PNG (46,853 bytes) was visually inspected for the correct route, label and nesting. - A fresh independent native UI reviewer personally captured the accepted 1102×732 frame and confirmed clear controls with the custom bend and label. The reviewer also captured the readable lower SA label band in the labels checkpoint; the whole SA capture was partly occluded, so it supplements root's earlier full SA captures rather than replacing them. No unresolved material UI or correctness finding remained after this review.
These trials close the routing authoring, persistence, hierarchy/port workshop, export and supported-size acceptance tasks. The accepted window still contains an unsaved demo trial; the separately saved OA and typed workshop fixtures above are the durable evidence. No unperformed external-endpoint variant is implied by the observed one-function and whole-System movement trials.
Original Capella comparison: Format > Line Style > Oblique then a segment drag
created a real bend without changing Audio Signal/FOP1/FIP1 endpoints. The
rectilinear-corner attempt did not move. See release-capella-workflow-benchmark.md
for the performed versus merely observed operations.
Performance and reusable trial
Independent measurement used 100 nodes, 150 edges and eight pins per edge:
| Profile | Maximum single-edge preview | Settled full solve |
|---|---|---|
| Debug | 16.4 ms | 863 ms |
| Release | 2.4 ms | 119 ms |
The release settled solve slightly misses the initial 100 ms target. Drag preview is much cheaper, but these measurements do not establish a universal latency guarantee. The 1500-edge fixture checks bounded-budget path consistency, not a claimed interactive performance target at that size.
Run cargo run --locked -p oa-core --example routing_workshop to regenerate
examples/routing-workshop.arcadia and .json. The generator builds twice to
check deterministic identities/layout, validates the model and routes, and
reloads both serializations for equality. Generation and strict example Clippy
passed. Its focused OA and SA architecture views each have three participants
and 12 visible cards; OA has seven interactions and SA has seven functional plus
five component exchanges. Real functional/component ports include Standard and
Flow exchanges. @sa_incident_decision joins two functions inside the Rescue
system to test common-container movement. Original semantic examples are retained.
Acceptance boundary and remaining release work
Routing code/native acceptance and independent follow-up are complete with the
scopes above, checkpointed at 23535b4. The 119 ms dense settled solve remains a
measured limitation, and arbitrary diagrams are not guaranteed to have zero
crossings. A separate QA agent is running current WSL locked workspace tests,
strict Clippy and desktop/server release builds, with results pending in
release-routing-linux.md. Linux runtime/package acceptance, source-project
production integration, direct behavior editing and the broader first-release
work remain required in PLAN.md and STATE.md.