chore: record the completed adoption, drop content-build, and cut the README's history lessons - #19
Merged
Merged
Conversation
added 2 commits
September 1, 2026 17:35
The adoption section described a migration that had not started: a numbered order to work through, and a signal to watch for. All six now call this workflow, so the file was describing a state it has left. Replaced with the outcome and the two things worth keeping from it — why the order was what it was, and what actually proved the workflow, since the first release run is the only one that could. With changesets pending, a correct `outputs['has-changesets']` and a stale one both skip the decision step, so only the no-changesets-left case distinguishes them; harn-adventures cutting v0.0.1 is that case, and the re-run that declined to cut it again is the other half. Also records how to verify a caller — parse it and assert the job carries no `steps` of its own, rather than reading it, since a half-migrated file looks right at a glance. And the finding adoption turned up, which was not its point: three of the six had a red `build:noci` that no CI job ran, because the release workflow was the only thing that executed it and only at release time. That is why two of the six have never cut a release. A gate that runs only at release time is not a gate.
Four in README.md, one in the shared release workflow's comments and one in `actions/todos`. Each named a repository that no longer figures in how anything here is built, so each was a pointer readers would follow to nothing. Nothing is annotated as gone — the references are simply removed, and the points they were making are kept. The intro now describes one build toolchain rather than two split by what they read. The release workflow still explains why `version-script` must stay a single command, stated as the mechanism — `changeset` receives the second command's flags and rejects them — instead of by citing where it once happened. `actions/todos` still explains why it formats its own findings rather than taking a dependency to do it. Verified: no occurrence remains anywhere in the repository, `actionlint` is clean and `todos.mjs` parses.
827 lines to 707, with no fact removed that changes what a reader would write. The test applied throughout: does knowing this change what you would do? If not, it went. What went: - **Twelve near-identical YAML blocks**, six per shared workflow. Repetition is not information: one worked example and a table of what each caller passes says the same thing, and says it in a form you can scan. - **Two of the three "why this is an Action" essays.** All three answered the same question from different directions, and the answer is a rule, not a history: a job moves as a reusable workflow, a step as a composite action, and CI code that wants nothing but a token stays an action rather than becoming an npm package. Stated once now. - **The adoption narrative**, which described a migration that is over. What survives is how to verify a caller and the one durable lesson — a gate that runs only at release time is not a gate. - **Incident retellings.** The NXDOMAIN outage is not the point; the point is that registering a Pages custom domain does not write its DNS record, that the record step must stay separate from the domain step, and that an existing record pointing elsewhere is a warning rather than an overwrite. Those are now stated as constraints that survive tidying, which is what they are for. What deliberately stayed: every input table, every constraint that changes what you would write (`min-pages` required in content mode, homepage mode's one-page licensing boundary, the two token permissions, the load-bearing workflow filename), the standing rule about output names, and the git hook that carries the no-attribution pattern and cannot move here — the one thing in that section that tells you to go and edit a second file.
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.
chore: drop every content-build reference
Four in README.md, one in the shared release workflow's comments and one in
actions/todos. Each named a repository that no longer figures in how anythinghere is built, so each was a pointer readers would follow to nothing.
Nothing is annotated as gone — the references are simply removed, and the points
they were making are kept. The intro now describes one build toolchain rather
than two split by what they read. The release workflow still explains why
version-scriptmust stay a single command, stated as the mechanism —changesetreceives the second command's flags and rejects them — instead of byciting where it once happened.
actions/todosstill explains why it formats itsown findings rather than taking a dependency to do it.
Verified: no occurrence remains anywhere in the repository,
actionlintisclean and
todos.mjsparses.chore: record that all six repositories have adopted
The adoption section described a migration that had not started: a numbered
order to work through, and a signal to watch for. All six now call this
workflow, so the file was describing a state it has left.
Replaced with the outcome and the two things worth keeping from it — why the
order was what it was, and what actually proved the workflow, since the first
release run is the only one that could. With changesets pending, a correct
outputs['has-changesets']and a stale one both skip the decision step, so onlythe no-changesets-left case distinguishes them; harn-adventures cutting v0.0.1
is that case, and the re-run that declined to cut it again is the other half.
Also records how to verify a caller — parse it and assert the job carries no
stepsof its own, rather than reading it, since a half-migrated file looksright at a glance.
And the finding adoption turned up, which was not its point: three of the six
had a red
build:nocithat no CI job ran, because the release workflow was theonly thing that executed it and only at release time. That is why two of the six
have never cut a release. A gate that runs only at release time is not a gate.