3779 Commits
Author SHA1 Message Date
mesh-tools b1125c02cf Merge pull request 'Bridge for G's take-in: an empty modules/mesh-build-go/buildstep package' (#678) from fix/47-G-bridge into main 2026-11-13 13:40:27 +00:00
jschoubben a4bc3d95ed Bridge for G's take-in: an empty modules/mesh-build-go/buildstep package
mesh/delivery merged: source.main moved to novox/mesh-catalog@b1125c02cfe6
mesh/check checking a4bc3d95edef on b1125c02cfe6 | novox/mesh-catalog#678 in group fix/47-G-bridge
mesh/delivery-group group fix/47-G-bridge merged: every member is merged
The running pre-G indexer publishes mesh-catalog's packages only while every package directory it published before is
in the tree; G removed this one, so mesh-catalog's packages are never published (2026-11-13). An empty package keeps
the directory; it goes once G's indexer runs.

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-13 14:34:40 +01:00
mesh-tools 6ba73d4e2a Merge pull request 'Milestone 47 G: mesh-catalog's part of the one release' (#677) from feat/47-G-join12 into main 2026-11-13 13:08:20 +00:00
jschoubben 53351dd30d Merge main into feat/47-G-join11: the zfs module and pacman's config first (issue 1979); zfs's findings in G's form
mesh/delivery merged: source.main moved to novox/mesh-catalog@6ba73d4e2a4f
mesh/delivery-group group feat/47-G-join12 merged: every member is merged
mesh/check checking 53351dd30df2 on b1125c02cfe6 | novox/mesh-catalog#675 in group feat/47-G-join11
mesh-conditions keeps G's form: the keeper reads no observer's state (no reads, no Observers list), so main's zfs entry there goes. The zfs follower says its findings through G's findings writer over its keeper: the keeper gains the publish of the writer's three events on the finding stream finding-events and the hear of mesh-conditions.findings-asked on its own durable, nothing else; each pool or device not ONLINE is scope module, id zfs.<pool>.<device> (the device's own name), kind not-online, on the node. The manifest asks its state findings by template in requires (G §529, §577), and gains the finding-events stream and the consumes, and the keeper's bus the three events and the consumes.

Builds: design 47 G §383, §384, §387, §529, §577, A-339, A-340, A-341, A-342; design 42 zfs-owns-zfs §27, A-32, A-37, A-39, A-41

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-13 09:32:48 +01:00
mesh-tools 32f1566cc8 Merge pull request 'zfs: the module owns a node's ZFS and changes nothing unset; pacman declares its config before its package (issue 1979)' (#676) from feature/1979-zfs-owns-zfs into main 2026-11-13 08:01:02 +00:00
jschoubben 0041b69d17 zfs: findings is a state of the module's state list, not of requires, so the conditions keeper reads it
mesh/delivery merged: source.main moved to novox/mesh-catalog@32f1566cc879
mesh/delivery-group group feature/1979-zfs-owns-zfs merged: every member is merged
mesh/check being carried to 0041b69d1736 on 32f1566cc879 | from 117f933dacf0, mesh-delivery 7221a1e5cd7f, mesh-host 0193949efe9f, mesh-sdk e42b9491c93…
The validator refused zfs and mesh-conditions: mesh-conditions reads zfs.findings, which zfs had moved to bus state in requires, where the new form has no readers (ADR 0596 section 2). The keeper process's bus.state keeps naming findings. The manifest test holds it.

Builds: design 42 zfs-owns-zfs A-46 (A-32, 26, 27)
2026-11-13 03:27:38 +01:00
jschoubben d1a15ced6c zfs: the keeper tests' socket directory is the shortest that works
In the test's temporary directory, or /tmp when the socket path would pass 100 characters, so a long TMPDIR cannot fail the bind.

Builds: design 42 zfs-owns-zfs §18, A-37
2026-11-13 03:15:30 +01:00
jschoubben afa825f902 mesh-hand-acts: the whole test dates its warrant from now, inside the 14-day window
Issue 1979, blocking: a date-bound test. The warrant dated 2026-10-29 fell out of the listing's 14 days on 2026-11-13, failing every mesh-catalog check.

Builds: design 42 zfs-owns-zfs (the group's check)
2026-11-13 03:15:19 +01:00
jschoubben 064ebc9b84 zfs: the zed-functions file names its notification services on purpose, with its reason
The group's check failed TestRulesBus/NoCatalogueManifestNamesAnInstallation: 11 values name an installation (the vendor sites in the package's zed-functions.sh, resources[13]).

Builds: design 42 zfs-owns-zfs §14, A-2
2026-11-13 03:13:39 +01:00
jschoubben 8ae4fabfbe zfs: the keeper tests make their socket directory in the test's own temporary directory
The group's check failed TestOnlyRootOpensTheKeepersSocketAndANeedlessKeeperIsTheBusDown and TestAKeeperThatDoesNotAnswerIsWarnedOnce: stat /var/tmp: no such file or directory.

Builds: design 42 zfs-owns-zfs §18, A-37
2026-11-13 03:12:40 +01:00
jschoubben aa0a472b29 mesh-conditions: the keeper reads zfs's findings (A-32)
The group's check failed TestEveryControllerKindHasItsHome: the reader zfs's findings are not read by the keeper.

Builds: design 42 zfs-owns-zfs §27, A-32
2026-11-13 03:12:09 +01:00
jschoubben 9787223509 Merge main into feat/47-G-join11 (G takes in main before its push)
mesh/delivery closed: a newer head of the same pull request
mesh/delivery-group group feat/47-G-join11 checking: 15 of 17 member(s) ready
mesh/check checking 978722350921 on 32f1566cc879 | novox/mesh-catalog#675 in group feat/47-G-join11
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-13 02:16:56 +01:00
jschoubben d15502f365 zfs: declare health on the four running services, README says hand acts answer started
mesh/delivery-group group feature/1979-zfs-owns-zfs rejected: composed together: the checker's verdict at the members' heads (03f2ebff6ed0): unit: mesh-conditi…
mesh/delivery closed: a newer head of the same pull request
mesh/check failed (9): unit: mesh-conditions/cmd/mesh-conditions.TestEveryControllerKindHasItsHome: the rea…; and 8 more | d15502f3650d on 117f933dacf0
Builds: design 42 zfs-owns-zfs §13, §24, lead answers A-45, A-43
2026-11-13 02:01:06 +01:00
jschoubben 58664eee60 zfs: the hand acts answer started at once and the manifest asks stream-publish, bus-state-calls and ledger-calls (A-43, A-44)
Removes streamHear, HandPoll, HandWait and the stream mark; keeps toolEmit.

Builds: design 42 zfs-owns-zfs §24, §25, lead answers A-43, A-44
2026-11-13 01:52:50 +01:00
jschoubben 1ff904f101 zfs: the tools say events with mesh/stream.publish and a hand act hears its event on the events stream (A-42, A-12)
The tools say every event of §25 (snapshot.taken.person, scrub.requested and the others) with mesh/stream.publish on the
stream events, never stdio.Emit; the hand acts' 30 s wait reads the mark (stream.fill) before the act starts, then
stream.read from the next sequence, for at most HandWait.

Builds: design 42 zfs-owns-zfs §25, §24, lead answers A-42, A-12
2026-11-13 01:50:27 +01:00
jschoubben 2d592c63c1 zfs: a keeper that does not answer is warned once, and RunKeeper closes its second connection (review round 2 finding 2, A-37)
A failed keeper call in a root process (hand acts, forget, Paused, every call) now adds one warning that the bus is
taken as down, instead of being dropped silently. RunKeeper closes the connection acct.Dial opens when the keeper
stops; the message id's comment says it is nanotime-pid.

Builds: design 42 zfs-owns-zfs A-37
2026-11-13 01:45:19 +01:00
jschoubben 87f8c30a09 zfs: the keeper publishes events with an acknowledged JetStream publish on mesh.bus.zfs.events.<kind> (review finding 1, A-41)
Builds: design 42 zfs-owns-zfs A-41, §25
2026-11-13 01:31:08 +01:00
jschoubben e79392d666 zfs: a follower reaches the keeper's socket on every call, so a keeper up later is used (A-37, reviewer's note)
Builds: design 42 zfs-owns-zfs A-37
2026-11-13 01:29:15 +01:00
jschoubben 5f372ac63a zfs: read an unwritten ledger instance as state null and sequence 0, pass every error up (review finding 2, A-40)
Builds: design 42 zfs-owns-zfs A-40
2026-11-13 01:28:51 +01:00
jschoubben 008e02afbd zfs: take out the events stream's max-mib, a bound no design line gives (review finding 3)
Builds: design 42 zfs-owns-zfs §25
2026-11-13 01:28:51 +01:00
jschoubben 605c1b1ca0 Z19 the budget test does not match its own text
Builds: design 42 zfs-owns-zfs §31
2026-11-13 01:09:16 +01:00
jschoubben 7831f14a6e Z19 zfs-readme-budget: the README says what the module owns and how it is checked, and the test budget is a test
Builds: design 42 zfs-owns-zfs §31, §7, §19, §23
2026-11-13 01:06:04 +01:00
jschoubben 8927d68900 Z4 zfs-manifest-bus: the events stream, states and ledger by template, the keeper as the module's one process bus account
The three root processes declare no bus and reach the keeper's socket; the module invokes the service manager's start. The judge refuses the keeper's bus emits and state until the validator accepts what the module asks for in requires (A-38).

