docs: correct the correction — absence of a .btn block does not imply the bump restyles

HistorianGateway has no local block AND no Bootstrap button call sites (all 15
buttons use the kit's .rail-btn chassis class), so the kit's .btn rule matches
nothing and bumping it changes nothing visible. My previous correction claimed the
opposite. Checking this needs two greps — declaration AND call sites — which come
apart exactly when an app doesn't use Bootstrap buttons.
This commit is contained in:
Joseph Doherty
2026-08-11 04:18:20 -04:00
parent dc6410dfad
commit baaf0a183c
3 changed files with 57 additions and 20 deletions
+28 -10
View File
@@ -246,12 +246,22 @@ foundation branch merges — all branches build independently and compose at mer
also carry app-specific *shape* declarations that predate the sweep and that the kit does not
ship; mxgw's carried `border-radius: 5px; font-weight: 500; white-space: nowrap`, and a wholesale
delete would have silently dropped all three. Diff your block against the kit's before removing
**And check whether your app has one at all** — "every app carries this block" was asserted after
checking the apps that were convenient to check, and it was false. HistorianGateway has NO local
`.btn` sizing in either tree, only vendored Bootstrap, so for it the bump is a **visible change**
(buttons shrink from Bootstrap's 1rem to `.85rem`), not the no-op cleanup the note promised. The
per-repo check is one grep for `bs-btn-font-size` excluding `lib/bootstrap` — under ten seconds,
against a claim that was wrong for 20% of the family.
**And check whether your app has one at all — with TWO greps, because one is misleading.**
"Every app carries this block" was false (HistorianGateway has none). But the obvious correction —
"then the kit now supplies sizing it was missing, so the bump restyles it" — was **also false**, and
is the more instructive error. Two independent questions:
```bash
grep -rl bs-btn-font-size src | grep -v lib/bootstrap # (1) declares its own sizing?
grep -rhoE 'class="[^"]*"' <components> \
| grep -cE '(^|["[:space:]])btn([[:space:]]|"|-)' # (2) uses Bootstrap buttons?
```
They come apart exactly when an app doesn't use Bootstrap buttons. HistorianGateway answers no to
both — all 15 buttons carry the kit's `.rail-btn` chassis class — so the kit's `.btn` rule matches
nothing and the bump is invisible there. Zero call sites ⇒ invisible regardless of the block;
non-zero and no block ⇒ the restyle warning holds. Ask (2) before telling anyone their UI will
change, and note that a "Bootstrap-free" app is precisely the profile that yields zero call sites.
anything: four of the five apps' blocks were pure sizing and safe to delete outright, one was
not, and the difference is invisible unless you look. Two of the four that were safe deleted
@@ -372,10 +382,18 @@ each time the claim was made in good faith by someone who had genuinely looked a
granted on a property nobody re-derived. It was a Bootstrap host and *was* affected.
The shape is identical every time: a universal claim, a partial check, and a conclusion that happens
to be convenient. The fix is not more caution, it is a **cheap per-member check that actually runs** —
one grep, ten seconds — plus stating the claim's scope honestly ("verified in these three; not checked
in the other two") when the check hasn't run. Note that all three were caught by someone re-examining
their own earlier assertion, never by the assertion being challenged.
to be convenient. The fix is not more caution, it is a **cheap per-member check that actually runs**,
plus stating the claim's scope honestly ("verified in these three; not checked in the other two")
when it hasn't. All three were caught by someone re-examining their own earlier assertion, never by
the assertion being challenged.
**A correction is not automatically safer than the claim it replaces.** The first item above was
corrected to "HistorianGateway has no block, so the bump restyles it" — which was *also* wrong, for a
new reason: it had no Bootstrap button call sites either, so the kit's rule matches nothing. The
correction inherited the original's flaw (one grep, one inference) while feeling rigorous because it
was a retraction. When you correct a set-wide claim, the replacement needs the *same* evidentiary bar
you now know the original lacked — and a wrong correction is worse than the wrong claim, because it
arrives with the authority of a self-caught mistake.
**Record what you could not exercise rather than rounding it up.** HistorianGateway proved 2 of its
4 truncation sites live and said so: `sf.Error` needs a genuine drain failure, which needs a