Diff of the two buildlogs:

--
--- b1/build.log	2025-03-27 21:13:14.185629964 +0000
+++ b2/build.log	2025-03-27 21:16:25.237032765 +0000
@@ -1,6 +1,6 @@
 I: pbuilder: network access will be disabled during build
-I: Current time: Thu Mar 27 09:10:13 -12 2025
-I: pbuilder-time-stamp: 1743109813
+I: Current time: Thu Apr 30 17:36:17 +14 2026
+I: pbuilder-time-stamp: 1777520177
 I: Building the build Environment
 I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz]
 I: copying local configuration
@@ -24,51 +24,83 @@
 dpkg-source: info: applying 0001-fts5-package.diff
 I: Not using root during the build.
 I: Installing the build-deps
-I: user script /srv/workspace/pbuilder/842895/tmp/hooks/D02_print_environment starting
+I: user script /srv/workspace/pbuilder/723018/tmp/hooks/D01_modify_environment starting
+debug: Running on infom02-amd64.
+I: Changing host+domainname to test build reproducibility
+I: Adding a custom variable just for the fun of it...
+I: Changing /bin/sh to bash
+'/bin/sh' -> '/bin/bash'
+lrwxrwxrwx 1 root root 9 Apr 30 03:36 /bin/sh -> /bin/bash
+I: Setting pbuilder2's login shell to /bin/bash
+I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other
+I: user script /srv/workspace/pbuilder/723018/tmp/hooks/D01_modify_environment finished
+I: user script /srv/workspace/pbuilder/723018/tmp/hooks/D02_print_environment starting
 I: set
-  BUILDDIR='/build/reproducible-path'
-  BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other'
-  BUILDUSERNAME='pbuilder1'
-  BUILD_ARCH='amd64'
-  DEBIAN_FRONTEND='noninteractive'
+  BASH=/bin/sh
+  BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath
+  BASH_ALIASES=()
+  BASH_ARGC=()
+  BASH_ARGV=()
+  BASH_CMDS=()
+  BASH_LINENO=([0]="12" [1]="0")
+  BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:.
+  BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment")
+  BASH_VERSINFO=([0]="5" [1]="2" [2]="37" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")
+  BASH_VERSION='5.2.37(1)-release'
+  BUILDDIR=/build/reproducible-path
+  BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other'
+  BUILDUSERNAME=pbuilder2
+  BUILD_ARCH=amd64
+  DEBIAN_FRONTEND=noninteractive
   DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=12 '
-  DISTRIBUTION='unstable'
-  HOME='/root'
-  HOST_ARCH='amd64'
+  DIRSTACK=()
+  DISTRIBUTION=unstable
+  EUID=0
+  FUNCNAME=([0]="Echo" [1]="main")
+  GROUPS=()
+  HOME=/root
+  HOSTNAME=i-capture-the-hostname
+  HOSTTYPE=x86_64
+  HOST_ARCH=amd64
   IFS=' 	
   '
-  INVOCATION_ID='81fecda0bcf5456bb846a0d3c0e25623'
-  LANG='C'
-  LANGUAGE='en_US:en'
-  LC_ALL='C'
-  MAIL='/var/mail/root'
-  OPTIND='1'
-  PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games'
-  PBCURRENTCOMMANDLINEOPERATION='build'
-  PBUILDER_OPERATION='build'
-  PBUILDER_PKGDATADIR='/usr/share/pbuilder'
-  PBUILDER_PKGLIBDIR='/usr/lib/pbuilder'
-  PBUILDER_SYSCONFDIR='/etc'
-  PPID='842895'
-  PS1='# '
-  PS2='> '
+  INVOCATION_ID=fe6902ef45624c7da8d80c2c84e0caee
+  LANG=C
+  LANGUAGE=et_EE:et
+  LC_ALL=C
+  MACHTYPE=x86_64-pc-linux-gnu
+  MAIL=/var/mail/root
+  OPTERR=1
+  OPTIND=1
+  OSTYPE=linux-gnu
+  PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path
+  PBCURRENTCOMMANDLINEOPERATION=build
+  PBUILDER_OPERATION=build
+  PBUILDER_PKGDATADIR=/usr/share/pbuilder
+  PBUILDER_PKGLIBDIR=/usr/lib/pbuilder
+  PBUILDER_SYSCONFDIR=/etc
+  PIPESTATUS=([0]="0")
+  POSIXLY_CORRECT=y
+  PPID=723018
   PS4='+ '
-  PWD='/'
-  SHELL='/bin/bash'
-  SHLVL='2'
-  SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.z8CAWUDl/pbuilderrc_HLzC --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.z8CAWUDl/b1 --logfile b1/build.log soju_0.9.0-1.dsc'
-  SUDO_GID='109'
-  SUDO_UID='104'
-  SUDO_USER='jenkins'
-  TERM='unknown'
-  TZ='/usr/share/zoneinfo/Etc/GMT+12'
-  USER='root'
-  _='/usr/bin/systemd-run'
+  PWD=/
+  SHELL=/bin/bash
+  SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix
+  SHLVL=3
+  SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.z8CAWUDl/pbuilderrc_wfBR --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.z8CAWUDl/b2 --logfile b2/build.log soju_0.9.0-1.dsc'
+  SUDO_GID=109
+  SUDO_UID=104
+  SUDO_USER=jenkins
+  TERM=unknown
+  TZ=/usr/share/zoneinfo/Etc/GMT-14
+  UID=0
+  USER=root
+  _='I: set'
 I: uname -a
-  Linux infom01-amd64 6.1.0-32-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.129-1 (2025-03-06) x86_64 GNU/Linux
+  Linux i-capture-the-hostname 6.12.12+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.12-1~bpo12+1 (2025-02-23) x86_64 GNU/Linux
 I: ls -l /bin
-  lrwxrwxrwx 1 root root 7 Mar  4 11:20 /bin -> usr/bin
-I: user script /srv/workspace/pbuilder/842895/tmp/hooks/D02_print_environment finished
+  lrwxrwxrwx 1 root root 7 Mar  4  2025 /bin -> usr/bin
+I: user script /srv/workspace/pbuilder/723018/tmp/hooks/D02_print_environment finished
  -> Attempting to satisfy build-dependencies
  -> Creating pbuilder-satisfydepends-dummy package
 Package: pbuilder-satisfydepends-dummy
@@ -247,7 +279,7 @@
 Get: 107 http://deb.debian.org/debian unstable/main amd64 golang-sourcehut-sircmpwn-getopt-dev all 0.0~git20191230.23622cc-2 [9076 B]
 Get: 108 http://deb.debian.org/debian unstable/main amd64 golang-sourcehut-sircmpwn-go-bare-dev all 0.0~git20210406.ab86bc2-2 [22.1 kB]
 Get: 109 http://deb.debian.org/debian unstable/main amd64 scdoc amd64 1.11.3-1 [14.4 kB]
-Fetched 120 MB in 7s (18.0 MB/s)
+Fetched 120 MB in 2s (64.7 MB/s)
 Preconfiguring packages ...
 Selecting previously unselected package sensible-utils.
 (Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 19805 files and directories currently installed.)
@@ -698,7 +730,11 @@
 Building tag database...
  -> Finished parsing the build-deps
 I: Building the package
-I: Running cd /build/reproducible-path/soju-0.9.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S  > ../soju_0.9.0-1_source.changes
+I: user script /srv/workspace/pbuilder/723018/tmp/hooks/A99_set_merged_usr starting
+Not re-configuring usrmerge for unstable
+I: user script /srv/workspace/pbuilder/723018/tmp/hooks/A99_set_merged_usr finished
+hostname: Name or service not known
+I: Running cd /build/reproducible-path/soju-0.9.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S  > ../soju_0.9.0-1_source.changes
 dpkg-buildpackage: info: source package soju
 dpkg-buildpackage: info: source version 0.9.0-1
 dpkg-buildpackage: info: source distribution unstable
@@ -719,124 +755,124 @@
 make[1]: Entering directory '/build/reproducible-path/soju-0.9.0'
 dh_auto_build -O--buildsystem=golang -- -tags="pam" -ldflags="-X 'codeberg.org/emersion/soju/config.DefaultPath=/etc/soju/config'"
 	cd _build && go install -trimpath -v -p 12 -tags=pam "-ldflags=-X 'codeberg.org/emersion/soju/config.DefaultPath=/etc/soju/config'" codeberg.org/emersion/soju codeberg.org/emersion/soju/auth codeberg.org/emersion/soju/cmd/soju codeberg.org/emersion/soju/cmd/sojuctl codeberg.org/emersion/soju/cmd/sojudb codeberg.org/emersion/soju/config codeberg.org/emersion/soju/contrib/migrate-db codeberg.org/emersion/soju/contrib/migrate-logs codeberg.org/emersion/soju/contrib/znc-import codeberg.org/emersion/soju/database codeberg.org/emersion/soju/fileupload codeberg.org/emersion/soju/identd codeberg.org/emersion/soju/msgstore codeberg.org/emersion/soju/msgstore/znclog codeberg.org/emersion/soju/xirc
+internal/unsafeheader
+internal/cpu
 internal/byteorder
-internal/profilerecord
 internal/msan
-internal/goarch
+internal/coverage/rtcov
 internal/asan
-internal/goexperiment
 internal/goos
-internal/unsafeheader
 internal/godebugs
-internal/coverage/rtcov
-internal/cpu
-math/bits
-internal/runtime/math
-internal/runtime/sys
-internal/chacha8rand
+internal/goarch
 internal/runtime/atomic
+internal/goexperiment
 internal/runtime/syscall
-internal/abi
-unicode
-unicode/utf8
+internal/profilerecord
 sync/atomic
+math/bits
+unicode/utf8
 internal/itoa
 cmp
+unicode
+internal/runtime/math
+internal/abi
+internal/chacha8rand
+internal/runtime/sys
 crypto/internal/fips140/alias
 crypto/internal/fips140deps/byteorder
 crypto/internal/boring/sig
-crypto/internal/fips140/subtle
 container/list
 unicode/utf16
+crypto/internal/fips140/subtle
+internal/bytealg
+internal/runtime/exithook
+math
+crypto/internal/fips140deps/cpu
 vendor/golang.org/x/crypto/cryptobyte/asn1
 vendor/golang.org/x/crypto/internal/alias
 internal/nettrace
 github.com/lib/pq/oid
-internal/runtime/exithook
 encoding
-internal/bytealg
-crypto/internal/fips140deps/cpu
 log/internal
 google.golang.org/protobuf/internal/flags
 google.golang.org/protobuf/internal/set
 github.com/coder/websocket/internal/util
 github.com/klauspost/compress/internal/cpuinfo
 github.com/klauspost/compress/internal/le
-math
-internal/race
 internal/stringslite
+internal/race
 internal/sync
 internal/runtime/maps
 github.com/klauspost/compress
 runtime
 internal/reflectlite
+iter
 sync
 crypto/subtle
-weak
 runtime/metrics
-iter
+weak
 maps
 slices
+errors
+sort
 internal/bisect
-internal/testlog
-unique
 internal/singleflight
+internal/testlog
 google.golang.org/protobuf/internal/pragma
-errors
-sort
+unique
 runtime/cgo
 io
 internal/oserror
-strconv
 path
+strconv
 math/rand/v2
 vendor/golang.org/x/net/dns/dnsmessage
-internal/godebug
 syscall
+internal/godebug
 bytes
+github.com/beorn7/perks/quantile
 strings
-hash
-reflect
 crypto/internal/randutil
-bufio
-net/netip
-github.com/beorn7/perks/quantile
+hash
 crypto
-regexp/syntax
-crypto/internal/fips140deps/godebug
+net/netip
 hash/crc32
+hash/fnv
+golang.org/x/crypto/blowfish
+reflect
+vendor/golang.org/x/text/transform
+crypto/internal/fips140deps/godebug
 math/rand
 crypto/internal/impl
-vendor/golang.org/x/text/transform
-net/http/internal/ascii
 crypto/internal/fips140
-hash/fnv
+net/http/internal/ascii
+regexp/syntax
+bufio
 github.com/munnerz/goautoneg
-golang.org/x/crypto/blowfish
 html
-crypto/internal/fips140/sha256
 crypto/internal/fips140/sha3
-crypto/internal/fips140/sha512
+crypto/internal/fips140/sha256
 crypto/tls/internal/fips140tls
-time
+crypto/internal/fips140/sha512
 internal/syscall/unix
-regexp
+time
 internal/syscall/execenv
-crypto/sha3
 crypto/internal/fips140/hmac
-crypto/internal/fips140hash
+crypto/sha3
 crypto/internal/fips140/check
+crypto/internal/fips140hash
 crypto/internal/fips140/aes
-crypto/internal/fips140/nistec/fiat
 crypto/internal/fips140/edwards25519/field
 crypto/internal/fips140/bigmod
 crypto/internal/fips140/hkdf
+crypto/internal/fips140/nistec/fiat
 crypto/internal/fips140/tls12
+regexp
 crypto/internal/fips140/tls13
 crypto/internal/fips140/edwards25519
 io/fs
-internal/poll
 context
+internal/poll
 internal/filepathlite
 embed
 crypto/internal/fips140/nistec
@@ -844,157 +880,157 @@
 os
 encoding/binary
 internal/fmtsort
-encoding/base64
-github.com/klauspost/compress/internal/snapref
-vendor/golang.org/x/crypto/internal/poly1305
-github.com/cespare/xxhash
-golang.org/x/sys/unix
-encoding/pem
-fmt
+io/ioutil
 crypto/internal/sysrand
 vendor/golang.org/x/sys/cpu
 path/filepath
+github.com/prometheus/procfs/internal/util
+fmt
 os/signal
-io/ioutil
+encoding/base64
+github.com/cespare/xxhash
 google.golang.org/protobuf/internal/detrand
-github.com/prometheus/procfs/internal/util
+vendor/golang.org/x/crypto/internal/poly1305
 crypto/internal/entropy
+golang.org/x/sys/unix
 crypto/internal/fips140/drbg
+github.com/klauspost/compress/internal/snapref
+encoding/pem
 crypto/internal/fips140only
-crypto/internal/fips140/aes/gcm
 crypto/internal/fips140/ecdh
-crypto/internal/fips140/ecdsa
 crypto/internal/fips140/ed25519
+crypto/internal/fips140/aes/gcm
+crypto/internal/fips140/ecdsa
 crypto/internal/fips140/mlkem
 crypto/internal/fips140/rsa
-crypto/md5
 crypto/rc4
+crypto/md5
+crypto/cipher
 net
 golang.org/x/time/rate
 database/sql/driver
 encoding/hex
-math/big
 net/url
 os/user
 encoding/json
-gopkg.in/irc.v4
 log
-crypto/cipher
 compress/flate
-vendor/golang.org/x/text/unicode/norm
-database/sql
+math/big
 crypto/internal/boring
+gopkg.in/irc.v4
 crypto/des
-vendor/golang.org/x/crypto/chacha20
 crypto/sha256
 crypto/aes
 crypto/ecdh
-codeberg.org/emersion/soju/xirc
+database/sql
 crypto/sha512
 crypto/hmac
-vendor/golang.org/x/crypto/chacha20poly1305
+vendor/golang.org/x/crypto/chacha20
 crypto/sha1
-compress/gzip
 vendor/golang.org/x/text/unicode/bidi
+codeberg.org/emersion/soju/xirc
+compress/gzip
+vendor/golang.org/x/text/unicode/norm
+vendor/golang.org/x/crypto/chacha20poly1305
 vendor/golang.org/x/net/http2/hpack
 mime
 mime/quotedprintable
 net/http/internal
 google.golang.org/protobuf/internal/errors
+vendor/golang.org/x/text/secure/bidirule
 go/token
 google.golang.org/protobuf/internal/version
+google.golang.org/protobuf/encoding/protowire
 github.com/prometheus/procfs/internal/fs
 runtime/debug
 github.com/msteinert/pam
+google.golang.org/protobuf/reflect/protoreflect
 codeberg.org/emersion/go-scfg
-google.golang.org/protobuf/encoding/protowire
+vendor/golang.org/x/net/idna
 git.sr.ht/~sircmpwn/go-bare
-github.com/mattn/go-sqlite3
 flag
-google.golang.org/protobuf/reflect/protoreflect
-vendor/golang.org/x/text/secure/bidirule
+golang.org/x/crypto/hkdf
+github.com/coder/websocket/internal/errd
+github.com/mattn/go-sqlite3
+github.com/coder/websocket/internal/xsync
 crypto/elliptic
 crypto/internal/boring/bbig
 encoding/asn1
 crypto/rand
 crypto/dsa
-vendor/golang.org/x/net/idna
 crypto/ed25519
 crypto/internal/hpke
 crypto/rsa
-golang.org/x/crypto/bcrypt
 github.com/lib/pq/scram
-golang.org/x/crypto/hkdf
-vendor/golang.org/x/crypto/cryptobyte
-crypto/x509/pkix
-github.com/coder/websocket/internal/errd
-github.com/coder/websocket/internal/xsync
+golang.org/x/crypto/bcrypt
 github.com/emersion/go-sasl
+github.com/klauspost/compress/fse
+internal/profile
+text/tabwriter
+runtime/trace
 google.golang.org/protobuf/internal/descfmt
 google.golang.org/protobuf/internal/descopts
 google.golang.org/protobuf/internal/strs
 google.golang.org/protobuf/internal/encoding/messageset
 google.golang.org/protobuf/internal/genid
 google.golang.org/protobuf/internal/order
-google.golang.org/protobuf/runtime/protoiface
-github.com/klauspost/compress/fse
+vendor/golang.org/x/crypto/cryptobyte
+crypto/x509/pkix
 google.golang.org/protobuf/internal/encoding/text
-crypto/ecdsa
-google.golang.org/protobuf/internal/protolazy
-internal/profile
 google.golang.org/protobuf/reflect/protoregistry
-text/tabwriter
-runtime/trace
-golang.org/x/term
-runtime/pprof
+google.golang.org/protobuf/runtime/protoiface
 github.com/klauspost/compress/huff0
-google.golang.org/protobuf/internal/encoding/defval
+runtime/pprof
+google.golang.org/protobuf/internal/protolazy
+golang.org/x/term
 google.golang.org/protobuf/proto
+google.golang.org/protobuf/internal/encoding/defval
 golang.org/x/crypto/ssh/terminal
-google.golang.org/protobuf/internal/filedesc
+crypto/ecdsa
+github.com/klauspost/compress/zstd
 google.golang.org/protobuf/encoding/prototext
 google.golang.org/protobuf/encoding/protodelim
-github.com/klauspost/compress/zstd
+google.golang.org/protobuf/internal/filedesc
 google.golang.org/protobuf/internal/encoding/tag
 google.golang.org/protobuf/internal/impl
-codeberg.org/emersion/soju/config
-codeberg.org/emersion/soju/identd
-github.com/pires/go-proxyproto
 vendor/golang.org/x/net/http/httpproxy
+codeberg.org/emersion/soju/identd
 net/textproto
+codeberg.org/emersion/soju/config
+github.com/pires/go-proxyproto
 crypto/x509
 github.com/prometheus/procfs
-google.golang.org/protobuf/internal/filetype
 codeberg.org/emersion/soju/cmd/sojuctl
 vendor/golang.org/x/net/http/httpguts
 mime/multipart
+github.com/golang-jwt/jwt/v5
+crypto/tls
+google.golang.org/protobuf/internal/filetype
 google.golang.org/protobuf/runtime/protoimpl
 google.golang.org/protobuf/types/known/timestamppb
 github.com/prometheus/client_model/go
 github.com/prometheus/common/model
-crypto/tls
-github.com/golang-jwt/jwt/v5
 github.com/prometheus/client_golang/prometheus/internal
 net/http/httptrace
 github.com/lib/pq
 net/http
 expvar
+github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil/header
 github.com/SherClockHolmes/webpush-go
 net/http/pprof
-github.com/coder/websocket
-github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil/header
 github.com/prometheus/common/expfmt
+github.com/coder/websocket
 github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil
 github.com/prometheus/client_golang/prometheus
-github.com/prometheus/client_golang/prometheus/promauto
 github.com/prometheus/client_golang/prometheus/collectors
+github.com/prometheus/client_golang/prometheus/promauto
 github.com/prometheus/client_golang/prometheus/promhttp
 codeberg.org/emersion/soju/database
+codeberg.org/emersion/soju/msgstore/znclog
 codeberg.org/emersion/soju/auth
-codeberg.org/emersion/soju/contrib/migrate-db
-codeberg.org/emersion/soju/contrib/znc-import
 codeberg.org/emersion/soju/cmd/sojudb
-codeberg.org/emersion/soju/msgstore/znclog
+codeberg.org/emersion/soju/contrib/znc-import
+codeberg.org/emersion/soju/contrib/migrate-db
 codeberg.org/emersion/soju/msgstore
 codeberg.org/emersion/soju/fileupload
 codeberg.org/emersion/soju/contrib/migrate-logs
@@ -1042,45 +1078,50 @@
 === RUN   TestServer_broadcast/sqlite
     server_test.go:29: generating Web push VAPID key pair
     server_test.go:29: starting bouncer for user "soju-test-user"
-    server_test.go:29: user "soju-test-user": upstream "testnet": connecting to plain-text server at address "127.0.0.1:33359"
+    server_test.go:29: user "soju-test-user": upstream "testnet": connecting to plain-text server at address "127.0.0.1:34697"
     server_test.go:29: user "soju-test-user": upstream "testnet": new connection
     server_test.go:29: user "soju-test-user": upstream "testnet": sent: CAP LS 302
     server_test.go:29: user "soju-test-user": upstream "testnet": sent: NICK soju-test-user
     server_test.go:29: user "soju-test-user": upstream "testnet": sent: USER soju-test-user 0 * soju-test-user
-    server_test.go:29: downstream "pipe": new connection
-    server_test.go:29: downstream "pipe": received: PASS soju-test-user
-    server_test.go:29: downstream "pipe": received: NICK soju-test-user
-    server_test.go:29: downstream "pipe": received: USER soju-test-user/testnet 0 * soju-test-user
     server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server 001 soju-test-user Welcome!
     server_test.go:29: user "soju-test-user": upstream "testnet": connection registered with nick "soju-test-user"
     server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server 002 soju-test-user :Your host is soju-test-server
     server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server 003 soju-test-user :Who cares when the server was created?
     server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server 004 soju-test-user soju-test-server soju aiwroO OovaimnqpsrtklbeI
     server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server 422 soju-test-user :No MOTD
+    server_test.go:29: downstream "pipe": new connection
     server_test.go:29: user "soju-test-user": upstream "testnet": sent: AWAY :Auto away
+    server_test.go:29: downstream "pipe": received: PASS soju-test-user
+    server_test.go:29: downstream "pipe": received: NICK soju-test-user
+    server_test.go:29: downstream "pipe": received: USER soju-test-user/testnet 0 * soju-test-user
     server_test.go:29: downstream "pipe": registration complete for user "soju-test-user"
     server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 001 soju-test-user :Welcome to soju, soju-test-user
+    server_test.go:29: user "soju-test-user": upstream "testnet": sent: AWAY
     server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 002 soju-test-user :Your host is localhost
     server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 004 soju-test-user localhost soju aiwroO OovaimnqpsrtklbeI
     server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 005 * soju.im/SAFERATE BOUNCER_NETID=1 CLIENTTAGDENY=* :are supported
+    server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server NOTICE soju-test-user :This is a very important server notice.
     server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 221 soju-test-user +
     server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 422 soju-test-user :Use /motd to read the message of the day
-    server_test.go:29: user "soju-test-user": upstream "testnet": sent: AWAY
-    server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server NOTICE soju-test-user :This is a very important server notice.
     server_test.go:29: user "soju-test-user": downstream "pipe": sent: :soju-test-server NOTICE soju-test-user :This is a very important server notice.
+    server_test.go:29: user "soju-test-user": downstream "pipe": connection closed
     server_test.go:29: shutting down server
     server_test.go:29: waiting for users to finish
-    server_test.go:29: user "soju-test-user": downstream "pipe": connection closed
+    server_test.go:29: user "soju-test-user": upstream "testnet": sent: AWAY :Auto away
+    server_test.go:29: user "soju-test-user": upstream "testnet": failed to write message: write tcp 127.0.0.1:46638->127.0.0.1:34697: write: broken pipe
+    server_test.go:29: user "soju-test-user": upstream "testnet": connection closed
+    server_test.go:29: user "soju-test-user": network "testnet": connection error to "irc+insecure://127.0.0.1:34697": failed to handle messages: failed to read IRC command: read tcp 127.0.0.1:46638->127.0.0.1:34697: read: connection reset by peer
+    server_test.go:29: user "soju-test-user": network "testnet": waiting 1m16s before trying to reconnect to "irc+insecure://127.0.0.1:34697"
 === RUN   TestServer_broadcast/postgres
     server_test.go:47: set SOJU_TEST_POSTGRES to a connection string to execute PostgreSQL tests
---- PASS: TestServer_broadcast (0.16s)
-    --- PASS: TestServer_broadcast/sqlite (0.16s)
+--- PASS: TestServer_broadcast (0.19s)
+    --- PASS: TestServer_broadcast/sqlite (0.19s)
     --- SKIP: TestServer_broadcast/postgres (0.00s)
 === RUN   TestServer_chatHistory
 === RUN   TestServer_chatHistory/fs
     server_test.go:29: generating Web push VAPID key pair
     server_test.go:29: starting bouncer for user "soju-test-user"
-    server_test.go:29: user "soju-test-user": upstream "testnet": connecting to plain-text server at address "127.0.0.1:33277"
+    server_test.go:29: user "soju-test-user": upstream "testnet": connecting to plain-text server at address "127.0.0.1:33759"
     server_test.go:29: user "soju-test-user": upstream "testnet": new connection
     server_test.go:29: user "soju-test-user": upstream "testnet": sent: CAP LS 302
     server_test.go:29: user "soju-test-user": upstream "testnet": sent: NICK soju-test-user
@@ -1114,8 +1155,8 @@
 === RUN   TestServer_chatHistory/fs/all
 === NAME  TestServer_chatHistory/fs
     server_test.go:29: user "soju-test-user": downstream "pipe": received: CHATHISTORY AFTER foo timestamp=2023-05-23T05:59:59.000Z 100
-    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :foo PRIVMSG soju-test-user Hiya!
     server_test.go:29: user "soju-test-user": downstream "pipe": received: PING roundtrip
+    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :foo PRIVMSG soju-test-user Hiya!
     server_test.go:29: user "soju-test-user": downstream "pipe": sent: :foo PRIVMSG soju-test-user :How are you doing?
     server_test.go:29: user "soju-test-user": downstream "pipe": sent: :foo PRIVMSG soju-test-user :Can I take a sip from your glass of soju?
     server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost PONG localhost roundtrip
@@ -1127,16 +1168,20 @@
 === RUN   TestServer_chatHistory/fs/all_but_first
 === NAME  TestServer_chatHistory/fs
     server_test.go:29: user "soju-test-user": downstream "pipe": received: CHATHISTORY AFTER foo timestamp=2023-05-23T06:00:00.000Z 100
-    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :foo PRIVMSG soju-test-user :How are you doing?
     server_test.go:29: user "soju-test-user": downstream "pipe": received: PING roundtrip
+    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :foo PRIVMSG soju-test-user :How are you doing?
     server_test.go:29: user "soju-test-user": downstream "pipe": sent: :foo PRIVMSG soju-test-user :Can I take a sip from your glass of soju?
     server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost PONG localhost roundtrip
+    server_test.go:29: user "soju-test-user": downstream "pipe": connection closed
     server_test.go:29: shutting down server
     server_test.go:29: waiting for users to finish
+    server_test.go:29: user "soju-test-user": network "testnet": connection error to "irc+insecure://127.0.0.1:33759": failed to handle messages: failed to read IRC command: read tcp 127.0.0.1:45198->127.0.0.1:33759: read: connection reset by peer
+    server_test.go:29: user "soju-test-user": network "testnet": waiting 1m51s before trying to reconnect to "irc+insecure://127.0.0.1:33759"
+    server_test.go:29: user "soju-test-user": upstream "testnet": connection closed
 === RUN   TestServer_chatHistory/db
     server_test.go:29: generating Web push VAPID key pair
     server_test.go:29: starting bouncer for user "soju-test-user"
-    server_test.go:29: user "soju-test-user": upstream "testnet": connecting to plain-text server at address "127.0.0.1:39631"
+    server_test.go:29: user "soju-test-user": upstream "testnet": connecting to plain-text server at address "127.0.0.1:46531"
     server_test.go:29: user "soju-test-user": upstream "testnet": new connection
     server_test.go:29: user "soju-test-user": upstream "testnet": sent: CAP LS 302
     server_test.go:29: user "soju-test-user": upstream "testnet": sent: NICK soju-test-user
@@ -1159,9 +1204,9 @@
     server_test.go:29: downstream "pipe": received: USER soju-test-user/testnet 0 * soju-test-user
     server_test.go:29: downstream "pipe": registration complete for user "soju-test-user"
     server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 001 soju-test-user :Welcome to soju, soju-test-user
+    server_test.go:29: user "soju-test-user": upstream "testnet": sent: AWAY
     server_test.go:29: user "soju-test-user": downstream "pipe": received: PING roundtrip
     server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 002 soju-test-user :Your host is localhost
-    server_test.go:29: user "soju-test-user": upstream "testnet": sent: AWAY
     server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 004 soju-test-user localhost soju aiwroO OovaimnqpsrtklbeI
     server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 005 * soju.im/SAFERATE BOUNCER_NETID=1 CHATHISTORY=1000 MSGREFTYPES=timestamp CLIENTTAGDENY=* :are supported
     server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 221 soju-test-user +
@@ -1170,8 +1215,8 @@
 === RUN   TestServer_chatHistory/db/all
 === NAME  TestServer_chatHistory/db
     server_test.go:29: user "soju-test-user": downstream "pipe": received: CHATHISTORY AFTER foo timestamp=2023-05-23T05:59:59.000Z 100
-    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :foo PRIVMSG soju-test-user Hiya!
     server_test.go:29: user "soju-test-user": downstream "pipe": received: PING roundtrip
+    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :foo PRIVMSG soju-test-user Hiya!
     server_test.go:29: user "soju-test-user": downstream "pipe": sent: :foo PRIVMSG soju-test-user :How are you doing?
     server_test.go:29: user "soju-test-user": downstream "pipe": sent: :foo PRIVMSG soju-test-user :Can I take a sip from your glass of soju?
     server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost PONG localhost roundtrip
@@ -1183,27 +1228,29 @@
 === RUN   TestServer_chatHistory/db/all_but_first
 === NAME  TestServer_chatHistory/db
     server_test.go:29: user "soju-test-user": downstream "pipe": received: CHATHISTORY AFTER foo timestamp=2023-05-23T06:00:00.000Z 100
-    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :foo PRIVMSG soju-test-user :How are you doing?
     server_test.go:29: user "soju-test-user": downstream "pipe": received: PING roundtrip
+    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :foo PRIVMSG soju-test-user :How are you doing?
     server_test.go:29: user "soju-test-user": downstream "pipe": sent: :foo PRIVMSG soju-test-user :Can I take a sip from your glass of soju?
     server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost PONG localhost roundtrip
     server_test.go:29: shutting down server
     server_test.go:29: waiting for users to finish
---- PASS: TestServer_chatHistory (0.31s)
-    --- PASS: TestServer_chatHistory/fs (0.16s)
+    server_test.go:29: user "soju-test-user": downstream "pipe": connection closed
+    server_test.go:29: user "soju-test-user": network "testnet": connection error to "irc+insecure://127.0.0.1:46531": failed to handle messages: failed to read IRC command: read tcp 127.0.0.1:40850->127.0.0.1:46531: read: connection reset by peer
+    server_test.go:29: user "soju-test-user": upstream "testnet": connection closed
+    server_test.go:29: user "soju-test-user": network "testnet": waiting 1m27s before trying to reconnect to "irc+insecure://127.0.0.1:46531"
+--- PASS: TestServer_chatHistory (0.40s)
+    --- PASS: TestServer_chatHistory/fs (0.21s)
         --- PASS: TestServer_chatHistory/fs/all (0.00s)
         --- PASS: TestServer_chatHistory/fs/none (0.00s)
         --- PASS: TestServer_chatHistory/fs/all_but_first (0.00s)
-    server_test.go:29: user "soju-test-user": upstream "testnet": connection closed
-    server_test.go:29: user "soju-test-user": downstream "pipe": connection closed
-    --- PASS: TestServer_chatHistory/db (0.15s)
+    --- PASS: TestServer_chatHistory/db (0.19s)
         --- PASS: TestServer_chatHistory/db/all (0.00s)
         --- PASS: TestServer_chatHistory/db/none (0.00s)
         --- PASS: TestServer_chatHistory/db/all_but_first (0.00s)
 === RUN   TestSplit
 --- PASS: TestSplit (0.00s)
 PASS
-ok  	codeberg.org/emersion/soju	0.477s
+ok  	codeberg.org/emersion/soju	0.598s
 ?   	codeberg.org/emersion/soju/auth	[no test files]
 ?   	codeberg.org/emersion/soju/cmd/soju	[no test files]
 ?   	codeberg.org/emersion/soju/cmd/sojuctl	[no test files]
@@ -1218,7 +1265,7 @@
 === RUN   TestSqliteMigrations
 --- PASS: TestSqliteMigrations (0.01s)
 PASS
-ok  	codeberg.org/emersion/soju/database	0.013s
+ok  	codeberg.org/emersion/soju/database	0.015s
 ?   	codeberg.org/emersion/soju/fileupload	[no test files]
 ?   	codeberg.org/emersion/soju/identd	[no test files]
 ?   	codeberg.org/emersion/soju/msgstore	[no test files]
@@ -1252,10 +1299,10 @@
    dh_installdeb -O--builddirectory=_build -O--buildsystem=golang
    dh_golang -O--builddirectory=_build -O--buildsystem=golang
    dh_gencontrol -O--builddirectory=_build -O--buildsystem=golang
-dpkg-gencontrol: warning: package soju-utils: substitution variable ${misc:Static-Built-Using} unused, but is defined
 dpkg-gencontrol: warning: package soju: substitution variable ${misc:Static-Built-Using} unused, but is defined
 dpkg-gencontrol: warning: package soju-utils: substitution variable ${misc:Static-Built-Using} unused, but is defined
 dpkg-gencontrol: warning: package soju: substitution variable ${misc:Static-Built-Using} unused, but is defined
+dpkg-gencontrol: warning: package soju-utils: substitution variable ${misc:Static-Built-Using} unused, but is defined
    dh_md5sums -O--builddirectory=_build -O--buildsystem=golang
    dh_builddeb -O--builddirectory=_build -O--buildsystem=golang
 dpkg-deb: building package 'soju' in '../soju_0.9.0-1_amd64.deb'.
@@ -1269,12 +1316,14 @@
 dpkg-buildpackage: info: binary-only upload (no source included)
 dpkg-genchanges: info: including full source code in upload
 I: copying local configuration
+I: user script /srv/workspace/pbuilder/723018/tmp/hooks/B01_cleanup starting
+I: user script /srv/workspace/pbuilder/723018/tmp/hooks/B01_cleanup finished
 I: unmounting dev/ptmx filesystem
 I: unmounting dev/pts filesystem
 I: unmounting dev/shm filesystem
 I: unmounting proc filesystem
 I: unmounting sys filesystem
 I: cleaning the build env 
-I: removing directory /srv/workspace/pbuilder/842895 and its subdirectories
-I: Current time: Thu Mar 27 09:13:13 -12 2025
-I: pbuilder-time-stamp: 1743109993
+I: removing directory /srv/workspace/pbuilder/723018 and its subdirectories
+I: Current time: Thu Apr 30 17:39:24 +14 2026
+I: pbuilder-time-stamp: 1777520364