[fix] open-core-m1: the drawer-mount check was asserting the pre-tab drawer - #233
Merged
Merged
Conversation
…drawer The one red every lane in roadmap 29 carried as "pre-existing" is a TEST fault, not a product one. No core code changes here - `git diff -- src/` is empty. - WHEN IT STARTED: the check was written at 4799994 (roadmap 14 PM, 2026-07-24), when ConnectInfoDrawer rendered `{#if $drawerSlot}<CloudSlot ...>` inline in its single body, so opening the drawer with the chevron showed the plugin's section straight away. The NEXT DAY 4b7b8cf ("one tabbed drawer (Info/Rooms/Toasts)") moved the cloud mount behind the Rooms tab, and nobody updated the suite. It has been red for the whole life of the tabbed drawer - about two months. - MEASURED with a throwaway probe rather than inferred: plugin loaded, chevron clicked -> {drawerOpen:true, drawerTab:"info", tabs:["Info","Rooms","Toasts"], roomsBtn:true, section:false}; the Rooms shortcut or the Rooms tab clicked -> section:true, and `.cloud-slot` count 1 -> 2. Inert build: no tabs, no Rooms button, no cloud slot. - THE PRODUCT IS RIGHT and stays untouched. The chevron opening on Info is deliberate (toggleInfo keeps the last tab; the drawer's own job is connection and server info), and the plugin's content has a first-class way in: Connect grows `#connect-rooms-button` exactly when `$drawerSlot` is set, and `openRooms` opens the drawer on that tab. - THE CHECK now drives that shortcut - the way the app offers the mount - and asserts the section renders on the Rooms tab. - NEW CHECK `M1d: no Rooms affordance in the inert build`: the Rooms shortcut exists only because a plugin mounted drawer content, which is what stops the corrected check passing vacuously. 17 checks -> 18. Nothing was deleted. - The e2e skill drops open-core-m1 from both dirty-baseline lists, says where the drawer mount now lives, and records the lesson: identical-on-base only rules out YOUR diff, so when a red is pre-existing, spend two minutes on when it started and what changed then. Counterfactuals (product broken, then restored byte-identically): - removed `<CloudSlot mount={$drawerSlot} />` from the Rooms tab -> `PM: drawer section renders on the drawer Rooms tab` FAILS. - dropped `$drawerSlot &&` from Connect's Rooms-button gate -> `M1d: no Rooms affordance in the inert build` FAILS. - both breaks together: exactly 2 FAILURES, no others; restored -> 18/18. Gates: open-core-m1 16/1 -> 18/18; battery under the lock ALL PASS (ai-presets, approval-timeout, connect-states, dial-metadata, join-result, net-handshake, open-core-m1 - 7 suites, 203 checks, 399s); svelte-check 336/47 unchanged (identical by construction - no src change); vitest 178; build green server-down. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This was referenced Sep 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes the last standing red in the roadmap-29 verification table.
open-core-m1has run 16/1 for about two months; the integrator A/B'd it against pristine 1.14.0, found it identical, and filed it for its own ticket. This is that ticket.It is a test fault, not a product one.
git diff -- src/is empty.What was wrong
The check
PM: drawer section renders in the open info drawerwas written at4799994(roadmap 14 PM, 2026-07-24), whenConnectInfoDrawerrendered{#if $drawerSlot}<CloudSlot …>inline in its single body — so the chevron showed the plugin's section immediately. The next day,4b7b8cf("one tabbed drawer (Info/Rooms/Toasts)") moved the cloud mount behind the Rooms tab. The suite was never updated, and it has been red for the entire life of the tabbed drawer.Measured with a throwaway probe rather than inferred:
#connect-rooms-button#cloud-drawer-sectionWhy the product stays untouched
The chevron opening on Info is deliberate —
toggleInfokeeps the last tab, and the drawer's own job is connection and server info. The plugin's content already has a first-class way in: Connect grows#connect-rooms-buttonexactly when$drawerSlotis set, andopenRoomsopens the drawer on that tab. Auto-selecting Rooms on a plugin mount would hijack the info drawer for everyone running the cloud plugin.What changed
#connect-rooms-button— the way the app offers the mount — and asserts the section renders on the Rooms tab;M1d: no Rooms affordance in the inert build, which is what stops the corrected check passing vacuously (that button exists only because a plugin mounted drawer content). 17 checks → 18; nothing was deleted;open-core-m1from both dirty-baseline lists, records where the drawer mount now lives, and keeps the lesson: identical-on-base only rules out YOUR diff — when a red is pre-existing, spend the two minutes on when it started and what changed then.Counterfactuals (product broken, restored byte-identically)
<CloudSlot mount={$drawerSlot} />from the Rooms tab →PM: drawer section renders on the drawer Rooms tabFAILS$drawerSlot &&from Connect's Rooms-button gate →M1d: no Rooms affordance in the inert buildFAILSGates
open-core-m116/1 → 18/18. Battery under the machine lock, ALL PASS: ai-presets · approval-timeout · connect-states · dial-metadata · join-result · net-handshake · open-core-m1 (7 suites, 203 checks, 399s). svelte-check 336/47 unchanged (identical by construction). vitest 178.npm run buildgreen, server down.Nothing owed on device — this touches no rendered behaviour.
🤖 Generated with Claude Code