206 lines
12 KiB
Markdown
206 lines
12 KiB
Markdown
# 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.log` and
|
||
`routing-native-final-build.log` record 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.log` records 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 `30c7db1` ran 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.log`
|
||
records 104 passing desktop tests, including fast drags with no final motion
|
||
event. `routing-final-clippy.log` records strict full-workspace Clippy and
|
||
`routing-final-build.log` records 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:
|
||
|
||
1. Selected an edge without moving the canvas and dragged an automatic segment
|
||
to create a non-retracing detour.
|
||
2. Dragged the label while the polyline stayed unchanged, selected a node, then
|
||
clicked the displaced label to reselect its edge.
|
||
3. Dragged an existing bend; exercised Undo/Redo, Remove bend and undo, then
|
||
Reset routing and undo.
|
||
4. Folded the source container: the promoted edge routed automatically and
|
||
route editing was disabled. Expansion restored the saved pin and label.
|
||
5. Saved `routing-authoring-ui.arcadia` and exported `routing-authoring-ui.svg`
|
||
in 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:
|
||
|
||
1. 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.
|
||
2. Root rendered the actual exported SVG separately to PNG using Sharp and
|
||
visually inspected the correct authored detour, label, bounds and nesting.
|
||
3. 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.
|
||
4. 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.
|
||
5. 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:
|
||
|
||
1. 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”.
|
||
2. `ui-routing-labels/arcadia-studio.exe`, SHA256
|
||
`4D4C8163EA2A81F2D9A241921571BE3118AE57ECD2987E7088878CBCA9F50536`, reopened
|
||
that typed source. Its SA custom pin persisted and default labels were
|
||
separated. An automatically displaced label dragged continuously; Undo worked.
|
||
3. Accepted executable `ui-routing-accepted/arcadia-studio.exe`, SHA256
|
||
`E9B662788CC3979F8E883299CAF9B16917498D6F0DEAB62E02D9A6CE5C18AFB2`, 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.
|
||
4. 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.
|
||
5. 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.
|