From 4f1162ce4226e9f46ff1096f2284aa8d55eff7b0 Mon Sep 17 00:00:00 2001 From: Nils Lehnen <30603423+iderex@users.noreply.github.com> Date: Sun, 23 Aug 2026 12:50:43 +0200 Subject: [PATCH 1/2] Correct the hand step the publication stopped being (#130) The "What a person does by hand" section of decisions/release-procedure.md led with running the publication, said nothing schedules it, and sent a reader to #32 as the place where a schedule and a run that cannot race itself were still being decided. Both halves have been overtaken. I found it by re-running the commands the issue carries against origin/main at 1f88020: publish.yml declares a daily cron, a request trigger and a concurrency group naming the destination, and #32 closed on 2026-08-20. That section is the one somebody opens to find out what is left to them, and it is read before the steps rather than after them, so a stale entry there tells a reader to start the run by hand and to expect that nothing has run otherwise. The entry now says what is left at that step now that the run has a route: the run pushes nothing and its checkout goes with the runner, so what a person does is read its verdict, ask for a run when a release lands between the scheduled ones, and produce the bytes the next entry's request carries. The sentence that stood there is rewritten as superseded rather than deleted, which is the shape decisions/plugin-identity.md already uses. Signed-off-by: Nils Lehnen <30603423+iderex@users.noreply.github.com> --- decisions/release-procedure.md | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/decisions/release-procedure.md b/decisions/release-procedure.md index 67d0761..de2be65 100644 --- a/decisions/release-procedure.md +++ b/decisions/release-procedure.md @@ -52,8 +52,23 @@ it. Naming these is most of the value, because the hand steps are the ones done differently the second time. -Running the publication. Nothing schedules it today; #32 is where a schedule and -a run that cannot race itself are decided. +Deciding that a run's verdict calls for a merge, and asking for a run when a +release lands between the scheduled ones. Starting the publication is not the +hand step here. `.github/workflows/publish.yml` declares a daily schedule, a +request trigger, and a concurrency group naming the destination so that two runs +never write one file. What such a run leaves is a verdict and nothing else: its +permissions are read-only, none of its three steps pushes, and its checkout goes +with the runner. So `wrote new bytes` on the default branch is the sentence +saying the published catalogue no longer matches what the declarations come to +and a merge is owed, and reading that, then producing the bytes the request +below carries, is the part that stayed a person's. + +The sentence that stood at this entry until this correction is superseded rather +than deleted. It said the publication had no schedule, and it sent a reader to +#32 as the place where a schedule and a run that could not race itself were +still being decided. #32 was answered on 2026-08-20 and the workflow file above +carries both, so what that sentence pointed forward to has arrived and what is +left by hand here is the paragraph above rather than starting the run. Opening the pull request that carries the placed file, and merging it. This is the same route as any other change and it has the same gate in front of it. From 3cbb25d0cf96e23140f884f19bdcb7d3f07294c0 Mon Sep 17 00:00:00 2001 From: Nils Lehnen <30603423+iderex@users.noreply.github.com> Date: Sun, 23 Aug 2026 12:51:18 +0200 Subject: [PATCH 2/2] Date the address grep and put the reading that holds beside it (#136) decisions/manifest-address.md quoted a grep that found no printed install address and exited 1, and it read the printing of the address as a question the instruction in #55 would answer. Neither reproduces. This is the file that argues why a reading is recorded with the command that produced it, so a stale quotation inside it is read as current by anybody who opens it for the rule. I found it by re-running that grep at origin/main 1f88020, where it prints five sites across README.md and docs/index.html and exits 0, and by reading #55 and #34, both closed. The 2026-08-08 pair is kept rather than deleted, because it is the pair that decided the rule asks for a request instead of a DNS lookup, and the file already says so. What changes is that it is now named as a reading from that date and the reading that holds is beside it, and the two sentences pointing forward to the instruction say it is written. Signed-off-by: Nils Lehnen <30603423+iderex@users.noreply.github.com> --- decisions/manifest-address.md | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/decisions/manifest-address.md b/decisions/manifest-address.md index 801b2a2..c4aee08 100644 --- a/decisions/manifest-address.md +++ b/decisions/manifest-address.md @@ -93,16 +93,32 @@ published nothing and the declaration switched off for the first publication are `decisions/first-release.md`, and they are absent by decision rather than by failure. -Two tracked files printed the address, and #35 removed both: +Two tracked files printed the address, and #35 removed both. What follows is the +reading taken that day rather than the state of the tree: grep -rno 'https://[a-zA-Z0-9./_-]*manifest.json' -- README.md docs/ ; echo "exit=$?" exit=1 Run 2026-08-08. Nothing was printed and the grep exited 1. What the operator-facing files said instead was that installation is not available yet, -which was what an address answering 404 left them able to say. Now that the entry -exists they may print the address, and whether they do is the instruction in #55 -rather than this rule. +which was what an address answering 404 left them able to say. + +The same command answers with five sites now, and those five are the operator +instruction: + + grep -rno 'https://[a-zA-Z0-9./_-]*manifest.json' -- README.md docs/ ; echo "exit=$?" + README.md:17:https://flowfin.dev/manifest.json + README.md:54:https://flowfin.dev/manifest.json + README.md:63:https://flowfin.dev/manifest.json + README.md:73:https://flowfin.dev/manifest.json + docs/index.html:31:https://flowfin.dev/manifest.json + exit=0 + +Run 2026-08-23 against the tree at 1f88020. The first is the address in the +three-step instruction, the three below it are inside the commands an operator +runs when the repository looks empty, and the fifth is the same address on the +served page. Printing them is what the entry in `internal/address.Answered` made +permissible, and it is written rather than still to be decided. The 404 pair stays here because this is where the address is argued, and a superseded reading is worth more in place than deleted: it is the pair that @@ -142,8 +158,9 @@ That check returned early for as long as the list was empty, and it says so on its own output rather than passing quietly. With an entry it makes the request, so the day the entry landed is the day the check began reading anything at all. -The operator instruction that prints the address is the other half of #34. The -list is no longer what stands in front of it. +The operator instruction that prints the address was the other half of #34. It is +written, the five sites above are it, and the list stopped standing in front of +it on the day the entry landed. ## What this costs