Issue 1281: the indexer wrote no module fingerprint because a build record names its repository by clone URL (the forge says "novox/mesh-catalog") and a build a delivery plan asked after a merge carries no ref. This adds what the indexer and the view share, in go/delivery/trunk.go.
RepositoryName and SameRepository: a clone URL (with or without .git or a trailing slash) and the forge's name are one repository; another owner or name is not. Test: TestSameRepository (1281/AC1).
BuildRecord.IsTrunkBuild: state built, source inputs recorded, ref main or none; another branch, a commit, another state, or no inputs is not. Test: TestIsTrunkBuild (1281/AC2). Checked first against the live builds: the last 100 are 96 at main and 4 with no ref, all four asked by a plan; the controller writes a pull request's head to no build record.
Group: the mesh-delivery pull request of the same branch name (fix/1281-trunk-builds-by-repository) needs this one first.
Issue 1281: the indexer wrote no module fingerprint because a build record names its repository by clone URL (the forge says "novox/mesh-catalog") and a build a delivery plan asked after a merge carries no ref. This adds what the indexer and the view share, in go/delivery/trunk.go.
- `RepositoryName` and `SameRepository`: a clone URL (with or without `.git` or a trailing slash) and the forge's name are one repository; another owner or name is not. Test: `TestSameRepository` (1281/AC1).
- `BuildRecord.IsTrunkBuild`: state built, source inputs recorded, ref `main` or none; another branch, a commit, another state, or no inputs is not. Test: `TestIsTrunkBuild` (1281/AC2). Checked first against the live builds: the last 100 are 96 at main and 4 with no ref, all four asked by a plan; the controller writes a pull request's head to no build record.
Group: the mesh-delivery pull request of the same branch name (fix/1281-trunk-builds-by-repository) needs this one first.
Reviewed-by: review-1281@shanks at 84a76437233704e9cbcf026b3a0d0468b1bb23e1
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
composed together: pass — every machine composes with the change as it did without (4 of 4 compose)
Machines
mesh-delivery-indexer on every machine running it: sent
mesh-delivery-view on every machine running it: sent
mesh-sdk on every machine running it: sent
mesh-tools on every machine running it: sent
audit-logger on every machine running it: sent
baserow on every machine running it: sent
bazarr on every machine running it: sent
bookshelf on every machine running it: sent
confluence on every machine running it: sent
gitea on every machine running it: sent
gitlab on every machine running it: sent
grafana on every machine running it: sent
home-assistant on every machine running it: sent
icecast on every machine running it: sent
influxdb on every machine running it: sent
jackett on every machine running it: sent
jira on every machine running it: sent
kometa on every machine running it: sent
lab on every machine running it: sent
letta on every machine running it: sent
lidarr on every machine running it: sent
mesh-catalog on every machine running it: sent
model-usage on every machine running it: sent
mosquitto on every machine running it: sent
netcheck on every machine running it: sent
nextcloud on every machine running it: sent
nodered on every machine running it: sent
ombi on every machine running it: sent
openai-consumer on every machine running it: sent
radarr on every machine running it: sent
redis on every machine running it: sent
route-adapter on every machine running it: sent
searxng on every machine running it: sent
showcase on every machine running it: sent
sonarr on every machine running it: sent
tautulli on every machine running it: sent
umami on every machine running it: sent
unifi on every machine running it: sent
zsh on every machine running it: sent
Transitions
2026-10-19 20:39 (new) → proposed (announced): novox/mesh-sdk#40's head announced
2026-10-19 20:45 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-19 20:45 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-19 20:59 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 20:59 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 21:23 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@84a764372337` — **delivered** since 2026-10-19T21:23:49Z
**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
**Group** `fix/1281-trunk-builds-by-repository`: novox/mesh-delivery@4b8e71370cc2, novox/mesh-sdk@84a764372337
- composed together: pass — every machine composes with the change as it did without (4 of 4 compose)
**Machines**
- mesh-delivery-indexer on every machine running it: sent
- mesh-delivery-view on every machine running it: sent
- mesh-sdk on every machine running it: sent
- mesh-tools on every machine running it: sent
- audit-logger on every machine running it: sent
- baserow on every machine running it: sent
- bazarr on every machine running it: sent
- bookshelf on every machine running it: sent
- confluence on every machine running it: sent
- gitea on every machine running it: sent
- gitlab on every machine running it: sent
- grafana on every machine running it: sent
- home-assistant on every machine running it: sent
- icecast on every machine running it: sent
- influxdb on every machine running it: sent
- jackett on every machine running it: sent
- jira on every machine running it: sent
- kometa on every machine running it: sent
- lab on every machine running it: sent
- letta on every machine running it: sent
- lidarr on every machine running it: sent
- mesh-catalog on every machine running it: sent
- model-usage on every machine running it: sent
- mosquitto on every machine running it: sent
- netcheck on every machine running it: sent
- nextcloud on every machine running it: sent
- nodered on every machine running it: sent
- ombi on every machine running it: sent
- openai-consumer on every machine running it: sent
- radarr on every machine running it: sent
- redis on every machine running it: sent
- route-adapter on every machine running it: sent
- searxng on every machine running it: sent
- showcase on every machine running it: sent
- sonarr on every machine running it: sent
- tautulli on every machine running it: sent
- umami on every machine running it: sent
- unifi on every machine running it: sent
- zsh on every machine running it: sent
**Transitions**
- 2026-10-19 20:39 (new) → proposed (announced): novox/mesh-sdk#40's head announced
- 2026-10-19 20:45 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-19 20:45 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-19 20:59 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 20:59 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 21:23 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`.
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-1792437709462411277 (builds --log build-1792437709462411277).
duration_ms: 0.330862
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: 173.179259
type: 'test'
...
# Subtest: the first success since start is announced once
ok 46 - the first success since start is announced once
---
duration_ms: 117.425364
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: 172.637839
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: 124.866243
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.948192
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.537029
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: 3197.488972
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.13808
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.979316
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.752315
type: 'test'
...
1..54
# tests 54
# suites 0
# pass 54
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 3943.236557
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: 188 tests (0 skipped), 1.04 s (bound 2 s)
state_counter_test.go:193: 2000 increments, 939 writes lost to the other writer and tried again
panic: test timed out after 10m0s
running tests:
TestARefusedSubscribeLeavesNoHandlerBehind (10m0s)
goroutine 5804 [running]:
testing.(*M).startAlarm.func1()
/usr/local/go/src/testing/testing.go:2802 +0x354
created by time.goFunc
/usr/local/go/src/time/sleep.go:215 +0x2d
goroutine 1 [chan receive, 9 minutes]:
testing.(*T).Run(0x3fe300f70008, {0x605698?, 0x0?}, 0x60a498)
/usr/local/go/src/testing/testing.go:2109 +0x4e5
testing.runTests.func1(0x3fe300f70008)
/usr/local/go/src/testing/testing.go:2585 +0x3e
testing.tRunner(0x3fe300f70008, 0x3fe300f65c58)
/usr/local/go/src/testing/testing.go:2036 +0xea
testing.runTests({0x601522, 0x1e}, {0x601522, 0x1e}, 0x3fe300f2c048, {0x789540, 0x13, 0x13}, {0xc2adba1237bd5489, 0x8bb2ccb21d, ...})
/usr/local/go/src/testing/testing.go:2583 +0x505
testing.(*M).Run(0x3fe300f1e320)
/usr/local/go/src/testing/testing.go:2443 +0x6ac
main.main()
_testmain.go:82 +0x9b
goroutine 6245 [chan receive, 9 minutes]:
git.novox.be/novox/mesh-sdk/go.TestARefusedSubscribeLeavesNoHandlerBehind(0x3fe300f70248)
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio_test.go:208 +0xa73
testing.tRunner(0x3fe300f70248, 0x60a498)
/usr/local/go/src/testing/testing.go:2036 +0xea
created by testing.(*T).Run in goroutine 1
/usr/local/go/src/testing/testing.go:2101 +0x4c5
goroutine 140 [select, 10 minutes]:
io.(*pipe).write(0x3fe300f2e1e0, {0x3fe3014de000, 0x53, 0x100})
/usr/local/go/src/io/pipe.go:86 +0x1e5
io.(*PipeWriter).Write(0x7?, {0x3fe3014de000?, 0x3fe3014c6cc0?, 0x5f14c0?})
/usr/local/go/src/io/pipe.go:161 +0x1a
encoding/json.(*Encoder).Encode(0x3fe300f2e2a0, {0x5c8360, 0x3fe3014c6cc0})
/usr/local/go/src/encoding/json/stream.go:233 +0x1f0
git.novox.be/novox/mesh-sdk/go.(*channel).say(0x3fe300f2e300, 0x3fe3014c6cc0)
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio.go:95 +0xd0
git.novox.be/novox/mesh-sdk/go.ServeOn.func1({0x5c2980, 0x3fe301092240}, {{0x5f90a9, 0x4}, {0x0, 0x0}, 0x0, 0x3fe300f264f0}, 0x3fe300f020c8?, {0x5f9d32, ...})
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio.go:251 +0x585
created by git.novox.be/novox/mesh-sdk/go.ServeOn in goroutine 170
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio.go:241 +0x1827
goroutine 6246 [sync.Mutex.Lock, 9 minutes]:
internal/sync.runtime_SemacquireMutex(0x9?, 0xc8?, 0x513d19?)
/usr/local/go/src/runtime/sema.go:95 +0x25
internal/sync.(*Mutex).lockSlow(0x3fe300f2e4e0)
/usr/local/go/src/internal/sync/mutex.go:149 +0x15d
internal/sync.(*Mutex).Lock(...)
/usr/local/go/src/internal/sync/mutex.go:70
sync.(*Mutex).Lock(...)
/usr/local/go/src/sync/mutex.go:46
git.novox.be/novox/mesh-sdk/go.ServeOn({0x0?, 0x0?}, {0x3fe300f67f90, 0x1, 0x1?}, {0x60db80, 0x3fe300f2e3c0}, {0x60dba0, 0x3fe300f2e420})
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio.go:190 +0x605
git.novox.be/novox/mesh-sdk/go.TestARefusedSubscribeLeavesNoHandlerBehind.func1()
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio_test.go:154 +0x116
created by git.novox.be/novox/mesh-sdk/go.TestARefusedSubscribeLeavesNoHandlerBehind in goroutine 6245
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio_test.go:153 +0x268
goroutine 6247 [select, 9 minutes]:
io.(*pipe).write(0x3fe300f2e420, {0x3fe300f48200, 0x55, 0x80})
/usr/local/go/src/io/pipe.go:86 +0x1e5
io.(*PipeWriter).Write(0x797580?, {0x3fe300f48200?, 0x3fe30108a750?, 0x4881c5?})
/usr/local/go/src/io/pipe.go:161 +0x1a
encoding/json.(*Encoder).Encode(0x3fe300f2e480, {0x5c8360, 0x3fe30108a750})
/usr/local/go/src/encoding/json/stream.go:233 +0x1f0
git.novox.be/novox/mesh-sdk/go.(*channel).say(0x3fe300f2e4e0, 0x3fe30108a750)
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio.go:95 +0xd0
git.novox.be/novox/mesh-sdk/go.ServeOn.func1({0x5c2980, 0x3fe3013a4408}, {{0x5f9355, 0x5}, {0x0, 0x0}, 0x0, 0x3fe300f32300}, 0x3fe3014fe6d0?, {0x5f9d32, ...})
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio.go:251 +0x585
created by git.novox.be/novox/mesh-sdk/go.ServeOn in goroutine 6246
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio.go:241 +0x1827
goroutine 5802 [sync.Mutex.Lock, 9 minutes]:
internal/sync.runtime_SemacquireMutex(0x3fe301600bd0?, 0x0?, 0x60ab90?)
/usr/local/go/src/runtime/sema.go:95 +0x25
internal/sync.(*Mutex).lockSlow(0x3fe300f2e4e0)
/usr/local/go/src/internal/sync/mutex.go:149 +0x15d
internal/sync.(*Mutex).Lock(...)
/usr/local/go/src/internal/sync/mutex.go:70
sync.(*Mutex).Lock(...)
/usr/local/go/src/sync/mutex.go:46
git.novox.be/novox/mesh-sdk/go.(*channel).askAs(0x3fe300f2e4e0, {0x3fe3010e4000, 0x8}, {0x5fbaf9, 0xe}, {0x5c8360, 0x3fe3013a0000}, 0x6fc23ac00)
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio.go:125 +0x336
git.novox.be/novox/mesh-sdk/go.(*channel).ask(0x3fe300f2e4e0, {0x5fbaf9, 0xe}, {0x5c8360, 0x3fe3013a0000}, 0x6fc23ac00)
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio.go:100 +0x5a
git.novox.be/novox/mesh-sdk/go.Subscribe({0x5fddfe, 0x14}, 0x3fe3010a6030)
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio.go:424 +0x20c
git.novox.be/novox/mesh-sdk/go.TestARefusedSubscribeLeavesNoHandlerBehind.func1.1.1()
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio_test.go:157 +0xb6
created by git.novox.be/novox/mesh-sdk/go.TestARefusedSubscribeLeavesNoHandlerBehind.func1.1 in goroutine 6247
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio_test.go:155 +0x90
FAIL git.novox.be/novox/mesh-sdk/go 600.035s
PASS
ok git.novox.be/novox/mesh-sdk/go/asker 0.003s
PASS
ok git.novox.be/novox/mesh-sdk/go/asks 0.003s
PASS
ok git.novox.be/novox/mesh-sdk/go/cli 1.039s
PASS
ok git.novox.be/novox/mesh-sdk/go/delivery 0.005s
? 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.142s
PASS
ok git.novox.be/novox/mesh-sdk/go/outward 0.054s
PASS
ok git.novox.be/novox/mesh-sdk/go/process 6.465s
PASS
ok git.novox.be/novox/mesh-sdk/go/provider 0.118s
PASS
ok git.novox.be/novox/mesh-sdk/go/provider/harness 0.115s
PASS
ok git.novox.be/novox/mesh-sdk/go/seal 0.006s
FAIL
integration level: 203 tests (0 skipped), 600 s
the integration level failed (go test exited 1)
--- what failed, picked from the whole of its output (the whole is in the build's log)
panic: test timed out after 10m0s
running tests:
TestARefusedSubscribeLeavesNoHandlerBehind (10m0s)
goroutine 5804 [running]:
testing.(*M).startAlarm.func1()
/usr/local/go/src/testing/testing.go:2802 +0x354
created by time.goFunc
/usr/local/go/src/time/sleep.go:215 +0x2d
goroutine 1 [chan receive, 9 minutes]:
testing.(*T).Run(0x3fe300f70008, {0x605698?, 0x0?}, 0x60a498)
/usr/local/go/src/testing/testing.go:2109 +0x4e5
testing.runTests.func1(0x3fe300f70008)
/usr/local/go/src/testing/testing.go:2585 +0x3e
testing.tRunner(0x3fe300f70008, 0x3fe300f65c58)
/usr/local/go/src/testing/testing.go:2036 +0xea
testing.runTests({0x601522, 0x1e}, {0x601522, 0x1e}, 0x3fe300f2c048, {0x789540, 0x13, 0x13}, {0xc2adba1237bd5489, 0x8bb2ccb21d, ...})
/usr/local/go/src/testing/testing.go:2583 +0x505
testing.(*M).Run(0x3fe300f1e320)
/usr/local/go/src/testing/testing.go:2443 +0x6ac
main.main()
_testmain.go:82 +0x9b
goroutine 6245 [chan receive, 9 minutes]:
git.novox.be/novox/mesh-sdk/go.TestARefusedSubscribeLeavesNoHandlerBehind(0x3fe300f70248)
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio_test.go:208 +0xa73
testing.tRunner(0x3fe300f70248, 0x60a498)
/usr/local/go/src/testing/testing.go:2036 +0xea
created by testing.(*T).Run in goroutine 1
/usr/local/go/src/testing/testing.go:2101 +0x4c5
goroutine 140 [select, 10 minutes]:
io.(*pipe).write(0x3fe300f2e1e0, {0x3fe3014de000, 0x53, 0x100})
/usr/local/go/src/io/pipe.go:86 +0x1e5
io.(*PipeWriter).Write(0x7?, {0x3fe3014de000?, 0x3fe3014c6cc0?, 0x5f14c0?})
/usr/local/go/src/io/pipe.go:161 +0x1a
encoding/json.(*Encoder).Encode(0x3fe300f2e2a0, {0x5c8360, 0x3fe3014c6cc0})
/usr/local/go/src/encoding/json/stream.go:233 +0x1f0
git.novox.be/novox/mesh-sdk/go.(*channel).say(0x3fe300f2e300, 0x3fe3014c6cc0)
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio.go:95 +0xd0
FAIL git.novox.be/novox/mesh-sdk/go 600.035s
**Merge check** at `680a78ba`
Judged: head `680a78bae270` merged into trunk `9ebfb87b5d0c`; read beside it: mesh-catalog `66aa204f6779`, mesh-controller `880207649956`, mesh-controller-main `880207649956`, 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`: **FAIL** — merge-check.sh (typescript) passed; its go/merge-check.sh failed: panic: test timed out after 10m0s
**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-1792437709462411277` (`builds --log build-1792437709462411277`).
```
duration_ms: 0.330862
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: 173.179259
type: 'test'
...
# Subtest: the first success since start is announced once
ok 46 - the first success since start is announced once
---
duration_ms: 117.425364
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: 172.637839
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: 124.866243
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.948192
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.537029
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: 3197.488972
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.13808
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.979316
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.752315
type: 'test'
...
1..54
# tests 54
# suites 0
# pass 54
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 3943.236557
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: 188 tests (0 skipped), 1.04 s (bound 2 s)
state_counter_test.go:193: 2000 increments, 939 writes lost to the other writer and tried again
panic: test timed out after 10m0s
running tests:
TestARefusedSubscribeLeavesNoHandlerBehind (10m0s)
goroutine 5804 [running]:
testing.(*M).startAlarm.func1()
/usr/local/go/src/testing/testing.go:2802 +0x354
created by time.goFunc
/usr/local/go/src/time/sleep.go:215 +0x2d
goroutine 1 [chan receive, 9 minutes]:
testing.(*T).Run(0x3fe300f70008, {0x605698?, 0x0?}, 0x60a498)
/usr/local/go/src/testing/testing.go:2109 +0x4e5
testing.runTests.func1(0x3fe300f70008)
/usr/local/go/src/testing/testing.go:2585 +0x3e
testing.tRunner(0x3fe300f70008, 0x3fe300f65c58)
/usr/local/go/src/testing/testing.go:2036 +0xea
testing.runTests({0x601522, 0x1e}, {0x601522, 0x1e}, 0x3fe300f2c048, {0x789540, 0x13, 0x13}, {0xc2adba1237bd5489, 0x8bb2ccb21d, ...})
/usr/local/go/src/testing/testing.go:2583 +0x505
testing.(*M).Run(0x3fe300f1e320)
/usr/local/go/src/testing/testing.go:2443 +0x6ac
main.main()
_testmain.go:82 +0x9b
goroutine 6245 [chan receive, 9 minutes]:
git.novox.be/novox/mesh-sdk/go.TestARefusedSubscribeLeavesNoHandlerBehind(0x3fe300f70248)
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio_test.go:208 +0xa73
testing.tRunner(0x3fe300f70248, 0x60a498)
/usr/local/go/src/testing/testing.go:2036 +0xea
created by testing.(*T).Run in goroutine 1
/usr/local/go/src/testing/testing.go:2101 +0x4c5
goroutine 140 [select, 10 minutes]:
io.(*pipe).write(0x3fe300f2e1e0, {0x3fe3014de000, 0x53, 0x100})
/usr/local/go/src/io/pipe.go:86 +0x1e5
io.(*PipeWriter).Write(0x7?, {0x3fe3014de000?, 0x3fe3014c6cc0?, 0x5f14c0?})
/usr/local/go/src/io/pipe.go:161 +0x1a
encoding/json.(*Encoder).Encode(0x3fe300f2e2a0, {0x5c8360, 0x3fe3014c6cc0})
/usr/local/go/src/encoding/json/stream.go:233 +0x1f0
git.novox.be/novox/mesh-sdk/go.(*channel).say(0x3fe300f2e300, 0x3fe3014c6cc0)
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio.go:95 +0xd0
git.novox.be/novox/mesh-sdk/go.ServeOn.func1({0x5c2980, 0x3fe301092240}, {{0x5f90a9, 0x4}, {0x0, 0x0}, 0x0, 0x3fe300f264f0}, 0x3fe300f020c8?, {0x5f9d32, ...})
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio.go:251 +0x585
created by git.novox.be/novox/mesh-sdk/go.ServeOn in goroutine 170
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio.go:241 +0x1827
goroutine 6246 [sync.Mutex.Lock, 9 minutes]:
internal/sync.runtime_SemacquireMutex(0x9?, 0xc8?, 0x513d19?)
/usr/local/go/src/runtime/sema.go:95 +0x25
internal/sync.(*Mutex).lockSlow(0x3fe300f2e4e0)
/usr/local/go/src/internal/sync/mutex.go:149 +0x15d
internal/sync.(*Mutex).Lock(...)
/usr/local/go/src/internal/sync/mutex.go:70
sync.(*Mutex).Lock(...)
/usr/local/go/src/sync/mutex.go:46
git.novox.be/novox/mesh-sdk/go.ServeOn({0x0?, 0x0?}, {0x3fe300f67f90, 0x1, 0x1?}, {0x60db80, 0x3fe300f2e3c0}, {0x60dba0, 0x3fe300f2e420})
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio.go:190 +0x605
git.novox.be/novox/mesh-sdk/go.TestARefusedSubscribeLeavesNoHandlerBehind.func1()
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio_test.go:154 +0x116
created by git.novox.be/novox/mesh-sdk/go.TestARefusedSubscribeLeavesNoHandlerBehind in goroutine 6245
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio_test.go:153 +0x268
goroutine 6247 [select, 9 minutes]:
io.(*pipe).write(0x3fe300f2e420, {0x3fe300f48200, 0x55, 0x80})
/usr/local/go/src/io/pipe.go:86 +0x1e5
io.(*PipeWriter).Write(0x797580?, {0x3fe300f48200?, 0x3fe30108a750?, 0x4881c5?})
/usr/local/go/src/io/pipe.go:161 +0x1a
encoding/json.(*Encoder).Encode(0x3fe300f2e480, {0x5c8360, 0x3fe30108a750})
/usr/local/go/src/encoding/json/stream.go:233 +0x1f0
git.novox.be/novox/mesh-sdk/go.(*channel).say(0x3fe300f2e4e0, 0x3fe30108a750)
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio.go:95 +0xd0
git.novox.be/novox/mesh-sdk/go.ServeOn.func1({0x5c2980, 0x3fe3013a4408}, {{0x5f9355, 0x5}, {0x0, 0x0}, 0x0, 0x3fe300f32300}, 0x3fe3014fe6d0?, {0x5f9d32, ...})
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio.go:251 +0x585
created by git.novox.be/novox/mesh-sdk/go.ServeOn in goroutine 6246
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio.go:241 +0x1827
goroutine 5802 [sync.Mutex.Lock, 9 minutes]:
internal/sync.runtime_SemacquireMutex(0x3fe301600bd0?, 0x0?, 0x60ab90?)
/usr/local/go/src/runtime/sema.go:95 +0x25
internal/sync.(*Mutex).lockSlow(0x3fe300f2e4e0)
/usr/local/go/src/internal/sync/mutex.go:149 +0x15d
internal/sync.(*Mutex).Lock(...)
/usr/local/go/src/internal/sync/mutex.go:70
sync.(*Mutex).Lock(...)
/usr/local/go/src/sync/mutex.go:46
git.novox.be/novox/mesh-sdk/go.(*channel).askAs(0x3fe300f2e4e0, {0x3fe3010e4000, 0x8}, {0x5fbaf9, 0xe}, {0x5c8360, 0x3fe3013a0000}, 0x6fc23ac00)
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio.go:125 +0x336
git.novox.be/novox/mesh-sdk/go.(*channel).ask(0x3fe300f2e4e0, {0x5fbaf9, 0xe}, {0x5c8360, 0x3fe3013a0000}, 0x6fc23ac00)
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio.go:100 +0x5a
git.novox.be/novox/mesh-sdk/go.Subscribe({0x5fddfe, 0x14}, 0x3fe3010a6030)
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio.go:424 +0x20c
git.novox.be/novox/mesh-sdk/go.TestARefusedSubscribeLeavesNoHandlerBehind.func1.1.1()
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio_test.go:157 +0xb6
created by git.novox.be/novox/mesh-sdk/go.TestARefusedSubscribeLeavesNoHandlerBehind.func1.1 in goroutine 6247
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio_test.go:155 +0x90
FAIL git.novox.be/novox/mesh-sdk/go 600.035s
PASS
ok git.novox.be/novox/mesh-sdk/go/asker 0.003s
PASS
ok git.novox.be/novox/mesh-sdk/go/asks 0.003s
PASS
ok git.novox.be/novox/mesh-sdk/go/cli 1.039s
PASS
ok git.novox.be/novox/mesh-sdk/go/delivery 0.005s
? 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.142s
PASS
ok git.novox.be/novox/mesh-sdk/go/outward 0.054s
PASS
ok git.novox.be/novox/mesh-sdk/go/process 6.465s
PASS
ok git.novox.be/novox/mesh-sdk/go/provider 0.118s
PASS
ok git.novox.be/novox/mesh-sdk/go/provider/harness 0.115s
PASS
ok git.novox.be/novox/mesh-sdk/go/seal 0.006s
FAIL
integration level: 203 tests (0 skipped), 600 s
the integration level failed (go test exited 1)
--- what failed, picked from the whole of its output (the whole is in the build's log)
panic: test timed out after 10m0s
running tests:
TestARefusedSubscribeLeavesNoHandlerBehind (10m0s)
goroutine 5804 [running]:
testing.(*M).startAlarm.func1()
/usr/local/go/src/testing/testing.go:2802 +0x354
created by time.goFunc
/usr/local/go/src/time/sleep.go:215 +0x2d
goroutine 1 [chan receive, 9 minutes]:
testing.(*T).Run(0x3fe300f70008, {0x605698?, 0x0?}, 0x60a498)
/usr/local/go/src/testing/testing.go:2109 +0x4e5
testing.runTests.func1(0x3fe300f70008)
/usr/local/go/src/testing/testing.go:2585 +0x3e
testing.tRunner(0x3fe300f70008, 0x3fe300f65c58)
/usr/local/go/src/testing/testing.go:2036 +0xea
testing.runTests({0x601522, 0x1e}, {0x601522, 0x1e}, 0x3fe300f2c048, {0x789540, 0x13, 0x13}, {0xc2adba1237bd5489, 0x8bb2ccb21d, ...})
/usr/local/go/src/testing/testing.go:2583 +0x505
testing.(*M).Run(0x3fe300f1e320)
/usr/local/go/src/testing/testing.go:2443 +0x6ac
main.main()
_testmain.go:82 +0x9b
goroutine 6245 [chan receive, 9 minutes]:
git.novox.be/novox/mesh-sdk/go.TestARefusedSubscribeLeavesNoHandlerBehind(0x3fe300f70248)
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio_test.go:208 +0xa73
testing.tRunner(0x3fe300f70248, 0x60a498)
/usr/local/go/src/testing/testing.go:2036 +0xea
created by testing.(*T).Run in goroutine 1
/usr/local/go/src/testing/testing.go:2101 +0x4c5
goroutine 140 [select, 10 minutes]:
io.(*pipe).write(0x3fe300f2e1e0, {0x3fe3014de000, 0x53, 0x100})
/usr/local/go/src/io/pipe.go:86 +0x1e5
io.(*PipeWriter).Write(0x7?, {0x3fe3014de000?, 0x3fe3014c6cc0?, 0x5f14c0?})
/usr/local/go/src/io/pipe.go:161 +0x1a
encoding/json.(*Encoder).Encode(0x3fe300f2e2a0, {0x5c8360, 0x3fe3014c6cc0})
/usr/local/go/src/encoding/json/stream.go:233 +0x1f0
git.novox.be/novox/mesh-sdk/go.(*channel).say(0x3fe300f2e300, 0x3fe3014c6cc0)
/var/lib/build-agent/workspace/check/mesh-sdk/go/stdio.go:95 +0xd0
FAIL git.novox.be/novox/mesh-sdk/go 600.035s
```
mesh/repo-check head 84a764372337 merged into trunk 8360a3bba2b4 — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (typescript)…
mesh/merge-gate head 84a764372337 merged into trunk 8360a3bba2b4 — pass: group fix/1281-trunk-builds-by-repository composed: every machine composes with th…
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.
Issue 1281: the indexer wrote no module fingerprint because a build record names its repository by clone URL (the forge says "novox/mesh-catalog") and a build a delivery plan asked after a merge carries no ref. This adds what the indexer and the view share, in go/delivery/trunk.go.
RepositoryNameandSameRepository: a clone URL (with or without.gitor a trailing slash) and the forge's name are one repository; another owner or name is not. Test:TestSameRepository(1281/AC1).BuildRecord.IsTrunkBuild: state built, source inputs recorded, refmainor none; another branch, a commit, another state, or no inputs is not. Test:TestIsTrunkBuild(1281/AC2). Checked first against the live builds: the last 100 are 96 at main and 4 with no ref, all four asked by a plan; the controller writes a pull request's head to no build record.Group: the mesh-delivery pull request of the same branch name (fix/1281-trunk-builds-by-repository) needs this one first.
Reviewed-by: review-1281@shanks at
84a7643723Delivery
novox/mesh-sdk@84a764372337— delivered since 2026-10-19T21:23:49ZDelivery plan — builds mesh-sdk (+41 dependent(s)) → ace, g14, novox, shanks; no bus step; 9 wait(s) for a person
Group
fix/1281-trunk-builds-by-repository: novox/mesh-delivery@4b8e71370c, novox/mesh-sdk@84a7643723Machines
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.Merge check at
680a78baJudged: head
680a78bae270merged into trunk9ebfb87b5d0c; read beside it: mesh-catalog66aa204f6779, mesh-controller880207649956, mesh-controller-main880207649956, mesh-host2474bf28330f, mesh-tools7412c5b6c9c5mesh/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: FAIL — merge-check.sh (typescript) passed; its go/merge-check.sh failed: panic: test timed out after 10m0sDelivery plan — builds mesh-sdk (+41 dependent(s)) → ace, g14, novox, shanks; no bus step; 9 wait(s) for a person
Run by the build seat on ace as
build-1792437709462411277(builds --log build-1792437709462411277).680a78bae2to84a7643723