diff --git a/03-DESIGN/01-to-be/47-milestones/G-21-provider-and-revert-ask.md b/03-DESIGN/01-to-be/47-milestones/G-21-provider-and-revert-ask.md index b5d8105a..f65a1910 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-21-provider-and-revert-ask.md +++ b/03-DESIGN/01-to-be/47-milestones/G-21-provider-and-revert-ask.md @@ -5,6 +5,7 @@ design: 47 milestone: G updated: 2026-11-12 decisions: + - "ADR 0666" - "ADR 0656" - "ADR 0571" - "ADR 0564" @@ -24,8 +25,10 @@ One file of milestone G's part of [design 47](../47-delivery-from-commit-to-deli *§708 to §710 answer the assigner's develop questions on build-map rows AS14 and AS17 (2026-11-12), which the lead's answer A-167 ([G-20](G-20-lead-answers.md)) sent to a design line: which field names the seat whose holder provides a requirement, which field says a requirement carries contributed values and the edge's kind word (§357), and the form -of the assigner's ask when a revert is held (§300). Each is the design's choice within the record it cites, tested -against [the principles](../../../00-META/principles.md).* +of the assigner's ask when a revert is held (§300). §711 answers the indexer's develop question on build-map row IX8 +(2026-11-12), which the lead's answer A-212 (G-22, the lead's second answers file) sent to a design line: which acting steps +give an edge of kind 5 (§47), between which entries, and what a catalog entry's `acts` holds. Each is the design's +choice within the record it cites, tested against [the principles](../../../00-META/principles.md).* ## The provider a requirement points to @@ -114,3 +117,42 @@ against [the principles](../../../00-META/principles.md).* words, and the finding clears once the have names the reverted build; a newer want drops the ask and clears the finding; an unanswered ask raised again. Unit (node-engine): a want with `revert` `live` starts the reverted build with no `restore` call; unit (`meshwantsclient`): a `revert` other than `live` is refused. + +## The edge an acting rule gives + +- §711 **An acting rule gives an edge of kind 5 from the acting part to each entry it acts on, in the steps that act on + a delivered version.** (ADR 0656 §1; ADR 0666 §14, §19; §47, §49, §203, §265, §266, §270, §324, §374, §378, §535, + §569, A-208) This completes §47's row 5 for the indexer, which writes a catalog entry's edges (A-208). + - **The entry's `acts`.** The indexer fills a catalog entry's field `acts` when it makes the entry: for each seat + its manifest's `claims` names, each acting rule that seat's definition carries, among the definitions the entry's + catalog graph revision names in its `definitions` (read through the seat `mesh-catalog`'s verb + `seat-definitions`, as §708), as one item `{seat, step, on, bound}`: `seat` the claimed seat, `step`, `on` and + `bound` as the definition writes them, `bound` left absent where the rule names none (its step's default, §266, + is the reader's). Items sorted by `seat`, then `step`; a module that claims no seat with a rule has no `acts`. It + is what the runner (§535) and the builder (§546) read, and what the edges below are derived from; nothing else + writes it. The contract's description of `step` gains `pipeline` (§203). + - **The steps.** `grant`, `compose`, `place` and `check`, and from G's delivery `pipeline` in `check`'s place + (ADR 0666 §19; §65), each give kind 5: a grant or a credential, a composition, a placement, a verdict, each made + for the dependent's new version (ADR 0666 §14). `build` gives kind 3 (§47, §267), never kind 5. `take-in` and + `validate` give no edge: an entry is in a revision only once the indexer has taken it in and validated it, so + such an edge would always be met (principle 7). + - **Between which entries.** For each entry B with such a rule, and each other entry A of the same revision that + the rule's `on` matches (`every`; a language, A having an artifact of that language; `kind:image`, A having an + artifact of kind image, §324): one edge `kind` 5, `from` B's delivered artifact, `to` A's delivered artifact (the + artifact the entry's first process resource runs, else its first, as kinds 4 and 6 have it), `word` `acts`, `why` + ` `, `stale` false (it only orders, §378), `declared` false. No edge goes to B itself, nor to an entry + B's new version is built from or needs: one with a path of edges of kinds 1 to 4 to B in that revision (a + package, a fetched artifact, a build module or base, a provider), which B's running version acts on (§270). An + entry with no artifact has no edge. A rule of a seat no entry claims gives none; the step's own holder says that + (§233, §535). + - **How it is met.** The edge is met when B's new version has acted for A's build, as the holder's `wait-ended` + says and §374 records; for `compose` per node, by the assigner (§268). It is a delivery edge, so a cycle of it + with kinds 2, 4 and 6 only is delivered as one step, and one with kind 1 or 3 is refused naming it (§49, §569). + + Why: the rule already says the step and the entries, and the artifact a delivery orders is the one kinds 4 and 6 + already name, so no manifest word is added and no module is named in code (principles 7 and 8); a cycle left by a + rule is refused loudly at the check (principle 3). How it is checked: unit (indexer's graph), an entry claiming a + seat with rules `grant` on `every` and `build` on `go` carries both in `acts` with its seat; a grants part of rule + `grant` on `every` gives kind 5 to every other entry but none to itself nor to the build module and package it is + built from; a rule `compose` on `kind:image` gives edges only to entries with an image artifact; a rule `build` + gives no kind 5; an entry with no rule has no `acts`. diff --git a/03-DESIGN/01-to-be/47-milestones/G.md b/03-DESIGN/01-to-be/47-milestones/G.md index b056a674..3e338ec1 100644 --- a/03-DESIGN/01-to-be/47-milestones/G.md +++ b/03-DESIGN/01-to-be/47-milestones/G.md @@ -108,7 +108,7 @@ The part is twenty-one files, each read whole, its design lines numbered across - [G-18-fix-round-six-seven](G-18-fix-round-six-seven.md): the fix round of §587 to §676: the approval mark once no verb names its callers, the keeper's snapshots, the recovery module's verbs, the node-engine's kept entries, the gate before a marked verb's running, develop's D-16 to D-49, and a delivery's wait on another machine's network (§677 to §705). - [G-19-outside-wait-and-refusals](G-19-outside-wait-and-refusals.md): a delivery's wait on an outside cause, written whole once (§706, in place of §705), and the finding writer's own refusals in every bundle (§707, amending §580). - [G-20-lead-answers](G-20-lead-answers.md): the lead's one-line answers to develop's questions, each tested against the principles (A-1 on). -- [G-21-provider-and-revert-ask](G-21-provider-and-revert-ask.md): the provider a requirement points to, the named seat and the contribution edge (§708, §709, completing §357), and the assigner's ask of a held revert (§710, completing §300). +- [G-21-provider-and-revert-ask](G-21-provider-and-revert-ask.md): the provider a requirement points to, the named seat and the contribution edge (§708, §709, completing §357), and the assigner's ask of a held revert (§710, completing §300), and the edge an acting rule gives (§711, completing §47's kind 5). - [G-22-lead-answers-2](G-22-lead-answers-2.md): the lead's answers continued, from A-182. Design 34's milestone [every-event](../34-milestones/every-event.md) and design 46's milestone [7-approval-mark](../46-milestones/7-approval-mark.md) ship in milestone G's release, built in its repositories beside G's lines (lead-47, 2026-11-11 15:30 CET); where one of their lines and a line of G differ, G's later line holds and the other is corrected in place (§624 to §626).