Skip to content

Date the four readings 0313 was decided on that were still standing - #508

Merged
iderex merged 1 commit into
mainfrom
af01-core/decision-record-re-readings
Sep 18, 2026
Merged

iderex merged 1 commit into
mainfrom
af01-core/decision-record-re-readings

Conversation

@iderex

@iderex iderex commented Sep 18, 2026

Copy link
Copy Markdown
Contributor

What changed

0313 gives 0001 a fourth permitted edit: a landed record whose pasted output or
whose sentence about a reading has gone false may gain one dated note opening
Read again on <date>:, placed under the reading it concerns, and nothing else
in the record moves. It named seven sites. Three closed with the record itself.
This dates the four that were left, at the five places in docs/decisions/ they
sit, in one change because all five are documents and every separate landing
moves the mainline under the others.

Site State the reading is in What this does
docs/decisions/0268-a-conjunctive-licence-expression.md command names a path the tree no longer carries output stays, note added
docs/decisions/0113-the-target-triples-the-gate-compiles-for.md ranked set under a completeness filter, true for 68 seconds and at no commit of the record output stays, note added
docs/decisions/0011-the-language-the-toolchain-and-the-binding-layer.md positional selector, and a paste that never reproduced three lines deleted, note added
docs/decisions/0303-the-licence-the-core-is-offered-under.md paste that never reproduced one line deleted, note added
docs/decisions/0001-decision-records.md prose gone false around a stale paste five names deleted, note added

The specific failure it prevents

A reader who runs a command out of the register that is meant to settle
arguments here, gets an answer the record contradicts, and has nothing in front
of them to say which of the two is wrong. Five paragraphs did that. Each now
carries a dated answer beside the command.

Evidence

Every reading below was taken on 2026-09-18, with the mainline at
1098527, which is the base of this branch.

0268's command, and where the file went:

