From a60e04ed47abb7ca072e5c54b12ec41dde3b83c6 Mon Sep 17 00:00:00 2001 From: jochen Date: Fri, 13 Nov 2026 01:49:27 +0100 Subject: [PATCH] Answer A-326 to A-328: the build-input cycle is allowed, a late registration places its pipelines, the runner's own pipeline is never held Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- .../01-to-be/47-milestones/G-22-lead-answers-2.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-22-lead-answers-2.md b/03-DESIGN/01-to-be/47-milestones/G-22-lead-answers-2.md index 4d62222c..43a97062 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-22-lead-answers-2.md +++ b/03-DESIGN/01-to-be/47-milestones/G-22-lead-answers-2.md @@ -602,3 +602,17 @@ the principle that settles it, cited as "design 47 G A-n". outcome `bypassed`, asked of no one, said. For an artifact of kind `archive` or `upstream` with no language, its lint, unit and integration steps are `bypass` whatever its policy says, so no build seat is asked for them; every other step keeps its policy. +- **A-326** (§47, §49, §51, §270, ADR 0614 §6; principles 3, 8) A cycle through a build module's own inputs is not + §49's: where the build edge (kind 3) goes out of an artifact of a module that holds a build seat into an artifact it + builds, the running version builds the new one (§270), so the cycle is broken at the running version and is allowed. + Every other cycle with a build edge is refused at take-in, naming every artifact on it (§49, §51); the indexer builds + that rule in G, over the catalog graph it keeps. An edge of kind 4 names the artifact that offers the provision (its + `answered-by`), not the module's first process resource. +- **A-327** (§21, §23, §54; principles 1, 3) A pipeline started before its module has a registration is placed when the + registration arrives: the runner, on `registration-changed`, places from the registration the steps of every pipeline of + that module that has none, once each (by compare-and-set), and says it. Until then the pipeline says it waits on the + module's registration. +- **A-328** (§29, §65, §270; principle 5) A take-in that changes the runner holds every other pipeline of the take-in + until the new runner runs (§65), but never the runner's own pipeline: that one runs on the running runner, as a build + module's running version builds its successor (§270), so its pass lets the new runner be wanted (§29) and its running + releases the held ones. The bound stays only as a failure bound, with its finding.