Skip to content

A /about redirect on flow.google.com is reported as UiSelectorDriftError (exit 23) #756

Description

@ffroliva

Measured 2026-09-08 on ci-probe while instrumenting #719. $0.

What happens

MigratedComposer.ensure_editor navigates to flow.google.com/project/<id>, the app redirects to flow.google.com/about, the settings trigger is of course never there, and 30 s later:

UiSelectorDriftError (exit 23): migrated host: the settings trigger (.settings-trigger-button)
did not become visible within 30s on https://flow.google.com/about (host=migrated)

The URL is in the message, and that is the only reason this was diagnosable at all — credit where due to whoever put it there.

Why it is wrong

/about is Flow's public landing page. Ending up there is not selector drift; it is the app telling us this session cannot open that project on this host. Reporting it as drift sends the user to "check for a newer gflow-cli release, then file a bug" over an account/session state no release will change — the same manufactured-drift-report problem #721 fixed for credit shortfalls, and #749 for agent mode. That is now three instances of one pattern, which is what makes it worth a general guard rather than a third special case.

What makes this confusing

gflow auth status --profile ci-probe reports the Flow session verified (compiledgrownth.official@gmail.com), and gflow project list --profile ci-probe works and lists the project. So every check a user would run says "you are signed in", and only the migrated editor disagrees.

Suggested shape

The check is cheap and needs no new anchor — after page.goto, the URL either is the project or it is not:

if not page.url.startswith(MIGRATED_PROJECT_URL.format(project_id=project_id)):
    # landed somewhere else entirely (/about, a sign-in page, a different project)

The existing flow_host_kind / goto-redirect plumbing from #639/#644 is next door, and goto returning before the client-side redirect is a trap already recorded on this path — so the check belongs where the run already blocks (the readiness wait), not in a new bounded wait after goto.

Not measured

  • Why ci-probe is redirected. Signed out on flow.google.com specifically, a cohort gate, or a project-access problem are all consistent with one observation. This issue is only about the reporting, not the cause — do not let a fix assert a cause it has not measured.
  • Whether the same redirect can happen mid-session on an account that worked a minute earlier.

Refs #719, #721, #749, #639

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions