The node-engine stops a module's apply at its first failed resource, and reads if-config, config-lines and config-json (issue 1979) #227

Merged
mesh-tools merged 8 commits from feature/1979-zfs-owns-zfs into main 2026-11-13 08:00:44 +00:00
Member

Issue 1979, design 42 milestone zfs-owns-zfs (§1-§5; lead answers A-15, A-21, A-22, A-24, A-26). Delivery group feature/1979-zfs-owns-zfs with mesh-sdk, mesh-tools, mesh-delivery and mesh-catalog.

  • H1 fb492da7: a failed resource of a module gates the rest of that module; the report names each left (§1).
  • H2 039415cd: a resource under if-config is declared only while its value holds (§2).
  • H2b 86048f0e: a unit's found state passes to the record still declaring it (A-21).
  • H3/H3b 61c42f9f: ${config-lines:key:prefix[:mib-bytes]} and ${config-json} (§3, A-15).
  • H4 61806a7a: the node-engine states the three new reads (§4).
  • H5 225f2abb: the one integration test extended (§5; 9 stay 9).
  • 7868c9f3, 96a86906: config-json writes only declared keys; mib-bytes whole numbers (review round 1).

The pacman module's config file moves before its package in the same group (mesh-catalog Z0, A-26), so the stop does not keep a node from restoring its package manager. Unit test count 1751 → 1750 (A-22). Quick or thorough: thorough — the stop holds for every module, as §1 says.

Reviewed-by: mesh-code-reviewer of fix-1977@ace at 96a8690639

Issue 1979, design 42 milestone zfs-owns-zfs (§1-§5; lead answers A-15, A-21, A-22, A-24, A-26). Delivery group feature/1979-zfs-owns-zfs with mesh-sdk, mesh-tools, mesh-delivery and mesh-catalog. - H1 fb492da7: a failed resource of a module gates the rest of that module; the report names each left (§1). - H2 039415cd: a resource under `if-config` is declared only while its value holds (§2). - H2b 86048f0e: a unit's found state passes to the record still declaring it (A-21). - H3/H3b 61c42f9f: `${config-lines:key:prefix[:mib-bytes]}` and `${config-json}` (§3, A-15). - H4 61806a7a: the node-engine states the three new reads (§4). - H5 225f2abb: the one integration test extended (§5; 9 stay 9). - 7868c9f3, 96a86906: config-json writes only declared keys; mib-bytes whole numbers (review round 1). The pacman module's config file moves before its package in the same group (mesh-catalog Z0, A-26), so the stop does not keep a node from restoring its package manager. Unit test count 1751 → 1750 (A-22). Quick or thorough: thorough — the stop holds for every module, as §1 says. Reviewed-by: mesh-code-reviewer of fix-1977@ace at 96a8690639774575de3c61c211d79ad06d77c5b4
mesh-tools added 8 commits 2026-11-13 01:06:59 +00:00
A failed resource of a module gates the rest of that module, which is reported
skipped with the failed resource named; the module's result names each one left.
A resource of no module, and other modules, go on as before. One table test
replaces two in apply_test.go; two fixtures adapted to the rule.

Builds: design 42 zfs-owns-zfs §1 (ADR 0679 §16 (a)), A-22
The composer leaves out each resource whose `if-config` holds none of its
conditions against the module's config values (with defaults), and drops the key
from the rest, as the node-engine parses strictly. A resource that leaves is
removed by the existing orphan removal. One table test replaces the two tests of
setting_into_test.go.

Builds: design 42 zfs-owns-zfs §2, A-21 (declaration side), A-22
When one record of a unit goes while another still declares it, what the going
record found of the unit is kept for the staying one when that has no finding of
its own, so the module's leave gives back the state found before the mesh. The
preview test and the new case are one test (A-22).

Builds: design 42 zfs-owns-zfs §2, answers A-21, A-22
`${config-lines:<key>:<prefix>[:mib-bytes]}` in a file's content writes one line
per entry (nothing for an unset value or empty list; a newline in an entry
refuses the composition); `${config-json}` writes the module's set config values
as one JSON object. Both join the sweep's table of fillers. Their rows join the
config table test (A-22).

Builds: design 42 zfs-owns-zfs §3, §9; answers A-15, A-24, A-22
The node record's reads come from mesh-sdk's ManifestReads, so building with S1
and S2 states word:resources.if-config, form:config-lines and form:config-json;
the record test now asserts them.

Builds: design 42 zfs-owns-zfs §4, answer A-13
The existing node-engine integration test's module gains a file under if-config,
a template with config-lines from a list, and two files that fail and are left
under a value; the test asserts the file appears and goes with its value, the
lines follow the list, and the failing resource fails the module with the later
resource left. No integration test is added.

Builds: design 42 zfs-owns-zfs §5 (and §1 to §3), A-22
A key a layer holds that the manifest does not declare (scrub-pool during a rename) is not a config value of the module.

Builds: design 42 zfs-owns-zfs §9, A-15, A-24, A-25
Fix 1979: mib-bytes writes the bytes as a whole number for every size
mesh/delivery merged: source.main moved to novox/mesh-host@f8acfaeed79d
mesh/delivery-group group feature/1979-zfs-owns-zfs merged: every member is merged
mesh/check being carried to 96a869063977 on f8acfaeed79d | from 0193949efe9f, mesh-catalog 117f933dacf0, mesh-delivery 7221a1e5cd7f, mesh-sdk e42b9491…
96a8690639
A size of a million MiB or more reached the file in exponent form and was refused.

Builds: design 42 zfs-owns-zfs §3, A-24
Author
Member

Delivery novox/mesh-host@96a869063977 — merged since 2026-11-13T08:00:45Z

Source — source.main moved to novox/mesh-host@f8acfaeed7. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.

Group feature/1979-zfs-owns-zfs: novox/mesh-catalog@0041b69d17, novox/mesh-delivery@ad7e580918, novox/mesh-host@96a8690639, novox/mesh-sdk@2895a21e69, novox/mesh-tools@df2162e381

  • composed together: pass — the checker's verdict at the members' heads (13bf070ecb87)

Transitions

  • 2026-11-13 01:07 (new) → proposed (announced): novox/mesh-host#227's head announced
  • 2026-11-13 01:07 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
  • 2026-11-13 08:00 ready → merged (merged): on the trunk its modules follow: merged there

The commit's note under refs/notes/mesh-plan keeps every transition of this change up to its merge: git log --notes=mesh-plan.

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-host@96a869063977` — **merged** since 2026-11-13T08:00:45Z **Source** — source.main moved to novox/mesh-host@f8acfaeed79d. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Group** `feature/1979-zfs-owns-zfs`: novox/mesh-catalog@0041b69d1736, novox/mesh-delivery@ad7e58091801, novox/mesh-host@96a869063977, novox/mesh-sdk@2895a21e69cd, novox/mesh-tools@df2162e381f5 - composed together: pass — the checker's verdict at the members' heads (13bf070ecb87) **Transitions** - 2026-11-13 01:07 (new) → proposed (announced): novox/mesh-host#227's head announced - 2026-11-13 01:07 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false) - 2026-11-13 08:00 ready → merged (merged): on the trunk its modules follow: merged there The commit's note under `refs/notes/mesh-plan` keeps every transition of this change up to its merge: `git log --notes=mesh-plan`.
Author
Member

mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.

mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.
mesh-tools merged commit f8acfaeed7 into main 2026-11-13 08:00:44 +00:00
mesh-tools deleted branch feature/1979-zfs-owns-zfs 2026-11-13 08:00:44 +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-host#227