gitea: announces each new head of an open pull request as pull.updated (once; kept in pulls-announced.json; a first look with no record announces only the last day's), marks it pending; consumes mesh-controller.checked and sets the head commit's status mesh/merge-gate (pass→success, warning→warning, fail→failure, error/none→error, never success), and comments the check's account when not a pass. setCommitStatus in the client. Manifest: emits pull.updated, consumes mesh-controller.checked.
merge-check.sh: the running controller's module check and merge gate over this tree, then the Go tests of each touched module (a module whose deps cannot be fetched is said NOT TESTED).
Tests: test/pulls.test.ts (heads announced once, verdict→status mapping, report fenced safely, status POST) — run compiled with tsc in a scratch dir, all 7 gitea tests pass. The module stays TypeScript (porting gitea to Go is its own work).
Merge order: after mesh-controller #96 (the controller's agreement test needs an emitter of checked before a consumer of it). Rollout: gitea module build + push to the forge's machine.
hq to-be 45 §9 / ADR 0237 decision 4.
- gitea: announces each new head of an open pull request as `pull.updated` (once; kept in `pulls-announced.json`; a first look with no record announces only the last day's), marks it pending; consumes `mesh-controller.checked` and sets the head commit's status `mesh/merge-gate` (pass→success, warning→warning, fail→failure, error/none→error, never success), and comments the check's account when not a pass. `setCommitStatus` in the client. Manifest: emits `pull.updated`, consumes `mesh-controller.checked`.
- `merge-check.sh`: the running controller's module check and merge gate over this tree, then the Go tests of each touched module (a module whose deps cannot be fetched is said NOT TESTED).
Tests: `test/pulls.test.ts` (heads announced once, verdict→status mapping, report fenced safely, status POST) — run compiled with tsc in a scratch dir, all 7 gitea tests pass. The module stays TypeScript (porting gitea to Go is its own work).
**Merge order**: after mesh-controller #96 (the controller's agreement test needs an emitter of `checked` before a consumer of it). Rollout: gitea module build + push to the forge's machine.
The forge's announcer announces each new head of an open pull request as pull.updated, once,
and marks the head pending; the controller asks the build seat to check it against every
machine of the mesh's facts, and says the verdict as checked, which the forge's holder sets as
the head commit's status mesh/merge-gate - an error never as a success - with the check's own
account as a comment when it is not a pass. merge-check.sh is the catalogue's check: every
manifest through the running controller's module check and merge gate, and the Go tests of each
module the change touches, a module whose dependencies cannot be fetched said as not tested.
Deliverynovox/mesh-catalog@b792bf4ba2ab — delivered since 2026-10-06T23:05:28Z
Machines
adwaita on g14: passed — healthy 3 times over 3m25s
adwaita on the rest running it: sent
asus-zephyrus-g14 on g14: passed — healthy 3 times over 3m26s
asus-zephyrus-g14 on the rest running it: sent
audit-logger on every machine running it: sent
avahi on ace: passed — healthy 3 times over 3m25s
avahi on the rest running it: sent
baserow on ace: passed — healthy 3 times over 10m22s
baserow on the rest running it: sent
blueman on g14: passed — healthy 3 times over 2m27s
blueman on the rest running it: sent
bluetooth on g14: passed — judged with blueman: healthy 3 times over 2m27s
bluetooth on the rest running it: sent
build-agent on ace: passed — healthy 3 times over 2m25s
build-agent on the rest running it: sent
ca-trust on ace: passed — healthy 3 times over 10m7s
ca-trust on the rest running it: sent
claude-code on ace: passed — healthy 3 times over 10m13s
claude-code on the rest running it: sent
claude-licence-manager on novox: passed — healthy 3 times over 2m17s
claude-licence-manager on the rest running it: sent
clipmenu on g14: passed — judged with blueman: healthy 3 times over 2m27s
clipmenu on the rest running it: sent
confluence on every machine running it: sent
cups on g14: passed — judged with blueman: healthy 3 times over 2m27s
cups on the rest running it: sent
dbus on ace: passed — healthy 3 times over 2m32s
dbus on the rest running it: sent
distribution on novox: passed — healthy 3 times over 2m19s
distribution on the rest running it: sent
dmenu on g14: passed — judged with blueman: healthy 3 times over 2m27s
dmenu on the rest running it: sent
docker on ace: passed — judged with dbus: healthy 3 times over 2m32s
docker on the rest running it: sent
docker-compose on g14: passed — judged with blueman: healthy 3 times over 2m27s
docker-compose on the rest running it: sent
dunst on g14: passed — judged with blueman: healthy 3 times over 2m27s
dunst on the rest running it: sent
fail2ban on ace: passed — judged with dbus: healthy 3 times over 2m32s
fail2ban on the rest running it: sent
feh on g14: passed — judged with blueman: healthy 3 times over 2m27s
feh on the rest running it: sent
flatpak on g14: passed — judged with blueman: healthy 3 times over 2m27s
flatpak on the rest running it: sent
fonts on g14: passed — judged with blueman: healthy 3 times over 2m27s
fonts on the rest running it: sent
forticlient on g14: passed — judged with blueman: healthy 3 times over 2m27s
forticlient on the rest running it: sent
gitea on novox: passed — judged with distribution: healthy 3 times over 2m19s
gitea on the rest running it: sent
gitlab on every machine running it: sent
gnome-keyring on g14: passed — judged with blueman: healthy 3 times over 2m27s
gnome-keyring on the rest running it: sent
grafana on ace: passed — judged with dbus: healthy 3 times over 2m32s
grafana on the rest running it: sent
home-assistant on ace: passed — judged with dbus: healthy 3 times over 2m32s
home-assistant on the rest running it: sent
hostname on ace: passed — judged with dbus: healthy 3 times over 2m32s
hostname on the rest running it: sent
i3 on g14: passed — judged with blueman: healthy 3 times over 2m27s
i3 on the rest running it: sent
i3status-rust on g14: passed — judged with blueman: healthy 3 times over 2m27s
i3status-rust on the rest running it: sent
icecast on ace: passed — judged with dbus: healthy 3 times over 2m32s
icecast on the rest running it: sent
influxdb on ace: passed — judged with dbus: healthy 3 times over 2m32s
influxdb on the rest running it: sent
invoicing on novox: passed — judged with distribution: healthy 3 times over 2m19s
invoicing on the rest running it: sent
jira on every machine running it: sent
lab on shanks: passed — healthy 3 times over 2m17s
lab on the rest running it: sent
lemurs on g14: passed — judged with blueman: healthy 3 times over 2m27s
lemurs on the rest running it: sent
letta on ace: passed — judged with dbus: healthy 3 times over 2m32s
letta on the rest running it: sent
localization on ace: passed — judged with dbus: healthy 3 times over 2m32s
localization on the rest running it: sent
logrotate on ace: passed — judged with dbus: healthy 3 times over 2m32s
logrotate on the rest running it: sent
mailu on novox: passed — judged with distribution: healthy 3 times over 2m19s
mailu on the rest running it: sent
matrix on ace: passed — judged with dbus: healthy 3 times over 2m32s
matrix on the rest running it: sent
memory-pressure on g14: passed — judged with blueman: healthy 3 times over 2m27s
memory-pressure on the rest running it: sent
mesh-catalog on novox: passed — judged with distribution: healthy 3 times over 2m19s
mesh-catalog on the rest running it: sent
mesh-vault on novox: passed — judged with distribution: healthy 3 times over 2m19s
mesh-vault on the rest running it: sent
mesh-watcher on every machine running it: sent
messenger on novox: passed — judged with distribution: healthy 3 times over 2m19s
messenger on the rest running it: sent
mosquitto on ace: passed — judged with dbus: healthy 3 times over 2m32s
mosquitto on the rest running it: sent
n8n on ace: passed — judged with dbus: healthy 3 times over 2m32s
n8n on the rest running it: sent
netcheck on ace: passed — judged with dbus: healthy 3 times over 2m32s
netcheck on the rest running it: sent
nextcloud on novox: passed — judged with distribution: healthy 3 times over 2m19s
nextcloud on the rest running it: sent
nextcloud-client on g14: passed — judged with blueman: healthy 3 times over 2m27s
nextcloud-client on the rest running it: sent
nm-applet on g14: passed — judged with blueman: healthy 3 times over 2m27s
nm-applet on the rest running it: sent
node-env on ace: passed — judged with dbus: healthy 3 times over 2m32s
node-env on the rest running it: sent
nodered on ace: passed — judged with dbus: healthy 3 times over 2m32s
nodered on the rest running it: sent
only-office on novox: passed — judged with distribution: healthy 3 times over 2m19s
only-office on the rest running it: sent
openai-consumer on every machine running it: sent
openrazer on g14: passed — judged with blueman: healthy 3 times over 2m27s
openrazer on the rest running it: sent
pacman on ace: passed — judged with dbus: healthy 3 times over 2m32s
pacman on the rest running it: sent
picom on g14: passed — judged with blueman: healthy 3 times over 2m27s
picom on the rest running it: sent
polychromatic on g14: passed — judged with blueman: healthy 3 times over 2m27s
polychromatic on the rest running it: sent
power on ace: passed — judged with dbus: healthy 3 times over 2m32s
power on the rest running it: sent
powerlevel10k on ace: passed — judged with dbus: healthy 3 times over 2m32s
powerlevel10k on the rest running it: sent
records on novox: passed — judged with distribution: healthy 3 times over 2m19s
records on the rest running it: sent
redis on ace: passed — judged with dbus: healthy 3 times over 2m32s
redis on the rest running it: sent
restic on ace: passed — judged with dbus: healthy 3 times over 2m32s
restic on the rest running it: sent
rofi on g14: passed — judged with blueman: healthy 3 times over 2m27s
rofi on the rest running it: sent
route-adapter on every machine running it: sent
route-proxy on ace: passed — judged with dbus: healthy 3 times over 2m32s
route-proxy on the rest running it: sent
screen-lock on g14: passed — judged with blueman: healthy 3 times over 2m27s
screen-lock on the rest running it: sent
searxng on ace: passed — judged with dbus: healthy 3 times over 2m32s
searxng on the rest running it: sent
slack on g14: passed — judged with blueman: healthy 3 times over 2m27s
slack on the rest running it: sent
snapd on g14: passed — judged with blueman: healthy 3 times over 2m27s
snapd on the rest running it: sent
ssh-client on ace: passed — judged with dbus: healthy 3 times over 2m32s
ssh-client on the rest running it: sent
step-ca on novox: passed — judged with distribution: healthy 3 times over 2m19s
step-ca on the rest running it: sent
sudo on ace: passed — judged with dbus: healthy 3 times over 2m32s
sudo on the rest running it: sent
supabase on ace: passed — judged with dbus: healthy 3 times over 2m32s
supabase on the rest running it: sent
systemd on ace: passed — judged with dbus: healthy 3 times over 2m32s
systemd on the rest running it: sent
time-sync on ace: passed — judged with dbus: healthy 3 times over 2m32s
time-sync on the rest running it: sent
triggerhappy on g14: passed — judged with blueman: healthy 3 times over 2m27s
triggerhappy on the rest running it: sent
umami on novox: passed — judged with distribution: healthy 3 times over 2m19s
umami on the rest running it: sent
unifi on ace: passed — judged with dbus: healthy 3 times over 2m32s
unifi on the rest running it: sent
website on novox: passed — judged with distribution: healthy 3 times over 2m19s
website on the rest running it: sent
xclip on g14: passed — judged with blueman: healthy 3 times over 2m27s
xclip on the rest running it: sent
xdg on g14: passed — judged with blueman: healthy 3 times over 2m27s
xdg on the rest running it: sent
xorg on g14: passed — judged with blueman: healthy 3 times over 2m27s
xorg on the rest running it: sent
xterm on g14: passed — judged with blueman: healthy 3 times over 2m27s
xterm on the rest running it: sent
zsh on ace: passed — judged with dbus: healthy 3 times over 2m32s
zsh on the rest running it: sent
zsh-autosuggestions on ace: passed — judged with dbus: healthy 3 times over 2m32s
zsh-autosuggestions on the rest running it: sent
zsh-syntax-highlighting on ace: passed — judged with dbus: healthy 3 times over 2m32s
zsh-syntax-highlighting on the rest running it: sent
Transitions
2026-10-06 23:05 (new) → proposed (announced): novox/mesh-catalog#97 merged; its head was not heard by this owner, so it is made from the forge's word
2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on
2026-10-06 23:05 held → delivering (go): its walk started on a word that was not this owner's: the controller's own path, which waits for nobody, or a person's plans go
2026-10-06 23:05 delivering → delivered (done): its walk is done: 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@b792bf4ba2ab` — **delivered** since 2026-10-06T23:05:28Z
**Machines**
- adwaita on g14: passed — healthy 3 times over 3m25s
- adwaita on the rest running it: sent
- asus-zephyrus-g14 on g14: passed — healthy 3 times over 3m26s
- asus-zephyrus-g14 on the rest running it: sent
- audit-logger on every machine running it: sent
- avahi on ace: passed — healthy 3 times over 3m25s
- avahi on the rest running it: sent
- baserow on ace: passed — healthy 3 times over 10m22s
- baserow on the rest running it: sent
- blueman on g14: passed — healthy 3 times over 2m27s
- blueman on the rest running it: sent
- bluetooth on g14: passed — judged with blueman: healthy 3 times over 2m27s
- bluetooth on the rest running it: sent
- build-agent on ace: passed — healthy 3 times over 2m25s
- build-agent on the rest running it: sent
- ca-trust on ace: passed — healthy 3 times over 10m7s
- ca-trust on the rest running it: sent
- claude-code on ace: passed — healthy 3 times over 10m13s
- claude-code on the rest running it: sent
- claude-licence-manager on novox: passed — healthy 3 times over 2m17s
- claude-licence-manager on the rest running it: sent
- clipmenu on g14: passed — judged with blueman: healthy 3 times over 2m27s
- clipmenu on the rest running it: sent
- confluence on every machine running it: sent
- cups on g14: passed — judged with blueman: healthy 3 times over 2m27s
- cups on the rest running it: sent
- dbus on ace: passed — healthy 3 times over 2m32s
- dbus on the rest running it: sent
- distribution on novox: passed — healthy 3 times over 2m19s
- distribution on the rest running it: sent
- dmenu on g14: passed — judged with blueman: healthy 3 times over 2m27s
- dmenu on the rest running it: sent
- docker on ace: passed — judged with dbus: healthy 3 times over 2m32s
- docker on the rest running it: sent
- docker-compose on g14: passed — judged with blueman: healthy 3 times over 2m27s
- docker-compose on the rest running it: sent
- dunst on g14: passed — judged with blueman: healthy 3 times over 2m27s
- dunst on the rest running it: sent
- fail2ban on ace: passed — judged with dbus: healthy 3 times over 2m32s
- fail2ban on the rest running it: sent
- feh on g14: passed — judged with blueman: healthy 3 times over 2m27s
- feh on the rest running it: sent
- flatpak on g14: passed — judged with blueman: healthy 3 times over 2m27s
- flatpak on the rest running it: sent
- fonts on g14: passed — judged with blueman: healthy 3 times over 2m27s
- fonts on the rest running it: sent
- forticlient on g14: passed — judged with blueman: healthy 3 times over 2m27s
- forticlient on the rest running it: sent
- gitea on novox: passed — judged with distribution: healthy 3 times over 2m19s
- gitea on the rest running it: sent
- gitlab on every machine running it: sent
- gnome-keyring on g14: passed — judged with blueman: healthy 3 times over 2m27s
- gnome-keyring on the rest running it: sent
- grafana on ace: passed — judged with dbus: healthy 3 times over 2m32s
- grafana on the rest running it: sent
- home-assistant on ace: passed — judged with dbus: healthy 3 times over 2m32s
- home-assistant on the rest running it: sent
- hostname on ace: passed — judged with dbus: healthy 3 times over 2m32s
- hostname on the rest running it: sent
- i3 on g14: passed — judged with blueman: healthy 3 times over 2m27s
- i3 on the rest running it: sent
- i3status-rust on g14: passed — judged with blueman: healthy 3 times over 2m27s
- i3status-rust on the rest running it: sent
- icecast on ace: passed — judged with dbus: healthy 3 times over 2m32s
- icecast on the rest running it: sent
- influxdb on ace: passed — judged with dbus: healthy 3 times over 2m32s
- influxdb on the rest running it: sent
- invoicing on novox: passed — judged with distribution: healthy 3 times over 2m19s
- invoicing on the rest running it: sent
- jira on every machine running it: sent
- lab on shanks: passed — healthy 3 times over 2m17s
- lab on the rest running it: sent
- lemurs on g14: passed — judged with blueman: healthy 3 times over 2m27s
- lemurs on the rest running it: sent
- letta on ace: passed — judged with dbus: healthy 3 times over 2m32s
- letta on the rest running it: sent
- localization on ace: passed — judged with dbus: healthy 3 times over 2m32s
- localization on the rest running it: sent
- logrotate on ace: passed — judged with dbus: healthy 3 times over 2m32s
- logrotate on the rest running it: sent
- mailu on novox: passed — judged with distribution: healthy 3 times over 2m19s
- mailu on the rest running it: sent
- matrix on ace: passed — judged with dbus: healthy 3 times over 2m32s
- matrix on the rest running it: sent
- memory-pressure on g14: passed — judged with blueman: healthy 3 times over 2m27s
- memory-pressure on the rest running it: sent
- mesh-catalog on novox: passed — judged with distribution: healthy 3 times over 2m19s
- mesh-catalog on the rest running it: sent
- mesh-vault on novox: passed — judged with distribution: healthy 3 times over 2m19s
- mesh-vault on the rest running it: sent
- mesh-watcher on every machine running it: sent
- messenger on novox: passed — judged with distribution: healthy 3 times over 2m19s
- messenger on the rest running it: sent
- mosquitto on ace: passed — judged with dbus: healthy 3 times over 2m32s
- mosquitto on the rest running it: sent
- n8n on ace: passed — judged with dbus: healthy 3 times over 2m32s
- n8n on the rest running it: sent
- netcheck on ace: passed — judged with dbus: healthy 3 times over 2m32s
- netcheck on the rest running it: sent
- nextcloud on novox: passed — judged with distribution: healthy 3 times over 2m19s
- nextcloud on the rest running it: sent
- nextcloud-client on g14: passed — judged with blueman: healthy 3 times over 2m27s
- nextcloud-client on the rest running it: sent
- nm-applet on g14: passed — judged with blueman: healthy 3 times over 2m27s
- nm-applet on the rest running it: sent
- node-env on ace: passed — judged with dbus: healthy 3 times over 2m32s
- node-env on the rest running it: sent
- nodered on ace: passed — judged with dbus: healthy 3 times over 2m32s
- nodered on the rest running it: sent
- only-office on novox: passed — judged with distribution: healthy 3 times over 2m19s
- only-office on the rest running it: sent
- openai-consumer on every machine running it: sent
- openrazer on g14: passed — judged with blueman: healthy 3 times over 2m27s
- openrazer on the rest running it: sent
- pacman on ace: passed — judged with dbus: healthy 3 times over 2m32s
- pacman on the rest running it: sent
- picom on g14: passed — judged with blueman: healthy 3 times over 2m27s
- picom on the rest running it: sent
- polychromatic on g14: passed — judged with blueman: healthy 3 times over 2m27s
- polychromatic on the rest running it: sent
- power on ace: passed — judged with dbus: healthy 3 times over 2m32s
- power on the rest running it: sent
- powerlevel10k on ace: passed — judged with dbus: healthy 3 times over 2m32s
- powerlevel10k on the rest running it: sent
- records on novox: passed — judged with distribution: healthy 3 times over 2m19s
- records on the rest running it: sent
- redis on ace: passed — judged with dbus: healthy 3 times over 2m32s
- redis on the rest running it: sent
- restic on ace: passed — judged with dbus: healthy 3 times over 2m32s
- restic on the rest running it: sent
- rofi on g14: passed — judged with blueman: healthy 3 times over 2m27s
- rofi on the rest running it: sent
- route-adapter on every machine running it: sent
- route-proxy on ace: passed — judged with dbus: healthy 3 times over 2m32s
- route-proxy on the rest running it: sent
- screen-lock on g14: passed — judged with blueman: healthy 3 times over 2m27s
- screen-lock on the rest running it: sent
- searxng on ace: passed — judged with dbus: healthy 3 times over 2m32s
- searxng on the rest running it: sent
- slack on g14: passed — judged with blueman: healthy 3 times over 2m27s
- slack on the rest running it: sent
- snapd on g14: passed — judged with blueman: healthy 3 times over 2m27s
- snapd on the rest running it: sent
- ssh-client on ace: passed — judged with dbus: healthy 3 times over 2m32s
- ssh-client on the rest running it: sent
- step-ca on novox: passed — judged with distribution: healthy 3 times over 2m19s
- step-ca on the rest running it: sent
- sudo on ace: passed — judged with dbus: healthy 3 times over 2m32s
- sudo on the rest running it: sent
- supabase on ace: passed — judged with dbus: healthy 3 times over 2m32s
- supabase on the rest running it: sent
- systemd on ace: passed — judged with dbus: healthy 3 times over 2m32s
- systemd on the rest running it: sent
- time-sync on ace: passed — judged with dbus: healthy 3 times over 2m32s
- time-sync on the rest running it: sent
- triggerhappy on g14: passed — judged with blueman: healthy 3 times over 2m27s
- triggerhappy on the rest running it: sent
- umami on novox: passed — judged with distribution: healthy 3 times over 2m19s
- umami on the rest running it: sent
- unifi on ace: passed — judged with dbus: healthy 3 times over 2m32s
- unifi on the rest running it: sent
- website on novox: passed — judged with distribution: healthy 3 times over 2m19s
- website on the rest running it: sent
- xclip on g14: passed — judged with blueman: healthy 3 times over 2m27s
- xclip on the rest running it: sent
- xdg on g14: passed — judged with blueman: healthy 3 times over 2m27s
- xdg on the rest running it: sent
- xorg on g14: passed — judged with blueman: healthy 3 times over 2m27s
- xorg on the rest running it: sent
- xterm on g14: passed — judged with blueman: healthy 3 times over 2m27s
- xterm on the rest running it: sent
- zsh on ace: passed — judged with dbus: healthy 3 times over 2m32s
- zsh on the rest running it: sent
- zsh-autosuggestions on ace: passed — judged with dbus: healthy 3 times over 2m32s
- zsh-autosuggestions on the rest running it: sent
- zsh-syntax-highlighting on ace: passed — judged with dbus: healthy 3 times over 2m32s
- zsh-syntax-highlighting on the rest running it: sent
**Transitions**
- 2026-10-06 23:05 (new) → proposed (announced): novox/mesh-catalog#97 merged; its head was not heard by this owner, so it is made from the forge's word
- 2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on
- 2026-10-06 23:05 held → delivering (go): its walk started on a word that was not this owner's: the controller's own path, which waits for nobody, or a person's `plans go`
- 2026-10-06 23:05 delivering → delivered (done): its walk is done: 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`.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
hq to-be 45 §9 / ADR 0237 decision 4.
pull.updated(once; kept inpulls-announced.json; a first look with no record announces only the last day's), marks it pending; consumesmesh-controller.checkedand sets the head commit's statusmesh/merge-gate(pass→success, warning→warning, fail→failure, error/none→error, never success), and comments the check's account when not a pass.setCommitStatusin the client. Manifest: emitspull.updated, consumesmesh-controller.checked.merge-check.sh: the running controller's module check and merge gate over this tree, then the Go tests of each touched module (a module whose deps cannot be fetched is said NOT TESTED).Tests:
test/pulls.test.ts(heads announced once, verdict→status mapping, report fenced safely, status POST) — run compiled with tsc in a scratch dir, all 7 gitea tests pass. The module stays TypeScript (porting gitea to Go is its own work).Merge order: after mesh-controller #96 (the controller's agreement test needs an emitter of
checkedbefore a consumer of it). Rollout: gitea module build + push to the forge's machine.Delivery
novox/mesh-catalog@b792bf4ba2ab— delivered since 2026-10-06T23:05:28ZMachines
Transitions
plans goThe commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.