787563358b
Leave the engine's acts out of the bus tools' removals, so ace's tool runner, which carries the bundle on its own account, is no second writer and the grants part composes the bus's user list again (issue 774)
jschoubben2026-10-30 12:34:22 +01:00
8f212e559a
Merge pull request 'Design 47's last milestones: the keeper, self-check, healers, hand-acts, provisioner, vault, artifact sweep, disk readings, credential forms (issues 774, 1952, 1953, 1954, 1955)' (#560) from feat/774-l3-reland into main
mesh-tools2026-10-30 11:01:48 +00:00
1aa22efb0d
Merge pull request 'mesh-delivery-gate: an answer stands only for the ask it answers, so the approved release merges (issue 1730)' (#562) from fix/gate-answer-stands-for-its-ask into main
mesh-tools2026-10-30 11:01:15 +00:00
f074fb8df4
messenger: say each ask taken on the bus as operator-channel.asked.<asker>, so a session hears an approval request open
fix/turn-handed-on-approve
jschoubben2026-10-30 11:44:22 +01:00
10789ce9fd
mesh-delivery-gate: an Approve is acted on or said within 60 s, on the bus and as an urgent condition
jschoubben2026-10-30 11:40:09 +01:00
d6a069ae49
mesh-delivery-gate: an answer stands only for the ask it answers, and a merge never handed says why
jschoubben2026-10-29 01:59:03 +01:00
cf51cc7dbf
Say a failed test's whole output on the Go and Node build modules' own log streams, kept 14 days and 2 GiB, and read it with build_go_log and build_node_log, so a cut verdict's cause is read, not guessed
fix/checker-full-failure
jschoubben2026-10-30 11:10:07 +01:00
f3a57dcc56
mesh-self-check: the whole-run integration test answers the setting probes with the probes it asserts, since the default list is D13 and D-fill
jschoubben2026-10-30 10:21:28 +01:00
35ff67bda0
Design 47's last milestones: the keeper, self-check, healers, hand-acts, provisioner, vault, artifact sweep, disk readings, credential forms (issues 774, 1952, 1953, 1954, 1955)
jschoubben2026-10-30 02:21:51 +01:00
12c2574c9d
Merge pull request 'Let the forge's sshd take a burst of connections from one build machine, so a check's parallel fetch is not dropped (issue 774)' (#561) from fix/gitea-ssh-maxstartups into main
mesh-tools2026-10-30 00:54:02 +00:00
8bf85863ce
gitea: raise the forge's sshd MaxStartups to 100:30:200, so a burst of the mesh's machines fetching at once is not dropped
jschoubben2026-10-30 01:38:16 +01:00
f61265f7a0
Merge pull request 'Pin the parse-only mesh-sdk in the build modules, so they build design 47's manifests (issue 774)' (#559) from fix/774-new-words-first into main
mesh-tools2026-10-30 00:10:07 +00:00
22ff0d1000
Pin the parse-only mesh-sdk 78c9ec8 in the build modules, which read each manifest they build, so the new words are read first (issue 774)
jschoubben2026-10-30 00:39:37 +01:00
7d43574783
Pin mesh-sdk 6e4a301 in the build modules, which read each manifest they build, so the new words are read first (issue 774)
jschoubben2026-10-30 00:23:30 +01:00
96b129e544
Merge pull request 'mesh-config: read config declarations from each placed module's own manifests on the bus, never from the controller (issue 1953)' (#558) from fix/1953-config-from-builds into main
mesh-tools2026-10-29 19:47:55 +00:00
0d71d8b56c
Move the head so the checker takes #558 again: a reopened pull request is not taken back as a candidate (recovery of de-spiegel, operator's yes 2026-10-29 17:56 CET)
jschoubben2026-10-29 18:10:27 +01:00
96a37f58ca
mesh-config: read declarations from each placed module's own manifests as built, and placement alone, so a module from its own repository resolves (issue 1953)
jschoubben2026-10-29 15:19:24 +01:00
030f9ee4e7
Merge pull request 'Revert L3: its node-engine removed every held module on novox, the bus server among them (issue 774)' (#557) from revert/774-l3 into main
mesh-tools2026-10-29 08:59:53 +00:00
c8240c38bb
Revert L3 (mesh-catalog, merge 15552413): its node-engine removed every held module on novox, the bus server among them, at 08:54 CET on 2026-10-29 (issue 774)
revert/774-l3
jschoubben2026-10-29 09:42:29 +01:00
1555241393
Merge pull request 'L3: mesh-vault mints, retires and signs; nats makes its certificate; messenger asks each engine (issue 774, ADR 0561), rebased onto L2' (#556) from feat/774-vault-mints-l2 into main
mesh-tools2026-10-29 07:44:23 +00:00
add6f143ca
mesh-delivery-gate: an answer stands only for the ask it answers, and a merge never handed says why
jschoubben2026-10-29 01:59:03 +01:00
b46089b698
Merge remote-tracking branch 'origin/main' into l3-mc-main
jschoubben2026-10-29 02:15:33 +01:00
dda14e0e22
mesh-build-go: give each ask a cache layer in its workspace, so what its digest and vet compile its tests find compiled
jschoubben2026-10-29 00:52:25 +01:00
6fa42dd69f
mesh-build-go: start the integration level's store and bus beside its compile, and compile the go.mod directories side by side
jschoubben2026-10-29 00:48:50 +01:00
37fb9f01aa
mesh-build-go: let a check's go vet warm the shared Go build cache with cgo off, and say each linted directory as it ends
jschoubben2026-10-29 00:46:19 +01:00
de2de44c98
mesh-build-go: give each ask a cache layer in its workspace, so what its digest and vet compile its tests find compiled
fix/check-speed
jschoubben2026-10-29 00:52:25 +01:00
1989dd7cf2
mesh-build-go: start the integration level's store and bus beside its compile, and compile the go.mod directories side by side
jschoubben2026-10-29 00:48:50 +01:00
31c860bc92
mesh-build-go: let a check's go vet warm the shared Go build cache with cgo off, and say each linted directory as it ends
jschoubben2026-10-29 00:46:19 +01:00
5dccf3820b
Pin mesh-build-go and mesh-build-node to mesh-sdk 261f41a, so a merge-only check ask answers the merge and runs no tests
jschoubben2026-10-29 00:10:42 +01:00
158348ede7
Merge pull request 'mesh-delivery-gate asks the operator's Approve on a verdict only: the one-hour fallback goes (issue 1733)' (#555) from fix/1733-no-hour into main
mesh-tools2026-10-28 21:29:52 +00:00
ff4c6c0435
Merge pull request 'The Go, Node and image build modules watch their settings file and say a capacity of 0 in their health' (#554) from fix/park-wakes into main
mesh-tools2026-10-28 21:03:17 +00:00
c193d2b389
Pin mesh-sdk 8eafc0c, the L3 group's head on mesh-sdk main with #120 and #121 (issue 774)
jschoubben2026-10-28 21:56:06 +01:00
10447d8c1e
mesh-config reads the placement beside the controller's assignments while both stand, as L2 has it and the vault does, and is listed as a reader of them (issue 774, ADR 0549 §5; re-review)
jschoubben2026-10-28 20:50:29 +01:00
5be6576117
Follow L2 under L3: the vault and mesh-config read the seat mesh-placement's placement, and the check that only listed modules read the controller's assignments moves into noplacement, as L2 deleted the placement check (issue 774, ADR 0567, ADR 0549 §3, §6)
jschoubben2026-10-28 20:34:27 +01:00
24fad2b92a
mesh-vault: pin mesh-sdk 4e6e5cc, the L3 group's head rebased on L2 (issue 774)
jschoubben2026-10-28 20:34:27 +01:00
d3eb5cae80
mesh-vault: secret-ask answers the callers its manifest names, each named as the runtime proved it, within the same bounds; the controller's relay as before (issue 774, ADR 0563 §8)
jschoubben2026-10-28 10:00:47 +01:00
2043200201
messenger: ask each machine's own engine whether it is root-free, the node seat node-engine's root-free, not the controller's (issue 774, ADR 0563 §6)
jschoubben2026-10-28 09:57:51 +01:00
ef618e8199
nats: the bus's certificate command moves here from mesh-controller with the same output, made once and checked, so the bus module makes its own certificate when a mesh is raised from nothing (issue 774, design 47 L3 s11)
jschoubben2026-10-28 09:36:21 +01:00
c00005c141
mesh-vault signs: its signing key and authority made once with their operator copies, the verb sign for a node's own certificate from bus state, the event signed, the state signers and the tools that read and reassert them (issue 774, ADR 0550 §2)
jschoubben2026-10-28 09:32:05 +01:00
bd5f170af0
The placement check's list of modules still reading the controller's assignments only shrinks against the trunk's copy (issue 774, ADR 0529 clause 2)
jschoubben2026-10-28 09:28:01 +01:00
6bbb8329e4
mesh-config resolves for the modules the catalogue's placement puts on a node alone, and the placement check refuses any other module that reads the controller's assignments unless listed with why (issue 774, ADR 0549 §3, §6)
jschoubben2026-10-28 09:27:13 +01:00
e6b913cac7
mesh-vault: account_retire refuses while the controller holds the lease or before the wants are read whole, as the passes do (issue 774, review round 1)
jschoubben2026-10-27 23:00:54 +01:00
411c1b8de8
mesh-vault: prove the vault whole on a real bus mints only from the lease write, and try a failed mint again at the pass; adopt the operator key before the watches open (issue 774, ADR 0561 §1-§4)
jschoubben2026-10-27 22:48:58 +01:00
64e6688ec8
mesh-vault: tell where modules stand and which node holds the bus from the catalogue's placement first, so the vault does not depend on the controller's assignments for them (issue 774, ADR 0549 §3, §5)
jschoubben2026-10-27 22:45:18 +01:00
2d57c9663a
mesh-vault: serve issue-account, the hand path that mints one wanted account now, and record a rotation at most once per loaded list's revision; a covered account still never rotates in place (issue 774, ADR 0561 §4, §9)
jschoubben2026-10-27 22:42:57 +01:00
5c1729523b
mesh-vault: retire an account the grants part no longer wants only within ADR 0230's bounds, keeping its value, and re-enable it when wanted again; account_retire for a person past the bound (issue 774, ADR 0561 §2)
jschoubben2026-10-27 22:39:13 +01:00
1628db6c80
mesh-vault: mint only while the controller's lease is handed away, read afresh before each mint, and say in vault_status what is held back and why (issue 774, ADR 0561 §3, §9)
jschoubben2026-10-27 22:35:08 +01:00
0b9f19b612
mesh-vault: mint each account the grants part wants and the vault holds no value or adopted hash for, in the controller's shape, hashed before account-issued and secret-changed (issue 774, ADR 0561 §1, §2, §4)
jschoubben2026-10-27 22:33:44 +01:00
39ce149f74
Merge pull request 'mesh-build-go's compose integration test gives its module one slot (issue 1126)' (#553) from fix/1126-capacity-transition into main
mesh-tools2026-10-28 20:24:49 +00:00
f37f93e812
Drop the unreachable 'before its check ends' caveat (issue 1733)
jschoubben2026-10-28 21:00:09 +01:00
cf4879eaa1
Ask the Approve when the check's verdict arrives, not after an hour (issue 1733)
jschoubben2026-10-28 20:59:46 +01:00
1e377fe862
Go build module: the compose test gives its module a slot, since a node with no capacity set now pulls nothing (issue 1126, ADR 0567 §15)
jschoubben2026-10-28 20:23:42 +01:00
848c0cbd03
Build modules: give the puller the settings file and say a capacity of 0 in health (needs the mesh-sdk fix/park-wakes pin)
jschoubben2026-10-28 20:02:30 +01:00
af89893d42
Merge pull request 'No repository names a node: placement files, particulars and per-node build defaults go (issue 1126, delivery 2 of 2)' (#552) from feat/1126-placement-seat into main
mesh-tools2026-10-28 18:33:00 +00:00
105c4d628c
Particulars check: skip the real-catalogue test when the checker hands no node names yet (ADR 0567 §16)
jschoubben2026-10-28 18:53:44 +01:00
59cad7154a
Pin mesh-sdk to the group's head 38dbe1d in the build modules, mesh-config, the gate and the vault; the vault's test answers by proposal (issue 1126)
jschoubben2026-10-28 18:52:29 +01:00
3b35e78733
build-hours takes one window and names no node, node names enter digests and checks by their clauses, and a leftover particulars file is refused
jschoubben2026-10-28 18:35:06 +01:00
e072abb35e
Go build module: a package whose tests read MESH_NODE_NAMES has the node list in its digest, so a new node misses a kept verdict
jschoubben2026-10-28 18:16:34 +01:00
e389e770d9
Build modules: capacity and build hours are this node's own values, no default names a node; the Go test tool hands the check's node names to the tests
jschoubben2026-10-28 18:15:33 +01:00
00613b438c
gitea commit trees: drop the listed directories, which only the bridge's placement files used
jschoubben2026-10-28 18:12:13 +01:00
d1f42564e3
Node names come from the run, not a file of the repository: the particulars check reads MESH_NODE_NAMES and fails without it
jschoubben2026-10-28 18:11:23 +01:00
5548e1030c
mesh-config reads placement from the seat's state (held by the assigner), not the indexer's
jschoubben2026-10-28 18:10:58 +01:00
7bb07ce349
New check: no placement directory and no manifest reading the indexer's placement, so the repository path cannot come back
jschoubben2026-10-28 17:58:53 +01:00
4e3b140d43
Delivery gate: a placement change is no pull request path, so the ask drops its placement wording and case
jschoubben2026-10-28 17:58:22 +01:00
b5aa226649
Build capacity is an integer per node layer, default 0: no manifest names a node's share (manifest side; the reader follows mesh-sdk S6)
jschoubben2026-10-28 17:57:57 +01:00
77b511a79a
Delete the placement check: placement is bus state, no repository file holds it
jschoubben2026-10-28 17:57:15 +01:00
d836a31aa7
Merge pull request 'power: its loop and boot tests run on a fake clock, so a busy build node cannot fail them (issue 1126)' (#551) from fix/power-loop-flake into main
mesh-tools2026-10-28 16:26:05 +00:00
683ce7e37f
Merge pull request 'dnsmasq starts at boot: its drop-in no longer orders after a target the package orders it before (issue 1126)' (#550) from fix/dnsmasq-cycle into main
mesh-tools2026-10-28 16:26:01 +00:00
3494548c88
power: the loop and run tests drive their own clock, so a loaded build node cannot starve their timing (flake in #549's check)
jschoubben2026-10-28 17:08:32 +01:00
3feeefc70f
Merge pull request 'gitea: set any field of a branch's protection or a repository's settings, saying whether each trunk stays protected (issue 1126, ADR 0566)' (#549) from feat/protect-as-trunk into main
mesh-tools2026-10-28 16:02:32 +00:00
3f552a17f6
dnsmasq: the drop-in no longer orders after network-online.target and its address wait is 2 s at most (cycle dropped the start at boot, issue 1126)
jschoubben2026-10-28 16:55:25 +01:00
16ea3824b5
gitea: gate and judge every trunk the gate's source names, not main alone
jschoubben2026-10-28 16:52:50 +01:00
fabb62da00
gitea: refuse a force-push onto a rule covering main until the module can ask the operator's Approve for it
jschoubben2026-10-28 16:48:55 +01:00
8068cf74a7
gitea: read a repository's settings back in the forge's own form, and take the settings it was missing
jschoubben2026-10-28 16:44:11 +01:00
6e97ba3867
gitea: fail a protection or settings write the forge answered and did not apply, and take every field gitea 1.27.3 edits
jschoubben2026-10-28 16:39:54 +01:00
448310908c
gitea: set any field of a branch protection rule through a tool, so a trunk's merge whitelist and override need no hand at the forge
jschoubben2026-10-28 16:25:16 +01:00
58309a9729
Merge pull request 'power: every reboot, poweroff and halt is bounded at 10 minutes (group fix/shutdown-bound, issue 1126)' (#547) from fix/shutdown-bound into main
mesh-tools2026-10-28 15:05:06 +00:00
6724dab0cf
power: bound every shutdown at ten minutes, not systemd's thirty (issue 1126)
jschoubben2026-10-28 15:30:54 +01:00
387ee59140
Merge pull request 'mesh-build-image: a node that cannot build here now stays healthy and says not eligible, so it never holds the delivery (issue 1126)' (#546) from fix/1126-ineligible-healthy into main
mesh-tools2026-10-28 14:20:40 +00:00
85bbeb37e3
Merge pull request 'mesh-vault: own answers a node within its bound — assignments from a watched mirror, one read per module, one synced record per answer (issue 1126)' (#545) from fix/1126-vault-own into main
mesh-tools2026-10-28 14:20:35 +00:00
363039f337
mesh-build-image README: a node without tun is healthy and not eligible, as the module now says (issue 1126)
jschoubben2026-10-28 15:01:42 +01:00
a9d96b30be
mesh-vault: a watch of the assignments begun again keeps nothing an earlier attempt took, and a module the mirror lacks is read directly before a credential is refused (issue 1126, review round 1)
jschoubben2026-10-28 14:55:36 +01:00
644a34cf49
mesh-build-image stays healthy on a node that cannot build here now (no tun) and says it is not eligible: the assigner read unhealthy as a failed delivery and held the build (issue 1126)
jschoubben2026-10-28 14:50:28 +01:00
277a4d0060
mesh-vault answers own in one pass: assignments from its watch, each module's once, one synced record per answer (issue 1126)
jschoubben2026-10-28 14:47:20 +01:00
69056948bf
Merge pull request 'The kernel module loads tun at boot and keeps the running kernel's modules across an upgrade; mesh-build-image takes no ask where it cannot build (group fix/ace-tun)' (#543) from fix/ace-tun into main
mesh-tools2026-10-28 13:07:42 +00:00
9cdac09ad9
Merge pull request 'knowledge-base.progress takes since: what changed in the last hour; issue-tracker.changes says each issue's moves from what to what' (#541) from feat/progress-since into main
mesh-tools2026-10-28 11:56:32 +00:00
86d37a14e7
mesh-build-image: pin mesh-sdk 1618837, the group's head (fix/ace-tun)
jschoubben2026-10-28 12:50:47 +01:00
d13f74df40
A node that cannot open /dev/net/tun takes no image build, and every node loads tun at boot and keeps its running kernel's modules
jschoubben2026-10-28 12:44:58 +01:00
dfe490d9e2
issue-tracker.changes reads each issue's moves over a window from the tracker's own log, so progress since says from what each issue moved, not only where it is
jschoubben2026-10-28 12:30:22 +01:00
4f317201c9
knowledge-base.progress takes since: only what changed in a window, read from the tracker's and mesh-delivery's history, so a five-minute report says what moved (the operator, 2026-10-28)
jschoubben2026-10-28 12:21:05 +01:00
25f6154564
Merge pull request 'Retire the spelling catalogue in the words check, and refuse a compiled program anywhere in the repository (group words/catalog)' (#540) from words/catalog into main
mesh-tools2026-10-28 11:31:37 +00:00
b8ba9dd966
Widen the no-binaries check to every tracked file: a program under checks/ is refused too
jschoubben2026-10-28 11:28:29 +01:00
002a0e1a12
Keep the claude-code fixture equal to the renderer's catalog wording
jschoubben2026-10-28 11:19:06 +01:00
9bb85a37f2
Retire the spelling catalogue: the words check lists it and skips module paths in imports
jschoubben2026-10-28 11:27:02 +01:00
774fcdfa93
Merge pull request 'gitea announces from the forge's events, not a poll: an edited base and a close are announced at once, one pass at start (issue 1422)' (#539) from fix/1422-gitea-events into main
mesh-tools2026-10-28 11:16:46 +00:00