Delivery's release 3 keys and the source fingerprint, in one place the parts read (design 47 R3a: issues 1200-1203) #37

Merged
mesh-tools merged 7 commits from feat/delivery-source-keys into main 2026-10-19 09:10:11 +00:00
Member

Design 47 milestone R3a (ADR 0437 clauses 1, 5, 6, 8, 9; ADR 0429 §2): mesh-sdk ships, before any of its users, the layouts the forge bridge, the indexer, the gate and the teller of release 3 read and write, and the source fingerprint as one function.

  • Issue 1200 (go/delivery/source.go): source.main, candidates.<group>, modules.<m> and the forge bridge's messages (stream forge, events forge.<owner>.<name>.<kind>), with the heads hash.
  • Issue 1201 (go/delivery/gate.go): merges.<g>, the gate's ask merge.<g>.<heads>, the teller's answer under the same key, the owed acts; an ask id the router accepts, distinct per key.
  • Issue 1202 (go/asks/condition.go): a condition on mesh.seat.operator-channel.accept.condition.<publisher>, in the controller's names, its explanation opened by its verdict (ADR 0253).
  • Issue 1203 (go/delivery/fingerprint.go): the src1 source fingerprint as a function of named inputs, line for line mesh-controller's builder; proven against three fingerprints the live builder recorded (mailu, radarr, build-agent), read with builds once issues 1204 and 1208 were delivered.

Every value carries its version and is refused at an unknown one. Unit tests only, each citing its acceptance criterion (1200/AC1 to 1203/AC4).
Try: build-1792400676285261714 passed (1m11s).
Delivery: mesh-sdk alone; nothing runs it until R3b and R3c pin it.
Found on the way: issue 1209 (the indexer cannot compute a Go-compiling image's fingerprint from trees alone), for R3c's prepare step.

Reviewed-by: reviewer-r3a@shanks at a39661aa36

Design 47 milestone R3a (ADR 0437 clauses 1, 5, 6, 8, 9; ADR 0429 §2): mesh-sdk ships, before any of its users, the layouts the forge bridge, the indexer, the gate and the teller of release 3 read and write, and the source fingerprint as one function. - Issue 1200 (go/delivery/source.go): `source.main`, `candidates.<group>`, `modules.<m>` and the forge bridge's messages (stream `forge`, events `forge.<owner>.<name>.<kind>`), with the heads hash. - Issue 1201 (go/delivery/gate.go): `merges.<g>`, the gate's ask `merge.<g>.<heads>`, the teller's answer under the same key, the owed acts; an ask id the router accepts, distinct per key. - Issue 1202 (go/asks/condition.go): a condition on `mesh.seat.operator-channel.accept.condition.<publisher>`, in the controller's names, its explanation opened by its verdict (ADR 0253). - Issue 1203 (go/delivery/fingerprint.go): the src1 source fingerprint as a function of named inputs, line for line mesh-controller's builder; proven against three fingerprints the live builder recorded (mailu, radarr, build-agent), read with `builds` once issues 1204 and 1208 were delivered. Every value carries its version and is refused at an unknown one. Unit tests only, each citing its acceptance criterion (1200/AC1 to 1203/AC4). Try: build-1792400676285261714 passed (1m11s). Delivery: mesh-sdk alone; nothing runs it until R3b and R3c pin it. Found on the way: issue 1209 (the indexer cannot compute a Go-compiling image's fingerprint from trees alone), for R3c's prepare step. Reviewed-by: reviewer-r3a@shanks at a39661aa36f3894f5054470c18014004dbc465f2
mesh-tools added 7 commits 2026-10-19 09:06:15 +00:00
Author
Member

Delivery novox/mesh-sdk@a39661aa36f3 — delivered since 2026-10-19T09:28:46Z