Builds: design 42 zfs-owns-zfs §25, §26, §27, §28, A-6, A-19, A-36, A-37, A-38
2026-11-13 01:05:19 +01:00
jschoubben ec27f12524 A-37 the keeper: the module's one process bus account, a socket only root opens, and the root processes' bus through it
Builds: design 42 zfs-owns-zfs §18, §20, §26, §27, A-6, A-20, A-37
2026-11-13 01:04:41 +01:00
jschoubben c6844fc951 Z11 Z12 Z15 the ledger is one instance per dataset and kind, its state a map taken keyed by the ZFS snapshot's name
Builds: design 42 zfs-owns-zfs §21, §22, §26, §28, A-36 (corrects A-30)
2026-11-13 01:03:17 +01:00
jschoubben 9116067e11 Z18 zfs-callsite: the call-site test pins every form of ADR 0679 whole
Renamed TestTheBundleRunsOnlyTheFormsOfADR0679: each root form is held to its whole argument list, no verb the decision never allows, zgenhostid only with the parsed hostid, a device only as cache or log.

Builds: design 42 zfs-owns-zfs §19
2026-11-13 01:01:35 +01:00
jschoubben 5ab8bb7e62 Z1 Z2 Z3 zfs-manifest: packages and values, files and units, the apply and the run in the declared order
The manifest declares zfs-utils and zfs-dkms, renames scrub-pool to pool, and declares every new value not managed until set; its config file is ${config-json}, the options file, ZED's folder, rc, functions, handlers and drop-in each under their condition, the three ZFS units, the apply (run-once, restarted by its config file) and the run before the distribution's scrub and trim timers. One commit: the three subtasks change the one file module.json.

Builds: design 42 zfs-owns-zfs §6, §7, §8, §9, §11, §12, §13, §14, §15, §18, §20, A-1, A-2, A-3, A-7, A-14, A-15, A-16, A-23
2026-11-13 01:00:42 +01:00
jschoubben 97bdb7d656 Z16 zfs-health: a refused or failed command in the applied state is unhealthy naming its key, and the module's own warnings
Builds: design 42 zfs-owns-zfs §29, §15, A-35
2026-11-13 00:55:17 +01:00
jschoubben c0067e77fc Z15 zfs-tools: zfs_config, zfs_snapshots_schedule, zfs_module_events, zfs_snapshots_check and zfs_findings read what the module owns, keeps and says
zfs_config also says what the module says before it leaves a node (Z17): the next load of the kernel module uses ZFS's defaults, the three units and /etc/hostid stay.

Builds: design 42 zfs-owns-zfs §28, §30, §10, A-31, A-35
2026-11-13 00:54:06 +01:00
jschoubben 8aad282e6c Z10 Z12 trim without day or time refused, keep count 0 removes nothing
A trim schedule of weekly or monthly with no trim-day or trim-time is one refused value naming it; a keep count of 0 is that kind's none: the existing scheduled ZFS snapshots are kept and a warning names them.

Builds: design 42 zfs-owns-zfs §20, §21, §22, A-33, A-35
2026-11-13 00:51:11 +01:00
jschoubben dd1a4e083c Z14 zfs-follower: the follower starts the apply on the events that end a wait and keeps its findings in its own state
Builds: design 42 zfs-owns-zfs §18, §27, A-10, A-16, A-32
2026-11-13 00:49:01 +01:00
jschoubben 23256413de Z12 zfs-snapshots-remove: the run removes surplus scheduled ZFS snapshots only by their own record
Builds: design 42 zfs-owns-zfs §22, §26, A-30, A-31
2026-11-13 00:44:07 +01:00
jschoubben a357a85faa Z11 zfs-snapshots-take: the run takes its due ZFS snapshots per filesystem and records each in the ledger
Builds: design 42 zfs-owns-zfs §21, §26, A-19, A-20, A-30, A-31
2026-11-13 00:43:09 +01:00
jschoubben 316039ca95 Z13 zfs-hand-acts: hand acts write their key and start the run; zfs_snapshot keeps a person's snapshots apart
Builds: design 42 zfs-owns-zfs §23, §24, A-12, A-17, A-18
2026-11-13 00:41:21 +01:00
jschoubben 06d83912cd Z10 zfs-run: the scheduled run takes the lock, starts a due scrub and trim without waiting, and acts on hand acts
Builds: design 42 zfs-owns-zfs §20, §24, A-17
2026-11-13 00:38:17 +01:00
jschoubben 1bea6edcb8 Z9 zfs-apply-run: the apply holds the lock, waits on a scrub or an unimported pool, and converges the node's id, ARC and pool
Builds: design 42 zfs-owns-zfs §15, §18, A-8, A-16, A-29
2026-11-13 00:34:58 +01:00
jschoubben 2fb1e5c4ea Z8 zfs-apply-devices: cache and log devices converged by their stable names, after their checks
Builds: design 42 zfs-owns-zfs §17
2026-11-13 00:32:06 +01:00
jschoubben a10bf45ed9 Z7 zfs-apply-properties: pool and dataset properties converged, read back and said
Builds: design 42 zfs-owns-zfs §10, §16
2026-11-13 00:27:31 +01:00
jschoubben 0fa4b5d8e7 Z6 zfs-events-state: each change, refusal and wait said as its event and kept in the state applied
Builds: design 42 zfs-owns-zfs §25, §26, A-19
2026-11-13 00:26:32 +01:00
jschoubben 3cb2b83a15 Z5 zfs-config-parse: the config file's values each read in their fixed form
A value of another form is refused before anything is written or run; absent and empty are not managed.

Builds: design 42 zfs-owns-zfs §9, §11, A-15, A-23
2026-11-13 00:25:48 +01:00
jschoubben 2b699d4046 Z0 pacman-config-first: the pacman module declares its config file before its package
The apply stops at the first failure and the package fails while the config file is missing (A-26).

Builds: design 42 zfs-owns-zfs §1, A-26
2026-11-13 00:23:56 +01:00
mesh-tools 117f933dac Merge pull request 'zfs: the scheduled run names its minutes, so its timer starts (issue 1979)' (#674) from fix/1979-scrub-schedule-list into main 2026-11-12 22:12:30 +00:00
jschoubben bb96fbbb3c zfs: the scheduled run names its minutes, so its timer starts (issue 1979)
mesh/delivery merged: source.main moved to novox/mesh-catalog@117f933dacf0
mesh/check checking bb96fbbb3c45 on 117f933dacf0
The node-engine writes a cron step (*/15) as a calendar systemd refuses, so
zfs-mesh-scrub.timer never started and the pool had no scrub schedule. A list
of minutes is written as *-*-* *:0,15,30,45:00, which systemd takes.

Builds: design 42 zfs-owns-zfs §18. Tests: 1979/AC1.
2026-11-12 23:07:55 +01:00
jschoubben 75d98dd908 C4: the build modules ask the steps state with its objects store in requires; outputs goes
mesh/delivery-group group feat/47-G-join11 checking: 7 of 7 member(s) ready
mesh/delivery closed: a newer head of the same pull request
mesh/check checking 75d98dd9083a on 117f933dacf0 | novox/mesh-catalog#675 in group feat/47-G-join11
Builds: design 47 G A-254, A-313, A-314, §58, §547

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 22:29:28 +01:00
jschoubben f6eb5d9efa C2: the Go build module reads a compose request's manifests from the catalog entry of the fingerprint it names
Builds: design 47 G §615, §506, A-310

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 22:26:01 +01:00
jschoubben f112011727 C3: the forge module reads failed-steps' fill through the bundle's state call mesh/state.info
Builds: design 47 G §623, A-214

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 22:19:49 +01:00
jschoubben 0aa5d6637c C1: the gate and the forge hold no branch name; the trunk is the asked branch, a default is the repository's
Builds: design 47 G §428, §507, A-93

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 22:18:25 +01:00
mesh-tools e271757db7 Merge pull request 'kernel: declare amd-ucode only (issue 1977, L10)' (#673) from fix/1977-amd-only into main 2026-11-12 20:51:32 +00:00
jschoubben a6ce8dcbd6 restic's tool bundle sets no MESH_BROKER_FILE: the node's runtime sets it for a tool bundle
The validator refused the manifest: a bundle's env may not set what the runtime gives every tool bundle. The processes
night and awake keep theirs.

Builds: ADR 0192

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 21:49:32 +01:00
jschoubben c100e16ba0 kernel: declare amd-ucode only (issue 1977, L10)
mesh/delivery merged: source.main moved to novox/mesh-catalog@e271757db78b
mesh/check checking c100e16ba0af on e271757db78b
intel-ucode failed an apply on a stale package database and stopped the delivery; an Intel machine
fails the unit by the image check and gets intel-ucode in the change that adds it. Tests: 1977/AC1
and the pinned order string adjusted.

Builds: L10 (issue 1977 note 6)
2026-11-12 21:49:30 +01:00