Feature 57's release of mesh-controller: the release branch feat/57-config-and-provisioning (reviewed and merged there: #346, #353 for issue 876) into main. Delivery group 57 bundle A with mesh-sdk, mesh-host and hq. Right after its delivery: mesh-controller.secret-move (until then machines on contract 12 raise an Urgent vault-silent condition; review C r1 finding 3, issue 755).
Feature 57's release of mesh-controller: the release branch feat/57-config-and-provisioning (reviewed and merged there: #346, #353 for issue 876) into main. Delivery group 57 bundle A with mesh-sdk, mesh-host and hq. Right after its delivery: mesh-controller.secret-move (until then machines on contract 12 raise an Urgent vault-silent condition; review C r1 finding 3, issue 755).
A file's text may live in files/<name> beside the manifest instead of inline,
so modules can move their files out of module.json (ADR 0349 clause 2, issue
654). The build packs files/ into the module's declared archive and reads each
template back from the packed bytes, proven by the digest, into content: the
manifest the mesh holds, composition and the node-engine stay as they are.
module check, the merge gate and module add read templates from the tree beside
the manifest, so a change to a template alone is judged. A file naming both
template and content, a template outside files/, a missing one, and a held
manifest that still names one are refused by name.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ADR 0348 clause 11: places, accesses and kept networks are placement, not config.
Today's mergeable files still take them as said, so nothing composes differently.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The settings verb's path splits a layer it is given into its config values and
its placement, so what a person types still works; a layer reads back and goes
into the history whole.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The facts snapshot, the take preview and the settings history read a layer as it
was set; tests that place give the layer through LayerOf.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Written by the integration branch's controller at bfc79c6 from the seed of
TestADeclarationIsTheSameAfterPlacementMoves.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A symlinked files/ or a symlinked directory under it let module check, the merge
gate and module add read a template from outside the repository tree, and a
symlink no template names passed them while the build's packing refuses it
(review of mesh-controller#313). Every entry under files/ must now be a plain
directory or file, and templates are read through an os.Root of the module's
directory.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The vault hands a secret only on request and reply, sealed to the asker's key
(hq ADR 0349 §11). The seat set is the controller's, so the verb is promised
here; optional until the vault that runs serves it (design 33 §7).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The manifest's hooks for the config form: read into the fields the settings form fills, written back as read, and judged by ConfigProblems; the rules are in config.go.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The config form's declaration and its registration refusals, each by name with what to do (ADR 0348, design 57 package K1).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
One registration refusal test per rule of design 57 package K1, the forms kept apart and written back as read, and dunst rewritten from settings to config composing to the same bytes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What a provider serves is its definition's (ADR 0348 clause 11): a layer
fills only the keys it asks for as ${setting:<key>}. Settle replaced any
served key a layer named, so a setting for one of a provider's files could
change what every consumer was told. influxdb on ace was the one live layer
relying on it and now serves its settings (mesh-catalog, merged first), so
grafana's data source composes byte for byte as before. UnusedSettings no
longer counts a literal served key as a place a setting lands.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A key a mergeable file took had no type, validation or trusted mark, and the config verb could never set it (ADR 0348 §4). A required config value nothing sets was refused naming ${setting:} and settings set, words the module does not use. Review of mesh-controller#320 (issue 660).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Mesh and node config may hold values only for keys on a fixed, reviewed list (hq ADR 0348 clause 7, design 57 package K2, issue 661). A build reads predefined.json at the root of the repository at the commit it builds and carries it with the commit's generation; module check and the merge gate read it from the tree. (Part 1 of 2: the changes to existing files.)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The list itself, read strictly (catalogue/predefined.go); the controller keeps a catalogue trunk build's list in its store when its commit's generation is larger than the one kept (migration 0098), so an older build's list heard later never replaces a newer one, and loads it with its store (hq ADR 0348 clause 7, issue 661). Part 2 of 2: the new files.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Part 3: the list's own reading (catalogue/predefined.go) and the tests of the build, module check, merge gate and registration (hq ADR 0348 clause 7, issue 661).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mesh/merge-gate head fbcf44702cd6 merged into trunk 9932adfa00fe — fail: head fbcf44702cd6 does not merge cleanly into trunk 9932adfa00fe: in conflict test…
mesh/repo-check head fbcf44702cd6 merged into trunk 9932adfa00fe — fail: head fbcf44702cd6 does not merge cleanly into trunk 9932adfa00fe: in conflict test…
Part 4: the tests of the list's reading and of the controller's commands on it (hq ADR 0348 clause 7, issue 661).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mesh/repo-check head 4b2eac702ab1 merged into trunk 221fe5a60d1f — pass: THE CHANGE ALTERS ITS OWN CHECK (merge-check.sh): feat/57-config-and-provisioning'…
The two lists added lines at the same place; taking the integration branch's here lets it merge cleanly, and the K2 store tests are listed again right after.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Placed above the lines both branches added at the end of the file, so the pull request merges into feat/57-config-and-provisioning without a conflict and the merged list is the union of both.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The controller plans config, templates and moved providers' provisions,
hands bus accounts to the vault and judges the new manifest words, on the
feature's SDK and node-engine validator (feature 57, config and provisioning).
mesh/merge-gate head 37e4219e28fd merged into trunk fcdecb436117 — pass: [release feat/57-config-and-provisioning, judged by its controller e2ea694217a7] t…
mesh/repo-check head 37e4219e28fd merged into trunk fcdecb436117 — fail: [release feat/57-config-and-provisioning, judged by its controller e2ea694217a7] T…
The forge applied the feature's patch without the last, empty, added line of
these files, so the commit's tree differed from the reviewed head (issue 866).
mesh/merge-gate head efc5f901afb7 merged into trunk cf897e89fe31 — pass: [release feat/57-config-and-provisioning, judged by its controller 93b947cc53b5] t…
mesh/repo-check head efc5f901afb7 merged into trunk cf897e89fe31 — pass: [release feat/57-config-and-provisioning, judged by its controller 93b947cc53b5] i…
mesh/repo-check head 6a6628a76961 merged into trunk d70bb1f38867 — fail: head 6a6628a76961 does not merge cleanly into trunk d70bb1f38867: in conflict cmd/…
route-proxy provides route: its consumers are sent again after it
route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
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 route-proxy, build-agent is judged on its first machine
Transitions
2026-10-16 08:17 (new) → proposed (announced): novox/mesh-controller#354's head announced
2026-10-16 08:17 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-16 08:17 checked → rejected (refused): the gate failed or could not run, or the repository's own check failed
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-controller@6a6628a76961` — **stopped** since 2026-10-16T08:32:26Z
**Delivery plan** — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
- tier 0: mesh-controller, route-proxy
- tier 1: build-agent
- ace: receives route-proxy, build-agent
- g14: receives build-agent
- novox: receives mesh-controller, route-proxy, build-agent
- shanks: receives build-agent
- route-proxy provides route: its consumers are sent again after it
- route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
- 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 route-proxy, build-agent is judged on its first machine
**Transitions**
- 2026-10-16 08:17 (new) → proposed (announced): novox/mesh-controller#354's head announced
- 2026-10-16 08:17 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-16 08:17 checked → rejected (refused): the gate failed or could not run, or the repository's own check failed
- 2026-10-16 08:32 rejected → stopped (closed): the pull request closed unmerged
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
route-proxy provides route: its consumers are sent again after it
route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
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 route-proxy, build-agent is judged on its first machine
Closed: it does not merge cleanly into main (17 files). Feature 57's release goes from branch release/57-config-and-provisioning: the release branch merged with main (being resolved and reviewed now), as one commit on top of main.
Closed: it does not merge cleanly into main (17 files). Feature 57's release goes from branch release/57-config-and-provisioning: the release branch merged with main (being resolved and reviewed now), as one commit on top of main.
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.
Feature 57's release of mesh-controller: the release branch feat/57-config-and-provisioning (reviewed and merged there: #346, #353 for issue 876) into main. Delivery group 57 bundle A with mesh-sdk, mesh-host and hq. Right after its delivery: mesh-controller.secret-move (until then machines on contract 12 raise an Urgent vault-silent condition; review C r1 finding 3, issue 755).
What a provider serves is its definition's (ADR 0348 clause 11): a layer fills only the keys it asks for as ${setting:<key>}. Settle replaced any served key a layer named, so a setting for one of a provider's files could change what every consumer was told. influxdb on ace was the one live layer relying on it and now serves its settings (mesh-catalog, merged first), so grafana's data source composes byte for byte as before. UnusedSettings no longer counts a literal served key as a place a setting lands. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>A key a mergeable file took had no type, validation or trusted mark, and the config verb could never set it (ADR 0348 §4). A required config value nothing sets was refused naming ${setting:} and settings set, words the module does not use. Review of mesh-controller#320 (issue 660). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>Delivery
novox/mesh-controller@6a6628a76961— stopped since 2026-10-16T08:32:26ZDelivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.Merge check at
6a6628a7Judged: head
6a6628a76961merged into trunkd70bb1f38867mesh/merge-gate: FAIL — head6a6628a769does not merge cleanly into trunkd70bb1f388: in conflict cmd/mesh-builder/main.go, cmd/mesh-builder/release_test.go, cmd/mesh-controller/checks.go, cmd/mesh-controller/desk_secret.go, cmd/mesh-controller/lean_walk_test.go, cmd/mesh-controller/release.go, cmd/mesh-controller/release_plan.go, internal/broker/streams.go, internal/broker/testdata/composed.conf, internal/builder/check.go, internal/catalogue/manifest.go, internal/catalogue/streams.go, internal/link/build.go, internal/link/events.go, testdata/beside/CAPTURED, testdata/beside/mesh-host/examples/foundation-first-node.lock, testdata/store-tests (modules: build-agent, mesh-controller, route-proxy)mesh/repo-check: FAIL — head6a6628a769does not merge cleanly into trunkd70bb1f388: in conflict cmd/mesh-builder/main.go, cmd/mesh-builder/release_test.go, cmd/mesh-controller/checks.go, cmd/mesh-controller/desk_secret.go, cmd/mesh-controller/lean_walk_test.go, cmd/mesh-controller/release.go, cmd/mesh-controller/release_plan.go, internal/broker/streams.go, internal/broker/testdata/composed.conf, internal/builder/check.go, internal/catalogue/manifest.go, internal/catalogue/streams.go, internal/link/build.go, internal/link/events.go, testdata/beside/CAPTURED, testdata/beside/mesh-host/examples/foundation-first-node.lock, testdata/store-testsDelivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on novox as
build-1792138625417766116(builds --log build-1792138625417766116).Closed: it does not merge cleanly into main (17 files). Feature 57's release goes from branch release/57-config-and-provisioning: the release branch merged with main (being resolved and reviewed now), as one commit on top of main.
Pull request closed