Skip to content

Delete the graph reading 0303 pasted, which a lockfile bump moved - #393

Merged
iderex merged 1 commit into
mainfrom
the-graph-this-record-pasted-moved-under-a-bump-392
Sep 17, 2026
Merged

iderex merged 1 commit into
mainfrom
the-graph-this-record-pasted-moved-under-a-bump-392

Conversation

@iderex

@iderex iderex commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

Closes #392.

What changed

Sixteen pasted output lines are deleted from
docs/decisions/0303-the-licence-the-core-is-offered-under.md. The
cargo metadata command above them stays, nothing is pasted in its place, and no
other line of the record and no other file moves.

git diff --stat origin/main...HEAD
 .../0303-the-licence-the-core-is-offered-under.md        | 16 ----------------
 1 file changed, 16 deletions(-)

The failure it prevents

The record pasted the resolved dependency graph of this tree as evidence for a
sentence about licences. One of the sixteen lines stopped reproducing when the
lockfile was bumped, so a reader running the command met one line disagreeing
with the record and had nothing in front of them saying which of the two was
wrong. That is the defect class this repository's first rule leads with, standing
in the record that carries the licence the core is offered under.

The evidence

Read at origin/main c6ccf5e3ece1726744043b36dc86d9d83bdef194, which is the
base of this branch.

git merge-base --is-ancestor c6ccf5e3ece1726744043b36dc86d9d83bdef194 HEAD ; echo "exit=$?"
exit=0

The paste as it stood, against the same command run here:

git show origin/main:docs/decisions/0303-the-licence-the-core-is-offered-under.md \
  | sed -n '337,352p' | sed 's/^    //' | tr -d '\r' > paste.txt
cargo metadata --format-version 1 --locked \
  | jq -r '.packages[] | select(.name != "flowfin-core") | "\(.name) \(.version) \(.license)"' \
  | sort | tr -d '\r' > live.txt
diff paste.txt live.txt
16c16
< ureq-proto 0.6.1 MIT OR Apache-2.0
---
> ureq-proto 0.6.3 MIT OR Apache-2.0

tr -d '\r' is in both pipelines because jq writes CRLF on the machine this
was run on. Without it the diff reports all sixteen lines as moved, which is the
machine and not the tree. The reading is stated with that bound rather than
without it.

The lockfile says the same about the one line, with no build in the way:

git grep -n -A1 'name = "ureq-proto"' origin/main -- Cargo.lock
origin/main:Cargo.lock:129:name = "ureq-proto"
origin/main:Cargo.lock-130-version = "0.6.3"

git log --oneline -1 origin/main -- Cargo.lock
f2b8062 Bump ureq-proto in the cargo group across 1 directory

Nobody edited the record. The bump moved the tree under a paste that was correct
on the day it was written.

Why the output goes rather than being refreshed

0269 decides this case and this change applies it without interpreting it:

git show origin/main:docs/decisions/0269-a-reading-a-record-pasted-that-has-moved.md | sed -n '13,16p'
Where a landed record pastes a command and the output that command produced, and
the output no longer reproduces, the output is deleted and the command is left
standing alone; nothing is pasted in its place, and this is a fourth edit that is
not a supersession.

0001 receives that narrowing in its own header, so this is an edit the register
permits rather than a supersession of 0303:

git grep -n '^Narrowed-by: 0269' origin/main -- docs/decisions/0001-decision-records.md
origin/main:docs/decisions/0001-decision-records.md:9:Narrowed-by: 0269, on the rule that a record is never edited in place, which does not reach a pasted output deleted so that only the command that produced it is left

What keeps this inside 0269's repair, where #313 and #361 sit outside it, is that
no sentence beside the paste names a line of it or a value out of it. After the
deletion the record reads:

git show HEAD:docs/decisions/0303-the-licence-the-core-is-offered-under.md | sed -n '329,340p'
## The graph as it stands, read against this set

Nothing in the resolved graph is admitted only by the clause that moves. Read at
the head of the branch this record lands on:

    cargo metadata --format-version 1 --locked \
      | jq -r '.packages[] | select(.name != "flowfin-core") | "\(.name) \(.version) \(.license)"' \
      | sort

Sixteen packages, every one of them a single admitted term or a dual offer both
of whose members are admitted. The shrinking set costs this graph nothing.

Both halves of that sentence still hold against the command: it returns sixteen
lines, and ureq-proto still offers MIT OR Apache-2.0. What was stale was a
version inside evidence for a claim about licences, so 0303's decision, its
argument and its reversal conditions are untouched.

Guards

This change adds and edits no guard, so there is no refusal to show and no run
that watched one fail. The paste it removes was refused by nothing, and the one
place in the gate that runs the same verb discards its output:

git grep -n 'cargo metadata' origin/main -- .github/
origin/main:.github/dependencies/dependencies.sh:137:  cargo metadata --locked --format-version 1 --manifest-path "$1" >/dev/null

That call is the locked restore, whose subject is whether the manifest still
resolves to the committed lockfile. It compares nothing against any text in
docs/. No check here re-runs a command a record wrote down, which 0269 says of
itself in its own last section, and this change does not build one.

What this does not cover

  • The other forty-four indented cargo, rustc and rustup command lines in
    this board's texts.
    Both patterns this board sweeps pastes with match a first
    line beginning with one of a handful of verbs after git or gh, and neither
    reaches any of the forty-five:

    git grep -ncE '^ {4,}(cargo|rustc|rustup) ' origin/main \
      -- docs/ README.md SECURITY.md NOTICE.md CONTRIBUTING.md CODE_OF_CONDUCT.md \
      | awk -F: '{s+=$NF} END {print s}'
    45
    

    Most of them are declared readings of a scratch crate outside this tree, which
    nothing here reproduces. 0303's was the one whose own sentence says it was
    taken in this tree. The rest are unswept, not clean.

  • 0292's three sites naming ureq-proto v0.6.1. They are readings of a
    scratch crate resolving candidate graphs at the time that decision was taken,
    not readings of this tree, and this change does not touch them or decide what
    they owe.

  • Whether a check should refuse a stale paste at all. Unchanged by this, and
    0269 already records that none exists.

Who has read this

Nobody other than the author. There is one person on this account and no second
reader was available tonight, so this body carries the commands in place of one:
every number above is followed by the command that produced it, run against
origin/main and against this branch's head rather than against a working tree
holding anything else.

0303 pastes `cargo metadata` and the sixteen lines it returned, under a
paragraph that reads this tree's resolved graph against the licence set the
record decides. Fifteen reproduce; the sixteenth answers `ureq-proto 0.6.3`
where the paste carries `0.6.1`, because `f2b8062` bumped the lockfile after
the record landed. I found it by re-running every indented `cargo` command in
the board's texts, a population neither of the two patterns this board sweeps
pastes with matches.

A reader who runs the command meets one line disagreeing with the record and
cannot tell from the record which of the two is wrong. 0269 decides that case:
the output is deleted, the command is left standing alone, and nothing is
pasted in its place, because a fresh paste goes stale on the next bump.

The sentence under the paste counts sixteen packages and states a property over
their licences. Both still hold - the command returns sixteen, `ureq-proto`
still offers `MIT OR Apache-2.0`, and no licence in the output moved - so the
record's argument is untouched and no reversal condition is met. Nothing above
or below the paste names a line of it, which is what keeps this inside 0269's
repair rather than beside #313 and #361.

Closes #392

Signed-off-by: Nils Lehnen <30603423+iderex@users.noreply.github.com>
@iderex
iderex merged commit ec8f5f7 into main Sep 17, 2026
28 checks passed
@iderex
iderex deleted the the-graph-this-record-pasted-moved-under-a-bump-392 branch September 17, 2026 13:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0303 pastes this tree's resolved graph and one of its sixteen lines has moved, and neither paste sweep reaches a cargo reading

1 participant