Skip to content

Scope the open-workspace tint to the chrome's own container - #244

Merged
max-sixty merged 1 commit into
mainfrom
fix/ci-33735071949
Sep 3, 2026
Merged

Scope the open-workspace tint to the chrome's own container#244
max-sixty merged 1 commit into
mainfrom
fix/ci-33735071949

Conversation

@leaf-agent

Copy link
Copy Markdown
Collaborator

Problem

The nightly leg of ci failed on run 33735071949 (a57ae29) with seven cases. Six are already owned by open PRs: test_a_widgets_label_takes_a_comment_inside_the_control_it_labels, test_a_closed_leaf_clears_itself_off_the_tray and test_the_leaves_tray_takes_the_keyboard by #236; the ring walk by #239's ship-review precondition standing ahead of #240's lf-shotframe fault; and both of test_page_fixture_renders[pr-walkthrough] (the 4px sideways scroll on pr-scale-groups) and test_nested_command_projections_stop_at_their_own_boundary (§ inner-worker) by #243.

The seventh is new with a57ae29 and nobody's yet:

FAILED tests/test_render_conversations.py::test_a_coined_class_cannot_reach_the_chromes_rules
AssertionError: the document-level class surface changed: widen the shared vocabulary on purpose
  Extra items in the left set:
  'lf-workspace'

#242 wrote the open workspace's tint as .lf-btn.on, .lf-btn.lf-workspace[aria-expanded="true"] in chrome-style.js, at document level. lf-workspace is worn by three controls and all three are the chrome's own — the Threads toggle built at leaf.js:817, and All leaves and Asks, which trayIs marks at trays.js:194. Every one of them is inside chromeRoot, the .lf-chrome container the private stylesheet is scoped to. So the name reached document level without being shared vocabulary, which is the seam the pinned set exists to catch — the same one #152 answered for the keycap rules.

Solution

Move the selector into the @scope (.lf-chrome) block, beside .lf-banner-more[data-lf-news], which paints the same accent face for the same kind of banner state. .lf-btn.on keeps its document-level rule, unchanged and now on its own: on is worn out in the page and is the reason that line was there before #242.

Nothing about the paint moves. Specificity is unchanged, and the one rule that could contend — .lf-banner-menu > .lf-btn { border-color: transparent }, for a workspace control folded into the overflow menu — is (0,2,0) against this selector's (0,3,0) on both sides of the move, so scope proximity never gets a say. Fixing it at the pinned set instead would have widened the shared vocabulary by a class no widget can wear, which is what the assertion's own message asks you not to do.

Testing

On this branch, rebased on fdba9e1d:

Not vacuous: deleting the scoped rule fails the workspace test at both 500 and 1200 with the resting face (rgb(238, 234, 222) where the active face is rgb(255, 254, 251) under --chip) rather than passing by construction. chrome-style.js is served rather than bundled, so there is nothing to re-vendor, and no user-visible pixel changes, so there is no before/after shot to hand over.


Automated fix for failed run

The banner's workspace controls are the chrome's own, so the rule that
tints the open one belongs in the @scope block rather than at document
level, where it widened the shared class vocabulary by a name no widget
wears.
@leaf-agent

Copy link
Copy Markdown
Collaborator Author

The nightly leg failed again on run 33738376174 (fdba9e1, Let contents maps use the open margin), with the same seven cases as run 33735071949 — the run this PR was opened from. Same names, same assertions, nothing added and nothing dropped, so fdba9e1's theme change introduced none of them and this PR's scope is unchanged. The everyday suite and lint were green on both runs; only 🧪 Nightly suite failed.

Every one of the seven is owned by an open PR, and all six of those PRs are MERGEABLE with test, lint and review green — the queue is waiting on a merge, not on more diagnosis, so this run produced no new PR.

Ownership map for the seven, and the queue's state
Failing case Owned by
test_render_anchors.py::test_a_widgets_label_takes_a_comment_inside_the_control_it_labels #236
test_render_controls.py::test_a_closed_leaf_clears_itself_off_the_tray #236
test_render_controls.py::test_the_leaves_tray_takes_the_keyboard #236
test_render_controls.py::test_every_ring_the_layer_draws_is_shown_whole_somewhere_in_the_corpus #239's ship-review precondition, then #240's lf-shotframe fault
test_render_gate.py::test_page_fixture_renders[pr-walkthrough] #243 (the 4px sideways scroll on pr-scale-groups)
test_render_projection.py::test_nested_command_projections_stop_at_their_own_boundary #243 (§ inner-worker)
test_render_conversations.py::test_a_coined_class_cannot_reach_the_chromes_rules this PR

Queue state read at the time of writing — every PR green, every one blocked only by the admin-merge ruleset:

#236 MERGEABLE  test=SUCCESS lint=SUCCESS review=SUCCESS
#239 MERGEABLE  test=SUCCESS lint=SUCCESS review=SUCCESS
#240 MERGEABLE  test=SUCCESS lint=SUCCESS review=SUCCESS
#241 MERGEABLE  test=SUCCESS lint=SUCCESS review=SUCCESS
#243 MERGEABLE  test=SUCCESS lint=SUCCESS review=SUCCESS
#244 MERGEABLE  test=SUCCESS lint=SUCCESS review=SUCCESS

#241 covers test_render_widgets.py::test_a_wait_the_reader_would_notice_says_so_and_a_short_one_says_nothing, which did not recur on either of the last two runs; it is in the queue but not in this run's set.

@max-sixty
max-sixty merged commit b83b128 into main Sep 3, 2026
3 checks passed
@max-sixty
max-sixty deleted the fix/ci-33735071949 branch September 3, 2026 09:50
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