Design 51: cite ADR 0617 for the unnumbered-first image and hold; narrow hold to what the sweep keeps, never an image
Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
This commit is contained in:
@@ -15,6 +15,7 @@ decisions:
|
|||||||
- "ADR 0612"
|
- "ADR 0612"
|
||||||
- "ADR 0614"
|
- "ADR 0614"
|
||||||
- "ADR 0613"
|
- "ADR 0613"
|
||||||
|
- "ADR 0617"
|
||||||
- "ADR 0606"
|
- "ADR 0606"
|
||||||
- "ADR 0607"
|
- "ADR 0607"
|
||||||
- "ADR 0610"
|
- "ADR 0610"
|
||||||
@@ -72,8 +73,8 @@ named, without a holder, until a build module publishes cargo packages.
|
|||||||
|
|
||||||
**One contract, a seat definition** (design 26, *A seat's definition*). Verbs: `publish`, `publish-part` (ADR 0611), `versions`, `remove` (a
|
**One contract, a seat definition** (design 26, *A seat's definition*). Verbs: `publish`, `publish-part` (ADR 0611), `versions`, `remove` (a
|
||||||
tagged version; the holder itself refuses `remove` of a version with no tag, but for the retention removal below), and
|
tagged version; the holder itself refuses `remove` of a version with no tag, but for the retention removal below), and
|
||||||
on `container-image-registry` `mirror` and `tags`; the two seats `distribution` holds add `hold`, for the artifact
|
on `container-image-registry` `mirror` and `tags`; the two seats `distribution` holds add `hold` and its release,
|
||||||
sweep. The five seats this milestone changes, these four and `mesh-broker`, are defined whole, their contracts moved
|
with the events `held` and `released`, for the artifact sweep (ADR 0617 §2). The five seats this milestone changes, these four and `mesh-broker`, are defined whole, their contracts moved
|
||||||
into `mesh-contracts` (ADR 0613 §1; design 26). Events: `published`, `refused` (added to ADR 0605 §2's two, additively) and `removed`, each
|
into `mesh-contracts` (ADR 0613 §1; design 26). Events: `published`, `refused` (added to ADR 0605 §2's two, additively) and `removed`, each
|
||||||
carrying the name, version, kind, tag, digest, fingerprint, commit and holder, and `refused` its reason; each seat's
|
carrying the name, version, kind, tag, digest, fingerprint, commit and holder, and `refused` its reason; each seat's
|
||||||
events are its own family, `<seat>.events`, kept seven days. A holder stores
|
events are its own family, `<seat>.events`, kept seven days. A holder stores
|
||||||
@@ -83,8 +84,9 @@ under the version it is given and counts nothing.
|
|||||||
form ADR 0363 gives a restricted family: `publish` and `publish-part` the build modules, and a part only from the
|
form ADR 0363 gives a restricted family: `publish` and `publish-part` the build modules, and a part only from the
|
||||||
proved caller that opened its transfer; `mirror` mesh-build-image; `remove` the builder, for a tagged version, and the
|
proved caller that opened its transfer; `mirror` mesh-build-image; `remove` the builder, for a tagged version, and the
|
||||||
holder of the artifact sweep, for an untagged bundle, archive or copied base with the reason retention (ADR 0610 §3);
|
holder of the artifact sweep, for an untagged bundle, archive or copied base with the reason retention (ADR 0610 §3);
|
||||||
`hold` (on the two seats `distribution` holds: keep one held thing from removal, and let it go again) the holder of
|
`hold` (on the two seats `distribution` holds: keep one untagged bundle, archive or copied base that the artifact
|
||||||
the artifact sweep alone. Every removal, whoever asked it, emits `removed` with its reason.
|
sweep's rules keep from removal by retention, and let it go again; never an image of its own) the module that runs
|
||||||
|
the artifact sweep alone (ADR 0617 §2). Every removal, whoever asked it, emits `removed` with its reason.
|
||||||
Declaring `invokes` alone grants nothing. The holder checks the caller identity the tool runner proved and stamps on
|
Declaring `invokes` alone grants nothing. The holder checks the caller identity the tool runner proved and stamps on
|
||||||
the request (design 25 § 12.4), never a name in the request's body, and answers any other caller with a refusal naming
|
the request (design 25 § 12.4), never a name in the request's body, and answers any other caller with a refusal naming
|
||||||
the verb.
|
the verb.
|
||||||
@@ -192,10 +194,12 @@ the verb.
|
|||||||
pseudo-version a consumer requires (the indexer's tool `indexer_requirements`). The builder numbers nothing for that
|
pseudo-version a consumer requires (the indexer's tool `indexer_requirements`). The builder numbers nothing for that
|
||||||
name until all three answered (ADR 0606 §3), and writes a finding naming the silent one meanwhile, cleared once all
|
name until all three answered (ADR 0606 §3), and writes a finding naming the silent one meanwhile, cleared once all
|
||||||
three answer. Today that gives Go `v0.1.14` and npm `0.1.18`; a name with none starts at `0.1.0`.
|
three answer. Today that gives Go `v0.1.14` and npm `0.1.18`; a name with none starts at `0.1.0`.
|
||||||
- **An unknown floor does not stall the build of an image, bundle or archive.** The floor of `distribution`'s own
|
- **An unknown floor does not stall the build of an image, bundle or archive** (ADR 0617 §1 for an image). The floor of `distribution`'s own
|
||||||
names is `distribution`'s `versions`, which only its new build serves, and the same holds for the forge module and
|
names is `distribution`'s `versions`, which only its new build serves, and the same holds for the forge module and
|
||||||
the builder: waiting would never end. So a trunk build of an image, bundle or archive whose floor is not yet known
|
the builder: waiting would never end. So a trunk build of an image, bundle or archive whose floor is not yet known
|
||||||
is built unnumbered and published by its digest (as a bundle or archive is from every done key, ADR 0605 §3). That
|
is claimed with no number, so none travels in its build request, built unnumbered and published by its digest (as a
|
||||||
|
bundle or archive is from every done key, ADR 0605 §3; an image so by ADR 0617 §1). Such fingerprints are numbered
|
||||||
|
in merge order once the floor answers (ADR 0606 §1). That
|
||||||
publish is what wakes the floor: the builder hears the holder's `published` on its durable consumer of
|
publish is what wakes the floor: the builder hears the holder's `published` on its durable consumer of
|
||||||
`<seat>.events` and asks the floor again then, never on a timer; once all three answer it numbers the build and emits
|
`<seat>.events` and asks the floor again then, never on a timer; once all three answer it numbers the build and emits
|
||||||
`numbered`, which the build module consumes to call `publish` with the version and the held digest, which stores
|
`numbered`, which the build module consumes to call `publish` with the version and the held digest, which stores
|
||||||
@@ -240,9 +244,9 @@ The retention of *The package registry* below, and the artifact sweep, keep work
|
|||||||
removal emits `removed` and the builder marks its entry, so `versions` never says `published` for bytes that are gone.
|
removal emits `removed` and the builder marks its entry, so `versions` never says `published` for bytes that are gone.
|
||||||
With the store's write side closed, the artifact sweep (seat `mesh-artifact-sweep`, held by artifact-store-tools) no
|
With the store's write side closed, the artifact sweep (seat `mesh-artifact-sweep`, held by artifact-store-tools) no
|
||||||
longer deletes or holds by writing to the store: it calls `remove` on the seat that holds the thing, with the reason
|
longer deletes or holds by writing to the store: it calls `remove` on the seat that holds the thing, with the reason
|
||||||
retention, and `hold` to keep a kept archive from removal, both granted to its holder alone by `distribution`'s
|
retention, and `hold` to keep an untagged bundle, archive or copied base its rules keep from removal by retention,
|
||||||
caller list; its rules of what is kept (*The artifact store* below) stand, and it reads both reference forms.
|
which then skips it (ADR 0617 §2), both granted to its module alone by `distribution`'s caller list; its rules of what is kept (*The artifact store* below) stand, and it reads both reference forms.
|
||||||
`distribution` keeps what is held in its own state `holds` (bus state, template state), emits `held` and `released`
|
`distribution` keeps the holds in its own state `holds` (bus state, template state), emits `held` and `released`
|
||||||
on the seat's `<seat>.events`, and its tool `registry_holds` lists what is held, since when and for whom, and
|
on the seat's `<seat>.events`, and its tool `registry_holds` lists what is held, since when and for whom, and
|
||||||
releases one by hand. A `remove` or `hold` the holder refuses to the sweep writes the sweep's finding, naming the
|
releases one by hand. A `remove` or `hold` the holder refuses to the sweep writes the sweep's finding, naming the
|
||||||
thing and the reason, cleared by its next run with no refusal.
|
thing and the reason, cleared by its next run with no refusal.
|
||||||
@@ -346,7 +350,7 @@ answers (a holder down whole is its module's own health check's); `registry_inco
|
|||||||
- **Holder, added for the milestone.** A write to the store's port from any account but `distribution`'s process is
|
- **Holder, added for the milestone.** A write to the store's port from any account but `distribution`'s process is
|
||||||
refused, and a read from a node's container runtime is answered; the artifact sweep's `remove` with the reason
|
refused, and a read from a node's container runtime is answered; the artifact sweep's `remove` with the reason
|
||||||
retention removes an untagged bundle and emits `removed`, and the same call from another caller is refused; `hold`
|
retention removes an untagged bundle and emits `removed`, and the same call from another caller is refused; `hold`
|
||||||
keeps an archive from removal, emits `held` and is listed by `registry_holds`, which releases it with `released`; a
|
keeps an archive from retention's removal, a `hold` of an image or from another caller is refused, emits `held` and is listed by `registry_holds`, which releases it with `released`; a
|
||||||
refused sweep `remove` writes the sweep's finding and its next clean run clears it; the forge bridge says a
|
refused sweep `remove` writes the sweep's finding and its next clean run clears it; the forge bridge says a
|
||||||
branch-deleted kind for the forge module's `forge.delete`, a `forge.delete` from another account is refused by the
|
branch-deleted kind for the forge module's `forge.delete`, a `forge.delete` from another account is refused by the
|
||||||
bus, and an existing consumer of `forge` ignores the new kind; with the program stopped a read fails and the
|
bus, and an existing consumer of `forge` ignores the new kind; with the program stopped a read fails and the
|
||||||
@@ -358,7 +362,9 @@ answers (a holder down whole is its module's own health check's); `registry_inco
|
|||||||
it, and the build module, hearing `numbered`, publishes the version with the held digest; a package's trunk build
|
it, and the build module, hearing `numbered`, publishes the version with the held digest; a package's trunk build
|
||||||
waits; a second trunk build of a package's revision held `published` keeps its version and publishes nothing,
|
waits; a second trunk build of a package's revision held `published` keeps its version and publishes nothing,
|
||||||
while one numbered but refused is published by its second build under the same version; with `bridge_tags`
|
while one numbered but refused is published by its second build under the same version; with `bridge_tags`
|
||||||
silenced (a floor source other than the publish target) the floor finding is written and cleared once it answers.
|
silenced (a floor source other than the publish target) the floor finding is written and cleared once it answers;
|
||||||
|
with the image's own seat silent at the claim of `distribution`'s own image, the image is still built, published by
|
||||||
|
its digest, and numbered once its new build answers (ADR 0617 *How it is checked*).
|
||||||
- **Checker.** A changed build module invoking a verb no running holder serves is not run, and the verdict names the
|
- **Checker.** A changed build module invoking a verb no running holder serves is not run, and the verdict names the
|
||||||
modules composed from their manifests instead, and the verb.
|
modules composed from their manifests instead, and the verb.
|
||||||
- **Vault.** Reverting the milestone's merge mints the build modules' credentials again; the bootstrap's one-off
|
- **Vault.** Reverting the milestone's merge mints the build modules' credentials again; the bootstrap's one-off
|
||||||
|
|||||||
Reference in New Issue
Block a user