Skip to content

Record two of the answers the plan's decision issue took - #186

Merged
iderex merged 1 commit into
mainfrom
records/two-answers-from-the-plan-decision-issue
Aug 24, 2026
Merged

Record two of the answers the plan's decision issue took#186
iderex merged 1 commit into
mainfrom
records/two-answers-from-the-plan-decision-issue

Conversation

@iderex

@iderex iderex commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Closes #182. Closes #184.

What this does

#46 collected the questions this plan does not decide by engineering judgement,
and all eight were answered on 2026-08-24. Record 0000 says a decision that
exists only in an issue is not yet recorded:

git grep -n 'not yet recorded' origin/main -- docs/decisions/0000-how-decisions-are-recorded.md
origin/main:docs/decisions/0000-how-decisions-are-recorded.md:...a decision that exists only in an issue is not yet recorded.

This lands two of the eight. The other six are #179, #180, #181, #183, #185 and,
for entry five, #35.

0021-what-this-board-publishes.md, entry four, issue #182. This board
publishes downloadable release artefacts, they are signed rather than carrying a
bare checksum, and the release notes say they exist for checking this board
rather than as something the organisation ships to users. The record names the
tension with the scope this board opened with instead of resolving it by
silence, says plainly that the separating sentence depends on being read, and
names what publishing costs: signing, checksums, a bill of materials, a
vulnerability surface and an expectation of continuity.

0023-signed-commits-on-the-default-branch.md, entry seven, issue #184. A
commit on the default branch carries a verified signature, effective as the keys
operations#1609 sets up for the working accounts land. The record names the
costs that arrive after the decision - a key held and rotated, a repair that
rebuilds a branch at the end of the work rather than adding a commit at the
start, and what is left of the web interface and of automation - and it says
that earlier history does not become signed, because a property that holds from
a date and is read as a property of the whole is worse than no property at all.

Why the two are one change

They are one key-custody story. Signing a release artefact and signing a commit
both need a key held somewhere and rotated eventually, which is why the two
entries were answered together, and each record names operations#1609 as where
that story lives rather than restating it. The failure this prevents is two
custody stories with two different answers, one per record, discovered later.

What neither record claims

Neither claims a mechanism. 0023 says the requirement is a setting on the
branch protection rather than anything in this tree, so nothing here refuses an
unsigned commit, and it hands the reader the command that reads the live state
instead of a sentence they would have to trust. 0021 decides that artefacts
are signed and does not decide what checks a signature, by whom, or what a
reader does when the check fails - a published signature nobody verifies is a
file beside a file, and the record says so.

Both carry the four sections record 0000 fixes and both name in sections three
and four every option the entry rejected with what taking it would have cost.

The gate

Run at this head, in the order CONTRIBUTING.md names:

go build ./cmd/... ./internal/...        (no output)
go vet ./cmd/... ./internal/...          (no output)
gofmt -l cmd internal                    (no output)
go test -count=1 ./cmd/... ./internal/...
ok  	github.com/Flowfin/lab/cmd/contexts	0.730s
ok  	github.com/Flowfin/lab/cmd/lab	6.444s
ok  	github.com/Flowfin/lab/cmd/notices	40.279s
ok  	github.com/Flowfin/lab/cmd/pullrequest	0.702s
ok  	github.com/Flowfin/lab/internal/check	0.955s
ok  	github.com/Flowfin/lab/internal/contexts	0.667s
ok  	github.com/Flowfin/lab/internal/hardware	0.729s
ok  	github.com/Flowfin/lab/internal/invariants	1.034s
ok  	github.com/Flowfin/lab/internal/notices	0.633s
ok  	github.com/Flowfin/lab/internal/prose	0.737s
ok  	github.com/Flowfin/lab/internal/pullrequest	0.703s

go run ./cmd/lab check .
examined .
1 experiment directory walked, 1 record read
20 decision records read
the time this run read is 2026-08-24T19:17:50Z
0 refused

This change adds no code, so it adds no refusal site and owes no fixture. What
holds it is the record checks that already run over this tree: the section rule
that refuses a record missing any of the four headings, and the numbering rule
that refuses two records under one number. The run above is those checks reading
twenty records where they previously read eighteen.

The integration-hardware harness was not asked for and produced nothing here.

The means

Markdown under docs/decisions/, because record 0000 fixes that decisions live
there one per file in that shape, and the checks that read a decision record
already read that directory. No language, runtime or dependency is added.

What is left

The answers are decided; six of the eight records are not yet written, and each
has its own issue. Until a record exists, that decision lives in a tracker
comment, which is the state record 0000 refuses to treat as recorded.

No second person has read this change. The gate output above stands in place of
one.

Issue #46 collected the questions this plan does not decide by engineering
judgement, and all eight were answered on 2026-08-24. Record 0000 says a
decision that exists only in an issue is not yet recorded, so an answer sitting
in a tracker comment is what this change ends for two of the eight.

0021 records that this board publishes downloadable release artefacts, that they
are signed rather than carrying a bare checksum, and that the release notes say
they exist for checking this board rather than as something the organisation
ships to users. It names the tension with the scope this board opened with
instead of resolving it by silence, says the separating sentence depends on
being read, and names what publishing costs: signing, checksums, a bill of
materials, a vulnerability surface and an expectation of continuity. That is
issue #182.

0023 records that a commit on the default branch carries a verified signature,
effective as the keys operations#1609 sets up land. It names the costs that
arrive after the decision - a key held and rotated, a repair that rebuilds a
branch at the end of the work rather than adding a commit at the start, and what
is left of the web interface and of automation - and it says plainly that
earlier history does not become signed, because a property that holds from a
date read as a property of the whole is worse than no property at all. That is
issue #184.

The two are one change rather than two because they are one key-custody story.
Signing a release artefact and signing a commit both need a key held somewhere
and rotated eventually, and each record names operations#1609 as where that
story lives rather than restating it, so the failure this prevents is two
custody stories with two different answers.

Both carry the four sections record 0000 fixes, and both name in sections three
and four every option the entry rejected with what taking it would have cost.
Neither record claims a mechanism: 0023 says the requirement is a branch setting
rather than anything in this tree and hands the reader the command that reads
the live state, and 0021 says it decides that artefacts are signed and not what
checks a signature or what a reader does when the check fails.

The gate at this head: go build, go vet and gofmt are silent, every package
passes, and the runner reads 20 decision records over its own tree and refuses
nothing.

Refs #182, #184

Signed-off-by: Nils Lehnen <30603423+iderex@users.noreply.github.com>
@iderex iderex added documentation Improvements or additions to documentation planning labels Aug 24, 2026
@iderex iderex self-assigned this Aug 24, 2026
@iderex
iderex merged commit e99bc05 into main Aug 24, 2026
25 checks passed
@iderex
iderex deleted the records/two-answers-from-the-plan-decision-issue branch August 24, 2026 19:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation planning

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Record that a commit on the default branch carries a verified signature Record that this board publishes signed release artefacts

1 participant