Files
ARCADIA-Studio/harness/release-staged-owner-label-20260911.md
T

4.4 KiB
Raw Blame History

Staged machine owner display correction — 2026-09-11

Owner: Codex-9e8r6t /root/palette_finish. Root authorized only the display path in crates/oa-desktop/src/behavior/creation.rs and this report. No compiler, native input, Git operations or changes to source-draft/command/recovery code were made. The existing-source chooser remains owned by its existing worker.

Observed problem and cause

On immutable GUI 52DE82 at 1100×700, root created a pending SA machine named Field team operating modes, opened Create new owner, explicitly chose SystemActor Field rescue team, then Use. The parent correctly displayed New · System actor · Field rescue team, but its ordinary owner picker also displayed Selected: Missing element — choose a replacement and a no-matching participant prompt. Root's screenshot is .local/native-qa/contextual-source-20260911-v1/sa-machine-staged-false-missing.png.

picker_view looked up every selected ID through reference_label against the accepted Project. The staged owner's reserved ID intentionally is absent from that catalog. The parent already renders d.source.label(d.owner) above the picker; that helper returns a label only when the staged draft's ID equals the currently selected ID. The incorrect warning came from the redundant accepted catalog lookup, not from a missing staged owner.

Frozen correction

Only four display changes in picker_view:

     let selected = match picker {
         Picker::Owner => d.owner,
         Picker::Context => d.context,
     };
+    let staged_owner = picker == Picker::Owner && d.source.label(selected).is_some();
     let title = match picker {
+        Picker::Owner if staged_owner => "Or choose an existing participant",
         Picker::Owner => "Owned by participant",
         Picker::Context => "Scenario context · optional",
     };
-    if let Some(id) = selected {
+    if let Some(id) = selected
+        && !staged_owner
+    {
         out = out.push(text(format!("Selected: {}", reference_label(p, id))).size(12));
         out = out.push(text(match picker {
+            Picker::Owner if staged_owner => "No existing participants match this search. The new owner above remains selected.",
             Picker::Owner => "No matching participant. Refine the search or choose Create new owner.",

The selected staged owner is shown once by the existing New label. Existing participants remain searchable/selectable as explicit alternatives. No staged record is injected into Project, choices, pagination or accepted catalog membership. The source labels, choice messages, validation, command batches, reserved IDs, commit behavior and recovery state are unchanged.

Frozen creation.rs SHA256: 0fb19be3a5688c4bd3ca3643c47a97da7e7f85add8a860cd046a0d9cb3ce9dfc. The exact delta and hash were sent to behavior_audit; release_audit is coordinating the combined source freeze and compiler gate.

Source-backed controls and native follow-up

State Result of the new condition
Owner ID equals active staged source ID New owner label remains; accepted-catalog missing row is omitted; empty search explains the new owner remains selected
Existing accepted owner selected while a different staged draft is retained State::label returns None; ordinary selected owner label and search behavior remain
Missing accepted owner ID with no matching staged ID Original reference_label missing-element warning remains
No owner selected Existing no-selection/empty-catalog guidance remains
Scenario context picker, including a stale context Owner-only condition is false; original context label, missing warning and empty-context behavior remain

These are source-path checks, not executed widget tests. No broad new test was added for this wording/condition correction, as requested. No compile or native pass is claimed here.

Root's acceptance path: on the matching rebuilt GUI, repeat the exact minimum window machine/owner route, confirm the New owner appears once without the false missing warning, and confirm search/selection of an existing owner still works. For an empty or unmatched accepted catalog, the text must distinguish existing choices from the selected staged owner. Retain a separate real missing accepted owner control in source/recovery review. The independently specified machine, owner, first-view and one-step history/source oracle remains unchanged.