mailu: declare its unhealthy urgent (hq ADR 0355 §5, issue 691) #296

Merged
mesh-admin merged 1 commits from adr-355-mailu-urgent into main 2026-10-14 17:01:23 +00:00
Contributor

Fixes the catalogue half of hq issue 691; ADR 0355 clause 5 ("Mail declares it").

Change

mailu's manifest gains the top-level field ADR 0355 defines:

"unhealthy": { "severity": "urgent", "why": "while mailu is broken, mail is refused or stuck for everyone with a mailbox here (hq ADR 0355, issue 687)" }

Order (ADR 0262)

A controller that does not know the key leaves the module out of every machine. mesh-controller #330, which knows it, is delivered: its walk (plan-1791984145998522259) finished on ace, g14, novox and shanks before this pull request.

Effect on the operator

From delivery, module.mailu.novox.unhealthy ("mailu not working on novox") is raised urgent and said on every channel kind, Telegram included, instead of a desktop warning. mailu's upgrade policy is record; the field changes no resource on novox, so a push recreates nothing.

Acceptance

messenger.messenger_preview of module.mailu.novox.unhealthy names every channel kind, and the module check reads mailu urgent.

Fixes the catalogue half of hq issue 691; ADR 0355 clause 5 ("Mail declares it"). ## Change mailu's manifest gains the top-level field ADR 0355 defines: ```json "unhealthy": { "severity": "urgent", "why": "while mailu is broken, mail is refused or stuck for everyone with a mailbox here (hq ADR 0355, issue 687)" } ``` ## Order (ADR 0262) A controller that does not know the key leaves the module out of every machine. mesh-controller #330, which knows it, is delivered: its walk (plan-1791984145998522259) finished on ace, g14, novox and shanks before this pull request. ## Effect on the operator From delivery, `module.mailu.novox.unhealthy` ("mailu not working on novox") is raised urgent and said on every channel kind, Telegram included, instead of a desktop warning. mailu's upgrade policy is record; the field changes no resource on novox, so a push recreates nothing. ## Acceptance `messenger.messenger_preview` of `module.mailu.novox.unhealthy` names every channel kind, and the module check reads mailu urgent.
mesh-admin added 1 commit 2026-10-14 13:37:16 +00:00
Say mail's failure urgently, on every channel
mesh/merge-gate head 8e821ef44992 merged into trunk cb7bf94a77ea — pass: builds mailu, sent nowhere; no bus step; 1 wait(s) for a person; every machine com…
mesh/repo-check head 8e821ef44992 merged into trunk cb7bf94a77ea — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-…
mesh/delivery delivered
8e821ef449
A broken mailu was a warning, said only on the desk; refused or stuck
mail must reach the operator wherever they are (ADR 0355 §5, issue 691).
Author
Contributor

Delivery novox/mesh-catalog@8e821ef44992 — delivered since 2026-10-14T17:02:28Z

Delivery plan — builds mailu, sent nowhere; no bus step; 1 wait(s) for a person

  • tier 0: mailu
  • novox: waits for a person: mailu
  • mailu waits for a person: its policy records (module)
  • mailu provides smtp: its consumers are sent again after it
  • mailu keeps data (ADR 0233): what it holds is backed up before it moves

Transitions

  • 2026-10-14 13:37 (new) → proposed (announced): novox/mesh-catalog#296's head announced
  • 2026-10-14 13:39 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
  • 2026-10-14 13:39 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
  • 2026-10-14 13:40 ready → proposed (trunk moved): out of date: judged against trunk 02427a60ef, the trunk is now cb7bf94a77ea; judged again on a recheck or when it is merged
  • 2026-10-14 17:01 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
  • 2026-10-14 17:01 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
  • 2026-10-14 17:01 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
  • 2026-10-14 17:01 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit
  • 2026-10-14 17:02 delivering → delivered (done): its walk is done, carrying its own commit: every machine of its deploy plan passed, or was left as its policy says

