Hold a config value for the pull request that introduces its key (issue 1826, ADR 0502) #437

Merged
mesh-tools merged 4 commits from fix/1826-held-config into main 2026-10-22 09:38:31 +00:00
Member

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: mesh-config takes pull-declares and held from the controller only, propose with pull (always asked of the operator), keeps held values apart from values, writes them at the merge (held at the merged head, same declaration digest) and drops them on a close (a close the forge cannot confirm drops nothing; a five-minute look finds what an event missed; the forge's answer is read as captured in testdata). mesh-delivery-gate asks the check again when a value is held or dropped.

Reviewed-by: reviewer-1826@shanks at 332aa75afd

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: mesh-config takes pull-declares and held from the controller only, propose with pull (always asked of the operator), keeps held values apart from values, writes them at the merge (held at the merged head, same declaration digest) and drops them on a close (a close the forge cannot confirm drops nothing; a five-minute look finds what an event missed; the forge's answer is read as captured in testdata). mesh-delivery-gate asks the check again when a value is held or dropped. Reviewed-by: reviewer-1826@shanks at 332aa75afd19c04083005e3c8792506ebee1db18
mesh-tools added 4 commits 2026-10-22 09:22:04 +00:00
A key a pull request adds is declared by no registered manifest, so its value was refused and the
group's composed check could not pass. A proposal may now name the pull request: judged against what
the controller told of its head, asked of the operator, kept apart on Approve, applied at the merge,
dropped at a close.
mesh-config raises config-changed (hold, drop) naming the pull request; the delivery, or its group's
composed check, is asked again on the gate's own path, with why in the transition. Not the recheck verb.
mesh-config: read the pull request's commit from head_sha (issue 1826)
mesh/delivery delivered
mesh/merge-gate head 332aa75afd19 merged into trunk 74baa5378716 — pass: group fix/1826-held-config composed: every machine composes with the change as it …
mesh/delivery-group group fix/1826-held-config delivered: every member is delivered
mesh/check failed: g14: novox/mesh-catalog#437: checks/imagebuild/go.mod cannot be read to check its mesh-sdk pin: Gitea API /repos/novox/mesh-catalog…
mesh/repo-check head 332aa75afd19 merged into trunk 74baa5378716 beside mesh-controller#434@4357b368 — pass: its merge-check.sh passed, each part in its to…
332aa75afd
Author
Member

Delivery novox/mesh-catalog@332aa75afd19 — delivered since 2026-10-22T09:44:47Z

Delivery plan — builds mesh-config, mesh-delivery-gate → novox; no bus step

  • tier 0: mesh-config, mesh-delivery-gate
  • novox: receives mesh-config, mesh-delivery-gate

Group fix/1826-held-config: novox/mesh-catalog@332aa75afd, novox/mesh-controller@4357b3688f

  • 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-catalog#437's head announced
  • 2026-10-22 09:23 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
  • 2026-10-22 09:23 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-catalog@332aa75afd19` — **delivered** since 2026-10-22T09:44:47Z **Delivery plan** — builds mesh-config, mesh-delivery-gate → novox; no bus step - tier 0: mesh-config, mesh-delivery-gate - novox: receives mesh-config, mesh-delivery-gate **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-catalog#437's head announced - 2026-10-22 09:23 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit - 2026-10-22 09:23 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-tools merged commit 529c156f64 into main 2026-10-22 09:38:31 +00:00
mesh-tools deleted branch fix/1826-held-config 2026-10-22 09:38:31 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-catalog#437