Skip to content

[Bug]: the required chat-bundle-browser lane is red on main — the read-only source badge repeats the visible Goal title #7378

Open

Description

@JasonBuildAI

Problem

Since #7376 merged (c56f55307, "fix(workspace): keep source restrictions readable on narrow screens"), the chat-bundle-browser job of the required Python Tests workflow fails deterministically at its first step, Qualify the actual compiled UI, because the shipped SSR smoke throws:

AssertionError [ERR_ASSERTION]: The source badge does not repeat the visible Goal title
actual: '<div class="context-help"><button type="button" class="context-help-trigger" aria-label="Historical run · 只读" ...>
        <div class="context-help-popover" role="tooltip"><strong>Historical run · 只读</strong>
        <p>显示 Historical run 的原始记录;执行控制在原运行环境</p></div></div><small>只读</small>'

#7376 replaced the badge's span (title tooltip) with a ContextHelp whose accessible name is `${readOnlySourceLabel} · ${t("common.readOnly")}`. When the Goal title already names the source (selectedGoal.title === readOnlySourceLabel) the visible label is deliberately omitted, but the new control's aria-label and disclosure heading now repeat the title — exactly the invariant the SSR smoke guards. Screen-reader users hear the source name twice: once from the visible Goal title and once from the help button.

Impact

  • chat-bundle-browser is one of the five jobs that checks verifies (scripts/ci/review_gate.py CHECK_OUTPUT), and checks is a required dependency of pytest, so merge-gate is red for every PR whose change classification runs core tests. The failure is a pure server-rendered assertion (no browser, no timing), so it reproduces on every run.
  • PR fix(chat): preserve latest reply through layout changes #7377 (run 40297894327) shows chat-bundle-browser (1), (2) and (3) all failing at this step, and the release-artifacts build job (40297894021) fails Exercise the installed page in a real browser with the same assertion. 30 PRs were open against this main line when this report was filed, and every one of them must pass the same gate.
  • The duplication itself is user-visible to assistive technology in every read-only/historical source view whose Goal title matches the source label.

Minimal reproduction

cd apps/presentation/dashboard
npm ci --ignore-scripts
npm run -s smoke:chat-model-menu

At 93bb1ed27: exit 1 with the assertion above. With only channel-header.tsx restored to its parent 60d6f7a39, the same command exits 0 (Chat model/header: 64 bilingual model, defaults and accessible refresh assertions passed (SSR only)).

Expected behavior

The read-only source badge keeps #7376's narrow-screen help, but its persistent accessible name and visible text do not repeat the visible Goal title. The hidden disclosure may explain the source in prose once the user opens it.

Actual behavior

The badge's help trigger is labelled Historical run · 只读 and its disclosure heading repeats the same string, so the source name is announced twice and the SSR contract "The source badge does not repeat the visible Goal title" fails.

Diagnostics

  • LoopX version or commit: 93bb1ed27 (regression introduced by c56f55307, merged as fix(workspace): keep source state and folded actions readable #7376)
  • Host or runtime surface: not host-specific — Personal Workspace dashboard (browser / SSR)
  • Area: public docs or presentation surface
  • Issue origin: observed and reproduced in a real environment

Activity

  1. added 2 commits that reference this issue on Oct 26, 2026
    884b294
    0cb32b0
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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions