Commit 2d24cf8
committed
fonts gate: a SHIPPED DEFAULT that cannot resolve is a note, not a block
My own over-reach, caught by CI on the previous commit: run 34973666241 failed
with test_step1_artifacts at 49 passed / 8 failed, every failure of the form "a
thing that should pass". The suite passes 57/0 on a Mac with Office fonts
installed, so the condition was invisible locally.
Cause, reproduced exactly rather than assumed: deckkit's shipped defaults are
FONT='Calibri' / MONO='Consolas' / EQFONT='Arial', and Calibri and Consolas ship
with NEITHER macOS NOR Linux. The new gate therefore blocked essentially every
deck built with library defaults — including the CI fixtures. Quarantining the
Calibri files on this machine reproduced CI's numbers to the assertion (49/8),
and restoring the downgrade produced 57/0, so the diagnosis is measured, not
inferred.
The condition is the same either way — a substituted measurement — but the
RESPONSIBILITY is not, and only one of the two is a decision anybody made:
* a face the AUTHOR set is a choice the machine cannot honour -> block
* a face the LIBRARY chose is an environment fact about the host -> note,
naming the one-call fix (deckkit.use_platform_fonts())
A gate that fires on the whole population is not a floor, it is an outage. The
note is still a strict improvement on what existed before this batch: the
condition used to be a print() in lint_layout, in no --json and gating nothing.
DEFAULT_FACES is read from deckkit's SOURCE, not the imported module: a build
script assigns dk.FONT before the gate runs, so reading the live globals would
classify every author-set face as "shipped" and defeat the split entirely. A
test pins the derived set against deckkit's live defaults, so a future re-theme
fails loudly rather than silently blocking the new default.
Verified on a host where Calibri genuinely does not resolve: a deck in the
default face is a note and blocks nothing, while a face the author chose still
blocks on that same host. test_step1_artifacts 57/0 · new suite 20/0 ·
template-branch 12/0 · slide_background 29/0 · deck_cycle 26/0 · codex delivery
gate, gate parity and the structural guards all clean.1 parent 8488948 commit 2d24cf8
2 files changed
Lines changed: 84 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
| 49 | + | |
49 | 50 | | |
50 | 51 | | |
51 | 52 | | |
| |||
55 | 56 | | |
56 | 57 | | |
57 | 58 | | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
58 | 93 | | |
59 | 94 | | |
60 | 95 | | |
| |||
164 | 199 | | |
165 | 200 | | |
166 | 201 | | |
167 | | - | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
168 | 212 | | |
169 | 213 | | |
170 | 214 | | |
| |||
Lines changed: 39 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
199 | 199 | | |
200 | 200 | | |
201 | 201 | | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
202 | 241 | | |
203 | 242 | | |
204 | 243 | | |
| |||
0 commit comments