stylegallery 0.1.9 → 0.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -114,24 +114,1468 @@ Context: Viewport-shell patterns regress silently when a layout change hands scr
114
114
 
115
115
  Use case: not applicable.
116
116
 
117
- Warrant: A browser render oracle loads a faithful demo of the pattern at three widths and asserts the body is the only scroll owner, the document root does not overflow, Tab order matches DOM order, reduced motion shows no running infinite animation, and axe-core reports no serious or critical violation.
117
+ Warrant: The Conservator renders the pattern doc's CSS block verbatim around stress content at three widths and asserts the body is the only scroll owner, the document root does not overflow, Tab order matches DOM order, reduced motion shows no running infinite animation, and axe-core reports no serious or critical violation; removing the body's `overflow` declaration makes the scroll-owner check fail.
118
118
 
119
- Evidence family: `validator`, `rendered`.
119
+ Evidence family: `validator`, `screenshot`, `accessibility`.
120
120
 
121
- Verification protocol: `node scripts/check-pattern-oracle.mjs --json` renders the demo fixture and fails when any width breaks the contract; `node scripts/test-check-pattern-oracle.mjs` guards the oracle with positive and negative fixtures.
121
+ Verification protocol: `node scripts/conservator.mjs --pattern scroll-body-shell --controls --json` renders the exhibit and its negative control and fails when any width breaks the contract; `node scripts/test-conservator.mjs` guards the Conservator with every exhibit and control.
122
122
 
123
123
  Implementation handoff: not applicable.
124
124
  Consumer reference: not_applicable
125
- Consumer reference reason: This pattern-oracle sample contains no consumer-specific reference record.
125
+ Consumer reference reason: This Conservator sample contains no consumer-specific reference record.
126
126
 
127
- Boundary or limitation: The oracle proves the demo's rendered layout contract on one Chromium engine; it does not prove the pattern is usable, accessible for every assistive technology, or correct in browsers it does not render.
127
+ Boundary or limitation: The Conservator proves the exhibit's rendered layout contract on one Chromium engine; it does not prove the pattern is usable, accessible for every assistive technology, or correct in browsers it does not render.
128
128
 
129
- Debt or escalation: Extend the oracle to more patterns only after measuring CI time and render stability; a flaky render is a blocking defect, not an accepted cost.
129
+ Debt or escalation: Every Layout pattern now has a Conservator exhibit and a record under [Layout Pattern Records](#layout-pattern-records); a flaky render is a blocking defect, not an accepted cost.
130
130
 
131
- Decision: pass when the oracle is green at all three widths.
132
- Evidence refs: `scripts/check-pattern-oracle.mjs`, `scripts/test-check-pattern-oracle.mjs`, `tests/fixtures/pattern-oracle/scroll-body-shell/index.html`
131
+ Decision: pass when the Conservator is green at all three widths.
132
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/scroll-body-shell`
133
133
  Verified by: auto
134
- Reviewed at: 2026-10-15
134
+ Reviewed at: 2026-10-16
135
+ Review by: not applicable
136
+ Source revision: not applicable
137
+ Conflicts with: not applicable
138
+
139
+ ## Layout Pattern Records
140
+
141
+ Records 5 onward each bind one Layout pattern's documented spatial behavior to a Conservator exhibit (`sg://conservator/<pattern>`) defined in `scripts/conservator-exhibits.mjs`; record 4 covers `scroll-body-shell`. The Conservator renders the pattern doc's CSS block verbatim, measures the behavior at the listed widths, and proves the measurement discriminates by removing one declaration the doc lists under "Properties That Break The Layout If Removed". The Registrar fails when an exhibit has no record or a record names an exhibit that does not exist.
142
+
143
+ ## Claim Record 5 - stack Layout Exhibit
144
+
145
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
146
+
147
+ Claim: Direct children of `stack` are separated by one 1rem block gap.
148
+
149
+ Context: [`stack`](../../patterns/stacking/stack.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
150
+
151
+ Use case: not applicable.
152
+
153
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `display` from `.stack` makes the `block-rhythm` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
154
+
155
+ Evidence family: `validator`, `screenshot`, `accessibility`.
156
+
157
+ Verification protocol: `node scripts/conservator.mjs --pattern stack --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
158
+
159
+ Implementation handoff: not applicable.
160
+ Consumer reference: not_applicable
161
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
162
+
163
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
164
+
165
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
166
+
167
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `block-rhythm`.
168
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/stack`
169
+ Verified by: auto
170
+ Reviewed at: 2026-10-16
171
+ Review by: not applicable
172
+ Source revision: not applicable
173
+ Conflicts with: not applicable
174
+
175
+ ## Claim Record 6 - box Layout Exhibit
176
+
177
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
178
+
179
+ Claim: Content inside `box` is inset 1rem from every edge of the box.
180
+
181
+ Context: [`box`](../../patterns/containment/box.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
182
+
183
+ Use case: not applicable.
184
+
185
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `padding` from `.box` makes the `box-inset` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
186
+
187
+ Evidence family: `validator`, `screenshot`, `accessibility`.
188
+
189
+ Verification protocol: `node scripts/conservator.mjs --pattern box --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
190
+
191
+ Implementation handoff: not applicable.
192
+ Consumer reference: not_applicable
193
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
194
+
195
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
196
+
197
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
198
+
199
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `box-inset`.
200
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/box`
201
+ Verified by: auto
202
+ Reviewed at: 2026-10-16
203
+ Review by: not applicable
204
+ Source revision: not applicable
205
+ Conflicts with: not applicable
206
+
207
+ ## Claim Record 7 - center Layout Exhibit
208
+
209
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
210
+
211
+ Claim: `center` caps its content box at 64rem, centers itself in wider space, and keeps 1rem inline gutters.
212
+
213
+ Context: [`center`](../../patterns/centering/center.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
214
+
215
+ Use case: not applicable.
216
+
217
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `margin-inline` from `.center` makes the `center-centered` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
218
+
219
+ Evidence family: `validator`, `screenshot`, `accessibility`.
220
+
221
+ Verification protocol: `node scripts/conservator.mjs --pattern center --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
222
+
223
+ Implementation handoff: not applicable.
224
+ Consumer reference: not_applicable
225
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
226
+
227
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
228
+
229
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
230
+
231
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `center-centered`.
232
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/center`
233
+ Verified by: auto
234
+ Reviewed at: 2026-10-16
235
+ Review by: not applicable
236
+ Source revision: not applicable
237
+ Conflicts with: not applicable
238
+
239
+ ## Claim Record 8 - cluster Layout Exhibit
240
+
241
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
242
+
243
+ Claim: `cluster` items keep a 0.75rem gap and wrap onto new rows instead of overflowing.
244
+
245
+ Context: [`cluster`](../../patterns/in-line-grouping/cluster.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
246
+
247
+ Use case: not applicable.
248
+
249
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `flex-wrap` from `.cluster` makes the `wrap-containment` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
250
+
251
+ Evidence family: `validator`, `screenshot`, `accessibility`.
252
+
253
+ Verification protocol: `node scripts/conservator.mjs --pattern cluster --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
254
+
255
+ Implementation handoff: not applicable.
256
+ Consumer reference: not_applicable
257
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
258
+
259
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
260
+
261
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
262
+
263
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `wrap-containment`.
264
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/cluster`
265
+ Verified by: auto
266
+ Reviewed at: 2026-10-16
267
+ Review by: not applicable
268
+ Source revision: not applicable
269
+ Conflicts with: not applicable
270
+
271
+ ## Claim Record 9 - content-limiter Layout Exhibit
272
+
273
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
274
+
275
+ Claim: `content-limiter` caps prose at a 70ch measure plus 1rem gutters and centers it.
276
+
277
+ Context: [`content-limiter`](../../patterns/containment/content-limiter.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
278
+
279
+ Use case: not applicable.
280
+
281
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `max-inline-size` from `.content_limiter` makes the `limiter-measure` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
282
+
283
+ Evidence family: `validator`, `screenshot`, `accessibility`.
284
+
285
+ Verification protocol: `node scripts/conservator.mjs --pattern content-limiter --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
286
+
287
+ Implementation handoff: not applicable.
288
+ Consumer reference: not_applicable
289
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
290
+
291
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
292
+
293
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
294
+
295
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `limiter-measure`.
296
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/content-limiter`
297
+ Verified by: auto
298
+ Reviewed at: 2026-10-16
299
+ Review by: not applicable
300
+ Source revision: not applicable
301
+ Conflicts with: not applicable
302
+
303
+ ## Claim Record 10 - super-center Layout Exhibit
304
+
305
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
306
+
307
+ Claim: `super-center` places its child at the center of a viewport-tall region on both axes.
308
+
309
+ Context: [`super-center`](../../patterns/centering/super-center.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
310
+
311
+ Use case: not applicable.
312
+
313
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `place-items` from `.super_center` makes the `super-center-both` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
314
+
315
+ Evidence family: `validator`, `screenshot`, `accessibility`.
316
+
317
+ Verification protocol: `node scripts/conservator.mjs --pattern super-center --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
318
+
319
+ Implementation handoff: not applicable.
320
+ Consumer reference: not_applicable
321
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
322
+
323
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
324
+
325
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
326
+
327
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `super-center-both`.
328
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/super-center`
329
+ Verified by: auto
330
+ Reviewed at: 2026-10-16
331
+ Review by: not applicable
332
+ Source revision: not applicable
333
+ Conflicts with: not applicable
334
+
335
+ ## Claim Record 11 - icon-frame Layout Exhibit
336
+
337
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
338
+
339
+ Claim: `icon-frame` is a 2.5rem square slot with its icon centered.
340
+
341
+ Context: [`icon-frame`](../../patterns/media-fit/icon-frame.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
342
+
343
+ Use case: not applicable.
344
+
345
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `place-items` from `.icon_frame` makes the `icon-frame-center` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
346
+
347
+ Evidence family: `validator`, `screenshot`, `accessibility`.
348
+
349
+ Verification protocol: `node scripts/conservator.mjs --pattern icon-frame --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
350
+
351
+ Implementation handoff: not applicable.
352
+ Consumer reference: not_applicable
353
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
354
+
355
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
356
+
357
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
358
+
359
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `icon-frame-center`.
360
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/icon-frame`
361
+ Verified by: auto
362
+ Reviewed at: 2026-10-16
363
+ Review by: not applicable
364
+ Source revision: not applicable
365
+ Conflicts with: not applicable
366
+
367
+ ## Claim Record 12 - frame Layout Exhibit
368
+
369
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
370
+
371
+ Claim: `frame` holds a 16:9 slot at full inline size and its media fills the slot regardless of the media's own ratio.
372
+
373
+ Context: [`frame`](../../patterns/media-fit/frame.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
374
+
375
+ Use case: not applicable.
376
+
377
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `aspect-ratio` from `.frame` makes the `frame-ratio` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
378
+
379
+ Evidence family: `validator`, `screenshot`, `accessibility`.
380
+
381
+ Verification protocol: `node scripts/conservator.mjs --pattern frame --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
382
+
383
+ Implementation handoff: not applicable.
384
+ Consumer reference: not_applicable
385
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
386
+
387
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers. Not measured: object-fit: cover. Cropping is a paint result; element geometry cannot tell cover from fill once the media box equals the slot.
388
+
389
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
390
+
391
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `frame-ratio`.
392
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/frame`
393
+ Verified by: auto
394
+ Reviewed at: 2026-10-16
395
+ Review by: not applicable
396
+ Source revision: not applicable
397
+ Conflicts with: not applicable
398
+
399
+ ## Claim Record 13 - cover Layout Exhibit
400
+
401
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
402
+
403
+ Claim: `cover` is at least viewport tall and gives its central region all space between the header and footer rows.
404
+
405
+ Context: [`cover`](../../patterns/viewport-shell/cover.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
406
+
407
+ Use case: not applicable.
408
+
409
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `min-block-size` from `.cover` makes the `cover-fill` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
410
+
411
+ Evidence family: `validator`, `screenshot`, `accessibility`.
412
+
413
+ Verification protocol: `node scripts/conservator.mjs --pattern cover --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
414
+
415
+ Implementation handoff: not applicable.
416
+ Consumer reference: not_applicable
417
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
418
+
419
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
420
+
421
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
422
+
423
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `cover-fill`.
424
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/cover`
425
+ Verified by: auto
426
+ Reviewed at: 2026-10-16
427
+ Review by: not applicable
428
+ Source revision: not applicable
429
+ Conflicts with: not applicable
430
+
431
+ ## Claim Record 14 - sidebar Layout Exhibit
432
+
433
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
434
+
435
+ Claim: `sidebar` keeps an 18rem sidebar beside a wider primary region and wraps them when the primary would fall below 16rem.
436
+
437
+ Context: [`sidebar`](../../patterns/split-sidebar/sidebar.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
438
+
439
+ Use case: not applicable.
440
+
441
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `flex-wrap` from `.sidebar` makes the `sidebar-wrap` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
442
+
443
+ Evidence family: `validator`, `screenshot`, `accessibility`.
444
+
445
+ Verification protocol: `node scripts/conservator.mjs --pattern sidebar --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
446
+
447
+ Implementation handoff: not applicable.
448
+ Consumer reference: not_applicable
449
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
450
+
451
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
452
+
453
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
454
+
455
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `sidebar-wrap`.
456
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/sidebar`
457
+ Verified by: auto
458
+ Reviewed at: 2026-10-16
459
+ Review by: not applicable
460
+ Source revision: not applicable
461
+ Conflicts with: not applicable
462
+
463
+ ## Claim Record 15 - switcher Layout Exhibit
464
+
465
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
466
+
467
+ Claim: `switcher` lays all items in one row when the container is at least 40rem and stacks all of them otherwise, never a partial row.
468
+
469
+ Context: [`switcher`](../../patterns/split-sidebar/switcher.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
470
+
471
+ Use case: not applicable.
472
+
473
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `flex-basis` from `.switcher_item` makes the `switcher-all-or-none` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
474
+
475
+ Evidence family: `validator`, `screenshot`, `accessibility`.
476
+
477
+ Verification protocol: `node scripts/conservator.mjs --pattern switcher --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
478
+
479
+ Implementation handoff: not applicable.
480
+ Consumer reference: not_applicable
481
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
482
+
483
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
484
+
485
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
486
+
487
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `switcher-all-or-none`.
488
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/switcher`
489
+ Verified by: auto
490
+ Reviewed at: 2026-10-16
491
+ Review by: not applicable
492
+ Source revision: not applicable
493
+ Conflicts with: not applicable
494
+
495
+ ## Claim Record 16 - media-object Layout Exhibit
496
+
497
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
498
+
499
+ Claim: `media-object` keeps a 6rem media slot top-aligned beside its content when both fit and wraps the content below otherwise.
500
+
501
+ Context: [`media-object`](../../patterns/split-sidebar/media-object.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
502
+
503
+ Use case: not applicable.
504
+
505
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `flex-wrap` from `.media_object` makes the `media-wrap` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
506
+
507
+ Evidence family: `validator`, `screenshot`, `accessibility`.
508
+
509
+ Verification protocol: `node scripts/conservator.mjs --pattern media-object --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
510
+
511
+ Implementation handoff: not applicable.
512
+ Consumer reference: not_applicable
513
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
514
+
515
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
516
+
517
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
518
+
519
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `media-wrap`.
520
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/media-object`
521
+ Verified by: auto
522
+ Reviewed at: 2026-10-16
523
+ Review by: not applicable
524
+ Source revision: not applicable
525
+ Conflicts with: not applicable
526
+
527
+ ## Claim Record 17 - split-nav Layout Exhibit
528
+
529
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
530
+
531
+ Claim: `split-nav` holds primary links at the inline start and pushes secondary links to the inline end.
532
+
533
+ Context: [`split-nav`](../../patterns/in-line-grouping/split-nav.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
534
+
535
+ Use case: not applicable.
536
+
537
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `margin-inline-start` from `.split_nav_secondary` makes the `split-nav-ends` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
538
+
539
+ Evidence family: `validator`, `screenshot`, `accessibility`.
540
+
541
+ Verification protocol: `node scripts/conservator.mjs --pattern split-nav --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
542
+
543
+ Implementation handoff: not applicable.
544
+ Consumer reference: not_applicable
545
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
546
+
547
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
548
+
549
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
550
+
551
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `split-nav-ends`.
552
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/split-nav`
553
+ Verified by: auto
554
+ Reviewed at: 2026-10-16
555
+ Review by: not applicable
556
+ Source revision: not applicable
557
+ Conflicts with: not applicable
558
+
559
+ ## Claim Record 18 - holy-grail Layout Exhibit
560
+
561
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
562
+
563
+ Claim: `holy-grail` spans header and footer across three columns and keeps left, main, and right side by side from 48rem, stacks all five regions in one column in DOM order below 48rem without inline overflow, and fills the viewport block size.
564
+
565
+ Context: [`holy-grail`](../../patterns/viewport-shell/holy-grail.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
566
+
567
+ Use case: not applicable.
568
+
569
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `grid-template` from `.holy_grail` makes the `holy-grail-columns` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
570
+
571
+ Evidence family: `validator`, `screenshot`, `accessibility`.
572
+
573
+ Verification protocol: `node scripts/conservator.mjs --pattern holy-grail --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
574
+
575
+ Implementation handoff: not applicable.
576
+ Consumer reference: not_applicable
577
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
578
+
579
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers. The negative control removes the base three-column `grid-template`, which the 48rem breakpoint overrides at 320px, so it fails at 768 and 1440 only.
580
+
581
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
582
+
583
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `holy-grail-columns`.
584
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/holy-grail`
585
+ Verified by: auto
586
+ Reviewed at: 2026-10-16
587
+ Review by: not applicable
588
+ Source revision: not applicable
589
+ Conflicts with: not applicable
590
+
591
+ ## Claim Record 19 - sticky-footer Layout Exhibit
592
+
593
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
594
+
595
+ Claim: `sticky-footer` keeps the footer at the viewport's block end when content is short.
596
+
597
+ Context: [`sticky-footer`](../../patterns/viewport-shell/sticky-footer.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
598
+
599
+ Use case: not applicable.
600
+
601
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `min-block-size` from `.sticky_footer` makes the `sticky-footer-end` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
602
+
603
+ Evidence family: `validator`, `screenshot`, `accessibility`.
604
+
605
+ Verification protocol: `node scripts/conservator.mjs --pattern sticky-footer --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
606
+
607
+ Implementation handoff: not applicable.
608
+ Consumer reference: not_applicable
609
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
610
+
611
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
612
+
613
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
614
+
615
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `sticky-footer-end`.
616
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/sticky-footer`
617
+ Verified by: auto
618
+ Reviewed at: 2026-10-16
619
+ Review by: not applicable
620
+ Source revision: not applicable
621
+ Conflicts with: not applicable
622
+
623
+ ## Claim Record 20 - sticky-header Layout Exhibit
624
+
625
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
626
+
627
+ Claim: `sticky-header` stays pinned at the viewport's block start while the document scrolls.
628
+
629
+ Context: [`sticky-header`](../../patterns/viewport-shell/sticky-header.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
630
+
631
+ Use case: not applicable.
632
+
633
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `position` from `.sticky_header` makes the `sticky-header-pinned` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
634
+
635
+ Evidence family: `validator`, `screenshot`, `accessibility`.
636
+
637
+ Verification protocol: `node scripts/conservator.mjs --pattern sticky-header --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
638
+
639
+ Implementation handoff: not applicable.
640
+ Consumer reference: not_applicable
641
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
642
+
643
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
644
+
645
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
646
+
647
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `sticky-header-pinned`.
648
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/sticky-header`
649
+ Verified by: auto
650
+ Reviewed at: 2026-10-16
651
+ Review by: not applicable
652
+ Source revision: not applicable
653
+ Conflicts with: not applicable
654
+
655
+ ## Claim Record 21 - fixed-sidenav-shell Layout Exhibit
656
+
657
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
658
+
659
+ Claim: `fixed-sidenav-shell` keeps a 16rem navigation column in place while only the main region scrolls.
660
+
661
+ Context: [`fixed-sidenav-shell`](../../patterns/viewport-shell/fixed-sidenav-shell.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
662
+
663
+ Use case: not applicable.
664
+
665
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `overflow` from `.fixed_sidenav_shell_main` makes the `sidenav-scroll-owner` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
666
+
667
+ Evidence family: `validator`, `screenshot`, `accessibility`.
668
+
669
+ Verification protocol: `node scripts/conservator.mjs --pattern fixed-sidenav-shell --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
670
+
671
+ Implementation handoff: not applicable.
672
+ Consumer reference: not_applicable
673
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
674
+
675
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
676
+
677
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
678
+
679
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `sidenav-scroll-owner`.
680
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/fixed-sidenav-shell`
681
+ Verified by: auto
682
+ Reviewed at: 2026-10-16
683
+ Review by: not applicable
684
+ Source revision: not applicable
685
+ Conflicts with: not applicable
686
+
687
+ ## Claim Record 22 - sticky-aside Layout Exhibit
688
+
689
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
690
+
691
+ Claim: `sticky-aside` keeps a 16rem aside visible 1rem from the viewport's block start during long reads.
692
+
693
+ Context: [`sticky-aside`](../../patterns/split-sidebar/sticky-aside.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
694
+
695
+ Use case: not applicable.
696
+
697
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `position` from `.sticky_aside_side` makes the `sticky-aside-pinned` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
698
+
699
+ Evidence family: `validator`, `screenshot`, `accessibility`.
700
+
701
+ Verification protocol: `node scripts/conservator.mjs --pattern sticky-aside --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
702
+
703
+ Implementation handoff: not applicable.
704
+ Consumer reference: not_applicable
705
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
706
+
707
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
708
+
709
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
710
+
711
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `sticky-aside-pinned`.
712
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/sticky-aside`
713
+ Verified by: auto
714
+ Reviewed at: 2026-10-16
715
+ Review by: not applicable
716
+ Source revision: not applicable
717
+ Conflicts with: not applicable
718
+
719
+ ## Claim Record 23 - ram-grid Layout Exhibit
720
+
721
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
722
+
723
+ Claim: `ram-grid` repeats as many equal columns of at least 16rem as fit and collapses to one full-width column below that.
724
+
725
+ Context: [`ram-grid`](../../patterns/grid-repetition/ram-grid.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
726
+
727
+ Use case: not applicable.
728
+
729
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `display` from `.ram_grid` makes the `track-count` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
730
+
731
+ Evidence family: `validator`, `screenshot`, `accessibility`.
732
+
733
+ Verification protocol: `node scripts/conservator.mjs --pattern ram-grid --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
734
+
735
+ Implementation handoff: not applicable.
736
+ Consumer reference: not_applicable
737
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
738
+
739
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
740
+
741
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
742
+
743
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `track-count`.
744
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/ram-grid`
745
+ Verified by: auto
746
+ Reviewed at: 2026-10-16
747
+ Review by: not applicable
748
+ Source revision: not applicable
749
+ Conflicts with: not applicable
750
+
751
+ ## Claim Record 24 - card-grid Layout Exhibit
752
+
753
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
754
+
755
+ Claim: `card-grid` repeats as many equal columns of at least 18rem as fit and collapses to one full-width column below that.
756
+
757
+ Context: [`card-grid`](../../patterns/grid-repetition/card-grid.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
758
+
759
+ Use case: not applicable.
760
+
761
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `grid-template-columns` from `.card_grid` makes the `track-count` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
762
+
763
+ Evidence family: `validator`, `screenshot`, `accessibility`.
764
+
765
+ Verification protocol: `node scripts/conservator.mjs --pattern card-grid --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
766
+
767
+ Implementation handoff: not applicable.
768
+ Consumer reference: not_applicable
769
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
770
+
771
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
772
+
773
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
774
+
775
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `track-count`.
776
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/card-grid`
777
+ Verified by: auto
778
+ Reviewed at: 2026-10-16
779
+ Review by: not applicable
780
+ Source revision: not applicable
781
+ Conflicts with: not applicable
782
+
783
+ ## Claim Record 25 - twelve-span-grid Layout Exhibit
784
+
785
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
786
+
787
+ Claim: `twelve-span-grid` items spanning four of twelve tracks sit three to a row at equal widths.
788
+
789
+ Context: [`twelve-span-grid`](../../patterns/grid-repetition/twelve-span-grid.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
790
+
791
+ Use case: not applicable.
792
+
793
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `grid-column` from `.twelve_span_grid_item` makes the `twelve-span-thirds` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
794
+
795
+ Evidence family: `validator`, `screenshot`, `accessibility`.
796
+
797
+ Verification protocol: `node scripts/conservator.mjs --pattern twelve-span-grid --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
798
+
799
+ Implementation handoff: not applicable.
800
+ Consumer reference: not_applicable
801
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
802
+
803
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
804
+
805
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
806
+
807
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `twelve-span-thirds`.
808
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/twelve-span-grid`
809
+ Verified by: auto
810
+ Reviewed at: 2026-10-16
811
+ Review by: not applicable
812
+ Source revision: not applicable
813
+ Conflicts with: not applicable
814
+
815
+ ## Claim Record 26 - page-grid Layout Exhibit
816
+
817
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
818
+
819
+ Claim: `page-grid` centers content in a track of at most 72rem with outer gutters of at least 1rem plus the gap.
820
+
821
+ Context: [`page-grid`](../../patterns/grid-repetition/page-grid.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
822
+
823
+ Use case: not applicable.
824
+
825
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `grid-column` from `.page_grid_content` makes the `page-grid-centered` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
826
+
827
+ Evidence family: `validator`, `screenshot`, `accessibility`.
828
+
829
+ Verification protocol: `node scripts/conservator.mjs --pattern page-grid --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
830
+
831
+ Implementation handoff: not applicable.
832
+ Consumer reference: not_applicable
833
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
834
+
835
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
836
+
837
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
838
+
839
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `page-grid-centered`.
840
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/page-grid`
841
+ Verified by: auto
842
+ Reviewed at: 2026-10-16
843
+ Review by: not applicable
844
+ Source revision: not applicable
845
+ Conflicts with: not applicable
846
+
847
+ ## Claim Record 27 - grid-wrapper Layout Exhibit
848
+
849
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
850
+
851
+ Claim: `grid-wrapper` centers main content in a track of at most 64rem and lets it take the full width when space is short.
852
+
853
+ Context: [`grid-wrapper`](../../patterns/grid-repetition/grid-wrapper.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
854
+
855
+ Use case: not applicable.
856
+
857
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `grid-column` from `.grid_wrapper_main` makes the `grid-wrapper-centered` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
858
+
859
+ Evidence family: `validator`, `screenshot`, `accessibility`.
860
+
861
+ Verification protocol: `node scripts/conservator.mjs --pattern grid-wrapper --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
862
+
863
+ Implementation handoff: not applicable.
864
+ Consumer reference: not_applicable
865
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
866
+
867
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
868
+
869
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
870
+
871
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `grid-wrapper-centered`.
872
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/grid-wrapper`
873
+ Verified by: auto
874
+ Reviewed at: 2026-10-16
875
+ Review by: not applicable
876
+ Source revision: not applicable
877
+ Conflicts with: not applicable
878
+
879
+ ## Claim Record 28 - columns Layout Exhibit
880
+
881
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
882
+
883
+ Claim: `columns` flows long content into as many 18rem columns as fit and returns to one column when narrow.
884
+
885
+ Context: [`columns`](../../patterns/grid-repetition/columns.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
886
+
887
+ Use case: not applicable.
888
+
889
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `columns` from `.columns` makes the `column-flow` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
890
+
891
+ Evidence family: `validator`, `screenshot`, `accessibility`.
892
+
893
+ Verification protocol: `node scripts/conservator.mjs --pattern columns --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
894
+
895
+ Implementation handoff: not applicable.
896
+ Consumer reference: not_applicable
897
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
898
+
899
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
900
+
901
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
902
+
903
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `column-flow`.
904
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/columns`
905
+ Verified by: auto
906
+ Reviewed at: 2026-10-16
907
+ Review by: not applicable
908
+ Source revision: not applicable
909
+ Conflicts with: not applicable
910
+
911
+ ## Claim Record 29 - deconstructed-pancake Layout Exhibit
912
+
913
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
914
+
915
+ Claim: `deconstructed-pancake` items stretch to fill each row and wrap when a 16rem item no longer fits.
916
+
917
+ Context: [`deconstructed-pancake`](../../patterns/in-line-grouping/deconstructed-pancake.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
918
+
919
+ Use case: not applicable.
920
+
921
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `flex` from `.deconstructed_pancake_item` makes the `pancake-stretch` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
922
+
923
+ Evidence family: `validator`, `screenshot`, `accessibility`.
924
+
925
+ Verification protocol: `node scripts/conservator.mjs --pattern deconstructed-pancake --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
926
+
927
+ Implementation handoff: not applicable.
928
+ Consumer reference: not_applicable
929
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
930
+
931
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
932
+
933
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
934
+
935
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `pancake-stretch`.
936
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/deconstructed-pancake`
937
+ Verified by: auto
938
+ Reviewed at: 2026-10-16
939
+ Review by: not applicable
940
+ Source revision: not applicable
941
+ Conflicts with: not applicable
942
+
943
+ ## Claim Record 30 - line-up Layout Exhibit
944
+
945
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
946
+
947
+ Claim: `line-up` pushes each card's footer to the card's block end so actions align across cards of different lengths.
948
+
949
+ Context: [`line-up`](../../patterns/stacking/line-up.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
950
+
951
+ Use case: not applicable.
952
+
953
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `margin-block-start` from `.line_up_footer` makes the `line-up-footers` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
954
+
955
+ Evidence family: `validator`, `screenshot`, `accessibility`.
956
+
957
+ Verification protocol: `node scripts/conservator.mjs --pattern line-up --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
958
+
959
+ Implementation handoff: not applicable.
960
+ Consumer reference: not_applicable
961
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
962
+
963
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
964
+
965
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
966
+
967
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `line-up-footers`.
968
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/line-up`
969
+ Verified by: auto
970
+ Reviewed at: 2026-10-16
971
+ Review by: not applicable
972
+ Source revision: not applicable
973
+ Conflicts with: not applicable
974
+
975
+ ## Claim Record 31 - clamped-card Layout Exhibit
976
+
977
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
978
+
979
+ Claim: `clamped-card` sizes to half the viewport, clamped between 16rem and 28rem, and centers itself.
980
+
981
+ Context: [`clamped-card`](../../patterns/containment/clamped-card.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
982
+
983
+ Use case: not applicable.
984
+
985
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `inline-size` from `.clamped_card` makes the `clamped-width` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
986
+
987
+ Evidence family: `validator`, `screenshot`, `accessibility`.
988
+
989
+ Verification protocol: `node scripts/conservator.mjs --pattern clamped-card --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
990
+
991
+ Implementation handoff: not applicable.
992
+ Consumer reference: not_applicable
993
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
994
+
995
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
996
+
997
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
998
+
999
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `clamped-width`.
1000
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/clamped-card`
1001
+ Verified by: auto
1002
+ Reviewed at: 2026-10-16
1003
+ Review by: not applicable
1004
+ Source revision: not applicable
1005
+ Conflicts with: not applicable
1006
+
1007
+ ## Claim Record 32 - fluid-styles Layout Exhibit
1008
+
1009
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
1010
+
1011
+ Claim: `fluid-styles` fills its parent up to 72rem and centers itself beyond that.
1012
+
1013
+ Context: [`fluid-styles`](../../patterns/containment/fluid-styles.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
1014
+
1015
+ Use case: not applicable.
1016
+
1017
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `inline-size` from `.fluid_styles` makes the `fluid-width` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
1018
+
1019
+ Evidence family: `validator`, `screenshot`, `accessibility`.
1020
+
1021
+ Verification protocol: `node scripts/conservator.mjs --pattern fluid-styles --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
1022
+
1023
+ Implementation handoff: not applicable.
1024
+ Consumer reference: not_applicable
1025
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
1026
+
1027
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
1028
+
1029
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
1030
+
1031
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `fluid-width`.
1032
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/fluid-styles`
1033
+ Verified by: auto
1034
+ Reviewed at: 2026-10-16
1035
+ Review by: not applicable
1036
+ Source revision: not applicable
1037
+ Conflicts with: not applicable
1038
+
1039
+ ## Claim Record 33 - split-screen Layout Exhibit
1040
+
1041
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
1042
+
1043
+ Claim: `split-screen` shows two equal panes side by side when two 20rem panes fit, stacks them otherwise, and is at least viewport tall.
1044
+
1045
+ Context: [`split-screen`](../../patterns/split-sidebar/split-screen.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
1046
+
1047
+ Use case: not applicable.
1048
+
1049
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `display` from `.split_screen` makes the `pane-reflow` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
1050
+
1051
+ Evidence family: `validator`, `screenshot`, `accessibility`.
1052
+
1053
+ Verification protocol: `node scripts/conservator.mjs --pattern split-screen --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
1054
+
1055
+ Implementation handoff: not applicable.
1056
+ Consumer reference: not_applicable
1057
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
1058
+
1059
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
1060
+
1061
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
1062
+
1063
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `pane-reflow`.
1064
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/split-screen`
1065
+ Verified by: auto
1066
+ Reviewed at: 2026-10-16
1067
+ Review by: not applicable
1068
+ Source revision: not applicable
1069
+ Conflicts with: not applicable
1070
+
1071
+ ## Claim Record 34 - list-detail Layout Exhibit
1072
+
1073
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
1074
+
1075
+ Claim: `list-detail` places list and detail side by side when two 18rem panes fit and stacks them otherwise.
1076
+
1077
+ Context: [`list-detail`](../../patterns/split-sidebar/list-detail.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
1078
+
1079
+ Use case: not applicable.
1080
+
1081
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `grid-template-columns` from `.list_detail` makes the `pane-reflow` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
1082
+
1083
+ Evidence family: `validator`, `screenshot`, `accessibility`.
1084
+
1085
+ Verification protocol: `node scripts/conservator.mjs --pattern list-detail --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
1086
+
1087
+ Implementation handoff: not applicable.
1088
+ Consumer reference: not_applicable
1089
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
1090
+
1091
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
1092
+
1093
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
1094
+
1095
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `pane-reflow`.
1096
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/list-detail`
1097
+ Verified by: auto
1098
+ Reviewed at: 2026-10-16
1099
+ Review by: not applicable
1100
+ Source revision: not applicable
1101
+ Conflicts with: not applicable
1102
+
1103
+ ## Claim Record 35 - supporting-pane Layout Exhibit
1104
+
1105
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
1106
+
1107
+ Claim: `supporting-pane` keeps the summary beside the main task when two 20rem panes fit and stacks it below otherwise.
1108
+
1109
+ Context: [`supporting-pane`](../../patterns/split-sidebar/supporting-pane.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
1110
+
1111
+ Use case: not applicable.
1112
+
1113
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `grid-template-columns` from `.supporting_pane` makes the `pane-reflow` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
1114
+
1115
+ Evidence family: `validator`, `screenshot`, `accessibility`.
1116
+
1117
+ Verification protocol: `node scripts/conservator.mjs --pattern supporting-pane --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
1118
+
1119
+ Implementation handoff: not applicable.
1120
+ Consumer reference: not_applicable
1121
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
1122
+
1123
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
1124
+
1125
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
1126
+
1127
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `pane-reflow`.
1128
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/supporting-pane`
1129
+ Verified by: auto
1130
+ Reviewed at: 2026-10-16
1131
+ Review by: not applicable
1132
+ Source revision: not applicable
1133
+ Conflicts with: not applicable
1134
+
1135
+ ## Claim Record 36 - feed Layout Exhibit
1136
+
1137
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
1138
+
1139
+ Claim: `feed` stacks repeated items with one 1rem block gap.
1140
+
1141
+ Context: [`feed`](../../patterns/stacking/feed.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
1142
+
1143
+ Use case: not applicable.
1144
+
1145
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `display` from `.feed` makes the `block-rhythm` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
1146
+
1147
+ Evidence family: `validator`, `screenshot`, `accessibility`.
1148
+
1149
+ Verification protocol: `node scripts/conservator.mjs --pattern feed --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
1150
+
1151
+ Implementation handoff: not applicable.
1152
+ Consumer reference: not_applicable
1153
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
1154
+
1155
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
1156
+
1157
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
1158
+
1159
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `block-rhythm`.
1160
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/feed`
1161
+ Verified by: auto
1162
+ Reviewed at: 2026-10-16
1163
+ Review by: not applicable
1164
+ Source revision: not applicable
1165
+ Conflicts with: not applicable
1166
+
1167
+ ## Claim Record 37 - breadcrumb Layout Exhibit
1168
+
1169
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
1170
+
1171
+ Claim: `breadcrumb` keeps a 0.5rem gap between trail items and wraps the trail instead of overflowing.
1172
+
1173
+ Context: [`breadcrumb`](../../patterns/in-line-grouping/breadcrumb.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
1174
+
1175
+ Use case: not applicable.
1176
+
1177
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `flex-wrap` from `.breadcrumb` makes the `wrap-containment` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
1178
+
1179
+ Evidence family: `validator`, `screenshot`, `accessibility`.
1180
+
1181
+ Verification protocol: `node scripts/conservator.mjs --pattern breadcrumb --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
1182
+
1183
+ Implementation handoff: not applicable.
1184
+ Consumer reference: not_applicable
1185
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
1186
+
1187
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
1188
+
1189
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
1190
+
1191
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `wrap-containment`.
1192
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/breadcrumb`
1193
+ Verified by: auto
1194
+ Reviewed at: 2026-10-16
1195
+ Review by: not applicable
1196
+ Source revision: not applicable
1197
+ Conflicts with: not applicable
1198
+
1199
+ ## Claim Record 38 - pagination Layout Exhibit
1200
+
1201
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
1202
+
1203
+ Claim: `pagination` centers its page controls in the row with a 0.5rem gap.
1204
+
1205
+ Context: [`pagination`](../../patterns/in-line-grouping/pagination.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
1206
+
1207
+ Use case: not applicable.
1208
+
1209
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `justify-content` from `.pagination` makes the `pagination-centered` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
1210
+
1211
+ Evidence family: `validator`, `screenshot`, `accessibility`.
1212
+
1213
+ Verification protocol: `node scripts/conservator.mjs --pattern pagination --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
1214
+
1215
+ Implementation handoff: not applicable.
1216
+ Consumer reference: not_applicable
1217
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
1218
+
1219
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
1220
+
1221
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
1222
+
1223
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `pagination-centered`.
1224
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/pagination`
1225
+ Verified by: auto
1226
+ Reviewed at: 2026-10-16
1227
+ Review by: not applicable
1228
+ Source revision: not applicable
1229
+ Conflicts with: not applicable
1230
+
1231
+ ## Claim Record 39 - badge-list Layout Exhibit
1232
+
1233
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
1234
+
1235
+ Claim: `badge-list` starts each label at the item's inline start and ends each count at the item's inline end.
1236
+
1237
+ Context: [`badge-list`](../../patterns/in-line-grouping/badge-list.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
1238
+
1239
+ Use case: not applicable.
1240
+
1241
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `justify-content` from `.badge_list_item` makes the `badge-ends` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
1242
+
1243
+ Evidence family: `validator`, `screenshot`, `accessibility`.
1244
+
1245
+ Verification protocol: `node scripts/conservator.mjs --pattern badge-list --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
1246
+
1247
+ Implementation handoff: not applicable.
1248
+ Consumer reference: not_applicable
1249
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
1250
+
1251
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
1252
+
1253
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
1254
+
1255
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `badge-ends`.
1256
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/badge-list`
1257
+ Verified by: auto
1258
+ Reviewed at: 2026-10-16
1259
+ Review by: not applicable
1260
+ Source revision: not applicable
1261
+ Conflicts with: not applicable
1262
+
1263
+ ## Claim Record 40 - step-nav Layout Exhibit
1264
+
1265
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
1266
+
1267
+ Claim: `step-nav` stacks steps with one 0.75rem block gap.
1268
+
1269
+ Context: [`step-nav`](../../patterns/stacking/step-nav.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
1270
+
1271
+ Use case: not applicable.
1272
+
1273
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `gap` from `.step_nav` makes the `block-rhythm` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
1274
+
1275
+ Evidence family: `validator`, `screenshot`, `accessibility`.
1276
+
1277
+ Verification protocol: `node scripts/conservator.mjs --pattern step-nav --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
1278
+
1279
+ Implementation handoff: not applicable.
1280
+ Consumer reference: not_applicable
1281
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
1282
+
1283
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
1284
+
1285
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
1286
+
1287
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `block-rhythm`.
1288
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/step-nav`
1289
+ Verified by: auto
1290
+ Reviewed at: 2026-10-16
1291
+ Review by: not applicable
1292
+ Source revision: not applicable
1293
+ Conflicts with: not applicable
1294
+
1295
+ ## Claim Record 41 - tab-strip Layout Exhibit
1296
+
1297
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
1298
+
1299
+ Claim: `tab-strip` keeps peer tabs in a row with a 0.75rem gap and wraps them instead of overflowing.
1300
+
1301
+ Context: [`tab-strip`](../../patterns/in-line-grouping/tab-strip.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
1302
+
1303
+ Use case: not applicable.
1304
+
1305
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `flex-wrap` from `.tab_strip` makes the `wrap-containment` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
1306
+
1307
+ Evidence family: `validator`, `screenshot`, `accessibility`.
1308
+
1309
+ Verification protocol: `node scripts/conservator.mjs --pattern tab-strip --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
1310
+
1311
+ Implementation handoff: not applicable.
1312
+ Consumer reference: not_applicable
1313
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
1314
+
1315
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
1316
+
1317
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
1318
+
1319
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `wrap-containment`.
1320
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/tab-strip`
1321
+ Verified by: auto
1322
+ Reviewed at: 2026-10-16
1323
+ Review by: not applicable
1324
+ Source revision: not applicable
1325
+ Conflicts with: not applicable
1326
+
1327
+ ## Claim Record 42 - reel Layout Exhibit
1328
+
1329
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
1330
+
1331
+ Claim: `reel` keeps items in one row of columns at least 14rem wide and scrolls that row itself, so the document root never overflows inline.
1332
+
1333
+ Context: [`reel`](../../patterns/in-line-grouping/reel.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
1334
+
1335
+ Use case: not applicable.
1336
+
1337
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `overflow-x` from `.reel` makes the `reel-scroll-owner` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
1338
+
1339
+ Evidence family: `validator`, `screenshot`, `accessibility`.
1340
+
1341
+ Verification protocol: `node scripts/conservator.mjs --pattern reel --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
1342
+
1343
+ Implementation handoff: not applicable.
1344
+ Consumer reference: not_applicable
1345
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
1346
+
1347
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
1348
+
1349
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
1350
+
1351
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `reel-scroll-owner`.
1352
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/reel`
1353
+ Verified by: auto
1354
+ Reviewed at: 2026-10-16
1355
+ Review by: not applicable
1356
+ Source revision: not applicable
1357
+ Conflicts with: not applicable
1358
+
1359
+ ## Claim Record 43 - imposter Layout Exhibit
1360
+
1361
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
1362
+
1363
+ Claim: `imposter` covers exactly its anchor, not the page, and centers its content over the anchor without leaving document order.
1364
+
1365
+ Context: [`imposter`](../../patterns/overlay-exception/imposter.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
1366
+
1367
+ Use case: not applicable.
1368
+
1369
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `position` from `.imposter_anchor` makes the `imposter-cover` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
1370
+
1371
+ Evidence family: `validator`, `screenshot`, `accessibility`.
1372
+
1373
+ Verification protocol: `node scripts/conservator.mjs --pattern imposter --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
1374
+
1375
+ Implementation handoff: not applicable.
1376
+ Consumer reference: not_applicable
1377
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
1378
+
1379
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
1380
+
1381
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
1382
+
1383
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `imposter-cover`.
1384
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/imposter`
1385
+ Verified by: auto
1386
+ Reviewed at: 2026-10-16
1387
+ Review by: not applicable
1388
+ Source revision: not applicable
1389
+ Conflicts with: not applicable
1390
+
1391
+ ## Claim Record 44 - panel-layout Layout Exhibit
1392
+
1393
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
1394
+
1395
+ Claim: `panel-layout` places main and utility panels side by side when two 22rem panels fit and stacks them otherwise.
1396
+
1397
+ Context: [`panel-layout`](../../patterns/viewport-shell/panel-layout.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
1398
+
1399
+ Use case: not applicable.
1400
+
1401
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `display` from `.panel_layout` makes the `pane-reflow` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
1402
+
1403
+ Evidence family: `validator`, `screenshot`, `accessibility`.
1404
+
1405
+ Verification protocol: `node scripts/conservator.mjs --pattern panel-layout --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
1406
+
1407
+ Implementation handoff: not applicable.
1408
+ Consumer reference: not_applicable
1409
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
1410
+
1411
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
1412
+
1413
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
1414
+
1415
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `pane-reflow`.
1416
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/panel-layout`
1417
+ Verified by: auto
1418
+ Reviewed at: 2026-10-16
1419
+ Review by: not applicable
1420
+ Source revision: not applicable
1421
+ Conflicts with: not applicable
1422
+
1423
+ ## Claim Record 45 - overlay-stack Layout Exhibit
1424
+
1425
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
1426
+
1427
+ Claim: `overlay-stack` places every item in the same grid cell so they overlap from one origin.
1428
+
1429
+ Context: [`overlay-stack`](../../patterns/overlay-exception/overlay-stack.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
1430
+
1431
+ Use case: not applicable.
1432
+
1433
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `grid-area` from `.overlay_stack_item` makes the `overlay-same-cell` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
1434
+
1435
+ Evidence family: `validator`, `screenshot`, `accessibility`.
1436
+
1437
+ Verification protocol: `node scripts/conservator.mjs --pattern overlay-stack --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
1438
+
1439
+ Implementation handoff: not applicable.
1440
+ Consumer reference: not_applicable
1441
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
1442
+
1443
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
1444
+
1445
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
1446
+
1447
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `overlay-same-cell`.
1448
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/overlay-stack`
1449
+ Verified by: auto
1450
+ Reviewed at: 2026-10-16
1451
+ Review by: not applicable
1452
+ Source revision: not applicable
1453
+ Conflicts with: not applicable
1454
+
1455
+ ## Claim Record 46 - wrap-row Layout Exhibit
1456
+
1457
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
1458
+
1459
+ Claim: `wrap-row` keeps controls in rows with a 0.75rem gap and wraps them instead of overflowing.
1460
+
1461
+ Context: [`wrap-row`](../../patterns/in-line-grouping/wrap-row.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
1462
+
1463
+ Use case: not applicable.
1464
+
1465
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `flex-wrap` from `.wrap_row` makes the `wrap-containment` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
1466
+
1467
+ Evidence family: `validator`, `screenshot`, `accessibility`.
1468
+
1469
+ Verification protocol: `node scripts/conservator.mjs --pattern wrap-row --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
1470
+
1471
+ Implementation handoff: not applicable.
1472
+ Consumer reference: not_applicable
1473
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
1474
+
1475
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
1476
+
1477
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
1478
+
1479
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `wrap-containment`.
1480
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/wrap-row`
1481
+ Verified by: auto
1482
+ Reviewed at: 2026-10-16
1483
+ Review by: not applicable
1484
+ Source revision: not applicable
1485
+ Conflicts with: not applicable
1486
+
1487
+ ## Claim Record 47 - dense-grid Layout Exhibit
1488
+
1489
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
1490
+
1491
+ Claim: `dense-grid` fills as many 8rem columns as fit, even when items run out.
1492
+
1493
+ Context: [`dense-grid`](../../patterns/grid-repetition/dense-grid.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
1494
+
1495
+ Use case: not applicable.
1496
+
1497
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `display` from `.dense_grid` makes the `track-count` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
1498
+
1499
+ Evidence family: `validator`, `screenshot`, `accessibility`.
1500
+
1501
+ Verification protocol: `node scripts/conservator.mjs --pattern dense-grid --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
1502
+
1503
+ Implementation handoff: not applicable.
1504
+ Consumer reference: not_applicable
1505
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
1506
+
1507
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
1508
+
1509
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
1510
+
1511
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `track-count`.
1512
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/dense-grid`
1513
+ Verified by: auto
1514
+ Reviewed at: 2026-10-16
1515
+ Review by: not applicable
1516
+ Source revision: not applicable
1517
+ Conflicts with: not applicable
1518
+
1519
+ ## Claim Record 48 - masonry-approx Layout Exhibit
1520
+
1521
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
1522
+
1523
+ Claim: `masonry-approx` flows items into as many 14rem columns as fit and returns to one column when narrow.
1524
+
1525
+ Context: [`masonry-approx`](../../patterns/grid-repetition/masonry-approx.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
1526
+
1527
+ Use case: not applicable.
1528
+
1529
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `column-width` from `.masonry_approx` makes the `column-flow` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
1530
+
1531
+ Evidence family: `validator`, `screenshot`, `accessibility`.
1532
+
1533
+ Verification protocol: `node scripts/conservator.mjs --pattern masonry-approx --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
1534
+
1535
+ Implementation handoff: not applicable.
1536
+ Consumer reference: not_applicable
1537
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
1538
+
1539
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
1540
+
1541
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
1542
+
1543
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `column-flow`.
1544
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/masonry-approx`
1545
+ Verified by: auto
1546
+ Reviewed at: 2026-10-16
1547
+ Review by: not applicable
1548
+ Source revision: not applicable
1549
+ Conflicts with: not applicable
1550
+
1551
+ ## Claim Record 49 - main-with-rail Layout Exhibit
1552
+
1553
+ Principle: A layout pattern's documented spatial behavior must survive a real render.
1554
+
1555
+ Claim: `main-with-rail` keeps the rail beside main content when two 18rem panes fit and stacks it below otherwise.
1556
+
1557
+ Context: [`main-with-rail`](../../patterns/split-sidebar/main-with-rail.md) states this behavior in prose and CSS; without a render, a CSS or sample edit can break it while every text check stays green.
1558
+
1559
+ Use case: not applicable.
1560
+
1561
+ Warrant: The Conservator renders the doc's CSS block unchanged around stress content at 320, 768, 1440 CSS pixels and measures the claimed geometry; removing `grid-template-columns` from `.main_with_rail` makes the `pane-reflow` measurement fail, so the measurement discriminates the claimed behavior from ordinary flow.
1562
+
1563
+ Evidence family: `validator`, `screenshot`, `accessibility`.
1564
+
1565
+ Verification protocol: `node scripts/conservator.mjs --pattern main-with-rail --controls --json` renders the exhibit and its negative control; `node scripts/test-conservator.mjs` runs every exhibit and control.
1566
+
1567
+ Implementation handoff: not applicable.
1568
+ Consumer reference: not_applicable
1569
+ Consumer reference reason: This Layout pattern record selects no consumer-specific reference record.
1570
+
1571
+ Boundary or limitation: The render covers one Chromium engine, the exhibit's stress content, and 320, 768, 1440 CSS pixels at a 720px viewport height; it does not prove usability, complete accessibility, or behavior in other browsers.
1572
+
1573
+ Debt or escalation: A failing exhibit blocks the change until the pattern CSS or the doc claim is corrected; a flaky measurement is a blocking defect, not an accepted cost.
1574
+
1575
+ Decision: pass when the exhibit is green at every listed width and its negative control fails on `pane-reflow`.
1576
+ Evidence refs: `scripts/conservator.mjs`, `scripts/conservator-exhibits.mjs`, `scripts/test-conservator.mjs`, `sg://conservator/main-with-rail`
1577
+ Verified by: auto
1578
+ Reviewed at: 2026-10-16
135
1579
  Review by: not applicable
136
1580
  Source revision: not applicable
137
1581
  Conflicts with: not applicable