Issue 1826, ADR 0502 (accepted): a required config value that a pull request introduces can now be held before its merge. A mesh-config proposal may name the open pull request; mesh-config checks the value against that pull request's declaration (the controller, part of the core, tells it what each head declares), asks the operator's Approve as for any trusted value, and keeps it apart. The merge gate composes the change with the approved held value; the merge writes it with its approval kept, only if it is held at the merged head; a close unmerged drops it and says so. It unblocks R4d, whose n8n needs media-gid on ace before its merge. One delivery group on branch fix/1826-held-config in mesh-controller and mesh-catalog. Reviewed in three rounds (reviewer-1826@shanks); later sub-items are noted on issue 1826.
This member: the controller tells mesh-config what each announced head of a pull request declares (pull-declares, {} when nothing new), asks it for the held values of a check's pull requests and carries them in the check request; the merge gate lays them over the change's composition only, never the base, and names each in its notes. An older mesh-config that refuses these calls is said in the log and the check goes on with none.
Issue 1826, ADR 0502 (accepted): a required config value that a pull request introduces can now be held before its merge. A mesh-config proposal may name the open pull request; mesh-config checks the value against that pull request's declaration (the controller, part of the core, tells it what each head declares), asks the operator's Approve as for any trusted value, and keeps it apart. The merge gate composes the change with the approved held value; the merge writes it with its approval kept, only if it is held at the merged head; a close unmerged drops it and says so. It unblocks R4d, whose n8n needs media-gid on ace before its merge. One delivery group on branch `fix/1826-held-config` in mesh-controller and mesh-catalog. Reviewed in three rounds (reviewer-1826@shanks); later sub-items are noted on issue 1826.
This member: the controller tells mesh-config what each announced head of a pull request declares (pull-declares, {} when nothing new), asks it for the held values of a check's pull requests and carries them in the check request; the merge gate lays them over the change's composition only, never the base, and names each in its notes. An older mesh-config that refuses these calls is said in the log and the check goes on with none.
Reviewed-by: reviewer-1826@shanks at 4357b3688f586fd93c0c53c587f1d6f2dfd83fb5
The controller tells mesh-config what a pull request declares, asks the approved held values with each check, and the build agent and merge gate lay them over the change's composition only: a key the trunk does not declare yet can then be approved before the merge (ADR 0502).
mesh/merge-gate head 4357b3688f58 merged into trunk 3d4ad6fefb7c — pass: group fix/1826-held-config composed: every machine composes with the change as it …
Deliverynovox/mesh-controller@4357b3688f58 — delivered since 2026-10-22T09:44:47Z
Delivery plan — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step
tier 0: mesh-controller
tier 1: build-agent
ace: receives build-agent
g14: receives build-agent
novox: receives mesh-controller, build-agent
shanks: receives build-agent
build-agent keeps data (ADR 0233): what it holds is backed up before it moves
grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before build-agent is judged on its first machine
composed together: pass — every machine composes with the change as it did without (4 of 4 compose)
Machines
mesh-controller on every machine running it: sent
build-agent on every machine running it: sent
mesh-config on every machine running it: sent
mesh-delivery-gate on every machine running it: sent
Transitions
2026-10-22 09:22 (new) → proposed (announced): novox/mesh-controller#434's head announced
2026-10-22 09:33 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-22 09:33 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-22 09:40 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-22 09:40 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit
2026-10-22 09:44 delivering → delivered (done): its walk is done, carrying its own commit: every machine of its deploy plan passed, or was left as its policy says
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-controller@4357b3688f58` — **delivered** since 2026-10-22T09:44:47Z
**Delivery plan** — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step
- tier 0: mesh-controller
- tier 1: build-agent
- ace: receives build-agent
- g14: receives build-agent
- novox: receives mesh-controller, build-agent
- shanks: receives build-agent
- build-agent keeps data (ADR 0233): what it holds is backed up before it moves
- grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before build-agent is judged on its first machine
**Group** `fix/1826-held-config`: novox/mesh-catalog@332aa75afd19, novox/mesh-controller@4357b3688f58
- composed together: pass — every machine composes with the change as it did without (4 of 4 compose)
**Machines**
- mesh-controller on every machine running it: sent
- build-agent on every machine running it: sent
- mesh-config on every machine running it: sent
- mesh-delivery-gate on every machine running it: sent
**Transitions**
- 2026-10-22 09:22 (new) → proposed (announced): novox/mesh-controller#434's head announced
- 2026-10-22 09:33 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-22 09:33 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-22 09:40 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-22 09:40 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit
- 2026-10-22 09:44 delivering → delivered (done): its walk is done, carrying its own commit: every machine of its deploy plan passed, or was left as its policy says
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
Merge check at 4357b368
Judged: head 4357b3688f58 merged into trunk 3d4ad6fefb7c; read beside it: mesh-catalog 74baa5378716, mesh-controller-main 3d4ad6fefb7c, mesh-host 4065b45ae84f, mesh-tools e0fadc43d9dd
mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller)
mesh/repo-check: PASS — its merge-check.sh passed
Delivery plan — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step
tier 0: mesh-controller
tier 1: build-agent
ace: receives build-agent
g14: receives build-agent
novox: receives mesh-controller, build-agent
shanks: receives build-agent
build-agent keeps data (ADR 0233): what it holds is backed up before it moves
grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before build-agent is judged on its first machine
read by no module's build: cmd/mesh-builder/check_spec_test.go, cmd/mesh-controller/merge_gate_held_test.go, cmd/mesh-controller/merge_gate_integration_test.go, cmd/mesh-controller/pull_declares_test.go, internal/builder/check_held_test.go
Run by the build seat on ace as build-1792660925524207914 (builds --log build-1792660925524207914).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Issue 1826, ADR 0502 (accepted): a required config value that a pull request introduces can now be held before its merge. A mesh-config proposal may name the open pull request; mesh-config checks the value against that pull request's declaration (the controller, part of the core, tells it what each head declares), asks the operator's Approve as for any trusted value, and keeps it apart. The merge gate composes the change with the approved held value; the merge writes it with its approval kept, only if it is held at the merged head; a close unmerged drops it and says so. It unblocks R4d, whose n8n needs media-gid on ace before its merge. One delivery group on branch
fix/1826-held-configin mesh-controller and mesh-catalog. Reviewed in three rounds (reviewer-1826@shanks); later sub-items are noted on issue 1826.This member: the controller tells mesh-config what each announced head of a pull request declares (pull-declares, {} when nothing new), asks it for the held values of a check's pull requests and carries them in the check request; the merge gate lays them over the change's composition only, never the base, and names each in its notes. An older mesh-config that refuses these calls is said in the log and the check goes on with none.
Reviewed-by: reviewer-1826@shanks at
4357b3688fDelivery
novox/mesh-controller@4357b3688f58— delivered since 2026-10-22T09:44:47ZDelivery plan — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step
Group
fix/1826-held-config: novox/mesh-catalog@332aa75afd, novox/mesh-controller@4357b3688fMachines
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.Merge check at
4357b368Judged: head
4357b3688f58merged into trunk3d4ad6fefb7c; read beside it: mesh-catalog74baa5378716, mesh-controller-main3d4ad6fefb7c, mesh-host4065b45ae84f, mesh-toolse0fadc43d9ddmesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller)mesh/repo-check: PASS — its merge-check.sh passedDelivery plan — builds build-agent, mesh-controller → ace, g14, novox, shanks; no bus step
Run by the build seat on ace as
build-1792660925524207914(builds --log build-1792660925524207914).