Record the reading that the install address answers - #134
Merged
Conversation
The address answers with the catalogue it promises now, and nothing in the tree said so, so `internal/address.Answered` stayed empty and the merge gate went on refusing every tracked file that printed the address. That refusal was correct while the address answered 404 and it had started refusing a true instruction, which is the opposite failure and the more expensive one: it keeps an operator from being told how to install anything. The entry rests on three requests rather than a status code. A holding page, a redirect and a rewritten error page all answer 200, and a Jellyfin server renders each of them the way it renders an empty repository, so what is written down is that the bytes served are byte-identical with the ones this tree holds. decisions/manifest-address.md carries the requests and their output, and the two places that stated the 404 as the current state now read as superseded rather than as a description of the world. Three tests in the suite were reading the live list and planting the published address as the thing nobody had read. They went green together the moment the list took its entry, which is a suite passing for the wrong reason rather than a guard holding. Each one now pins the list empty for its own length, so it goes on measuring the refusal instead of the state of the tree, and the leg against the real tree with the real list is unchanged and still reads both. Signed-off-by: Nils Lehnen <30603423+iderex@users.noreply.github.com>
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.
Closes #133.
The address answers with the catalogue it promises, and nothing in the tree said
so.
internal/address.Answeredstayed empty, and the merge gate went on refusingevery tracked file that printed the address. That refusal was right while the
address answered 404 and had started refusing a true instruction.
The reading the entry rests on
Run 2026-08-23 at
514c771. The third one is what decides it. A holding page, aredirect and a rewritten error page all answer 200, and a Jellyfin server renders
each of them the way it renders an empty repository, so a status code records
that something is at the address rather than that the catalogue is.
The guard still bites, in both directions
An unrecorded near miss planted in an operator-facing file, on this branch:
The recorded address in the same place, which is the direction the entry buys:
Both plants were removed afterwards and
README.mdis untouched by this change.The suite was passing for the wrong reason
Three refusal tests read the live list and planted the published address as the
thing nobody had read. They went green together the moment the list took its
entry:
That is a suite that stops measuring the refusal on the day an entry lands rather
than on the day the rule changes. Each of the three now pins the list empty for
its own length.
TestNoTrackedFilePrintsAnUnansweredInstallAddress, the legagainst the real tree with the real list, is unchanged and is what the two plants
above ran.
The harness check starts doing something
It returned early for as long as the list was empty. On this branch:
The gate
What the harness did not say
go run . harness needs-networkdoes not pass in this shell, and two of itschecks are why. Neither is about this change and both say so in their own output:
The first wants an environment variable this shell does not set and the second
wants a credential it does not carry. The harness gates no merge here and runs on
no pull request, so this is disclosed rather than worked around, and what it
leaves unproven is that the whole harness is green on a runner that has both.
What this does not do
It does not print the address anywhere an operator reads.
README.md,SECURITY.mdand the served pages are untouched, and they still say installationis not available yet. Writing the instruction is #55 and is a separate topic.
It also does not add the renewal watch.
decisions/manifest-address.mdsays therenewal belongs under a watch rather than in somebody's memory, and this change
publishes the address without building one, so the obligation the file names
starts today and nothing here reads a renewal date.
Review
No second person has read this. That is stated rather than implied, and the
evidence above stands in place of a second reader: every claim carries the
command that produced it, including the two that were run to watch the guard go
red.