Skip to content

Plan 5: the deck chrome, corrected by executing it - #44

Merged
robertblust merged 2 commits into
mainfrom
plan-5-deck-chrome
Sep 1, 2026
Merged

Plan 5: the deck chrome, corrected by executing it#44
robertblust merged 2 commits into
mainfrom
plan-5-deck-chrome

Conversation

@robertblust

Copy link
Copy Markdown
Owner

Adds docs/superpowers/plans/2026-09-01-deck-chrome.md, alongside plans 1–4. Kept out of the three
adoption pull requests for the same reason as before: those are exactly the files each site needed.

The implementation is in robertblust.github.io#43, companygraph.github.io#44 and
guestgraph.github.io#26, with the package released as
v0.5.0. All green.

It corrected the spec before writing a line

the spec said what measuring found
the transport bar is "162 / 150 / 154 / 160 lines, four forms, all different" those are the whole region by line, comment and lockup included. By rules it is one form — byte-identical on all four decks, never drifted
the runtime is part of this tier 349 of ~420 lines are identical, but the ~65 that differ are behavioural. Deferred to its own plan, with the reason stated

Three corrections made while running it

the plan said what is true
"the 3 extra rules go in deck-lockup-two.css" a loose count of mine, treated as a budget. The CSS was cut to fit it, and the block would have written blust.ch's values over companygraph's and guestgraph's brand marks
"exclude every .name rule from the transport block" that excluded .name{display:none} — the bar's own mobile-hide — from both fences. The next sync would have deleted it
moving that rule into the transport block fixes it only if the transport fence comes after the lockup fence. Both are .name at identical specificity; a media query adds none. blust.ch emitted transport first and shipped the lockup visible on mobile

That last one is the one worth reading twice. It was my own fix for the second row, missing a
second clause — and it produced the single visible regression on a branch whose entire claim is that
nothing visible changed. Every gate was green on it: npm run verify, design:check at 41
fences, og:check, and CI. Nothing in the system looked at a narrow viewport or asserted fence
order. Eight task reviews saw it and none could: each saw one task's diff, and the defect only
exists when two correct-looking facts meet.

The plan now ships a rendered check that asserts the outcome — the lockup hidden below 860px, on
every deck, measured in a browser rather than read out of the stylesheet.

The one fence in this system that never had an end marker, and the four
decks that had never been checked at all.

It corrected the spec before writing a line. The spec put the transport bar
at "162 / 150 / 154 / 160 lines, four forms, all different". Those are the
whole region counted by line, its prose comment and the lockup included.
Compared as CSS rules it is one form, byte-identical on all four decks and
never drifted — so the fence needed no reconciliation, only an end marker
and a source.

Three corrections made while running it, each recorded here because the
plan is what put them there.

My "3 extra rules" for the lockup was a loose count, and it was treated as
a budget: the CSS was cut to fit it, and the emitted block would have
written blust.ch's values over companygraph's and guestgraph's marks —
the product mark losing its accent, its svg growing a pixel, a selector
rewritten to satisfy a test I wrote. Majority-wins reconciliation with a
majority of one, on the fence that exists because the two forms differ.

`.name{display:none}` — the bar's own statement that it drops the lockup on
mobile — was emitted by neither fence, because I told the implementer to
exclude every `.name` rule from the transport block. It would have been
deleted on the next sync.

And the fix for that was itself incomplete. Both rules are `.name` at
identical specificity, and a media query adds none, so which wins is decided
by fence order. blust.ch emitted transport first and shipped the lockup
visible on mobile — the one visible regression on a branch whose whole claim
is that nothing visible changed. Every gate was green on it: verify,
design:check at 41 fences, og:check, CI. Nothing looked at a narrow
viewport, and nothing asserted fence order.

The runtime is deliberately not here. 349 of ~420 lines are identical on all
four decks, but the ~65 that differ are behavioural — one site's language
buttons stop propagation, one binds two extra keys, one resolves audio clips
lazily where another assumes them. Each has a reason. That is a plan's worth
of judgment, not a paragraph in this one.
@robertblust
robertblust merged commit aacf300 into main Sep 1, 2026
1 check passed
@robertblust
robertblust deleted the plan-5-deck-chrome branch September 1, 2026 04:11
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