Skip to content

Agent verifies a current desktop UI change against a retired frontend without reconciling the source baseline #1899

Closed

Description

@yxlyx

Harness: 0.2.190 (latest: 0.2.190)
graff: 0.302.74.65 (latest: 0.302.74.65), managed engine; confirmed by the originating trace's version field
App / surface: Harness desktop, graff over ACP
Platform: macOS 26.4.1 arm64

Symptom

A current desktop UI change was implemented and verified against an obsolete frontend in an isolated checkout, without reconciling that checkout with the installed application or the current released source. The completion reported native screenshot verification and three focused passing tests, but those checks exercised the retired Rust/GPUI frontend, not the desktop frontend packaged in the current release.

This is an agent target-selection and verification-claim failure. It is not a claim that Git isolation selected an incorrect commit, that the user chose an incorrect branch, or that agents should automatically overwrite old branches. Intentional historical-version work must remain possible.

Concrete evidence

Observation Evidence
Installed desktop and latest published release Both 0.2.190, checked through application bundle metadata and the release API
Agent's actual checkout Public commit cfdaa360f71017741f485ec8f8077fe8776fae41, release tag v0.2.139
Source version visible to the agent It read the workspace manifest, which says version = "0.2.139" and includes crates/ui
Actual compilation target Retained compiler output identifies harness-ui v0.2.139; the generated example was built with cargo run -p harness-ui
Files edited crates/ui/src/edge_fade.rs and crates/ui/src/shell.rs in that historical checkout
Claimed verification Native synthetic screenshot comparison and three focused fade tests; the retained artifacts/test summaries support those checks for the historical code
Current released desktop build v0.2.190:scripts/package-macos.sh:46-48 builds/installs apps/nano's harness-nano into the application bundle
Current released workspace v0.2.190:Cargo.toml:3-24 no longer lists crates/ui; v0.2.190:apps/nano/README.md:1-7 identifies the Zig/nanoui desktop app

No comparison with the installed/released frontend or baseline mismatch disclosure appears in the inspected initial change/verification trajectory before its completion. Its screenshots and tests therefore do not establish the requested behavior in the current desktop application. The source changes remained local; this report does not claim they were shipped.

The generated GPUI screenshot helper also aborted twice before the agent corrected its capture handle and produced successful images. That is separate native-verification disruption tracked in #832; fixing that callback makes the historical screenshot possible, but does not make it a test of the current frontend.

Repro / regression-eval scenario

The observation above is from the current managed engine, not an old engine report. A fresh synthetic eval reproducer is proposed below; it was not executed in this investigation:

  1. Create a small repository with release A using a legacy-ui implementation and release B replacing it with current-ui. Make current release metadata and packaging identify B, while the execution checkout remains at A. Use only synthetic UI labels/data.
  2. Provide a current-application visual-change request without requesting historical-version work. Include a representative screenshot or fixture for B, and let the agent inspect the checkout manifest and release/package entry point.
  3. Observe whether it identifies the conflicting target before edits/heavy verification, or changes/tests A and reports those results as addressing the current application.
  4. Control: explicitly request release A; verify that the agent respects that target and does not force an upgrade.

For manual confirmation of the concrete architecture mismatch in this report, compare these immutable public files:

  • v0.2.139:Cargo.toml:3-25 — the old workspace includes crates/ui and version 0.2.139.
  • v0.2.139:crates/ui/examples/sidebar-fixture.rs:1-13,88-103 — the legacy native fixture used as the generated helper's base.
  • v0.2.190:Cargo.toml:3-24 — the released workspace no longer includes that UI crate.
  • v0.2.190:scripts/package-macos.sh:46-48 — the actual macOS package builds and installs the Nano desktop binary.

Expected behavior / proposed fix

Before applying a reported current-app UI change, reconcile the requested execution target, source revision, frontend entry point, and the scope of proposed verification. A visible version/architecture mismatch should trigger a focused explanation and target resolution, not silently become a successful test of the wrong application.

  • Preserve deliberate old-branch work and all existing changes. Do not unconditionally fetch/merge/rebase, switch branches, or discard work as a generic fix.
  • If current-app behavior is the target, use a suitable isolated current-source workspace or obtain the missing target decision when genuinely ambiguous.
  • If only historical-source verification is possible, label its version/frontend and limitation in the completion; do not imply it proves current desktop behavior.
  • Add a target-mismatch eval/control covering a replaced frontend, not merely a version-number difference. The regression should distinguish correct tests of the wrong implementation from actual task success.

Scope / root-cause confidence

The mismatch and misleading verification scope are established by source, retained build/test outputs, artifacts, and the completion trajectory. The cause of the original checkout's age, the adapter's base-selection decision, and any specific engine function responsible for missing target reconciliation have not been established. This report intentionally does not assign a speculative worktree allocator defect.

Searches of open/closed issues and open/merged PRs found no matching target-selection report. Harness #355 concerns source-context identity after a runtime handoff, not validating an obsolete frontend against a current-app request; its resolution is not evidence this issue is fixed.

No raw conversations, original task wording, local paths, usernames/hosts, model/provider names, private screenshots, or session/run identifiers are included. The image below is a rendered diagnostic summary, not the user's application screenshot.

Image

Sanitized version and frontend mismatch evidence

Activity

  1. justrach commented on Nov 14, 2026

    @justrach
    Owner

    Target-reconciliation guardrails and regression controls are included in #1900 (not yet merged); CI is green. Autonomous target-selection behavior remains unverified.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions