Implementer: Claude Opus 5.5 (claude-opus-5-5), default reasoning setting. Commits 51a9282 (pairs) and d33262a (inline; ce479f6 re-pushed tree-identical after a fleet flake). Hub CI on d33262a: passed, 48 of 48.
rst-stats="pairs" (51a9282)
Red: the example in, no CSS
--- FAIL: TestPairsPutTwoStatsOnALineOnAPhone (1.17s)
phone_variants_browser_test.go:155: / at 390: stat 3's inline-start hairline is 1px, want 0px
phone_variants_browser_test.go:160: / at 390: stat 3's top hairline is 0px, want 1px
phone_variants_browser_test.go:160: / at 390: stat 4's top hairline is 0px, want 1px
phone_variants_browser_test.go:140: / at 320: the stats' tops are 1.0, 126.6, 206.8, 310.5; stats 1 and 2 must share a line, and 3 and 4
phone_variants_browser_test.go:150: / at 320: stat 1 (1.0 to 304.0) is not at the inline start of stat 2 (1.0 to 304.0)
phone_variants_browser_test.go:150: / at 320: stat 3 (1.0 to 304.0) is not at the inline start of stat 4 (1.0 to 304.0)
phone_variants_browser_test.go:155: / at 320: stat 3's inline-start hairline is 1px, want 0px
phone_variants_browser_test.go:160: / at 320: stat 3's top hairline is 0px, want 1px
phone_variants_browser_test.go:160: / at 320: stat 4's top hairline is 0px, want 1px
phone_variants_browser_test.go:155: /rtl at 390: stat 3's inline-start hairline is 1px, want 0px
phone_variants_browser_test.go:160: /rtl at 390: stat 3's top hairline is 0px, want 1px
phone_variants_browser_test.go:160: /rtl at 390: stat 4's top hairline is 0px, want 1px
phone_variants_browser_test.go:140: /rtl at 320: the stats' tops are 1.0, 126.6, 206.8, 310.5; stats 1 and 2 must share a line, and 3 and 4
phone_variants_browser_test.go:150: /rtl at 320: stat 1 (1.0 to 304.0) is not at the inline start of stat 2 (1.0 to 304.0)
phone_variants_browser_test.go:150: /rtl at 320: stat 3 (1.0 to 304.0) is not at the inline start of stat 4 (1.0 to 304.0)
phone_variants_browser_test.go:155: /rtl at 320: stat 3's inline-start hairline is 1px, want 0px
phone_variants_browser_test.go:160: /rtl at 320: stat 3's top hairline is 0px, want 1px
phone_variants_browser_test.go:160: /rtl at 320: stat 4's top hairline is 0px, want 1px
Green
TestPairsPutTwoStatsOnALineOnAPhone ok, with the plan's run: Pairs|OneOh|TestEveryThemeAndShellRendersAsTheBaseline|TestBothSpellings|TestEveryExampleStateMeetsTheFloors|TestANarrowRowGivesItsTitleTheWidth ok (360 s); go test . ./example ./check ./internal/gallery ./internal/www ./internal/build ok; gallery TestPreviewFrameHeightsFit|TestEveryExamplePassesAxe ok (432 s).
Mutations (scratch worktree, each reverted)
=== P1 odd cells keep the leading hairline
--- FAIL: TestPairsPutTwoStatsOnALineOnAPhone (1.14s)
phone_variants_browser_test.go:155: / at 390: stat 1's inline-start hairline is 1px, want 0px
phone_variants_browser_test.go:155: / at 390: stat 3's inline-start hairline is 1px, want 0px
phone_variants_browser_test.go:155: / at 320: stat 1's inline-start hairline is 1px, want 0px
phone_variants_browser_test.go:155: / at 320: stat 3's inline-start hairline is 1px, want 0px
phone_variants_browser_test.go:155: /rtl at 390: stat 1's inline-start hairline is 1px, want 0px
phone_variants_browser_test.go:155: /rtl at 390: stat 3's inline-start hairline is 1px, want 0px
phone_variants_browser_test.go:155: /rtl at 320: stat 1's inline-start hairline is 1px, want 0px
phone_variants_browser_test.go:155: /rtl at 320: stat 3's inline-start hairline is 1px, want 0px
FAIL
FAIL amadan.net/rastrillo/fiesta/check 1.147s
FAIL
=== P2 no rule above the second pair
--- FAIL: TestPairsPutTwoStatsOnALineOnAPhone (1.23s)
phone_variants_browser_test.go:160: / at 390: stat 3's top hairline is 0px, want 1px
phone_variants_browser_test.go:160: / at 390: stat 4's top hairline is 0px, want 1px
phone_variants_browser_test.go:160: / at 320: stat 3's top hairline is 0px, want 1px
phone_variants_browser_test.go:160: / at 320: stat 4's top hairline is 0px, want 1px
phone_variants_browser_test.go:160: /rtl at 390: stat 3's top hairline is 0px, want 1px
phone_variants_browser_test.go:160: /rtl at 390: stat 4's top hairline is 0px, want 1px
phone_variants_browser_test.go:160: /rtl at 320: stat 3's top hairline is 0px, want 1px
phone_variants_browser_test.go:160: /rtl at 320: stat 4's top hairline is 0px, want 1px
FAIL
FAIL amadan.net/rastrillo/fiesta/check 1.237s
FAIL
=== P3 no grid
--- FAIL: TestPairsPutTwoStatsOnALineOnAPhone (1.15s)
phone_variants_browser_test.go:140: / at 320: the stats' tops are 1.0, 118.6, 190.8, 287.5; stats 1 and 2 must share a line, and 3 and 4
phone_variants_browser_test.go:150: / at 320: stat 1 (1.0 to 304.0) is not at the inline start of stat 2 (1.0 to 304.0)
phone_variants_browser_test.go:150: / at 320: stat 3 (1.0 to 304.0) is not at the inline start of stat 4 (1.0 to 304.0)
phone_variants_browser_test.go:140: /rtl at 320: the stats' tops are 1.0, 118.6, 190.8, 287.5; stats 1 and 2 must share a line, and 3 and 4
phone_variants_browser_test.go:150: /rtl at 320: stat 1 (1.0 to 304.0) is not at the inline start of stat 2 (1.0 to 304.0)
phone_variants_browser_test.go:150: /rtl at 320: stat 3 (1.0 to 304.0) is not at the inline start of stat 4 (1.0 to 304.0)
FAIL
FAIL amadan.net/rastrillo/fiesta/check 1.159s
FAIL
=== P4 border-left instead of border-inline-start
--- FAIL: TestPairsPutTwoStatsOnALineOnAPhone (1.16s)
phone_variants_browser_test.go:155: /rtl at 390: stat 3's inline-start hairline is 1px, want 0px
phone_variants_browser_test.go:155: /rtl at 320: stat 3's inline-start hairline is 1px, want 0px
FAIL
FAIL amadan.net/rastrillo/fiesta/check 1.165s
FAIL
=== P5 the pairs grid outside the phone block
--- FAIL: TestPairsPutTwoStatsOnALineOnAPhone (1.14s)
phone_variants_browser_test.go:176: at 1280 rst-stats="pairs" paints differently from the same markup unmarked (pixel 632,1 differs by 25): the value must change a phone only
phone_variants_browser_test.go:177: at 1280 rst-stats="pairs" in Arabic paints differently from the same markup unmarked (pixel 1,1 differs by 16): the value must change a phone only
FAIL
FAIL amadan.net/rastrillo/fiesta/check 1.148s
FAIL
=== P6 pairs written for every band
--- FAIL: TestEveryNewRuleRequiresNewMarkup (0.05s)
baseline_test.go:723: css/tokens.css: @media (max-width: 34rem) { .rst-stats { display: grid } } is new and .rst-stats: no compound positively requires a name 1.0 does not style; no newOnOldMarkup entry is this selector
baseline_test.go:723: css/tokens.css: @media (max-width: 34rem) { .rst-stats { grid-template-columns: 1fr 1fr } } is new and .rst-stats: no compound positively requires a name 1.0 does not style; no newOnOldMarkup entry is this selector
baseline_test.go:723: css/tokens.css: @media (max-width: 34rem) { [rst-stats] { display: grid } } is new and [rst-stats]: no compound positively requires a name 1.0 does not style; no newOnOldMarkup entry is this selector
baseline_test.go:723: css/tokens.css: @media (max-width: 34rem) { [rst-stats] { grid-template-columns: 1fr 1fr } } is new and [rst-stats]: no compound positively requires a name 1.0 does not style; no newOnOldMarkup entry is this selector
FAIL
FAIL amadan.net/rastrillo/fiesta/check 0.060s
FAIL
=== P7 class twin dropped
--- FAIL: TestNoAttributeSelectorIsAnOrphan (0.01s)
spelling_test.go:286: tokens.css:1472: "[rst-stats~=\"pairs\"]" is an attribute selector with no class selector it is the twin of.
FAIL
FAIL amadan.net/rastrillo/fiesta/check 2.444s
FAIL
=== P8 fixture without the class-spelled band
--- FAIL: TestBothSpellingsComputeTheSameStyles (3.86s)
markup_v3_browser_test.go:228: tokens.css styles 1 classes the fixture never renders, so their pairing is unproven: rst-stats--pairs
markup_v3_browser_test.go:228: the fixture renders all 236 rst- classes tokens.css styles
markup_v3_browser_test.go:251: comparing 170 computed properties, over the element and its ::before and ::after
markup_v3_browser_test.go:279: at 1280px: 1156 elements in the fixture
markup_v3_browser_test.go:302: at 1280px: the control pass differs on 1138 of 1156 elements, so the stylesheet is reaching the fixture
markup_v3_browser_test.go:279: at 390px: 1156 elements in the fixture
markup_v3_browser_test.go:302: at 390px: the control pass differs on 1138 of 1156 elements, so the stylesheet is reaching the fixture
FAIL
FAIL amadan.net/rastrillo/fiesta/check 3.859s
FAIL
rst-status="inline" (d33262a)
Red: the example in, no CSS
--- FAIL: TestAnInlineStatusStaysOnTheNamesLine (2.18s)
phone_variants_browser_test.go:283: / at 390: the status starts at 63.6, off the row's first line at 13.0
phone_variants_browser_test.go:288: / at 390: the status starts 42.4px along the row, before the name ends at 275.9px; the line must read lead, name, status, action
phone_variants_browser_test.go:305: /long at 390: the status starts 42.4px along, inside the long name's column, which ends at 275.9px
phone_variants_browser_test.go:308: /long at 390: under a long name the status starts at 111.6 and the action at 13.0; both must stay on the first line at 13.0
phone_variants_browser_test.go:319: /bare at 390: with no lead and no action the status ends 95.8px along a row whose content ends at 349.0px
phone_variants_browser_test.go:322: /bare at 390: the status starts at 63.6, off the first line at 13.0
phone_variants_browser_test.go:283: / at 320: the status starts at 108.6, off the row's first line at 13.0
phone_variants_browser_test.go:288: / at 320: the status starts 42.4px along the row, before the name ends at 205.9px; the line must read lead, name, status, action
phone_variants_browser_test.go:305: /long at 320: the status starts 42.4px along, inside the long name's column, which ends at 205.9px
phone_variants_browser_test.go:308: /long at 320: under a long name the status starts at 156.6 and the action at 13.0; both must stay on the first line at 13.0
phone_variants_browser_test.go:319: /bare at 320: with no lead and no action the status ends 95.8px along a row whose content ends at 279.0px
phone_variants_browser_test.go:322: /bare at 320: the status starts at 63.6, off the first line at 13.0
phone_variants_browser_test.go:283: /-rtl at 390: the status starts at 63.6, off the row's first line at 13.0
phone_variants_browser_test.go:288: /-rtl at 390: the status starts 42.4px along the row, before the name ends at 275.9px; the line must read lead, name, status, action
phone_variants_browser_test.go:305: /long-rtl at 390: the status starts 42.4px along, inside the long name's column, which ends at 275.9px
phone_variants_browser_test.go:308: /long-rtl at 390: under a long name the status starts at 111.6 and the action at 13.0; both must stay on the first line at 13.0
phone_variants_browser_test.go:319: /bare-rtl at 390: with no lead and no action the status ends 95.8px along a row whose content ends at 349.0px
phone_variants_browser_test.go:322: /bare-rtl at 390: the status starts at 63.6, off the first line at 13.0
phone_variants_browser_test.go:283: /-rtl at 320: the status starts at 108.6, off the row's first line at 13.0
phone_variants_browser_test.go:288: /-rtl at 320: the status starts 42.4px along the row, before the name ends at 205.9px; the line must read lead, name, status, action
phone_variants_browser_test.go:305: /long-rtl at 320: the status starts 42.4px along, inside the long name's column, which ends at 205.9px
phone_variants_browser_test.go:308: /long-rtl at 320: under a long name the status starts at 156.6 and the action at 13.0; both must stay on the first line at 13.0
phone_variants_browser_test.go:319: /bare-rtl at 320: with no lead and no action the status ends 95.8px along a row whose content ends at 279.0px
phone_variants_browser_test.go:322: /bare-rtl at 320: the status starts at 63.6, off the first line at 13.0
Green
TestAnInlineStatusStaysOnTheNamesLine ok, with Pairs|InlineStatus|OnTheNamesLine|OneOh|TestEveryThemeAndShellRendersAsTheBaseline|TestANarrowRowGivesItsTitleTheWidth|TestBothSpellings|TestEveryExampleStateMeetsTheFloors|TestEveryTapTargetIsAtLeast44Pixels ok (380 s); the plain packages ok; gallery heights and axe ok (447 s).
Mutations
I4 stays green and is reported, not hidden: in these rows the name's flex basis is 0, so a flex line keeps lead, status and action on line one exactly as the grid does. The two differ only when lead, status and action together overflow the row, which is a status the page should not have marked short.
=== I1 inline rule dropped grid-row
--- FAIL: TestAnInlineStatusStaysOnTheNamesLine (2.37s)
phone_variants_browser_test.go:283: / at 390: the status starts at 108.6, off the row's first line at 13.0
phone_variants_browser_test.go:288: / at 390: the status starts 0.0px along the row, before the name ends at 275.9px; the line must read lead, name, status, action
phone_variants_browser_test.go:305: /long at 390: the status starts 0.0px along, inside the long name's column, which ends at 275.9px
phone_variants_browser_test.go:308: /long at 390: under a long name the status starts at 156.6 and the action at 13.0; both must stay on the first line at 13.0
phone_variants_browser_test.go:319: /bare at 390: with no lead and no action the status ends 95.8px along a row whose content ends at 349.0px
phone_variants_browser_test.go:322: /bare at 390: the status starts at 63.6, off the first line at 13.0
phone_variants_browser_test.go:283: / at 320: the status starts at 153.6, off the row's first line at 13.0
phone_variants_browser_test.go:288: / at 320: the status starts 0.0px along the row, before the name ends at 205.9px; the line must read lead, name, status, action
phone_variants_browser_test.go:305: /long at 320: the status starts 0.0px along, inside the long name's column, which ends at 205.9px
phone_variants_browser_test.go:308: /long at 320: under a long name the status starts at 249.6 and the action at 13.0; both must stay on the first line at 13.0
phone_variants_browser_test.go:319: /bare at 320: with no lead and no action the status ends 95.8px along a row whose content ends at 279.0px
=== I2 status put before the name
--- FAIL: TestAnInlineStatusStaysOnTheNamesLine (2.37s)
phone_variants_browser_test.go:288: / at 390: the name starts 107.8px along the row, before the lead ends at 275.9px; the line must read lead, name, status, action
phone_variants_browser_test.go:288: / at 390: the status starts 0.0px along the row, before the name ends at 233.5px; the line must read lead, name, status, action
phone_variants_browser_test.go:305: /long at 390: the status starts 0.0px along, inside the long name's column, which ends at 233.5px
phone_variants_browser_test.go:319: /bare at 390: with no lead and no action the status ends 95.8px along a row whose content ends at 349.0px
phone_variants_browser_test.go:288: / at 320: the name starts 107.8px along the row, before the lead ends at 205.9px; the line must read lead, name, status, action
phone_variants_browser_test.go:288: / at 320: the status starts 0.0px along the row, before the name ends at 163.5px; the line must read lead, name, status, action
phone_variants_browser_test.go:305: /long at 320: the status starts 0.0px along, inside the long name's column, which ends at 163.5px
phone_variants_browser_test.go:319: /bare at 320: with no lead and no action the status ends 95.8px along a row whose content ends at 279.0px
phone_variants_browser_test.go:288: /-rtl at 390: the name starts 107.8px along the row, before the lead ends at 275.9px; the line must read lead, name, status, action
phone_variants_browser_test.go:288: /-rtl at 390: the status starts 0.0px along the row, before the name ends at 233.5px; the line must read lead, name, status, action
phone_variants_browser_test.go:305: /long-rtl at 390: the status starts 0.0px along, inside the long name's column, which ends at 233.5px
=== I3 inline rule outside the phone block
--- FAIL: TestAnInlineStatusStaysOnTheNamesLine (3.39s)
phone_variants_browser_test.go:296: / at 390: the name is 117.7px wide with 125.7px left by the others; its column must take the room
phone_variants_browser_test.go:296: / at 320: the name is 47.7px wide with 55.7px left by the others; its column must take the room
phone_variants_browser_test.go:296: /-rtl at 390: the name is 117.7px wide with 125.7px left by the others; its column must take the room
phone_variants_browser_test.go:296: /-rtl at 320: the name is 47.7px wide with 55.7px left by the others; its column must take the room
FAIL
FAIL amadan.net/rastrillo/fiesta/check 3.391s
FAIL
=== I4 a wrapping flex line instead of the grid placement
ok amadan.net/rastrillo/fiesta/check 2.297s
=== I5 written for every status
--- FAIL: TestEveryNewRuleRequiresNewMarkup (0.05s)
baseline_test.go:723: css/tokens.css: @media (max-width: 34rem) { [rst-row]:has(> [rst-status]) > [rst-status]:last-child { grid-column: auto } } is new and [rst-row]:has(> [rst-status]) > [rst-status]:last-child: no compound positively requires a name 1.0 does not style; in :has() the alternative "> [rst-status]" matches 1.0 markup; no newOnOldMarkup entry is this selector
baseline_test.go:723: css/tokens.css: @media (max-width: 34rem) { [rst-row]:has(> [rst-status]) > [rst-status]:last-child { grid-row: 1 } } is new and [rst-row]:has(> [rst-status]) > [rst-status]:last-child: no compound positively requires a name 1.0 does not style; in :has() the alternative "> [rst-status]" matches 1.0 markup; no newOnOldMarkup entry is this selector
--- FAIL: TestNoAttributeSelectorIsAnOrphan (0.01s)
spelling_test.go:286: tokens.css:1468: "[rst-row]:has(> [rst-status]) > [rst-status]:last-child" is an attribute selector with no class selector it is the twin of.
FAIL
FAIL amadan.net/rastrillo/fiesta/check 0.061s
FAIL
=== I6 fixture without the class-spelled inline status
--- FAIL: TestBothSpellingsComputeTheSameStyles (3.96s)
markup_v3_browser_test.go:228: tokens.css styles 1 classes the fixture never renders, so their pairing is unproven: rst-status--inline
markup_v3_browser_test.go:228: the fixture renders all 237 rst- classes tokens.css styles
markup_v3_browser_test.go:251: comparing 170 computed properties, over the element and its ::before and ::after
markup_v3_browser_test.go:279: at 1280px: 1163 elements in the fixture
markup_v3_browser_test.go:302: at 1280px: the control pass differs on 1145 of 1163 elements, so the stylesheet is reaching the fixture
markup_v3_browser_test.go:279: at 390px: 1163 elements in the fixture
markup_v3_browser_test.go:302: at 390px: the control pass differs on 1145 of 1163 elements, so the stylesheet is reaching the fixture
FAIL
FAIL amadan.net/rastrillo/fiesta/check 3.961s
FAIL
I3 (redone, visible at 1280): phone_variants_browser_test.go:334: at 1280 rst-status="inline" (/) paints differently from the same markup unmarked (pixel 1091,22 differs by 12): the value must change a phone only
I3 (redone, visible at 1280): phone_variants_browser_test.go:334: at 1280 rst-status="inline" (/long) paints differently from the same markup unmarked (pixel 1091,22 differs by 12): the value must change a phone only
I3 (redone, visible at 1280): phone_variants_browser_test.go:334: at 1280 rst-status="inline" (/bare) paints differently from the same markup unmarked (pixel 1152,22 differs by 12): the value must change a phone only
I3 (redone, visible at 1280): phone_variants_browser_test.go:334: at 1280 rst-status="inline" (/-rtl) paints differently from the same markup unmarked (pixel 156,22 differs by 3): the value must change a phone only
I3 (redone, visible at 1280): FAIL
I3 (redone, visible at 1280): FAIL amadan.net/rastrillo/fiesta/check 2.180s
I3 (redone, visible at 1280): FAIL
(The first I3, a margin outside the phone block, was invisible at 1280 since the name's flex space absorbs it; redone with padding.)
Hub
- 51a9282: 46 of 48; two
internal/www bunting timing tests (TestAScrollAfterIdleWakesTheBunting, TestAShakeMovesTheBuntingMoreThanAScroll) failed on the fleet, passed locally, and passed on the next run. - ce479f6: 47 of 48;
TestThePhoneIndexAndTheWayBack (scripts-off Tab after Back) failed once on the fleet, passed 3 of 3 locally. - d33262a (same tree as ce479f6): passed, 48 of 48; fiesta.css 23,822 gzipped.
Size (gzip 6)
| | before | pairs | inline | |---|---|---|---| | fiesta.css | 23,724 | 23,801 (+77 of 150) | 23,822 (+21 of 100) | | fiesta-plain.css | 23,005 | 23,082 (+77) | 23,102 (+20) | | fiesta-signal.css | 23,118 | 23,195 (+77) | 23,216 (+21) |