Skip to content

e2e: sidebar_live lets a row change what it shows, never redraw the same - #815

Merged
futurepaul merged 1 commit into
masterfrom
claude/sidebar-rows-changed
Oct 31, 2026
Merged

futurepaul merged 1 commit into
masterfrom
claude/sidebar-rows-changed

Conversation

@futurepaul

@futurepaul futurepaul commented Oct 31, 2026 •

Copy link
Copy Markdown
Collaborator

shell-ui's sidebar_live flaked in shard 2 across master's queue (pr-753, pr-783, pr-794, pr-795) and unrelated branches. #801's diagnostic named the row every time:

lost: chat:their-chat--…. When marked, its face was one avatar. Now it's a stack of two, with the same words ("Novatron DX · Their chat").

Why the row changes

  • The check's own setup registers an agent for the person (delegation::agent_of), to make an app as them.
  • By decision 44 that agent comes in beside its person in the chats shared with them. So "Their chat" (another person's chat, shared with the person and their first agent) gains a second agent, and its row gains that face.
  • The list sends that row when it next sends rows: before the rows are marked, or after. So it depends on timing.

Which side was wrong. patch redraws a row when what it shows changed: the new face. That's right. The check counted a redrawn row as lost unless its words changed, so a real change in faces read as a regression.

The change (test only). A row shown before passes if it's the same element, or if what it shows changed (its HTML). It's lost if it's gone, or redrawn showing exactly the same, which is the bug the check exists for. Its failure still names each lost row.

Evidence (local, cargo xtask e2e --only shell-ui)

  • Race forced (uncommitted: the agent registered after the rows were marked, plus 8 s): the old words-only rule kept 14 of 15, the CI failure exactly. The new rule kept 15 of 15, nothing lost.
    • That run then stopped later, in the computer-update checks, on a dropped connection at the local front door (PUT …/archived … connection closed before message completed). That's unrelated to this check.
  • This commit, run twice (no experiment): shell-ui passed 329 of 329 both times, sidebar_live included.

Complexity ledger: the check keeps each row's HTML instead of its words. No product change.

🤖 Generated with Claude Code

The check counted a row drawn again as lost unless its words changed. Its
own setup changes one: the agent it registers comes in beside its person
in the chats shared with them (decision 44), and "Their chat"'s row gains
that face whenever the list next sends the row, before the rows are
marked or after (#801's diagnostic: kept 14 of 15, that row now a stack
of two faces, the same words). A row drawn again is now kept if what it
shows changed (its HTML), and lost if drawn again the same, which is the
bug `patch` must not have.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@alexlwn123 alexlwn123 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pass at aa628ed02daffa4c635307266e1b5e54e5e50e2a.

This corrects the sidebar test's definition of a changed row. I traced it against cell/shell/shell.js::patch: unchanged DOM nodes are retained, while a changed avatar stack legitimately replaces the row without changing its text. The revised assertion still rejects identical replacements and missing original rows, excludes newly added rows from the retained count, and keeps the open-frame checks.

The change is appropriately small and reuses the existing HTML snapshot; no blocking finding. git diff HEAD^ HEAD --check passed. CI check and all four e2e shards are still in progress; I did not run the full e2e suite locally. The referenced engineering-style document is unavailable at its configured local path.

@futurepaul
futurepaul added this pull request to the merge queue Oct 31, 2026
Merged via the queue into master with commit 1ab057e Oct 31, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants