Every directory says how it treats files it does not know, and the catalogue checks it (issue 1024) #349

Merged
mesh-tools merged 2 commits from feat/owned-paths into main 2026-10-17 18:14:12 +00:00
Member

Issue 1024, ADR 0422 (on ADR 0416). Release 2 of 2 of feature owned-paths; release 1 (mesh-host #117, the node-engine learns unknown/knows and moves out) was delivered to ace, g14, novox and shanks at 18:22. One delivery group with novox/hq feat/owned-paths (design 29).

  • All 256 directory and archive resources carry unknown: move-out for home folders whose program writes nothing there (dunst, i3, i3status-rust, picom, rofi, xorg, clipmenu's drop-ins, feh, powerlevel10k, betterbird, node-env), module for ~/.ssh (ssh-client's sweep) and ~/.claude (claude-code; ADR 0273's reactions not built yet, issue 1030), program for every folder outside a home.
  • knows keeps what a program or the operator relies on: powerlevel10k's 9 compiled .zwc files, i3's scripts/ (the screenshot key), i3's 10-asus.conf and 20-g14.conf, dunst's 50-slack.conf, betterbird's records and kept/, node-env's forge.credentials (written by claude-code, issue 1033).
  • No longer declared, as shared parents (ADR 0422 §6): ~/.config/systemd/user (clipmenu), ~/.config/git (ssh-client).
  • Each module's README says it (section "Files it does not know"); 45 new READMEs.
  • checks/owned (ADR 0422 §8) runs in merge-check.sh from the next pull request on; checks/sshdir stays while main's merge-check.sh runs it (playbook 07; issue 1035).
  • Tests that pin a manifest follow the new key only: route-proxy's digest (manifests equal once unknown is removed), zsh, powerlevel10k.

What the operator sees after delivery: files of their own in those home folders are moved to ~/.local/state/mesh-moved// with a list, never deleted (approved with ADR 0422). Reviewed in three rounds; forge tree equals the reviewed tree 1a32ec23. Opened along the way: 1033, 1035, 1037.

Issue 1024, ADR 0422 (on ADR 0416). Release 2 of 2 of feature owned-paths; release 1 (mesh-host #117, the node-engine learns `unknown`/`knows` and moves out) was delivered to ace, g14, novox and shanks at 18:22. One delivery group with novox/hq feat/owned-paths (design 29). - All 256 `directory` and `archive` resources carry `unknown`: `move-out` for home folders whose program writes nothing there (dunst, i3, i3status-rust, picom, rofi, xorg, clipmenu's drop-ins, feh, powerlevel10k, betterbird, node-env), `module` for ~/.ssh (ssh-client's sweep) and ~/.claude (claude-code; ADR 0273's reactions not built yet, issue 1030), `program` for every folder outside a home. - `knows` keeps what a program or the operator relies on: powerlevel10k's 9 compiled .zwc files, i3's `scripts/` (the screenshot key), i3's 10-asus.conf and 20-g14.conf, dunst's 50-slack.conf, betterbird's records and kept/, node-env's forge.credentials (written by claude-code, issue 1033). - No longer declared, as shared parents (ADR 0422 §6): ~/.config/systemd/user (clipmenu), ~/.config/git (ssh-client). - Each module's README says it (section "Files it does not know"); 45 new READMEs. - `checks/owned` (ADR 0422 §8) runs in merge-check.sh from the next pull request on; `checks/sshdir` stays while main's merge-check.sh runs it (playbook 07; issue 1035). - Tests that pin a manifest follow the new key only: route-proxy's digest (manifests equal once `unknown` is removed), zsh, powerlevel10k. What the operator sees after delivery: files of their own in those home folders are moved to ~/.local/state/mesh-moved/<module>/ with a list, never deleted (approved with ADR 0422). Reviewed in three rounds; forge tree equals the reviewed tree 1a32ec23. Opened along the way: 1033, 1035, 1037.
mesh-tools added 1 commit 2026-10-17 16:23:21 +00:00
Say on every directory how it treats files it does not know, and check it (issue 1024, ADR 0422)
mesh/merge-gate checking again: the gate refused `unknown` because the controller judged with a node-engine validator pinned before mesh-host #117; mesh-co…
mesh/repo-check checking again: the gate refused `unknown` because the controller judged with a node-engine validator pinned before mesh-host #117; mesh-co…
mesh/delivery-group group feat/owned-paths checking: 0 of 2 member(s) ready
mesh/delivery superseded: a newer head of the same pull request
652b00b25b
Every directory and archive resource carries `unknown`: move-out for a home folder whose program writes nothing there (the node-engine, delivered in mesh-host #117, moves the rest to ~/.local/state/mesh-moved/<module>/ with a list), module for ~/.ssh and ~/.claude, program elsewhere; `knows` keeps what a program or the operator relies on (powerlevel10k's compiled files, i3's scripts and the asus/g14 drop-ins, dunst's slack rule, betterbird's records, node-env's forge credential, issue 1033). Two shared folders are no longer declared. Each module's README says it. checks/owned holds every manifest to it; checks/sshdir stays while main's merge check runs it (issue 1035). Tests that pin a manifest follow the new key only. Reviewed in three rounds.
Author
Member

Delivery novox/mesh-catalog@7104df6fa284 — delivered since 2026-10-17T18:39:13Z

Delivery plan — builds artifact-store-tools, asus-zephyrus-g14, audit-logger, baserow, betterbird, ca-trust, claude-code, claude-licence-manager, clipmenu, confluence, desk-channel, distribution, dnsmasq, docker, dunst, fail2ban, feh, gitea, gitlab, grafana, hello-web, home-assistant, i3, i3status-rust, icecast, influxdb, invoicing, jira, kernel, keycloak, lab, lemurs, letta, local-model-consumer, mailu, matrix, memory-pressure, mesh-catalog, mesh-cli, mesh-config, mesh-delivery, mesh-files, mesh-issues, mesh-knowledge, mesh-mail, mesh-mail-notifier, mesh-provisioner, mesh-provisioner-client, mesh-reads, mesh-vault, mesh-watcher, messenger, minio, model-usage, mongodb, mosquitto, mounts, mssql, n8n, nats, nextcloud, nfs-server, node-env, nodered, only-office, openai-consumer, picom, postgres, power, powerlevel10k, records, redis, restic, rofi, route-adapter, searxng, showcase, ssh-client, step-ca, supabase, systemd, telegram, triggerhappy, umami, unifi, website, xorg, zfs, zsh, new: modules/build-agent, modules/marrytts, modules/ollama, modules/photos-eef, modules/photos-filip, modules/route-proxy → ace, g14, novox, shanks; merging this needs a person's bus upgrade; 12 wait(s) for a person

  • tier 0: artifact-store-tools, asus-zephyrus-g14, audit-logger, baserow, betterbird, ca-trust, claude-code, claude-licence-manager, clipmenu, confluence, desk-channel, distribution, dnsmasq, docker, dunst, fail2ban, feh, gitea, gitlab, grafana, hello-web, home-assistant, i3, i3status-rust, icecast, influxdb, invoicing, jira, kernel, keycloak, lab, lemurs, letta, local-model-consumer, mailu, matrix, memory-pressure, mesh-catalog, mesh-cli, mesh-config, mesh-delivery, mesh-files, mesh-issues, mesh-knowledge, mesh-mail, mesh-mail-notifier, mesh-provisioner, mesh-provisioner-client, mesh-reads, mesh-vault, mesh-watcher, messenger, minio, model-usage, mongodb, mosquitto, mounts, mssql, n8n, nats, nextcloud, nfs-server, node-env, nodered, only-office, openai-consumer, picom, postgres, power, powerlevel10k, records, redis, restic, rofi, route-adapter, searxng, showcase, ssh-client, step-ca, supabase, systemd, telegram, triggerhappy, umami, unifi, website, xorg, zfs, zsh
  • ace: receives baserow, ca-trust, claude-code, docker, fail2ban, grafana, home-assistant, icecast, influxdb, kernel, letta, matrix, mesh-cli, mesh-files, mesh-provisioner-client, mesh-reads, mosquitto, n8n, node-env, nodered, power, powerlevel10k, redis, restic, searxng, ssh-client, supabase, systemd, unifi, zsh; waits for a person: dnsmasq, mssql, nfs-server, postgres
  • g14: receives asus-zephyrus-g14, ca-trust, claude-code, clipmenu, docker, dunst, fail2ban, feh, i3, i3status-rust, kernel, lemurs, memory-pressure, mesh-cli, mesh-files, mesh-mail-notifier, mesh-provisioner-client, mesh-reads, node-env, picom, power, powerlevel10k, restic, rofi, ssh-client, systemd, triggerhappy, xorg, zsh
  • novox: receives artifact-store-tools, ca-trust, claude-code, claude-licence-manager, desk-channel, distribution, docker, fail2ban, gitea, invoicing, kernel, mesh-catalog, mesh-cli, mesh-config, mesh-delivery, mesh-files, mesh-issues, mesh-knowledge, mesh-mail, mesh-provisioner, mesh-provisioner-client, mesh-reads, mesh-vault, messenger, nextcloud, node-env, only-office, power, powerlevel10k, records, restic, ssh-client, step-ca, systemd, telegram, umami, website, zsh; waits for a person: dnsmasq, keycloak, mailu, minio, mongodb, mssql, nats, postgres
  • shanks: receives ca-trust, claude-code, clipmenu, docker, dunst, fail2ban, feh, i3, i3status-rust, kernel, lab, lemurs, mesh-cli, mesh-files, mesh-mail-notifier, mesh-provisioner-client, mesh-reads, mounts, node-env, picom, power, powerlevel10k, restic, rofi, ssh-client, systemd, xorg, zsh
  • baserow keeps data (ADR 0233): what it holds is backed up before it moves
  • claude-code keeps data (ADR 0233): what it holds is backed up before it moves
  • distribution provides artifact-store: its consumers are sent again after it
  • distribution keeps data (ADR 0233): what it holds is backed up before it moves
  • dnsmasq waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
  • dnsmasq provides wildcard-resolution: its consumers are sent again after it
  • gitea provides npm-package-registry, git, gitea-read, forge-account: its consumers are sent again after it
  • gitea keeps data (ADR 0233): what it holds is backed up before it moves
  • grafana keeps data (ADR 0233): what it holds is backed up before it moves
  • home-assistant keeps data (ADR 0233): what it holds is backed up before it moves
  • icecast keeps data (ADR 0233): what it holds is backed up before it moves
  • influxdb provides influxdb-api: its consumers are sent again after it
  • influxdb keeps data (ADR 0233): what it holds is backed up before it moves
  • keycloak waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
  • keycloak provides oidc-client: its consumers are sent again after it
  • keycloak keeps data (ADR 0233): what it holds is backed up before it moves
  • lab keeps data (ADR 0233): what it holds is backed up before it moves
  • mailu waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
  • mailu provides smtp: its consumers are sent again after it
  • mailu keeps data (ADR 0233): what it holds is backed up before it moves
  • matrix keeps data (ADR 0233): what it holds is backed up before it moves
  • mesh-vault provides secret: its consumers are sent again after it
  • mesh-vault keeps data (ADR 0233): what it holds is backed up before it moves
  • minio waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
  • minio provides s3-bucket: its consumers are sent again after it
  • minio keeps data (ADR 0233): what it holds is backed up before it moves
  • mongodb waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
  • mongodb provides mongodb-database: its consumers are sent again after it
  • mongodb keeps data (ADR 0233): what it holds is backed up before it moves
  • mosquitto provides mqtt-topic: its consumers are sent again after it
  • mosquitto keeps data (ADR 0233): what it holds is backed up before it moves
  • mssql waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
  • mssql provides mssql-database: its consumers are sent again after it
  • mssql keeps data (ADR 0233): what it holds is backed up before it moves
  • n8n keeps data (ADR 0233): what it holds is backed up before it moves
  • merging this needs a person's bus upgrade: nats is never sent by an ordinary send, and until mesh_call mesh-controller.bus {"upgrade": "true", "why": "…", "reversible" or "irreversible": "true"} runs, nothing else is sent to novox either — unless the new build turns out the same as the one running there (issue 280)
  • nats provides mesh-bus: its consumers are sent again after it
  • nats keeps data (ADR 0233): what it holds is backed up before it moves
  • nextcloud keeps data (ADR 0233): what it holds is backed up before it moves
  • nfs-server waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
  • nfs-server provides nfs-share: its consumers are sent again after it
  • nfs-server keeps data (ADR 0233): what it holds is backed up before it moves
  • nodered keeps data (ADR 0233): what it holds is backed up before it moves
  • only-office keeps data (ADR 0233): what it holds is backed up before it moves
  • postgres waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
  • postgres provides postgres-database: its consumers are sent again after it
  • postgres keeps data (ADR 0233): what it holds is backed up before it moves
  • records keeps data (ADR 0233): what it holds is backed up before it moves
  • redis provides redis-cache: its consumers are sent again after it
  • redis keeps data (ADR 0233): what it holds is backed up before it moves
  • restic keeps data (ADR 0233): what it holds is backed up before it moves
  • searxng keeps data (ADR 0233): what it holds is backed up before it moves
  • ssh-client keeps data (ADR 0233): what it holds is backed up before it moves
  • step-ca provides internal-acme-ca: its consumers are sent again after it
  • step-ca keeps data (ADR 0233): what it holds is backed up before it moves
  • supabase keeps data (ADR 0233): what it holds is backed up before it moves
  • umami provides analytics: its consumers are sent again after it
  • umami keeps data (ADR 0233): what it holds is backed up before it moves
  • unifi keeps data (ADR 0233): what it holds is backed up before it moves
  • xorg provides x11-display: its consumers are sent again after it
  • grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before asus-zephyrus-g14, baserow, ca-trust, claude-code, clipmenu, docker, dunst, fail2ban, feh, grafana, home-assistant, i3, i3status-rust, icecast, influxdb, kernel, lab, lemurs, letta, matrix, memory-pressure, mesh-cli, mesh-files, mesh-mail-notifier, mesh-provisioner-client, mesh-reads, mosquitto, mounts, n8n, node-env, nodered, picom, power, powerlevel10k, redis, restic, rofi, searxng, ssh-client, supabase, systemd, triggerhappy, unifi, xorg, zsh is judged on its first machine

Group feat/owned-paths, in order: novox/hq@499407c669 → novox/mesh-catalog@7104df6fa2

  • composed together: pass — every machine composes with the change as it did without (4 of 4 compose)

Machines

  • audit-logger on every machine running it: sent
  • confluence on every machine running it: sent
  • gitlab on every machine running it: sent
  • hello-web on every machine running it: sent
  • jira on every machine running it: sent
  • local-model-consumer on every machine running it: sent
  • mesh-watcher on every machine running it: sent
  • model-usage on every machine running it: sent
  • openai-consumer on every machine running it: sent
  • route-adapter on every machine running it: sent
  • showcase on every machine running it: sent
  • zfs on every machine running it: sent
  • artifact-store-tools on every machine running it: sent
  • asus-zephyrus-g14 on every machine running it: sent
  • baserow on every machine running it: sent
  • ca-trust on every machine running it: sent
  • claude-code on every machine running it: sent
  • claude-licence-manager on every machine running it: sent
  • clipmenu on every machine running it: sent
  • desk-channel on every machine running it: sent
  • distribution on every machine running it: sent
  • dnsmasq on every machine running it: sent
  • docker on every machine running it: sent
  • dunst on every machine running it: sent
  • fail2ban on every machine running it: sent
  • feh on every machine running it: sent
  • gitea on every machine running it: sent
  • grafana on every machine running it: sent
  • home-assistant on every machine running it: sent
  • i3 on every machine running it: sent
  • i3status-rust on every machine running it: sent
  • icecast on every machine running it: sent
  • influxdb on every machine running it: sent
  • invoicing on every machine running it: sent
  • kernel on every machine running it: sent
  • lab on every machine running it: sent
  • lemurs on every machine running it: sent
  • letta on every machine running it: sent
  • matrix on every machine running it: sent
  • memory-pressure on every machine running it: sent
  • mesh-catalog on every machine running it: sent
  • mesh-cli on every machine running it: sent
  • mesh-config on every machine running it: sent
  • mesh-delivery on every machine running it: sent
  • mesh-files on every machine running it: sent
  • mesh-issues on every machine running it: sent
  • mesh-knowledge on every machine running it: sent
  • mesh-mail on every machine running it: sent
  • mesh-mail-notifier on every machine running it: sent
  • mesh-provisioner on every machine running it: sent
  • mesh-provisioner-client on every machine running it: sent
  • mesh-reads on every machine running it: sent
  • mesh-vault on every machine running it: sent
  • messenger on every machine running it: sent
  • mosquitto on every machine running it: sent
  • mounts on every machine running it: sent
  • n8n on every machine running it: sent
  • nextcloud on every machine running it: sent
  • nfs-server on every machine running it: sent
  • node-env on every machine running it: sent
  • nodered on every machine running it: sent
  • only-office on every machine running it: sent
  • picom on every machine running it: sent
  • power on every machine running it: sent
  • powerlevel10k on every machine running it: sent
  • records on every machine running it: sent
  • redis on every machine running it: sent
  • restic on every machine running it: sent
  • rofi on every machine running it: sent
  • searxng on every machine running it: sent
  • ssh-client on every machine running it: sent
  • step-ca on every machine running it: sent
  • supabase on every machine running it: sent
  • systemd on every machine running it: sent
  • telegram on every machine running it: sent
  • triggerhappy on every machine running it: sent
  • umami on every machine running it: sent
  • unifi on every machine running it: sent
  • website on every machine running it: sent
  • xorg on every machine running it: sent
  • zsh on every machine running it: sent

Transitions

  • 2026-10-17 17:55 (new) → proposed (announced): novox/mesh-catalog#349's head announced
  • 2026-10-17 18:07 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
  • 2026-10-17 18:07 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
  • 2026-10-17 18:15 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
  • 2026-10-17 18:15 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-17 18:39 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@7104df6fa284` — **delivered** since 2026-10-17T18:39:13Z **Delivery plan** — builds artifact-store-tools, asus-zephyrus-g14, audit-logger, baserow, betterbird, ca-trust, claude-code, claude-licence-manager, clipmenu, confluence, desk-channel, distribution, dnsmasq, docker, dunst, fail2ban, feh, gitea, gitlab, grafana, hello-web, home-assistant, i3, i3status-rust, icecast, influxdb, invoicing, jira, kernel, keycloak, lab, lemurs, letta, local-model-consumer, mailu, matrix, memory-pressure, mesh-catalog, mesh-cli, mesh-config, mesh-delivery, mesh-files, mesh-issues, mesh-knowledge, mesh-mail, mesh-mail-notifier, mesh-provisioner, mesh-provisioner-client, mesh-reads, mesh-vault, mesh-watcher, messenger, minio, model-usage, mongodb, mosquitto, mounts, mssql, n8n, nats, nextcloud, nfs-server, node-env, nodered, only-office, openai-consumer, picom, postgres, power, powerlevel10k, records, redis, restic, rofi, route-adapter, searxng, showcase, ssh-client, step-ca, supabase, systemd, telegram, triggerhappy, umami, unifi, website, xorg, zfs, zsh, new: modules/build-agent, modules/marrytts, modules/ollama, modules/photos-eef, modules/photos-filip, modules/route-proxy → ace, g14, novox, shanks; merging this needs a person's bus upgrade; 12 wait(s) for a person - tier 0: artifact-store-tools, asus-zephyrus-g14, audit-logger, baserow, betterbird, ca-trust, claude-code, claude-licence-manager, clipmenu, confluence, desk-channel, distribution, dnsmasq, docker, dunst, fail2ban, feh, gitea, gitlab, grafana, hello-web, home-assistant, i3, i3status-rust, icecast, influxdb, invoicing, jira, kernel, keycloak, lab, lemurs, letta, local-model-consumer, mailu, matrix, memory-pressure, mesh-catalog, mesh-cli, mesh-config, mesh-delivery, mesh-files, mesh-issues, mesh-knowledge, mesh-mail, mesh-mail-notifier, mesh-provisioner, mesh-provisioner-client, mesh-reads, mesh-vault, mesh-watcher, messenger, minio, model-usage, mongodb, mosquitto, mounts, mssql, n8n, nats, nextcloud, nfs-server, node-env, nodered, only-office, openai-consumer, picom, postgres, power, powerlevel10k, records, redis, restic, rofi, route-adapter, searxng, showcase, ssh-client, step-ca, supabase, systemd, telegram, triggerhappy, umami, unifi, website, xorg, zfs, zsh - ace: receives baserow, ca-trust, claude-code, docker, fail2ban, grafana, home-assistant, icecast, influxdb, kernel, letta, matrix, mesh-cli, mesh-files, mesh-provisioner-client, mesh-reads, mosquitto, n8n, node-env, nodered, power, powerlevel10k, redis, restic, searxng, ssh-client, supabase, systemd, unifi, zsh; waits for a person: dnsmasq, mssql, nfs-server, postgres - g14: receives asus-zephyrus-g14, ca-trust, claude-code, clipmenu, docker, dunst, fail2ban, feh, i3, i3status-rust, kernel, lemurs, memory-pressure, mesh-cli, mesh-files, mesh-mail-notifier, mesh-provisioner-client, mesh-reads, node-env, picom, power, powerlevel10k, restic, rofi, ssh-client, systemd, triggerhappy, xorg, zsh - novox: receives artifact-store-tools, ca-trust, claude-code, claude-licence-manager, desk-channel, distribution, docker, fail2ban, gitea, invoicing, kernel, mesh-catalog, mesh-cli, mesh-config, mesh-delivery, mesh-files, mesh-issues, mesh-knowledge, mesh-mail, mesh-provisioner, mesh-provisioner-client, mesh-reads, mesh-vault, messenger, nextcloud, node-env, only-office, power, powerlevel10k, records, restic, ssh-client, step-ca, systemd, telegram, umami, website, zsh; waits for a person: dnsmasq, keycloak, mailu, minio, mongodb, mssql, nats, postgres - shanks: receives ca-trust, claude-code, clipmenu, docker, dunst, fail2ban, feh, i3, i3status-rust, kernel, lab, lemurs, mesh-cli, mesh-files, mesh-mail-notifier, mesh-provisioner-client, mesh-reads, mounts, node-env, picom, power, powerlevel10k, restic, rofi, ssh-client, systemd, xorg, zsh - baserow keeps data (ADR 0233): what it holds is backed up before it moves - claude-code keeps data (ADR 0233): what it holds is backed up before it moves - distribution provides artifact-store: its consumers are sent again after it - distribution keeps data (ADR 0233): what it holds is backed up before it moves - dnsmasq waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends - dnsmasq provides wildcard-resolution: its consumers are sent again after it - gitea provides npm-package-registry, git, gitea-read, forge-account: its consumers are sent again after it - gitea keeps data (ADR 0233): what it holds is backed up before it moves - grafana keeps data (ADR 0233): what it holds is backed up before it moves - home-assistant keeps data (ADR 0233): what it holds is backed up before it moves - icecast keeps data (ADR 0233): what it holds is backed up before it moves - influxdb provides influxdb-api: its consumers are sent again after it - influxdb keeps data (ADR 0233): what it holds is backed up before it moves - keycloak waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends - keycloak provides oidc-client: its consumers are sent again after it - keycloak keeps data (ADR 0233): what it holds is backed up before it moves - lab keeps data (ADR 0233): what it holds is backed up before it moves - mailu waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends - mailu provides smtp: its consumers are sent again after it - mailu keeps data (ADR 0233): what it holds is backed up before it moves - matrix keeps data (ADR 0233): what it holds is backed up before it moves - mesh-vault provides secret: its consumers are sent again after it - mesh-vault keeps data (ADR 0233): what it holds is backed up before it moves - minio waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends - minio provides s3-bucket: its consumers are sent again after it - minio keeps data (ADR 0233): what it holds is backed up before it moves - mongodb waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends - mongodb provides mongodb-database: its consumers are sent again after it - mongodb keeps data (ADR 0233): what it holds is backed up before it moves - mosquitto provides mqtt-topic: its consumers are sent again after it - mosquitto keeps data (ADR 0233): what it holds is backed up before it moves - mssql waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends - mssql provides mssql-database: its consumers are sent again after it - mssql keeps data (ADR 0233): what it holds is backed up before it moves - n8n keeps data (ADR 0233): what it holds is backed up before it moves - merging this needs a person's bus upgrade: nats is never sent by an ordinary send, and until `mesh_call mesh-controller.bus {"upgrade": "true", "why": "…", "reversible" or "irreversible": "true"}` runs, nothing else is sent to novox either — unless the new build turns out the same as the one running there (issue 280) - nats provides mesh-bus: its consumers are sent again after it - nats keeps data (ADR 0233): what it holds is backed up before it moves - nextcloud keeps data (ADR 0233): what it holds is backed up before it moves - nfs-server waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends - nfs-server provides nfs-share: its consumers are sent again after it - nfs-server keeps data (ADR 0233): what it holds is backed up before it moves - nodered keeps data (ADR 0233): what it holds is backed up before it moves - only-office keeps data (ADR 0233): what it holds is backed up before it moves - postgres waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends - postgres provides postgres-database: its consumers are sent again after it - postgres keeps data (ADR 0233): what it holds is backed up before it moves - records keeps data (ADR 0233): what it holds is backed up before it moves - redis provides redis-cache: its consumers are sent again after it - redis keeps data (ADR 0233): what it holds is backed up before it moves - restic keeps data (ADR 0233): what it holds is backed up before it moves - searxng keeps data (ADR 0233): what it holds is backed up before it moves - ssh-client keeps data (ADR 0233): what it holds is backed up before it moves - step-ca provides internal-acme-ca: its consumers are sent again after it - step-ca keeps data (ADR 0233): what it holds is backed up before it moves - supabase keeps data (ADR 0233): what it holds is backed up before it moves - umami provides analytics: its consumers are sent again after it - umami keeps data (ADR 0233): what it holds is backed up before it moves - unifi keeps data (ADR 0233): what it holds is backed up before it moves - xorg provides x11-display: its consumers are sent again after it - grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before asus-zephyrus-g14, baserow, ca-trust, claude-code, clipmenu, docker, dunst, fail2ban, feh, grafana, home-assistant, i3, i3status-rust, icecast, influxdb, kernel, lab, lemurs, letta, matrix, memory-pressure, mesh-cli, mesh-files, mesh-mail-notifier, mesh-provisioner-client, mesh-reads, mosquitto, mounts, n8n, node-env, nodered, picom, power, powerlevel10k, redis, restic, rofi, searxng, ssh-client, supabase, systemd, triggerhappy, unifi, xorg, zsh is judged on its first machine **Group** `feat/owned-paths`, in order: novox/hq@499407c66936 → novox/mesh-catalog@7104df6fa284 - composed together: pass — every machine composes with the change as it did without (4 of 4 compose) **Machines** - audit-logger on every machine running it: sent - confluence on every machine running it: sent - gitlab on every machine running it: sent - hello-web on every machine running it: sent - jira on every machine running it: sent - local-model-consumer on every machine running it: sent - mesh-watcher on every machine running it: sent - model-usage on every machine running it: sent - openai-consumer on every machine running it: sent - route-adapter on every machine running it: sent - showcase on every machine running it: sent - zfs on every machine running it: sent - artifact-store-tools on every machine running it: sent - asus-zephyrus-g14 on every machine running it: sent - baserow on every machine running it: sent - ca-trust on every machine running it: sent - claude-code on every machine running it: sent - claude-licence-manager on every machine running it: sent - clipmenu on every machine running it: sent - desk-channel on every machine running it: sent - distribution on every machine running it: sent - dnsmasq on every machine running it: sent - docker on every machine running it: sent - dunst on every machine running it: sent - fail2ban on every machine running it: sent - feh on every machine running it: sent - gitea on every machine running it: sent - grafana on every machine running it: sent - home-assistant on every machine running it: sent - i3 on every machine running it: sent - i3status-rust on every machine running it: sent - icecast on every machine running it: sent - influxdb on every machine running it: sent - invoicing on every machine running it: sent - kernel on every machine running it: sent - lab on every machine running it: sent - lemurs on every machine running it: sent - letta on every machine running it: sent - matrix on every machine running it: sent - memory-pressure on every machine running it: sent - mesh-catalog on every machine running it: sent - mesh-cli on every machine running it: sent - mesh-config on every machine running it: sent - mesh-delivery on every machine running it: sent - mesh-files on every machine running it: sent - mesh-issues on every machine running it: sent - mesh-knowledge on every machine running it: sent - mesh-mail on every machine running it: sent - mesh-mail-notifier on every machine running it: sent - mesh-provisioner on every machine running it: sent - mesh-provisioner-client on every machine running it: sent - mesh-reads on every machine running it: sent - mesh-vault on every machine running it: sent - messenger on every machine running it: sent - mosquitto on every machine running it: sent - mounts on every machine running it: sent - n8n on every machine running it: sent - nextcloud on every machine running it: sent - nfs-server on every machine running it: sent - node-env on every machine running it: sent - nodered on every machine running it: sent - only-office on every machine running it: sent - picom on every machine running it: sent - power on every machine running it: sent - powerlevel10k on every machine running it: sent - records on every machine running it: sent - redis on every machine running it: sent - restic on every machine running it: sent - rofi on every machine running it: sent - searxng on every machine running it: sent - ssh-client on every machine running it: sent - step-ca on every machine running it: sent - supabase on every machine running it: sent - systemd on every machine running it: sent - telegram on every machine running it: sent - triggerhappy on every machine running it: sent - umami on every machine running it: sent - unifi on every machine running it: sent - website on every machine running it: sent - xorg on every machine running it: sent - zsh on every machine running it: sent **Transitions** - 2026-10-17 17:55 (new) → proposed (announced): novox/mesh-catalog#349's head announced - 2026-10-17 18:07 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit - 2026-10-17 18:07 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail - 2026-10-17 18:15 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move - 2026-10-17 18:15 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-17 18:39 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
Member

Merge check at 652b00b2
Judged: head 652b00b25b28 merged into trunk 54b3ce503e79; read beside it: mesh-controller c43772fd94eb, mesh-controller-main c43772fd94eb, mesh-host 6469e8238443, mesh-tools 7412c5b6c9c5

  • mesh/merge-gate: FAIL — 6 problem(s) the change brings; the first: a machine (f35): nothing could be sent to it with this change — resource "xorg.config": a directory does not use "unknown", and it is set. Refused rather than ignored (modules: artifact-store-tools, asus-zephyrus-g14, audit-logger, baserow, betterbird, build-agent, ca-trust, claude-code, claude-licence-manager, clipmenu, confluence, desk-channel, distribution, dnsmasq, docker, dunst, fail2ban, feh, gitea, gitlab, grafana, hello-web, home-assistant, i3, i3status-rust, icecast, influxdb, invoicing, jira, kernel, keycloak, lab, lemurs, letta, local-model-consumer, mailu, matrix, memory-pressure, mesh-catalog, mesh-cli, mesh-config, mesh-delivery, mesh-files, mesh-issues, mesh-knowledge, mesh-mail, mesh-mail-notifier, mesh-provisioner, mesh-provisioner-client, mesh-reads, mesh-vault, mesh-watcher, messenger, minio, model-usage, mongodb, mosquitto, mounts, mssql, n8n, nats, nextcloud, nfs-server, node-env, nodered, only-office, openai-consumer, picom, postgres, power, powerlevel10k, records, redis, restic, rofi, route-adapter, route-proxy, searxng, showcase, ssh-client, step-ca, supabase, systemd, telegram, triggerhappy, umami, unifi, website, xorg, zfs, zsh, new:modules/marrytts, new:modules/ollama, new:modules/photos-eef, new:modules/photos-filip)
  • mesh/repo-check: PASS — THE CHANGE ALTERS ITS OWN CHECK (merge-check.sh): main's version judged it; the change's judges the pull requests after it merges; its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)

Delivery plan — builds artifact-store-tools, asus-zephyrus-g14, audit-logger, baserow, betterbird, build-agent, ca-trust, claude-code, claude-licence-manager, clipmenu, confluence, desk-channel, distribution, dnsmasq, docker, dunst, fail2ban, feh, gitea, gitlab, grafana, hello-web, home-assistant, i3, i3status-rust, icecast, influxdb, invoicing, jira, kernel, keycloak, lab, lemurs, letta, local-model-consumer, mailu, matrix, memory-pressure, mesh-catalog, mesh-cli, mesh-config, mesh-delivery, mesh-files, mesh-issues, mesh-knowledge, mesh-mail, mesh-mail-notifier, mesh-provisioner, mesh-provisioner-client, mesh-reads, mesh-vault, mesh-watcher, messenger, minio, model-usage, mongodb, mosquitto, mounts, mssql, n8n, nats, nextcloud, nfs-server, node-env, nodered, only-office, openai-consumer, picom, postgres, power, powerlevel10k, records, redis, restic, rofi, route-adapter, route-proxy, searxng, showcase, ssh-client, step-ca, supabase, systemd, telegram, triggerhappy, umami, unifi, website, xorg, zfs, zsh, new: modules/marrytts, modules/ollama, modules/photos-eef, modules/photos-filip → ace, g14, novox, shanks; merging this needs a person's bus upgrade; 12 wait(s) for a person

  • tier 0: artifact-store-tools, asus-zephyrus-g14, audit-logger, baserow, betterbird, build-agent, ca-trust, claude-code, claude-licence-manager, clipmenu, confluence, desk-channel, distribution, dnsmasq, docker, dunst, fail2ban, feh, gitea, gitlab, grafana, hello-web, home-assistant, i3, i3status-rust, icecast, influxdb, invoicing, jira, kernel, keycloak, lab, lemurs, letta, local-model-consumer, mailu, matrix, memory-pressure, mesh-catalog, mesh-cli, mesh-config, mesh-delivery, mesh-files, mesh-issues, mesh-knowledge, mesh-mail, mesh-mail-notifier, mesh-provisioner, mesh-provisioner-client, mesh-reads, mesh-vault, mesh-watcher, messenger, minio, model-usage, mongodb, mosquitto, mounts, mssql, n8n, nats, nextcloud, nfs-server, node-env, nodered, only-office, openai-consumer, picom, postgres, power, powerlevel10k, records, redis, restic, rofi, route-adapter, route-proxy, searxng, showcase, ssh-client, step-ca, supabase, systemd, telegram, triggerhappy, umami, unifi, website, xorg, zfs, zsh
  • ace: receives baserow, build-agent, ca-trust, claude-code, docker, fail2ban, grafana, home-assistant, icecast, influxdb, kernel, letta, matrix, mesh-cli, mesh-files, mesh-provisioner-client, mesh-reads, mosquitto, n8n, node-env, nodered, power, powerlevel10k, redis, restic, route-proxy, searxng, ssh-client, supabase, systemd, unifi, zsh; waits for a person: dnsmasq, mssql, nfs-server, postgres
  • g14: receives asus-zephyrus-g14, build-agent, ca-trust, claude-code, clipmenu, docker, dunst, fail2ban, feh, i3, i3status-rust, kernel, lemurs, memory-pressure, mesh-cli, mesh-files, mesh-mail-notifier, mesh-provisioner-client, mesh-reads, node-env, picom, power, powerlevel10k, restic, rofi, ssh-client, systemd, triggerhappy, xorg, zsh
  • novox: receives artifact-store-tools, build-agent, ca-trust, claude-code, claude-licence-manager, desk-channel, distribution, docker, fail2ban, gitea, invoicing, kernel, mesh-catalog, mesh-cli, mesh-config, mesh-delivery, mesh-files, mesh-issues, mesh-knowledge, mesh-mail, mesh-provisioner, mesh-provisioner-client, mesh-reads, mesh-vault, messenger, nextcloud, node-env, only-office, power, powerlevel10k, records, restic, route-proxy, ssh-client, step-ca, systemd, telegram, umami, website, zsh; waits for a person: dnsmasq, keycloak, mailu, minio, mongodb, mssql, nats, postgres
  • shanks: receives build-agent, ca-trust, claude-code, clipmenu, docker, dunst, fail2ban, feh, i3, i3status-rust, kernel, lab, lemurs, mesh-cli, mesh-files, mesh-mail-notifier, mesh-provisioner-client, mesh-reads, mounts, node-env, picom, power, powerlevel10k, restic, rofi, ssh-client, systemd, xorg, zsh
  • baserow keeps data (ADR 0233): what it holds is backed up before it moves
  • build-agent keeps data (ADR 0233): what it holds is backed up before it moves
  • claude-code keeps data (ADR 0233): what it holds is backed up before it moves
  • distribution provides artifact-store: its consumers are sent again after it
  • distribution keeps data (ADR 0233): what it holds is backed up before it moves
  • dnsmasq waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
  • dnsmasq provides wildcard-resolution: its consumers are sent again after it
  • gitea provides npm-package-registry, git, gitea-read, forge-account: its consumers are sent again after it
  • gitea keeps data (ADR 0233): what it holds is backed up before it moves
  • grafana keeps data (ADR 0233): what it holds is backed up before it moves
  • home-assistant keeps data (ADR 0233): what it holds is backed up before it moves
  • icecast keeps data (ADR 0233): what it holds is backed up before it moves
  • influxdb provides influxdb-api: its consumers are sent again after it
  • influxdb keeps data (ADR 0233): what it holds is backed up before it moves
  • keycloak waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
  • keycloak provides oidc-client: its consumers are sent again after it
  • keycloak keeps data (ADR 0233): what it holds is backed up before it moves
  • lab keeps data (ADR 0233): what it holds is backed up before it moves
  • mailu waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
  • mailu provides smtp: its consumers are sent again after it
  • mailu keeps data (ADR 0233): what it holds is backed up before it moves
  • matrix keeps data (ADR 0233): what it holds is backed up before it moves
  • mesh-vault provides secret: its consumers are sent again after it
  • mesh-vault keeps data (ADR 0233): what it holds is backed up before it moves
  • minio waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
  • minio provides s3-bucket: its consumers are sent again after it
  • minio keeps data (ADR 0233): what it holds is backed up before it moves
  • mongodb waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
  • mongodb provides mongodb-database: its consumers are sent again after it
  • mongodb keeps data (ADR 0233): what it holds is backed up before it moves
  • mosquitto provides mqtt-topic: its consumers are sent again after it
  • mosquitto keeps data (ADR 0233): what it holds is backed up before it moves
  • mssql waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
  • mssql provides mssql-database: its consumers are sent again after it
  • mssql keeps data (ADR 0233): what it holds is backed up before it moves
  • n8n keeps data (ADR 0233): what it holds is backed up before it moves
  • merging this needs a person's bus upgrade: nats is never sent by an ordinary send, and until mesh_call mesh-controller.bus {"upgrade": "true", "why": "…", "reversible" or "irreversible": "true"} runs, nothing else is sent to novox either — unless the new build turns out the same as the one running there (issue 280)
  • nats provides mesh-bus: its consumers are sent again after it
  • nats keeps data (ADR 0233): what it holds is backed up before it moves
  • nextcloud keeps data (ADR 0233): what it holds is backed up before it moves
  • nfs-server waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
  • nfs-server provides nfs-share: its consumers are sent again after it
  • nfs-server keeps data (ADR 0233): what it holds is backed up before it moves
  • nodered keeps data (ADR 0233): what it holds is backed up before it moves
  • only-office keeps data (ADR 0233): what it holds is backed up before it moves
  • postgres waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
  • postgres provides postgres-database: its consumers are sent again after it
  • postgres keeps data (ADR 0233): what it holds is backed up before it moves
  • records keeps data (ADR 0233): what it holds is backed up before it moves
  • redis provides redis-cache: its consumers are sent again after it
  • redis keeps data (ADR 0233): what it holds is backed up before it moves
  • restic keeps data (ADR 0233): what it holds is backed up before it moves
  • route-proxy provides route: its consumers are sent again after it
  • route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
  • searxng keeps data (ADR 0233): what it holds is backed up before it moves
  • ssh-client keeps data (ADR 0233): what it holds is backed up before it moves
  • step-ca provides internal-acme-ca: its consumers are sent again after it
  • step-ca keeps data (ADR 0233): what it holds is backed up before it moves
  • supabase keeps data (ADR 0233): what it holds is backed up before it moves
  • umami provides analytics: its consumers are sent again after it
  • umami keeps data (ADR 0233): what it holds is backed up before it moves
  • unifi keeps data (ADR 0233): what it holds is backed up before it moves
  • xorg provides x11-display: its consumers are sent again after it
  • grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before asus-zephyrus-g14, baserow, build-agent, ca-trust, claude-code, clipmenu, docker, dunst, fail2ban, feh, grafana, home-assistant, i3, i3status-rust, icecast, influxdb, kernel, lab, lemurs, letta, matrix, memory-pressure, mesh-cli, mesh-files, mesh-mail-notifier, mesh-provisioner-client, mesh-reads, mosquitto, mounts, n8n, node-env, nodered, picom, power, powerlevel10k, redis, restic, rofi, route-proxy, searxng, ssh-client, supabase, systemd, triggerhappy, unifi, xorg, zsh is judged on its first machine
  • read by no module's build: checks/owned/go.mod, checks/owned/main.go, checks/owned/main_test.go, merge-check.sh, modules/artifact-store-tools/README.md, modules/asus-zephyrus-g14/README.md, modules/betterbird/README.md, modules/build-agent/README.md, modules/ca-trust/README.md, modules/claude-code/README.md, modules/claude-licence-manager/README.md, modules/clipmenu/README.md, modules/desk-channel/README.md, modules/dnsmasq/README.md, modules/docker/README.md, modules/dunst/README.md, modules/fail2ban/README.md, modules/feh/README.md, modules/hello-web/README.md, modules/i3/README.md, modules/i3status-rust/README.md, modules/invoicing/README.md, modules/kernel/README.md, modules/keycloak/README.md, modules/lemurs/README.md, modules/local-model-consumer/README.md, modules/matrix/README.md, modules/memory-pressure/README.md, modules/mesh-cli/README.md, modules/mesh-config/README.md, modules/mesh-delivery/README.md, modules/mesh-files/README.md, modules/mesh-issues/README.md, modules/mesh-knowledge/README.md, modules/mesh-mail-notifier/README.md, modules/mesh-mail/README.md, modules/mesh-provisioner-client/README.md, modules/mesh-provisioner/README.md, modules/mesh-reads/README.md, modules/mesh-vault/README.md, modules/mesh-watcher/README.md, modules/messenger/README.md, modules/mounts/README.md, modules/nfs-server/README.md, modules/node-env/README.md, modules/only-office/README.md, modules/picom/README.md, modules/postgres/README.md, modules/power/README.md, modules/powerlevel10k/README.md, modules/powerlevel10k/test/module.test.ts, modules/records/README.md, modules/restic/README.md, modules/rofi/README.md, modules/route-proxy/README.md, modules/route-proxy/cmd/route-provider/provider_test.go, modules/ssh-client/README.md, modules/ssh-client/cmd/ssh-client-tools/templates_test.go, modules/step-ca/README.md, modules/supabase/README.md, modules/telegram/README.md, modules/triggerhappy/README.md, modules/xorg/README.md, modules/zfs/README.md

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

type-checking modules/letta (TypeScript)
NOT TESTED: modules/letta is TypeScript and has no tests of its own
type-checking modules/mailu (TypeScript)
testing modules/mailu (TypeScript)
✔ an empty queue is healthy, and says so (1.673354ms)
✔ a recipient overdue on a name-service failure is unhealthy, with counts, its age and its reason (0.790332ms)
✔ one dead far domain overdue is healthy, and said (0.383455ms)
✔ overdue mail to three domains is unhealthy, whatever the reason (0.291194ms)
✔ a deferred message younger than the bound is healthy, and is said (0.275314ms)
✔ a container that cannot be reached is unhealthy, and says what docker said (0.290735ms)
✔ a name that does not resolve is unhealthy, though the queue is empty (0.290924ms)
✔ a container that does not answer in time is said so (0.199483ms)
✔ the health tool is served without the admin API, on the smtp container it is told (5.249567ms)
✔ the vault's apiKey is used, a setting of it is ignored and said once, without its value (2.01056ms)
ℹ tests 10
ℹ suites 0
ℹ pass 10
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 108.020181
type-checking modules/mesh-catalog (TypeScript)
testing modules/mesh-catalog (TypeScript)
✔ the catalogue hears the build seat that builds now, not only the retired one (issue 712) (3.803806ms)
✔ a walk's build is placed, under its module and commit (0.6501ms)
✔ a merge check, a try, a dry run and a failure are passed over without a fault (0.232023ms)
✔ an outcome that names no module or commit is said as the builder's fault (0.187522ms)
✔ a branch built through the build verb is passed over; a commit on the trunk, or from a seat that names none, is placed (ADR 0238) (0.161312ms)
ℹ tests 5
ℹ suites 0
ℹ pass 5
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 93.389846
type-checking modules/minio (TypeScript)
NOT TESTED: modules/minio is TypeScript and has no tests of its own
type-checking modules/model-usage (TypeScript)
testing modules/model-usage (TypeScript)
✔ a store that refuses a row is thrown, so the event is offered again, and it is spooled (19.720961ms)
✔ a redelivered event writes the same reading, never a second, and clears its spooled copy (10.512085ms)
✔ on its last delivery a usage event is spooled and taken (48.929341ms)
✔ the spool replays once the store answers, and an older reading replayed late does not overwrite a newer (50.138978ms)
✔ an event without a body is taken without a TypeError; a row the store could never take is skipped, not retried (1.665634ms)
✔ model_usage_status reports the spool, and is offered even when the store cannot be opened (50.18556ms)
﹣ against postgres: migrations are numbered and repeatable, and the upsert keeps the reading observed latest (0.201033ms) # TEST_DATABASE_URL is not set
ℹ tests 7
ℹ suites 0
ℹ pass 6
ℹ fail 0
ℹ cancelled 0
ℹ skipped 1
ℹ todo 0
ℹ duration_ms 301.225686
type-checking modules/mongodb (TypeScript)
NOT TESTED: modules/mongodb is TypeScript and has no tests of its own
type-checking modules/mosquitto (TypeScript)
testing modules/mosquitto (TypeScript)
✔ named, the broker's container runs mosquitto_ctrl under the options shell, stdin open (1.259608ms)
✔ unnamed, this machine's mosquitto_ctrl runs under the same shell (0.183683ms)
✔ the options shell itself holds no secret (0.237933ms)
✔ an argv carrying the admin password or a password being set is refused, by name (0.478127ms)
✔ the admin tool refuses a dynsec command that would put a password on a command line (0.257823ms)
✔ the admin's name and password reach mosquitto_ctrl in a 0600 options file, and a password being set at its prompt (12.142059ms)
✔ a consumer that contributed nothing gets its own subtree (1.37485ms)
✔ a contributed list is granted exactly, duplicates once (0.380416ms)
✔ a list that is not topic filters is refused whole (0.315085ms)
✔ getRole's ACL lines are read, the warning and headings are not (0.382405ms)
✔ the role is brought to exactly the wanted ACLs (0.370536ms)
ℹ tests 11
ℹ suites 0
ℹ pass 11
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 113.623863
type-checking modules/mssql (TypeScript)
testing modules/mssql (TypeScript)
✔ a caller's statement runs as the reader, as it was written, on the database it names (2.198963ms)
✔ the reader is made as the administrator, kept out of sysadmin, and granted only reading (0.782851ms)
✔ without the reader's password the statement is refused, and nothing runs as the administrator (0.581779ms)
✔ a consumer's password is checked as a bound parameter, never in the text (0.333665ms)
ℹ tests 4
ℹ suites 0
ℹ pass 4
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 294.361125
type-checking modules/nextcloud (TypeScript)
testing modules/nextcloud (TypeScript)
✔ the vault's password is used, a setting of it is ignored and said once, without its value (1.924008ms)
ℹ tests 1
ℹ suites 0
ℹ pass 1
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 94.167326
type-checking modules/nodered (TypeScript)
testing modules/nodered (TypeScript)
✔ ace: the named broker node is moved to the bound broker and login; the other broker is not touched (2.579118ms)
✔ fresh: with nothing named, the step makes its own broker node (0.356515ms)
✔ a login the broker does not take is never written (0.846502ms)
✔ a named node that is not there, or a loopback broker, is refused (0.286984ms)
✔ a deploy that raced another is read again once (0.530738ms)
✔ settings name broker nodes under mqtt.brokers (0.152813ms)
ℹ tests 6
ℹ suites 0
ℹ pass 6
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 106.153403
type-checking modules/openai-consumer (TypeScript)
NOT TESTED: modules/openai-consumer is TypeScript and has no tests of its own
modules/powerlevel10k has no TypeScript sources of its own to type-check: its tests read its files
testing modules/powerlevel10k (TypeScript)
✔ the theme archive is built from the vendored release and carries its licence (1.383131ms)
✔ the configuration archive holds the prompt's configuration and nothing else (0.176413ms)
✔ both are unpacked under the account's home, owned by the account (0.218503ms)
✔ the zsh code in the normal slot sources the theme, then the configuration, and turns on no instant prompt (0.324345ms)
✔ the README names the upstream, the version and the licence (0.254534ms)
ℹ tests 5
ℹ suites 0
ℹ pass 5
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 96.166447
type-checking modules/redis (TypeScript)
NOT TESTED: modules/redis is TypeScript and has no tests of its own
type-checking modules/route-adapter (TypeScript)
testing modules/route-adapter (TypeScript)
✔ it writes one route file per contribution, in the predecessor's own shape (7.569082ms)
✔ it removes the file it wrote when that contribution goes (2.71926ms)
✔ it never touches a file it did not write (4.044439ms)
✔ the target port follows what the contributor publishes (1.815496ms)
✔ a contributor on another node is reached at the address the mesh gave it (1.35383ms)
✔ a node's settings are laid over the module's defaults, and nothing else changes (1.319209ms)
✔ a contribution it cannot act on is skipped and named (0.231254ms)
✔ a contribution the file shape cannot say is skipped and says which part (0.270784ms)
✔ it refuses when the predecessor's directory is not there, and says why (2.02442ms)
✔ a body limit is written as the predecessor's buffering middleware (2.139061ms)
✔ a body limit that is not a whole number of bytes is skipped and named (0.335395ms)
ℹ tests 11
ℹ suites 0
ℹ pass 11
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 123.465198
type-checking modules/searxng (TypeScript)
NOT TESTED: modules/searxng is TypeScript and has no tests of its own
type-checking modules/showcase (TypeScript)
NOT TESTED: modules/showcase is TypeScript and has no tests of its own
type-checking modules/umami (TypeScript)
NOT TESTED: modules/umami is TypeScript and has no tests of its own
type-checking modules/unifi (TypeScript)
NOT TESTED: modules/unifi is TypeScript and has no tests of its own
type-checking modules/zsh (TypeScript)
testing modules/zsh (TypeScript)
✔ the exit status and both streams are answered (9.337048ms)
✔ it runs in the directory it is given (4.986624ms)
✔ on timeout the whole process group is ended, a backgrounded grandchild included (503.673963ms)
✔ output beyond the bound is cut and the answer says so (7.537671ms)
✔ a job left in the background does not hold the answer (205.198731ms)
﹣ zsh runs the command as a login shell, when zsh is here (2.766001ms) # zsh is not installed here
✔ the timeout is held below the runtime's call limit (0.241723ms)
✔ the command's environment drops the mesh's words and gains the account's session words when they exist (0.250333ms)
✔ zsh_config counts the mesh's block in a file (3.770015ms)
✔ no file carries its text inline: each names its template, and the build packs files/ into one archive (1.471602ms)
✔ it claims node-login-shell serving execute, and declares no seat (0.127722ms)
✔ the .zshrc block is at the start and holds the three slots in order, after the defaults' header (0.213443ms)
✔ the .zshrc block carries the shared defaults and none of the operator's own lines (0.309705ms)
✔ the .zshenv block sources exactly the environment file node-environment fixes (0.304425ms)
✔ its environment is a contribution: the editor, the configuration home, and three PATH entries at the start (0.502678ms)
✔ it keeps the package and sets the login shell through the user shape (0.139662ms)
✔ the tools bundle registers the seat's verb under node-login-shell (0.244353ms)
✔ execute is a per-machine config value, served unless a machine withholds it (ADR 0268, ADR 0348 §4) (0.472177ms)
✔ the tools bundle registers execute only where the machine's setting serves it (0.418256ms)
✔ execute is served only when the machine's setting says serve (0.838312ms)
✔ anything but serve withholds it: a wrong value, no line, no file (0.267534ms)
✔ the setting is read from the file the bundle's word names (0.572109ms)
ℹ tests 22
ℹ suites 0
ℹ pass 21
ℹ fail 0
ℹ cancelled 0
ℹ skipped 1
ℹ todo 0
ℹ duration_ms 832.284811
**Merge check** at `652b00b2` Judged: head `652b00b25b28` merged into trunk `54b3ce503e79`; read beside it: mesh-controller `c43772fd94eb`, mesh-controller-main `c43772fd94eb`, mesh-host `6469e8238443`, mesh-tools `7412c5b6c9c5` - `mesh/merge-gate`: **FAIL** — 6 problem(s) the change brings; the first: a machine (f35): nothing could be sent to it with this change — resource "xorg.config": a directory does not use "unknown", and it is set. Refused rather than ignored (modules: artifact-store-tools, asus-zephyrus-g14, audit-logger, baserow, betterbird, build-agent, ca-trust, claude-code, claude-licence-manager, clipmenu, confluence, desk-channel, distribution, dnsmasq, docker, dunst, fail2ban, feh, gitea, gitlab, grafana, hello-web, home-assistant, i3, i3status-rust, icecast, influxdb, invoicing, jira, kernel, keycloak, lab, lemurs, letta, local-model-consumer, mailu, matrix, memory-pressure, mesh-catalog, mesh-cli, mesh-config, mesh-delivery, mesh-files, mesh-issues, mesh-knowledge, mesh-mail, mesh-mail-notifier, mesh-provisioner, mesh-provisioner-client, mesh-reads, mesh-vault, mesh-watcher, messenger, minio, model-usage, mongodb, mosquitto, mounts, mssql, n8n, nats, nextcloud, nfs-server, node-env, nodered, only-office, openai-consumer, picom, postgres, power, powerlevel10k, records, redis, restic, rofi, route-adapter, route-proxy, searxng, showcase, ssh-client, step-ca, supabase, systemd, telegram, triggerhappy, umami, unifi, website, xorg, zfs, zsh, new:modules/marrytts, new:modules/ollama, new:modules/photos-eef, new:modules/photos-filip) - `mesh/repo-check`: **PASS** — THE CHANGE ALTERS ITS OWN CHECK (merge-check.sh): main's version judged it; the change's judges the pull requests after it merges; its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript) **Delivery plan** — builds artifact-store-tools, asus-zephyrus-g14, audit-logger, baserow, betterbird, build-agent, ca-trust, claude-code, claude-licence-manager, clipmenu, confluence, desk-channel, distribution, dnsmasq, docker, dunst, fail2ban, feh, gitea, gitlab, grafana, hello-web, home-assistant, i3, i3status-rust, icecast, influxdb, invoicing, jira, kernel, keycloak, lab, lemurs, letta, local-model-consumer, mailu, matrix, memory-pressure, mesh-catalog, mesh-cli, mesh-config, mesh-delivery, mesh-files, mesh-issues, mesh-knowledge, mesh-mail, mesh-mail-notifier, mesh-provisioner, mesh-provisioner-client, mesh-reads, mesh-vault, mesh-watcher, messenger, minio, model-usage, mongodb, mosquitto, mounts, mssql, n8n, nats, nextcloud, nfs-server, node-env, nodered, only-office, openai-consumer, picom, postgres, power, powerlevel10k, records, redis, restic, rofi, route-adapter, route-proxy, searxng, showcase, ssh-client, step-ca, supabase, systemd, telegram, triggerhappy, umami, unifi, website, xorg, zfs, zsh, new: modules/marrytts, modules/ollama, modules/photos-eef, modules/photos-filip → ace, g14, novox, shanks; merging this needs a person's bus upgrade; 12 wait(s) for a person - tier 0: artifact-store-tools, asus-zephyrus-g14, audit-logger, baserow, betterbird, build-agent, ca-trust, claude-code, claude-licence-manager, clipmenu, confluence, desk-channel, distribution, dnsmasq, docker, dunst, fail2ban, feh, gitea, gitlab, grafana, hello-web, home-assistant, i3, i3status-rust, icecast, influxdb, invoicing, jira, kernel, keycloak, lab, lemurs, letta, local-model-consumer, mailu, matrix, memory-pressure, mesh-catalog, mesh-cli, mesh-config, mesh-delivery, mesh-files, mesh-issues, mesh-knowledge, mesh-mail, mesh-mail-notifier, mesh-provisioner, mesh-provisioner-client, mesh-reads, mesh-vault, mesh-watcher, messenger, minio, model-usage, mongodb, mosquitto, mounts, mssql, n8n, nats, nextcloud, nfs-server, node-env, nodered, only-office, openai-consumer, picom, postgres, power, powerlevel10k, records, redis, restic, rofi, route-adapter, route-proxy, searxng, showcase, ssh-client, step-ca, supabase, systemd, telegram, triggerhappy, umami, unifi, website, xorg, zfs, zsh - ace: receives baserow, build-agent, ca-trust, claude-code, docker, fail2ban, grafana, home-assistant, icecast, influxdb, kernel, letta, matrix, mesh-cli, mesh-files, mesh-provisioner-client, mesh-reads, mosquitto, n8n, node-env, nodered, power, powerlevel10k, redis, restic, route-proxy, searxng, ssh-client, supabase, systemd, unifi, zsh; waits for a person: dnsmasq, mssql, nfs-server, postgres - g14: receives asus-zephyrus-g14, build-agent, ca-trust, claude-code, clipmenu, docker, dunst, fail2ban, feh, i3, i3status-rust, kernel, lemurs, memory-pressure, mesh-cli, mesh-files, mesh-mail-notifier, mesh-provisioner-client, mesh-reads, node-env, picom, power, powerlevel10k, restic, rofi, ssh-client, systemd, triggerhappy, xorg, zsh - novox: receives artifact-store-tools, build-agent, ca-trust, claude-code, claude-licence-manager, desk-channel, distribution, docker, fail2ban, gitea, invoicing, kernel, mesh-catalog, mesh-cli, mesh-config, mesh-delivery, mesh-files, mesh-issues, mesh-knowledge, mesh-mail, mesh-provisioner, mesh-provisioner-client, mesh-reads, mesh-vault, messenger, nextcloud, node-env, only-office, power, powerlevel10k, records, restic, route-proxy, ssh-client, step-ca, systemd, telegram, umami, website, zsh; waits for a person: dnsmasq, keycloak, mailu, minio, mongodb, mssql, nats, postgres - shanks: receives build-agent, ca-trust, claude-code, clipmenu, docker, dunst, fail2ban, feh, i3, i3status-rust, kernel, lab, lemurs, mesh-cli, mesh-files, mesh-mail-notifier, mesh-provisioner-client, mesh-reads, mounts, node-env, picom, power, powerlevel10k, restic, rofi, ssh-client, systemd, xorg, zsh - baserow keeps data (ADR 0233): what it holds is backed up before it moves - build-agent keeps data (ADR 0233): what it holds is backed up before it moves - claude-code keeps data (ADR 0233): what it holds is backed up before it moves - distribution provides artifact-store: its consumers are sent again after it - distribution keeps data (ADR 0233): what it holds is backed up before it moves - dnsmasq waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends - dnsmasq provides wildcard-resolution: its consumers are sent again after it - gitea provides npm-package-registry, git, gitea-read, forge-account: its consumers are sent again after it - gitea keeps data (ADR 0233): what it holds is backed up before it moves - grafana keeps data (ADR 0233): what it holds is backed up before it moves - home-assistant keeps data (ADR 0233): what it holds is backed up before it moves - icecast keeps data (ADR 0233): what it holds is backed up before it moves - influxdb provides influxdb-api: its consumers are sent again after it - influxdb keeps data (ADR 0233): what it holds is backed up before it moves - keycloak waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends - keycloak provides oidc-client: its consumers are sent again after it - keycloak keeps data (ADR 0233): what it holds is backed up before it moves - lab keeps data (ADR 0233): what it holds is backed up before it moves - mailu waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends - mailu provides smtp: its consumers are sent again after it - mailu keeps data (ADR 0233): what it holds is backed up before it moves - matrix keeps data (ADR 0233): what it holds is backed up before it moves - mesh-vault provides secret: its consumers are sent again after it - mesh-vault keeps data (ADR 0233): what it holds is backed up before it moves - minio waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends - minio provides s3-bucket: its consumers are sent again after it - minio keeps data (ADR 0233): what it holds is backed up before it moves - mongodb waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends - mongodb provides mongodb-database: its consumers are sent again after it - mongodb keeps data (ADR 0233): what it holds is backed up before it moves - mosquitto provides mqtt-topic: its consumers are sent again after it - mosquitto keeps data (ADR 0233): what it holds is backed up before it moves - mssql waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends - mssql provides mssql-database: its consumers are sent again after it - mssql keeps data (ADR 0233): what it holds is backed up before it moves - n8n keeps data (ADR 0233): what it holds is backed up before it moves - merging this needs a person's bus upgrade: nats is never sent by an ordinary send, and until `mesh_call mesh-controller.bus {"upgrade": "true", "why": "…", "reversible" or "irreversible": "true"}` runs, nothing else is sent to novox either — unless the new build turns out the same as the one running there (issue 280) - nats provides mesh-bus: its consumers are sent again after it - nats keeps data (ADR 0233): what it holds is backed up before it moves - nextcloud keeps data (ADR 0233): what it holds is backed up before it moves - nfs-server waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends - nfs-server provides nfs-share: its consumers are sent again after it - nfs-server keeps data (ADR 0233): what it holds is backed up before it moves - nodered keeps data (ADR 0233): what it holds is backed up before it moves - only-office keeps data (ADR 0233): what it holds is backed up before it moves - postgres waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends - postgres provides postgres-database: its consumers are sent again after it - postgres keeps data (ADR 0233): what it holds is backed up before it moves - records keeps data (ADR 0233): what it holds is backed up before it moves - redis provides redis-cache: its consumers are sent again after it - redis keeps data (ADR 0233): what it holds is backed up before it moves - restic keeps data (ADR 0233): what it holds is backed up before it moves - route-proxy provides route: its consumers are sent again after it - route-proxy keeps data (ADR 0233): what it holds is backed up before it moves - searxng keeps data (ADR 0233): what it holds is backed up before it moves - ssh-client keeps data (ADR 0233): what it holds is backed up before it moves - step-ca provides internal-acme-ca: its consumers are sent again after it - step-ca keeps data (ADR 0233): what it holds is backed up before it moves - supabase keeps data (ADR 0233): what it holds is backed up before it moves - umami provides analytics: its consumers are sent again after it - umami keeps data (ADR 0233): what it holds is backed up before it moves - unifi keeps data (ADR 0233): what it holds is backed up before it moves - xorg provides x11-display: its consumers are sent again after it - grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before asus-zephyrus-g14, baserow, build-agent, ca-trust, claude-code, clipmenu, docker, dunst, fail2ban, feh, grafana, home-assistant, i3, i3status-rust, icecast, influxdb, kernel, lab, lemurs, letta, matrix, memory-pressure, mesh-cli, mesh-files, mesh-mail-notifier, mesh-provisioner-client, mesh-reads, mosquitto, mounts, n8n, node-env, nodered, picom, power, powerlevel10k, redis, restic, rofi, route-proxy, searxng, ssh-client, supabase, systemd, triggerhappy, unifi, xorg, zsh is judged on its first machine - read by no module's build: checks/owned/go.mod, checks/owned/main.go, checks/owned/main_test.go, merge-check.sh, modules/artifact-store-tools/README.md, modules/asus-zephyrus-g14/README.md, modules/betterbird/README.md, modules/build-agent/README.md, modules/ca-trust/README.md, modules/claude-code/README.md, modules/claude-licence-manager/README.md, modules/clipmenu/README.md, modules/desk-channel/README.md, modules/dnsmasq/README.md, modules/docker/README.md, modules/dunst/README.md, modules/fail2ban/README.md, modules/feh/README.md, modules/hello-web/README.md, modules/i3/README.md, modules/i3status-rust/README.md, modules/invoicing/README.md, modules/kernel/README.md, modules/keycloak/README.md, modules/lemurs/README.md, modules/local-model-consumer/README.md, modules/matrix/README.md, modules/memory-pressure/README.md, modules/mesh-cli/README.md, modules/mesh-config/README.md, modules/mesh-delivery/README.md, modules/mesh-files/README.md, modules/mesh-issues/README.md, modules/mesh-knowledge/README.md, modules/mesh-mail-notifier/README.md, modules/mesh-mail/README.md, modules/mesh-provisioner-client/README.md, modules/mesh-provisioner/README.md, modules/mesh-reads/README.md, modules/mesh-vault/README.md, modules/mesh-watcher/README.md, modules/messenger/README.md, modules/mounts/README.md, modules/nfs-server/README.md, modules/node-env/README.md, modules/only-office/README.md, modules/picom/README.md, modules/postgres/README.md, modules/power/README.md, modules/powerlevel10k/README.md, modules/powerlevel10k/test/module.test.ts, modules/records/README.md, modules/restic/README.md, modules/rofi/README.md, modules/route-proxy/README.md, modules/route-proxy/cmd/route-provider/provider_test.go, modules/ssh-client/README.md, modules/ssh-client/cmd/ssh-client-tools/templates_test.go, modules/step-ca/README.md, modules/supabase/README.md, modules/telegram/README.md, modules/triggerhappy/README.md, modules/xorg/README.md, modules/zfs/README.md Run by the build seat on shanks as `build-1792254211537776414` (`builds --log build-1792254211537776414`). ``` type-checking modules/letta (TypeScript) NOT TESTED: modules/letta is TypeScript and has no tests of its own type-checking modules/mailu (TypeScript) testing modules/mailu (TypeScript) ✔ an empty queue is healthy, and says so (1.673354ms) ✔ a recipient overdue on a name-service failure is unhealthy, with counts, its age and its reason (0.790332ms) ✔ one dead far domain overdue is healthy, and said (0.383455ms) ✔ overdue mail to three domains is unhealthy, whatever the reason (0.291194ms) ✔ a deferred message younger than the bound is healthy, and is said (0.275314ms) ✔ a container that cannot be reached is unhealthy, and says what docker said (0.290735ms) ✔ a name that does not resolve is unhealthy, though the queue is empty (0.290924ms) ✔ a container that does not answer in time is said so (0.199483ms) ✔ the health tool is served without the admin API, on the smtp container it is told (5.249567ms) ✔ the vault's apiKey is used, a setting of it is ignored and said once, without its value (2.01056ms) ℹ tests 10 ℹ suites 0 ℹ pass 10 ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 108.020181 type-checking modules/mesh-catalog (TypeScript) testing modules/mesh-catalog (TypeScript) ✔ the catalogue hears the build seat that builds now, not only the retired one (issue 712) (3.803806ms) ✔ a walk's build is placed, under its module and commit (0.6501ms) ✔ a merge check, a try, a dry run and a failure are passed over without a fault (0.232023ms) ✔ an outcome that names no module or commit is said as the builder's fault (0.187522ms) ✔ a branch built through the build verb is passed over; a commit on the trunk, or from a seat that names none, is placed (ADR 0238) (0.161312ms) ℹ tests 5 ℹ suites 0 ℹ pass 5 ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 93.389846 type-checking modules/minio (TypeScript) NOT TESTED: modules/minio is TypeScript and has no tests of its own type-checking modules/model-usage (TypeScript) testing modules/model-usage (TypeScript) ✔ a store that refuses a row is thrown, so the event is offered again, and it is spooled (19.720961ms) ✔ a redelivered event writes the same reading, never a second, and clears its spooled copy (10.512085ms) ✔ on its last delivery a usage event is spooled and taken (48.929341ms) ✔ the spool replays once the store answers, and an older reading replayed late does not overwrite a newer (50.138978ms) ✔ an event without a body is taken without a TypeError; a row the store could never take is skipped, not retried (1.665634ms) ✔ model_usage_status reports the spool, and is offered even when the store cannot be opened (50.18556ms) ﹣ against postgres: migrations are numbered and repeatable, and the upsert keeps the reading observed latest (0.201033ms) # TEST_DATABASE_URL is not set ℹ tests 7 ℹ suites 0 ℹ pass 6 ℹ fail 0 ℹ cancelled 0 ℹ skipped 1 ℹ todo 0 ℹ duration_ms 301.225686 type-checking modules/mongodb (TypeScript) NOT TESTED: modules/mongodb is TypeScript and has no tests of its own type-checking modules/mosquitto (TypeScript) testing modules/mosquitto (TypeScript) ✔ named, the broker's container runs mosquitto_ctrl under the options shell, stdin open (1.259608ms) ✔ unnamed, this machine's mosquitto_ctrl runs under the same shell (0.183683ms) ✔ the options shell itself holds no secret (0.237933ms) ✔ an argv carrying the admin password or a password being set is refused, by name (0.478127ms) ✔ the admin tool refuses a dynsec command that would put a password on a command line (0.257823ms) ✔ the admin's name and password reach mosquitto_ctrl in a 0600 options file, and a password being set at its prompt (12.142059ms) ✔ a consumer that contributed nothing gets its own subtree (1.37485ms) ✔ a contributed list is granted exactly, duplicates once (0.380416ms) ✔ a list that is not topic filters is refused whole (0.315085ms) ✔ getRole's ACL lines are read, the warning and headings are not (0.382405ms) ✔ the role is brought to exactly the wanted ACLs (0.370536ms) ℹ tests 11 ℹ suites 0 ℹ pass 11 ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 113.623863 type-checking modules/mssql (TypeScript) testing modules/mssql (TypeScript) ✔ a caller's statement runs as the reader, as it was written, on the database it names (2.198963ms) ✔ the reader is made as the administrator, kept out of sysadmin, and granted only reading (0.782851ms) ✔ without the reader's password the statement is refused, and nothing runs as the administrator (0.581779ms) ✔ a consumer's password is checked as a bound parameter, never in the text (0.333665ms) ℹ tests 4 ℹ suites 0 ℹ pass 4 ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 294.361125 type-checking modules/nextcloud (TypeScript) testing modules/nextcloud (TypeScript) ✔ the vault's password is used, a setting of it is ignored and said once, without its value (1.924008ms) ℹ tests 1 ℹ suites 0 ℹ pass 1 ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 94.167326 type-checking modules/nodered (TypeScript) testing modules/nodered (TypeScript) ✔ ace: the named broker node is moved to the bound broker and login; the other broker is not touched (2.579118ms) ✔ fresh: with nothing named, the step makes its own broker node (0.356515ms) ✔ a login the broker does not take is never written (0.846502ms) ✔ a named node that is not there, or a loopback broker, is refused (0.286984ms) ✔ a deploy that raced another is read again once (0.530738ms) ✔ settings name broker nodes under mqtt.brokers (0.152813ms) ℹ tests 6 ℹ suites 0 ℹ pass 6 ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 106.153403 type-checking modules/openai-consumer (TypeScript) NOT TESTED: modules/openai-consumer is TypeScript and has no tests of its own modules/powerlevel10k has no TypeScript sources of its own to type-check: its tests read its files testing modules/powerlevel10k (TypeScript) ✔ the theme archive is built from the vendored release and carries its licence (1.383131ms) ✔ the configuration archive holds the prompt's configuration and nothing else (0.176413ms) ✔ both are unpacked under the account's home, owned by the account (0.218503ms) ✔ the zsh code in the normal slot sources the theme, then the configuration, and turns on no instant prompt (0.324345ms) ✔ the README names the upstream, the version and the licence (0.254534ms) ℹ tests 5 ℹ suites 0 ℹ pass 5 ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 96.166447 type-checking modules/redis (TypeScript) NOT TESTED: modules/redis is TypeScript and has no tests of its own type-checking modules/route-adapter (TypeScript) testing modules/route-adapter (TypeScript) ✔ it writes one route file per contribution, in the predecessor's own shape (7.569082ms) ✔ it removes the file it wrote when that contribution goes (2.71926ms) ✔ it never touches a file it did not write (4.044439ms) ✔ the target port follows what the contributor publishes (1.815496ms) ✔ a contributor on another node is reached at the address the mesh gave it (1.35383ms) ✔ a node's settings are laid over the module's defaults, and nothing else changes (1.319209ms) ✔ a contribution it cannot act on is skipped and named (0.231254ms) ✔ a contribution the file shape cannot say is skipped and says which part (0.270784ms) ✔ it refuses when the predecessor's directory is not there, and says why (2.02442ms) ✔ a body limit is written as the predecessor's buffering middleware (2.139061ms) ✔ a body limit that is not a whole number of bytes is skipped and named (0.335395ms) ℹ tests 11 ℹ suites 0 ℹ pass 11 ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 123.465198 type-checking modules/searxng (TypeScript) NOT TESTED: modules/searxng is TypeScript and has no tests of its own type-checking modules/showcase (TypeScript) NOT TESTED: modules/showcase is TypeScript and has no tests of its own type-checking modules/umami (TypeScript) NOT TESTED: modules/umami is TypeScript and has no tests of its own type-checking modules/unifi (TypeScript) NOT TESTED: modules/unifi is TypeScript and has no tests of its own type-checking modules/zsh (TypeScript) testing modules/zsh (TypeScript) ✔ the exit status and both streams are answered (9.337048ms) ✔ it runs in the directory it is given (4.986624ms) ✔ on timeout the whole process group is ended, a backgrounded grandchild included (503.673963ms) ✔ output beyond the bound is cut and the answer says so (7.537671ms) ✔ a job left in the background does not hold the answer (205.198731ms) ﹣ zsh runs the command as a login shell, when zsh is here (2.766001ms) # zsh is not installed here ✔ the timeout is held below the runtime's call limit (0.241723ms) ✔ the command's environment drops the mesh's words and gains the account's session words when they exist (0.250333ms) ✔ zsh_config counts the mesh's block in a file (3.770015ms) ✔ no file carries its text inline: each names its template, and the build packs files/ into one archive (1.471602ms) ✔ it claims node-login-shell serving execute, and declares no seat (0.127722ms) ✔ the .zshrc block is at the start and holds the three slots in order, after the defaults' header (0.213443ms) ✔ the .zshrc block carries the shared defaults and none of the operator's own lines (0.309705ms) ✔ the .zshenv block sources exactly the environment file node-environment fixes (0.304425ms) ✔ its environment is a contribution: the editor, the configuration home, and three PATH entries at the start (0.502678ms) ✔ it keeps the package and sets the login shell through the user shape (0.139662ms) ✔ the tools bundle registers the seat's verb under node-login-shell (0.244353ms) ✔ execute is a per-machine config value, served unless a machine withholds it (ADR 0268, ADR 0348 §4) (0.472177ms) ✔ the tools bundle registers execute only where the machine's setting serves it (0.418256ms) ✔ execute is served only when the machine's setting says serve (0.838312ms) ✔ anything but serve withholds it: a wrong value, no line, no file (0.267534ms) ✔ the setting is read from the file the bundle's word names (0.572109ms) ℹ tests 22 ℹ suites 0 ℹ pass 21 ℹ fail 0 ℹ cancelled 0 ℹ skipped 1 ℹ todo 0 ℹ duration_ms 832.284811 ```
mesh-tools added 1 commit 2026-10-17 17:55:09 +00:00
Take in main's move of build-agent and route-proxy to mesh-controller (issue 1024)
mesh/merge-gate head 7104df6fa284 merged into trunk 5e6f5b8f6d99 — pass, with a note: builds artifact-store-tools, asus-zephyrus-g14, audit-logger, baserow…
mesh/repo-check head 7104df6fa284 merged into trunk 5e6f5b8f6d99 — pass: THE CHANGE ALTERS ITS OWN CHECK (merge-check.sh): main's version judged it; the ch…
mesh/delivery delivered
mesh/delivery-group group feat/owned-paths delivered: every member is delivered
7104df6fa2
mesh-catalog #350 removed both modules from the catalogue; this change's edits to them go with them, and mesh-issues keeps both #350's change and its `unknown`. The branch's tree is the reviewed tree merged with main 5e6f5b8f6d.
Author
Member

Merge check at 7104df6f
Judged: head 7104df6fa284 merged into trunk 5e6f5b8f6d99; read beside it: mesh-controller d5d54498358e, mesh-controller-main d5d54498358e, mesh-host 6469e8238443, mesh-tools 7412c5b6c9c5

  • mesh/merge-gate: PASS, WITH A NOTE — a merge rebuilds 89 module(s) in 1 tier(s) (modules: artifact-store-tools, asus-zephyrus-g14, audit-logger, baserow, betterbird, ca-trust, claude-code, claude-licence-manager, clipmenu, confluence, desk-channel, distribution, dnsmasq, docker, dunst, fail2ban, feh, gitea, gitlab, grafana, hello-web, home-assistant, i3, i3status-rust, icecast, influxdb, invoicing, jira, kernel, keycloak, lab, lemurs, letta, local-model-consumer, mailu, matrix, memory-pressure, mesh-catalog, mesh-cli, mesh-config, mesh-delivery, mesh-files, mesh-issues, mesh-knowledge, mesh-mail, mesh-mail-notifier, mesh-provisioner, mesh-provisioner-client, mesh-reads, mesh-vault, mesh-watcher, messenger, minio, model-usage, mongodb, mosquitto, mounts, mssql, n8n, nats, nextcloud, nfs-server, node-env, nodered, only-office, openai-consumer, picom, postgres, power, powerlevel10k, records, redis, restic, rofi, route-adapter, searxng, showcase, ssh-client, step-ca, supabase, systemd, telegram, triggerhappy, umami, unifi, website, xorg, zfs, zsh, new:modules/build-agent, new:modules/marrytts, new:modules/ollama, new:modules/photos-eef, new:modules/photos-filip, new:modules/route-proxy)
  • mesh/repo-check: PASS — THE CHANGE ALTERS ITS OWN CHECK (merge-check.sh): main's version judged it; the change's judges the pull requests after it merges; its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)

Delivery plan — builds artifact-store-tools, asus-zephyrus-g14, audit-logger, baserow, betterbird, ca-trust, claude-code, claude-licence-manager, clipmenu, confluence, desk-channel, distribution, dnsmasq, docker, dunst, fail2ban, feh, gitea, gitlab, grafana, hello-web, home-assistant, i3, i3status-rust, icecast, influxdb, invoicing, jira, kernel, keycloak, lab, lemurs, letta, local-model-consumer, mailu, matrix, memory-pressure, mesh-catalog, mesh-cli, mesh-config, mesh-delivery, mesh-files, mesh-issues, mesh-knowledge, mesh-mail, mesh-mail-notifier, mesh-provisioner, mesh-provisioner-client, mesh-reads, mesh-vault, mesh-watcher, messenger, minio, model-usage, mongodb, mosquitto, mounts, mssql, n8n, nats, nextcloud, nfs-server, node-env, nodered, only-office, openai-consumer, picom, postgres, power, powerlevel10k, records, redis, restic, rofi, route-adapter, searxng, showcase, ssh-client, step-ca, supabase, systemd, telegram, triggerhappy, umami, unifi, website, xorg, zfs, zsh, new: modules/build-agent, modules/marrytts, modules/ollama, modules/photos-eef, modules/photos-filip, modules/route-proxy → ace, g14, novox, shanks; merging this needs a person's bus upgrade; 12 wait(s) for a person

  • tier 0: artifact-store-tools, asus-zephyrus-g14, audit-logger, baserow, betterbird, ca-trust, claude-code, claude-licence-manager, clipmenu, confluence, desk-channel, distribution, dnsmasq, docker, dunst, fail2ban, feh, gitea, gitlab, grafana, hello-web, home-assistant, i3, i3status-rust, icecast, influxdb, invoicing, jira, kernel, keycloak, lab, lemurs, letta, local-model-consumer, mailu, matrix, memory-pressure, mesh-catalog, mesh-cli, mesh-config, mesh-delivery, mesh-files, mesh-issues, mesh-knowledge, mesh-mail, mesh-mail-notifier, mesh-provisioner, mesh-provisioner-client, mesh-reads, mesh-vault, mesh-watcher, messenger, minio, model-usage, mongodb, mosquitto, mounts, mssql, n8n, nats, nextcloud, nfs-server, node-env, nodered, only-office, openai-consumer, picom, postgres, power, powerlevel10k, records, redis, restic, rofi, route-adapter, searxng, showcase, ssh-client, step-ca, supabase, systemd, telegram, triggerhappy, umami, unifi, website, xorg, zfs, zsh
  • ace: receives baserow, ca-trust, claude-code, docker, fail2ban, grafana, home-assistant, icecast, influxdb, kernel, letta, matrix, mesh-cli, mesh-files, mesh-provisioner-client, mesh-reads, mosquitto, n8n, node-env, nodered, power, powerlevel10k, redis, restic, searxng, ssh-client, supabase, systemd, unifi, zsh; waits for a person: dnsmasq, mssql, nfs-server, postgres
  • g14: receives asus-zephyrus-g14, ca-trust, claude-code, clipmenu, docker, dunst, fail2ban, feh, i3, i3status-rust, kernel, lemurs, memory-pressure, mesh-cli, mesh-files, mesh-mail-notifier, mesh-provisioner-client, mesh-reads, node-env, picom, power, powerlevel10k, restic, rofi, ssh-client, systemd, triggerhappy, xorg, zsh
  • novox: receives artifact-store-tools, ca-trust, claude-code, claude-licence-manager, desk-channel, distribution, docker, fail2ban, gitea, invoicing, kernel, mesh-catalog, mesh-cli, mesh-config, mesh-delivery, mesh-files, mesh-issues, mesh-knowledge, mesh-mail, mesh-provisioner, mesh-provisioner-client, mesh-reads, mesh-vault, messenger, nextcloud, node-env, only-office, power, powerlevel10k, records, restic, ssh-client, step-ca, systemd, telegram, umami, website, zsh; waits for a person: dnsmasq, keycloak, mailu, minio, mongodb, mssql, nats, postgres
  • shanks: receives ca-trust, claude-code, clipmenu, docker, dunst, fail2ban, feh, i3, i3status-rust, kernel, lab, lemurs, mesh-cli, mesh-files, mesh-mail-notifier, mesh-provisioner-client, mesh-reads, mounts, node-env, picom, power, powerlevel10k, restic, rofi, ssh-client, systemd, xorg, zsh
  • baserow keeps data (ADR 0233): what it holds is backed up before it moves
  • claude-code keeps data (ADR 0233): what it holds is backed up before it moves
  • distribution provides artifact-store: its consumers are sent again after it
  • distribution keeps data (ADR 0233): what it holds is backed up before it moves
  • dnsmasq waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
  • dnsmasq provides wildcard-resolution: its consumers are sent again after it
  • gitea provides npm-package-registry, git, gitea-read, forge-account: its consumers are sent again after it
  • gitea keeps data (ADR 0233): what it holds is backed up before it moves
  • grafana keeps data (ADR 0233): what it holds is backed up before it moves
  • home-assistant keeps data (ADR 0233): what it holds is backed up before it moves
  • icecast keeps data (ADR 0233): what it holds is backed up before it moves
  • influxdb provides influxdb-api: its consumers are sent again after it
  • influxdb keeps data (ADR 0233): what it holds is backed up before it moves
  • keycloak waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
  • keycloak provides oidc-client: its consumers are sent again after it
  • keycloak keeps data (ADR 0233): what it holds is backed up before it moves
  • lab keeps data (ADR 0233): what it holds is backed up before it moves
  • mailu waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
  • mailu provides smtp: its consumers are sent again after it
  • mailu keeps data (ADR 0233): what it holds is backed up before it moves
  • matrix keeps data (ADR 0233): what it holds is backed up before it moves
  • mesh-vault provides secret: its consumers are sent again after it
  • mesh-vault keeps data (ADR 0233): what it holds is backed up before it moves
  • minio waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
  • minio provides s3-bucket: its consumers are sent again after it
  • minio keeps data (ADR 0233): what it holds is backed up before it moves
  • mongodb waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
  • mongodb provides mongodb-database: its consumers are sent again after it
  • mongodb keeps data (ADR 0233): what it holds is backed up before it moves
  • mosquitto provides mqtt-topic: its consumers are sent again after it
  • mosquitto keeps data (ADR 0233): what it holds is backed up before it moves
  • mssql waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
  • mssql provides mssql-database: its consumers are sent again after it
  • mssql keeps data (ADR 0233): what it holds is backed up before it moves
  • n8n keeps data (ADR 0233): what it holds is backed up before it moves
  • merging this needs a person's bus upgrade: nats is never sent by an ordinary send, and until mesh_call mesh-controller.bus {"upgrade": "true", "why": "…", "reversible" or "irreversible": "true"} runs, nothing else is sent to novox either — unless the new build turns out the same as the one running there (issue 280)
  • nats provides mesh-bus: its consumers are sent again after it
  • nats keeps data (ADR 0233): what it holds is backed up before it moves
  • nextcloud keeps data (ADR 0233): what it holds is backed up before it moves
  • nfs-server waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
  • nfs-server provides nfs-share: its consumers are sent again after it
  • nfs-server keeps data (ADR 0233): what it holds is backed up before it moves
  • nodered keeps data (ADR 0233): what it holds is backed up before it moves
  • only-office keeps data (ADR 0233): what it holds is backed up before it moves
  • postgres waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends
  • postgres provides postgres-database: its consumers are sent again after it
  • postgres keeps data (ADR 0233): what it holds is backed up before it moves
  • records keeps data (ADR 0233): what it holds is backed up before it moves
  • redis provides redis-cache: its consumers are sent again after it
  • redis keeps data (ADR 0233): what it holds is backed up before it moves
  • restic keeps data (ADR 0233): what it holds is backed up before it moves
  • searxng keeps data (ADR 0233): what it holds is backed up before it moves
  • ssh-client keeps data (ADR 0233): what it holds is backed up before it moves
  • step-ca provides internal-acme-ca: its consumers are sent again after it
  • step-ca keeps data (ADR 0233): what it holds is backed up before it moves
  • supabase keeps data (ADR 0233): what it holds is backed up before it moves
  • umami provides analytics: its consumers are sent again after it
  • umami keeps data (ADR 0233): what it holds is backed up before it moves
  • unifi keeps data (ADR 0233): what it holds is backed up before it moves
  • xorg provides x11-display: its consumers are sent again after it
  • grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before asus-zephyrus-g14, baserow, ca-trust, claude-code, clipmenu, docker, dunst, fail2ban, feh, grafana, home-assistant, i3, i3status-rust, icecast, influxdb, kernel, lab, lemurs, letta, matrix, memory-pressure, mesh-cli, mesh-files, mesh-mail-notifier, mesh-provisioner-client, mesh-reads, mosquitto, mounts, n8n, node-env, nodered, picom, power, powerlevel10k, redis, restic, rofi, searxng, ssh-client, supabase, systemd, triggerhappy, unifi, xorg, zsh is judged on its first machine
  • read by no module's build: checks/owned/go.mod, checks/owned/main.go, checks/owned/main_test.go, merge-check.sh, modules/artifact-store-tools/README.md, modules/asus-zephyrus-g14/README.md, modules/betterbird/README.md, modules/ca-trust/README.md, modules/claude-code/README.md, modules/claude-licence-manager/README.md, modules/clipmenu/README.md, modules/desk-channel/README.md, modules/dnsmasq/README.md, modules/docker/README.md, modules/dunst/README.md, modules/fail2ban/README.md, modules/feh/README.md, modules/hello-web/README.md, modules/i3/README.md, modules/i3status-rust/README.md, modules/invoicing/README.md, modules/kernel/README.md, modules/keycloak/README.md, modules/lemurs/README.md, modules/local-model-consumer/README.md, modules/matrix/README.md, modules/memory-pressure/README.md, modules/mesh-cli/README.md, modules/mesh-config/README.md, modules/mesh-delivery/README.md, modules/mesh-files/README.md, modules/mesh-issues/README.md, modules/mesh-knowledge/README.md, modules/mesh-mail-notifier/README.md, modules/mesh-mail/README.md, modules/mesh-provisioner-client/README.md, modules/mesh-provisioner/README.md, modules/mesh-reads/README.md, modules/mesh-vault/README.md, modules/mesh-watcher/README.md, modules/messenger/README.md, modules/mounts/README.md, modules/nfs-server/README.md, modules/node-env/README.md, modules/only-office/README.md, modules/picom/README.md, modules/postgres/README.md, modules/power/README.md, modules/powerlevel10k/README.md, modules/powerlevel10k/test/module.test.ts, modules/records/README.md, modules/restic/README.md, modules/rofi/README.md, modules/ssh-client/README.md, modules/ssh-client/cmd/ssh-client-tools/templates_test.go, modules/step-ca/README.md, modules/supabase/README.md, modules/telegram/README.md, modules/triggerhappy/README.md, modules/xorg/README.md, modules/zfs/README.md

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

type-checking modules/letta (TypeScript)
NOT TESTED: modules/letta is TypeScript and has no tests of its own
type-checking modules/mailu (TypeScript)
testing modules/mailu (TypeScript)
✔ an empty queue is healthy, and says so (1.362176ms)
✔ a recipient overdue on a name-service failure is unhealthy, with counts, its age and its reason (0.624266ms)
✔ one dead far domain overdue is healthy, and said (0.310315ms)
✔ overdue mail to three domains is unhealthy, whatever the reason (0.250071ms)
✔ a deferred message younger than the bound is healthy, and is said (0.231106ms)
✔ a container that cannot be reached is unhealthy, and says what docker said (0.251333ms)
✔ a name that does not resolve is unhealthy, though the queue is empty (0.220816ms)
✔ a container that does not answer in time is said so (0.162756ms)
✔ the health tool is served without the admin API, on the smtp container it is told (4.431676ms)
✔ the vault's apiKey is used, a setting of it is ignored and said once, without its value (1.564998ms)
ℹ tests 10
ℹ suites 0
ℹ pass 10
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 82.711967
type-checking modules/mesh-catalog (TypeScript)
testing modules/mesh-catalog (TypeScript)
✔ the catalogue hears the build seat that builds now, not only the retired one (issue 712) (3.765984ms)
✔ a walk's build is placed, under its module and commit (0.556979ms)
✔ a merge check, a try, a dry run and a failure are passed over without a fault (0.208262ms)
✔ an outcome that names no module or commit is said as the builder's fault (0.159761ms)
✔ a branch built through the build verb is passed over; a commit on the trunk, or from a seat that names none, is placed (ADR 0238) (0.146937ms)
ℹ tests 5
ℹ suites 0
ℹ pass 5
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 73.204268
type-checking modules/minio (TypeScript)
NOT TESTED: modules/minio is TypeScript and has no tests of its own
type-checking modules/model-usage (TypeScript)
testing modules/model-usage (TypeScript)
✔ a store that refuses a row is thrown, so the event is offered again, and it is spooled (16.521548ms)
✔ a redelivered event writes the same reading, never a second, and clears its spooled copy (9.798975ms)
✔ on its last delivery a usage event is spooled and taken (51.45322ms)
✔ the spool replays once the store answers, and an older reading replayed late does not overwrite a newer (45.83477ms)
✔ an event without a body is taken without a TypeError; a row the store could never take is skipped, not retried (0.893332ms)
✔ model_usage_status reports the spool, and is offered even when the store cannot be opened (44.411357ms)
﹣ against postgres: migrations are numbered and repeatable, and the upsert keeps the reading observed latest (0.163829ms) # TEST_DATABASE_URL is not set
ℹ tests 7
ℹ suites 0
ℹ pass 6
ℹ fail 0
ℹ cancelled 0
ℹ skipped 1
ℹ todo 0
ℹ duration_ms 253.778915
type-checking modules/mongodb (TypeScript)
NOT TESTED: modules/mongodb is TypeScript and has no tests of its own
type-checking modules/mosquitto (TypeScript)
testing modules/mosquitto (TypeScript)
✔ named, the broker's container runs mosquitto_ctrl under the options shell, stdin open (1.68313ms)
✔ unnamed, this machine's mosquitto_ctrl runs under the same shell (0.156104ms)
✔ the options shell itself holds no secret (0.174158ms)
✔ an argv carrying the admin password or a password being set is refused, by name (0.413108ms)
✔ the admin tool refuses a dynsec command that would put a password on a command line (0.2017ms)
✔ the admin's name and password reach mosquitto_ctrl in a 0600 options file, and a password being set at its prompt (101.598597ms)
✔ a consumer that contributed nothing gets its own subtree (1.067391ms)
✔ a contributed list is granted exactly, duplicates once (0.231125ms)
✔ a list that is not topic filters is refused whole (0.220455ms)
✔ getRole's ACL lines are read, the warning and headings are not (0.287111ms)
✔ the role is brought to exactly the wanted ACLs (0.301668ms)
ℹ tests 11
ℹ suites 0
ℹ pass 11
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 176.841063
type-checking modules/mssql (TypeScript)
testing modules/mssql (TypeScript)
✔ a caller's statement runs as the reader, as it was written, on the database it names (2.302096ms)
✔ the reader is made as the administrator, kept out of sysadmin, and granted only reading (0.473963ms)
✔ without the reader's password the statement is refused, and nothing runs as the administrator (1.667261ms)
✔ a consumer's password is checked as a bound parameter, never in the text (0.235544ms)
ℹ tests 4
ℹ suites 0
ℹ pass 4
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 235.483572
type-checking modules/nextcloud (TypeScript)
testing modules/nextcloud (TypeScript)
✔ the vault's password is used, a setting of it is ignored and said once, without its value (2.012762ms)
ℹ tests 1
ℹ suites 0
ℹ pass 1
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 76.803505
type-checking modules/nodered (TypeScript)
testing modules/nodered (TypeScript)
✔ ace: the named broker node is moved to the bound broker and login; the other broker is not touched (2.079637ms)
✔ fresh: with nothing named, the step makes its own broker node (0.296728ms)
✔ a login the broker does not take is never written (0.156685ms)
✔ a named node that is not there, or a loopback broker, is refused (0.840884ms)
✔ a deploy that raced another is read again once (0.460107ms)
✔ settings name broker nodes under mqtt.brokers (0.14291ms)
ℹ tests 6
ℹ suites 0
ℹ pass 6
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 80.371485
type-checking modules/openai-consumer (TypeScript)
NOT TESTED: modules/openai-consumer is TypeScript and has no tests of its own
modules/powerlevel10k has no TypeScript sources of its own to type-check: its tests read its files
testing modules/powerlevel10k (TypeScript)
✔ the theme archive is built from the vendored release and carries its licence (1.175544ms)
✔ the configuration archive holds the prompt's configuration and nothing else (0.154871ms)
✔ both are unpacked under the account's home, owned by the account (0.47805ms)
✔ the zsh code in the normal slot sources the theme, then the configuration, and turns on no instant prompt (0.567609ms)
✔ the README names the upstream, the version and the licence (0.369596ms)
ℹ tests 5
ℹ suites 0
ℹ pass 5
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 72.255619
type-checking modules/redis (TypeScript)
NOT TESTED: modules/redis is TypeScript and has no tests of its own
type-checking modules/route-adapter (TypeScript)
testing modules/route-adapter (TypeScript)
✔ it writes one route file per contribution, in the predecessor's own shape (6.207952ms)
✔ it removes the file it wrote when that contribution goes (2.666342ms)
✔ it never touches a file it did not write (3.740104ms)
✔ the target port follows what the contributor publishes (1.578824ms)
✔ a contributor on another node is reached at the address the mesh gave it (1.193307ms)
✔ a node's settings are laid over the module's defaults, and nothing else changes (1.090183ms)
✔ a contribution it cannot act on is skipped and named (0.177965ms)
✔ a contribution the file shape cannot say is skipped and says which part (0.219524ms)
✔ it refuses when the predecessor's directory is not there, and says why (1.331889ms)
✔ a body limit is written as the predecessor's buffering middleware (1.558807ms)
✔ a body limit that is not a whole number of bytes is skipped and named (0.274678ms)
ℹ tests 11
ℹ suites 0
ℹ pass 11
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 90.015288
type-checking modules/searxng (TypeScript)
NOT TESTED: modules/searxng is TypeScript and has no tests of its own
type-checking modules/showcase (TypeScript)
NOT TESTED: modules/showcase is TypeScript and has no tests of its own
type-checking modules/umami (TypeScript)
NOT TESTED: modules/umami is TypeScript and has no tests of its own
type-checking modules/unifi (TypeScript)
NOT TESTED: modules/unifi is TypeScript and has no tests of its own
type-checking modules/zsh (TypeScript)
testing modules/zsh (TypeScript)
✔ the exit status and both streams are answered (7.610935ms)
✔ it runs in the directory it is given (3.543134ms)
✔ on timeout the whole process group is ended, a backgrounded grandchild included (502.529642ms)
✔ output beyond the bound is cut and the answer says so (6.080753ms)
✔ a job left in the background does not hold the answer (204.355657ms)
﹣ zsh runs the command as a login shell, when zsh is here (1.995357ms) # zsh is not installed here
✔ the timeout is held below the runtime's call limit (0.139212ms)
✔ the command's environment drops the mesh's words and gains the account's session words when they exist (0.239491ms)
✔ zsh_config counts the mesh's block in a file (3.293443ms)
✔ no file carries its text inline: each names its template, and the build packs files/ into one archive (1.215239ms)
✔ it claims node-login-shell serving execute, and declares no seat (0.110247ms)
✔ the .zshrc block is at the start and holds the three slots in order, after the defaults' header (0.183676ms)
✔ the .zshrc block carries the shared defaults and none of the operator's own lines (0.240683ms)
✔ the .zshenv block sources exactly the environment file node-environment fixes (0.257275ms)
✔ its environment is a contribution: the editor, the configuration home, and three PATH entries at the start (0.418799ms)
✔ it keeps the package and sets the login shell through the user shape (0.121038ms)
✔ the tools bundle registers the seat's verb under node-login-shell (0.211549ms)
✔ execute is a per-machine config value, served unless a machine withholds it (ADR 0268, ADR 0348 §4) (0.363634ms)
✔ the tools bundle registers execute only where the machine's setting serves it (0.322918ms)
✔ execute is served only when the machine's setting says serve (0.698085ms)
✔ anything but serve withholds it: a wrong value, no line, no file (0.218972ms)
✔ the setting is read from the file the bundle's word names (0.474835ms)
ℹ tests 22
ℹ suites 0
ℹ pass 21
ℹ fail 0
ℹ cancelled 0
ℹ skipped 1
ℹ todo 0
ℹ duration_ms 801.040292
**Merge check** at `7104df6f` Judged: head `7104df6fa284` merged into trunk `5e6f5b8f6d99`; read beside it: mesh-controller `d5d54498358e`, mesh-controller-main `d5d54498358e`, mesh-host `6469e8238443`, mesh-tools `7412c5b6c9c5` - `mesh/merge-gate`: **PASS, WITH A NOTE** — a merge rebuilds 89 module(s) in 1 tier(s) (modules: artifact-store-tools, asus-zephyrus-g14, audit-logger, baserow, betterbird, ca-trust, claude-code, claude-licence-manager, clipmenu, confluence, desk-channel, distribution, dnsmasq, docker, dunst, fail2ban, feh, gitea, gitlab, grafana, hello-web, home-assistant, i3, i3status-rust, icecast, influxdb, invoicing, jira, kernel, keycloak, lab, lemurs, letta, local-model-consumer, mailu, matrix, memory-pressure, mesh-catalog, mesh-cli, mesh-config, mesh-delivery, mesh-files, mesh-issues, mesh-knowledge, mesh-mail, mesh-mail-notifier, mesh-provisioner, mesh-provisioner-client, mesh-reads, mesh-vault, mesh-watcher, messenger, minio, model-usage, mongodb, mosquitto, mounts, mssql, n8n, nats, nextcloud, nfs-server, node-env, nodered, only-office, openai-consumer, picom, postgres, power, powerlevel10k, records, redis, restic, rofi, route-adapter, searxng, showcase, ssh-client, step-ca, supabase, systemd, telegram, triggerhappy, umami, unifi, website, xorg, zfs, zsh, new:modules/build-agent, new:modules/marrytts, new:modules/ollama, new:modules/photos-eef, new:modules/photos-filip, new:modules/route-proxy) - `mesh/repo-check`: **PASS** — THE CHANGE ALTERS ITS OWN CHECK (merge-check.sh): main's version judged it; the change's judges the pull requests after it merges; its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript) **Delivery plan** — builds artifact-store-tools, asus-zephyrus-g14, audit-logger, baserow, betterbird, ca-trust, claude-code, claude-licence-manager, clipmenu, confluence, desk-channel, distribution, dnsmasq, docker, dunst, fail2ban, feh, gitea, gitlab, grafana, hello-web, home-assistant, i3, i3status-rust, icecast, influxdb, invoicing, jira, kernel, keycloak, lab, lemurs, letta, local-model-consumer, mailu, matrix, memory-pressure, mesh-catalog, mesh-cli, mesh-config, mesh-delivery, mesh-files, mesh-issues, mesh-knowledge, mesh-mail, mesh-mail-notifier, mesh-provisioner, mesh-provisioner-client, mesh-reads, mesh-vault, mesh-watcher, messenger, minio, model-usage, mongodb, mosquitto, mounts, mssql, n8n, nats, nextcloud, nfs-server, node-env, nodered, only-office, openai-consumer, picom, postgres, power, powerlevel10k, records, redis, restic, rofi, route-adapter, searxng, showcase, ssh-client, step-ca, supabase, systemd, telegram, triggerhappy, umami, unifi, website, xorg, zfs, zsh, new: modules/build-agent, modules/marrytts, modules/ollama, modules/photos-eef, modules/photos-filip, modules/route-proxy → ace, g14, novox, shanks; merging this needs a person's bus upgrade; 12 wait(s) for a person - tier 0: artifact-store-tools, asus-zephyrus-g14, audit-logger, baserow, betterbird, ca-trust, claude-code, claude-licence-manager, clipmenu, confluence, desk-channel, distribution, dnsmasq, docker, dunst, fail2ban, feh, gitea, gitlab, grafana, hello-web, home-assistant, i3, i3status-rust, icecast, influxdb, invoicing, jira, kernel, keycloak, lab, lemurs, letta, local-model-consumer, mailu, matrix, memory-pressure, mesh-catalog, mesh-cli, mesh-config, mesh-delivery, mesh-files, mesh-issues, mesh-knowledge, mesh-mail, mesh-mail-notifier, mesh-provisioner, mesh-provisioner-client, mesh-reads, mesh-vault, mesh-watcher, messenger, minio, model-usage, mongodb, mosquitto, mounts, mssql, n8n, nats, nextcloud, nfs-server, node-env, nodered, only-office, openai-consumer, picom, postgres, power, powerlevel10k, records, redis, restic, rofi, route-adapter, searxng, showcase, ssh-client, step-ca, supabase, systemd, telegram, triggerhappy, umami, unifi, website, xorg, zfs, zsh - ace: receives baserow, ca-trust, claude-code, docker, fail2ban, grafana, home-assistant, icecast, influxdb, kernel, letta, matrix, mesh-cli, mesh-files, mesh-provisioner-client, mesh-reads, mosquitto, n8n, node-env, nodered, power, powerlevel10k, redis, restic, searxng, ssh-client, supabase, systemd, unifi, zsh; waits for a person: dnsmasq, mssql, nfs-server, postgres - g14: receives asus-zephyrus-g14, ca-trust, claude-code, clipmenu, docker, dunst, fail2ban, feh, i3, i3status-rust, kernel, lemurs, memory-pressure, mesh-cli, mesh-files, mesh-mail-notifier, mesh-provisioner-client, mesh-reads, node-env, picom, power, powerlevel10k, restic, rofi, ssh-client, systemd, triggerhappy, xorg, zsh - novox: receives artifact-store-tools, ca-trust, claude-code, claude-licence-manager, desk-channel, distribution, docker, fail2ban, gitea, invoicing, kernel, mesh-catalog, mesh-cli, mesh-config, mesh-delivery, mesh-files, mesh-issues, mesh-knowledge, mesh-mail, mesh-provisioner, mesh-provisioner-client, mesh-reads, mesh-vault, messenger, nextcloud, node-env, only-office, power, powerlevel10k, records, restic, ssh-client, step-ca, systemd, telegram, umami, website, zsh; waits for a person: dnsmasq, keycloak, mailu, minio, mongodb, mssql, nats, postgres - shanks: receives ca-trust, claude-code, clipmenu, docker, dunst, fail2ban, feh, i3, i3status-rust, kernel, lab, lemurs, mesh-cli, mesh-files, mesh-mail-notifier, mesh-provisioner-client, mesh-reads, mounts, node-env, picom, power, powerlevel10k, restic, rofi, ssh-client, systemd, xorg, zsh - baserow keeps data (ADR 0233): what it holds is backed up before it moves - claude-code keeps data (ADR 0233): what it holds is backed up before it moves - distribution provides artifact-store: its consumers are sent again after it - distribution keeps data (ADR 0233): what it holds is backed up before it moves - dnsmasq waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends - dnsmasq provides wildcard-resolution: its consumers are sent again after it - gitea provides npm-package-registry, git, gitea-read, forge-account: its consumers are sent again after it - gitea keeps data (ADR 0233): what it holds is backed up before it moves - grafana keeps data (ADR 0233): what it holds is backed up before it moves - home-assistant keeps data (ADR 0233): what it holds is backed up before it moves - icecast keeps data (ADR 0233): what it holds is backed up before it moves - influxdb provides influxdb-api: its consumers are sent again after it - influxdb keeps data (ADR 0233): what it holds is backed up before it moves - keycloak waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends - keycloak provides oidc-client: its consumers are sent again after it - keycloak keeps data (ADR 0233): what it holds is backed up before it moves - lab keeps data (ADR 0233): what it holds is backed up before it moves - mailu waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends - mailu provides smtp: its consumers are sent again after it - mailu keeps data (ADR 0233): what it holds is backed up before it moves - matrix keeps data (ADR 0233): what it holds is backed up before it moves - mesh-vault provides secret: its consumers are sent again after it - mesh-vault keeps data (ADR 0233): what it holds is backed up before it moves - minio waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends - minio provides s3-bucket: its consumers are sent again after it - minio keeps data (ADR 0233): what it holds is backed up before it moves - mongodb waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends - mongodb provides mongodb-database: its consumers are sent again after it - mongodb keeps data (ADR 0233): what it holds is backed up before it moves - mosquitto provides mqtt-topic: its consumers are sent again after it - mosquitto keeps data (ADR 0233): what it holds is backed up before it moves - mssql waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends - mssql provides mssql-database: its consumers are sent again after it - mssql keeps data (ADR 0233): what it holds is backed up before it moves - n8n keeps data (ADR 0233): what it holds is backed up before it moves - merging this needs a person's bus upgrade: nats is never sent by an ordinary send, and until `mesh_call mesh-controller.bus {"upgrade": "true", "why": "…", "reversible" or "irreversible": "true"}` runs, nothing else is sent to novox either — unless the new build turns out the same as the one running there (issue 280) - nats provides mesh-bus: its consumers are sent again after it - nats keeps data (ADR 0233): what it holds is backed up before it moves - nextcloud keeps data (ADR 0233): what it holds is backed up before it moves - nfs-server waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends - nfs-server provides nfs-share: its consumers are sent again after it - nfs-server keeps data (ADR 0233): what it holds is backed up before it moves - nodered keeps data (ADR 0233): what it holds is backed up before it moves - only-office keeps data (ADR 0233): what it holds is backed up before it moves - postgres waits for a person: its policy records (module) — unless on a machine its move recreates none of its containers and moves none of its data, which the walk judges and then sends - postgres provides postgres-database: its consumers are sent again after it - postgres keeps data (ADR 0233): what it holds is backed up before it moves - records keeps data (ADR 0233): what it holds is backed up before it moves - redis provides redis-cache: its consumers are sent again after it - redis keeps data (ADR 0233): what it holds is backed up before it moves - restic keeps data (ADR 0233): what it holds is backed up before it moves - searxng keeps data (ADR 0233): what it holds is backed up before it moves - ssh-client keeps data (ADR 0233): what it holds is backed up before it moves - step-ca provides internal-acme-ca: its consumers are sent again after it - step-ca keeps data (ADR 0233): what it holds is backed up before it moves - supabase keeps data (ADR 0233): what it holds is backed up before it moves - umami provides analytics: its consumers are sent again after it - umami keeps data (ADR 0233): what it holds is backed up before it moves - unifi keeps data (ADR 0233): what it holds is backed up before it moves - xorg provides x11-display: its consumers are sent again after it - grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before asus-zephyrus-g14, baserow, ca-trust, claude-code, clipmenu, docker, dunst, fail2ban, feh, grafana, home-assistant, i3, i3status-rust, icecast, influxdb, kernel, lab, lemurs, letta, matrix, memory-pressure, mesh-cli, mesh-files, mesh-mail-notifier, mesh-provisioner-client, mesh-reads, mosquitto, mounts, n8n, node-env, nodered, picom, power, powerlevel10k, redis, restic, rofi, searxng, ssh-client, supabase, systemd, triggerhappy, unifi, xorg, zsh is judged on its first machine - read by no module's build: checks/owned/go.mod, checks/owned/main.go, checks/owned/main_test.go, merge-check.sh, modules/artifact-store-tools/README.md, modules/asus-zephyrus-g14/README.md, modules/betterbird/README.md, modules/ca-trust/README.md, modules/claude-code/README.md, modules/claude-licence-manager/README.md, modules/clipmenu/README.md, modules/desk-channel/README.md, modules/dnsmasq/README.md, modules/docker/README.md, modules/dunst/README.md, modules/fail2ban/README.md, modules/feh/README.md, modules/hello-web/README.md, modules/i3/README.md, modules/i3status-rust/README.md, modules/invoicing/README.md, modules/kernel/README.md, modules/keycloak/README.md, modules/lemurs/README.md, modules/local-model-consumer/README.md, modules/matrix/README.md, modules/memory-pressure/README.md, modules/mesh-cli/README.md, modules/mesh-config/README.md, modules/mesh-delivery/README.md, modules/mesh-files/README.md, modules/mesh-issues/README.md, modules/mesh-knowledge/README.md, modules/mesh-mail-notifier/README.md, modules/mesh-mail/README.md, modules/mesh-provisioner-client/README.md, modules/mesh-provisioner/README.md, modules/mesh-reads/README.md, modules/mesh-vault/README.md, modules/mesh-watcher/README.md, modules/messenger/README.md, modules/mounts/README.md, modules/nfs-server/README.md, modules/node-env/README.md, modules/only-office/README.md, modules/picom/README.md, modules/postgres/README.md, modules/power/README.md, modules/powerlevel10k/README.md, modules/powerlevel10k/test/module.test.ts, modules/records/README.md, modules/restic/README.md, modules/rofi/README.md, modules/ssh-client/README.md, modules/ssh-client/cmd/ssh-client-tools/templates_test.go, modules/step-ca/README.md, modules/supabase/README.md, modules/telegram/README.md, modules/triggerhappy/README.md, modules/xorg/README.md, modules/zfs/README.md Run by the build seat on ace as `build-1792259715740234799` (`builds --log build-1792259715740234799`). ``` type-checking modules/letta (TypeScript) NOT TESTED: modules/letta is TypeScript and has no tests of its own type-checking modules/mailu (TypeScript) testing modules/mailu (TypeScript) ✔ an empty queue is healthy, and says so (1.362176ms) ✔ a recipient overdue on a name-service failure is unhealthy, with counts, its age and its reason (0.624266ms) ✔ one dead far domain overdue is healthy, and said (0.310315ms) ✔ overdue mail to three domains is unhealthy, whatever the reason (0.250071ms) ✔ a deferred message younger than the bound is healthy, and is said (0.231106ms) ✔ a container that cannot be reached is unhealthy, and says what docker said (0.251333ms) ✔ a name that does not resolve is unhealthy, though the queue is empty (0.220816ms) ✔ a container that does not answer in time is said so (0.162756ms) ✔ the health tool is served without the admin API, on the smtp container it is told (4.431676ms) ✔ the vault's apiKey is used, a setting of it is ignored and said once, without its value (1.564998ms) ℹ tests 10 ℹ suites 0 ℹ pass 10 ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 82.711967 type-checking modules/mesh-catalog (TypeScript) testing modules/mesh-catalog (TypeScript) ✔ the catalogue hears the build seat that builds now, not only the retired one (issue 712) (3.765984ms) ✔ a walk's build is placed, under its module and commit (0.556979ms) ✔ a merge check, a try, a dry run and a failure are passed over without a fault (0.208262ms) ✔ an outcome that names no module or commit is said as the builder's fault (0.159761ms) ✔ a branch built through the build verb is passed over; a commit on the trunk, or from a seat that names none, is placed (ADR 0238) (0.146937ms) ℹ tests 5 ℹ suites 0 ℹ pass 5 ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 73.204268 type-checking modules/minio (TypeScript) NOT TESTED: modules/minio is TypeScript and has no tests of its own type-checking modules/model-usage (TypeScript) testing modules/model-usage (TypeScript) ✔ a store that refuses a row is thrown, so the event is offered again, and it is spooled (16.521548ms) ✔ a redelivered event writes the same reading, never a second, and clears its spooled copy (9.798975ms) ✔ on its last delivery a usage event is spooled and taken (51.45322ms) ✔ the spool replays once the store answers, and an older reading replayed late does not overwrite a newer (45.83477ms) ✔ an event without a body is taken without a TypeError; a row the store could never take is skipped, not retried (0.893332ms) ✔ model_usage_status reports the spool, and is offered even when the store cannot be opened (44.411357ms) ﹣ against postgres: migrations are numbered and repeatable, and the upsert keeps the reading observed latest (0.163829ms) # TEST_DATABASE_URL is not set ℹ tests 7 ℹ suites 0 ℹ pass 6 ℹ fail 0 ℹ cancelled 0 ℹ skipped 1 ℹ todo 0 ℹ duration_ms 253.778915 type-checking modules/mongodb (TypeScript) NOT TESTED: modules/mongodb is TypeScript and has no tests of its own type-checking modules/mosquitto (TypeScript) testing modules/mosquitto (TypeScript) ✔ named, the broker's container runs mosquitto_ctrl under the options shell, stdin open (1.68313ms) ✔ unnamed, this machine's mosquitto_ctrl runs under the same shell (0.156104ms) ✔ the options shell itself holds no secret (0.174158ms) ✔ an argv carrying the admin password or a password being set is refused, by name (0.413108ms) ✔ the admin tool refuses a dynsec command that would put a password on a command line (0.2017ms) ✔ the admin's name and password reach mosquitto_ctrl in a 0600 options file, and a password being set at its prompt (101.598597ms) ✔ a consumer that contributed nothing gets its own subtree (1.067391ms) ✔ a contributed list is granted exactly, duplicates once (0.231125ms) ✔ a list that is not topic filters is refused whole (0.220455ms) ✔ getRole's ACL lines are read, the warning and headings are not (0.287111ms) ✔ the role is brought to exactly the wanted ACLs (0.301668ms) ℹ tests 11 ℹ suites 0 ℹ pass 11 ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 176.841063 type-checking modules/mssql (TypeScript) testing modules/mssql (TypeScript) ✔ a caller's statement runs as the reader, as it was written, on the database it names (2.302096ms) ✔ the reader is made as the administrator, kept out of sysadmin, and granted only reading (0.473963ms) ✔ without the reader's password the statement is refused, and nothing runs as the administrator (1.667261ms) ✔ a consumer's password is checked as a bound parameter, never in the text (0.235544ms) ℹ tests 4 ℹ suites 0 ℹ pass 4 ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 235.483572 type-checking modules/nextcloud (TypeScript) testing modules/nextcloud (TypeScript) ✔ the vault's password is used, a setting of it is ignored and said once, without its value (2.012762ms) ℹ tests 1 ℹ suites 0 ℹ pass 1 ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 76.803505 type-checking modules/nodered (TypeScript) testing modules/nodered (TypeScript) ✔ ace: the named broker node is moved to the bound broker and login; the other broker is not touched (2.079637ms) ✔ fresh: with nothing named, the step makes its own broker node (0.296728ms) ✔ a login the broker does not take is never written (0.156685ms) ✔ a named node that is not there, or a loopback broker, is refused (0.840884ms) ✔ a deploy that raced another is read again once (0.460107ms) ✔ settings name broker nodes under mqtt.brokers (0.14291ms) ℹ tests 6 ℹ suites 0 ℹ pass 6 ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 80.371485 type-checking modules/openai-consumer (TypeScript) NOT TESTED: modules/openai-consumer is TypeScript and has no tests of its own modules/powerlevel10k has no TypeScript sources of its own to type-check: its tests read its files testing modules/powerlevel10k (TypeScript) ✔ the theme archive is built from the vendored release and carries its licence (1.175544ms) ✔ the configuration archive holds the prompt's configuration and nothing else (0.154871ms) ✔ both are unpacked under the account's home, owned by the account (0.47805ms) ✔ the zsh code in the normal slot sources the theme, then the configuration, and turns on no instant prompt (0.567609ms) ✔ the README names the upstream, the version and the licence (0.369596ms) ℹ tests 5 ℹ suites 0 ℹ pass 5 ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 72.255619 type-checking modules/redis (TypeScript) NOT TESTED: modules/redis is TypeScript and has no tests of its own type-checking modules/route-adapter (TypeScript) testing modules/route-adapter (TypeScript) ✔ it writes one route file per contribution, in the predecessor's own shape (6.207952ms) ✔ it removes the file it wrote when that contribution goes (2.666342ms) ✔ it never touches a file it did not write (3.740104ms) ✔ the target port follows what the contributor publishes (1.578824ms) ✔ a contributor on another node is reached at the address the mesh gave it (1.193307ms) ✔ a node's settings are laid over the module's defaults, and nothing else changes (1.090183ms) ✔ a contribution it cannot act on is skipped and named (0.177965ms) ✔ a contribution the file shape cannot say is skipped and says which part (0.219524ms) ✔ it refuses when the predecessor's directory is not there, and says why (1.331889ms) ✔ a body limit is written as the predecessor's buffering middleware (1.558807ms) ✔ a body limit that is not a whole number of bytes is skipped and named (0.274678ms) ℹ tests 11 ℹ suites 0 ℹ pass 11 ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 90.015288 type-checking modules/searxng (TypeScript) NOT TESTED: modules/searxng is TypeScript and has no tests of its own type-checking modules/showcase (TypeScript) NOT TESTED: modules/showcase is TypeScript and has no tests of its own type-checking modules/umami (TypeScript) NOT TESTED: modules/umami is TypeScript and has no tests of its own type-checking modules/unifi (TypeScript) NOT TESTED: modules/unifi is TypeScript and has no tests of its own type-checking modules/zsh (TypeScript) testing modules/zsh (TypeScript) ✔ the exit status and both streams are answered (7.610935ms) ✔ it runs in the directory it is given (3.543134ms) ✔ on timeout the whole process group is ended, a backgrounded grandchild included (502.529642ms) ✔ output beyond the bound is cut and the answer says so (6.080753ms) ✔ a job left in the background does not hold the answer (204.355657ms) ﹣ zsh runs the command as a login shell, when zsh is here (1.995357ms) # zsh is not installed here ✔ the timeout is held below the runtime's call limit (0.139212ms) ✔ the command's environment drops the mesh's words and gains the account's session words when they exist (0.239491ms) ✔ zsh_config counts the mesh's block in a file (3.293443ms) ✔ no file carries its text inline: each names its template, and the build packs files/ into one archive (1.215239ms) ✔ it claims node-login-shell serving execute, and declares no seat (0.110247ms) ✔ the .zshrc block is at the start and holds the three slots in order, after the defaults' header (0.183676ms) ✔ the .zshrc block carries the shared defaults and none of the operator's own lines (0.240683ms) ✔ the .zshenv block sources exactly the environment file node-environment fixes (0.257275ms) ✔ its environment is a contribution: the editor, the configuration home, and three PATH entries at the start (0.418799ms) ✔ it keeps the package and sets the login shell through the user shape (0.121038ms) ✔ the tools bundle registers the seat's verb under node-login-shell (0.211549ms) ✔ execute is a per-machine config value, served unless a machine withholds it (ADR 0268, ADR 0348 §4) (0.363634ms) ✔ the tools bundle registers execute only where the machine's setting serves it (0.322918ms) ✔ execute is served only when the machine's setting says serve (0.698085ms) ✔ anything but serve withholds it: a wrong value, no line, no file (0.218972ms) ✔ the setting is read from the file the bundle's word names (0.474835ms) ℹ tests 22 ℹ suites 0 ℹ pass 21 ℹ fail 0 ℹ cancelled 0 ℹ skipped 1 ℹ todo 0 ℹ duration_ms 801.040292 ```
mesh-tools added the mesh/ready label 2026-10-17 18:09:30 +00:00
Author
Member

ready at 7104df6fa2

Reviewed by owned-paths-review@novox: Reviewed in three rounds against issue 1024 and ADR 0422; the fold of main 5e6f5b8f (#350) confirmed to lose nothing; forge tree equals the reviewed tree; gate passes (warning: the rebuild's width only) and merge-check.sh green under main's script. Marked through mesh-delivery.mark-ready (novox/hq issue 913).

ready at 7104df6fa28455abe66e8753348af28abdaed6b6 Reviewed by owned-paths-review@novox: Reviewed in three rounds against issue 1024 and ADR 0422; the fold of main 5e6f5b8f (#350) confirmed to lose nothing; forge tree equals the reviewed tree; gate passes (warning: the rebuild's width only) and merge-check.sh green under main's script. Marked through mesh-delivery.mark-ready (novox/hq issue 913).
mesh-tools merged commit 5e7567e5a0 into main 2026-10-17 18:14:12 +00:00
mesh-tools deleted branch feat/owned-paths 2026-10-17 18:14:13 +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-catalog#349