The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-catalog@8e821ef44992` — **delivered** since 2026-10-14T17:02:28Z **Delivery plan** — builds mailu, sent nowhere; no bus step; 1 wait(s) for a person - tier 0: mailu - novox: waits for a person: mailu - mailu waits for a person: its policy records (module) - mailu provides smtp: its consumers are sent again after it - mailu keeps data (ADR 0233): what it holds is backed up before it moves **Transitions** - 2026-10-14 13:37 (new) → proposed (announced): novox/mesh-catalog#296's head announced - 2026-10-14 13:39 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit - 2026-10-14 13:39 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail - 2026-10-14 13:40 ready → proposed (trunk moved): out of date: judged against trunk 02427a60ef78, the trunk is now cb7bf94a77ea; judged again on a recheck or when it is merged - 2026-10-14 17:01 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit - 2026-10-14 17:01 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail - 2026-10-14 17:01 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move - 2026-10-14 17:01 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit - 2026-10-14 17:02 delivering → delivered (done): its walk is done, carrying its own commit: every machine of its deploy plan passed, or was left as its policy says The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
Author
Contributor

Merge check at 8e821ef4
Judged: head 8e821ef44992 merged into trunk 02427a60ef78; read beside it: mesh-controller 76304d9db817, mesh-controller-main 76304d9db817, mesh-host 1a2677882380, mesh-tools 954e1a53eef9

  • mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mailu)
  • mesh/repo-check: PASS — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)

Delivery plan — builds mailu, sent nowhere; no bus step; 1 wait(s) for a person

  • tier 0: mailu
  • novox: waits for a person: mailu
  • mailu waits for a person: its policy records (module)
  • mailu provides smtp: its consumers are sent again after it
  • mailu keeps data (ADR 0233): what it holds is backed up before it moves

Run by the build seat on ace as build-1791985067821474458 (builds --log build-1791985067821474458).

--- the gate: mailu
mailu: ok, 11 tool(s), keeps mail (valuable), dkim (valuable), data (valuable), dav (valuable), webmail (valuable), queue (valuable), filter (rebuildable), certs (rebuildable), automx (rebuildable), fetchmail (rebuildable), clamav (cache), redis (cache), ready: resolver by its image's own check every 30s; admin by its image's own check every 30s; imap by its image's own check every 30s; smtp by its tool mailu_health every 1m0s; antispam by its image's own check every 30s; webmail by its image's own check every 30s; webdav by its image's own check every 30s; fetchmail by its image's own check every 30s; front by exec every 1m0s; WARNING: config-env ask(s) for a setting and do(es) not say whether it is trusted, so it counts as trusted: set at the terminal alone; say "trusted" false where nothing trusts it (novox/hq issue 339); WARNING: redis, antivirus, automx stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8)
long-running resources without health: 3
files asking for a setting without saying whether it is trusted: 1
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-14T13:35:29Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-14T13:35:29Z

modules the change moves:
  - mailu (changed)

machines:
  - a machine (f35): composes
  - holds mesh-dns-resolver (idt): composes
  - holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
  - a machine (yvbpsm): composes

a merge would rebuild 1 module(s) in 1 tier(s): mailu
--- its merge-check.sh (go toolchain)
ok  	git.novox.be/novox/mesh-catalog/checks/words	0.002s
words: 12 retired words and 70 daemons' lines, none in the 46922 strings of 719 files
ok  	git.novox.be/novox/mesh-catalog/checks/agenthome	0.011s
agent-home: no archive and no file written into under the agent's home
ok  	git.novox.be/novox/mesh-catalog/checks/secrets	0.011s
secrets: no setting can replace a vault secret in a mergeable file (1 known, nested)
ok  	git.novox.be/novox/mesh-catalog/checks/paths	0.005s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 62, as kept
ok  	git.novox.be/novox/mesh-catalog/checks/deps	0.204s
modules/mailu is TypeScript: merge-check-typescript.sh type-checks and tests it
--- its merge-check-typescript.sh (typescript toolchain)
type-checking modules/mailu (TypeScript)
testing modules/mailu (TypeScript)
✔ an empty queue is healthy, and says so (1.416604ms)
✔ a recipient overdue on a name-service failure is unhealthy, with counts, its age and its reason (0.633461ms)
✔ one dead far domain overdue is healthy, and said (0.311015ms)
✔ overdue mail to three domains is unhealthy, whatever the reason (0.261892ms)
✔ a deferred message younger than the bound is healthy, and is said (0.251603ms)
✔ a container that cannot be reached is unhealthy, and says what docker said (0.252434ms)
✔ a name that does not resolve is unhealthy, though the queue is empty (0.219563ms)
✔ a container that does not answer in time is said so (0.167796ms)
✔ the health tool is served without the admin API, on the smtp container it is told (4.278797ms)
✔ the vault's apiKey is used, a setting of it is ignored and said once, without its value (1.656034ms)
ℹ tests 10
ℹ suites 0
ℹ pass 10
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 88.73589

Out of date when it landed: out of date: judged against trunk 02427a60ef, the trunk is now cb7bf94a77ea; judged again on a recheck or when it is merged

**Merge check** at `8e821ef4` Judged: head `8e821ef44992` merged into trunk `02427a60ef78`; read beside it: mesh-controller `76304d9db817`, mesh-controller-main `76304d9db817`, mesh-host `1a2677882380`, mesh-tools `954e1a53eef9` - `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: mailu) - `mesh/repo-check`: **PASS** — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript) **Delivery plan** — builds mailu, sent nowhere; no bus step; 1 wait(s) for a person - tier 0: mailu - novox: waits for a person: mailu - mailu waits for a person: its policy records (module) - mailu provides smtp: its consumers are sent again after it - mailu keeps data (ADR 0233): what it holds is backed up before it moves Run by the build seat on ace as `build-1791985067821474458` (`builds --log build-1791985067821474458`). ``` --- the gate: mailu mailu: ok, 11 tool(s), keeps mail (valuable), dkim (valuable), data (valuable), dav (valuable), webmail (valuable), queue (valuable), filter (rebuildable), certs (rebuildable), automx (rebuildable), fetchmail (rebuildable), clamav (cache), redis (cache), ready: resolver by its image's own check every 30s; admin by its image's own check every 30s; imap by its image's own check every 30s; smtp by its tool mailu_health every 1m0s; antispam by its image's own check every 30s; webmail by its image's own check every 30s; webdav by its image's own check every 30s; fetchmail by its image's own check every 30s; front by exec every 1m0s; WARNING: config-env ask(s) for a setting and do(es) not say whether it is trusted, so it counts as trusted: set at the terminal alone; say "trusted" false where nothing trusts it (novox/hq issue 339); WARNING: redis, antivirus, automx stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8) long-running resources without health: 3 files asking for a setting without saying whether it is trusted: 1 1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-14T13:35:29Z says they run composing every machine as the mesh is the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued composing every machine with the change the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose) judged by controller development build against the facts of 2026-10-14T13:35:29Z modules the change moves: - mailu (changed) machines: - a machine (f35): composes - holds mesh-dns-resolver (idt): composes - holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes - a machine (yvbpsm): composes a merge would rebuild 1 module(s) in 1 tier(s): mailu --- its merge-check.sh (go toolchain) ok git.novox.be/novox/mesh-catalog/checks/words 0.002s words: 12 retired words and 70 daemons' lines, none in the 46922 strings of 719 files ok git.novox.be/novox/mesh-catalog/checks/agenthome 0.011s agent-home: no archive and no file written into under the agent's home ok git.novox.be/novox/mesh-catalog/checks/secrets 0.011s secrets: no setting can replace a vault secret in a mergeable file (1 known, nested) ok git.novox.be/novox/mesh-catalog/checks/paths 0.005s paths: no module names another's state on its machine (3 known, listed to go) long-running resources without health: 62, as kept ok git.novox.be/novox/mesh-catalog/checks/deps 0.204s modules/mailu is TypeScript: merge-check-typescript.sh type-checks and tests it --- its merge-check-typescript.sh (typescript toolchain) type-checking modules/mailu (TypeScript) testing modules/mailu (TypeScript) ✔ an empty queue is healthy, and says so (1.416604ms) ✔ a recipient overdue on a name-service failure is unhealthy, with counts, its age and its reason (0.633461ms) ✔ one dead far domain overdue is healthy, and said (0.311015ms) ✔ overdue mail to three domains is unhealthy, whatever the reason (0.261892ms) ✔ a deferred message younger than the bound is healthy, and is said (0.251603ms) ✔ a container that cannot be reached is unhealthy, and says what docker said (0.252434ms) ✔ a name that does not resolve is unhealthy, though the queue is empty (0.219563ms) ✔ a container that does not answer in time is said so (0.167796ms) ✔ the health tool is served without the admin API, on the smtp container it is told (4.278797ms) ✔ the vault's apiKey is used, a setting of it is ignored and said once, without its value (1.656034ms) ℹ tests 10 ℹ suites 0 ℹ pass 10 ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 88.73589 ``` **Out of date when it landed**: out of date: judged against trunk 02427a60ef78, the trunk is now cb7bf94a77ea; judged again on a recheck or when it is merged
Author
Contributor

