Skip to content

[fix] open-core-m1: the drawer-mount check was asserting the pre-tab drawer - #233

Merged
AlexZ005 merged 1 commit into
release/nextfrom
fix/29f-open-core-m1
Sep 20, 2026
Merged

AlexZ005 merged 1 commit into
release/nextfrom
fix/29f-open-core-m1

Conversation

@AlexZ005

Copy link
Copy Markdown
Collaborator

Closes the last standing red in the roadmap-29 verification table. open-core-m1 has 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 drawer was written at 4799994 (roadmap 14 PM, 2026-07-24), when ConnectInfoDrawer rendered {#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:

state drawerTab tabs #connect-rooms-button #cloud-drawer-section
inert, closed info no no
plugin, chevron opened info Info/Rooms/Toasts yes no ← the failing read
plugin, Rooms shortcut rooms Info/Rooms/Toasts yes yes
plugin, Rooms tab rooms Info/Rooms/Toasts yes yes

Why the product stays untouched

The chevron opening on Info is deliberate — toggleInfo keeps 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-button exactly when $drawerSlot is set, and openRooms opens 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

  • the check drives #connect-rooms-button — the way the app offers the mount — and asserts the section renders on the Rooms tab;
  • new 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;
  • the e2e skill drops open-core-m1 from 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)

  • 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 together → exactly 2 FAILURES, no others; restored → 18/18

Gates

open-core-m1 16/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 build green, server down.

Nothing owed on device — this touches no rendered behaviour.

🤖 Generated with Claude Code

…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>
@AlexZ005
AlexZ005 merged commit 84fedaf into release/next Sep 20, 2026
4 checks passed
@AlexZ005
AlexZ005 deleted the fix/29f-open-core-m1 branch September 20, 2026 10:12
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.

1 participant