Delivery plan — builds mesh-sdk (+41 dependent(s)) → ace, g14, novox, shanks; no bus step; 9 wait(s) for a person

  • tier 0: mesh-sdk
  • tier 1: mesh-tools
  • tier 2: audit-logger, baserow, bazarr, bookshelf, confluence, gitea, gitlab, grafana, home-assistant, icecast, influxdb, jackett, jira, kometa, lab, letta, lidarr, mailu, mesh-catalog, minio, model-usage, mongodb, mosquitto, mssql, netcheck, nextcloud, nftables, nodered, ombi, openai-consumer, radarr, redis, route-adapter, searxng, showcase, sonarr, tautulli, umami, unifi, zsh
  • ace: receives baserow, bazarr, bookshelf, grafana, home-assistant, icecast, influxdb, jackett, kometa, letta, lidarr, mosquitto, netcheck, nodered, ombi, radarr, redis, searxng, sonarr, tautulli, unifi, zsh; waits for a person: mssql, nftables
  • g14: receives netcheck, zsh; waits for a person: nftables
  • novox: receives gitea, mesh-catalog, netcheck, nextcloud, umami, zsh; waits for a person: mailu, minio, mongodb, mssql, nftables
  • shanks: receives lab, netcheck, zsh; waits for a person: nftables
  • baserow keeps data (ADR 0233): what it holds is backed up before it moves
  • bazarr keeps data (ADR 0233): what it holds is backed up before it moves
  • bookshelf keeps data (ADR 0233): what it holds is backed up before it moves
  • 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
  • jackett provides jackett-api: its consumers are sent again after it
  • jackett keeps data (ADR 0233): what it holds is backed up before it moves
  • kometa 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
  • lidarr provides lidarr-api: its consumers are sent again after it
  • lidarr 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
  • 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
  • nextcloud keeps data (ADR 0233): what it holds is backed up before it moves
  • nftables 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
  • nodered keeps data (ADR 0233): what it holds is backed up before it moves
  • ombi keeps data (ADR 0233): what it holds is backed up before it moves
  • radarr provides radarr-api: its consumers are sent again after it
  • radarr 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
  • searxng keeps data (ADR 0233): what it holds is backed up before it moves
  • sonarr provides sonarr-api: its consumers are sent again after it
  • sonarr keeps data (ADR 0233): what it holds is backed up before it moves
  • tautulli 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
  • 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 baserow, bazarr, bookshelf, grafana, home-assistant, icecast, influxdb, jackett, kometa, lab, letta, lidarr, mosquitto, netcheck, nodered, ombi, radarr, redis, searxng, sonarr, tautulli, unifi, zsh is judged on its first machine

Machines

  • mesh-sdk on every machine running it: sent
  • mesh-tools on every machine running it: sent
  • audit-logger on every machine running it: sent
  • confluence on every machine running it: sent
  • gitlab on every machine running it: sent
  • jira on every machine running it: sent
  • mesh-catalog 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

Transitions

  • 2026-10-19 09:06 (new) → proposed (announced): novox/mesh-sdk#37's head announced
  • 2026-10-19 09:09 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
  • 2026-10-19 09:09 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
  • 2026-10-19 09:10 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
  • 2026-10-19 09:10 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-19 09:28 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-sdk@a39661aa36f3` — **delivered** since 2026-10-19T09:28:46Z **Delivery plan** — builds mesh-sdk (+41 dependent(s)) → ace, g14, novox, shanks; no bus step; 9 wait(s) for a person - tier 0: mesh-sdk - tier 1: mesh-tools - tier 2: audit-logger, baserow, bazarr, bookshelf, confluence, gitea, gitlab, grafana, home-assistant, icecast, influxdb, jackett, jira, kometa, lab, letta, lidarr, mailu, mesh-catalog, minio, model-usage, mongodb, mosquitto, mssql, netcheck, nextcloud, nftables, nodered, ombi, openai-consumer, radarr, redis, route-adapter, searxng, showcase, sonarr, tautulli, umami, unifi, zsh - ace: receives baserow, bazarr, bookshelf, grafana, home-assistant, icecast, influxdb, jackett, kometa, letta, lidarr, mosquitto, netcheck, nodered, ombi, radarr, redis, searxng, sonarr, tautulli, unifi, zsh; waits for a person: mssql, nftables - g14: receives netcheck, zsh; waits for a person: nftables - novox: receives gitea, mesh-catalog, netcheck, nextcloud, umami, zsh; waits for a person: mailu, minio, mongodb, mssql, nftables - shanks: receives lab, netcheck, zsh; waits for a person: nftables - baserow keeps data (ADR 0233): what it holds is backed up before it moves - bazarr keeps data (ADR 0233): what it holds is backed up before it moves - bookshelf keeps data (ADR 0233): what it holds is backed up before it moves - 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 - jackett provides jackett-api: its consumers are sent again after it - jackett keeps data (ADR 0233): what it holds is backed up before it moves - kometa 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 - lidarr provides lidarr-api: its consumers are sent again after it - lidarr 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 - 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 - nextcloud keeps data (ADR 0233): what it holds is backed up before it moves - nftables 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 - nodered keeps data (ADR 0233): what it holds is backed up before it moves - ombi keeps data (ADR 0233): what it holds is backed up before it moves - radarr provides radarr-api: its consumers are sent again after it - radarr 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 - searxng keeps data (ADR 0233): what it holds is backed up before it moves - sonarr provides sonarr-api: its consumers are sent again after it - sonarr keeps data (ADR 0233): what it holds is backed up before it moves - tautulli 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 - 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 baserow, bazarr, bookshelf, grafana, home-assistant, icecast, influxdb, jackett, kometa, lab, letta, lidarr, mosquitto, netcheck, nodered, ombi, radarr, redis, searxng, sonarr, tautulli, unifi, zsh is judged on its first machine **Machines** - mesh-sdk on every machine running it: sent - mesh-tools on every machine running it: sent - audit-logger on every machine running it: sent - confluence on every machine running it: sent - gitlab on every machine running it: sent - jira on every machine running it: sent - mesh-catalog 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 **Transitions** - 2026-10-19 09:06 (new) → proposed (announced): novox/mesh-sdk#37's head announced - 2026-10-19 09:09 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit - 2026-10-19 09:09 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail - 2026-10-19 09:10 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move - 2026-10-19 09:10 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-19 09:28 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 a39661aa
Judged: head a39661aa36f3 merged into trunk 34392e74916c; read beside it: mesh-catalog b4527d9091e9, mesh-controller 59c8cf2f2406, mesh-controller-main 59c8cf2f2406, mesh-host 2474bf28330f, mesh-tools 7412c5b6c9c5

  • mesh/merge-gate: PASS, WITH A NOTE — a merge rebuilds 42 module(s) in 3 tier(s) (modules: mesh-sdk; built after them: audit-logger, baserow, bazarr, bookshelf, confluence, gitea, gitlab, grafana, home-assistant, icecast, influxdb, jackett, jira, kometa, lab, letta, lidarr, mailu, mesh-catalog, mesh-tools, minio, model-usage, mongodb, mosquitto, mssql, netcheck, nextcloud, nftables, nodered, ombi, openai-consumer, radarr, redis, route-adapter, searxng, showcase, sonarr, tautulli, umami, unifi, zsh)
  • mesh/repo-check: PASS — its merge-check.sh passed, each part in its toolchain: merge-check.sh (typescript), go/merge-check.sh (go)

Delivery plan — builds mesh-sdk (+41 dependent(s)) → ace, g14, novox, shanks; no bus step; 9 wait(s) for a person

  • tier 0: mesh-sdk
  • tier 1: mesh-tools
  • tier 2: audit-logger, baserow, bazarr, bookshelf, confluence, gitea, gitlab, grafana, home-assistant, icecast, influxdb, jackett, jira, kometa, lab, letta, lidarr, mailu, mesh-catalog, minio, model-usage, mongodb, mosquitto, mssql, netcheck, nextcloud, nftables, nodered, ombi, openai-consumer, radarr, redis, route-adapter, searxng, showcase, sonarr, tautulli, umami, unifi, zsh
  • ace: receives baserow, bazarr, bookshelf, grafana, home-assistant, icecast, influxdb, jackett, kometa, letta, lidarr, mosquitto, netcheck, nodered, ombi, radarr, redis, searxng, sonarr, tautulli, unifi, zsh; waits for a person: mssql, nftables
  • g14: receives netcheck, zsh; waits for a person: nftables
  • novox: receives gitea, mesh-catalog, netcheck, nextcloud, umami, zsh; waits for a person: mailu, minio, mongodb, mssql, nftables
  • shanks: receives lab, netcheck, zsh; waits for a person: nftables
  • baserow keeps data (ADR 0233): what it holds is backed up before it moves
  • bazarr keeps data (ADR 0233): what it holds is backed up before it moves
  • bookshelf keeps data (ADR 0233): what it holds is backed up before it moves
  • 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
  • jackett provides jackett-api: its consumers are sent again after it
  • jackett keeps data (ADR 0233): what it holds is backed up before it moves
  • kometa 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
  • lidarr provides lidarr-api: its consumers are sent again after it
  • lidarr 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
  • 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
  • nextcloud keeps data (ADR 0233): what it holds is backed up before it moves
  • nftables 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
  • nodered keeps data (ADR 0233): what it holds is backed up before it moves
  • ombi keeps data (ADR 0233): what it holds is backed up before it moves
  • radarr provides radarr-api: its consumers are sent again after it
  • radarr 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
  • searxng keeps data (ADR 0233): what it holds is backed up before it moves
  • sonarr provides sonarr-api: its consumers are sent again after it
  • sonarr keeps data (ADR 0233): what it holds is backed up before it moves
  • tautulli 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
  • 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 baserow, bazarr, bookshelf, grafana, home-assistant, icecast, influxdb, jackett, kometa, lab, letta, lidarr, mosquitto, netcheck, nodered, ombi, radarr, redis, searxng, sonarr, tautulli, unifi, zsh is judged on its first machine

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

  duration_ms: 0.259739
  type: 'test'
  ...
# Subtest: events: a module emits, a listener and the audit sink (\#) both receive it, with metadata
ok 29 - events: a module emits, a listener and the audit sink (\#) both receive it, with metadata
  ---
  duration_ms: 0.373723
  type: 'test'
  ...
# Subtest: each registration is given the environment asked for it, and sees no other's (ADR 0192)
ok 30 - each registration is given the environment asked for it, and sees no other's (ADR 0192)
  ---
  duration_ms: 0.190328
  type: 'test'
  ...
# Subtest: the provider loop is named for what it is, and its old name stays an alias until its providers move (issue 678)
ok 31 - the provider loop is named for what it is, and its old name stays an alias until its providers move (issue 678)
  ---
  duration_ms: 5.909973
  type: 'test'
  ...
# Subtest: seal: every box the licence manager sealed opens to its plaintext
ok 32 - seal: every box the licence manager sealed opens to its plaintext
  ---
  duration_ms: 6.448045
  type: 'test'
  ...
# Subtest: seal: given the same one-time key and iv, the box is byte for byte the licence manager's
ok 33 - seal: given the same one-time key and iv, the box is byte for byte the licence manager's
  ---
  duration_ms: 4.74432
  type: 'test'
  ...
# Subtest: seal: the agent module's TypeScript box opens
ok 34 - seal: the agent module's TypeScript box opens
  ---
  duration_ms: 0.415401
  type: 'test'
  ...
# Subtest: seal: a box opens for its recipient only, and two boxes share no one-time key or iv
ok 35 - seal: a box opens for its recipient only, and two boxes share no one-time key or iv
  ---
  duration_ms: 1.966968
  type: 'test'
  ...
# Subtest: seal: a box changed in any field, or of another version, does not open
ok 36 - seal: a box changed in any field, or of another version, does not open
  ---
  duration_ms: 0.933765
  type: 'test'
  ...
# Subtest: seal: a key that is not X25519 PEM is refused
ok 37 - seal: a key that is not X25519 PEM is refused
  ---
  duration_ms: 0.315012
  type: 'test'
  ...
# Subtest: a consumer failed for minutes is announced, naming it, its machine and the class, again while it lasts, and recovered
ok 38 - a consumer failed for minutes is announced, naming it, its machine and the class, again while it lasts, and recovered
  ---
  duration_ms: 583.276786
  type: 'test'
  ...
# Subtest: one success between failures starts the run again
ok 39 - one success between failures starts the run again
  ---
  duration_ms: 186.941849
  type: 'test'
  ...
# Subtest: a check that keeps failing is a failure too
ok 40 - a check that keeps failing is a failure too
  ---
  duration_ms: 191.072518
  type: 'test'
  ...
# Subtest: an unreadable secret is announced as such
ok 41 - an unreadable secret is announced as such
  ---
  duration_ms: 166.58321
  type: 'test'
  ...
# Subtest: a consumer no longer asked for is no longer failing
ok 42 - a consumer no longer asked for is no longer failing
  ---
  duration_ms: 180.834278
  type: 'test'
  ...
# Subtest: a failing consumer the mesh stopped asking for is said recovered when it is retired
ok 43 - a failing consumer the mesh stopped asking for is said recovered when it is retired
  ---
  duration_ms: 238.733593
  type: 'test'
  ...
# Subtest: an error is classed by its words
ok 44 - an error is classed by its words
  ---
  duration_ms: 0.248827
  type: 'test'
  ...
# Subtest: an adapter that classes its own errors is believed
ok 45 - an adapter that classes its own errors is believed
  ---
  duration_ms: 171.739757
  type: 'test'
  ...
# Subtest: the first success since start is announced once
ok 46 - the first success since start is announced once
  ---
  duration_ms: 111.842613
  type: 'test'
  ...
# Subtest: without announce the standing is said through the SDK's emit
ok 47 - without announce the standing is said through the SDK's emit
  ---
  duration_ms: 168.437206
  type: 'test'
  ...
# Subtest: a bundle on stdio lists its tools and answers a call, a seat's verb among them
ok 48 - a bundle on stdio lists its tools and answers a call, a seat's verb among them
  ---
  duration_ms: 128.642342
  type: 'test'
  ...
# Subtest: a bundle served as its module lists the seat's verbs as the seat's, whichever registered first (ADR 0193)
ok 49 - a bundle served as its module lists the seat's verbs as the seat's, whichever registered first (ADR 0193)
  ---
  duration_ms: 82.338309
  type: 'test'
  ...
# Subtest: a launched tool's emit is asked of the runtime, and the call answers once the runtime has published (ADR 0193)
ok 50 - a launched tool's emit is asked of the runtime, and the call answers once the runtime has published (ADR 0193)
  ---
  duration_ms: 82.559754
  type: 'test'
  ...
# Subtest: a launched bundle subscribes as it is imported, handles events the runtime hands it, and asks through it (ADR 0198)
ok 51 - a launched bundle subscribes as it is imported, handles events the runtime hands it, and asks through it (ADR 0198)
  ---
  duration_ms: 3204.182912
  type: 'test'
  ...
# Subtest: a subscribe the runtime refused leaves no handler behind, so one event is handled once (novox/hq issue 276)
ok 52 - a subscribe the runtime refused leaves no handler behind, so one event is handled once (novox/hq issue 276)
  ---
  duration_ms: 82.327769
  type: 'test'
  ...
# Subtest: a launched bundle watches its state as it is imported, has the current values before it goes on, and keeps state through the runtime (ADR 0201)
ok 53 - a launched bundle watches its state as it is imported, has the current values before it goes on, and keeps state through the runtime (ADR 0201)
  ---
  duration_ms: 284.687561
  type: 'test'
  ...
# Subtest: topics match as the runtime's do: * one segment, \# and ** any number
ok 54 - topics match as the runtime's do: * one segment, \# and ** any number
  ---
  duration_ms: 2.719123
  type: 'test'
  ...
1..54
# tests 54
# suites 0
# pass 54
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 3962.715727
NOT TESTED HERE: go/ (the Go binding) — the Go toolchain runs it from go/merge-check.sh
NOT TESTED HERE: python/, rust/, c/ — no toolchain of theirs runs a merge check
--- its go/merge-check.sh (go toolchain)
NOT RACE-CHECKED: the Go binding's check runs without the race detector
unit level: 181 tests (0 skipped), 1.03 s (bound 2 s)
    state_counter_test.go:193: 2000 increments, 1023 writes lost to the other writer and tried again
PASS
ok  	git.novox.be/novox/mesh-sdk/go	0.153s
PASS
ok  	git.novox.be/novox/mesh-sdk/go/asker	0.002s
PASS
ok  	git.novox.be/novox/mesh-sdk/go/asks	0.003s
PASS
ok  	git.novox.be/novox/mesh-sdk/go/cli	1.036s
PASS
ok  	git.novox.be/novox/mesh-sdk/go/delivery	0.004s
?   	git.novox.be/novox/mesh-sdk/go/example	[no test files]
PASS
ok  	git.novox.be/novox/mesh-sdk/go/health	0.003s
PASS
ok  	git.novox.be/novox/mesh-sdk/go/internal/testbus	0.139s
PASS
ok  	git.novox.be/novox/mesh-sdk/go/outward	0.050s
PASS
ok  	git.novox.be/novox/mesh-sdk/go/process	6.463s
PASS
ok  	git.novox.be/novox/mesh-sdk/go/provider	0.116s
PASS
ok  	git.novox.be/novox/mesh-sdk/go/provider/harness	0.112s
PASS
ok  	git.novox.be/novox/mesh-sdk/go/seal	0.005s
integration level: 197 tests (0 skipped), 7 s
**Merge check** at `a39661aa` Judged: head `a39661aa36f3` merged into trunk `34392e74916c`; read beside it: mesh-catalog `b4527d9091e9`, mesh-controller `59c8cf2f2406`, mesh-controller-main `59c8cf2f2406`, mesh-host `2474bf28330f`, mesh-tools `7412c5b6c9c5` - `mesh/merge-gate`: **PASS, WITH A NOTE** — a merge rebuilds 42 module(s) in 3 tier(s) (modules: mesh-sdk; built after them: audit-logger, baserow, bazarr, bookshelf, confluence, gitea, gitlab, grafana, home-assistant, icecast, influxdb, jackett, jira, kometa, lab, letta, lidarr, mailu, mesh-catalog, mesh-tools, minio, model-usage, mongodb, mosquitto, mssql, netcheck, nextcloud, nftables, nodered, ombi, openai-consumer, radarr, redis, route-adapter, searxng, showcase, sonarr, tautulli, umami, unifi, zsh) - `mesh/repo-check`: **PASS** — its merge-check.sh passed, each part in its toolchain: merge-check.sh (typescript), go/merge-check.sh (go) **Delivery plan** — builds mesh-sdk (+41 dependent(s)) → ace, g14, novox, shanks; no bus step; 9 wait(s) for a person - tier 0: mesh-sdk - tier 1: mesh-tools - tier 2: audit-logger, baserow, bazarr, bookshelf, confluence, gitea, gitlab, grafana, home-assistant, icecast, influxdb, jackett, jira, kometa, lab, letta, lidarr, mailu, mesh-catalog, minio, model-usage, mongodb, mosquitto, mssql, netcheck, nextcloud, nftables, nodered, ombi, openai-consumer, radarr, redis, route-adapter, searxng, showcase, sonarr, tautulli, umami, unifi, zsh - ace: receives baserow, bazarr, bookshelf, grafana, home-assistant, icecast, influxdb, jackett, kometa, letta, lidarr, mosquitto, netcheck, nodered, ombi, radarr, redis, searxng, sonarr, tautulli, unifi, zsh; waits for a person: mssql, nftables - g14: receives netcheck, zsh; waits for a person: nftables - novox: receives gitea, mesh-catalog, netcheck, nextcloud, umami, zsh; waits for a person: mailu, minio, mongodb, mssql, nftables - shanks: receives lab, netcheck, zsh; waits for a person: nftables - baserow keeps data (ADR 0233): what it holds is backed up before it moves - bazarr keeps data (ADR 0233): what it holds is backed up before it moves - bookshelf keeps data (ADR 0233): what it holds is backed up before it moves - 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 - jackett provides jackett-api: its consumers are sent again after it - jackett keeps data (ADR 0233): what it holds is backed up before it moves - kometa 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 - lidarr provides lidarr-api: its consumers are sent again after it - lidarr 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 - 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 - nextcloud keeps data (ADR 0233): what it holds is backed up before it moves - nftables 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 - nodered keeps data (ADR 0233): what it holds is backed up before it moves - ombi keeps data (ADR 0233): what it holds is backed up before it moves - radarr provides radarr-api: its consumers are sent again after it - radarr 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 - searxng keeps data (ADR 0233): what it holds is backed up before it moves - sonarr provides sonarr-api: its consumers are sent again after it - sonarr keeps data (ADR 0233): what it holds is backed up before it moves - tautulli 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 - 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 baserow, bazarr, bookshelf, grafana, home-assistant, icecast, influxdb, jackett, kometa, lab, letta, lidarr, mosquitto, netcheck, nodered, ombi, radarr, redis, searxng, sonarr, tautulli, unifi, zsh is judged on its first machine Run by the build seat on ace as `build-1792400780402495819` (`builds --log build-1792400780402495819`). ``` duration_ms: 0.259739 type: 'test' ... # Subtest: events: a module emits, a listener and the audit sink (\#) both receive it, with metadata ok 29 - events: a module emits, a listener and the audit sink (\#) both receive it, with metadata --- duration_ms: 0.373723 type: 'test' ... # Subtest: each registration is given the environment asked for it, and sees no other's (ADR 0192) ok 30 - each registration is given the environment asked for it, and sees no other's (ADR 0192) --- duration_ms: 0.190328 type: 'test' ... # Subtest: the provider loop is named for what it is, and its old name stays an alias until its providers move (issue 678) ok 31 - the provider loop is named for what it is, and its old name stays an alias until its providers move (issue 678) --- duration_ms: 5.909973 type: 'test' ... # Subtest: seal: every box the licence manager sealed opens to its plaintext ok 32 - seal: every box the licence manager sealed opens to its plaintext --- duration_ms: 6.448045 type: 'test' ... # Subtest: seal: given the same one-time key and iv, the box is byte for byte the licence manager's ok 33 - seal: given the same one-time key and iv, the box is byte for byte the licence manager's --- duration_ms: 4.74432 type: 'test' ... # Subtest: seal: the agent module's TypeScript box opens ok 34 - seal: the agent module's TypeScript box opens --- duration_ms: 0.415401 type: 'test' ... # Subtest: seal: a box opens for its recipient only, and two boxes share no one-time key or iv ok 35 - seal: a box opens for its recipient only, and two boxes share no one-time key or iv --- duration_ms: 1.966968 type: 'test' ... # Subtest: seal: a box changed in any field, or of another version, does not open ok 36 - seal: a box changed in any field, or of another version, does not open --- duration_ms: 0.933765 type: 'test' ... # Subtest: seal: a key that is not X25519 PEM is refused ok 37 - seal: a key that is not X25519 PEM is refused --- duration_ms: 0.315012 type: 'test' ... # Subtest: a consumer failed for minutes is announced, naming it, its machine and the class, again while it lasts, and recovered ok 38 - a consumer failed for minutes is announced, naming it, its machine and the class, again while it lasts, and recovered --- duration_ms: 583.276786 type: 'test' ... # Subtest: one success between failures starts the run again ok 39 - one success between failures starts the run again --- duration_ms: 186.941849 type: 'test' ... # Subtest: a check that keeps failing is a failure too ok 40 - a check that keeps failing is a failure too --- duration_ms: 191.072518 type: 'test' ... # Subtest: an unreadable secret is announced as such ok 41 - an unreadable secret is announced as such --- duration_ms: 166.58321 type: 'test' ... # Subtest: a consumer no longer asked for is no longer failing ok 42 - a consumer no longer asked for is no longer failing --- duration_ms: 180.834278 type: 'test' ... # Subtest: a failing consumer the mesh stopped asking for is said recovered when it is retired ok 43 - a failing consumer the mesh stopped asking for is said recovered when it is retired --- duration_ms: 238.733593 type: 'test' ... # Subtest: an error is classed by its words ok 44 - an error is classed by its words --- duration_ms: 0.248827 type: 'test' ... # Subtest: an adapter that classes its own errors is believed ok 45 - an adapter that classes its own errors is believed --- duration_ms: 171.739757 type: 'test' ... # Subtest: the first success since start is announced once ok 46 - the first success since start is announced once --- duration_ms: 111.842613 type: 'test' ... # Subtest: without announce the standing is said through the SDK's emit ok 47 - without announce the standing is said through the SDK's emit --- duration_ms: 168.437206 type: 'test' ... # Subtest: a bundle on stdio lists its tools and answers a call, a seat's verb among them ok 48 - a bundle on stdio lists its tools and answers a call, a seat's verb among them --- duration_ms: 128.642342 type: 'test' ... # Subtest: a bundle served as its module lists the seat's verbs as the seat's, whichever registered first (ADR 0193) ok 49 - a bundle served as its module lists the seat's verbs as the seat's, whichever registered first (ADR 0193) --- duration_ms: 82.338309 type: 'test' ... # Subtest: a launched tool's emit is asked of the runtime, and the call answers once the runtime has published (ADR 0193) ok 50 - a launched tool's emit is asked of the runtime, and the call answers once the runtime has published (ADR 0193) --- duration_ms: 82.559754 type: 'test' ... # Subtest: a launched bundle subscribes as it is imported, handles events the runtime hands it, and asks through it (ADR 0198) ok 51 - a launched bundle subscribes as it is imported, handles events the runtime hands it, and asks through it (ADR 0198) --- duration_ms: 3204.182912 type: 'test' ... # Subtest: a subscribe the runtime refused leaves no handler behind, so one event is handled once (novox/hq issue 276) ok 52 - a subscribe the runtime refused leaves no handler behind, so one event is handled once (novox/hq issue 276) --- duration_ms: 82.327769 type: 'test' ... # Subtest: a launched bundle watches its state as it is imported, has the current values before it goes on, and keeps state through the runtime (ADR 0201) ok 53 - a launched bundle watches its state as it is imported, has the current values before it goes on, and keeps state through the runtime (ADR 0201) --- duration_ms: 284.687561 type: 'test' ... # Subtest: topics match as the runtime's do: * one segment, \# and ** any number ok 54 - topics match as the runtime's do: * one segment, \# and ** any number --- duration_ms: 2.719123 type: 'test' ... 1..54 # tests 54 # suites 0 # pass 54 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 3962.715727 NOT TESTED HERE: go/ (the Go binding) — the Go toolchain runs it from go/merge-check.sh NOT TESTED HERE: python/, rust/, c/ — no toolchain of theirs runs a merge check --- its go/merge-check.sh (go toolchain) NOT RACE-CHECKED: the Go binding's check runs without the race detector unit level: 181 tests (0 skipped), 1.03 s (bound 2 s) state_counter_test.go:193: 2000 increments, 1023 writes lost to the other writer and tried again PASS ok git.novox.be/novox/mesh-sdk/go 0.153s PASS ok git.novox.be/novox/mesh-sdk/go/asker 0.002s PASS ok git.novox.be/novox/mesh-sdk/go/asks 0.003s PASS ok git.novox.be/novox/mesh-sdk/go/cli 1.036s PASS ok git.novox.be/novox/mesh-sdk/go/delivery 0.004s ? git.novox.be/novox/mesh-sdk/go/example [no test files] PASS ok git.novox.be/novox/mesh-sdk/go/health 0.003s PASS ok git.novox.be/novox/mesh-sdk/go/internal/testbus 0.139s PASS ok git.novox.be/novox/mesh-sdk/go/outward 0.050s PASS ok git.novox.be/novox/mesh-sdk/go/process 6.463s PASS ok git.novox.be/novox/mesh-sdk/go/provider 0.116s PASS ok git.novox.be/novox/mesh-sdk/go/provider/harness 0.112s PASS ok git.novox.be/novox/mesh-sdk/go/seal 0.005s integration level: 197 tests (0 skipped), 7 s ```
mesh-tools merged commit aa68b67389 into main 2026-10-19 09:10:11 +00:00
mesh-tools deleted branch feat/delivery-source-keys 2026-10-19 09:10:11 +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-sdk#37