Merge check at 8e821ef4
Judged: head 8e821ef44992 merged into trunk cb7bf94a77ea; read beside it: mesh-controller 76304d9db817, mesh-controller-main 76304d9db817, mesh-host 1a2677882380, mesh-tools 954e1a53eef9

  • mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: mailu)
  • mesh/repo-check: PASS — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)

Delivery plan — builds mailu, sent nowhere; no bus step; 1 wait(s) for a person

  • tier 0: mailu
  • novox: waits for a person: mailu
  • mailu waits for a person: its policy records (module)
  • mailu provides smtp: its consumers are sent again after it
  • mailu keeps data (ADR 0233): what it holds is backed up before it moves

Run by the build seat on shanks as build-1791997133824078744 (builds --log build-1791997133824078744).

--- the gate: mailu
mailu: ok, 11 tool(s), keeps mail (valuable), dkim (valuable), data (valuable), dav (valuable), webmail (valuable), queue (valuable), filter (rebuildable), certs (rebuildable), automx (rebuildable), fetchmail (rebuildable), clamav (cache), redis (cache), ready: resolver by its image's own check every 30s; admin by its image's own check every 30s; imap by its image's own check every 30s; smtp by its tool mailu_health every 1m0s; antispam by its image's own check every 30s; webmail by its image's own check every 30s; webdav by its image's own check every 30s; fetchmail by its image's own check every 30s; front by exec every 1m0s; WARNING: config-env ask(s) for a setting and do(es) not say whether it is trusted, so it counts as trusted: set at the terminal alone; say "trusted" false where nothing trusts it (novox/hq issue 339); WARNING: redis, antivirus, automx stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8)
long-running resources without health: 3
files asking for a setting without saying whether it is trusted: 1
1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here
judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-14T16:41:10Z says they run
composing every machine as the mesh is
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
composing every machine with the change
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued
merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose)
judged by controller development build against the facts of 2026-10-14T16:41:10Z

