ADR 0257: the sweep after a build leaves an index for a confirmed collect
mesh/merge-gate pass: the change touches no module of the mesh's graph
mesh/repo-check pass: its merge-check.sh passed
mesh/delivery delivered

Let go of alone, an index's platforms would stay for ever under a collected record
(re-review of #207).
This commit is contained in:
jochen
2026-10-08 15:50:36 +02:00
parent b6690c38cf
commit 56e78612dc
2 changed files with 12 additions and 6 deletions
@@ -84,7 +84,9 @@ Windows included.
4. **Let the index go with the platform manifests it names that no kept index of the repository also
names, platforms first, only in a collect a person confirmed.** Chosen. The store tools can see every
manifest in a repository, and their dry run lists each one that stays and would lose a platform. A
person reads that before confirming. The sweep after a build lets an index go alone, as it did before.
person reads that before confirming. The sweep after a build does not touch an index: it leaves it
eligible for that collect. Letting it go alone would be option 1, and would record it as collected,
so no later collect would offer it again and its platforms would stay for ever.
**The copies no record names**, made before this record by a failed build, or before builds kept what
they stood on.
@@ -130,8 +132,10 @@ copies alone: another module's artifact is still kept by that module's own build
a confirmed `collect` reads, for every repository it will touch, which platform manifests the kept
indexes there name. If any of those reads fails, it lets nothing go. Then, for each index it lets go of,
it first deletes the platform manifests that no kept index of the same repository names, and deletes the
index last. A collect cut short leaves the index to be asked about again. The sweep after a build lets an
index go alone. This applies to every index the mesh lets go of, upstream artifacts included.
index last. A collect cut short leaves the index to be asked about again. The sweep after a build asks
the store whether each eligible reference is an index (one read of its manifest). It skips every index,
leaving it eligible and not recorded as collected, and lets go of everything else as before; a read that
fails stops the sweep. This applies to every index the mesh lets go of, upstream artifacts included.
**5. A person may record a copy that no record names.** The controller's `mirrors` verb lists the copies
the records hold, with their states. Given references, it records the ones that are in a repository only
@@ -203,7 +207,8 @@ ADR 0097 is superseded in one sentence only: a base is copied into the image's o
- **The sweep.**
- Through the records, a confirmed collect lets an eligible index go with its own platform, platforms
first, and leaves the platform a kept index of the same repository names.
- The sweep after a build lets an index go alone.
- The sweep after a build leaves an eligible index eligible and lets an image go, and a later confirmed
collect takes the index with its own platform.
- An image is one delete.
- A kept index the store will not answer for stops a confirmed collect before its first delete, and an
index in a repository not read beforehand is kept.
@@ -116,7 +116,8 @@ A build that stands on an image published elsewhere copies it into the store fir
- **An index goes with its platforms only in a confirmed collect.** Before its first delete, it reads
which platforms the kept indexes of every repository it touches name, and lets nothing go if a read
fails. It deletes the platform manifests an index names that no kept index of its repository also
names, and deletes the index last. The sweep after a build lets an index go alone.
names, and deletes the index last. The sweep after a build skips every eligible index and leaves it
eligible for such a collect; it lets other eligible artifacts go as before.
- **A copy no record names** waits for a person. `artifact_store_references` lists each one in
`unrecorded_mirrors`, with what it alone marks. The controller's `mirrors` verb records the ones a
person names, and the sweep then decides about them.
@@ -130,7 +131,7 @@ A build that stands on an image published elsewhere copies it into the store fir
runs after a build: every kept archive held first, then each eligible reference let go and recorded
as collected, stopping at the first refusal by the store. It is bounded by a count and a time, says
what is left, and is a hand-act recorded with its `why`. A confirmed collect lets an index go with its
own platform manifests (ADR 0257); the sweep after a build lets it go alone.
own platform manifests (ADR 0257); the sweep after a build leaves an eligible index for it.
- **`mirrors`** lists the copied bases the records hold, with their states. Given references, it records
the copies that are in a repository only the copy step writes and that the store holds. It is a dry
run without `confirm`; with `confirm` it needs a `why`, and it is a hand act, logged once the copies