﻿2026-05-10T11:46:39.5638832Z Current runner version: '2.334.0'
2026-05-10T11:46:39.5674068Z ##[group]Runner Image Provisioner
2026-05-10T11:46:39.5675654Z Hosted Compute Agent
2026-05-10T11:46:39.5676715Z Version: 20260213.493
2026-05-10T11:46:39.5677903Z Commit: 5c115507f6dd24b8de37d8bbe0bb4509d0cc0fa3
2026-05-10T11:46:39.5679167Z Build Date: 2026-02-13T00:28:41Z
2026-05-10T11:46:39.5680304Z Worker ID: {83d401d0-803e-4ae0-b8d3-cbdf8826bbc7}
2026-05-10T11:46:39.5682084Z Azure Region: northcentralus
2026-05-10T11:46:39.5683240Z ##[endgroup]
2026-05-10T11:46:39.5685583Z ##[group]Operating System
2026-05-10T11:46:39.5686750Z Ubuntu
2026-05-10T11:46:39.5687664Z 24.04.4
2026-05-10T11:46:39.5688472Z LTS
2026-05-10T11:46:39.5689696Z ##[endgroup]
2026-05-10T11:46:39.5690728Z ##[group]Runner Image
2026-05-10T11:46:39.5692282Z Image: ubuntu-24.04
2026-05-10T11:46:39.5693430Z Version: 20260413.86.1
2026-05-10T11:46:39.5695652Z Included Software: https://github.com/actions/runner-images/blob/ubuntu24/20260413.86/images/ubuntu/Ubuntu2404-Readme.md
2026-05-10T11:46:39.5698385Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu24%2F20260413.86
2026-05-10T11:46:39.5700333Z ##[endgroup]
2026-05-10T11:46:39.5702730Z ##[group]GITHUB_TOKEN Permissions
2026-05-10T11:46:39.5705877Z Contents: read
2026-05-10T11:46:39.5706929Z Metadata: read
2026-05-10T11:46:39.5707922Z ##[endgroup]
2026-05-10T11:46:39.5711294Z Secret source: Actions
2026-05-10T11:46:39.5712951Z Prepare workflow directory
2026-05-10T11:46:39.6089436Z Prepare all required actions
2026-05-10T11:46:39.6144208Z Getting action download info
2026-05-10T11:46:40.0686179Z Download action repository 'actions/checkout@v4' (SHA:34e114876b0b11c390a56381ad16ebd13914f8d5)
2026-05-10T11:46:40.1977513Z Download action repository 'pnpm/action-setup@v4' (SHA:b906affcce14559ad1aafd4ab0e942779e9f58b1)
2026-05-10T11:46:40.6698078Z Download action repository 'actions/setup-node@v4' (SHA:49933ea5288caeca8642d1e84afbd3f7d6820020)
2026-05-10T11:46:40.7700194Z Download action repository 'superfly/flyctl-actions@fc53c09e1bc3be6f54706524e3b82c4f462f77be' (SHA:fc53c09e1bc3be6f54706524e3b82c4f462f77be)
2026-05-10T11:46:40.9540956Z Download action repository 'actions/upload-artifact@v4' (SHA:ea165f8d65b6e75b540449e92b4886f43607fa02)
2026-05-10T11:46:41.1801095Z Complete job name: build-and-deploy
2026-05-10T11:46:41.2596205Z ##[group]Run actions/checkout@v4
2026-05-10T11:46:41.2597160Z with:
2026-05-10T11:46:41.2597649Z   repository: SaberMage/rebno
2026-05-10T11:46:41.2598385Z   token: ***
2026-05-10T11:46:41.2598875Z   ssh-strict: true
2026-05-10T11:46:41.2599375Z   ssh-user: git
2026-05-10T11:46:41.2599873Z   persist-credentials: true
2026-05-10T11:46:41.2600417Z   clean: true
2026-05-10T11:46:41.2600916Z   sparse-checkout-cone-mode: true
2026-05-10T11:46:41.2601486Z   fetch-depth: 1
2026-05-10T11:46:41.2602180Z   fetch-tags: false
2026-05-10T11:46:41.2602684Z   show-progress: true
2026-05-10T11:46:41.2603183Z   lfs: false
2026-05-10T11:46:41.2603642Z   submodules: false
2026-05-10T11:46:41.2604143Z   set-safe-directory: true
2026-05-10T11:46:41.2604968Z ##[endgroup]
2026-05-10T11:46:41.3793329Z Syncing repository: SaberMage/rebno
2026-05-10T11:46:41.3796129Z ##[group]Getting Git version info
2026-05-10T11:46:41.3797802Z Working directory is '/home/runner/work/rebno/rebno'
2026-05-10T11:46:41.3801163Z [command]/usr/bin/git version
2026-05-10T11:46:41.3852120Z git version 2.53.0
2026-05-10T11:46:41.3977659Z ##[endgroup]
2026-05-10T11:46:41.3986140Z Temporarily overriding HOME='/home/runner/work/_temp/50d9a354-c987-48e0-ab4f-6d11b1b412c1' before making global git config changes
2026-05-10T11:46:41.3989328Z Adding repository directory to the temporary git global config as a safe directory
2026-05-10T11:46:41.3992433Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/rebno/rebno
2026-05-10T11:46:41.3997741Z Deleting the contents of '/home/runner/work/rebno/rebno'
2026-05-10T11:46:41.4000143Z ##[group]Initializing the repository
2026-05-10T11:46:41.4002600Z [command]/usr/bin/git init /home/runner/work/rebno/rebno
2026-05-10T11:46:41.4082569Z hint: Using 'master' as the name for the initial branch. This default branch name
2026-05-10T11:46:41.4088791Z hint: will change to "main" in Git 3.0. To configure the initial branch name
2026-05-10T11:46:41.4100685Z hint: to use in all of your new repositories, which will suppress this warning,
2026-05-10T11:46:41.4104092Z hint: call:
2026-05-10T11:46:41.4107604Z hint:
2026-05-10T11:46:41.4108997Z hint: 	git config --global init.defaultBranch <name>
2026-05-10T11:46:41.4110298Z hint:
2026-05-10T11:46:41.4111548Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
2026-05-10T11:46:41.4113943Z hint: 'development'. The just-created branch can be renamed via this command:
2026-05-10T11:46:41.4120887Z hint:
2026-05-10T11:46:41.4122250Z hint: 	git branch -m <name>
2026-05-10T11:46:41.4124231Z hint:
2026-05-10T11:46:41.4125674Z hint: Disable this message with "git config set advice.defaultBranchName false"
2026-05-10T11:46:41.4127237Z Initialized empty Git repository in /home/runner/work/rebno/rebno/.git/
2026-05-10T11:46:41.4130243Z [command]/usr/bin/git remote add origin https://github.com/SaberMage/rebno
2026-05-10T11:46:41.4146974Z ##[endgroup]
2026-05-10T11:46:41.4149226Z ##[group]Disabling automatic garbage collection
2026-05-10T11:46:41.4151564Z [command]/usr/bin/git config --local gc.auto 0
2026-05-10T11:46:41.4185211Z ##[endgroup]
2026-05-10T11:46:41.4187334Z ##[group]Setting up auth
2026-05-10T11:46:41.4192738Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-05-10T11:46:41.4228884Z [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:46:41.4536481Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
2026-05-10T11:46:41.4568754Z [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:46:41.4798799Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
2026-05-10T11:46:41.4837225Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
2026-05-10T11:46:41.5075371Z [command]/usr/bin/git config --local http.https://github.com/.extraheader AUTHORIZATION: basic ***
2026-05-10T11:46:41.5114579Z ##[endgroup]
2026-05-10T11:46:41.5115907Z ##[group]Fetching the repository
2026-05-10T11:46:41.5126501Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +55097a68f72a07452d3ac9c27214abad508cafd8:refs/remotes/origin/main
2026-05-10T11:46:42.6026275Z From https://github.com/SaberMage/rebno
2026-05-10T11:46:42.6029303Z  * [new ref]         55097a68f72a07452d3ac9c27214abad508cafd8 -> origin/main
2026-05-10T11:46:42.6059275Z ##[endgroup]
2026-05-10T11:46:42.6062189Z ##[group]Determining the checkout info
2026-05-10T11:46:42.6065320Z ##[endgroup]
2026-05-10T11:46:42.6068068Z [command]/usr/bin/git sparse-checkout disable
2026-05-10T11:46:42.6109979Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig
2026-05-10T11:46:42.6143315Z ##[group]Checking out the ref
2026-05-10T11:46:42.6146704Z [command]/usr/bin/git checkout --progress --force -B main refs/remotes/origin/main
2026-05-10T11:46:43.3832977Z Switched to a new branch 'main'
2026-05-10T11:46:43.3852880Z branch 'main' set up to track 'origin/main'.
2026-05-10T11:46:43.3896370Z ##[endgroup]
2026-05-10T11:46:43.3947571Z [command]/usr/bin/git log -1 --format=%H
2026-05-10T11:46:43.3983746Z 55097a68f72a07452d3ac9c27214abad508cafd8
2026-05-10T11:46:43.4223010Z ##[group]Run pnpm/action-setup@v4
2026-05-10T11:46:43.4223338Z with:
2026-05-10T11:46:43.4223558Z   version: 10
2026-05-10T11:46:43.4224063Z   dest: ~/setup-pnpm
2026-05-10T11:46:43.4224596Z   run_install: null
2026-05-10T11:46:43.4224818Z   cache: false
2026-05-10T11:46:43.4225049Z   cache_dependency_path: pnpm-lock.yaml
2026-05-10T11:46:43.4225362Z   package_json_file: package.json
2026-05-10T11:46:43.4225837Z   standalone: false
2026-05-10T11:46:43.4226085Z ##[endgroup]
2026-05-10T11:46:43.5674012Z ##[group]Running self-installer...
2026-05-10T11:46:44.2313548Z Progress: resolved 1, reused 0, downloaded 0, added 0
2026-05-10T11:46:44.2624669Z Packages: +1
2026-05-10T11:46:44.2642348Z +
2026-05-10T11:46:44.7080711Z Progress: resolved 1, reused 0, downloaded 1, added 1, done
2026-05-10T11:46:44.7373332Z 
2026-05-10T11:46:44.7373944Z dependencies:
2026-05-10T11:46:44.7377497Z + pnpm 10.33.4 (11.0.9 is available)
2026-05-10T11:46:44.7378253Z 
2026-05-10T11:46:44.7435627Z Done in 997ms
2026-05-10T11:46:44.7579027Z ##[endgroup]
2026-05-10T11:46:44.7584378Z Installation Completed!
2026-05-10T11:46:44.7796594Z ##[group]Run actions/setup-node@v4
2026-05-10T11:46:44.7796897Z with:
2026-05-10T11:46:44.7797261Z   node-version: 22
2026-05-10T11:46:44.7797645Z   cache: pnpm
2026-05-10T11:46:44.7797993Z   always-auth: false
2026-05-10T11:46:44.7798401Z   check-latest: false
2026-05-10T11:46:44.7798938Z   token: ***
2026-05-10T11:46:44.7799269Z env:
2026-05-10T11:46:44.7799692Z   PNPM_HOME: /home/runner/setup-pnpm/node_modules/.bin
2026-05-10T11:46:44.7800228Z ##[endgroup]
2026-05-10T11:46:44.9883486Z Found in cache @ /opt/hostedtoolcache/node/22.22.2/x64
2026-05-10T11:46:44.9890280Z ##[group]Environment details
2026-05-10T11:46:46.2263365Z node: v22.22.2
2026-05-10T11:46:46.2264160Z npm: 10.9.7
2026-05-10T11:46:46.2264788Z yarn: 1.22.22
2026-05-10T11:46:46.2266429Z ##[endgroup]
2026-05-10T11:46:46.2295137Z [command]/home/runner/setup-pnpm/node_modules/.bin/pnpm store path --silent
2026-05-10T11:46:46.6143304Z /home/runner/setup-pnpm/node_modules/.bin/store/v10
2026-05-10T11:46:46.7522855Z pnpm cache is not found
2026-05-10T11:46:46.7645044Z ##[group]Run pnpm install --frozen-lockfile
2026-05-10T11:46:46.7645468Z [36;1mpnpm install --frozen-lockfile[0m
2026-05-10T11:46:46.7676209Z shell: /usr/bin/bash -e {0}
2026-05-10T11:46:46.7676485Z env:
2026-05-10T11:46:46.7676754Z   PNPM_HOME: /home/runner/setup-pnpm/node_modules/.bin
2026-05-10T11:46:46.7677084Z ##[endgroup]
2026-05-10T11:46:47.1040976Z Scope: all 6 workspace projects
2026-05-10T11:46:47.2823603Z Lockfile is up to date, resolution step is skipped
2026-05-10T11:46:47.3698855Z Progress: resolved 1, reused 0, downloaded 0, added 0
2026-05-10T11:46:47.4964727Z Packages: +665
2026-05-10T11:46:47.4966144Z ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2026-05-10T11:46:48.3575451Z Progress: resolved 665, reused 0, downloaded 62, added 19
2026-05-10T11:46:49.3582524Z Progress: resolved 665, reused 0, downloaded 131, added 47
2026-05-10T11:46:50.3633395Z Progress: resolved 665, reused 0, downloaded 272, added 117
2026-05-10T11:46:51.3619383Z Progress: resolved 665, reused 0, downloaded 286, added 121
2026-05-10T11:46:52.3653530Z Progress: resolved 665, reused 0, downloaded 393, added 172
2026-05-10T11:46:53.3823561Z Progress: resolved 665, reused 0, downloaded 509, added 242
2026-05-10T11:46:54.3119351Z Packages are hard linked from the content-addressable store to the virtual store.
2026-05-10T11:46:54.3121664Z   Content-addressable store is at: /home/runner/setup-pnpm/node_modules/.bin/store/v10
2026-05-10T11:46:54.3128175Z   Virtual store is at:             node_modules/.pnpm
2026-05-10T11:46:54.3809625Z Progress: resolved 665, reused 0, downloaded 542, added 252
2026-05-10T11:46:55.3814529Z Progress: resolved 665, reused 0, downloaded 647, added 302
2026-05-10T11:46:55.9533703Z Progress: resolved 665, reused 0, downloaded 661, added 665, done
2026-05-10T11:46:56.4103748Z .../node_modules/better-sqlite3 install$ prebuild-install || node-gyp rebuild --release
2026-05-10T11:46:56.4122967Z .../esbuild@0.18.20/node_modules/esbuild postinstall$ node install.js
2026-05-10T11:46:56.4129676Z .../esbuild@0.25.12/node_modules/esbuild postinstall$ node install.js
2026-05-10T11:46:56.4152981Z .../esbuild@0.27.7/node_modules/esbuild postinstall$ node install.js
2026-05-10T11:46:56.5030106Z .../argon2@0.44.0/node_modules/argon2 install$ cross-env ZERO_AR_DATE=1 node-gyp-build
2026-05-10T11:46:56.6323649Z .../esbuild@0.25.12/node_modules/esbuild postinstall: Done
2026-05-10T11:46:56.6422942Z .../esbuild@0.18.20/node_modules/esbuild postinstall: Done
2026-05-10T11:46:56.7003174Z .../esbuild@0.27.7/node_modules/esbuild postinstall: Done
2026-05-10T11:46:56.8749978Z .../argon2@0.44.0/node_modules/argon2 install: Done
2026-05-10T11:46:56.9470474Z .../node_modules/better-sqlite3 install: Done
2026-05-10T11:46:57.2407607Z 
2026-05-10T11:46:57.2425036Z devDependencies:
2026-05-10T11:46:57.2452540Z + @better-auth/cli 1.4.21
2026-05-10T11:46:57.2462361Z 
2026-05-10T11:46:57.3201046Z ╭ Warning ─────────────────────────────────────────────────────────────────────╮
2026-05-10T11:46:57.3213015Z │                                                                              │
2026-05-10T11:46:57.3237964Z │   Ignored build scripts: @prisma/client@5.22.0, msgpackr-extract@3.0.3,      │
2026-05-10T11:46:57.3243079Z │   protobufjs@7.5.6, protobufjs@8.0.1.                                        │
2026-05-10T11:46:57.3262908Z │   Run "pnpm approve-builds" to pick which dependencies should be allowed     │
2026-05-10T11:46:57.3282841Z │   to run scripts.                                                            │
2026-05-10T11:46:57.3283856Z │                                                                              │
2026-05-10T11:46:57.3303080Z ╰──────────────────────────────────────────────────────────────────────────────╯
2026-05-10T11:46:57.3458487Z Done in 10.5s using pnpm v10.33.4
2026-05-10T11:46:57.4137496Z ##[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:46:57.4139408Z [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:46:57.4140603Z [36;1m  if [ -f "$d/package.json" ]; then[0m
2026-05-10T11:46:57.4141133Z [36;1m    echo "::group::pnpm install in $d"[0m
2026-05-10T11:46:57.4142091Z [36;1m    pnpm -C "$d" install --ignore-workspace --no-frozen-lockfile[0m
2026-05-10T11:46:57.4142752Z [36;1m    echo "::endgroup::"[0m
2026-05-10T11:46:57.4143172Z [36;1m  fi[0m
2026-05-10T11:46:57.4143478Z [36;1mdone[0m
2026-05-10T11:46:57.4172407Z shell: /usr/bin/bash -e {0}
2026-05-10T11:46:57.4172809Z env:
2026-05-10T11:46:57.4173217Z   PNPM_HOME: /home/runner/setup-pnpm/node_modules/.bin
2026-05-10T11:46:57.4173753Z ##[endgroup]
2026-05-10T11:46:57.4240318Z ##[group]pnpm install in tools/asset-catalog
2026-05-10T11:46:57.9080781Z Lockfile is up to date, resolution step is skipped
2026-05-10T11:46:57.9616913Z Progress: resolved 1, reused 0, downloaded 0, added 0
2026-05-10T11:46:57.9922605Z Packages: +52
2026-05-10T11:46:57.9942648Z ++++++++++++++++++++++++++++++++++++++++++++++++++++
2026-05-10T11:46:58.6952973Z Progress: resolved 52, reused 46, downloaded 6, added 52, done
2026-05-10T11:46:58.8082575Z 
2026-05-10T11:46:58.8092972Z devDependencies:
2026-05-10T11:46:58.8102746Z + @types/node 25.6.0
2026-05-10T11:46:58.8122427Z + tsx 4.21.0
2026-05-10T11:46:58.8130138Z + typescript 5.6.3
2026-05-10T11:46:58.8152512Z + vitest 4.1.5
2026-05-10T11:46:58.8172642Z 
2026-05-10T11:46:58.8189457Z ╭ Warning ─────────────────────────────────────────────────────────────────────╮
2026-05-10T11:46:58.8212817Z │                                                                              │
2026-05-10T11:46:58.8214277Z │   Ignored build scripts: esbuild@0.27.7.                                     │
2026-05-10T11:46:58.8233037Z │   Run "pnpm approve-builds" to pick which dependencies should be allowed     │
2026-05-10T11:46:58.8252909Z │   to run scripts.                                                            │
2026-05-10T11:46:58.8273079Z │                                                                              │
2026-05-10T11:46:58.8275112Z ╰──────────────────────────────────────────────────────────────────────────────╯
2026-05-10T11:46:58.8302786Z Done in 1.3s using pnpm v10.33.4
2026-05-10T11:46:58.8442784Z ##[endgroup]
2026-05-10T11:46:58.8443755Z ##[group]pnpm install in tools/asset-pipeline
2026-05-10T11:46:59.3803162Z Lockfile is up to date, resolution step is skipped
2026-05-10T11:46:59.4272998Z Progress: resolved 1, reused 0, downloaded 0, added 0
2026-05-10T11:46:59.4465414Z Packages: +64
2026-05-10T11:46:59.4466328Z ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2026-05-10T11:47:00.0673235Z Progress: resolved 64, reused 57, downloaded 7, added 64, done
2026-05-10T11:47:00.2126389Z 
2026-05-10T11:47:00.2184705Z dependencies:
2026-05-10T11:47:00.2202597Z + maxrects-packer 2.7.3
2026-05-10T11:47:00.2222765Z + sharp 0.34.5
2026-05-10T11:47:00.2242149Z 
2026-05-10T11:47:00.2272469Z devDependencies:
2026-05-10T11:47:00.2292338Z + @types/node 25.6.0
2026-05-10T11:47:00.2315097Z + tsx 4.21.0
2026-05-10T11:47:00.2331458Z + typescript 5.6.3
2026-05-10T11:47:00.2342304Z + vitest 3.2.4
2026-05-10T11:47:00.2362154Z 
2026-05-10T11:47:00.2383219Z ╭ Warning ─────────────────────────────────────────────────────────────────────╮
2026-05-10T11:47:00.2403054Z │                                                                              │
2026-05-10T11:47:00.2413698Z │   Ignored build scripts: esbuild@0.27.7, sharp@0.34.5.                       │
2026-05-10T11:47:00.2433840Z │   Run "pnpm approve-builds" to pick which dependencies should be allowed     │
2026-05-10T11:47:00.2453867Z │   to run scripts.                                                            │
2026-05-10T11:47:00.2473973Z │                                                                              │
2026-05-10T11:47:00.2502795Z ╰──────────────────────────────────────────────────────────────────────────────╯
2026-05-10T11:47:00.2514975Z Done in 1.3s using pnpm v10.33.4
2026-05-10T11:47:00.2617600Z ##[endgroup]
2026-05-10T11:47:00.2623843Z ##[group]pnpm install in tools/extract-gmd
2026-05-10T11:47:01.2172736Z Progress: resolved 1, reused 0, downloaded 0, added 0
2026-05-10T11:47:02.2548357Z Progress: resolved 97, reused 47, downloaded 1, added 0
2026-05-10T11:47:02.8659044Z Packages: +57
2026-05-10T11:47:02.8659649Z +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2026-05-10T11:47:02.9348033Z Progress: resolved 135, reused 58, downloaded 5, added 57, done
2026-05-10T11:47:03.2974137Z 
2026-05-10T11:47:03.2974684Z dependencies:
2026-05-10T11:47:03.2975290Z + sharp 0.34.5
2026-05-10T11:47:03.2975693Z 
2026-05-10T11:47:03.2975981Z devDependencies:
2026-05-10T11:47:03.2976773Z + @types/node 25.6.0 (25.6.2 is available)
2026-05-10T11:47:03.2977512Z + tsx 4.21.0
2026-05-10T11:47:03.2978179Z + typescript 5.6.3 (6.0.3 is available)
2026-05-10T11:47:03.2978839Z + vitest 4.1.5
2026-05-10T11:47:03.2979172Z 
2026-05-10T11:47:03.3006554Z ╭ Warning ─────────────────────────────────────────────────────────────────────╮
2026-05-10T11:47:03.3008115Z │                                                                              │
2026-05-10T11:47:03.3009466Z │   Ignored build scripts: esbuild@0.27.7, sharp@0.34.5.                       │
2026-05-10T11:47:03.3010957Z │   Run "pnpm approve-builds" to pick which dependencies should be allowed     │
2026-05-10T11:47:03.3012528Z │   to run scripts.                                                            │
2026-05-10T11:47:03.3013936Z │                                                                              │
2026-05-10T11:47:03.3015249Z ╰──────────────────────────────────────────────────────────────────────────────╯
2026-05-10T11:47:03.3056169Z Done in 2.9s using pnpm v10.33.4
2026-05-10T11:47:03.3286984Z ##[endgroup]
2026-05-10T11:47:03.3288190Z ##[group]pnpm install in tools/protocol-doc
2026-05-10T11:47:03.6419209Z Lockfile is up to date, resolution step is skipped
2026-05-10T11:47:03.6740691Z Progress: resolved 1, reused 0, downloaded 0, added 0
2026-05-10T11:47:03.6901183Z Packages: +52
2026-05-10T11:47:03.6912904Z ++++++++++++++++++++++++++++++++++++++++++++++++++++
2026-05-10T11:47:03.8383261Z Progress: resolved 52, reused 52, downloaded 0, added 52, done
2026-05-10T11:47:03.9125063Z 
2026-05-10T11:47:03.9125378Z devDependencies:
2026-05-10T11:47:03.9125687Z + @types/node 25.6.0
2026-05-10T11:47:03.9125933Z + tsx 4.21.0
2026-05-10T11:47:03.9126158Z + typescript 5.6.3
2026-05-10T11:47:03.9126380Z + vitest 4.1.5
2026-05-10T11:47:03.9126508Z 
2026-05-10T11:47:03.9213685Z ╭ Warning ─────────────────────────────────────────────────────────────────────╮
2026-05-10T11:47:03.9214844Z │                                                                              │
2026-05-10T11:47:03.9216345Z │   Ignored build scripts: esbuild@0.27.7.                                     │
2026-05-10T11:47:03.9217688Z │   Run "pnpm approve-builds" to pick which dependencies should be allowed     │
2026-05-10T11:47:03.9218811Z │   to run scripts.                                                            │
2026-05-10T11:47:03.9219775Z │                                                                              │
2026-05-10T11:47:03.9220466Z ╰──────────────────────────────────────────────────────────────────────────────╯
2026-05-10T11:47:03.9265068Z Done in 573ms using pnpm v10.33.4
2026-05-10T11:47:03.9364830Z ##[endgroup]
2026-05-10T11:47:03.9366073Z ##[group]pnpm install in tools/room-converter
2026-05-10T11:47:04.2639095Z Progress: resolved 1, reused 0, downloaded 0, added 0
2026-05-10T11:47:04.5599012Z Packages: +9
2026-05-10T11:47:04.5599791Z +++++++++
2026-05-10T11:47:04.6030237Z Progress: resolved 35, reused 9, downloaded 0, added 9, done
2026-05-10T11:47:04.6596628Z 
2026-05-10T11:47:04.6596985Z devDependencies:
2026-05-10T11:47:04.6597350Z + @types/node 25.6.0 (25.6.2 is available)
2026-05-10T11:47:04.6597663Z + tsx 4.21.0
2026-05-10T11:47:04.6597945Z + typescript 5.6.3 (6.0.3 is available)
2026-05-10T11:47:04.6598292Z + zod 3.25.76 (4.4.3 is available)
2026-05-10T11:47:04.6598500Z 
2026-05-10T11:47:04.6631164Z ╭ Warning ─────────────────────────────────────────────────────────────────────╮
2026-05-10T11:47:04.6632906Z │                                                                              │
2026-05-10T11:47:04.6634408Z │   Ignored build scripts: esbuild@0.27.7.                                     │
2026-05-10T11:47:04.6635970Z │   Run "pnpm approve-builds" to pick which dependencies should be allowed     │
2026-05-10T11:47:04.6637504Z │   to run scripts.                                                            │
2026-05-10T11:47:04.6638801Z │                                                                              │
2026-05-10T11:47:04.6640193Z ╰──────────────────────────────────────────────────────────────────────────────╯
2026-05-10T11:47:04.6675267Z Done in 708ms using pnpm v10.33.4
2026-05-10T11:47:04.6813809Z ##[endgroup]
2026-05-10T11:47:04.6814789Z ##[group]pnpm install in tools/save-format-doc
2026-05-10T11:47:04.9955637Z Lockfile is up to date, resolution step is skipped
2026-05-10T11:47:05.0273090Z Progress: resolved 1, reused 0, downloaded 0, added 0
2026-05-10T11:47:05.0432426Z Packages: +52
2026-05-10T11:47:05.0435097Z ++++++++++++++++++++++++++++++++++++++++++++++++++++
2026-05-10T11:47:05.1893356Z Progress: resolved 52, reused 52, downloaded 0, added 52, done
2026-05-10T11:47:05.2626885Z 
2026-05-10T11:47:05.2627651Z devDependencies:
2026-05-10T11:47:05.2628445Z + @types/node 25.6.0
2026-05-10T11:47:05.2629077Z + tsx 4.21.0
2026-05-10T11:47:05.2629743Z + typescript 5.6.3
2026-05-10T11:47:05.2630343Z + vitest 4.1.5
2026-05-10T11:47:05.2630783Z 
2026-05-10T11:47:05.2717933Z ╭ Warning ─────────────────────────────────────────────────────────────────────╮
2026-05-10T11:47:05.2719373Z │                                                                              │
2026-05-10T11:47:05.2720997Z │   Ignored build scripts: esbuild@0.27.7.                                     │
2026-05-10T11:47:05.2722668Z │   Run "pnpm approve-builds" to pick which dependencies should be allowed     │
2026-05-10T11:47:05.2724114Z │   to run scripts.                                                            │
2026-05-10T11:47:05.2725383Z │                                                                              │
2026-05-10T11:47:05.2727042Z ╰──────────────────────────────────────────────────────────────────────────────╯
2026-05-10T11:47:05.2768606Z Done in 572ms using pnpm v10.33.4
2026-05-10T11:47:05.2864308Z ##[endgroup]
2026-05-10T11:47:05.2909530Z ##[group]Run pnpm -r --filter "@rebno/*" build
2026-05-10T11:47:05.2910191Z [36;1mpnpm -r --filter "@rebno/*" build[0m
2026-05-10T11:47:05.2942436Z shell: /usr/bin/bash -e {0}
2026-05-10T11:47:05.2942875Z env:
2026-05-10T11:47:05.2943313Z   PNPM_HOME: /home/runner/setup-pnpm/node_modules/.bin
2026-05-10T11:47:05.2943869Z ##[endgroup]
2026-05-10T11:47:05.6215470Z Scope: 5 of 6 workspace projects
2026-05-10T11:47:05.6242517Z packages/db build$ tsc
2026-05-10T11:47:05.6252296Z packages/game-logic build$ tsc
2026-05-10T11:47:08.1993208Z packages/game-logic build: Done
2026-05-10T11:47:08.2033025Z packages/protocol prebuild$ node scripts/sync-from-tools-protocol-doc.mjs
2026-05-10T11:47:08.2503012Z packages/protocol prebuild: synced legacy-opcodes from /home/runner/work/rebno/rebno/tools/protocol-doc/output/protocol.ts
2026-05-10T11:47:08.2602665Z packages/protocol prebuild: Done
2026-05-10T11:47:08.2667875Z packages/protocol build$ tsc
2026-05-10T11:47:10.6518193Z packages/db build: Done
2026-05-10T11:47:11.8455839Z packages/protocol build: Done
2026-05-10T11:47:11.8464518Z apps/server build$ tsc -b
2026-05-10T11:47:18.8026162Z apps/server build: Done
2026-05-10T11:47:18.8157646Z ##[group]Run pnpm verify:phase-4
2026-05-10T11:47:18.8157979Z [36;1mpnpm verify:phase-4[0m
2026-05-10T11:47:18.8179328Z shell: /usr/bin/bash -e {0}
2026-05-10T11:47:18.8179589Z env:
2026-05-10T11:47:18.8179847Z   PNPM_HOME: /home/runner/setup-pnpm/node_modules/.bin
2026-05-10T11:47:18.8180174Z   SKIP_PHASE_3_CARRYOVER: 1
2026-05-10T11:47:18.8180582Z   SKIP_TRACE_CHECK: 1
2026-05-10T11:47:18.8180796Z ##[endgroup]
2026-05-10T11:47:19.1233366Z 
2026-05-10T11:47:19.1293118Z > rebno@0.0.0 verify:phase-4 /home/runner/work/rebno/rebno
2026-05-10T11:47:19.1442632Z > node scripts/verify-phase-4.mjs
2026-05-10T11:47:19.1443398Z 
2026-05-10T11:47:19.1596816Z 
2026-05-10T11:47:19.1597117Z === Workspace: typecheck ===
2026-05-10T11:47:19.1597665Z >>> pnpm -r typecheck
2026-05-10T11:47:19.5002191Z Scope: 5 of 6 workspace projects
2026-05-10T11:47:19.5049295Z packages/db typecheck$ tsc --noEmit
2026-05-10T11:47:19.5057715Z packages/game-logic typecheck$ tsc --noEmit
2026-05-10T11:47:22.0593230Z packages/game-logic typecheck: Done
2026-05-10T11:47:22.0608038Z packages/protocol typecheck$ tsc --noEmit
2026-05-10T11:47:24.2779164Z packages/db typecheck: Done
2026-05-10T11:47:25.4997341Z packages/protocol typecheck: Done
2026-05-10T11:47:25.5010124Z apps/client typecheck$ tsc --noEmit
2026-05-10T11:47:25.5013306Z apps/server typecheck$ tsc --noEmit
2026-05-10T11:47:36.3832377Z apps/client typecheck: Done
2026-05-10T11:47:37.4438044Z apps/server typecheck: Done
2026-05-10T11:47:37.4542490Z 
2026-05-10T11:47:37.4563218Z === Lint: protocol-sync ===
2026-05-10T11:47:37.4563786Z >>> pnpm lint:protocol-sync
2026-05-10T11:47:37.7563326Z 
2026-05-10T11:47:37.7564311Z > rebno@0.0.0 lint:protocol-sync /home/runner/work/rebno/rebno
2026-05-10T11:47:37.7565676Z > node tools/scripts/lint-protocol-sync.mjs
2026-05-10T11:47:37.7566396Z 
2026-05-10T11:47:37.7863414Z lint-protocol-sync: OK
2026-05-10T11:47:37.7978373Z 
2026-05-10T11:47:37.7979037Z === Lint: game-logic-purity ===
2026-05-10T11:47:37.7979954Z >>> pnpm lint:game-logic-purity
2026-05-10T11:47:38.0981685Z 
2026-05-10T11:47:38.0982961Z > rebno@0.0.0 lint:game-logic-purity /home/runner/work/rebno/rebno
2026-05-10T11:47:38.0984339Z > node tools/scripts/lint-game-logic-purity.mjs
2026-05-10T11:47:38.0984957Z 
2026-05-10T11:47:38.1281479Z lint-game-logic-purity: OK (6 file(s) clean)
2026-05-10T11:47:38.1394502Z 
2026-05-10T11:47:38.1395115Z === Lint: better-auth-schema-sync ===
2026-05-10T11:47:38.1396183Z >>> pnpm lint:better-auth-schema-sync
2026-05-10T11:47:38.4449862Z 
2026-05-10T11:47:38.4450920Z > rebno@0.0.0 lint:better-auth-schema-sync /home/runner/work/rebno/rebno
2026-05-10T11:47:38.4452534Z > node tools/scripts/lint-better-auth-schema-sync.mjs
2026-05-10T11:47:38.4453302Z 
2026-05-10T11:47:40.0930980Z lint-better-auth-schema-sync: OK
2026-05-10T11:47:40.1051364Z 
2026-05-10T11:47:40.1052317Z === Lint: rate-limit-budgets ===
2026-05-10T11:47:40.1053340Z >>> pnpm lint:rate-limit-budgets
2026-05-10T11:47:40.4067847Z 
2026-05-10T11:47:40.4068895Z > rebno@0.0.0 lint:rate-limit-budgets /home/runner/work/rebno/rebno
2026-05-10T11:47:40.4070270Z > node tools/scripts/lint-rate-limit-budgets.mjs
2026-05-10T11:47:40.4070932Z 
2026-05-10T11:47:40.4369834Z lint-rate-limit-budgets: OK (5 D-22 budgets locked)
2026-05-10T11:47:40.4482458Z 
2026-05-10T11:47:40.4483070Z === Lint: no-clipboard-rce ===
2026-05-10T11:47:40.4483907Z >>> pnpm lint:no-clipboard-rce
2026-05-10T11:47:40.7531324Z 
2026-05-10T11:47:40.7532611Z > rebno@0.0.0 lint:no-clipboard-rce /home/runner/work/rebno/rebno
2026-05-10T11:47:40.7533964Z > node tools/scripts/lint-no-clipboard-rce.mjs
2026-05-10T11:47:40.7534584Z 
2026-05-10T11:47:40.7874875Z lint-no-clipboard-rce: OK (21 file(s) clean)
2026-05-10T11:47:40.7992575Z 
2026-05-10T11:47:40.7993081Z === Lint: room-layout ===
2026-05-10T11:47:40.7993864Z >>> pnpm lint:room-layout
2026-05-10T11:47:41.1026848Z 
2026-05-10T11:47:41.1027838Z > rebno@0.0.0 lint:room-layout /home/runner/work/rebno/rebno
2026-05-10T11:47:41.1029622Z > node tools/scripts/lint-room-layout.mjs
2026-05-10T11:47:41.1030342Z 
2026-05-10T11:47:41.1360717Z lint-room-layout: OK
2026-05-10T11:47:41.1478769Z 
2026-05-10T11:47:41.1479297Z === ADR 0004 lint ===
2026-05-10T11:47:41.1480013Z >>> pnpm lint:adr:0004
2026-05-10T11:47:41.4533759Z 
2026-05-10T11:47:41.4534817Z > rebno@0.0.0 lint:adr:0004 /home/runner/work/rebno/rebno
2026-05-10T11:47:41.4536365Z > node tools/asset-catalog/scripts/lint-adr.mjs docs/adr/0004-room-hot-reload.md --no-matrix
2026-05-10T11:47:41.4537748Z 
2026-05-10T11:47:41.4831323Z OK: ADR docs/adr/0004-room-hot-reload.md validated (no-matrix mode — Michael Nygard sections present)
2026-05-10T11:47:41.4943895Z 
2026-05-10T11:47:41.4944370Z === Drizzle: emit-check ===
2026-05-10T11:47:41.4945268Z >>> pnpm db:emit-check
2026-05-10T11:47:41.8132655Z 
2026-05-10T11:47:41.8133685Z > rebno@0.0.0 db:emit-check /home/runner/work/rebno/rebno
2026-05-10T11:47:41.8136774Z > 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:47:41.8139024Z 
2026-05-10T11:47:42.2589232Z No config path provided, using default 'drizzle.config.ts'
2026-05-10T11:47:42.2591387Z Reading config file '/home/runner/work/rebno/rebno/packages/db/drizzle.config.ts'
2026-05-10T11:47:42.6992353Z 8 tables
2026-05-10T11:47:42.6993279Z accounts 8 columns 1 indexes 0 fks
2026-05-10T11:47:42.6994182Z audit_log 6 columns 0 indexes 2 fks
2026-05-10T11:47:42.6995023Z characters 9 columns 0 indexes 1 fks
2026-05-10T11:47:42.6998299Z inventory_items 4 columns 0 indexes 1 fks
2026-05-10T11:47:42.6999280Z legacy_credentials_staging 6 columns 0 indexes 0 fks
2026-05-10T11:47:42.7000306Z message_board_replies 5 columns 0 indexes 2 fks
2026-05-10T11:47:42.7001269Z message_board_topics 7 columns 0 indexes 1 fks
2026-05-10T11:47:42.7002354Z sessions 5 columns 0 indexes 1 fks
2026-05-10T11:47:42.7002699Z 
2026-05-10T11:47:42.7003323Z No schema changes, nothing to migrate 😴
2026-05-10T11:47:43.0442899Z 
2026-05-10T11:47:43.0454042Z === Drizzle: schema-sync ===
2026-05-10T11:47:43.0454588Z >>> pnpm lint:schema-sync
2026-05-10T11:47:43.3471101Z 
2026-05-10T11:47:43.3472358Z > rebno@0.0.0 lint:schema-sync /home/runner/work/rebno/rebno
2026-05-10T11:47:43.3503276Z > 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:47:43.3505551Z 
2026-05-10T11:47:43.3745770Z OK
2026-05-10T11:47:43.3871617Z 
2026-05-10T11:47:43.3872449Z === Drizzle: source-comments ===
2026-05-10T11:47:43.3873136Z >>> pnpm lint:source-comments
2026-05-10T11:47:43.7047738Z 
2026-05-10T11:47:43.7048896Z > rebno@0.0.0 lint:source-comments /home/runner/work/rebno/rebno
2026-05-10T11:47:43.7050725Z > pnpm -C packages/db run lint:source-comments
2026-05-10T11:47:43.7051456Z 
2026-05-10T11:47:44.0109483Z 
2026-05-10T11:47:44.0110706Z > @rebno/db@0.1.0 lint:source-comments /home/runner/work/rebno/rebno/packages/db
2026-05-10T11:47:44.0112694Z > node scripts/check-source-comments.mjs
2026-05-10T11:47:44.0113359Z 
2026-05-10T11:47:44.0416269Z check-source-comments: OK (50 columns, all SOURCE-cited)
2026-05-10T11:47:44.0619417Z 
2026-05-10T11:47:44.0619919Z === Workspace: test ===
2026-05-10T11:47:44.0621095Z >>> pnpm -r test
2026-05-10T11:47:44.3909871Z Scope: 5 of 6 workspace projects
2026-05-10T11:47:44.3965322Z packages/db test$ vitest run
2026-05-10T11:47:44.3974199Z packages/game-logic test$ vitest run
2026-05-10T11:47:44.9166754Z 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:47:44.9169427Z 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:47:45.3087907Z packages/game-logic test:  [32m✓[39m test/golden.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 15[2mms[22m[39m
2026-05-10T11:47:45.5093617Z 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:47:45.7391353Z 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:47:45.9559766Z packages/db test:  [32m✓[39m tests/promotion.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 9[2mms[22m[39m
2026-05-10T11:47:45.9829608Z packages/game-logic test:  [32m✓[39m test/rng.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 9[2mms[22m[39m
2026-05-10T11:47:45.9831609Z packages/game-logic test: [2m Test Files [22m [1m[32m4 passed[39m[22m[90m (4)[39m
2026-05-10T11:47:45.9834084Z packages/game-logic test: [2m      Tests [22m [1m[32m21 passed[39m[22m[90m (21)[39m
2026-05-10T11:47:45.9835656Z packages/game-logic test: [2m   Start at [22m 11:47:44
2026-05-10T11:47:45.9837823Z packages/game-logic test: [2m   Duration [22m 1.06s[2m (transform 132ms, setup 0ms, import 221ms, tests 52ms, environment 1ms)[22m
2026-05-10T11:47:46.0186321Z packages/game-logic test: Done
2026-05-10T11:47:46.0202959Z packages/protocol test$ vitest run
2026-05-10T11:47:46.1874244Z 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:47:46.5238314Z 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:47:46.9179946Z packages/protocol test:  [32m✓[39m test/codec.test.ts [2m([22m[2m18 tests[22m[2m)[22m[32m 22[2mms[22m[39m
2026-05-10T11:47:47.0675610Z packages/db test:  [32m✓[39m tests/schema-shape.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 14[2mms[22m[39m
2026-05-10T11:47:47.0717421Z packages/db test: [2m Test Files [22m [1m[32m3 passed[39m[22m[90m (3)[39m
2026-05-10T11:47:47.0733043Z packages/db test: [2m      Tests [22m [1m[32m22 passed[39m[22m[90m (22)[39m
2026-05-10T11:47:47.0756974Z packages/db test: [2m   Start at [22m 11:47:44
2026-05-10T11:47:47.0773414Z packages/db test: [2m   Duration [22m 2.16s[2m (transform 181ms, setup 0ms, import 1.52s, tests 31ms, environment 1ms)[22m
2026-05-10T11:47:47.1066752Z packages/db test: Done
2026-05-10T11:47:47.1464560Z packages/protocol test:  [32m✓[39m test/intents.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-10T11:47:47.3137404Z 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:47:47.4672146Z packages/protocol test:  [32m✓[39m test/state.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 4[2mms[22m[39m
2026-05-10T11:47:47.4743663Z packages/protocol test: [2m Test Files [22m [1m[32m4 passed[39m[22m[90m (4)[39m
2026-05-10T11:47:47.4753190Z packages/protocol test: [2m      Tests [22m [1m[32m30 passed[39m[22m[90m (30)[39m
2026-05-10T11:47:47.4769822Z packages/protocol test: [2m   Start at [22m 11:47:46
2026-05-10T11:47:47.4775346Z packages/protocol test: [2m   Duration [22m 940ms[2m (transform 116ms, setup 0ms, import 240ms, tests 38ms, environment 1ms)[22m
2026-05-10T11:47:47.5093017Z packages/protocol test: Done
2026-05-10T11:47:47.5113905Z apps/client test$ vitest run --exclude 'test/e2e/**'
2026-05-10T11:47:47.5114817Z apps/server test$ vitest run --exclude 'test/**/*.integ.test.ts'
2026-05-10T11:47:48.0684046Z 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:47:48.1104659Z apps/client test: [1m[46m RUN [49m[22m [36mv3.2.4 [39m[90m/home/runner/work/rebno/rebno/apps/client[39m
2026-05-10T11:47:49.2374828Z apps/server test:  [32m✓[39m test/persistence.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 60[2mms[22m[39m
2026-05-10T11:47:49.5862905Z 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:47:49.6989947Z 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:47:49.7007052Z apps/client test: [22m[39mroom_layout signature did not verify — rendering skipped for mvp-lobby 000
2026-05-10T11:47:49.7146479Z apps/client test:  [32m✓[39m src/__test__/game-scene.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 155[2mms[22m[39m
2026-05-10T11:47:49.8774096Z 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:47:50.1874313Z apps/server test: {"level":40,"time":1778413670181,"pid":3219,"hostname":"runnervmeorf1","path":"/api/foo","msg":"staging_invite_rejected"}
2026-05-10T11:47:50.1921745Z apps/server test:  [32m✓[39m test/staging-invite.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 13[2mms[22m[39m
2026-05-10T11:47:50.1943314Z apps/server test: {"level":40,"time":1778413670185,"pid":3219,"hostname":"runnervmeorf1","path":"/api/foo","msg":"staging_invite_rejected"}
2026-05-10T11:47:50.1960000Z apps/server test: {"level":40,"time":1778413670186,"pid":3219,"hostname":"runnervmeorf1","path":"/api/foo","msg":"staging_invite_rejected"}
2026-05-10T11:47:50.8969642Z apps/client test:  [32m✓[39m src/__test__/login-scene.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 16[2mms[22m[39m
2026-05-10T11:47:51.0623903Z apps/server test: {"level":30,"time":1778413671059,"pid":3239,"hostname":"runnervmeorf1","password":"[Redacted]","session_token":"[Redacted]","msg":"login"}
2026-05-10T11:47:51.0699726Z apps/server test:  [32m✓[39m test/otel-init.test.ts [2m([22m[2m4 tests[22m[2m)[22m[33m 652[2mms[22m[39m
2026-05-10T11:47:51.0737863Z apps/server test:      [33m[2m✓[22m[39m does not throw when OTEL_EXPORTER_OTLP_ENDPOINT is unset [33m 552[2mms[22m[39m
2026-05-10T11:47:51.9843570Z 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:47:51.9873823Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-OjOYhr/rebno.db
2026-05-10T11:47:51.9875833Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-10T11:47:51.9877239Z apps/server test: [run-migrations] OK
2026-05-10T11:47:52.0054430Z 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:47:52.0105535Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-hCuIRW/rebno.db
2026-05-10T11:47:52.0138161Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-10T11:47:52.0164060Z apps/server test: [run-migrations] reconciled __drizzle_migrations for pre-bootstrap DB (Assumption A7) — seeded 0001_baseline
2026-05-10T11:47:52.0182868Z apps/server test: [run-migrations] OK
2026-05-10T11:47:52.0224281Z 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:47:52.0226676Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-53zKlz/rebno.db
2026-05-10T11:47:52.0243875Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-10T11:47:52.0245273Z apps/server test: [run-migrations] OK
2026-05-10T11:47:52.0259230Z 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:47:52.0261601Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-53zKlz/rebno.db
2026-05-10T11:47:52.0263589Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-10T11:47:52.0264880Z apps/server test: [run-migrations] OK
2026-05-10T11:47:52.0368490Z apps/server test:  [32m✓[39m test/run-migrations.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 70[2mms[22m[39m
2026-05-10T11:47:52.2176935Z apps/client test:  [32m✓[39m src/__test__/colyseus-client.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 16[2mms[22m[39m
2026-05-10T11:47:52.3254301Z apps/server test:  [32m✓[39m test/log.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 22[2mms[22m[39m
2026-05-10T11:47:52.5920776Z apps/server test:  [32m✓[39m test/admin-stubs.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 17[2mms[22m[39m
2026-05-10T11:47:52.9138846Z 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:47:53.1578340Z apps/server test:  [32m✓[39m test/health.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 8[2mms[22m[39m
2026-05-10T11:47:53.3958336Z apps/client test:  [32m✓[39m src/__test__/reconnect.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 112[2mms[22m[39m
2026-05-10T11:47:54.0010171Z apps/server test: [90mstdout[2m | test/tick-accumulator.test.ts
2026-05-10T11:47:54.0013517Z apps/server test: [22m[39m◇ injected env (50) from ../../../../../../../etc/environment // tip: ⌘ enable debugging { debug: true }
2026-05-10T11:47:54.0017880Z apps/server test: ℹ️  optional .env file not found: .env.test, .env
2026-05-10T11:47:54.6686460Z apps/client test:  [32m✓[39m src/__test__/chat-hud.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 128[2mms[22m[39m
2026-05-10T11:47:54.7298033Z 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:47:54.7373212Z apps/server test: [2m Test Files [22m [1m[32m11 passed[39m[22m[90m (11)[39m
2026-05-10T11:47:54.7378322Z apps/server test: [2m      Tests [22m [1m[32m61 passed[39m[22m[90m (61)[39m
2026-05-10T11:47:54.7393982Z apps/server test: [2m   Start at [22m 11:47:48
2026-05-10T11:47:54.7406111Z apps/server test: [2m   Duration [22m 6.66s[2m (transform 422ms, setup 0ms, import 3.37s, tests 909ms, environment 2ms)[22m
2026-05-10T11:47:54.7760122Z apps/server test: Done
2026-05-10T11:47:55.3830603Z apps/client test:  [32m✓[39m src/__test__/input-dispatcher.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 15[2mms[22m[39m
2026-05-10T11:47:56.1472942Z apps/client test:  [32m✓[39m src/__test__/force-reset-overlay.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 73[2mms[22m[39m
2026-05-10T11:47:56.8358481Z 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:47:57.5121676Z apps/client test:  [32m✓[39m src/__test__/extrapolation.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 5[2mms[22m[39m
2026-05-10T11:47:58.1829203Z apps/client test:  [32m✓[39m src/__test__/reconciler.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 6[2mms[22m[39m
2026-05-10T11:47:58.8601120Z apps/client test:  [32m✓[39m src/__test__/nameplate.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 25[2mms[22m[39m
2026-05-10T11:47:59.5409057Z apps/client test:  [32m✓[39m src/__test__/room-layout-verify.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 9[2mms[22m[39m
2026-05-10T11:48:00.2182274Z apps/client test:  [32m✓[39m src/__test__/auth-client.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-10T11:48:00.8909585Z apps/client test:  [32m✓[39m src/__test__/atlas-loader.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 8[2mms[22m[39m
2026-05-10T11:48:01.5397749Z apps/client test:  [32m✓[39m src/__test__/protocol-version-check.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 5[2mms[22m[39m
2026-05-10T11:48:02.2025648Z 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:48:02.2239283Z apps/client test: [2m Test Files [22m [1m[32m16 passed[39m[22m[90m (16)[39m
2026-05-10T11:48:02.2241138Z apps/client test: [2m      Tests [22m [1m[32m98 passed[39m[22m[2m | [22m[90m4 todo[39m[90m (102)[39m
2026-05-10T11:48:02.2257103Z apps/client test: [2m   Start at [22m 11:47:48
2026-05-10T11:48:02.2258935Z apps/client test: [2m   Duration [22m 14.11s[2m (transform 541ms, setup 48ms, collect 879ms, tests 589ms, environment 8.19s, prepare 1.58s)[22m
2026-05-10T11:48:02.3590872Z apps/client test: Done
2026-05-10T11:48:02.3669420Z 
2026-05-10T11:48:02.3670644Z verify-phase-4: OK (12 steps green)
2026-05-10T11:48:02.3830719Z ##[group]Run pnpm verify:phase-5
2026-05-10T11:48:02.3831032Z [36;1mpnpm verify:phase-5[0m
2026-05-10T11:48:02.3852468Z shell: /usr/bin/bash -e {0}
2026-05-10T11:48:02.3852721Z env:
2026-05-10T11:48:02.3852980Z   PNPM_HOME: /home/runner/setup-pnpm/node_modules/.bin
2026-05-10T11:48:02.3853308Z   SKIP_PHASE_3_CARRYOVER: 1
2026-05-10T11:48:02.3853544Z   SKIP_TRACE_CHECK: 1
2026-05-10T11:48:02.3853756Z ##[endgroup]
2026-05-10T11:48:02.6953155Z 
2026-05-10T11:48:02.6954251Z > rebno@0.0.0 verify:phase-5 /home/runner/work/rebno/rebno
2026-05-10T11:48:02.6957177Z > node scripts/verify-phase-5.mjs
2026-05-10T11:48:02.6957547Z 
2026-05-10T11:48:02.7275893Z 
2026-05-10T11:48:02.7276631Z === Phase 4 carry-over: verify-phase-4 ===
2026-05-10T11:48:02.7279544Z >>> pnpm verify:phase-4
2026-05-10T11:48:03.0371357Z 
2026-05-10T11:48:03.0450974Z > rebno@0.0.0 verify:phase-4 /home/runner/work/rebno/rebno
2026-05-10T11:48:03.0452474Z > node scripts/verify-phase-4.mjs
2026-05-10T11:48:03.0453453Z 
2026-05-10T11:48:03.0735595Z 
2026-05-10T11:48:03.0736975Z === Workspace: typecheck ===
2026-05-10T11:48:03.0745618Z >>> pnpm -r typecheck
2026-05-10T11:48:03.4173033Z Scope: 5 of 6 workspace projects
2026-05-10T11:48:03.4238692Z packages/db typecheck$ tsc --noEmit
2026-05-10T11:48:03.4258883Z packages/game-logic typecheck$ tsc --noEmit
2026-05-10T11:48:05.9591755Z packages/game-logic typecheck: Done
2026-05-10T11:48:05.9612847Z packages/protocol typecheck$ tsc --noEmit
2026-05-10T11:48:08.2177768Z packages/db typecheck: Done
2026-05-10T11:48:09.4337418Z packages/protocol typecheck: Done
2026-05-10T11:48:09.4344774Z apps/client typecheck$ tsc --noEmit
2026-05-10T11:48:09.4347544Z apps/server typecheck$ tsc --noEmit
2026-05-10T11:48:20.1454097Z apps/client typecheck: Done
2026-05-10T11:48:21.2718634Z apps/server typecheck: Done
2026-05-10T11:48:21.2818253Z 
2026-05-10T11:48:21.2818782Z === Lint: protocol-sync ===
2026-05-10T11:48:21.2819595Z >>> pnpm lint:protocol-sync
2026-05-10T11:48:21.5875738Z 
2026-05-10T11:48:21.5876843Z > rebno@0.0.0 lint:protocol-sync /home/runner/work/rebno/rebno
2026-05-10T11:48:21.5879794Z > node tools/scripts/lint-protocol-sync.mjs
2026-05-10T11:48:21.5880212Z 
2026-05-10T11:48:21.6184954Z lint-protocol-sync: OK
2026-05-10T11:48:21.6296360Z 
2026-05-10T11:48:21.6297085Z === Lint: game-logic-purity ===
2026-05-10T11:48:21.6298311Z >>> pnpm lint:game-logic-purity
2026-05-10T11:48:21.9341539Z 
2026-05-10T11:48:21.9353243Z > rebno@0.0.0 lint:game-logic-purity /home/runner/work/rebno/rebno
2026-05-10T11:48:21.9354503Z > node tools/scripts/lint-game-logic-purity.mjs
2026-05-10T11:48:21.9356952Z 
2026-05-10T11:48:21.9655258Z lint-game-logic-purity: OK (6 file(s) clean)
2026-05-10T11:48:21.9780305Z 
2026-05-10T11:48:21.9787019Z === Lint: better-auth-schema-sync ===
2026-05-10T11:48:21.9793425Z >>> pnpm lint:better-auth-schema-sync
2026-05-10T11:48:22.2807614Z 
2026-05-10T11:48:22.2808711Z > rebno@0.0.0 lint:better-auth-schema-sync /home/runner/work/rebno/rebno
2026-05-10T11:48:22.2811688Z > node tools/scripts/lint-better-auth-schema-sync.mjs
2026-05-10T11:48:22.2812406Z 
2026-05-10T11:48:23.7539167Z lint-better-auth-schema-sync: OK
2026-05-10T11:48:23.7663043Z 
2026-05-10T11:48:23.7663665Z === Lint: rate-limit-budgets ===
2026-05-10T11:48:23.7664903Z >>> pnpm lint:rate-limit-budgets
2026-05-10T11:48:24.0703369Z 
2026-05-10T11:48:24.0704784Z > rebno@0.0.0 lint:rate-limit-budgets /home/runner/work/rebno/rebno
2026-05-10T11:48:24.0706438Z > node tools/scripts/lint-rate-limit-budgets.mjs
2026-05-10T11:48:24.0707853Z 
2026-05-10T11:48:24.1021196Z lint-rate-limit-budgets: OK (5 D-22 budgets locked)
2026-05-10T11:48:24.1152725Z 
2026-05-10T11:48:24.1155208Z === Lint: no-clipboard-rce ===
2026-05-10T11:48:24.1155749Z >>> pnpm lint:no-clipboard-rce
2026-05-10T11:48:24.4172167Z 
2026-05-10T11:48:24.4173274Z > rebno@0.0.0 lint:no-clipboard-rce /home/runner/work/rebno/rebno
2026-05-10T11:48:24.4176239Z > node tools/scripts/lint-no-clipboard-rce.mjs
2026-05-10T11:48:24.4176665Z 
2026-05-10T11:48:24.4516823Z lint-no-clipboard-rce: OK (21 file(s) clean)
2026-05-10T11:48:24.4637953Z 
2026-05-10T11:48:24.4638429Z === Lint: room-layout ===
2026-05-10T11:48:24.4639204Z >>> pnpm lint:room-layout
2026-05-10T11:48:24.7672525Z 
2026-05-10T11:48:24.7673812Z > rebno@0.0.0 lint:room-layout /home/runner/work/rebno/rebno
2026-05-10T11:48:24.7675040Z > node tools/scripts/lint-room-layout.mjs
2026-05-10T11:48:24.7675721Z 
2026-05-10T11:48:24.8019748Z lint-room-layout: OK
2026-05-10T11:48:24.8137018Z 
2026-05-10T11:48:24.8137603Z === ADR 0004 lint ===
2026-05-10T11:48:24.8138569Z >>> pnpm lint:adr:0004
2026-05-10T11:48:25.1203677Z 
2026-05-10T11:48:25.1204643Z > rebno@0.0.0 lint:adr:0004 /home/runner/work/rebno/rebno
2026-05-10T11:48:25.1206266Z > node tools/asset-catalog/scripts/lint-adr.mjs docs/adr/0004-room-hot-reload.md --no-matrix
2026-05-10T11:48:25.1207211Z 
2026-05-10T11:48:25.1539198Z OK: ADR docs/adr/0004-room-hot-reload.md validated (no-matrix mode — Michael Nygard sections present)
2026-05-10T11:48:25.1662449Z 
2026-05-10T11:48:25.1662946Z === Drizzle: emit-check ===
2026-05-10T11:48:25.1663601Z >>> pnpm db:emit-check
2026-05-10T11:48:25.4829463Z 
2026-05-10T11:48:25.4830477Z > rebno@0.0.0 db:emit-check /home/runner/work/rebno/rebno
2026-05-10T11:48:25.4834097Z > 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:48:25.4836497Z 
2026-05-10T11:48:25.9459560Z No config path provided, using default 'drizzle.config.ts'
2026-05-10T11:48:25.9462982Z Reading config file '/home/runner/work/rebno/rebno/packages/db/drizzle.config.ts'
2026-05-10T11:48:26.3213195Z 8 tables
2026-05-10T11:48:26.3214036Z accounts 8 columns 1 indexes 0 fks
2026-05-10T11:48:26.3215045Z audit_log 6 columns 0 indexes 2 fks
2026-05-10T11:48:26.3215990Z characters 9 columns 0 indexes 1 fks
2026-05-10T11:48:26.3216946Z inventory_items 4 columns 0 indexes 1 fks
2026-05-10T11:48:26.3217836Z legacy_credentials_staging 6 columns 0 indexes 0 fks
2026-05-10T11:48:26.3218777Z message_board_replies 5 columns 0 indexes 2 fks
2026-05-10T11:48:26.3219773Z message_board_topics 7 columns 0 indexes 1 fks
2026-05-10T11:48:26.3220697Z sessions 5 columns 0 indexes 1 fks
2026-05-10T11:48:26.3221282Z 
2026-05-10T11:48:26.3222486Z No schema changes, nothing to migrate 😴
2026-05-10T11:48:26.4290711Z 
2026-05-10T11:48:26.4291412Z === Drizzle: schema-sync ===
2026-05-10T11:48:26.4293036Z >>> pnpm lint:schema-sync
2026-05-10T11:48:26.7432875Z 
2026-05-10T11:48:26.7433897Z > rebno@0.0.0 lint:schema-sync /home/runner/work/rebno/rebno
2026-05-10T11:48:26.7437771Z > 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:48:26.7440333Z 
2026-05-10T11:48:26.7699551Z OK
2026-05-10T11:48:26.7832921Z 
2026-05-10T11:48:26.7843075Z === Drizzle: source-comments ===
2026-05-10T11:48:26.7844800Z >>> pnpm lint:source-comments
2026-05-10T11:48:27.1217923Z 
2026-05-10T11:48:27.1218981Z > rebno@0.0.0 lint:source-comments /home/runner/work/rebno/rebno
2026-05-10T11:48:27.1220566Z > pnpm -C packages/db run lint:source-comments
2026-05-10T11:48:27.1221336Z 
2026-05-10T11:48:27.4420570Z 
2026-05-10T11:48:27.4421580Z > @rebno/db@0.1.0 lint:source-comments /home/runner/work/rebno/rebno/packages/db
2026-05-10T11:48:27.4423195Z > node scripts/check-source-comments.mjs
2026-05-10T11:48:27.4424376Z 
2026-05-10T11:48:27.4727751Z check-source-comments: OK (50 columns, all SOURCE-cited)
2026-05-10T11:48:27.4944871Z 
2026-05-10T11:48:27.4945594Z === Workspace: test ===
2026-05-10T11:48:27.4946348Z >>> pnpm -r test
2026-05-10T11:48:27.8344979Z Scope: 5 of 6 workspace projects
2026-05-10T11:48:27.8403236Z packages/db test$ vitest run
2026-05-10T11:48:27.8412674Z packages/game-logic test$ vitest run
2026-05-10T11:48:28.3634209Z 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:48:28.3663689Z 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:48:28.6974718Z 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:48:28.9904348Z 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:48:29.2384338Z 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:48:29.3764016Z packages/db test:  [32m✓[39m tests/schema-shape.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 15[2mms[22m[39m
2026-05-10T11:48:29.4811700Z packages/game-logic test:  [32m✓[39m test/accumulator.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 8[2mms[22m[39m
2026-05-10T11:48:29.4918133Z packages/game-logic test: [2m Test Files [22m [1m[32m4 passed[39m[22m[90m (4)[39m
2026-05-10T11:48:29.4952224Z packages/game-logic test: [2m      Tests [22m [1m[32m21 passed[39m[22m[90m (21)[39m
2026-05-10T11:48:29.4953557Z packages/game-logic test: [2m   Start at [22m 11:48:28
2026-05-10T11:48:29.4977833Z packages/game-logic test: [2m   Duration [22m 1.11s[2m (transform 125ms, setup 0ms, import 232ms, tests 47ms, environment 1ms)[22m
2026-05-10T11:48:29.5340956Z packages/game-logic test: Done
2026-05-10T11:48:29.5347927Z packages/protocol test$ vitest run
2026-05-10T11:48:30.0575191Z 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:48:30.2389131Z packages/db test:  [32m✓[39m tests/promotion.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 9[2mms[22m[39m
2026-05-10T11:48:30.5220711Z 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:48:30.5269485Z packages/protocol test:  [32m✓[39m test/codec.test.ts [2m([22m[2m18 tests[22m[2m)[22m[32m 25[2mms[22m[39m
2026-05-10T11:48:30.5294066Z packages/db test: [2m Test Files [22m [1m[32m3 passed[39m[22m[90m (3)[39m
2026-05-10T11:48:30.5295761Z packages/db test: [2m      Tests [22m [1m[32m22 passed[39m[22m[90m (22)[39m
2026-05-10T11:48:30.5312688Z packages/db test: [2m   Start at [22m 11:48:28
2026-05-10T11:48:30.5344741Z packages/db test: [2m   Duration [22m 2.16s[2m (transform 181ms, setup 0ms, import 1.48s, tests 32ms, environment 0ms)[22m
2026-05-10T11:48:30.5629544Z packages/db test: Done
2026-05-10T11:48:30.6999737Z packages/protocol test:  [32m✓[39m test/intents.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-10T11:48:30.8704198Z 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:48:31.0443710Z packages/protocol test:  [32m✓[39m test/state.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 4[2mms[22m[39m
2026-05-10T11:48:31.0493603Z packages/protocol test: [2m Test Files [22m [1m[32m4 passed[39m[22m[90m (4)[39m
2026-05-10T11:48:31.0500453Z packages/protocol test: [2m      Tests [22m [1m[32m30 passed[39m[22m[90m (30)[39m
2026-05-10T11:48:31.0507371Z packages/protocol test: [2m   Start at [22m 11:48:30
2026-05-10T11:48:31.0509323Z packages/protocol test: [2m   Duration [22m 982ms[2m (transform 141ms, setup 0ms, import 279ms, tests 41ms, environment 1ms)[22m
2026-05-10T11:48:31.0816137Z packages/protocol test: Done
2026-05-10T11:48:31.0822547Z apps/client test$ vitest run --exclude 'test/e2e/**'
2026-05-10T11:48:31.0824941Z apps/server test$ vitest run --exclude 'test/**/*.integ.test.ts'
2026-05-10T11:48:31.6584588Z 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:48:31.6727184Z apps/client test: [1m[46m RUN [49m[22m [36mv3.2.4 [39m[90m/home/runner/work/rebno/rebno/apps/client[39m
2026-05-10T11:48:32.6569437Z apps/server test: {"level":30,"time":1778413712655,"pid":4343,"hostname":"runnervmeorf1","password":"[Redacted]","session_token":"[Redacted]","msg":"login"}
2026-05-10T11:48:32.6624562Z apps/server test:  [32m✓[39m test/otel-init.test.ts [2m([22m[2m4 tests[22m[2m)[22m[33m 685[2mms[22m[39m
2026-05-10T11:48:32.6643626Z apps/server test:      [33m[2m✓[22m[39m does not throw when OTEL_EXPORTER_OTLP_ENDPOINT is unset [33m 570[2mms[22m[39m
2026-05-10T11:48:33.4904578Z 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:48:33.4906964Z apps/client test: [22m[39mroom_layout signature did not verify — rendering skipped for mvp-lobby 000
2026-05-10T11:48:33.5043818Z apps/client test:  [32m✓[39m src/__test__/game-scene.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 151[2mms[22m[39m
2026-05-10T11:48:33.7211173Z 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:48:33.7223680Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-OGvOoc/rebno.db
2026-05-10T11:48:33.7243243Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-10T11:48:33.7252916Z apps/server test: [run-migrations] OK
2026-05-10T11:48:33.7344444Z 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:48:33.7346509Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-vC0Aev/rebno.db
2026-05-10T11:48:33.7347997Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-10T11:48:33.7350452Z apps/server test: [run-migrations] reconciled __drizzle_migrations for pre-bootstrap DB (Assumption A7) — seeded 0001_baseline
2026-05-10T11:48:33.7351540Z apps/server test: [run-migrations] OK
2026-05-10T11:48:33.7464292Z 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:48:33.7486276Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-RHRtNO/rebno.db
2026-05-10T11:48:33.7495677Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-10T11:48:33.7532622Z apps/server test: [run-migrations] OK
2026-05-10T11:48:33.7564370Z 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:48:33.7593206Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-RHRtNO/rebno.db
2026-05-10T11:48:33.7605867Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-10T11:48:33.7623124Z apps/server test: [run-migrations] OK
2026-05-10T11:48:33.7625187Z apps/server test:  [32m✓[39m test/run-migrations.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 66[2mms[22m[39m
2026-05-10T11:48:34.6803163Z apps/client test:  [32m✓[39m src/__test__/chat-hud.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 140[2mms[22m[39m
2026-05-10T11:48:34.8869352Z apps/server test:  [32m✓[39m test/persistence.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 69[2mms[22m[39m
2026-05-10T11:48:35.2184098Z 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:48:35.4999505Z 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:48:35.7983742Z apps/server test:  [32m✓[39m test/log.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 20[2mms[22m[39m
2026-05-10T11:48:35.9545361Z apps/client test:  [32m✓[39m src/__test__/reconnect.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 112[2mms[22m[39m
2026-05-10T11:48:36.0434516Z apps/server test:  [32m✓[39m test/admin-stubs.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 9[2mms[22m[39m
2026-05-10T11:48:36.4194247Z apps/server test: {"level":40,"time":1778413716402,"pid":4471,"hostname":"runnervmeorf1","path":"/api/foo","msg":"staging_invite_rejected"}
2026-05-10T11:48:36.4196889Z apps/server test: {"level":40,"time":1778413716406,"pid":4471,"hostname":"runnervmeorf1","path":"/api/foo","msg":"staging_invite_rejected"}
2026-05-10T11:48:36.4347389Z apps/server test: {"level":40,"time":1778413716407,"pid":4471,"hostname":"runnervmeorf1","path":"/api/foo","msg":"staging_invite_rejected"}
2026-05-10T11:48:36.4373844Z apps/server test:  [32m✓[39m test/staging-invite.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 20[2mms[22m[39m
2026-05-10T11:48:36.6628778Z 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:48:37.2901678Z apps/client test:  [32m✓[39m src/__test__/force-reset-overlay.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 142[2mms[22m[39m
2026-05-10T11:48:37.5174166Z apps/server test: [90mstdout[2m | test/tick-accumulator.test.ts
2026-05-10T11:48:37.5183707Z apps/server test: [22m[39m◇ injected env (50) from ../../../../../../../etc/environment // tip: ◈ secrets for agents [www.dotenvx.com]
2026-05-10T11:48:37.5219936Z apps/server test: ℹ️  optional .env file not found: .env.test, .env
2026-05-10T11:48:38.2858451Z 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:48:38.3796085Z apps/client test:  [32m✓[39m src/__test__/nameplate.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 44[2mms[22m[39m
2026-05-10T11:48:38.5430356Z apps/server test:  [32m✓[39m test/health.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 8[2mms[22m[39m
2026-05-10T11:48:38.5432832Z apps/server test: [2m Test Files [22m [1m[32m11 passed[39m[22m[90m (11)[39m
2026-05-10T11:48:38.5434947Z apps/server test: [2m      Tests [22m [1m[32m61 passed[39m[22m[90m (61)[39m
2026-05-10T11:48:38.5462957Z apps/server test: [2m   Start at [22m 11:48:31
2026-05-10T11:48:38.5469894Z apps/server test: [2m   Duration [22m 6.86s[2m (transform 473ms, setup 0ms, import 3.51s, tests 943ms, environment 2ms)[22m
2026-05-10T11:48:38.6068918Z apps/server test: Done
2026-05-10T11:48:39.1735365Z apps/client test:  [32m✓[39m src/__test__/login-scene.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 10[2mms[22m[39m
2026-05-10T11:48:39.9588017Z apps/client test:  [32m✓[39m src/__test__/colyseus-client.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 11[2mms[22m[39m
2026-05-10T11:48:40.6658346Z apps/client test:  [32m✓[39m src/__test__/input-dispatcher.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 15[2mms[22m[39m
2026-05-10T11:48:41.3562466Z apps/client test:  [32m✓[39m src/__test__/room-layout-verify.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 9[2mms[22m[39m
2026-05-10T11:48:42.0472775Z apps/client test:  [32m✓[39m src/__test__/atlas-loader.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 8[2mms[22m[39m
2026-05-10T11:48:42.7135862Z apps/client test:  [32m✓[39m src/__test__/auth-client.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-10T11:48:43.4170120Z apps/client test:  [32m✓[39m src/__test__/reconciler.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 6[2mms[22m[39m
2026-05-10T11:48:44.0938886Z 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:48:44.7886387Z apps/client test:  [32m✓[39m src/__test__/extrapolation.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 5[2mms[22m[39m
2026-05-10T11:48:45.4382606Z apps/client test:  [32m✓[39m src/__test__/protocol-version-check.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 5[2mms[22m[39m
2026-05-10T11:48:46.1129540Z 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:48:46.1319336Z apps/client test: [2m Test Files [22m [1m[32m16 passed[39m[22m[90m (16)[39m
2026-05-10T11:48:46.1343612Z apps/client test: [2m      Tests [22m [1m[32m98 passed[39m[22m[2m | [22m[90m4 todo[39m[90m (102)[39m
2026-05-10T11:48:46.1349350Z apps/client test: [2m   Start at [22m 11:48:31
2026-05-10T11:48:46.1351724Z apps/client test: [2m   Duration [22m 14.46s[2m (transform 565ms, setup 66ms, collect 843ms, tests 673ms, environment 8.36s, prepare 1.63s)[22m
2026-05-10T11:48:46.2693526Z apps/client test: Done
2026-05-10T11:48:46.2771270Z 
2026-05-10T11:48:46.2772690Z verify-phase-4: OK (12 steps green)
2026-05-10T11:48:46.2879078Z 
2026-05-10T11:48:46.2879575Z === Workspace: typecheck ===
2026-05-10T11:48:46.2880378Z >>> pnpm -r typecheck
2026-05-10T11:48:46.5980107Z Scope: 5 of 6 workspace projects
2026-05-10T11:48:46.6034825Z packages/db typecheck$ tsc --noEmit
2026-05-10T11:48:46.6044451Z packages/game-logic typecheck$ tsc --noEmit
2026-05-10T11:48:49.2054245Z packages/game-logic typecheck: Done
2026-05-10T11:48:49.2103723Z packages/protocol typecheck$ tsc --noEmit
2026-05-10T11:48:51.1843151Z packages/db typecheck: Done
2026-05-10T11:48:52.5932282Z packages/protocol typecheck: Done
2026-05-10T11:48:52.5938965Z apps/client typecheck$ tsc --noEmit
2026-05-10T11:48:52.5942343Z apps/server typecheck$ tsc --noEmit
2026-05-10T11:49:03.5540851Z apps/client typecheck: Done
2026-05-10T11:49:04.4198431Z apps/server typecheck: Done
2026-05-10T11:49:04.4479659Z 
2026-05-10T11:49:04.4480180Z === Lint: deploy-stack ===
2026-05-10T11:49:04.4481395Z >>> pnpm lint:deploy-stack
2026-05-10T11:49:04.7502401Z 
2026-05-10T11:49:04.7503685Z > rebno@0.0.0 lint:deploy-stack /home/runner/work/rebno/rebno
2026-05-10T11:49:04.7505075Z > node tools/scripts/lint-deploy-stack.mjs
2026-05-10T11:49:04.7505730Z 
2026-05-10T11:49:04.7804699Z lint-deploy-stack: docker-entrypoint.sh: missing run-migrations.js call (D-09 BLOCKING)
2026-05-10T11:49:04.7953227Z  ELIFECYCLE  Command failed with exit code 1.
2026-05-10T11:49:04.8139582Z 
2026-05-10T11:49:04.8142567Z verify-phase-5 FAILED at step 'Lint: deploy-stack': pnpm lint:deploy-stack (exit 1)
2026-05-10T11:49:04.8144267Z Fix the failing step and re-run `pnpm verify:phase-5`.
2026-05-10T11:49:04.8298618Z  ELIFECYCLE  Command failed with exit code 1.
2026-05-10T11:49:04.8481354Z ##[error]Process completed with exit code 1.
2026-05-10T11:49:04.8620685Z ##[group]Run actions/upload-artifact@v4
2026-05-10T11:49:04.8620989Z with:
2026-05-10T11:49:04.8621204Z   name: playwright-cli-08-25627897975
2026-05-10T11:49:04.8621567Z   path: apps/client/playwright-report
apps/client/test-results

2026-05-10T11:49:04.8622136Z   retention-days: 14
2026-05-10T11:49:04.8622365Z   if-no-files-found: warn
2026-05-10T11:49:04.8622595Z   compression-level: 6
2026-05-10T11:49:04.8622811Z   overwrite: false
2026-05-10T11:49:04.8623025Z   include-hidden-files: false
2026-05-10T11:49:04.8623495Z env:
2026-05-10T11:49:04.8623744Z   PNPM_HOME: /home/runner/setup-pnpm/node_modules/.bin
2026-05-10T11:49:04.8624072Z ##[endgroup]
2026-05-10T11:49:05.0893357Z Multiple search paths detected. Calculating the least common ancestor of all paths
2026-05-10T11:49:05.0896213Z The least common ancestor is /home/runner/work/rebno/rebno/apps/client. This will be the root directory of the artifact
2026-05-10T11:49:05.0915049Z ##[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:49:05.1013090Z Post job cleanup.
2026-05-10T11:49:05.2447657Z Pruning is unnecessary.
2026-05-10T11:49:05.2662608Z Post job cleanup.
2026-05-10T11:49:05.4222566Z [command]/usr/bin/git version
2026-05-10T11:49:05.4282659Z git version 2.53.0
2026-05-10T11:49:05.4374611Z Temporarily overriding HOME='/home/runner/work/_temp/7c83374d-e370-445e-a0a4-67b1be21f425' before making global git config changes
2026-05-10T11:49:05.4376309Z Adding repository directory to the temporary git global config as a safe directory
2026-05-10T11:49:05.4377779Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/rebno/rebno
2026-05-10T11:49:05.4445627Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-05-10T11:49:05.4503717Z [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:49:05.4894636Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
2026-05-10T11:49:05.4939885Z http.https://github.com/.extraheader
2026-05-10T11:49:05.4967808Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader
2026-05-10T11:49:05.5034806Z [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:49:05.5403344Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
2026-05-10T11:49:05.5487296Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
2026-05-10T11:49:05.5939495Z Cleaning up orphan processes
2026-05-10T11:49:05.6306091Z ##[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/
