jschoubben
f06058390c
Merge pull request 'Apply again a module whose resources are gone, move a module with nothing to back up, and report ok for a running module with nothing to watch (issue 1944)' ( #137 ) from fix/r6-reapply-missing into main
...
Reviewed-on: #137
2026-10-25 10:11:19 +00:00
jschoubben
958ccbde3e
Say a running module ok once looked at when nothing of it is judged, so mesh-host's canary can be healthy and its other nodes get the new engine (issue 1945)
mesh/delivery held for a person: merged without a passing check: only a person decides what follows
mesh/check pass 958ccbde3ed4 on f06058390c0f | unit 297 run, 1038 kept, 5 skipped | integration 300 run, 1039 kept, 4 skipped | over bound: unit (slow…
2026-10-25 11:08:10 +01:00
jschoubben
43d1c2456f
Apply a module again only for a newly missing resource, leave filled files out of the record check, and say when the applied state cannot be read (issue 1945)
2026-10-25 11:04:08 +01:00
jschoubben
c46937da04
Apply a module again when the engine holds no record of its resources or its health says one is missing, and move a module with nothing to back up without a backup (issue 1944, issue 1945)
2026-10-25 10:59:21 +01:00
jschoubben
cf455bc4fe
Merge pull request 'Never remove a module's resources while its own composition waits to be applied (issue 1944)' ( #136 ) from fix/r6-node-own-keeps-moved into main
...
Reviewed-on: #136
2026-10-25 09:23:28 +00:00
jschoubben
ecf142e451
Let only a module's wanted or newest composition hold the node's own apply back, never a stale refused one (issue 1945)
mesh/delivery merged: source.main moved to novox/mesh-host@cf455bc4fe3e
mesh/check pass ecf142e4513f on cf455bc4fe3e | unit 292 run, 1033 kept, 5 skipped | integration 295 run, 1034 kept, 4 skipped | over bound: unit (slow…
2026-10-25 02:01:24 +01:00
jschoubben
fa9e4483c8
Hold back the node's own apply while a module's composition cannot be read or is refused, naming it (issue 1944, issue 1945)
2026-10-25 02:56:20 +02:00
jschoubben
e62c32c8c3
Leave a record another module's composition now holds, whatever its type, instead of removing it in the node's own apply; a removed module holds nothing back (issue 1944, issue 1945)
2026-10-25 02:54:58 +02:00
jschoubben
2bfde7d659
Hold out a module whose own composition waits to be applied, so the node's own apply never removes the resources it moved there (issue 1944, issue 1945)
2026-10-25 02:52:10 +02:00
jschoubben
db06feed2e
Merge pull request 'Refuse an apply that would write a provisioner file empty, naming the file (issue 1944)' ( #135 ) from fix/r6-node-composition into main
...
Reviewed-on: #135
2026-10-25 00:17:56 +00:00
jschoubben
4e6b756bd2
Refuse an apply that would write a provisioner's file empty, read the node's own filled paths, and name the node's own composition when its apply fails (issue 1944, issue 1945)
mesh/delivery-group group fix/r6-node-composition held: a member is held: novox/mesh-sdk@10b6e202320f (merged without a passing check: only a person decides wh…
mesh/delivery held for a person: merged without a passing check: only a person decides what follows
mesh/check checking 4e6b756bd225 on b833d09d2872 | novox/mesh-host#135 in group fix/r6-node-composition
2026-10-25 01:49:00 +02:00
jschoubben
b833d09d28
Merge pull request 'R6: the node-engine applies from its wants and signed compositions, one module at a time; operator-signers (issue 1944)' ( #134 ) from feat/r6 into main
...
Reviewed-on: #134
2026-10-24 23:17:39 +00:00
jschoubben
81758b24a8
Pin mesh-sdk to feat/r6 748c564, which carries main's composer (issue 1943)
mesh/delivery-group group feat/r6 merged: every member is merged
mesh/delivery delivering: 0 machine step(s) passed
mesh/check checking 81758b24a8e4 on 285395d523e1 | novox/mesh-host#134 in group feat/r6
2026-10-24 23:06:00 +02:00
jschoubben
25ad5ce42c
Merge remote-tracking branch 'origin/main' into feat/r6
2026-10-24 23:00:09 +02:00
jschoubben
285395d523
Merge pull request 'R4g finish: merge-check.sh gone, reads-outside markers (issues 1295, 1935)' ( #133 ) from feat/r4g-finish into main
...
Reviewed-on: #133
2026-10-24 20:57:23 +00:00
jschoubben
b47df31834
Pin mesh-sdk to d7a9b96
2026-10-24 21:18:33 +02:00
jschoubben
fd05c8235d
Pin mesh-sdk to 7f9cc0e
2026-10-24 20:43:47 +02:00
jschoubben
98d1f165b7
Pin mesh-sdk to e45bdc0
2026-10-24 20:22:00 +02:00
jschoubben
332d8f161b
The carried genesis template no longer lists the controller's plan-moved event
2026-10-24 18:32:58 +02:00
jschoubben
5088755e5e
gofmt
2026-10-24 18:28:22 +02:00
jschoubben
e72c682450
Pin mesh-sdk to a523a8c
2026-10-24 18:18:06 +02:00
jschoubben
be5f31ce66
What runs is the agent's compositions plus the kept declaration's rest: health, filling, take act, directories and the others held out of an apply read it; a restart trusts the node-engine's own haves; the bed tests run off Arch (review round 1)
2026-10-24 18:13:40 +02:00
jschoubben
67db003813
Pin mesh-sdk to the head of feat/r6 (5da87a0)
2026-10-24 17:50:20 +02:00
jschoubben
e5a06cc73d
The node agent waits for a backup's end on the holder's event, not by polling; the manifest consumes it (R6-A A5)
2026-10-24 17:03:30 +02:00
jschoubben
20d0998cdd
The operator's public keys reach the node as the file operator-keys, fed by the node-engine's setting operator-signers (ADR 0539 clause 3)
2026-10-24 16:57:15 +02:00
jschoubben
83f16cff8d
apply FILE is no hand path: mesh-compose and a want are (ADR 0539 clause 10); genesis keeps the carried bundle
2026-10-24 16:55:23 +02:00
jschoubben
96d0322498
The node-engine reports reads-wants; a failed apply is said; the have's fingerprint and digest follow its health (R6-A A6)
2026-10-24 16:43:26 +02:00
jschoubben
b2003e7a38
A composition is applied only when the controller or the operator signed it; the node agent's integration tests on an embedded bus (R6-A A9, A1, A5)
2026-10-24 16:42:11 +02:00
jschoubben
3303797bfb
The node agent runs in the node-engine: watches the wants and compositions on the link, applies one module's composition, asks the backup, writes the haves (R6-A A1, A5, A6)
2026-10-24 16:39:51 +02:00
jschoubben
d5dd7761c6
The node agent: follows the wants and the node's compositions, applies one module at a time, backs a data module up first, holds it on a failed backup (R6-A A1, A2, A5, A6)
2026-10-24 16:36:21 +02:00
jschoubben
5f5f37b0b2
Pin mesh-sdk to feat/r6 S1-S3 (d6cef58): the composition bucket, the want's composition and backup answer, the have's composition and held phase
2026-10-24 16:31:20 +02:00
jschoubben
c30b86ae22
Proved: the evidence is a have under the running build (comment)
2026-10-24 16:26:39 +02:00
jschoubben
1598156752
The node-engine hears no declaration: the queue, orders, put-backs, unsaid, numbers and news go; a session says the facts in the node-engine's own order, and the first have proves a build (R6-A A7, A8)
2026-10-24 16:25:11 +02:00
jschoubben
e2b6f37168
Apply one module at a time: a scope of the module and what the others hold, and an owner record, so a removal is the module's own (R6-A A3, A4)
2026-10-24 16:16:32 +02:00
jschoubben
13bdcb694b
Mark the packages whose tests read files outside their directory, found by the review (issue 1935)
mesh/delivery-group group feat/r4g-finish merged: every member is merged
mesh/check checking 13bdcb694be0 on 3c3628c0ce46 | novox/mesh-host#133 in group feat/r4g-finish
2026-10-24 04:39:01 +02:00
jschoubben
89ebd0eefe
Merge remote-tracking branch 'origin/feat/r4g-finish-1935' into HEAD
2026-10-24 04:26:19 +02:00
jschoubben
b4f6537f80
Mark the packages whose tests read files outside their directory, so mesh-build-go never keeps their verdict (issue 1935)
2026-10-24 04:01:02 +02:00
jschoubben
7618f661ea
Fail, not skip, when the checker places no controller beside the node-engine (issue 1295)
2026-10-24 03:43:49 +02:00
jschoubben
3c3628c0ce
Merge pull request 'R4g (mesh-host): merge-check.sh goes; the checker judges the repository (design 47)' ( #132 ) from feat/r4g into main
...
Reviewed-on: #132
2026-10-23 17:50:55 +00:00
jschoubben
4b4bb09a05
Make the apply tests fit the checker's isolated step: accept any who in the refused line, skip aloud where no group can be set (issue 1919, R4g)
mesh/delivery-group group feat/r4g merged: every member is merged
mesh/check checking 4b4bb09a05a0 on 48c3e3834c69 | novox/mesh-host#132 in group feat/r4g
2026-10-23 18:54:53 +02:00
jschoubben
11b0a1fb29
Skip aloud the controller's step-nine check where the running checker places no controller (issue 1295, R4g)
mesh/delivery superseded: a newer head of the same pull request
mesh/check failed: unit: github.com/novox/mesh-host/internal/apply.TestJudgeDirectoriesSaysWhatTheWalkWouldRefuseAndChangesNothing: judge_directories_…
2026-10-23 18:35:32 +02:00
jschoubben
6ea77844d6
Judge the other genesis modules' toolchains; set aside only build-agent (issue 1152, R4g)
mesh/delivery superseded: a newer head of the same pull request
mesh/check failed: unit: github.com/novox/mesh-host/internal/bootstrap.TestTheControllersOwnManifestPassesStepNine: genesis_form_test.go:249: the cont…
2026-10-23 18:20:50 +02:00
jschoubben
2633573012
Skip aloud the tests whose subject R4g removes: genesis's build agent (issue 1152)
...
The build agent left mesh-controller with R4g (ADR 0524 section 5); genesis still installs it until issue 1152 decides where a new mesh's builder comes from. The tests that read its manifest say NOT JUDGED and are judged again with 1152.
2026-10-23 18:20:11 +02:00
jschoubben
976c9998d6
Delete merge-check.sh; the checker's levels run what it ran (issue 1295, S3; ADR 0529)
mesh/delivery superseded: a newer head of the same pull request
mesh/delivery-group group feat/r4g rejected: a member's own check failed
mesh/check failed: unit: github.com/novox/mesh-host/internal/bootstrap.TestGenesisInstallsTheCataloguesBuildAgent: builder_test.go:180: mesh-controlle…
2026-10-23 15:26:03 +02:00
mesh-tools
48c3e3834c
Merge pull request 'Take a root-made directory in the mesh's own tree, and hold a container until the file it mounts exists (issue 1873)' ( #131 ) from fix/1873-mesh-tree-dirs into main
2026-10-22 20:41:08 +00:00
jschoubben
0d12fb11a4
Make no container before a file it mounts is there, and clear the empty directory a runtime left at a file's path (issue 1873)
...
mesh/merge-gate head 0d12fb11a48b merged into trunk 59e6a6fa2a4a — pass: builds mesh-host → ace, g14, novox, shanks; no bus step; every machine composes wi…
mesh/repo-check head 0d12fb11a48b merged into trunk 59e6a6fa2a4a — pass: its merge-check.sh passed
mesh/check failed: mesh-build-go: no go build node qualifies: builders disagree: go1.27.1-X:nodwarf5 recipe 74744709d277ded9 on ace, g14, shanks; go1.…
On ace the postgres container was replaced at 22:11:51 mounting superuser.secret, a
file the provisioner's client fills only after the apply. The runtime made the
missing source a directory, and every fill after it failed with "is a directory".
A container whose mount source is a file the declaration declares, not yet on the
machine, now waits and is neither created nor replaced. The write of that file
(WriteFilled) applies what reads it, as before, so the container is made once the
file is there.
What the runtime already left is cured by the mesh: a declared file whose path is
an empty directory in the mesh's own tree (by its path and by where it leads),
owned by the engine's account, has that directory removed before the file is
written, and the outcome says so. A directory with anything in it, or outside the
tree, is never removed.
2026-10-22 22:29:39 +02:00
jschoubben
03b9c47af4
Judge the mesh's tree by where a path leads, not only by its text (issue 1873, review)
...
A root-only link inside /var/lib/mesh pointing out of it would have made a
directory outside the tree, owned by the engine's account, the mesh's to give
away: the fault of issue 1873 again. The path and the tree's root are now both
resolved, links followed, and the directory is the tree's only when the resolved
path lies below the resolved root as well.
2026-10-22 22:27:45 +02:00
jschoubben
cdbff1777e
Take a directory in the mesh's own tree that the engine's account owns as the mesh's, not as found (issue 1873)
...
postgres's data directory moved to /var/lib/mesh/postgres. On ace and novox that
directory was there, root:root 0700, before the directory resource was applied, so
the engine used it as found (issue 339's rule) and left it to root: the postgres
provider, running as the operator's account, cannot reach its own secrets,
consumers and grants there.
/var/lib/mesh is the engine's tree (root, 0755): only the engine's account makes a
directory in it. A directory below it owned by that account is now the mesh's and
is given its declared owner and mode. Anywhere else, or owned by another account,
issue 339's rule stands.
2026-10-22 22:23:04 +02:00
mesh-tools
59e6a6fa2a
Merge pull request 'Write the store's superuser secret where the postgres module now keeps it, and read the bus's release from its upstream image (issues 1873, 1875)' ( #130 ) from fix/1873-system-state-dirs into main
2026-10-22 20:04:32 +00:00
jschoubben
8c0bb9d453
Read the bus's release from the nats module's pinned server image, not a NATS_BASE build argument (issue 1875)
...
mesh/repo-check head 8c0bb9d4531d merged into trunk 4065b45ae84f beside mesh-catalog#453@e0bf87c2 — pass: its merge-check.sh passed
mesh/merge-gate head 8c0bb9d4531d merged into trunk 4065b45ae84f — pass: group fix/1873-system-state-dirs composed: every machine composes with the change …
mesh/delivery-group group fix/1873-system-state-dirs merged: every member is merged
mesh/check failed: unit: github.com/novox/mesh-host/internal/bootstrap.TestGenesisInstallsTheCataloguesBuildAgent: builder_test.go:180: mesh-controlle…
The nats module takes its server as an upstream artifact, pinned by digest
(issue 1641), and builds no image on a NATS_BASE argument any more. The test of
the bundle's bus read that argument, found none, and failed every mesh-host check
against the catalogue's main. Bootstrap's own code never read it: the bundle's
bus image comes from the bundle, so genesis was not affected. The test now
compares the bundle's image with the module's server by repository and digest.
2026-10-22 21:46:34 +02:00