Record published multiselect evidence and composition audit

This commit is contained in:
2026-09-23 06:08:40 -07:00
parent 2e7c39965c
commit 2737127819
7 changed files with 364 additions and 0 deletions
@@ -0,0 +1,2 @@
parent-result.json -text whitespace=cr-at-eol
*.log -text whitespace=cr-at-eol
@@ -0,0 +1,52 @@
# Published multiselect contribution: integration-owner audit
This is an **offline evidence and source review**, not combined-build or native acceptance.
Delivery is `7e348d967d1787c052a145b7448636613a6a7054`; final product source is
`f6a6010baed9e6164a1fcc7ecd58256a562827d7`, following `12a7352ddef5f69a144ead8219a50916233d63a9`
above State/attachment base `b8685416f56e53e30bd11ecf93a54cea10ac8458`.
The reviewed integration target is `f82e29d6b8ed2b5fd23ac806675d3eafe851d104`.
The parent fetched the named delivery, read all three supplied verifiers, exported the
exact committed package bytes, and ran those verifiers with Python 3 on Windows.
All three exited zero. [Raw result and exported-file pins](parent-result.json) and
the three `parent-verifier-*.log` files retain the actual outputs. Paths in that
result are historical machine-local labels, not handoff dependencies.
- Checks package: 19 closed historical runs, 134 logical files, 114 stored members,
and nine source-capsule pairs. Five historical nonzero runs remain failures.
- Native package: two historical closed runs, 393 members, 27 and 24 captures,
nine positive saved-state checks per run, and exact three-group source history.
- Source identity: every captured input and the complete filtered inventory match
the named Git trees for desktop-4 (`12a7352`, 729 inputs) and desktop-5
(`f6a6010`, 729 inputs).
These checks establish package consistency and committed-source identity. They do
not rerun a compiler, archived helper, application evaluator, or GUI; they do not
independently authenticate historical gestures. The parent also read the delivery's
verification report. Its final desktop result is reported as 1,257 passed / zero
failed / six ignored, distinct from the earlier layout-defective build. Native
movement uses an inferred bounded common delta, and contextual Add is not native
Shift-click evidence. Those limitations remain applicable.
The [independent source/composition review](../../reviews/multiselect-composition-20260923.md)
finds no established production blocker in the scoped contribution. Integration
must add `layout: None` to the new example's Diagram literal, retain the final fixed
selection strip and the target's Scenario admission, Text writer, Properties actions,
and saved-Scenario exclusions, then verify the combined behavior. The preview-cache
ordering observation is a targeted regression requirement, not a demonstrated
native bug. Full issue 29 remains open for other diagram families and aggregate
model deletion; this audit does not change ownership or acceptance.
Reproduce the upstream audits from a checkout of the delivery containing its ancestor
commits (the scripts themselves are versioned at that exact delivery):
```text
python -B harness/experiments/multiselect-20260923/checks/verify.py
python -B harness/experiments/multiselect-20260923/native/verify.py
python -B harness/experiments/multiselect-20260923/source/verify.py --repo . --checks harness/experiments/multiselect-20260923/checks
```
Upstream [verification report](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/src/commit/7e348d967d1787c052a145b7448636613a6a7054/harness/multiselect-saved-view-20260923.md)
contains the original commands, scope, historical failures, native observations,
and linked packages. The parent performed this audit without changing the active
combined or private-analysis source under test. Linux remains user-deferred.
@@ -0,0 +1,247 @@
{
"source": "7e348d967d1787c052a145b7448636613a6a7054",
"exported": [
{
"path": "harness/experiments/multiselect-20260923/.gitattributes",
"bytes": 168,
"sha256": "7d2ff3f5a8bc69a3b35c880cecbca965e38c46426f7d7e5d45e88dca7d56712c"
},
{
"path": "harness/experiments/multiselect-20260923/checks/README.md",
"bytes": 5001,
"sha256": "3f5232af2ebb12003c833e6bc6643b4858950ebf015435a9b850c6a826fe27d0"
},
{
"path": "harness/experiments/multiselect-20260923/checks/evidence.zip",
"bytes": 25914867,
"sha256": "261660dd8a5e93d917c1d36cad19d1eec0b93e312d1e0dd15f9ea16f5e11c864"
},
{
"path": "harness/experiments/multiselect-20260923/checks/files.json",
"bytes": 626,
"sha256": "e0bb93e65f988a36818de13ceab2b323ad27af7f6e96e8be87883d4d5db282de"
},
{
"path": "harness/experiments/multiselect-20260923/checks/manifest.json",
"bytes": 37083,
"sha256": "c23269443cd059895c672330720a10508ab8ecade0d3686ec3d82ff792c9b457"
},
{
"path": "harness/experiments/multiselect-20260923/checks/prepare.py",
"bytes": 4818,
"sha256": "29eedcec091874b26572530517f015ab690ed1a9040abea52248e99603ba5f25"
},
{
"path": "harness/experiments/multiselect-20260923/checks/verify.py",
"bytes": 8873,
"sha256": "c03513407073bef092d57b968f982b8ffc0c58e095f834fe7464c6a0e8454a9a"
},
{
"path": "harness/experiments/multiselect-20260923/incidents/README.md",
"bytes": 2146,
"sha256": "d5a853c62713a6c87d28acfbe28c03bd95459275d0a2eb752d978e5a9b427bc8"
},
{
"path": "harness/experiments/multiselect-20260923/incidents/files.json",
"bytes": 3246,
"sha256": "43279630dfa354de05f4bf58d10d603f7f506cdf15ae46311f4039e19d8a4ea2"
},
{
"path": "harness/experiments/multiselect-20260923/incidents/helpers/check-snapshot-2.py",
"bytes": 2494,
"sha256": "1dbfff41f07bd750d4e550660d91ae9790d2442fbfe685dc88b7f63a47f5acb8"
},
{
"path": "harness/experiments/multiselect-20260923/incidents/helpers/env.ps1",
"bytes": 621,
"sha256": "d7eb6249bef73adacdb05cebefe7ca478758c3c38de17a1731bf01f8b25dc379"
},
{
"path": "harness/experiments/multiselect-20260923/incidents/retry-baseline/result.json",
"bytes": 2758,
"sha256": "ae16cbc54bf5b6054750ef082f47bf0a26ee2dfb7bce46f19c8fd2c1ac622d7f"
},
{
"path": "harness/experiments/multiselect-20260923/incidents/retry-baseline/started.json",
"bytes": 2356,
"sha256": "e172a36f0872d49a8fe0f7200fb56d597b71fd1849dc9902d53ac1813a3c7d4a"
},
{
"path": "harness/experiments/multiselect-20260923/incidents/retry-baseline/stderr.log",
"bytes": 0,
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"path": "harness/experiments/multiselect-20260923/incidents/retry-baseline/stdout.log",
"bytes": 441,
"sha256": "12842cc4e483e2546f5c8615b17fe72c5fe07f3fb4440469071433c82d9a9b30"
},
{
"path": "harness/experiments/multiselect-20260923/incidents/run-2-baseline-runtime-environment/result.json",
"bytes": 2765,
"sha256": "539b950952461cc300876dbc45fa9ee02a9ecefb6d712fce6b74bad3fa701b30"
},
{
"path": "harness/experiments/multiselect-20260923/incidents/run-2-baseline-runtime-environment/source/oa/activities/activity_activity_a.arcadia",
"bytes": 474,
"sha256": "9bf7c5637d87c97213cf869118e942e8a29a67b429fa58e4de42235bba0980ee"
},
{
"path": "harness/experiments/multiselect-20260923/incidents/run-2-baseline-runtime-environment/source/oa/activities/activity_activity_b.arcadia",
"bytes": 286,
"sha256": "152007669b7c570674aff99615a48a6f557be50f88bbbb3a5edc20b423c79a1f"
},
{
"path": "harness/experiments/multiselect-20260923/incidents/run-2-baseline-runtime-environment/source/oa/activities/activity_activity_c.arcadia",
"bytes": 153,
"sha256": "d726b6b4e1200edd9ef752bb767e38d3d69dcac8eb6135d5f83c93832ff849b1"
},
{
"path": "harness/experiments/multiselect-20260923/incidents/run-2-baseline-runtime-environment/source/project.arcadia",
"bytes": 597,
"sha256": "e7bd67c5785a78766298255ed3d53ff6d65dcd24bde1570ac8a0ff45cc9dc385"
},
{
"path": "harness/experiments/multiselect-20260923/incidents/run-2-baseline-runtime-environment/source/sa/functions/function_sa_function.arcadia",
"bytes": 162,
"sha256": "1c724a9204784435e729badd4ad164b1a6b891840bb1ddc354ac1e175e3d712c"
},
{
"path": "harness/experiments/multiselect-20260923/incidents/run-2-baseline-runtime-environment/source/traceability.arcadia",
"bytes": 522,
"sha256": "26b0b10715ced7aefcde941e6d1c1a6973f174997eae989e32a25c695dfb7cd1"
},
{
"path": "harness/experiments/multiselect-20260923/incidents/run-2-baseline-runtime-environment/source/views/diagram_oa_other.arcadia",
"bytes": 315,
"sha256": "06ceef9cfdbb3ef229a22db6c48d8bb808388e027c37294648555ecbfb6bfab9"
},
{
"path": "harness/experiments/multiselect-20260923/incidents/run-2-baseline-runtime-environment/source/views/diagram_oa_view.arcadia",
"bytes": 1896,
"sha256": "4e7d47d6a03153070687136c89faf01fc6df45ae89e2695beeab2fe4872dbc88"
},
{
"path": "harness/experiments/multiselect-20260923/incidents/run-2-baseline-runtime-environment/source/views/diagram_sa_view.arcadia",
"bytes": 331,
"sha256": "c75b0fe14496631c9b017a32e277d1e5ad5b25e00e06b804fc54d950d7fb57f6"
},
{
"path": "harness/experiments/multiselect-20260923/incidents/run-2-baseline-runtime-environment/started.json",
"bytes": 2356,
"sha256": "338c14c7dc827bd4ab09009bb974ad3c481b07cdbad2437f5291b1ff67b5ba42"
},
{
"path": "harness/experiments/multiselect-20260923/incidents/run-2-baseline-runtime-environment/stderr.log",
"bytes": 0,
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"path": "harness/experiments/multiselect-20260923/incidents/run-2-baseline-runtime-environment/stdout.log",
"bytes": 0,
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"path": "harness/experiments/multiselect-20260923/native/README.md",
"bytes": 5418,
"sha256": "8d6fa25d8bd97c654e78b89194bd499637427ce027157d568215e13421b22c03"
},
{
"path": "harness/experiments/multiselect-20260923/native/evidence.zip",
"bytes": 4399281,
"sha256": "7dc3e0571179e0f67fefe3c73462308b79e4c7f7a09bbd805e0acf0e4faeb1cf"
},
{
"path": "harness/experiments/multiselect-20260923/native/files.json",
"bytes": 626,
"sha256": "17012fe240ad6ae93bd994839ad184f25727d3086e0447fb206ac5329221885a"
},
{
"path": "harness/experiments/multiselect-20260923/native/manifest.json",
"bytes": 72794,
"sha256": "de7642ad43aa881f7d984629db52ea41b62d0ebacc09260edd80a5c1fee7dd7b"
},
{
"path": "harness/experiments/multiselect-20260923/native/prepare.py",
"bytes": 7237,
"sha256": "d9d49d3082e485e670b43010822ebd3ab7a79762b36a247dcd3bdfc6b5d7f41d"
},
{
"path": "harness/experiments/multiselect-20260923/native/verify.py",
"bytes": 14703,
"sha256": "7ef5f28b6c9a43bf0361eec2d8be33a1e9f284d0ffc21b50fd09a2d082642ce3"
},
{
"path": "harness/experiments/multiselect-20260923/source/.gitattributes",
"bytes": 109,
"sha256": "aca8eef17dbab8cfedcbe18e1175cfee115802376fac4ec69e8c3320a6399d6c"
},
{
"path": "harness/experiments/multiselect-20260923/source/README.md",
"bytes": 2792,
"sha256": "b8db0c2c71e491b6179b3e57d27e5dfb23c9283894219feea328bc632603f2aa"
},
{
"path": "harness/experiments/multiselect-20260923/source/committed-desktop-4.json",
"bytes": 390,
"sha256": "47c6774bcb7d0c37c50e0ed50f8fb58ee9b55c6fcee30af488481c314a4e66e8"
},
{
"path": "harness/experiments/multiselect-20260923/source/committed-desktop-5.json",
"bytes": 390,
"sha256": "da1f08e06bd0af6512da4196618b71d0c4ecc090012f061bb82b6a36f5b7686c"
},
{
"path": "harness/experiments/multiselect-20260923/source/files.json",
"bytes": 784,
"sha256": "6876072f926d9fa4828de0b24a3899217f35779d0788feec3b78d0b370eb4ace"
},
{
"path": "harness/experiments/multiselect-20260923/source/verify-committed-inputs.py",
"bytes": 2138,
"sha256": "ac2b50a73f678456b9628684347484c013f5f9c78f054de72b74f56a34c990d5"
},
{
"path": "harness/experiments/multiselect-20260923/source/verify.py",
"bytes": 7255,
"sha256": "2ed667c127470efb669fb43d5dcdb288f891e42e10e67ef98ca4cd1125df09d1"
}
],
"runs": [
{
"command": [
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
"-B",
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\multiselect-delivery-readback-20260923\\checks\\verify.py"
],
"exit": 0,
"log": "parent-verifier-1.log",
"sha256": "7919679ddc54148b33a803e274b4941b3d63dbaf3973fc63d437a4c5823215e9"
},
{
"command": [
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
"-B",
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\multiselect-delivery-readback-20260923\\native\\verify.py"
],
"exit": 0,
"log": "parent-verifier-2.log",
"sha256": "8631c6b62cb50989aa31c512ce0d0312c59d23b10cc5b65da39d8a15bd25195e"
},
{
"command": [
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
"-B",
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\multiselect-delivery-readback-20260923\\source\\verify.py",
"--repo",
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
"--checks",
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\multiselect-delivery-readback-20260923\\checks"
],
"exit": 0,
"log": "parent-verifier-3.log",
"sha256": "10dbda291cf0e78dc7ee3e577e097c28d7b33abe9d959fa32fa4d4f50ac80a52"
}
],
"scope": "Offline committed package/source consistency only; no archived Cargo, evaluator or GUI execution."
}
@@ -0,0 +1,21 @@
core-1 recorded exit 0 inputs 722 executable records 0
core-2 recorded exit 101 inputs 729 executable records 0
core-3 recorded exit 0 inputs 729 executable records 0
desktop-1 recorded exit 101 inputs 727 executable records 0
desktop-2 recorded exit 101 inputs 728 executable records 0
desktop-3 recorded exit 0 inputs 729 executable records 0
desktop-4 recorded exit 0 inputs 729 executable records 0
desktop-5 recorded exit 0 inputs 729 executable records 0
format-1 recorded exit 0 inputs 729 executable records 0
format-2 recorded exit 0 inputs 729 executable records 0
lint-1 recorded exit 101 inputs 729 executable records 0
lint-2 recorded exit 0 inputs 729 executable records 0
lint-3 recorded exit 0 inputs 729 executable records 0
native-build-1 recorded exit 0 inputs 729 executable records 1
native-build-2 recorded exit 0 inputs 729 executable records 1
oracle-2 recorded exit 101 inputs 729 executable records 0
oracle-3 recorded exit 0 inputs 729 executable records 0
windows-build-1 recorded exit 0 inputs 729 executable records 1
windows-build-2 recorded exit 0 inputs 729 executable records 1
PASS offline consistency: {'runs': 19, 'logicalFiles': 134, 'storedMembers': 114, 'sourceCapsulePairs': 9}
Historical receipts only; no source/binary execution or native acceptance claim.
@@ -0,0 +1,4 @@
run-1 closed exit 0; 27 captures; nine positive snapshots; exact three-group source history
run-2 closed exit 0; 24 captures; nine positive snapshots; exact three-group source history
PASS native evidence byte/receipt consistency: {'runs': 2, 'members': 393}
No GUI/checker execution; actions and native acceptance require the separate parent review.
@@ -0,0 +1,3 @@
PASS exact Git tree/blobs: desktop-4 12a7352ddef5f69a144ead8219a50916233d63a9 729 captured inputs
PASS exact Git tree/blobs: desktop-5 f6a6010baed9e6164a1fcc7ecd58256a562827d7 729 captured inputs
Source identity only; no build, checkout, helper execution or native acceptance claim.
@@ -0,0 +1,35 @@
# Ordinary saved-view multiselect: source/composition review
Reviewed 2026-09-23, source only. Delivery: `7e348d967d1787c052a145b7448636613a6a7054`; final executable source: `f6a6010baed9e6164a1fcc7ecd58256a562827d7`, following `12a7352ddef5f69a144ead8219a50916233d63a9`, above `b8685416f56e53e30bd11ecf93a54cea10ac8458`. Intended integration base: `f82e29d6b8ed2b5fd23ac806675d3eafe851d104`. Inspected Git objects, actual production/test changes, and `harness/multiselect-saved-view-20260923.md`. No merge, compiler, GUI, subject edits, or Gitea writes were performed. Peer runtime receipts remain evidence for the peer pin, not a compiled combined candidate.
## Disposition
Suitable for a bounded integration attempt after the constructor repair below. I found no established production functional blocker in this source review. This is not acceptance of the combined executable or completion of all multiselect surfaces. Preserve the final fixed-height strip fix; integrating only the first feature commit reinstates a peer-observed canvas resize/refit defect.
## Definite integration repair
**New example does not construct the newer Diagram model.** At delivery `crates/oa-core/examples/multiselect_native.rs:36–46`, the `Diagram` literal has no `layout`. The combined model requires `layout: Option<DiagramLayout>` at `crates/oa-core/src/model.rs:1523`. Add `layout: None` to this ordinary fixture when integrating. Serde defaults do not supply missing fields in a Rust literal. This is a source-established compilation incompatibility for the example/all-target gate, not a demonstrated runtime defect in the peer's own base. Check new literals against the final combined types rather than assuming clean textual application implies type compatibility.
## Shared seams to preserve
A read-only comparison of the two ranges from `b868541` found five production paths changed on both sides: `oa-core/src/lib.rs` and `oa-desktop/src/{app.rs,diagram.rs,main.rs,views.rs}`. Their edited base-line intervals did not overlap. This is a hunk observation, not a performed merge or a guarantee about Git conflict resolution.
1. **App admission and reconciliation.** Delivery `app.rs:1293–1396` adds the multiselect boundary, early `DiagramSelection` envelope refusal, and post-action reconciliation. Keep the combined early Text handling and Scenario spacing/epoch admission (`f82 app.rs:1367–1427`) ahead of their side effects, plus the newer saved-Scenario architecture-action refusal. The new envelope check must coexist with these checks. `app/multiselect.rs` rejects dirty/busy/active-edit operations, requires all selected targets to be placements for Move/Hide, and rechecks full selection snapshot, context, and visible membership. It does not silently move the placement subset of a mixed selection. Nested Text dispatch calls `self.update`, so its mutating path can receive the new reconciliation; do not bypass that recursion when combining branches.
2. **Surface identity.** Retain the combined `route_context` exclusion for saved Scenarios and the saved-Scenario picker/view guard (`f82 views.rs:391–408`). The new adapter obtains its context only on `Page::Diagram` through `route_context`; Scenario/Behavior should never acquire an ordinary saved-view group merely because a Diagram record exists. State, allocation-group semantics, derived Process, and Scenario adapters remain explicitly unfinished in the delivery.
3. **Canvas and rendering.** Retain the added `selection` field and explicit `None` values in unrelated canvas fixtures; retain the combined SVG unsupported-Scenario result/error path (`f82 diagram.rs:1881–1901`). Keep delivery `views.rs:614–684`, especially the always-reserved `.height(56)` at line 682. The final mounted regression checks empty, singleton, group, and mixed selections, including a long primary name, against the same canvas bounds and fitted camera. This directly addresses the earlier conditional-strip defect.
4. **Properties and Text.** Keep the combined Properties Apply/Revert action row outside the scrolling body, Connections/Properties tab and scroll ownership, and the focused Text `SourceIndent` binding (`f82 views.rs:1209`). The new group controls belong above the diagram and explicitly say Properties edits only the primary; replacing the whole older `views.rs` would lose unrelated accepted fixes. The delivery does not change the source writer; retain combined compact/default/comment preservation and explicit-none handling in full.
5. **Transient lifetime and focus.** Keep the delivery's selection generation/scope checks, ordered pointer handling, modifier restoration through the mounted focus owner, and pending-group cancellation on viewport/context changes. Group placement moves are one `execute(Command::Batch(...))`; the core planner unions descendants and computes route translation once against the original diagram. The App rejects queued singleton Move/Delete paths while a group owns the action. These are meaningful protections, not UI-only selection decoration.
## Targeted remaining checks, not proven production bugs
**Group preview cache depends on event ordering.** Delivery `diagram.rs:549–555` caches by route context and singleton preview/route/port state, with no group snapshot or current selection/viewport validity key. `diagram/multiselect.rs:267–295` applies a crossed-threshold group preview without independently checking live selection, editable state, or viewport. A direct scene read after changing those inputs can therefore retain the old preview until input cancellation clears the cache. However, native `RedrawRequested` is handled by `DiagramCanvas::update` and reaches `group_input`, whose validity checks run first; I have not established an actual native path that bypasses that ordering. This is **not** a proven stale-commit or native rendering bug.
The existing tests `changed_viewport_or_context_retires_group_without_a_release_intent` (delivery `diagram/multiselect_tests.rs:596`) and `changed_selection_generation_rejects_press_even_after_membership_is_restored` (line 646) dispatch a release before inspecting the cleared preview. A discriminating additional check should warm the real scene cache during a group drag, change viewport or selection generation, deliver the normal mounted redraw, then assert committed geometry and no release intent. Include dirty/read-only or overlay retirement if the combined owner can suppress child updates. Harden the scene validity contract only if that trace exposes a reachable gap; a bare draw-before-update unit call alone is insufficient to claim a native failure.
After constructor repair, verify the combined application retains: ordinary group selection and fixed canvas across empty/single/group/mixed states; one-command move/hide with full-Project and source round trips, Undo/Redo, and unchanged non-active views; stale group events across Text Apply/navigation; saved-Scenario refusal and stale Scenario events without selection/history/deferred-reveal side effects; and Properties action-row/tab return behavior. Exercise OA and SA placement identities, including duplicate semantic occurrences, alongside an existing saved Scenario layout and explicit route attachments in the same project. The peer's own source/history and geometry tests are reusable evidence, but do not cover all those newer composed records.
## Evidence limits and oracle assessment
The core planner tests use explicit expected geometry/complete models for descendant union and route behavior; the App tests also compare source and history. Selection snapshots preserve exact placement/port/edge identity and a generation, preventing membership ABA from reviving a captured gesture. These checks support the claimed ordinary saved-view slice.
The native example openly derives a bounded common delta from saved placement A, then independently enumerates the expected moved set/routes and compares the complete Project. That is a useful invariant oracle, not an independent expected pointer-to-world delta. A uniformly wrong displacement could satisfy it. The handoff correctly labels this limitation; keep that wording when reusing its receipts. Native context-menu Add exercises selection through a different input path from Shift-click; mounted Shift tests provide separate evidence, and neither should be relabeled as native Shift-click observation. The final layout/refit regression and native fixed-strip observation are specifically worth preserving; passing core geometry tests alone would not have detected the original UI defect.