Merge pull request 'To-be 47: a change is built once, at its check (ADR 0350, issue 649)' (#348) from design/350-one-build-per-change into main

This commit was merged in pull request #348.
This commit is contained in:
2026-10-13 21:30:32 +00:00
@@ -4,6 +4,7 @@ status: in-progress
code: [mesh-controller, mesh-catalog modules/mesh-delivery] code: [mesh-controller, mesh-catalog modules/mesh-delivery]
updated: 2026-10-13 updated: 2026-10-13
decisions: decisions:
- "ADR 0350"
- "ADR 0323" - "ADR 0323"
- "ADR 0313" - "ADR 0313"
- "ADR 0306" - "ADR 0306"
@@ -57,7 +58,12 @@ commit's journey and in what order the steps are allowed.
group, the state table and their state, and nothing else. group, the state table and their state, and nothing else.
- **The forge's holder** sets a commit's statuses, keeps the delivery's view as one comment on the pull - **The forge's holder** sets a commit's statuses, keeps the delivery's view as one comment on the pull
request, and appends to the commit's note under `refs/notes/mesh-plan`. request, and appends to the commit's note under `refs/notes/mesh-plan`.
- **The build seat** builds and checks, asked by the controller as before. - **The build seat** builds and checks, asked by the controller as before. **A change is built once** (ADR 0350):
a check that passes also builds what its merge would move into the artifact store's scratch namespace, under a
reuse key (the source fingerprint and the builder's version), and the walk of the merge commit copies a build
of the same key, which the check's verdict names, by digest instead of building. Otherwise the walk builds and
says why, per module, in its record. Check builds go when the walk answering the merge ends, when the pull
request closes unmerged, and after seven days.
## A delivery ## A delivery