Declare the schemes a page supports, and refuse a page that declares none [#87] - #152
Merged
Conversation
…none [#87] The pages served today tell a browser which colour schemes they support. The pages this generator produces do not, and no check noticed: the byte budget counts a smaller number as better, and every other row reads something the head does not carry. The only party who finds out is a reader whose machine is set dark and who is handed a page drawn light, along with every form control drawn from the same answer, before a stylesheet has arrived to say otherwise. The frame gains the declaration, and a row refuses a produced page that carries none. The row reads the value rather than the name of the attribute, because the mistake a template makes is writing the declaration against a value that was not there: the word is on the page and a browser reads nothing. A value naming no word a browser acts on is refused for the same reason. A media query asking what the reader prefers is not read as an answer, so a page cannot ask the question and still owe the declaration. Removing the declaration from the frame refuses both produced pages rather than one, which is what the run prints and what the suite asserts. This is the static half of the issue. The half that loads every page under each emulated scheme waits on the browser, and the motion half has nothing in the output to bite on yet; neither is claimed here. Signed-off-by: Nils Lehnen <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What was wrong
The pages served today tell a browser which colour schemes they support. The
frame this generator renders every page through says nothing:
Both run 2026-08-12, the first against
origin/mainat39ab67a.Nothing here noticed, and nothing was going to. A page that declares no scheme
is smaller, so a byte budget reads the loss as an improvement. Every other row
over a produced page reads something the head does carry. The only party who
finds out is a reader whose machine is set dark and who is handed a page drawn
light, along with every form control drawn from the same answer, before a
stylesheet has arrived to say otherwise.
What this does
The frame gains the declaration, and a row refuses a produced page that carries
none.
The row reads the value rather than the name of the attribute. The mistake a
template makes is writing the declaration against a value that was not supplied:
the word is on the page, a search for it succeeds, and a browser reads nothing.
A value naming no word a browser acts on is refused for the same reason. An
answer written in a stylesheet counts, so the row is not one somebody has to
switch off the day a stylesheet lands, and a media query asking what the reader
prefers does not count, so a page cannot ask the question and still owe the
answer.
Closes
Closes nothing. This is the static half of #87 and the issue stays open. What
is left there is the browser loading every page under each emulated scheme,
which waits on #63, and the motion half, which has no declaration in the output
to bite on yet. Neither is claimed here.
What was run
At
ca43aa3.The set that needs the network was not asked for, which the run prints above,
and nothing in this change reads anything published elsewhere.
The guard, deleted from the frame and put back. It refuses both produced pages
rather than one, which is the property that makes it about the frame:
and with the line restored:
The three tests the row landed with, each named for what it proves:
The bytes still reproduce:
No test was skipped. Nothing here opens a window, needs a display, binds a
socket or asks for elevation, and the rows that decide those four read this
suite and passed above.
Paths this branch touches:
The means
A row in the Go invariant table and one element in the frame, which is what
every produced-page rule in this tree is already made of. It fits for the three
reasons that table exists: the property is refusable by reading the bytes the
build wrote, the guard is shown to bite above by deleting it and watching two
pages red, and every claim in this body carries the command that produced it.
The alternative was a check written into a workflow, which has no suite that can
prove it bites and cannot be run on the machine where the mistake was made. It
adds no language, no runtime and no dependency, and the module graph still
requires nothing.
Who read it
Nobody else. This carries no second reader, and the evidence above stands in
place of one.