Design 47 follows ADR 0656 and ADR 0644: the delivery's own parts checked and delivered by their own change (issue 1921) #523
+37
-6
@@ -291,11 +291,17 @@ every other domain has something to run on. **Recorded by** the controller and t
|
||||
**Purpose.** To decide, send and apply what each node runs, and to say why.
|
||||
**Recorded by** the controller's `inventory` database; from ADR 0567, by the seat `mesh-module-assigner`, in its states on
|
||||
the bus. **Upstream of** Provisioning, Connectivity, Data
|
||||
and Health and repair. **Decided by** ADR 0100, 0126, 0176, 0181, 0207, 0221, 0252, 0261, 0411, 0539, 0549, 0559, 0565, 0567, 0571, 0634.
|
||||
and Health and repair. **Decided by** ADR 0100, 0126, 0176, 0181, 0207, 0221, 0252, 0261, 0411, 0539, 0549, 0559, 0565, 0567, 0571, 0634, 0656.
|
||||
**Uses:** node, machine, module, seat, manifest (Module), config value (Config), proposal (Operator and conversation).
|
||||
|
||||
- **assignment** — a module put on a node. Its config values on that node (module-assignment config,
|
||||
Config) are `mesh-config`'s, never part of what the controller records (ADR 0348 §9).
|
||||
- **assignment graph** — the module versions placed on nodes at one revision, with the edges between versions that
|
||||
its inputs give: provisioning, contribution, and the acting parts' versions that are to act on each entry. The
|
||||
assigner computes it from the catalog graph, the placements and the nodes' capabilities, and nothing else writes it;
|
||||
it keeps each revision naming the revisions of its inputs, served by the seat `mesh-wants`, and writes the wants
|
||||
from a trunk revision's alone (ADR 0656). Not the **catalog graph** (Delivery), whose entries are modules, not
|
||||
versions on nodes; not an **assignment**, one module put on one node.
|
||||
- **placement** — which module runs on which node, with its pins, host ports and bindings, and what a person
|
||||
decided of the node, as one key per node in the state `placement` of the seat `mesh-module-assigner`. It changes only by
|
||||
a placement proposal the operator approves, and no repository holds it or names a node (ADR 0567). Until ADR
|
||||
@@ -515,7 +521,7 @@ and the operator act. **Recorded by** the controller's `identity` and `licences`
|
||||
back when it fails. The domain is continuous integration and delivery, named **delivery**, and its parts live in
|
||||
the repository `mesh-delivery` (ADR 0429 §2). **Recorded by** the `mesh-delivery` module (deliveries) and the
|
||||
controller (the planner, the rollout) until release 6 of ADR 0429; from each release on, by the parts it builds. **Downstream of** Module, Core, Health and repair and Data.
|
||||
**Decided by** ADR 0162, 0218, 0236, 0237, 0238, 0239, 0250, 0267, 0270, 0276, 0323, 0401–0408, 0428, 0429, 0444–0447, 0524–0530, 0539, 0548, 0551, 0571, 0578, 0579, 0593, 0601.
|
||||
**Decided by** ADR 0162, 0218, 0236, 0237, 0238, 0239, 0250, 0267, 0270, 0276, 0323, 0401–0408, 0428, 0429, 0444–0447, 0524–0530, 0539, 0548, 0551, 0571, 0578, 0579, 0593, 0601, 0644, 0656.
|
||||
**Uses:** module, node, declaration and send (Placement), health (Health and repair), person.
|
||||
|
||||
- **merge check** — what a pull request carries before it may merge, judging the merge of its head into a
|
||||
@@ -524,11 +530,36 @@ controller (the planner, the rollout) until release 6 of ADR 0429; from each rel
|
||||
**composition check**; for a delivery group, one verdict on every member's head (ADR 0445, ADR 0447). Before
|
||||
release 4 of ADR 0429 a pull request carried two statuses, one for the modules the change touches and one
|
||||
for the repository's own script (ADR 0238).
|
||||
- **module graph** — the edges the indexer keeps between modules, from which each delivery part orders a source
|
||||
revision by its own rule: provisions, bus state, a served verb and a reader's capability are waited on; a package
|
||||
and a build module's change are triggers that rebuild, never waits; a verb edge on a cycle is left out (ADR 0603
|
||||
§1, §2, ADR 0614). Nothing stores the order.
|
||||
- **catalog graph** — the modules as their manifests declare them at one revision (bases, packages, provides and
|
||||
requires, invokes and serves), with the acting rules the seats declare; the indexer keeps it, one
|
||||
revision per source revision it takes in (ADR 0656). Its other name is **module graph**, the word for it before
|
||||
ADR 0656, from which each delivery part orders a source revision by its own rule: provisions, bus state, a served
|
||||
verb and a reader's capability are waited on; a package, and until research 085's milestone a build module's
|
||||
change, are triggers that rebuild, never waits; a verb edge on a cycle is left out (ADR 0603 §1, §2, ADR 0614); from research 085's milestone an acting part's edge is a wait within
|
||||
its step (ADR 0656). Nothing stores the order. Not the **assignment graph** (Placement), computed from it.
|
||||
*Not:* ~~build graph~~
|
||||
- **acting part** — the holder of a seat whose definition carries a rule: the step its holder acts in and the modules
|
||||
it acts on (ADR 0656), in the field `acts` (design 47): the indexer, the checker, the build modules, the
|
||||
node-engine, the grants part, the assigner. Within a revision its new version acts first in its step, a wait with a
|
||||
bound (ADR 0656); when it fails or is late, the modules it was to act on stay on their running builds and a
|
||||
condition names it (design 47). Not every
|
||||
**part**: an acting part may be any module that holds such a seat, a build module among them.
|
||||
- **graph difference** — a change's assignment graph against the current one: the new versions, the moved edges,
|
||||
the touched nodes and the order read off the edges. It is the change's delivery, and nothing stores a plan beside
|
||||
it (ADR 0656); the assigner serves it by the seat `mesh-wants`'s verb `difference` (design 47). Not a **delivery plan**,
|
||||
which was stored and handed out.
|
||||
- **revision view** — what every part acts on: the catalog graph with its heads, seat definitions, verdicts and
|
||||
fingerprints, served by the seat `mesh-catalog`'s verb `revision`, and the assignment graph computed from it,
|
||||
served by the seat `mesh-wants`'s verb `revision`, for a trunk revision or a candidate's heads; a pair, each half
|
||||
served by its one owner (ADR 0656; the verbs' names, design 47). A part with none for the current revision waits
|
||||
and says so (ADR 0656). The node-engine reads only the catalog half, beside its want (design 47).
|
||||
- **delivery record** — the gate's record of one milestone's delivery, a ledger instance it alone writes: the group's
|
||||
state (heads, verdicts, checks, asks), the trace (milestone, issues, pull requests, commits, the assignment graph
|
||||
revisions it moved between) and what happened to each entry on each node (ADR 0656). It holds no tiers and nothing
|
||||
else orders by it. Not a **delivery**, one commit on its way.
|
||||
- **checking program** — the rules every check applies, built from the change's heads (ADR 0656, ADR 0644) and run in
|
||||
a build seat's sandbox (ADR 0448 §2) with the revision view as its input and no bus account; the running checker
|
||||
only asks for it, reads its verdict, records and publishes it (design 47). Not the **checker**, the part that asks for it.
|
||||
- **composition check** — whether the machines a change touches still compose with it, run by the assigner
|
||||
from the modules the indexer and the builder hold, with the composition of `mesh-delivery-sdk`, the one the controller
|
||||
composes with
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user