Task 2 (the /1/ promise gates and example.Element), commits 8ee2d35 and 7b71b5b. Local runs on docs-t1, in a detached gate worktree holding only these two commits (Task 3's uncommitted files in the shared worktree left out).
Red: new-behaviour tests against stubs
example.Element and Contents returning "", nil:
example_test.go:666: Element returned
--- FAIL: TestElementReturnsTheCarrierAsWritten (0.00s)
example_test.go:676: Contents returned
--- FAIL: TestContentsReturnsWhatLiesInside (0.00s)
example_test.go:686: Element returned "", want "<input rst-input name=\"q\">"
--- FAIL: TestElementReadsAVoidElement (0.00s)
example_test.go:705: Element of markup with no dropdown returned "" and no error
--- FAIL: TestElementRefusesAMissingCarrier (0.00s)
example_test.go:709: Element of two sibling dropdowns returned "" and no error
--- FAIL: TestElementRefusesTwoCarriers (0.00s)
example_test.go:713: Element of a dropdown cut short returned "" and no error
--- FAIL: TestElementRefusesAnUnclosedCarrier (0.00s)
example_test.go:723: Element returned
--- FAIL: TestANestedCarrierCountsOnce (0.00s)
TestTheHeaderLiftsOnlyTheSchemeMenu against the old schemeMenu:
gallery_test.go:486: the bar's scheme menu sits in a <footer rst-page-foot>: the header lifted the example's row with it
--- FAIL: TestTheHeaderLiftsOnlyTheSchemeMenu (0.14s)
declarationsOf returning nil, requiresNewMarkup returning false:
baseline_test.go:40: declarationsOf read 0 records:
baseline_test.go:40: want 6:
baseline_test.go:40: {File:t.css Context: Selector:a Property:color Value:red Important:false}
baseline_test.go:40: {File:t.css Context: Selector:a Property:margin Value:0 Important:true}
baseline_test.go:40: {File:t.css Context: Selector:[b] Property:color Value:red Important:false}
baseline_test.go:40: {File:t.css Context: Selector:[b] Property:margin Value:0 Important:true}
baseline_test.go:40: {File:t.css Context:@media (x) > @supports (y) Selector:c Property:d Value:e Important:false}
baseline_test.go:40: {File:t.css Context:@container (max-width: 34rem) Selector:f Property:g Value:h Important:false}
--- FAIL: TestDeclarationsAreReadInTheirContext (0.00s)
baseline_test.go:57: declarationsOf read 0 records:
baseline_test.go:57: want 6:
baseline_test.go:57: {File:t.css Context:@property --p Selector: Property:syntax Value:"<number>" Important:false}
baseline_test.go:57: {File:t.css Context:@property --p Selector: Property:inherits Value:false Important:false}
baseline_test.go:57: {File:t.css Context:@property --p Selector: Property:initial-value Value:0 Important:false}
baseline_test.go:57: {File:t.css Context:@media (m) > @view-transition Selector: Property:navigation Value:auto Important:false}
baseline_test.go:57: {File:t.css Context:@keyframes k Selector:from Property:opacity Value:0 Important:false}
baseline_test.go:57: {File:t.css Context:@keyframes k Selector:to Property:opacity Value:1 Important:false}
baseline_test.go:64: declarationsOf of a @layer block: <nil>, want an error naming @layer
--- FAIL: TestAtRulesAreReadAsRecords (0.00s)
selectors_test.go:64: requiresNewMarkup(".rst-page:not(.rst-snippet)") refused it saying "", which does not name "positively requires"
selectors_test.go:64: requiresNewMarkup("[rst-page]:not([rst-snippet])") refused it saying "", which does not name "positively requires"
selectors_test.go:64: requiresNewMarkup(":is([rst-page], [rst-snippet])") refused it saying "", which does not name ":is("
selectors_test.go:64: requiresNewMarkup(":where([rst-snippet])") refused it saying "", which does not name ":where("
selectors_test.go:64: requiresNewMarkup("[rst-page]:not([rst-seg-tabs] > button)") refused it saying "", which does not name "positively requires"
selectors_test.go:64: requiresNewMarkup("* [rst-snippet]") refused it saying "", which does not name "`*`"
selectors_test.go:64: requiresNewMarkup("[rst-page]:has(> [rst-snippet], > [rst-row])") refused it saying "", which does not name "> [rst-row]"
selectors_test.go:60: requiresNewMarkup("[rst-snippet]") = false (), want true
selectors_test.go:60: requiresNewMarkup("[rst-page-foot]:not(:has(> *))") = false (), want true
selectors_test.go:60: requiresNewMarkup("[rst-row]:has(> [rst-status~=\"inline\"]) > [rst-status]") = false (), want true
selectors_test.go:60: requiresNewMarkup("[rst-page-foot] [rst-dropdown]") = false (), want true
selectors_test.go:60: requiresNewMarkup(".rst-stats--pairs > .rst-stat:nth-child(odd)") = false (), want true
--- FAIL: TestOnlyNewMarkupPassesTheGrammar (0.00s)
Green
--- PASS: TestTheBaselineIsOneOhOh (0.26s)
--- PASS: TestOneOhScriptsAreUnchanged (0.02s)
ok amadan.net/rastrillo/fiesta 0.277s
--- PASS: TestElementReturnsTheCarrierAsWritten (0.00s)
--- PASS: TestContentsReturnsWhatLiesInside (0.00s)
--- PASS: TestElementReadsAVoidElement (0.00s)
--- PASS: TestElementRefusesAMissingCarrier (0.00s)
--- PASS: TestElementRefusesTwoCarriers (0.00s)
--- PASS: TestElementRefusesAnUnclosedCarrier (0.00s)
--- PASS: TestANestedCarrierCountsOnce (0.00s)
ok amadan.net/rastrillo/fiesta/example 0.002s
--- PASS: TestEveryOneOhDeclarationStillApplies (0.01s)
--- PASS: TestEveryNewRuleRequiresNewMarkup (0.04s)
--- PASS: TestDeclarationsAreReadInTheirContext (0.00s)
--- PASS: TestAtRulesAreReadAsRecords (0.00s)
--- PASS: TestDropdownExclusivityIsNative (0.00s)
--- PASS: TestNestedMenuGroupNeverSharesItsParentsName (0.00s)
--- PASS: TestOnlyNewMarkupPassesTheGrammar (0.00s)
ok amadan.net/rastrillo/fiesta/check 0.055s
--- PASS: TestTheHeaderLiftsOnlyTheSchemeMenu (0.14s)
--- PASS: TestTheAssetDeclarationDrivesTheTree (4.00s)
ok amadan.net/rastrillo/fiesta/internal/gallery 4.174s
./hack/gotest.sh browser check -run 'TestEveryThemeAndShellRendersAsTheBaseline|OneOh|TestADropdownOpensUnderItsOwnSummary|TestADropdownWithoutAnchorsOrScriptsStaysOnScreen'
--- PASS: TestOneOhLayoutsRenderAsTheyDid1of3 (46.91s)
--- PASS: TestOneOhLayoutsRenderAsTheyDid2of3 (31.96s)
--- PASS: TestOneOhLayoutsRenderAsTheyDid3of3 (32.60s)
--- PASS: TestEveryOneOhExampleRendersAsItDid1of4 (39.61s)
--- PASS: TestEveryOneOhExampleRendersAsItDid2of4 (40.39s)
--- PASS: TestEveryOneOhExampleRendersAsItDid3of4 (38.64s)
--- PASS: TestEveryOneOhExampleRendersAsItDid4of4 (40.72s)
--- PASS: TestEveryThemeAndShellRendersAsTheBaseline (44.72s)
--- PASS: TestADropdownOpensUnderItsOwnSummary (7.99s)
--- PASS: TestADropdownWithoutAnchorsOrScriptsStaysOnScreen (1.42s)
The gates shown red on scratch copies (each reverted after)
ftok-base-rule
--- FAIL: TestEveryOneOhDeclarationStillApplies (0.01s)
--- PASS: TestEveryNewRuleRequiresNewMarkup (0.04s)
baseline_test.go:451: css/tokens.css: 1.0.0's .rst-ftok { align-items: center } is gone; a 1.0 page would render without it
baseline_test.go:451: css/tokens.css: 1.0.0's .rst-ftok { background: var(--rst-surface) } is gone; a 1.0 page would render without it
baseline_test.go:451: css/tokens.css: 1.0.0's .rst-ftok { border: 1px solid var(--rst-line-strong) } is gone; a 1.0 page would render without it
baseline_test.go:451: css/tokens.css: 1.0.0's .rst-ftok { border-radius: 7px } is gone; a 1.0 page would render without it
baseline_test.go:451: css/tokens.css: 1.0.0's .rst-ftok { display: inline-flex } is gone; a 1.0 page would render without it
baseline_test.go:451: css/tokens.css: 1.0.0's .rst-ftok { font-size: var(--rst-fs-xs) } is gone; a 1.0 page would render without it
reflow-600
--- PASS: TestEveryOneOhDeclarationStillApplies (0.01s)
--- FAIL: TestEveryNewRuleRequiresNewMarkup (0.04s)
baseline_test.go:575: css/tokens.css: @media (min-width: 560px) and (max-width: 640px) { .rst-page { padding-inline: 3rem } } is new and .rst-page: no compound positively requires a name 1.0 does not style; no newOnOldMarkup entry is this selector
baseline_test.go:575: css/tokens.css: @media (min-width: 560px) and (max-width: 640px) { [rst-page] { padding-inline: 3rem } } is new and [rst-page]: no compound positively requires a name 1.0 does not style; no newOnOldMarkup entry is this selector
not-snippet-700
--- PASS: TestEveryOneOhDeclarationStillApplies (0.01s)
--- FAIL: TestEveryNewRuleRequiresNewMarkup (0.04s)
baseline_test.go:575: css/tokens.css: @media (min-width: 700px) and (max-width: 750px) { .rst-page:not(.rst-snippet) { padding-inline: 3rem } } is new and .rst-page:not(.rst-snippet): no compound positively requires a name 1.0 does not style (names inside
baseline_test.go:575: css/tokens.css: @media (min-width: 700px) and (max-width: 750px) { [rst-page]:not([rst-snippet]) { padding-inline: 3rem } } is new and [rst-page]:not([rst-snippet]): no compound positively requires a name 1.0 does not style (names ins
mixed-is
--- PASS: TestEveryOneOhDeclarationStillApplies (0.01s)
--- FAIL: TestEveryNewRuleRequiresNewMarkup (0.04s)
baseline_test.go:575: css/tokens.css: :is([rst-page], [rst-snippet]) { margin: 1px } is new and :is([rst-page], [rst-snippet]): `:is(` is outside the grammar
not-seg-tabs-button
--- PASS: TestEveryOneOhDeclarationStillApplies (0.01s)
--- FAIL: TestEveryNewRuleRequiresNewMarkup (0.04s)
baseline_test.go:582: css/tokens.css: [rst-page]:not([rst-seg-tabs] > button) { margin: 1px } is new and [rst-page]:not([rst-seg-tabs] > button): no compound positively requires a name 1.0 does not style (names inside :not() never count); no newOnOldMarkup
baseline_test.go:588: newOnOldMarkup[".rst-seg-tabs > button"] is used by no new declaration; an exception for nothing is a hole waiting to be used
baseline_test.go:588: newOnOldMarkup[".rst-seg-tabs > button:hover"] is used by no new declaration; an exception for nothing is a hole waiting to be used
baseline_test.go:588: newOnOldMarkup[".rst-seg-tabs > button[aria-pressed=\"true\"]"] is used by no new declaration; an exception for nothing is a hole waiting to be used
baseline_test.go:588: newOnOldMarkup["[rst-seg-tabs] > button"] is used by no new declaration; an exception for nothing is a hole waiting to be used
baseline_test.go:588: newOnOldMarkup["[rst-seg-tabs] > button:hover"] is used by no new declaration; an exception for nothing is a hole waiting to be used
property-deleted
--- FAIL: TestEveryOneOhDeclarationStillApplies (0.01s)
--- PASS: TestEveryNewRuleRequiresNewMarkup (0.04s)
baseline_test.go:451: css/tokens.css: 1.0.0's @property --rst-press { syntax: "<number>" } is gone; a 1.0 page would render without it
baseline_test.go:451: css/tokens.css: 1.0.0's @property --rst-press { inherits: false } is gone; a 1.0 page would render without it
baseline_test.go:451: css/tokens.css: 1.0.0's @property --rst-press { initial-value: 0 } is gone; a 1.0 page would render without it
property-initial-value
--- FAIL: TestEveryOneOhDeclarationStillApplies (0.01s)
--- FAIL: TestEveryNewRuleRequiresNewMarkup (0.04s)
baseline_test.go:451: css/tokens.css: 1.0.0's @property --rst-press { initial-value: 0 } is gone; a 1.0 page would render without it
baseline_test.go:575: css/tokens.css: @property --rst-press { initial-value: 1 } is new and belongs to @property --rst-press, which 1.0.0 already has; a 1.0 page using it would animate or register differently
keyframe-transform
--- FAIL: TestEveryOneOhDeclarationStillApplies (0.01s)
--- FAIL: TestEveryNewRuleRequiresNewMarkup (0.04s)
baseline_test.go:451: css/shell.css: 1.0.0's @keyframes rst-shell-in-end { from { transform: translateX(100%) } } is gone; a 1.0 page would render without it
baseline_test.go:575: css/shell.css: @keyframes rst-shell-in-end { from { transform: translateX(90%) } } is new and belongs to @keyframes rst-shell-in-end, which 1.0.0 already has; a 1.0 page using it would animate or register differently
caret-transition
--- FAIL: TestEveryOneOhDeclarationStillApplies (0.01s)
--- FAIL: TestEveryNewRuleRequiresNewMarkup (0.04s)
baseline_test.go:451: css/tokens.css: 1.0.0's .rst-caret { transition: transform 0.15s } is gone; a 1.0 page would render without it
baseline_test.go:451: css/tokens.css: 1.0.0's [rst-caret] { transition: transform 0.15s } is gone; a 1.0 page would render without it
baseline_test.go:575: css/tokens.css: .rst-caret { transition: transform 0.3s } is new and .rst-caret: no compound positively requires a name 1.0 does not style; no newOnOldMarkup entry is this selector
baseline_test.go:575: css/tokens.css: [rst-caret] { transition: transform 0.3s } is new and [rst-caret]: no compound positively requires a name 1.0 does not style; no newOnOldMarkup entry is this selector
forced-dropdown-summary
--- FAIL: TestEveryOneOhDeclarationStillApplies (0.01s)
--- PASS: TestEveryNewRuleRequiresNewMarkup (0.04s)
baseline_test.go:451: css/tokens.css: 1.0.0's @media (forced-colors: active) { [rst-dropdown] > summary { border: 1px solid ButtonBorder } } is gone; a 1.0 page would render without it
seed-byte
--- FAIL: TestTheBaselineIsOneOhOh (0.25s)
--- PASS: TestOneOhScriptsAreUnchanged (0.02s)
releases_test.go:372: check/testdata/seed/examples/layout-column/default.html differs from v1.0.0:examples/layout-column/default.html; the baseline is 1.0.0's and never changes
script-byte
--- PASS: TestTheBaselineIsOneOhOh (0.25s)
--- FAIL: TestOneOhScriptsAreUnchanged (0.02s)
releases_test.go:391: js/anchor.js differs from v1.0.0:js/anchor.js; a 1.x release changes no 1.0 script
ftok-base-rule, photographs
--- FAIL: TestEveryOneOhExampleRendersAsItDid1of4 (37.68s)
--- PASS: TestEveryOneOhExampleRendersAsItDid2of4 (37.38s)
--- PASS: TestEveryOneOhExampleRendersAsItDid3of4 (37.74s)
--- PASS: TestEveryOneOhExampleRendersAsItDid4of4 (38.28s)
1 1.0.0's dropdown/menu-idiom at 390px, left to right, light, screen renders differently under the tree's CSS
1 1.0.0's dropdown/menu-idiom at 390px, right to left, light, screen renders differently under the tree's CSS
1 1.0.0's dropdown/menu-idiom at 900px, left to right, light, screen renders differently under the tree's CSS
1 1.0.0's dropdown/menu-idiom at 900px, right to left, light, screen renders differently under the tree's CSS
reflow-600, photographs
--- FAIL: TestOneOhLayoutsRenderAsTheyDid1of3 (43.27s)
--- FAIL: TestOneOhLayoutsRenderAsTheyDid2of3 (32.83s)
--- FAIL: TestOneOhLayoutsRenderAsTheyDid3of3 (33.43s)
3 1.0.0's layout-column/default at 600px, left to right, dark, screen renders differently under the tree's CSS
3 1.0.0's layout-column/default at 600px, left to right, light, screen renders differently under the tree's CSS
3 1.0.0's layout-column/default at 600px, right to left, dark, screen renders differently under the tree's CSS
3 1.0.0's layout-column/default at 600px, right to left, light, screen renders differently under the tree's CSS
3 1.0.0's layout-console-page/default at 600px, left to right, dark, screen renders differently under the tree's CSS
3 1.0.0's layout-console-page/default at 600px, left to right, light, screen renders differently under the tree's CSS
3 1.0.0's layout-console-page/default at 600px, right to left, dark, screen renders differently under the tree's CSS
3 1.0.0's layout-console-page/default at 600px, right to left, light, screen renders differently under the tree's CSS
3 1.0.0's layout-sidebar-page/default at 600px, left to right, dark, screen renders differently under the tree's CSS
3 1.0.0's layout-sidebar-page/default at 600px, left to right, light, screen renders differently under the tree's CSS
3 1.0.0's layout-sidebar-page/default at 600px, right to left, dark, screen renders differently under the tree's CSS
3 1.0.0's layout-sidebar-page/default at 600px, right to left, light, screen renders differently under the tree's CSS
3 1.0.0's layout-stage/default at 600px, left to right, dark, screen renders differently under the tree's CSS
3 1.0.0's layout-stage/default at 600px, left to right, light, screen renders differently under the tree's CSS
3 1.0.0's layout-stage/default at 600px, right to left, dark, screen renders differently under the tree's CSS
3 1.0.0's layout-stage/default at 600px, right to left, light, screen renders differently under the tree's CSS
3 1.0.0's layout-topbar/default at 600px, left to right, dark, screen renders differently under the tree's CSS
3 1.0.0's layout-topbar/default at 600px, left to right, light, screen renders differently under the tree's CSS
3 1.0.0's layout-topbar/default at 600px, right to left, dark, screen renders differently under the tree's CSS
3 1.0.0's layout-topbar/default at 600px, right to left, light, screen renders differently under the tree's CSS
forced-dropdown-summary, photographs
--- FAIL: TestOneOhLayoutsRenderAsTheyDid1of3 (43.68s)
1 1.0.0's layout-column/default at 1280px, left to right, light, forced colours renders differently under the tree's CSS
1 1.0.0's layout-column/default at 390px, left to right, light, forced colours renders differently under the tree's CSS
1 1.0.0's layout-console/default at 1280px, left to right, light, forced colours renders differently under the tree's CSS
1 1.0.0's layout-console-page/default at 1280px, left to right, light, forced colours renders differently under the tree's CSS
1 1.0.0's layout-sidebar/default at 1280px, left to right, light, forced colours renders differently under the tree's CSS
1 1.0.0's layout-sidebar/default at 390px, left to right, light, forced colours renders differently under the tree's CSS
1 1.0.0's layout-sidebar-page/default at 1280px, left to right, light, forced colours renders differently under the tree's CSS
1 1.0.0's layout-topbar/default at 1280px, left to right, light, forced colours renders differently under the tree's CSS
picture-missing, photographs
--- FAIL: TestEveryOneOhExampleRendersAsItDid1of4 (18.67s)
1 1 pictures did not load: /old/examples/assets/sample-logo.svg
The 600px reflow fails on five layouts: the sidebar and console shells show their index at 600 and draw no page there (their [rst-page] is 0 by 0), so the added padding cannot show; the new-rule gate names the rule regardless. The seg-tabs control also reports the six scratch exceptions as unused, which is that gate's own rule working.