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
This commit is contained in:
2026-11-13 01:49:27 +01:00
parent 6f417f30e7
commit a60e04ed47
@@ -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.