modules the change moves:
  - mailu (changed)

machines:
  - a machine (f35): composes
  - holds mesh-dns-resolver (idt): composes
  - holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes
  - a machine (yvbpsm): composes

a merge would rebuild 1 module(s) in 1 tier(s): mailu
--- its merge-check.sh (go toolchain)
ok  	git.novox.be/novox/mesh-catalog/checks/words	0.003s
words: 12 retired words and 70 daemons' lines, none in the 46922 strings of 719 files
ok  	git.novox.be/novox/mesh-catalog/checks/agenthome	0.012s
agent-home: no archive and no file written into under the agent's home
ok  	git.novox.be/novox/mesh-catalog/checks/secrets	0.013s
secrets: no setting can replace a vault secret in a mergeable file (1 known, nested)
ok  	git.novox.be/novox/mesh-catalog/checks/paths	0.006s
paths: no module names another's state on its machine (3 known, listed to go)
long-running resources without health: 62, as kept
ok  	git.novox.be/novox/mesh-catalog/checks/deps	0.209s
modules/mailu is TypeScript: merge-check-typescript.sh type-checks and tests it
--- its merge-check-typescript.sh (typescript toolchain)
type-checking modules/mailu (TypeScript)
testing modules/mailu (TypeScript)
✔ an empty queue is healthy, and says so (1.911446ms)
✔ a recipient overdue on a name-service failure is unhealthy, with counts, its age and its reason (0.975173ms)
✔ one dead far domain overdue is healthy, and said (0.383395ms)
✔ overdue mail to three domains is unhealthy, whatever the reason (0.330964ms)
✔ a deferred message younger than the bound is healthy, and is said (0.278794ms)
✔ a container that cannot be reached is unhealthy, and says what docker said (0.298164ms)
✔ a name that does not resolve is unhealthy, though the queue is empty (0.268434ms)
✔ a container that does not answer in time is said so (0.205883ms)
✔ the health tool is served without the admin API, on the smtp container it is told (5.79711ms)
✔ the vault's apiKey is used, a setting of it is ignored and said once, without its value (1.915416ms)
ℹ tests 10
ℹ suites 0
ℹ pass 10
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 108.126174
**Merge check** at `8e821ef4` Judged: head `8e821ef44992` merged into trunk `cb7bf94a77ea`; read beside it: mesh-controller `76304d9db817`, mesh-controller-main `76304d9db817`, mesh-host `1a2677882380`, mesh-tools `954e1a53eef9` - `mesh/merge-gate`: **PASS** — every machine composes with the change as it did without (4 of 4 compose) (modules: mailu) - `mesh/repo-check`: **PASS** — its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript) **Delivery plan** — builds mailu, sent nowhere; no bus step; 1 wait(s) for a person - tier 0: mailu - novox: waits for a person: mailu - mailu waits for a person: its policy records (module) - mailu provides smtp: its consumers are sent again after it - mailu keeps data (ADR 0233): what it holds is backed up before it moves Run by the build seat on shanks as `build-1791997133824078744` (`builds --log build-1791997133824078744`). ``` --- the gate: mailu mailu: ok, 11 tool(s), keeps mail (valuable), dkim (valuable), data (valuable), dav (valuable), webmail (valuable), queue (valuable), filter (rebuildable), certs (rebuildable), automx (rebuildable), fetchmail (rebuildable), clamav (cache), redis (cache), ready: resolver by its image's own check every 30s; admin by its image's own check every 30s; imap by its image's own check every 30s; smtp by its tool mailu_health every 1m0s; antispam by its image's own check every 30s; webmail by its image's own check every 30s; webdav by its image's own check every 30s; fetchmail by its image's own check every 30s; front by exec every 1m0s; WARNING: config-env ask(s) for a setting and do(es) not say whether it is trusted, so it counts as trusted: set at the terminal alone; say "trusted" false where nothing trusts it (novox/hq issue 339); WARNING: redis, antivirus, automx stay(s) up and say(s) not how it is ready — judged by liveness alone, refused from 2026-11-18 (ADR 0240 rule 8) long-running resources without health: 3 files asking for a setting without saying whether it is trusted: 1 1 manifest(s) checked. Judged against the seats this binary carries; a claim on one of the mesh's own seats is judged fully at registration, and a seat declared by a module not given here reads as unknown. Identities judged on a 6-character machine name, against the bounds of the providers given here judging 1 module(s) changed against 4 machine(s), as the snapshot of 2026-10-14T16:41:10Z says they run composing every machine as the mesh is the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued composing every machine with the change the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued the bus's user list leaves out 5 user(s) the mesh has minted no credential for: controller, node.f35, node.idt, node.ygcyr, node.yvbpsm. Each is a user that cannot connect until one is issued merge gate: PASS — every machine composes with the change as it did without (4 of 4 compose) judged by controller development build against the facts of 2026-10-14T16:41:10Z modules the change moves: - mailu (changed) machines: - a machine (f35): composes - holds mesh-dns-resolver (idt): composes - holds git, holds mesh-artifact-store, holds mesh-broker, holds mesh-catalog, holds mesh-delivery, holds mesh-dns-resolver, holds mesh-store, holds mesh-vault, holds npm-package-registry, the control node, the hub (ygcyr): composes - a machine (yvbpsm): composes a merge would rebuild 1 module(s) in 1 tier(s): mailu --- its merge-check.sh (go toolchain) ok git.novox.be/novox/mesh-catalog/checks/words 0.003s words: 12 retired words and 70 daemons' lines, none in the 46922 strings of 719 files ok git.novox.be/novox/mesh-catalog/checks/agenthome 0.012s agent-home: no archive and no file written into under the agent's home ok git.novox.be/novox/mesh-catalog/checks/secrets 0.013s secrets: no setting can replace a vault secret in a mergeable file (1 known, nested) ok git.novox.be/novox/mesh-catalog/checks/paths 0.006s paths: no module names another's state on its machine (3 known, listed to go) long-running resources without health: 62, as kept ok git.novox.be/novox/mesh-catalog/checks/deps 0.209s modules/mailu is TypeScript: merge-check-typescript.sh type-checks and tests it --- its merge-check-typescript.sh (typescript toolchain) type-checking modules/mailu (TypeScript) testing modules/mailu (TypeScript) ✔ an empty queue is healthy, and says so (1.911446ms) ✔ a recipient overdue on a name-service failure is unhealthy, with counts, its age and its reason (0.975173ms) ✔ one dead far domain overdue is healthy, and said (0.383395ms) ✔ overdue mail to three domains is unhealthy, whatever the reason (0.330964ms) ✔ a deferred message younger than the bound is healthy, and is said (0.278794ms) ✔ a container that cannot be reached is unhealthy, and says what docker said (0.298164ms) ✔ a name that does not resolve is unhealthy, though the queue is empty (0.268434ms) ✔ a container that does not answer in time is said so (0.205883ms) ✔ the health tool is served without the admin API, on the smtp container it is told (5.79711ms) ✔ the vault's apiKey is used, a setting of it is ignored and said once, without its value (1.915416ms) ℹ tests 10 ℹ suites 0 ℹ pass 10 ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 108.126174 ```
mesh-admin merged commit e1c8965ddb into main 2026-10-14 17:01:23 +00:00
mesh-admin deleted branch adr-355-mailu-urgent 2026-10-14 17:01:23 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-catalog#296