Skip to content

Date two overtaken readings in the decisions that carry them - #137

Merged
iderex merged 2 commits into
mainfrom
decisions-two-overtaken-readings
Aug 23, 2026
Merged

Date two overtaken readings in the decisions that carry them#137
iderex merged 2 commits into
mainfrom
decisions-two-overtaken-readings

Conversation

@iderex

@iderex iderex commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Closes #130. Closes #136.

Two decision files each carry a sentence a later change overtook, and both sit in
the register that argues for recording a reading with the command that produced
it. Neither correction is a deletion. The superseded sentence is rewritten as
superseded, which is the shape decisions/plugin-identity.md already uses and
the shape both issues ask for.

Why one request carries two issues

Both land only prose under decisions/, and they touch different files, so a
request each would move the mainline under the other and buy no reader anything.

The means

Markdown prose in decisions/, one file per decision, present tense. That is
what every file in that directory already is, it adds no language, no runtime and
no dependency, and it keeps the correction in the same place as the rule it is
about, where somebody reading the rule will meet it.

#130: the hand step the publication stopped being

What main carries:

git show origin/main:decisions/release-procedure.md | sed -n '55,56p'
Running the publication. Nothing schedules it today; #32 is where a schedule and
a run that cannot race itself are decided.

Both halves of that are overtaken. The workflow declares its own runs and a group
that stops one racing itself:

git grep -n 'cron:\|workflow_dispatch:\|concurrency:' origin/main -- .github/workflows/publish.yml
origin/main:.github/workflows/publish.yml:30:    - cron: "23 5 * * *"
origin/main:.github/workflows/publish.yml:32:  workflow_dispatch:
origin/main:.github/workflows/publish.yml:53:concurrency:

gh issue view 32 --repo Flowfin/hub --json state,closedAt --jq '"\(.state) \(.closedAt)"'
CLOSED 2026-08-20T08:46:01Z

At the head of this branch the file states neither, and the one place it still
names #32 says the answer and the date:

git show HEAD:decisions/release-procedure.md | grep -n 'Nothing schedules' ; echo "exit=$?"
exit=1
git show HEAD:decisions/release-procedure.md | grep -n '#32'
68:#32 as the place where a schedule and a run that could not race itself were
69:still being decided. #32 was answered on 2026-08-20 and the workflow file above

The entry has content after the correction rather than disappearing. What is left
by hand at that step is reading the run's verdict, asking for a run when a release
lands between the scheduled ones, and producing the bytes the next entry's request
carries, because that workflow has read-only permissions, none of its three steps
pushes, and its checkout goes with the runner.

#136: the grep that stopped reproducing

The quotation in decisions/manifest-address.md no longer reproduces:

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, which is main as this branch left
it. The 2026-08-08 pair is kept, because it is the pair that decided the rule asks
for a request rather than a DNS lookup and the file already says so. It is now
named as a reading from that date, with the reading that holds beside it.

The forward pointer is gone as well. The instruction it pointed at is written and
both issues behind it are closed:

gh issue view 55 --repo Flowfin/hub --json state,closedAt --jq '"\(.state) \(.closedAt)"'
CLOSED 2026-08-23T03:18:28Z
gh issue view 34 --repo Flowfin/hub --json state,closedAt --jq '"\(.state) \(.closedAt)"'
CLOSED 2026-08-12T06:26:53Z

git show HEAD:decisions/manifest-address.md | grep -n 'still to be decided\|other half of #34'
121:permissible, and it is written rather than still to be decided.
161:The operator instruction that prints the address was the other half of #34. It is

What this change does not do

It adds no guard, so there is no refusal to plant and none is claimed. It touches
no Go, no workflow and nothing under docs/, so nothing about what the tree
refuses moves:

git diff --name-only origin/main...HEAD
decisions/manifest-address.md
decisions/release-procedure.md

decisions/release-procedure.md also says under what a release is refused for
that the quickstart cannot be written before an address is recorded as answering.
That sentence is a condition on ordering rather than a claim that the quickstart
is unwritten, so it is left alone here and is not part of either issue's
done-condition.

The gate

go clean -testcache
go run . gate
gate examined 14 of 14 legs.
  build                            passed
  test                             passed
  format                           passed
  editorconfig                     passed
  tests-reach-nothing              passed
  no-hardcoded-names               passed
  site-fetches-nothing-outside     passed
  site-links-resolve               passed
  coverage                         passed
  site-declares-its-language       passed
  install-address-is-answered      passed
  colour-stands-off-every-surface  passed
  page-matches-the-token-file      passed
  pr-hygiene                       passed

Run at the content of this branch's head. The harness did not run and its three
requirements were not asked for, which the same run prints; no leg above depends
on any of them.

Who has read this

Nobody but me. There is no second reader on this change, and the commands above
stand in place of one rather than a claim that somebody checked them.

iderex added 2 commits August 23, 2026 12:50
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/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>
@iderex
iderex merged commit 98adc1a into main Aug 23, 2026
36 checks passed
@iderex
iderex deleted the decisions-two-overtaken-readings branch August 23, 2026 10:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant