﻿2026-05-10T11:50:35.8678773Z Current runner version: '2.334.0'
2026-05-10T11:50:35.8714157Z ##[group]Runner Image Provisioner
2026-05-10T11:50:35.8715482Z Hosted Compute Agent
2026-05-10T11:50:35.8716345Z Version: 20260213.493
2026-05-10T11:50:35.8717321Z Commit: 5c115507f6dd24b8de37d8bbe0bb4509d0cc0fa3
2026-05-10T11:50:35.8718486Z Build Date: 2026-02-13T00:28:41Z
2026-05-10T11:50:35.8719506Z Worker ID: {0f82edc6-93b7-4005-bc5c-8a99005753c7}
2026-05-10T11:50:35.8720649Z Azure Region: westcentralus
2026-05-10T11:50:35.8721828Z ##[endgroup]
2026-05-10T11:50:35.8724055Z ##[group]Operating System
2026-05-10T11:50:35.8725105Z Ubuntu
2026-05-10T11:50:35.8725852Z 24.04.4
2026-05-10T11:50:35.8726626Z LTS
2026-05-10T11:50:35.8727357Z ##[endgroup]
2026-05-10T11:50:35.8728085Z ##[group]Runner Image
2026-05-10T11:50:35.8729074Z Image: ubuntu-24.04
2026-05-10T11:50:35.8729844Z Version: 20260413.86.1
2026-05-10T11:50:35.8731913Z Included Software: https://github.com/actions/runner-images/blob/ubuntu24/20260413.86/images/ubuntu/Ubuntu2404-Readme.md
2026-05-10T11:50:35.8734253Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu24%2F20260413.86
2026-05-10T11:50:35.8735726Z ##[endgroup]
2026-05-10T11:50:35.8737353Z ##[group]GITHUB_TOKEN Permissions
2026-05-10T11:50:35.8740089Z Contents: read
2026-05-10T11:50:35.8740952Z Metadata: read
2026-05-10T11:50:35.8741944Z ##[endgroup]
2026-05-10T11:50:35.8745174Z Secret source: Actions
2026-05-10T11:50:35.8746323Z Prepare workflow directory
2026-05-10T11:50:35.9376642Z Prepare all required actions
2026-05-10T11:50:35.9434024Z Getting action download info
2026-05-10T11:50:36.5395028Z Download action repository 'actions/checkout@v4' (SHA:34e114876b0b11c390a56381ad16ebd13914f8d5)
2026-05-10T11:50:36.6507539Z Download action repository 'pnpm/action-setup@v4' (SHA:b906affcce14559ad1aafd4ab0e942779e9f58b1)
2026-05-10T11:50:37.4643031Z Download action repository 'actions/setup-node@v4' (SHA:49933ea5288caeca8642d1e84afbd3f7d6820020)
2026-05-10T11:50:37.5366071Z Download action repository 'superfly/flyctl-actions@fc53c09e1bc3be6f54706524e3b82c4f462f77be' (SHA:fc53c09e1bc3be6f54706524e3b82c4f462f77be)
2026-05-10T11:50:37.8593596Z Download action repository 'actions/upload-artifact@v4' (SHA:ea165f8d65b6e75b540449e92b4886f43607fa02)
2026-05-10T11:50:38.0762213Z Complete job name: build-and-deploy
2026-05-10T11:50:38.1712603Z ##[group]Run actions/checkout@v4
2026-05-10T11:50:38.1713834Z with:
2026-05-10T11:50:38.1714760Z   repository: SaberMage/rebno
2026-05-10T11:50:38.1716222Z   token: ***
2026-05-10T11:50:38.1716948Z   ssh-strict: true
2026-05-10T11:50:38.1717687Z   ssh-user: git
2026-05-10T11:50:38.1718433Z   persist-credentials: true
2026-05-10T11:50:38.1719263Z   clean: true
2026-05-10T11:50:38.1720018Z   sparse-checkout-cone-mode: true
2026-05-10T11:50:38.1720918Z   fetch-depth: 1
2026-05-10T11:50:38.1721855Z   fetch-tags: false
2026-05-10T11:50:38.1722636Z   show-progress: true
2026-05-10T11:50:38.1723402Z   lfs: false
2026-05-10T11:50:38.1724108Z   submodules: false
2026-05-10T11:50:38.1724888Z   set-safe-directory: true
2026-05-10T11:50:38.1726096Z ##[endgroup]
2026-05-10T11:50:38.2852638Z Syncing repository: SaberMage/rebno
2026-05-10T11:50:38.2855754Z ##[group]Getting Git version info
2026-05-10T11:50:38.2857610Z Working directory is '/home/runner/work/rebno/rebno'
2026-05-10T11:50:38.2860460Z [command]/usr/bin/git version
2026-05-10T11:50:38.2888520Z git version 2.53.0
2026-05-10T11:50:38.2915383Z ##[endgroup]
2026-05-10T11:50:38.2933427Z Temporarily overriding HOME='/home/runner/work/_temp/e5248834-f289-4ab2-9b29-3dee35bdc110' before making global git config changes
2026-05-10T11:50:38.2937726Z Adding repository directory to the temporary git global config as a safe directory
2026-05-10T11:50:38.2952423Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/rebno/rebno
2026-05-10T11:50:38.2986552Z Deleting the contents of '/home/runner/work/rebno/rebno'
2026-05-10T11:50:38.2992815Z ##[group]Initializing the repository
2026-05-10T11:50:38.2998193Z [command]/usr/bin/git init /home/runner/work/rebno/rebno
2026-05-10T11:50:38.3097496Z hint: Using 'master' as the name for the initial branch. This default branch name
2026-05-10T11:50:38.3103936Z hint: will change to "main" in Git 3.0. To configure the initial branch name
2026-05-10T11:50:38.3107161Z hint: to use in all of your new repositories, which will suppress this warning,
2026-05-10T11:50:38.3109838Z hint: call:
2026-05-10T11:50:38.3111190Z hint:
2026-05-10T11:50:38.3112997Z hint: 	git config --global init.defaultBranch <name>
2026-05-10T11:50:38.3115204Z hint:
2026-05-10T11:50:38.3117142Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
2026-05-10T11:50:38.3119857Z hint: 'development'. The just-created branch can be renamed via this command:
2026-05-10T11:50:38.3122611Z hint:
2026-05-10T11:50:38.3124025Z hint: 	git branch -m <name>
2026-05-10T11:50:38.3125614Z hint:
2026-05-10T11:50:38.3127420Z hint: Disable this message with "git config set advice.defaultBranchName false"
2026-05-10T11:50:38.3130867Z Initialized empty Git repository in /home/runner/work/rebno/rebno/.git/
2026-05-10T11:50:38.3136494Z [command]/usr/bin/git remote add origin https://github.com/SaberMage/rebno
2026-05-10T11:50:38.3156933Z ##[endgroup]
2026-05-10T11:50:38.3159501Z ##[group]Disabling automatic garbage collection
2026-05-10T11:50:38.3162229Z [command]/usr/bin/git config --local gc.auto 0
2026-05-10T11:50:38.3191202Z ##[endgroup]
2026-05-10T11:50:38.3194119Z ##[group]Setting up auth
2026-05-10T11:50:38.3198302Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-05-10T11:50:38.3230152Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
2026-05-10T11:50:38.3502635Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
2026-05-10T11:50:38.3534540Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :"
2026-05-10T11:50:38.3719461Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
2026-05-10T11:50:38.3758299Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
2026-05-10T11:50:38.3945453Z [command]/usr/bin/git config --local http.https://github.com/.extraheader AUTHORIZATION: basic ***
2026-05-10T11:50:38.3978334Z ##[endgroup]
2026-05-10T11:50:38.3981375Z ##[group]Fetching the repository
2026-05-10T11:50:38.3990554Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +76f63b756ea20c344da83b22c8de45d07061ca41:refs/remotes/origin/main
2026-05-10T11:50:39.8550210Z From https://github.com/SaberMage/rebno
2026-05-10T11:50:39.8552002Z  * [new ref]         76f63b756ea20c344da83b22c8de45d07061ca41 -> origin/main
2026-05-10T11:50:39.8598686Z ##[endgroup]
2026-05-10T11:50:39.8599700Z ##[group]Determining the checkout info
2026-05-10T11:50:39.8600609Z ##[endgroup]
2026-05-10T11:50:39.8601306Z [command]/usr/bin/git sparse-checkout disable
2026-05-10T11:50:39.8662659Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig
2026-05-10T11:50:39.8684851Z ##[group]Checking out the ref
2026-05-10T11:50:39.8685806Z [command]/usr/bin/git checkout --progress --force -B main refs/remotes/origin/main
2026-05-10T11:50:40.2719045Z Switched to a new branch 'main'
2026-05-10T11:50:40.2722717Z branch 'main' set up to track 'origin/main'.
2026-05-10T11:50:40.2735575Z ##[endgroup]
2026-05-10T11:50:40.2775939Z [command]/usr/bin/git log -1 --format=%H
2026-05-10T11:50:40.2801031Z 76f63b756ea20c344da83b22c8de45d07061ca41
2026-05-10T11:50:40.2996950Z ##[group]Run pnpm/action-setup@v4
2026-05-10T11:50:40.2997355Z with:
2026-05-10T11:50:40.2997542Z   version: 10
2026-05-10T11:50:40.2997738Z   dest: ~/setup-pnpm
2026-05-10T11:50:40.2998065Z   run_install: null
2026-05-10T11:50:40.2998256Z   cache: false
2026-05-10T11:50:40.2998470Z   cache_dependency_path: pnpm-lock.yaml
2026-05-10T11:50:40.2998736Z   package_json_file: package.json
2026-05-10T11:50:40.2998968Z   standalone: false
2026-05-10T11:50:40.2999167Z ##[endgroup]
2026-05-10T11:50:40.4328488Z ##[group]Running self-installer...
2026-05-10T11:50:41.1392793Z Progress: resolved 1, reused 0, downloaded 0, added 0
2026-05-10T11:50:41.1783084Z Packages: +1
2026-05-10T11:50:41.1832493Z +
2026-05-10T11:50:41.5985459Z Progress: resolved 1, reused 0, downloaded 1, added 1, done
2026-05-10T11:50:41.6288142Z 
2026-05-10T11:50:41.6289095Z dependencies:
2026-05-10T11:50:41.6289967Z + pnpm 10.33.4 (11.0.9 is available)
2026-05-10T11:50:41.6294759Z 
2026-05-10T11:50:41.6357692Z Done in 993ms
2026-05-10T11:50:41.6453075Z ##[endgroup]
2026-05-10T11:50:41.6462342Z Installation Completed!
2026-05-10T11:50:41.6588705Z ##[group]Run actions/setup-node@v4
2026-05-10T11:50:41.6588960Z with:
2026-05-10T11:50:41.6589155Z   node-version: 22
2026-05-10T11:50:41.6589357Z   cache: pnpm
2026-05-10T11:50:41.6589540Z   always-auth: false
2026-05-10T11:50:41.6589738Z   check-latest: false
2026-05-10T11:50:41.6590061Z   token: ***
2026-05-10T11:50:41.6590238Z env:
2026-05-10T11:50:41.6590477Z   PNPM_HOME: /home/runner/setup-pnpm/node_modules/.bin
2026-05-10T11:50:41.6590759Z ##[endgroup]
2026-05-10T11:50:41.8313518Z Found in cache @ /opt/hostedtoolcache/node/22.22.2/x64
2026-05-10T11:50:41.8320454Z ##[group]Environment details
2026-05-10T11:50:42.3829301Z node: v22.22.2
2026-05-10T11:50:42.3830103Z npm: 10.9.7
2026-05-10T11:50:42.3830545Z yarn: 1.22.22
2026-05-10T11:50:42.3832211Z ##[endgroup]
2026-05-10T11:50:42.3866030Z [command]/home/runner/setup-pnpm/node_modules/.bin/pnpm store path --silent
2026-05-10T11:50:42.7499240Z /home/runner/setup-pnpm/node_modules/.bin/store/v10
2026-05-10T11:50:42.9692647Z pnpm cache is not found
2026-05-10T11:50:42.9794433Z ##[group]Run pnpm install --frozen-lockfile
2026-05-10T11:50:42.9794887Z [36;1mpnpm install --frozen-lockfile[0m
2026-05-10T11:50:42.9820662Z shell: /usr/bin/bash -e {0}
2026-05-10T11:50:42.9820908Z env:
2026-05-10T11:50:42.9821146Z   PNPM_HOME: /home/runner/setup-pnpm/node_modules/.bin
2026-05-10T11:50:42.9821430Z ##[endgroup]
2026-05-10T11:50:43.2722528Z Scope: all 6 workspace projects
2026-05-10T11:50:43.4204510Z Lockfile is up to date, resolution step is skipped
2026-05-10T11:50:43.4790454Z Progress: resolved 1, reused 0, downloaded 0, added 0
2026-05-10T11:50:43.6117676Z Packages: +665
2026-05-10T11:50:43.6120676Z ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2026-05-10T11:50:44.4808812Z Progress: resolved 665, reused 0, downloaded 68, added 36
2026-05-10T11:50:45.4917175Z Progress: resolved 665, reused 0, downloaded 152, added 96
2026-05-10T11:50:46.4908392Z Progress: resolved 665, reused 0, downloaded 288, added 284
2026-05-10T11:50:47.4906972Z Progress: resolved 665, reused 0, downloaded 405, added 364
2026-05-10T11:50:48.4925146Z Progress: resolved 665, reused 0, downloaded 464, added 434
2026-05-10T11:50:49.4934226Z Progress: resolved 665, reused 0, downloaded 533, added 477
2026-05-10T11:50:50.4943206Z Progress: resolved 665, reused 0, downloaded 644, added 566
2026-05-10T11:50:51.4948304Z Progress: resolved 665, reused 0, downloaded 660, added 631
2026-05-10T11:50:52.2191296Z Packages are hard linked from the content-addressable store to the virtual store.
2026-05-10T11:50:52.2222826Z   Content-addressable store is at: /home/runner/setup-pnpm/node_modules/.bin/store/v10
2026-05-10T11:50:52.2224004Z   Virtual store is at:             node_modules/.pnpm
2026-05-10T11:50:52.2562703Z Progress: resolved 665, reused 0, downloaded 661, added 665, done
2026-05-10T11:50:52.7778273Z .../node_modules/better-sqlite3 install$ prebuild-install || node-gyp rebuild --release
2026-05-10T11:50:52.7802828Z .../esbuild@0.18.20/node_modules/esbuild postinstall$ node install.js
2026-05-10T11:50:52.7822454Z .../esbuild@0.25.12/node_modules/esbuild postinstall$ node install.js
2026-05-10T11:50:52.7823949Z .../esbuild@0.27.7/node_modules/esbuild postinstall$ node install.js
2026-05-10T11:50:52.8323490Z .../argon2@0.44.0/node_modules/argon2 install$ cross-env ZERO_AR_DATE=1 node-gyp-build
2026-05-10T11:50:52.9452992Z .../esbuild@0.27.7/node_modules/esbuild postinstall: Done
2026-05-10T11:50:53.0082940Z .../esbuild@0.25.12/node_modules/esbuild postinstall: Done
2026-05-10T11:50:53.0222335Z .../esbuild@0.18.20/node_modules/esbuild postinstall: Done
2026-05-10T11:50:53.2290281Z .../argon2@0.44.0/node_modules/argon2 install: Done
2026-05-10T11:50:53.5424414Z .../node_modules/better-sqlite3 install: Done
2026-05-10T11:50:53.8733546Z 
2026-05-10T11:50:53.8734393Z devDependencies:
2026-05-10T11:50:53.8745237Z + @better-auth/cli 1.4.21
2026-05-10T11:50:53.8745749Z 
2026-05-10T11:50:53.9563413Z ╭ Warning ─────────────────────────────────────────────────────────────────────╮
2026-05-10T11:50:53.9592842Z │                                                                              │
2026-05-10T11:50:53.9594538Z │   Ignored build scripts: @prisma/client@5.22.0, msgpackr-extract@3.0.3,      │
2026-05-10T11:50:53.9612500Z │   protobufjs@7.5.6, protobufjs@8.0.1.                                        │
2026-05-10T11:50:53.9632652Z │   Run "pnpm approve-builds" to pick which dependencies should be allowed     │
2026-05-10T11:50:53.9634107Z │   to run scripts.                                                            │
2026-05-10T11:50:53.9652508Z │                                                                              │
2026-05-10T11:50:53.9666114Z ╰──────────────────────────────────────────────────────────────────────────────╯
2026-05-10T11:50:53.9804967Z Done in 10.9s using pnpm v10.33.4
2026-05-10T11:50:54.0105714Z ##[group]Run for d in tools/asset-catalog tools/asset-pipeline tools/extract-gmd tools/protocol-doc tools/room-converter tools/save-format-doc; do
2026-05-10T11:50:54.0107670Z [36;1mfor d in tools/asset-catalog tools/asset-pipeline tools/extract-gmd tools/protocol-doc tools/room-converter tools/save-format-doc; do[0m
2026-05-10T11:50:54.0108929Z [36;1m  if [ -f "$d/package.json" ]; then[0m
2026-05-10T11:50:54.0109481Z [36;1m    echo "::group::pnpm install in $d"[0m
2026-05-10T11:50:54.0110176Z [36;1m    pnpm -C "$d" install --ignore-workspace --no-frozen-lockfile[0m
2026-05-10T11:50:54.0110838Z [36;1m    echo "::endgroup::"[0m
2026-05-10T11:50:54.0111267Z [36;1m  fi[0m
2026-05-10T11:50:54.0111761Z [36;1mdone[0m
2026-05-10T11:50:54.0130657Z shell: /usr/bin/bash -e {0}
2026-05-10T11:50:54.0131066Z env:
2026-05-10T11:50:54.0131485Z   PNPM_HOME: /home/runner/setup-pnpm/node_modules/.bin
2026-05-10T11:50:54.0132156Z ##[endgroup]
2026-05-10T11:50:54.0194634Z ##[group]pnpm install in tools/asset-catalog
2026-05-10T11:50:54.3203930Z Lockfile is up to date, resolution step is skipped
2026-05-10T11:50:54.3612842Z Progress: resolved 1, reused 0, downloaded 0, added 0
2026-05-10T11:50:54.3942650Z Packages: +52
2026-05-10T11:50:54.3952751Z ++++++++++++++++++++++++++++++++++++++++++++++++++++
2026-05-10T11:50:54.9983124Z Progress: resolved 52, reused 46, downloaded 6, added 52, done
2026-05-10T11:50:55.0628518Z 
2026-05-10T11:50:55.0629220Z devDependencies:
2026-05-10T11:50:55.0630105Z + @types/node 25.6.0
2026-05-10T11:50:55.0630762Z + tsx 4.21.0
2026-05-10T11:50:55.0631275Z + typescript 5.6.3
2026-05-10T11:50:55.0632028Z + vitest 4.1.5
2026-05-10T11:50:55.0632394Z 
2026-05-10T11:50:55.0710531Z ╭ Warning ─────────────────────────────────────────────────────────────────────╮
2026-05-10T11:50:55.0712086Z │                                                                              │
2026-05-10T11:50:55.0713312Z │   Ignored build scripts: esbuild@0.27.7.                                     │
2026-05-10T11:50:55.0714357Z │   Run "pnpm approve-builds" to pick which dependencies should be allowed     │
2026-05-10T11:50:55.0715376Z │   to run scripts.                                                            │
2026-05-10T11:50:55.0716332Z │                                                                              │
2026-05-10T11:50:55.0718034Z ╰──────────────────────────────────────────────────────────────────────────────╯
2026-05-10T11:50:55.0753409Z Done in 1s using pnpm v10.33.4
2026-05-10T11:50:55.1563063Z ##[endgroup]
2026-05-10T11:50:55.1564015Z ##[group]pnpm install in tools/asset-pipeline
2026-05-10T11:50:55.4540641Z Lockfile is up to date, resolution step is skipped
2026-05-10T11:50:55.4875916Z Progress: resolved 1, reused 0, downloaded 0, added 0
2026-05-10T11:50:55.5052872Z Packages: +64
2026-05-10T11:50:55.5053873Z ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2026-05-10T11:50:55.9897591Z Progress: resolved 64, reused 57, downloaded 7, added 64, done
2026-05-10T11:50:56.1200713Z 
2026-05-10T11:50:56.1201404Z dependencies:
2026-05-10T11:50:56.1202288Z + maxrects-packer 2.7.3
2026-05-10T11:50:56.1203071Z + sharp 0.34.5
2026-05-10T11:50:56.1203566Z 
2026-05-10T11:50:56.1265440Z devDependencies:
2026-05-10T11:50:56.1283037Z + @types/node 25.6.0
2026-05-10T11:50:56.1283896Z + tsx 4.21.0
2026-05-10T11:50:56.1284919Z + typescript 5.6.3
2026-05-10T11:50:56.1285969Z + vitest 3.2.4
2026-05-10T11:50:56.1286311Z 
2026-05-10T11:50:56.1314275Z ╭ Warning ─────────────────────────────────────────────────────────────────────╮
2026-05-10T11:50:56.1315395Z │                                                                              │
2026-05-10T11:50:56.1316737Z │   Ignored build scripts: esbuild@0.27.7, sharp@0.34.5.                       │
2026-05-10T11:50:56.1317952Z │   Run "pnpm approve-builds" to pick which dependencies should be allowed     │
2026-05-10T11:50:56.1319131Z │   to run scripts.                                                            │
2026-05-10T11:50:56.1320421Z │                                                                              │
2026-05-10T11:50:56.1321719Z ╰──────────────────────────────────────────────────────────────────────────────╯
2026-05-10T11:50:56.1353954Z Done in 955ms using pnpm v10.33.4
2026-05-10T11:50:56.1989104Z ##[endgroup]
2026-05-10T11:50:56.1989994Z ##[group]pnpm install in tools/extract-gmd
2026-05-10T11:50:56.6848190Z Progress: resolved 1, reused 0, downloaded 0, added 0
2026-05-10T11:50:57.6964597Z Progress: resolved 100, reused 51, downloaded 1, added 0
2026-05-10T11:50:58.2476271Z Packages: +57
2026-05-10T11:50:58.2477062Z +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2026-05-10T11:50:58.2983060Z Progress: resolved 135, reused 58, downloaded 5, added 57, done
2026-05-10T11:50:58.3771952Z 
2026-05-10T11:50:58.3772496Z dependencies:
2026-05-10T11:50:58.3772979Z + sharp 0.34.5
2026-05-10T11:50:58.3773296Z 
2026-05-10T11:50:58.3773515Z devDependencies:
2026-05-10T11:50:58.3774115Z + @types/node 25.6.0 (25.6.2 is available)
2026-05-10T11:50:58.3774617Z + tsx 4.21.0
2026-05-10T11:50:58.3775080Z + typescript 5.6.3 (6.0.3 is available)
2026-05-10T11:50:58.3775582Z + vitest 4.1.5
2026-05-10T11:50:58.3775859Z 
2026-05-10T11:50:58.3800983Z ╭ Warning ─────────────────────────────────────────────────────────────────────╮
2026-05-10T11:50:58.3802276Z │                                                                              │
2026-05-10T11:50:58.3803293Z │   Ignored build scripts: esbuild@0.27.7, sharp@0.34.5.                       │
2026-05-10T11:50:58.3804445Z │   Run "pnpm approve-builds" to pick which dependencies should be allowed     │
2026-05-10T11:50:58.3805410Z │   to run scripts.                                                            │
2026-05-10T11:50:58.3806317Z │                                                                              │
2026-05-10T11:50:58.3807684Z ╰──────────────────────────────────────────────────────────────────────────────╯
2026-05-10T11:50:58.3852424Z Done in 2.1s using pnpm v10.33.4
2026-05-10T11:50:58.3983120Z ##[endgroup]
2026-05-10T11:50:58.3984298Z ##[group]pnpm install in tools/protocol-doc
2026-05-10T11:50:58.6931197Z Lockfile is up to date, resolution step is skipped
2026-05-10T11:50:58.7231995Z Progress: resolved 1, reused 0, downloaded 0, added 0
2026-05-10T11:50:58.7382766Z Packages: +52
2026-05-10T11:50:58.7383571Z ++++++++++++++++++++++++++++++++++++++++++++++++++++
2026-05-10T11:50:58.8632950Z Progress: resolved 52, reused 52, downloaded 0, added 52, done
2026-05-10T11:50:58.9262654Z 
2026-05-10T11:50:58.9263359Z devDependencies:
2026-05-10T11:50:58.9264217Z + @types/node 25.6.0
2026-05-10T11:50:58.9264778Z + tsx 4.21.0
2026-05-10T11:50:58.9265285Z + typescript 5.6.3
2026-05-10T11:50:58.9265777Z + vitest 4.1.5
2026-05-10T11:50:58.9266096Z 
2026-05-10T11:50:58.9338119Z ╭ Warning ─────────────────────────────────────────────────────────────────────╮
2026-05-10T11:50:58.9339332Z │                                                                              │
2026-05-10T11:50:58.9340755Z │   Ignored build scripts: esbuild@0.27.7.                                     │
2026-05-10T11:50:58.9342070Z │   Run "pnpm approve-builds" to pick which dependencies should be allowed     │
2026-05-10T11:50:58.9343063Z │   to run scripts.                                                            │
2026-05-10T11:50:58.9344032Z │                                                                              │
2026-05-10T11:50:58.9345518Z ╰──────────────────────────────────────────────────────────────────────────────╯
2026-05-10T11:50:58.9379947Z Done in 514ms using pnpm v10.33.4
2026-05-10T11:50:58.9443481Z ##[endgroup]
2026-05-10T11:50:58.9444604Z ##[group]pnpm install in tools/room-converter
2026-05-10T11:50:59.2522734Z Progress: resolved 1, reused 0, downloaded 0, added 0
2026-05-10T11:50:59.7148694Z Packages: +9
2026-05-10T11:50:59.7149075Z +++++++++
2026-05-10T11:50:59.7475166Z Progress: resolved 35, reused 9, downloaded 0, added 9, done
2026-05-10T11:50:59.8806383Z 
2026-05-10T11:50:59.8806996Z devDependencies:
2026-05-10T11:50:59.8807873Z + @types/node 25.6.0 (25.6.2 is available)
2026-05-10T11:50:59.8808513Z + tsx 4.21.0
2026-05-10T11:50:59.8809049Z + typescript 5.6.3 (6.0.3 is available)
2026-05-10T11:50:59.8809683Z + zod 3.25.76 (4.4.3 is available)
2026-05-10T11:50:59.8810279Z 
2026-05-10T11:50:59.8841001Z ╭ Warning ─────────────────────────────────────────────────────────────────────╮
2026-05-10T11:50:59.8842384Z │                                                                              │
2026-05-10T11:50:59.8843552Z │   Ignored build scripts: esbuild@0.27.7.                                     │
2026-05-10T11:50:59.8844821Z │   Run "pnpm approve-builds" to pick which dependencies should be allowed     │
2026-05-10T11:50:59.8845807Z │   to run scripts.                                                            │
2026-05-10T11:50:59.8846737Z │                                                                              │
2026-05-10T11:50:59.8848267Z ╰──────────────────────────────────────────────────────────────────────────────╯
2026-05-10T11:50:59.8878320Z Done in 921ms using pnpm v10.33.4
2026-05-10T11:50:59.8971443Z ##[endgroup]
2026-05-10T11:50:59.8972637Z ##[group]pnpm install in tools/save-format-doc
2026-05-10T11:51:00.1962830Z Lockfile is up to date, resolution step is skipped
2026-05-10T11:51:00.2275116Z Progress: resolved 1, reused 0, downloaded 0, added 0
2026-05-10T11:51:00.2412755Z Packages: +52
2026-05-10T11:51:00.2413673Z ++++++++++++++++++++++++++++++++++++++++++++++++++++
2026-05-10T11:51:00.3642905Z Progress: resolved 52, reused 52, downloaded 0, added 52, done
2026-05-10T11:51:00.4270559Z 
2026-05-10T11:51:00.4273065Z devDependencies:
2026-05-10T11:51:00.4292251Z + @types/node 25.6.0
2026-05-10T11:51:00.4292804Z + tsx 4.21.0
2026-05-10T11:51:00.4293156Z + typescript 5.6.3
2026-05-10T11:51:00.4293464Z + vitest 4.1.5
2026-05-10T11:51:00.4302282Z 
2026-05-10T11:51:00.4356530Z ╭ Warning ─────────────────────────────────────────────────────────────────────╮
2026-05-10T11:51:00.4357708Z │                                                                              │
2026-05-10T11:51:00.4358885Z │   Ignored build scripts: esbuild@0.27.7.                                     │
2026-05-10T11:51:00.4360149Z │   Run "pnpm approve-builds" to pick which dependencies should be allowed     │
2026-05-10T11:51:00.4361185Z │   to run scripts.                                                            │
2026-05-10T11:51:00.4362339Z │                                                                              │
2026-05-10T11:51:00.4363807Z ╰──────────────────────────────────────────────────────────────────────────────╯
2026-05-10T11:51:00.4398488Z Done in 519ms using pnpm v10.33.4
2026-05-10T11:51:00.4462366Z ##[endgroup]
2026-05-10T11:51:00.4497648Z ##[group]Run pnpm -r --filter "@rebno/*" build
2026-05-10T11:51:00.4498208Z [36;1mpnpm -r --filter "@rebno/*" build[0m
2026-05-10T11:51:00.4518287Z shell: /usr/bin/bash -e {0}
2026-05-10T11:51:00.4518646Z env:
2026-05-10T11:51:00.4519019Z   PNPM_HOME: /home/runner/setup-pnpm/node_modules/.bin
2026-05-10T11:51:00.4519495Z ##[endgroup]
2026-05-10T11:51:00.7433814Z Scope: 5 of 6 workspace projects
2026-05-10T11:51:00.7458815Z packages/db build$ tsc
2026-05-10T11:51:00.7467493Z packages/game-logic build$ tsc
2026-05-10T11:51:03.0992732Z packages/game-logic build: Done
2026-05-10T11:51:03.0993946Z packages/protocol prebuild$ node scripts/sync-from-tools-protocol-doc.mjs
2026-05-10T11:51:03.2106388Z packages/protocol prebuild: synced legacy-opcodes from /home/runner/work/rebno/rebno/tools/protocol-doc/output/protocol.ts
2026-05-10T11:51:03.2122217Z packages/protocol prebuild: Done
2026-05-10T11:51:03.2687688Z packages/protocol build$ tsc
2026-05-10T11:51:05.4966130Z packages/db build: Done
2026-05-10T11:51:06.5455602Z packages/protocol build: Done
2026-05-10T11:51:06.5463055Z apps/server build$ tsc -b
2026-05-10T11:51:13.1384905Z apps/server build: Done
2026-05-10T11:51:13.1486702Z ##[group]Run pnpm verify:phase-4
2026-05-10T11:51:13.1486985Z [36;1mpnpm verify:phase-4[0m
2026-05-10T11:51:13.1500195Z shell: /usr/bin/bash -e {0}
2026-05-10T11:51:13.1500429Z env:
2026-05-10T11:51:13.1500670Z   PNPM_HOME: /home/runner/setup-pnpm/node_modules/.bin
2026-05-10T11:51:13.1500968Z   SKIP_PHASE_3_CARRYOVER: 1
2026-05-10T11:51:13.1501181Z   SKIP_TRACE_CHECK: 1
2026-05-10T11:51:13.1502176Z ##[endgroup]
2026-05-10T11:51:13.4315668Z 
2026-05-10T11:51:13.4316737Z > rebno@0.0.0 verify:phase-4 /home/runner/work/rebno/rebno
2026-05-10T11:51:13.4317673Z > node scripts/verify-phase-4.mjs
2026-05-10T11:51:13.4318110Z 
2026-05-10T11:51:13.4606816Z 
2026-05-10T11:51:13.4607601Z === Workspace: typecheck ===
2026-05-10T11:51:13.4608295Z >>> pnpm -r typecheck
2026-05-10T11:51:13.7528180Z Scope: 5 of 6 workspace projects
2026-05-10T11:51:13.7576503Z packages/db typecheck$ tsc --noEmit
2026-05-10T11:51:13.7584523Z packages/game-logic typecheck$ tsc --noEmit
2026-05-10T11:51:16.1692721Z packages/game-logic typecheck: Done
2026-05-10T11:51:16.1762702Z packages/protocol typecheck$ tsc --noEmit
2026-05-10T11:51:18.0873174Z packages/db typecheck: Done
2026-05-10T11:51:19.3458023Z packages/protocol typecheck: Done
2026-05-10T11:51:19.3464075Z apps/client typecheck$ tsc --noEmit
2026-05-10T11:51:19.3480595Z apps/server typecheck$ tsc --noEmit
2026-05-10T11:51:29.9392966Z apps/client typecheck: Done
2026-05-10T11:51:30.8153950Z apps/server typecheck: Done
2026-05-10T11:51:30.8222332Z 
2026-05-10T11:51:30.8223114Z === Lint: protocol-sync ===
2026-05-10T11:51:30.8223806Z >>> pnpm lint:protocol-sync
2026-05-10T11:51:31.1030326Z 
2026-05-10T11:51:31.1031299Z > rebno@0.0.0 lint:protocol-sync /home/runner/work/rebno/rebno
2026-05-10T11:51:31.1032603Z > node tools/scripts/lint-protocol-sync.mjs
2026-05-10T11:51:31.1033168Z 
2026-05-10T11:51:31.1331473Z lint-protocol-sync: OK
2026-05-10T11:51:31.1422252Z 
2026-05-10T11:51:31.1423080Z === Lint: game-logic-purity ===
2026-05-10T11:51:31.1424031Z >>> pnpm lint:game-logic-purity
2026-05-10T11:51:31.4246784Z 
2026-05-10T11:51:31.4247788Z > rebno@0.0.0 lint:game-logic-purity /home/runner/work/rebno/rebno
2026-05-10T11:51:31.4248874Z > node tools/scripts/lint-game-logic-purity.mjs
2026-05-10T11:51:31.4249406Z 
2026-05-10T11:51:31.4547285Z lint-game-logic-purity: OK (6 file(s) clean)
2026-05-10T11:51:31.4636361Z 
2026-05-10T11:51:31.4637134Z === Lint: better-auth-schema-sync ===
2026-05-10T11:51:31.4638132Z >>> pnpm lint:better-auth-schema-sync
2026-05-10T11:51:31.7414021Z 
2026-05-10T11:51:31.7414979Z > rebno@0.0.0 lint:better-auth-schema-sync /home/runner/work/rebno/rebno
2026-05-10T11:51:31.7416074Z > node tools/scripts/lint-better-auth-schema-sync.mjs
2026-05-10T11:51:31.7416707Z 
2026-05-10T11:51:33.1985778Z lint-better-auth-schema-sync: OK
2026-05-10T11:51:33.2077264Z 
2026-05-10T11:51:33.2078005Z === Lint: rate-limit-budgets ===
2026-05-10T11:51:33.2078843Z >>> pnpm lint:rate-limit-budgets
2026-05-10T11:51:33.4882477Z 
2026-05-10T11:51:33.4883600Z > rebno@0.0.0 lint:rate-limit-budgets /home/runner/work/rebno/rebno
2026-05-10T11:51:33.4884624Z > node tools/scripts/lint-rate-limit-budgets.mjs
2026-05-10T11:51:33.4885204Z 
2026-05-10T11:51:33.5173369Z lint-rate-limit-budgets: OK (5 D-22 budgets locked)
2026-05-10T11:51:33.5272157Z 
2026-05-10T11:51:33.5273585Z === Lint: no-clipboard-rce ===
2026-05-10T11:51:33.5274151Z >>> pnpm lint:no-clipboard-rce
2026-05-10T11:51:33.8089092Z 
2026-05-10T11:51:33.8090100Z > rebno@0.0.0 lint:no-clipboard-rce /home/runner/work/rebno/rebno
2026-05-10T11:51:33.8091301Z > node tools/scripts/lint-no-clipboard-rce.mjs
2026-05-10T11:51:33.8092016Z 
2026-05-10T11:51:33.8398631Z lint-no-clipboard-rce: OK (21 file(s) clean)
2026-05-10T11:51:33.8492505Z 
2026-05-10T11:51:33.8493249Z === Lint: room-layout ===
2026-05-10T11:51:33.8493836Z >>> pnpm lint:room-layout
2026-05-10T11:51:34.1330913Z 
2026-05-10T11:51:34.1331968Z > rebno@0.0.0 lint:room-layout /home/runner/work/rebno/rebno
2026-05-10T11:51:34.1333292Z > node tools/scripts/lint-room-layout.mjs
2026-05-10T11:51:34.1333775Z 
2026-05-10T11:51:34.1656155Z lint-room-layout: OK
2026-05-10T11:51:34.1741107Z 
2026-05-10T11:51:34.1743549Z === ADR 0004 lint ===
2026-05-10T11:51:34.1744134Z >>> pnpm lint:adr:0004
2026-05-10T11:51:34.4557844Z 
2026-05-10T11:51:34.4558699Z > rebno@0.0.0 lint:adr:0004 /home/runner/work/rebno/rebno
2026-05-10T11:51:34.4559830Z > node tools/asset-catalog/scripts/lint-adr.mjs docs/adr/0004-room-hot-reload.md --no-matrix
2026-05-10T11:51:34.4560988Z 
2026-05-10T11:51:34.4857377Z OK: ADR docs/adr/0004-room-hot-reload.md validated (no-matrix mode — Michael Nygard sections present)
2026-05-10T11:51:34.4942986Z 
2026-05-10T11:51:34.4943486Z === Drizzle: emit-check ===
2026-05-10T11:51:34.4944068Z >>> pnpm db:emit-check
2026-05-10T11:51:34.7741878Z 
2026-05-10T11:51:34.7742771Z > rebno@0.0.0 db:emit-check /home/runner/work/rebno/rebno
2026-05-10T11:51:34.7745309Z > pnpm -C packages/db exec drizzle-kit generate && node -e "require('fs').copyFileSync('packages/db/migrations/0001_baseline.sql','docs/extracted-server/0001_baseline.sql')" && git diff --exit-code packages/db/migrations/0001_baseline.sql docs/extracted-server/0001_baseline.sql
2026-05-10T11:51:34.7747085Z 
2026-05-10T11:51:35.1892987Z No config path provided, using default 'drizzle.config.ts'
2026-05-10T11:51:35.1895669Z Reading config file '/home/runner/work/rebno/rebno/packages/db/drizzle.config.ts'
2026-05-10T11:51:35.5924664Z 8 tables
2026-05-10T11:51:35.5925338Z accounts 8 columns 1 indexes 0 fks
2026-05-10T11:51:35.5926112Z audit_log 6 columns 0 indexes 2 fks
2026-05-10T11:51:35.5926829Z characters 9 columns 0 indexes 1 fks
2026-05-10T11:51:35.5927524Z inventory_items 4 columns 0 indexes 1 fks
2026-05-10T11:51:35.5928273Z legacy_credentials_staging 6 columns 0 indexes 0 fks
2026-05-10T11:51:35.5929119Z message_board_replies 5 columns 0 indexes 2 fks
2026-05-10T11:51:35.5929852Z message_board_topics 7 columns 0 indexes 1 fks
2026-05-10T11:51:35.5930530Z sessions 5 columns 0 indexes 1 fks
2026-05-10T11:51:35.5930967Z 
2026-05-10T11:51:35.5931910Z No schema changes, nothing to migrate 😴
2026-05-10T11:51:36.0786056Z 
2026-05-10T11:51:36.0786799Z === Drizzle: schema-sync ===
2026-05-10T11:51:36.0787540Z >>> pnpm lint:schema-sync
2026-05-10T11:51:36.3605889Z 
2026-05-10T11:51:36.3606842Z > rebno@0.0.0 lint:schema-sync /home/runner/work/rebno/rebno
2026-05-10T11:51:36.3610156Z > node -e "const a=require('fs').readFileSync('packages/db/migrations/0001_baseline.sql');const b=require('fs').readFileSync('docs/extracted-server/0001_baseline.sql');if(Buffer.compare(a,b)!==0){console.error('docs/extracted-server/0001_baseline.sql out of sync with packages/db/migrations/0001_baseline.sql');process.exit(1)}console.log('OK')"
2026-05-10T11:51:36.3612742Z 
2026-05-10T11:51:36.3869275Z OK
2026-05-10T11:51:36.3957932Z 
2026-05-10T11:51:36.3958656Z === Drizzle: source-comments ===
2026-05-10T11:51:36.3959413Z >>> pnpm lint:source-comments
2026-05-10T11:51:36.6775319Z 
2026-05-10T11:51:36.6776055Z > rebno@0.0.0 lint:source-comments /home/runner/work/rebno/rebno
2026-05-10T11:51:36.6776524Z > pnpm -C packages/db run lint:source-comments
2026-05-10T11:51:36.6776721Z 
2026-05-10T11:51:36.9587441Z 
2026-05-10T11:51:36.9588612Z > @rebno/db@0.1.0 lint:source-comments /home/runner/work/rebno/rebno/packages/db
2026-05-10T11:51:36.9589715Z > node scripts/check-source-comments.mjs
2026-05-10T11:51:36.9590211Z 
2026-05-10T11:51:36.9883170Z check-source-comments: OK (50 columns, all SOURCE-cited)
2026-05-10T11:51:37.0042183Z 
2026-05-10T11:51:37.0042817Z === Workspace: test ===
2026-05-10T11:51:37.0043402Z >>> pnpm -r test
2026-05-10T11:51:37.2952536Z Scope: 5 of 6 workspace projects
2026-05-10T11:51:37.3001736Z packages/db test$ vitest run
2026-05-10T11:51:37.3009474Z packages/game-logic test$ vitest run
2026-05-10T11:51:37.7783948Z packages/db test: [1m[30m[46m RUN [49m[39m[22m [36mv4.1.5 [39m[90m/home/runner/work/rebno/rebno/packages/db[39m
2026-05-10T11:51:37.8312106Z packages/game-logic test: [1m[30m[46m RUN [49m[39m[22m [36mv4.1.5 [39m[90m/home/runner/work/rebno/rebno/packages/game-logic[39m
2026-05-10T11:51:38.1875120Z packages/game-logic test:  [32m✓[39m test/golden.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 11[2mms[22m[39m
2026-05-10T11:51:38.4464002Z packages/game-logic test:  [32m✓[39m test/platform-cycle.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 20[2mms[22m[39m
2026-05-10T11:51:38.6825284Z packages/game-logic test:  [32m✓[39m test/accumulator.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-10T11:51:38.7841364Z packages/db test:  [32m✓[39m tests/promotion.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 8[2mms[22m[39m
2026-05-10T11:51:38.9164167Z packages/game-logic test:  [32m✓[39m test/rng.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 8[2mms[22m[39m
2026-05-10T11:51:38.9222870Z packages/game-logic test: [2m Test Files [22m [1m[32m4 passed[39m[22m[90m (4)[39m
2026-05-10T11:51:38.9249750Z packages/game-logic test: [2m      Tests [22m [1m[32m21 passed[39m[22m[90m (21)[39m
2026-05-10T11:51:38.9252506Z packages/game-logic test: [2m   Start at [22m 11:51:37
2026-05-10T11:51:38.9277938Z packages/game-logic test: [2m   Duration [22m 1.08s[2m (transform 128ms, setup 0ms, import 233ms, tests 45ms, environment 1ms)[22m
2026-05-10T11:51:38.9630080Z packages/game-logic test: Done
2026-05-10T11:51:38.9644308Z packages/protocol test$ vitest run
2026-05-10T11:51:38.9923915Z packages/db test:  [32m✓[39m tests/save-format-traceability.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-10T11:51:39.4098705Z packages/protocol test: [1m[30m[46m RUN [49m[39m[22m [36mv4.1.5 [39m[90m/home/runner/work/rebno/rebno/packages/protocol[39m
2026-05-10T11:51:39.8187363Z packages/protocol test:  [32m✓[39m test/codec.test.ts [2m([22m[2m18 tests[22m[2m)[22m[32m 21[2mms[22m[39m
2026-05-10T11:51:39.8370258Z packages/db test:  [32m✓[39m tests/schema-shape.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 11[2mms[22m[39m
2026-05-10T11:51:39.8433175Z packages/db test: [2m Test Files [22m [1m[32m3 passed[39m[22m[90m (3)[39m
2026-05-10T11:51:39.8454055Z packages/db test: [2m      Tests [22m [1m[32m22 passed[39m[22m[90m (22)[39m
2026-05-10T11:51:39.8461901Z packages/db test: [2m   Start at [22m 11:51:37
2026-05-10T11:51:39.8465700Z packages/db test: [2m   Duration [22m 2.05s[2m (transform 140ms, setup 0ms, import 1.48s, tests 26ms, environment 0ms)[22m
2026-05-10T11:51:39.8637924Z packages/db test: Done
2026-05-10T11:51:39.9849340Z packages/protocol test:  [32m✓[39m test/intents.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 6[2mms[22m[39m
2026-05-10T11:51:40.1384606Z packages/protocol test:  [32m✓[39m test/schema-shape.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 4[2mms[22m[39m
2026-05-10T11:51:40.2952488Z packages/protocol test:  [32m✓[39m test/state.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 4[2mms[22m[39m
2026-05-10T11:51:40.2983298Z packages/protocol test: [2m Test Files [22m [1m[32m4 passed[39m[22m[90m (4)[39m
2026-05-10T11:51:40.2984867Z packages/protocol test: [2m      Tests [22m [1m[32m30 passed[39m[22m[90m (30)[39m
2026-05-10T11:51:40.2985990Z packages/protocol test: [2m   Start at [22m 11:51:39
2026-05-10T11:51:40.2987529Z packages/protocol test: [2m   Duration [22m 879ms[2m (transform 143ms, setup 0ms, import 261ms, tests 35ms, environment 0ms)[22m
2026-05-10T11:51:40.3305538Z packages/protocol test: Done
2026-05-10T11:51:40.3311728Z apps/server test$ vitest run --exclude 'test/**/*.integ.test.ts'
2026-05-10T11:51:40.3322562Z apps/client test$ vitest run --exclude 'test/e2e/**'
2026-05-10T11:51:40.8133520Z apps/server test: [1m[30m[46m RUN [49m[39m[22m [36mv4.1.5 [39m[90m/home/runner/work/rebno/rebno/apps/server[39m
2026-05-10T11:51:40.9213691Z apps/client test: [1m[46m RUN [49m[22m [36mv3.2.4 [39m[90m/home/runner/work/rebno/rebno/apps/client[39m
2026-05-10T11:51:42.0196968Z apps/server test:  [32m✓[39m test/persistence.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 118[2mms[22m[39m
2026-05-10T11:51:42.2837089Z apps/server test:  [32m✓[39m test/rate-limit.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 10[2mms[22m[39m
2026-05-10T11:51:42.3513849Z apps/client test: [90mstderr[2m | src/__test__/game-scene.test.ts[2m > [22m[2mscenes/GameScene[2m > [22m[2mtest 5: onRoomLayout calls verifyRoomLayout first; render skipped on false
2026-05-10T11:51:42.3529640Z apps/client test: [22m[39mroom_layout signature did not verify — rendering skipped for mvp-lobby 000
2026-05-10T11:51:42.3635311Z apps/client test:  [32m✓[39m src/__test__/game-scene.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 163[2mms[22m[39m
2026-05-10T11:51:42.5528588Z apps/server test:  [32m✓[39m test/room-key.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 23[2mms[22m[39m
2026-05-10T11:51:42.8213512Z apps/server test: {"level":40,"time":1778413902816,"pid":3240,"hostname":"runnervmeorf1","path":"/api/foo","msg":"staging_invite_rejected"}
2026-05-10T11:51:42.8253367Z apps/server test:  [32m✓[39m test/staging-invite.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 12[2mms[22m[39m
2026-05-10T11:51:42.8313010Z apps/server test: {"level":40,"time":1778413902820,"pid":3240,"hostname":"runnervmeorf1","path":"/api/foo","msg":"staging_invite_rejected"}
2026-05-10T11:51:42.8353232Z apps/server test: {"level":40,"time":1778413902821,"pid":3240,"hostname":"runnervmeorf1","path":"/api/foo","msg":"staging_invite_rejected"}
2026-05-10T11:51:43.4909427Z apps/client test:  [32m✓[39m src/__test__/login-scene.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 15[2mms[22m[39m
2026-05-10T11:51:43.6615203Z apps/server test: {"level":30,"time":1778413903659,"pid":3251,"hostname":"runnervmeorf1","password":"[Redacted]","session_token":"[Redacted]","msg":"login"}
2026-05-10T11:51:43.6645213Z apps/server test:  [32m✓[39m test/otel-init.test.ts [2m([22m[2m4 tests[22m[2m)[22m[33m 628[2mms[22m[39m
2026-05-10T11:51:43.6676199Z apps/server test:      [33m[2m✓[22m[39m does not throw when OTEL_EXPORTER_OTLP_ENDPOINT is unset [33m 498[2mms[22m[39m
2026-05-10T11:51:44.6305079Z apps/client test:  [32m✓[39m src/__test__/colyseus-client.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 14[2mms[22m[39m
2026-05-10T11:51:44.6457075Z apps/server test: [90mstdout[2m | test/run-migrations.test.ts[2m > [22m[2mrun-migrations.ts (Plan 12)[2m > [22m[2mScenario 1: fresh DB — migrate creates accounts table and records migration row
2026-05-10T11:51:44.6488963Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-sg6E3j/rebno.db
2026-05-10T11:51:44.6490772Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-10T11:51:44.6491939Z apps/server test: [run-migrations] OK
2026-05-10T11:51:44.6710616Z apps/server test: [90mstdout[2m | test/run-migrations.test.ts[2m > [22m[2mrun-migrations.ts (Plan 12)[2m > [22m[2mScenario 2: pre-bootstrapped DB (Assumption A7) — reconcile seeds row before migrate runs
2026-05-10T11:51:44.6723253Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-Aehv7B/rebno.db
2026-05-10T11:51:44.6729224Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-10T11:51:44.6737814Z apps/server test: [run-migrations] reconciled __drizzle_migrations for pre-bootstrap DB (Assumption A7) — seeded 0001_baseline
2026-05-10T11:51:44.6739409Z apps/server test: [run-migrations] OK
2026-05-10T11:51:44.6803764Z apps/server test: [90mstdout[2m | test/run-migrations.test.ts[2m > [22m[2mrun-migrations.ts (Plan 12)[2m > [22m[2mScenario 3: idempotent second run — no error, no extra rows
2026-05-10T11:51:44.6822932Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-LpYHT9/rebno.db
2026-05-10T11:51:44.6830738Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-10T11:51:44.6832291Z apps/server test: [run-migrations] OK
2026-05-10T11:51:44.6835650Z apps/server test: [90mstdout[2m | test/run-migrations.test.ts[2m > [22m[2mrun-migrations.ts (Plan 12)[2m > [22m[2mScenario 3: idempotent second run — no error, no extra rows
2026-05-10T11:51:44.6838215Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-LpYHT9/rebno.db
2026-05-10T11:51:44.6839797Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-10T11:51:44.6842012Z apps/server test: [run-migrations] OK
2026-05-10T11:51:44.6896380Z apps/server test:  [32m✓[39m test/run-migrations.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 61[2mms[22m[39m
2026-05-10T11:51:44.9617002Z apps/server test:  [32m✓[39m test/log.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 19[2mms[22m[39m
2026-05-10T11:51:45.1705950Z apps/server test:  [32m✓[39m test/admin-stubs.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 8[2mms[22m[39m
2026-05-10T11:51:45.4563684Z apps/server test:  [32m✓[39m test/legacy-login.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 27[2mms[22m[39m
2026-05-10T11:51:45.6645807Z apps/server test:  [32m✓[39m test/health.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-10T11:51:45.7273639Z apps/client test:  [32m✓[39m src/__test__/reconnect.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 95[2mms[22m[39m
2026-05-10T11:51:46.4456576Z apps/server test: [90mstdout[2m | test/tick-accumulator.test.ts
2026-05-10T11:51:46.4473408Z apps/server test: [22m[39m◇ injected env (50) from ../../../../../../../etc/environment // tip: ⌘ custom filepath { path: '/custom/path/.env' }
2026-05-10T11:51:46.4484307Z apps/server test: ℹ️  optional .env file not found: .env.test, .env
2026-05-10T11:51:46.9224658Z apps/client test:  [32m✓[39m src/__test__/chat-hud.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 131[2mms[22m[39m
2026-05-10T11:51:47.1499381Z apps/server test:  [32m✓[39m test/tick-accumulator.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 8[2mms[22m[39m
2026-05-10T11:51:47.1613620Z apps/server test: [2m Test Files [22m [1m[32m11 passed[39m[22m[90m (11)[39m
2026-05-10T11:51:47.1617405Z apps/server test: [2m      Tests [22m [1m[32m61 passed[39m[22m[90m (61)[39m
2026-05-10T11:51:47.1618575Z apps/server test: [2m   Start at [22m 11:51:40
2026-05-10T11:51:47.1619996Z apps/server test: [2m   Duration [22m 6.34s[2m (transform 407ms, setup 0ms, import 3.26s, tests 920ms, environment 2ms)[22m
2026-05-10T11:51:47.1962873Z apps/server test: Done
2026-05-10T11:51:47.6218533Z apps/client test:  [32m✓[39m src/__test__/input-dispatcher.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 13[2mms[22m[39m
2026-05-10T11:51:48.2823714Z apps/client test:  [32m✓[39m src/__test__/force-reset-overlay.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 70[2mms[22m[39m
2026-05-10T11:51:48.8868620Z apps/client test:  [32m✓[39m src/__test__/prediction.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 5[2mms[22m[39m
2026-05-10T11:51:49.5075783Z apps/client test:  [32m✓[39m src/__test__/extrapolation.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 4[2mms[22m[39m
2026-05-10T11:51:50.1161057Z apps/client test:  [32m✓[39m src/__test__/reconciler.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 5[2mms[22m[39m
2026-05-10T11:51:50.7204476Z apps/client test:  [32m✓[39m src/__test__/nameplate.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 23[2mms[22m[39m
2026-05-10T11:51:51.3164976Z apps/client test:  [32m✓[39m src/__test__/room-layout-verify.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 8[2mms[22m[39m
2026-05-10T11:51:51.9150689Z apps/client test:  [32m✓[39m src/__test__/auth-client.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 6[2mms[22m[39m
2026-05-10T11:51:52.5078812Z apps/client test:  [32m✓[39m src/__test__/atlas-loader.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-10T11:51:53.0825667Z apps/client test:  [32m✓[39m src/__test__/protocol-version-check.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 4[2mms[22m[39m
2026-05-10T11:51:53.6841200Z apps/client test:  [32m✓[39m src/__test__/env.test.ts [2m([22m[2m5 tests[22m[2m | [22m[33m4 skipped[39m[2m)[22m[32m 4[2mms[22m[39m
2026-05-10T11:51:53.7013507Z apps/client test: [2m Test Files [22m [1m[32m16 passed[39m[22m[90m (16)[39m
2026-05-10T11:51:53.7036139Z apps/client test: [2m      Tests [22m [1m[32m98 passed[39m[22m[2m | [22m[90m4 todo[39m[90m (102)[39m
2026-05-10T11:51:53.7037486Z apps/client test: [2m   Start at [22m 11:51:40
2026-05-10T11:51:53.7039317Z apps/client test: [2m   Duration [22m 12.78s[2m (transform 523ms, setup 46ms, collect 802ms, tests 567ms, environment 7.26s, prepare 1.50s)[22m
2026-05-10T11:51:53.8272398Z apps/client test: Done
2026-05-10T11:51:53.8330542Z 
2026-05-10T11:51:53.8331424Z verify-phase-4: OK (12 steps green)
2026-05-10T11:51:53.8459948Z ##[group]Run pnpm verify:phase-5
2026-05-10T11:51:53.8460235Z [36;1mpnpm verify:phase-5[0m
2026-05-10T11:51:53.8473727Z shell: /usr/bin/bash -e {0}
2026-05-10T11:51:53.8473974Z env:
2026-05-10T11:51:53.8474218Z   PNPM_HOME: /home/runner/setup-pnpm/node_modules/.bin
2026-05-10T11:51:53.8474507Z   SKIP_PHASE_3_CARRYOVER: 1
2026-05-10T11:51:53.8474722Z   SKIP_TRACE_CHECK: 1
2026-05-10T11:51:53.8474921Z ##[endgroup]
2026-05-10T11:51:54.1274825Z 
2026-05-10T11:51:54.1275860Z > rebno@0.0.0 verify:phase-5 /home/runner/work/rebno/rebno
2026-05-10T11:51:54.1276901Z > node scripts/verify-phase-5.mjs
2026-05-10T11:51:54.1277409Z 
2026-05-10T11:51:54.1573857Z 
2026-05-10T11:51:54.1574686Z === Phase 4 carry-over: verify-phase-4 ===
2026-05-10T11:51:54.1575514Z >>> pnpm verify:phase-4
2026-05-10T11:51:54.4628621Z 
2026-05-10T11:51:54.4629618Z > rebno@0.0.0 verify:phase-4 /home/runner/work/rebno/rebno
2026-05-10T11:51:54.4630551Z > node scripts/verify-phase-4.mjs
2026-05-10T11:51:54.4631083Z 
2026-05-10T11:51:54.4911987Z 
2026-05-10T11:51:54.4912880Z === Workspace: typecheck ===
2026-05-10T11:51:54.4913567Z >>> pnpm -r typecheck
2026-05-10T11:51:54.8331720Z Scope: 5 of 6 workspace projects
2026-05-10T11:51:54.8381659Z packages/db typecheck$ tsc --noEmit
2026-05-10T11:51:54.8389799Z packages/game-logic typecheck$ tsc --noEmit
2026-05-10T11:51:57.1917883Z packages/game-logic typecheck: Done
2026-05-10T11:51:57.1935633Z packages/protocol typecheck$ tsc --noEmit
2026-05-10T11:51:59.2603598Z packages/db typecheck: Done
2026-05-10T11:52:00.5531468Z packages/protocol typecheck: Done
2026-05-10T11:52:00.5537745Z apps/client typecheck$ tsc --noEmit
2026-05-10T11:52:00.5539995Z apps/server typecheck$ tsc --noEmit
2026-05-10T11:52:11.3069023Z apps/client typecheck: Done
2026-05-10T11:52:12.1996199Z apps/server typecheck: Done
2026-05-10T11:52:12.2067593Z 
2026-05-10T11:52:12.2068330Z === Lint: protocol-sync ===
2026-05-10T11:52:12.2069041Z >>> pnpm lint:protocol-sync
2026-05-10T11:52:12.4922311Z 
2026-05-10T11:52:12.4923390Z > rebno@0.0.0 lint:protocol-sync /home/runner/work/rebno/rebno
2026-05-10T11:52:12.4924329Z > node tools/scripts/lint-protocol-sync.mjs
2026-05-10T11:52:12.4924839Z 
2026-05-10T11:52:12.5226961Z lint-protocol-sync: OK
2026-05-10T11:52:12.5330951Z 
2026-05-10T11:52:12.5332780Z === Lint: game-logic-purity ===
2026-05-10T11:52:12.5333260Z >>> pnpm lint:game-logic-purity
2026-05-10T11:52:12.8342522Z 
2026-05-10T11:52:12.8343542Z > rebno@0.0.0 lint:game-logic-purity /home/runner/work/rebno/rebno
2026-05-10T11:52:12.8344648Z > node tools/scripts/lint-game-logic-purity.mjs
2026-05-10T11:52:12.8345143Z 
2026-05-10T11:52:12.8636879Z lint-game-logic-purity: OK (6 file(s) clean)
2026-05-10T11:52:12.8733233Z 
2026-05-10T11:52:12.8733879Z === Lint: better-auth-schema-sync ===
2026-05-10T11:52:12.8734491Z >>> pnpm lint:better-auth-schema-sync
2026-05-10T11:52:13.1615933Z 
2026-05-10T11:52:13.1617115Z > rebno@0.0.0 lint:better-auth-schema-sync /home/runner/work/rebno/rebno
2026-05-10T11:52:13.1618234Z > node tools/scripts/lint-better-auth-schema-sync.mjs
2026-05-10T11:52:13.1618774Z 
2026-05-10T11:52:14.5274467Z lint-better-auth-schema-sync: OK
2026-05-10T11:52:14.5368181Z 
2026-05-10T11:52:14.5377754Z === Lint: rate-limit-budgets ===
2026-05-10T11:52:14.5379625Z >>> pnpm lint:rate-limit-budgets
2026-05-10T11:52:14.8247556Z 
2026-05-10T11:52:14.8248558Z > rebno@0.0.0 lint:rate-limit-budgets /home/runner/work/rebno/rebno
2026-05-10T11:52:14.8249632Z > node tools/scripts/lint-rate-limit-budgets.mjs
2026-05-10T11:52:14.8250651Z 
2026-05-10T11:52:14.8548270Z lint-rate-limit-budgets: OK (5 D-22 budgets locked)
2026-05-10T11:52:14.8643953Z 
2026-05-10T11:52:14.8653390Z === Lint: no-clipboard-rce ===
2026-05-10T11:52:14.8655246Z >>> pnpm lint:no-clipboard-rce
2026-05-10T11:52:15.1484421Z 
2026-05-10T11:52:15.1485408Z > rebno@0.0.0 lint:no-clipboard-rce /home/runner/work/rebno/rebno
2026-05-10T11:52:15.1486593Z > node tools/scripts/lint-no-clipboard-rce.mjs
2026-05-10T11:52:15.1487143Z 
2026-05-10T11:52:15.1823128Z lint-no-clipboard-rce: OK (21 file(s) clean)
2026-05-10T11:52:15.1922469Z 
2026-05-10T11:52:15.1933443Z === Lint: room-layout ===
2026-05-10T11:52:15.1942415Z >>> pnpm lint:room-layout
2026-05-10T11:52:15.4883716Z 
2026-05-10T11:52:15.4884673Z > rebno@0.0.0 lint:room-layout /home/runner/work/rebno/rebno
2026-05-10T11:52:15.4885620Z > node tools/scripts/lint-room-layout.mjs
2026-05-10T11:52:15.4886174Z 
2026-05-10T11:52:15.5245660Z lint-room-layout: OK
2026-05-10T11:52:15.5332637Z 
2026-05-10T11:52:15.5333397Z === ADR 0004 lint ===
2026-05-10T11:52:15.5334040Z >>> pnpm lint:adr:0004
2026-05-10T11:52:15.8232506Z 
2026-05-10T11:52:15.8245389Z > rebno@0.0.0 lint:adr:0004 /home/runner/work/rebno/rebno
2026-05-10T11:52:15.8246900Z > node tools/asset-catalog/scripts/lint-adr.mjs docs/adr/0004-room-hot-reload.md --no-matrix
2026-05-10T11:52:15.8247439Z 
2026-05-10T11:52:15.8520683Z OK: ADR docs/adr/0004-room-hot-reload.md validated (no-matrix mode — Michael Nygard sections present)
2026-05-10T11:52:15.8617194Z 
2026-05-10T11:52:15.8626923Z === Drizzle: emit-check ===
2026-05-10T11:52:15.8628758Z >>> pnpm db:emit-check
2026-05-10T11:52:16.1517055Z 
2026-05-10T11:52:16.1523148Z > rebno@0.0.0 db:emit-check /home/runner/work/rebno/rebno
2026-05-10T11:52:16.1525658Z > pnpm -C packages/db exec drizzle-kit generate && node -e "require('fs').copyFileSync('packages/db/migrations/0001_baseline.sql','docs/extracted-server/0001_baseline.sql')" && git diff --exit-code packages/db/migrations/0001_baseline.sql docs/extracted-server/0001_baseline.sql
2026-05-10T11:52:16.1527646Z 
2026-05-10T11:52:16.5766161Z No config path provided, using default 'drizzle.config.ts'
2026-05-10T11:52:16.5768906Z Reading config file '/home/runner/work/rebno/rebno/packages/db/drizzle.config.ts'
2026-05-10T11:52:16.9173447Z 8 tables
2026-05-10T11:52:16.9174105Z accounts 8 columns 1 indexes 0 fks
2026-05-10T11:52:16.9234524Z audit_log 6 columns 0 indexes 2 fks
2026-05-10T11:52:16.9260826Z characters 9 columns 0 indexes 1 fks
2026-05-10T11:52:16.9268054Z inventory_items 4 columns 0 indexes 1 fks
2026-05-10T11:52:16.9362504Z legacy_credentials_staging 6 columns 0 indexes 0 fks
2026-05-10T11:52:16.9364448Z message_board_replies 5 columns 0 indexes 2 fks
2026-05-10T11:52:16.9365075Z message_board_topics 7 columns 0 indexes 1 fks
2026-05-10T11:52:16.9365725Z sessions 5 columns 0 indexes 1 fks
2026-05-10T11:52:16.9371815Z 
2026-05-10T11:52:16.9372710Z No schema changes, nothing to migrate 😴
2026-05-10T11:52:17.0107341Z 
2026-05-10T11:52:17.0108066Z === Drizzle: schema-sync ===
2026-05-10T11:52:17.0109003Z >>> pnpm lint:schema-sync
2026-05-10T11:52:17.2979622Z 
2026-05-10T11:52:17.2980700Z > rebno@0.0.0 lint:schema-sync /home/runner/work/rebno/rebno
2026-05-10T11:52:17.2983925Z > node -e "const a=require('fs').readFileSync('packages/db/migrations/0001_baseline.sql');const b=require('fs').readFileSync('docs/extracted-server/0001_baseline.sql');if(Buffer.compare(a,b)!==0){console.error('docs/extracted-server/0001_baseline.sql out of sync with packages/db/migrations/0001_baseline.sql');process.exit(1)}console.log('OK')"
2026-05-10T11:52:17.2986191Z 
2026-05-10T11:52:17.3239420Z OK
2026-05-10T11:52:17.3342890Z 
2026-05-10T11:52:17.3343417Z === Drizzle: source-comments ===
2026-05-10T11:52:17.3345335Z >>> pnpm lint:source-comments
2026-05-10T11:52:17.6222360Z 
2026-05-10T11:52:17.6223315Z > rebno@0.0.0 lint:source-comments /home/runner/work/rebno/rebno
2026-05-10T11:52:17.6224336Z > pnpm -C packages/db run lint:source-comments
2026-05-10T11:52:17.6224929Z 
2026-05-10T11:52:17.9118251Z 
2026-05-10T11:52:17.9119317Z > @rebno/db@0.1.0 lint:source-comments /home/runner/work/rebno/rebno/packages/db
2026-05-10T11:52:17.9120368Z > node scripts/check-source-comments.mjs
2026-05-10T11:52:17.9120912Z 
2026-05-10T11:52:17.9428932Z check-source-comments: OK (50 columns, all SOURCE-cited)
2026-05-10T11:52:17.9582108Z 
2026-05-10T11:52:17.9582832Z === Workspace: test ===
2026-05-10T11:52:17.9583440Z >>> pnpm -r test
2026-05-10T11:52:18.2516638Z Scope: 5 of 6 workspace projects
2026-05-10T11:52:18.2566923Z packages/game-logic test$ vitest run
2026-05-10T11:52:18.2575136Z packages/db test$ vitest run
2026-05-10T11:52:18.7468225Z packages/game-logic test: [1m[30m[46m RUN [49m[39m[22m [36mv4.1.5 [39m[90m/home/runner/work/rebno/rebno/packages/game-logic[39m
2026-05-10T11:52:18.8383657Z packages/db test: [1m[30m[46m RUN [49m[39m[22m [36mv4.1.5 [39m[90m/home/runner/work/rebno/rebno/packages/db[39m
2026-05-10T11:52:19.0533780Z packages/game-logic test:  [32m✓[39m test/platform-cycle.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 22[2mms[22m[39m
2026-05-10T11:52:19.3683476Z packages/game-logic test:  [32m✓[39m test/golden.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 10[2mms[22m[39m
2026-05-10T11:52:19.6063562Z packages/game-logic test:  [32m✓[39m test/rng.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 13[2mms[22m[39m
2026-05-10T11:52:19.7903774Z packages/db test:  [32m✓[39m tests/schema-shape.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 12[2mms[22m[39m
2026-05-10T11:52:19.8398642Z packages/game-logic test:  [32m✓[39m test/accumulator.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-10T11:52:19.8493258Z packages/game-logic test: [2m Test Files [22m [1m[32m4 passed[39m[22m[90m (4)[39m
2026-05-10T11:52:19.8543345Z packages/game-logic test: [2m      Tests [22m [1m[32m21 passed[39m[22m[90m (21)[39m
2026-05-10T11:52:19.8544448Z packages/game-logic test: [2m   Start at [22m 11:52:18
2026-05-10T11:52:19.8557202Z packages/game-logic test: [2m   Duration [22m 1.09s[2m (transform 132ms, setup 0ms, import 219ms, tests 52ms, environment 1ms)[22m
2026-05-10T11:52:19.8842844Z packages/game-logic test: Done
2026-05-10T11:52:19.8849869Z packages/protocol test$ vitest run
2026-05-10T11:52:20.4228602Z packages/protocol test: [1m[30m[46m RUN [49m[39m[22m [36mv4.1.5 [39m[90m/home/runner/work/rebno/rebno/packages/protocol[39m
2026-05-10T11:52:20.5890161Z packages/db test:  [32m✓[39m tests/promotion.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 8[2mms[22m[39m
2026-05-10T11:52:20.8293678Z packages/protocol test:  [32m✓[39m test/codec.test.ts [2m([22m[2m18 tests[22m[2m)[22m[32m 21[2mms[22m[39m
2026-05-10T11:52:20.8471702Z packages/db test:  [32m✓[39m tests/save-format-traceability.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 9[2mms[22m[39m
2026-05-10T11:52:20.8614268Z packages/db test: [2m Test Files [22m [1m[32m3 passed[39m[22m[90m (3)[39m
2026-05-10T11:52:20.8639992Z packages/db test: [2m      Tests [22m [1m[32m22 passed[39m[22m[90m (22)[39m
2026-05-10T11:52:20.8662767Z packages/db test: [2m   Start at [22m 11:52:18
2026-05-10T11:52:20.8665966Z packages/db test: [2m   Duration [22m 2.01s[2m (transform 165ms, setup 0ms, import 1.38s, tests 30ms, environment 0ms)[22m
2026-05-10T11:52:20.8815713Z packages/db test: Done
2026-05-10T11:52:21.0093883Z packages/protocol test:  [32m✓[39m test/intents.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 6[2mms[22m[39m
2026-05-10T11:52:21.1829537Z packages/protocol test:  [32m✓[39m test/schema-shape.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 5[2mms[22m[39m
2026-05-10T11:52:21.3226595Z packages/protocol test:  [32m✓[39m test/state.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 4[2mms[22m[39m
2026-05-10T11:52:21.3275013Z packages/protocol test: [2m Test Files [22m [1m[32m4 passed[39m[22m[90m (4)[39m
2026-05-10T11:52:21.3289535Z packages/protocol test: [2m      Tests [22m [1m[32m30 passed[39m[22m[90m (30)[39m
2026-05-10T11:52:21.3294569Z packages/protocol test: [2m   Start at [22m 11:52:20
2026-05-10T11:52:21.3295967Z packages/protocol test: [2m   Duration [22m 894ms[2m (transform 130ms, setup 0ms, import 260ms, tests 35ms, environment 0ms)[22m
2026-05-10T11:52:21.3587429Z packages/protocol test: Done
2026-05-10T11:52:21.3593288Z apps/client test$ vitest run --exclude 'test/e2e/**'
2026-05-10T11:52:21.3595643Z apps/server test$ vitest run --exclude 'test/**/*.integ.test.ts'
2026-05-10T11:52:21.9213993Z apps/server test: [1m[30m[46m RUN [49m[39m[22m [36mv4.1.5 [39m[90m/home/runner/work/rebno/rebno/apps/server[39m
2026-05-10T11:52:21.9243122Z apps/client test: [1m[46m RUN [49m[22m [36mv3.2.4 [39m[90m/home/runner/work/rebno/rebno/apps/client[39m
2026-05-10T11:52:22.9165259Z apps/server test: {"level":30,"time":1778413942912,"pid":4383,"hostname":"runnervmeorf1","password":"[Redacted]","session_token":"[Redacted]","msg":"login"}
2026-05-10T11:52:22.9208806Z apps/server test:  [32m✓[39m test/otel-init.test.ts [2m([22m[2m4 tests[22m[2m)[22m[33m 712[2mms[22m[39m
2026-05-10T11:52:22.9223401Z apps/server test:      [33m[2m✓[22m[39m does not throw when OTEL_EXPORTER_OTLP_ENDPOINT is unset [33m 563[2mms[22m[39m
2026-05-10T11:52:23.5094045Z apps/client test: [90mstderr[2m | src/__test__/game-scene.test.ts[2m > [22m[2mscenes/GameScene[2m > [22m[2mtest 5: onRoomLayout calls verifyRoomLayout first; render skipped on false
2026-05-10T11:52:23.5096316Z apps/client test: [22m[39mroom_layout signature did not verify — rendering skipped for mvp-lobby 000
2026-05-10T11:52:23.5182635Z apps/client test:  [32m✓[39m src/__test__/game-scene.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 169[2mms[22m[39m
2026-05-10T11:52:24.0584076Z apps/server test:  [32m✓[39m test/persistence.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 48[2mms[22m[39m
2026-05-10T11:52:24.6736971Z apps/client test:  [32m✓[39m src/__test__/chat-hud.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 123[2mms[22m[39m
2026-05-10T11:52:25.0064760Z apps/server test: [90mstdout[2m | test/run-migrations.test.ts[2m > [22m[2mrun-migrations.ts (Plan 12)[2m > [22m[2mScenario 1: fresh DB — migrate creates accounts table and records migration row
2026-05-10T11:52:25.0083386Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-fM0p9z/rebno.db
2026-05-10T11:52:25.0091378Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-10T11:52:25.0093524Z apps/server test: [run-migrations] OK
2026-05-10T11:52:25.0198781Z apps/server test: [90mstdout[2m | test/run-migrations.test.ts[2m > [22m[2mrun-migrations.ts (Plan 12)[2m > [22m[2mScenario 2: pre-bootstrapped DB (Assumption A7) — reconcile seeds row before migrate runs
2026-05-10T11:52:25.0202687Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-H0yrHa/rebno.db
2026-05-10T11:52:25.0204492Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-10T11:52:25.0206648Z apps/server test: [run-migrations] reconciled __drizzle_migrations for pre-bootstrap DB (Assumption A7) — seeded 0001_baseline
2026-05-10T11:52:25.0208372Z apps/server test: [run-migrations] OK
2026-05-10T11:52:25.0256587Z apps/server test: [90mstdout[2m | test/run-migrations.test.ts[2m > [22m[2mrun-migrations.ts (Plan 12)[2m > [22m[2mScenario 3: idempotent second run — no error, no extra rows
2026-05-10T11:52:25.0273125Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-CBm2tj/rebno.db
2026-05-10T11:52:25.0292626Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-10T11:52:25.0299571Z apps/server test: [run-migrations] OK
2026-05-10T11:52:25.0302103Z apps/server test: [90mstdout[2m | test/run-migrations.test.ts[2m > [22m[2mrun-migrations.ts (Plan 12)[2m > [22m[2mScenario 3: idempotent second run — no error, no extra rows
2026-05-10T11:52:25.0310610Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-CBm2tj/rebno.db
2026-05-10T11:52:25.0313125Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-10T11:52:25.0314563Z apps/server test: [run-migrations] OK
2026-05-10T11:52:25.0392550Z apps/server test:  [32m✓[39m test/run-migrations.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 51[2mms[22m[39m
2026-05-10T11:52:25.3078227Z apps/server test:  [32m✓[39m test/legacy-login.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 23[2mms[22m[39m
2026-05-10T11:52:25.5705070Z apps/server test:  [32m✓[39m test/room-key.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 21[2mms[22m[39m
2026-05-10T11:52:25.7602752Z apps/client test:  [32m✓[39m src/__test__/reconnect.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 102[2mms[22m[39m
2026-05-10T11:52:25.8432274Z apps/server test:  [32m✓[39m test/log.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 15[2mms[22m[39m
2026-05-10T11:52:26.1649403Z apps/server test: {"level":40,"time":1778413946160,"pid":4507,"hostname":"runnervmeorf1","path":"/api/foo","msg":"staging_invite_rejected"}
2026-05-10T11:52:26.1712092Z apps/server test:  [32m✓[39m test/staging-invite.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 18[2mms[22m[39m
2026-05-10T11:52:26.1833564Z apps/server test: {"level":40,"time":1778413946164,"pid":4507,"hostname":"runnervmeorf1","path":"/api/foo","msg":"staging_invite_rejected"}
2026-05-10T11:52:26.1883269Z apps/server test: {"level":40,"time":1778413946165,"pid":4507,"hostname":"runnervmeorf1","path":"/api/foo","msg":"staging_invite_rejected"}
2026-05-10T11:52:26.4181355Z apps/server test:  [32m✓[39m test/rate-limit.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 10[2mms[22m[39m
2026-05-10T11:52:26.6373455Z apps/server test:  [32m✓[39m test/admin-stubs.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 8[2mms[22m[39m
2026-05-10T11:52:26.8903833Z apps/client test:  [32m✓[39m src/__test__/force-reset-overlay.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 125[2mms[22m[39m
2026-05-10T11:52:27.4662467Z apps/server test: [90mstdout[2m | test/tick-accumulator.test.ts
2026-05-10T11:52:27.4678050Z apps/server test: [22m[39m◇ injected env (50) from ../../../../../../../etc/environment // tip: ⌁ auth for agents [www.vestauth.com]
2026-05-10T11:52:27.4695048Z apps/server test: ℹ️  optional .env file not found: .env.test, .env
2026-05-10T11:52:28.0652930Z apps/client test:  [32m✓[39m src/__test__/nameplate.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 35[2mms[22m[39m
2026-05-10T11:52:28.2033524Z apps/server test:  [32m✓[39m test/tick-accumulator.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-10T11:52:28.4374826Z apps/server test:  [32m✓[39m test/health.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 14[2mms[22m[39m
2026-05-10T11:52:28.4519253Z apps/server test: [2m Test Files [22m [1m[32m11 passed[39m[22m[90m (11)[39m
2026-05-10T11:52:28.4543031Z apps/server test: [2m      Tests [22m [1m[32m61 passed[39m[22m[90m (61)[39m
2026-05-10T11:52:28.4544027Z apps/server test: [2m   Start at [22m 11:52:21
2026-05-10T11:52:28.4552524Z apps/server test: [2m   Duration [22m 6.52s[2m (transform 497ms, setup 0ms, import 3.37s, tests 927ms, environment 2ms)[22m
2026-05-10T11:52:28.4815461Z apps/server test: Done
2026-05-10T11:52:28.8481657Z apps/client test:  [32m✓[39m src/__test__/login-scene.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 9[2mms[22m[39m
2026-05-10T11:52:29.5642157Z apps/client test:  [32m✓[39m src/__test__/colyseus-client.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 9[2mms[22m[39m
2026-05-10T11:52:30.2015066Z apps/client test:  [32m✓[39m src/__test__/input-dispatcher.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 13[2mms[22m[39m
2026-05-10T11:52:30.7957562Z apps/client test:  [32m✓[39m src/__test__/room-layout-verify.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 8[2mms[22m[39m
2026-05-10T11:52:31.3845075Z apps/client test:  [32m✓[39m src/__test__/atlas-loader.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-10T11:52:31.9704518Z apps/client test:  [32m✓[39m src/__test__/auth-client.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 6[2mms[22m[39m
2026-05-10T11:52:32.5812778Z apps/client test:  [32m✓[39m src/__test__/reconciler.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 5[2mms[22m[39m
2026-05-10T11:52:33.1851340Z apps/client test:  [32m✓[39m src/__test__/prediction.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 5[2mms[22m[39m
2026-05-10T11:52:33.7623635Z apps/client test:  [32m✓[39m src/__test__/protocol-version-check.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 4[2mms[22m[39m
2026-05-10T11:52:34.3576757Z apps/client test:  [32m✓[39m src/__test__/extrapolation.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 4[2mms[22m[39m
2026-05-10T11:52:34.9606774Z apps/client test:  [32m✓[39m src/__test__/env.test.ts [2m([22m[2m5 tests[22m[2m | [22m[33m4 skipped[39m[2m)[22m[32m 4[2mms[22m[39m
2026-05-10T11:52:34.9778184Z apps/client test: [2m Test Files [22m [1m[32m16 passed[39m[22m[90m (16)[39m
2026-05-10T11:52:34.9779635Z apps/client test: [2m      Tests [22m [1m[32m98 passed[39m[22m[2m | [22m[90m4 todo[39m[90m (102)[39m
2026-05-10T11:52:34.9786352Z apps/client test: [2m   Start at [22m 11:52:21
2026-05-10T11:52:34.9787990Z apps/client test: [2m   Duration [22m 13.05s[2m (transform 526ms, setup 59ms, collect 803ms, tests 628ms, environment 7.35s, prepare 1.47s)[22m
2026-05-10T11:52:35.0990171Z apps/client test: Done
2026-05-10T11:52:35.1055671Z 
2026-05-10T11:52:35.1056096Z verify-phase-4: OK (12 steps green)
2026-05-10T11:52:35.1144421Z 
2026-05-10T11:52:35.1145010Z === Workspace: typecheck ===
2026-05-10T11:52:35.1145754Z >>> pnpm -r typecheck
2026-05-10T11:52:35.4013040Z Scope: 5 of 6 workspace projects
2026-05-10T11:52:35.4062433Z packages/db typecheck$ tsc --noEmit
2026-05-10T11:52:35.4070620Z packages/game-logic typecheck$ tsc --noEmit
2026-05-10T11:52:37.8412641Z packages/game-logic typecheck: Done
2026-05-10T11:52:37.8432409Z packages/protocol typecheck$ tsc --noEmit
2026-05-10T11:52:39.8258788Z packages/db typecheck: Done
2026-05-10T11:52:41.0619374Z packages/protocol typecheck: Done
2026-05-10T11:52:41.0626213Z apps/server typecheck$ tsc --noEmit
2026-05-10T11:52:41.0628788Z apps/client typecheck$ tsc --noEmit
2026-05-10T11:52:51.6318159Z apps/client typecheck: Done
2026-05-10T11:52:52.4183253Z apps/server typecheck: Done
2026-05-10T11:52:52.4256764Z 
2026-05-10T11:52:52.4257437Z === Lint: deploy-stack ===
2026-05-10T11:52:52.4258095Z >>> pnpm lint:deploy-stack
2026-05-10T11:52:52.7063685Z 
2026-05-10T11:52:52.7064663Z > rebno@0.0.0 lint:deploy-stack /home/runner/work/rebno/rebno
2026-05-10T11:52:52.7065760Z > node tools/scripts/lint-deploy-stack.mjs
2026-05-10T11:52:52.7066318Z 
2026-05-10T11:52:52.7354867Z lint-deploy-stack: OK
2026-05-10T11:52:52.7450306Z 
2026-05-10T11:52:52.7451120Z === Lint: deploy-stack test ===
2026-05-10T11:52:52.7452084Z >>> pnpm lint:deploy-stack:test
2026-05-10T11:52:53.0214974Z 
2026-05-10T11:52:53.0215945Z > rebno@0.0.0 lint:deploy-stack:test /home/runner/work/rebno/rebno
2026-05-10T11:52:53.0216988Z > node tools/scripts/lint-deploy-stack.test.mjs
2026-05-10T11:52:53.0217594Z 
2026-05-10T11:52:53.0785713Z PASS: lint-deploy-stack green
2026-05-10T11:52:53.0879403Z 
2026-05-10T11:52:53.0880110Z === ADR 0005 lint ===
2026-05-10T11:52:53.0880810Z >>> pnpm lint:adr:0005
2026-05-10T11:52:53.3686459Z 
2026-05-10T11:52:53.3687506Z > rebno@0.0.0 lint:adr:0005 /home/runner/work/rebno/rebno
2026-05-10T11:52:53.3688845Z > node tools/asset-catalog/scripts/lint-adr.mjs docs/adr/0005-deploy-topology.md --no-matrix
2026-05-10T11:52:53.3689628Z 
2026-05-10T11:52:53.3981318Z OK: ADR docs/adr/0005-deploy-topology.md validated (no-matrix mode — Michael Nygard sections present)
2026-05-10T11:52:53.4072275Z 
2026-05-10T11:52:53.4073229Z === ADR 0006 lint ===
2026-05-10T11:52:53.4074278Z >>> pnpm lint:adr:0006
2026-05-10T11:52:53.6863610Z 
2026-05-10T11:52:53.6864621Z > rebno@0.0.0 lint:adr:0006 /home/runner/work/rebno/rebno
2026-05-10T11:52:53.6868170Z > node tools/asset-catalog/scripts/lint-adr.mjs docs/adr/0006-observability-stack.md --no-matrix
2026-05-10T11:52:53.6872399Z 
2026-05-10T11:52:53.7134122Z OK: ADR docs/adr/0006-observability-stack.md validated (no-matrix mode — Michael Nygard sections present)
2026-05-10T11:52:53.7217797Z 
2026-05-10T11:52:53.7218775Z === Workspace: test ===
2026-05-10T11:52:53.7219431Z >>> pnpm -r test
2026-05-10T11:52:54.0065560Z Scope: 5 of 6 workspace projects
2026-05-10T11:52:54.0113710Z packages/db test$ vitest run
2026-05-10T11:52:54.0121741Z packages/game-logic test$ vitest run
2026-05-10T11:52:54.5064186Z packages/game-logic test: [1m[30m[46m RUN [49m[39m[22m [36mv4.1.5 [39m[90m/home/runner/work/rebno/rebno/packages/game-logic[39m
2026-05-10T11:52:54.5070457Z packages/db test: [1m[30m[46m RUN [49m[39m[22m [36mv4.1.5 [39m[90m/home/runner/work/rebno/rebno/packages/db[39m
2026-05-10T11:52:54.8203754Z packages/game-logic test:  [32m✓[39m test/platform-cycle.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 19[2mms[22m[39m
2026-05-10T11:52:55.0577190Z packages/game-logic test:  [32m✓[39m test/rng.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 14[2mms[22m[39m
2026-05-10T11:52:55.2866719Z packages/game-logic test:  [32m✓[39m test/golden.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 10[2mms[22m[39m
2026-05-10T11:52:55.4333659Z packages/db test:  [32m✓[39m tests/schema-shape.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 12[2mms[22m[39m
2026-05-10T11:52:55.5022832Z packages/game-logic test:  [32m✓[39m test/accumulator.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-10T11:52:55.5113186Z packages/game-logic test: [2m Test Files [22m [1m[32m4 passed[39m[22m[90m (4)[39m
2026-05-10T11:52:55.5145983Z packages/game-logic test: [2m      Tests [22m [1m[32m21 passed[39m[22m[90m (21)[39m
2026-05-10T11:52:55.5157288Z packages/game-logic test: [2m   Start at [22m 11:52:54
2026-05-10T11:52:55.5173161Z packages/game-logic test: [2m   Duration [22m 1.00s[2m (transform 107ms, setup 0ms, import 197ms, tests 50ms, environment 1ms)[22m
2026-05-10T11:52:55.5491342Z packages/game-logic test: Done
2026-05-10T11:52:55.5512580Z packages/protocol test$ vitest run
2026-05-10T11:52:55.6590564Z packages/db test:  [32m✓[39m tests/save-format-traceability.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 8[2mms[22m[39m
2026-05-10T11:52:56.0453827Z packages/protocol test: [1m[30m[46m RUN [49m[39m[22m [36mv4.1.5 [39m[90m/home/runner/work/rebno/rebno/packages/protocol[39m
2026-05-10T11:52:56.4613862Z packages/db test:  [32m✓[39m tests/promotion.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-10T11:52:56.4657413Z packages/db test: [2m Test Files [22m [1m[32m3 passed[39m[22m[90m (3)[39m
2026-05-10T11:52:56.4658784Z packages/db test: [2m      Tests [22m [1m[32m22 passed[39m[22m[90m (22)[39m
2026-05-10T11:52:56.4659829Z packages/db test: [2m   Start at [22m 11:52:54
2026-05-10T11:52:56.4661221Z packages/db test: [2m   Duration [22m 1.95s[2m (transform 145ms, setup 0ms, import 1.37s, tests 27ms, environment 0ms)[22m
2026-05-10T11:52:56.4693087Z packages/protocol test:  [32m✓[39m test/codec.test.ts [2m([22m[2m18 tests[22m[2m)[22m[32m 21[2mms[22m[39m
2026-05-10T11:52:56.4940075Z packages/db test: Done
2026-05-10T11:52:56.6373400Z packages/protocol test:  [32m✓[39m test/intents.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 6[2mms[22m[39m
2026-05-10T11:52:56.7892236Z packages/protocol test:  [32m✓[39m test/schema-shape.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 5[2mms[22m[39m
2026-05-10T11:52:56.9236556Z packages/protocol test:  [32m✓[39m test/state.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 4[2mms[22m[39m
2026-05-10T11:52:56.9268011Z packages/protocol test: [2m Test Files [22m [1m[32m4 passed[39m[22m[90m (4)[39m
2026-05-10T11:52:56.9269992Z packages/protocol test: [2m      Tests [22m [1m[32m30 passed[39m[22m[90m (30)[39m
2026-05-10T11:52:56.9271170Z packages/protocol test: [2m   Start at [22m 11:52:56
2026-05-10T11:52:56.9272973Z packages/protocol test: [2m   Duration [22m 875ms[2m (transform 158ms, setup 0ms, import 279ms, tests 35ms, environment 0ms)[22m
2026-05-10T11:52:56.9596174Z packages/protocol test: Done
2026-05-10T11:52:56.9602094Z apps/server test$ vitest run --exclude 'test/**/*.integ.test.ts'
2026-05-10T11:52:56.9603652Z apps/client test$ vitest run --exclude 'test/e2e/**'
2026-05-10T11:52:57.4598342Z apps/server test: [1m[30m[46m RUN [49m[39m[22m [36mv4.1.5 [39m[90m/home/runner/work/rebno/rebno/apps/server[39m
2026-05-10T11:52:57.5093517Z apps/client test: [1m[46m RUN [49m[22m [36mv3.2.4 [39m[90m/home/runner/work/rebno/rebno/apps/client[39m
2026-05-10T11:52:58.4313760Z apps/server test: {"level":30,"time":1778413978425,"pid":5249,"hostname":"runnervmeorf1","password":"[Redacted]","session_token":"[Redacted]","msg":"login"}
2026-05-10T11:52:58.4320746Z apps/server test:  [32m✓[39m test/otel-init.test.ts [2m([22m[2m4 tests[22m[2m)[22m[33m 690[2mms[22m[39m
2026-05-10T11:52:58.4343198Z apps/server test:      [33m[2m✓[22m[39m does not throw when OTEL_EXPORTER_OTLP_ENDPOINT is unset [33m 543[2mms[22m[39m
2026-05-10T11:52:58.9564480Z apps/client test: [90mstderr[2m | src/__test__/game-scene.test.ts[2m > [22m[2mscenes/GameScene[2m > [22m[2mtest 5: onRoomLayout calls verifyRoomLayout first; render skipped on false
2026-05-10T11:52:58.9603608Z apps/client test: [22m[39mroom_layout signature did not verify — rendering skipped for mvp-lobby 000
2026-05-10T11:52:58.9717502Z apps/client test:  [32m✓[39m src/__test__/game-scene.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 156[2mms[22m[39m
2026-05-10T11:52:59.4204962Z apps/server test: [90mstdout[2m | test/run-migrations.test.ts[2m > [22m[2mrun-migrations.ts (Plan 12)[2m > [22m[2mScenario 1: fresh DB — migrate creates accounts table and records migration row
2026-05-10T11:52:59.4219648Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-aqpWwH/rebno.db
2026-05-10T11:52:59.4221020Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-10T11:52:59.4222279Z apps/server test: [run-migrations] OK
2026-05-10T11:52:59.4372608Z apps/server test: [90mstdout[2m | test/run-migrations.test.ts[2m > [22m[2mrun-migrations.ts (Plan 12)[2m > [22m[2mScenario 2: pre-bootstrapped DB (Assumption A7) — reconcile seeds row before migrate runs
2026-05-10T11:52:59.4393588Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-1cgkW2/rebno.db
2026-05-10T11:52:59.4437999Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-10T11:52:59.4453324Z apps/server test: [run-migrations] reconciled __drizzle_migrations for pre-bootstrap DB (Assumption A7) — seeded 0001_baseline
2026-05-10T11:52:59.4492189Z apps/server test: [run-migrations] OK
2026-05-10T11:52:59.4513034Z apps/server test: [90mstdout[2m | test/run-migrations.test.ts[2m > [22m[2mrun-migrations.ts (Plan 12)[2m > [22m[2mScenario 3: idempotent second run — no error, no extra rows
2026-05-10T11:52:59.4532897Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-eOPou6/rebno.db
2026-05-10T11:52:59.4560477Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-10T11:52:59.4602240Z apps/server test: [run-migrations] OK
2026-05-10T11:52:59.4633035Z apps/server test: [90mstdout[2m | test/run-migrations.test.ts[2m > [22m[2mrun-migrations.ts (Plan 12)[2m > [22m[2mScenario 3: idempotent second run — no error, no extra rows
2026-05-10T11:52:59.4634797Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-eOPou6/rebno.db
2026-05-10T11:52:59.4676138Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-10T11:52:59.4692460Z apps/server test: [run-migrations] OK
2026-05-10T11:52:59.4713060Z apps/server test:  [32m✓[39m test/run-migrations.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 59[2mms[22m[39m
2026-05-10T11:52:59.9972009Z apps/client test:  [32m✓[39m src/__test__/force-reset-overlay.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 110[2mms[22m[39m
2026-05-10T11:53:00.5327776Z apps/server test:  [32m✓[39m test/persistence.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 57[2mms[22m[39m
2026-05-10T11:53:00.8128781Z apps/server test:  [32m✓[39m test/legacy-login.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 24[2mms[22m[39m
2026-05-10T11:53:01.0449769Z apps/client test:  [32m✓[39m src/__test__/chat-hud.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 121[2mms[22m[39m
2026-05-10T11:53:01.0563882Z apps/server test:  [32m✓[39m test/room-key.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 22[2mms[22m[39m
2026-05-10T11:53:01.3243348Z apps/server test: {"level":40,"time":1778413981318,"pid":5355,"hostname":"runnervmeorf1","path":"/api/foo","msg":"staging_invite_rejected"}
2026-05-10T11:53:01.3303266Z apps/server test: {"level":40,"time":1778413981321,"pid":5355,"hostname":"runnervmeorf1","path":"/api/foo","msg":"staging_invite_rejected"}
2026-05-10T11:53:01.3343529Z apps/server test: {"level":40,"time":1778413981322,"pid":5355,"hostname":"runnervmeorf1","path":"/api/foo","msg":"staging_invite_rejected"}
2026-05-10T11:53:01.3393196Z apps/server test:  [32m✓[39m test/staging-invite.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 14[2mms[22m[39m
2026-05-10T11:53:01.6254711Z apps/server test:  [32m✓[39m test/log.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 23[2mms[22m[39m
2026-05-10T11:53:01.8507756Z apps/server test:  [32m✓[39m test/health.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-10T11:53:02.0648236Z apps/server test:  [32m✓[39m test/rate-limit.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 11[2mms[22m[39m
2026-05-10T11:53:02.0819571Z apps/client test:  [32m✓[39m src/__test__/reconnect.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 99[2mms[22m[39m
2026-05-10T11:53:02.2918294Z apps/server test:  [32m✓[39m test/admin-stubs.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 8[2mms[22m[39m
2026-05-10T11:53:03.0107202Z apps/server test: [90mstdout[2m | test/tick-accumulator.test.ts
2026-05-10T11:53:03.0123715Z apps/server test: [22m[39m◇ injected env (50) from ../../../../../../../etc/environment // tip: ⌘ suppress logs { quiet: true }
2026-05-10T11:53:03.0142671Z apps/server test: ℹ️  optional .env file not found: .env.test, .env
2026-05-10T11:53:03.1392541Z apps/client test:  [32m✓[39m src/__test__/nameplate.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 35[2mms[22m[39m
2026-05-10T11:53:03.7460664Z apps/server test:  [32m✓[39m test/tick-accumulator.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-10T11:53:03.7536550Z apps/server test: [2m Test Files [22m [1m[32m11 passed[39m[22m[90m (11)[39m
2026-05-10T11:53:03.7552959Z apps/server test: [2m      Tests [22m [1m[32m61 passed[39m[22m[90m (61)[39m
2026-05-10T11:53:03.7573214Z apps/server test: [2m   Start at [22m 11:52:57
2026-05-10T11:53:03.7574702Z apps/server test: [2m   Duration [22m 6.28s[2m (transform 417ms, setup 0ms, import 3.15s, tests 923ms, environment 2ms)[22m
2026-05-10T11:53:03.7808532Z apps/server test: Done
2026-05-10T11:53:03.9869540Z apps/client test:  [32m✓[39m src/__test__/input-dispatcher.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 13[2mms[22m[39m
2026-05-10T11:53:04.6789375Z apps/client test:  [32m✓[39m src/__test__/colyseus-client.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 9[2mms[22m[39m
2026-05-10T11:53:05.2927629Z apps/client test:  [32m✓[39m src/__test__/login-scene.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 9[2mms[22m[39m
2026-05-10T11:53:05.9092885Z apps/client test:  [32m✓[39m src/__test__/room-layout-verify.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 8[2mms[22m[39m
2026-05-10T11:53:06.4903353Z apps/client test:  [32m✓[39m src/__test__/atlas-loader.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-10T11:53:07.0628936Z apps/client test:  [32m✓[39m src/__test__/auth-client.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 6[2mms[22m[39m
2026-05-10T11:53:07.6490060Z apps/client test:  [32m✓[39m src/__test__/reconciler.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 5[2mms[22m[39m
2026-05-10T11:53:08.2414915Z apps/client test:  [32m✓[39m src/__test__/prediction.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 4[2mms[22m[39m
2026-05-10T11:53:08.8190781Z apps/client test:  [32m✓[39m src/__test__/extrapolation.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 4[2mms[22m[39m
2026-05-10T11:53:09.3985393Z apps/client test:  [32m✓[39m src/__test__/protocol-version-check.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 4[2mms[22m[39m
2026-05-10T11:53:09.9962082Z apps/client test:  [32m✓[39m src/__test__/env.test.ts [2m([22m[2m5 tests[22m[2m | [22m[33m4 skipped[39m[2m)[22m[32m 4[2mms[22m[39m
2026-05-10T11:53:10.0129453Z apps/client test: [2m Test Files [22m [1m[32m16 passed[39m[22m[90m (16)[39m
2026-05-10T11:53:10.0133909Z apps/client test: [2m      Tests [22m [1m[32m98 passed[39m[22m[2m | [22m[90m4 todo[39m[90m (102)[39m
2026-05-10T11:53:10.0135284Z apps/client test: [2m   Start at [22m 11:52:57
2026-05-10T11:53:10.0136872Z apps/client test: [2m   Duration [22m 12.50s[2m (transform 517ms, setup 43ms, collect 747ms, tests 594ms, environment 7.17s, prepare 1.50s)[22m
2026-05-10T11:53:10.1307751Z apps/client test: Done
2026-05-10T11:53:10.1377762Z 
2026-05-10T11:53:10.1378395Z === Traceable-reqs: check ===
2026-05-10T11:53:10.1379053Z >>> pnpm trace:check
2026-05-10T11:53:10.4163674Z 
2026-05-10T11:53:10.4164633Z > rebno@0.0.0 trace:check /home/runner/work/rebno/rebno
2026-05-10T11:53:10.4165552Z > traceable-reqs check
2026-05-10T11:53:10.4165941Z 
2026-05-10T11:53:10.4196195Z sh: 1: traceable-reqs: not found
2026-05-10T11:53:10.4325671Z  ELIFECYCLE  Command failed.
2026-05-10T11:53:10.4465155Z 
2026-05-10T11:53:10.4466219Z verify-phase-5 FAILED at step 'Traceable-reqs: check': pnpm trace:check (exit 1)
2026-05-10T11:53:10.4467340Z Fix the failing step and re-run `pnpm verify:phase-5`.
2026-05-10T11:53:10.4618278Z  ELIFECYCLE  Command failed with exit code 1.
2026-05-10T11:53:10.4755769Z ##[error]Process completed with exit code 1.
2026-05-10T11:53:10.4877660Z ##[group]Run actions/upload-artifact@v4
2026-05-10T11:53:10.4877933Z with:
2026-05-10T11:53:10.4878132Z   name: playwright-cli-08-25627976324
2026-05-10T11:53:10.4878468Z   path: apps/client/playwright-report
apps/client/test-results

2026-05-10T11:53:10.4878786Z   retention-days: 14
2026-05-10T11:53:10.4878994Z   if-no-files-found: warn
2026-05-10T11:53:10.4879207Z   compression-level: 6
2026-05-10T11:53:10.4879426Z   overwrite: false
2026-05-10T11:53:10.4879625Z   include-hidden-files: false
2026-05-10T11:53:10.4879833Z env:
2026-05-10T11:53:10.4880047Z   PNPM_HOME: /home/runner/setup-pnpm/node_modules/.bin
2026-05-10T11:53:10.4880314Z ##[endgroup]
2026-05-10T11:53:10.7012640Z Multiple search paths detected. Calculating the least common ancestor of all paths
2026-05-10T11:53:10.7043584Z The least common ancestor is /home/runner/work/rebno/rebno/apps/client. This will be the root directory of the artifact
2026-05-10T11:53:10.7067600Z ##[warning]No files were found with the provided path: apps/client/playwright-report
apps/client/test-results. No artifacts will be uploaded.
2026-05-10T11:53:10.7123987Z Post job cleanup.
2026-05-10T11:53:10.8484366Z Pruning is unnecessary.
2026-05-10T11:53:10.8604405Z Post job cleanup.
2026-05-10T11:53:10.9893267Z [command]/usr/bin/git version
2026-05-10T11:53:10.9962388Z git version 2.53.0
2026-05-10T11:53:11.0039356Z Temporarily overriding HOME='/home/runner/work/_temp/1cbb3d34-1297-4554-a170-ba6808619ab9' before making global git config changes
2026-05-10T11:53:11.0041077Z Adding repository directory to the temporary git global config as a safe directory
2026-05-10T11:53:11.0042588Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/rebno/rebno
2026-05-10T11:53:11.0118571Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-05-10T11:53:11.0168607Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
2026-05-10T11:53:11.0482752Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
2026-05-10T11:53:11.0498989Z http.https://github.com/.extraheader
2026-05-10T11:53:11.0514282Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader
2026-05-10T11:53:11.0559424Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :"
2026-05-10T11:53:11.0868330Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
2026-05-10T11:53:11.0911360Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
2026-05-10T11:53:11.1202763Z Cleaning up orphan processes
2026-05-10T11:53:11.1433915Z ##[warning]Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4, pnpm/action-setup@v4. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