git show origin/main:LICENSE | sed -n '349,365p'
fatal: path 'LICENSE' does not exist in 'origin/main'
git log -1 --format='%h %ad %s' --date=short origin/main --diff-filter=D -- LICENSE
89b9102 2026-09-05 Offer the core under MIT OR Apache-2.0, and reverse the set that follows [#303]

0113's command, and why its answer moved:

gh api repos/Flowfin/core/commits/b3090f025358f1905dee6ec95d52f48d50659076/check-runs \
  --paginate --jq '.check_runs[] | select(.completed_at != null)
    | "\(((.completed_at | fromdateiso8601) - (.started_at | fromdateiso8601)))\t\(.name)"' \
  | sort -rn | head -3
185     dependencies
116     Analyze (rust)
42      thread-detector

gh api repos/Flowfin/core/commits/b3090f025358f1905dee6ec95d52f48d50659076/check-runs --paginate \
  --jq '.check_runs[] | select(.name=="dependencies" or .name=="Analyze (rust)" or .name=="targets")
        | "\(.name)\tstarted=\(.started_at)\tcompleted=\(.completed_at)"' | sort
Analyze (rust)  started=2026-08-26T21:28:42Z  completed=2026-08-26T21:30:38Z
dependencies    started=2026-08-26T21:28:41Z  completed=2026-08-26T21:31:46Z
targets         started=2026-08-26T21:28:41Z  completed=2026-08-26T21:29:12Z

The three pasted lines were the answer between 21:30:38Z and 21:31:46Z and at no
later moment. The record landed at 21:49:19Z the same evening, so they were the
answer at no commit of it. The words eighty-five seconds in the sentence above
the paste are 116 minus 31; today the same subtraction is 185 minus 31.

0011's selector, empty, and the content selector that answers:

gh issue view 1 --repo Flowfin/core --json comments --jq '.comments[-1].body' | grep -A2 '^Entry 2:' ; echo "exit=$?"
exit=1
gh issue view 1 --repo Flowfin/core --json comments --jq '.comments | length'
9
gh issue view 1 --repo Flowfin/core --json comments \
  --jq '.comments[] | select(.body | startswith("Answering the open entries")) | .body' \
  | grep '^Entry 2:' | wc -c
424

One line of 424 characters. The three lines deleted were that line wrapped by
hand and cut mid-sentence, with the line grep -A2 also returns left off.

0303's line 33, against the line its command returns:

gh api repos/Flowfin/core/issues/1/comments \
  --jq '.[] | select(.created_at | startswith("2026-09-04T21:44")) | .body' | head -1 | wc -c
529
git show 1098527e:docs/decisions/0303-the-licence-the-core-is-offered-under.md | sed -n '33p' | sed 's/^    //' | wc -c
459

Both counts carry the trailing newline wc -c counts. The 458 characters that
stood there are an exact prefix, cut after the words "for the next reader."

0001's command, and the check the paragraph says does not exist:

git ls-tree --name-only origin/main .github/workflows/ | wc -l
26
git log origin/main --diff-filter=A --format='%h %ad %s' --date=short -- .github/workflows/decision-records.yml
a1fc0ef 2026-09-02 Give a record that narrows one clause of another a shape, and check it (#267)
gh issue view 110 --repo Flowfin/core --json state --jq .state
CLOSED

That workflow triggers on pull_request for every branch, and reading this
register is the whole of what it does.

One note per reading, counted with the declaring record excluded so its own
literal does not inflate the count:

git grep -c 'Read again on ' -- docs/decisions/ ':!docs/decisions/0313-a-dated-re-reading-of-a-landed-record.md'
docs/decisions/0001-decision-records.md:1
docs/decisions/0011-the-language-the-toolchain-and-the-binding-layer.md:1
docs/decisions/0091-what-the-first-release-contains.md:1
docs/decisions/0113-the-target-triples-the-gate-compiles-for.md:1
docs/decisions/0243-the-means-a-certificate-is-validated-with.md:1
docs/decisions/0268-a-conjunctive-licence-expression.md:1
docs/decisions/0269-a-reading-a-record-pasted-that-has-moved.md:1
docs/decisions/0303-the-licence-the-core-is-offered-under.md:1

Three of those eight landed with 0313. Five are this change.

The guards this ran through

No guard is added or edited here, so there is no deliberate violation to show.
The document checks that read this register were run at the commit being pushed:

bash .github/decision-records/decision-records.sh check
Records: 67. Fields found: 8.
ok    8 field(s) name a record that exists, name a clause, and are named back

bash .github/doc-paths/doc-paths.sh check
ok    81 document(s), 410 named path(s) resolved, 0 excused as examples

bash .github/invariants/invariants.sh check
Every rule above was applied to its subject and refused nothing.

bash .github/format/format.sh check
Every tracked source file above is written the way the formatter would write it.

No cargo run was made, and nothing outside docs/decisions/ is touched:

git diff --name-only origin/main...HEAD
docs/decisions/0001-decision-records.md
docs/decisions/0011-the-language-the-toolchain-and-the-binding-layer.md
docs/decisions/0113-the-target-triples-the-gate-compiles-for.md
docs/decisions/0268-a-conjunctive-licence-expression.md
docs/decisions/0303-the-licence-the-core-is-offered-under.md

What this does not cover

  • Whether a note is true. 0313 says of itself that a note is prose, that no
    reading of the tree judges it, and that it goes stale exactly as the paste
    under it did. That is unchanged here. What the notes buy is that the staleness
    is dated.
  • The two states 0113's site is in at once. 0313 prescribes deletion for an
    output that never reproduced and preservation for one a neighbouring sentence
    reasons from, and that site is both: the three lines were the answer at no
    commit of the record, and the number above them is derived from them. The
    output is kept, which is what the decision of 2026-09-18 asks for at this site
    on Four records anchor their measurements to a sha under git rev-parse origin/main, and 0269 deletes the anchor rather than a stale reading #366 and on 0001 says no check reads a decision record and pastes five workflow files, and a check over docs/decisions/ has run since 2026-09-02 #380 in its own words, and the note states both halves so a
    reader is not left to reconcile them. Which of the two states wins in general
    is not settled here.
  • Any other reading in these five records. Only the five sites the decision
    names are touched. No other paste was re-run and none is claimed to hold.
  • Readings outside docs/decisions/. 0313's subject is this register.
  • The rest of 0001, 0011, 0113, 0268 and 0303. No sentence of what any of
    them decided is moved.
  • Whether a check should read the shape of a note. Nothing in this tree
    refuses a note that departs from the declared form, which 0313 states of
    itself, and no check is added here.

Who has read this

Nobody other than its author. There is no second reader on this board tonight,
and the evidence above stands in place of one: every command is quoted with its
output so the reading can be repeated rather than trusted.

Closes #361
Closes #366
Closes #367
Closes #380

0313 gives 0001 a fourth permitted edit: a landed record whose reading has gone
false gains one dated note opening `Read again on <date>:` under the reading it
concerns, and nothing else in the record moves. It names seven sites. Three
closed with the record itself; these are the four that were left, at the five
places in the register they sit.

0268. The command under the conjunctive-licence mapping reads LICENSE, which
went out of this tree with 0303 on 2026-09-05, so the reading can never be taken
again. The output stays rather than being deleted under 0269, because the
paragraph beneath it draws (a), (b) and (d) out of those lines and the command
can no longer put them back.

0113. The check-run window was the command's answer for sixty-eight seconds on
2026-08-26 and at no commit of the record, which landed seventeen minutes after
that window closed. It moved because every run on that pinned commit has since
finished, and the command ranks a set under a completeness filter. The output
stays, because the sentence above it is 116 minus 31; the note carries what the
command answers today and the 154 that difference now is.

0011. The selector takes the last comment on #1, the answer it means is the
fourth of the nine that issue carries, and the command returns nothing. The
three lines under it are deleted as never reproduced - they were a hand-wrapped
prefix of one line of 424 characters, cut mid-sentence and dropping the line
the command also returns - and the note carries the selector 0091 already uses
on the same comment, which names it by content rather than by position. 0303's
line 33 was an exact prefix of the line its own command returns and is deleted
the same way; that command names its comment by the moment it was created and
needs no repair.

0001. A check over docs/decisions/ has run on every pull request since
2026-09-02, so the sentence saying no such check exists and the sentence saying
none of these workflows reads a decision record are both false. The five
workflow names are deleted under 0269, and the note says what the command
answers now, which of the paragraph's sentences still holds, and that the issue
it sends a reader to is closed.

What this prevents is a reader running a command out of the register that is
meant to settle arguments here, getting an answer the record contradicts, and
having nothing to tell them which of the two is wrong.

Closes #361
Closes #366
Closes #367
Closes #380

Signed-off-by: Nils Lehnen <30603423+iderex@users.noreply.github.com>
@iderex
iderex merged commit bad66a2 into main Sep 18, 2026
28 checks passed
@iderex
iderex deleted the af01-core/decision-record-re-readings branch September 18, 2026 13:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment