Files

26 lines
5.0 KiB
Markdown
Raw Permalink Normal View History

# Source 7 desktop independent review — 6 September 2026
Read-only source review by the core contract implementer, independent of desktop implementation. No Cargo, native input, or production edits in this review. The desktop owner was still wiring tests and artifact navigation; observations refer to the named source seams, not a tested release executable.
## Concrete finding
**P2 — Selected asynchronous operation values offer output-only parameters that core rejects.** `crates/oa-desktop/src/data_values.rs::phase_allows` (around line 136) narrows Call to In/InOut and Reply to Out/InOut/Return, but its wildcard admits every direction for Asynchronous. `behavior/scenario.rs::Draft::signature` / `browsed_values` and `forms/data_fields.rs::message_value` correctly obtain the exact selected-operation signature, then pass the unchanged Asynchronous phase through the common field browser. Core `validation.rs` (around line 1926) intentionally narrows Asynchronous **when a selected signature exists** to In/InOut/Unspecified.
Reproduction: give one SA operation an In parameter and an Out or Return parameter, declare asynchronous transmission, and select that exact operation on an asynchronous BoundaryInterface message. The scenario and property value browsers offer the output-only parameter; entering its value causes Apply to reject `message_parameter_phase`. The selected allocation itself is valid. This is an authoring-option mismatch, not a core admission defect. Ordinary operation=None asynchronous messages retain their historical broader phase behavior, so globally treating every Async as Call would regress compatibility. Pass an effective input-only phase for selected operation signatures, or an explicit phase policy, consistently through roots/children/resolve/current-value presentation. Pin both editors plus ordinary Async and Reply as controls. Reported directly to root and desktop owner; runtime reproduction and fix verification remain pending.
## Bounded preview limitation, not semantic identity loss
`behavior/topology.rs` around line 930 requests at most 512 flattened preview contributions for an expanded reference, or four when collapsed. `topology/contextual.rs::preview` stops at that limit. `GraphNode::endpoint_rect` around line 781 returns the enclosing reference rectangle when an exact endpoint is absent from preview; qualified link anchoring and `selection_offset` use this fallback.
A valid link to contribution 513 can be authored via the complete scoped picker and retained exactly, but its line attaches to the outer reference even after Expand. This is **not** an authoring blocker or a semantic retarget: selected links show full From/To names and aliases in `topology/view.rs` around lines 186–188; qualified selection shows its full address and an **Open contribution definition** action around lines 191–194; the preview itself reports “N shown · M direct contributions” around `topology.rs` line 1303. The earlier 512-entry picker omission is corrected and is not repeated as a finding here.
Small presentation recommendation: identify an endpoint omitted by the expanded preview limit explicitly, or reserve a bounded row for selected exact endpoints. Preserve the deliberate folded-reference summary. Do not require unbounded expansion of repeated/nested trees. The displayed count also mixes flattened nested rows with a direct-contribution total, so it can say more shown than direct contributions; label those two populations clearly if changing this area. Whether existing text is sufficiently clear at minimum window size requires native observation; this review does not claim an observed user error.
## No additional material finding in inspected seams
- Qualified endpoint hits retain complete reference paths; root reference UUIDs are used only for local selection/visual containment. Caller-owned link edits validate through the shared core index. Repeated leaf UUIDs do not replace the selected path.
- The new `State::qualified_selection(p, owner)` filters stale transient selection through core resolution before breadcrumbs, source seeding and camera use. Authored drafts remain intact. `OpenQualified` checks the current event context, pending edit guards and successful Apply before resolving the address again in the resulting accepted model. Definition navigation is explicitly labeled as affecting all uses.
- Operation choices consume core `eligible_allocations`; exact current invalid selections remain visible for repair rather than being replaced with another allocation. Message signatures and labels consume core operation resolution. Explicit unresolved intent does not fall back to channel union. Reply displays the exact correlated Call operation and has no independent writable selection in scenario creation.
Limits: this was targeted inspection of contextual authoring/rendering/navigation and operation controls, not an audit of all semantic-review composition, checkpoint migration, accessibility, or large-model frame time. Existing focused test results were supplied by the desktop owner; no new runtime evidence was generated here.