timeout 30min testdeploy
pt0/startHere/klustersF/dodemo/sync_gameswc.mjs
pt0/startHere/klustersF/dodemo/sync_donateapp.mjs
runtests
pt0/startHere/klustersF/dodemo/sync_donatedb.mjs
pt0/startHere/klustersF/vultr2/sync.mjs
pt0/deployF/testsF/sepPtTestsF.mjs
in series. can retry flakes once and if actual failure skip so i can see full results at end
briefly look into failures & summarize/report back but don't fix anything
⚙ todowrite
→ testdeploy sync_gameswc.mjs
○ testdeploy sync_donateapp.mjs
○ runtests sync_donatedb.mjs
○ runtests sync.mjs (vultr2)
○ runtests sepPtTestsF.mjs
○ Summarize failures
⚙ bash testdeploy gameswc
testdeploy: ~1m local + ~11m apply + ~1m deployed (~14m total)
runtests --ptenv=testlocal --suite=unit,health,server,db
1/1 PASS unit:shortModelNamesUnique 12 models
1/2 PASS healthgql:gqlBreaksFalse 127.0.0.1:3011/
2/2 PASS healthgql:gqlWorksTrue 127.0.0.1:3011/
1/15 PASS auth:reqEmailLoginWorks
2/15 PASS auth:badOtpRejected
3/15 PASS auth:validOtpReturnsToken
4/15 PASS auth:tokenResolvesToUser authtest-1774123574889@test.example.com
5/15 PASS auth:badTokenReturnsNull
6/15 PASS auth:emailLoginLinkSetsCookie user1tok
7/15 PASS auth:emailLoginLinkShowsLoggedIn
8/15 PASS auth:createGameRoom silk-brass-plum-plain
9/15 PASS auth:createGameRoomIdempotent silk-brass-plum-plain
10/15 PASS auth:createGameRoomRequiresAuth
11/15 PASS auth:nonexistentRoomRejected
12/15 PASS auth:nonexistentRoomActionRejected
13/15 PASS auth:resecureRoomChangesLabel silk-brass-plum-plain -> cold-crystal-wave-tree
14/15 PASS auth:resecureRoomRequiresHost
15/15 PASS auth:resecureRoomNonHostRejected
1/17 PASS state:happyPath4Players 6 rounds
2/17 PASS state:playerLeaveMidGame 5 rounds
3/17 PASS state:wrongStackRejected
4/17 PASS state:largePlayers 8p, 10 rounds
5/17 PASS state:tooFewPlayersBlocked
6/17 PASS state:rejoinAfterLeave
7/17 PASS state:rejoinAfterAwolKick testplayer1
8/17 PASS state:emptySubmissionRejected
9/17 PASS state:kickAfterGraceInitialPrompt testplayer1
10/17 PASS state:kickAfterGrace testplayer1 5s overdue
11/17 PASS state:gameCompletesWith3PlayersAnd4Stacks 3p, 5 stacks, 6 rounds
12/17 PASS state:gameCompletesAfterAwolKick 5 rounds
13/17 PASS state:aiToggleDisablesEndOfGameDrawings
14/17 PASS state:aiToggleEnablesEndOfGameDrawings 5 drawings, replay verified
15/17 PASS state:kickWithBlockIpPreventsRejoin
16/17 PASS state:resetBlockedIpsAllowsRejoin
17/17 PASS state:kickWithoutBlockIpAllowsRejoin
1/8 PASS hardening:queryDepthLimitEnforced
2/8 PASS hardening:normalDepthQueryAllowed
3/8 PASS hardening:batchedRequestsRejected
4/8 PASS hardening:oversizedPlayerAliasRejected 40 chars
5/8 PASS hardening:oversizedDescriptionRejected 350 chars
6/8 PASS hardening:oversizedPayloadRejected ~147KB
7/8 PASS hardening:normalSizedInputsAllowed
8/8 PASS hardening:stickySessionAnnotation skipped (testlocal)
1/10 PASS db:e6ee9eeb613b58d8b7e29664a2fd8fc8 24 actions (13d ago)
2/10 PASS db:9102508541f75582b0392fb0b7979813 24 actions (14d ago)
3/10 PASS db:6d63fbf33243562084fe7c2a3b3243be 52 actions (18d ago)
4/10 PASS db:29b097ff32455588b5142d57cbdf215a 37 actions (30d ago)
5/10 PASS db:3920998d97d85a4cbd936f1ada9eb403 26 actions (37d ago)
6/10 PASS db:9bb2a0a5d09f5b17a685147249100359 32 actions (51d ago)
7/10 PASS db:eecdfde4080f5a3a9e4ced782cc88093 34 actions (72d ago)
8/10 PASS db:37c3b2af947a5960ae1250b4697a3af4 34 actions (86d ago)
9/10 PASS db:2356b5f7f33c5db39b6b8ce5079e945e 4 actions (100d ago)
10/10 PASS db:5977c872d1bf517b835167c9ad89bcfc 30 actions (106d ago)
Round 1: 4 actions
Round 2: 4 actions
Round 3: 3 actions
Round 4: 3 actions
Round 5: 4 actions
Round 6: 3 actions
Round 7: 1 actions
Round 8: 2 actions
Round 9: 1 actions 1/1 PASS ui:happyPath4Players
========================================
PASS [unit] 1/1 unit tests passed
PASS [health] all passed
PASS [server] all passed
PASS [db] all passed
All 4 suites passed!
apply
1.7s k8s dodemo patch: secrets2-exceptionemail-token (secret), secrets2-gamesdemokdb-qs (secret), secrets2-demok-fm-smtp-json (secret), secrets2-demok-fm-imap-json (secret), secrets2-drawgame-openrouter (secret), secrets2-gamesapp-appsecret (secret)
3.0s commitexists 28a421948b89ac0f09ac4ac0b6a1d73062e5cefb (on harv3demo-gitssh)
10.2s k8s harv3demo create: gamesdev-rnt-bc574b8e6 (configmap)
10.8s k8s harv3demo create: gamesdev-rnt-bc574b8e6-tarspecs (configmap)
12.0s k8s harv3demo cantupdate: kanikocache-gitssh (pvc)
15.2s k8s harv3demo patch: regcred-dock2reg-dodemo (secret)
16.0s nextbuild kanikobuild Pending (gitclone: PodInitializing) Pending (gitclone running) Pending (prebuild running)... streaming (running 2m)
2026-03-21T20:08:37.073764347Z INFO[0000] Resolved base name node:24.0.1-bookworm to yarninstallstage
2026-03-21T20:08:37.073824960Z INFO[0000] Using dockerignore file: /kanwork/.dockerignore
2026-03-21T20:08:37.073857712Z INFO[0000] Retrieving image manifest node:24.0.1-bookworm
2026-03-21T20:08:37.073879283Z INFO[0000] Retrieving image node:24.0.1-bookworm from registry index.docker.io
2026-03-21T20:08:37.408127321Z INFO[0000] Retrieving image manifest node:24.0.1-bookworm
2026-03-21T20:08:37.408158113Z INFO[0000] Returning cached image manifest
2026-03-21T20:08:37.584096199Z INFO[0000] Built cross stage deps: map[]
2026-03-21T20:08:37.584124181Z INFO[0000] Retrieving image manifest node:24.0.1-bookworm
2026-03-21T20:08:37.584128981Z INFO[0000] Returning cached image manifest
2026-03-21T20:08:37.584143652Z INFO[0000] Retrieving image manifest node:24.0.1-bookworm
2026-03-21T20:08:37.584148292Z INFO[0000] Returning cached image manifest
2026-03-21T20:08:37.584367784Z INFO[0000] Executing 0 build triggers
2026-03-21T20:08:37.584841659Z INFO[0000] Building stage 'node:24.0.1-bookworm' [idx: '0', base-idx: '-1']
2026-03-21T20:08:37.584893122Z INFO[0000] Checking for cached layer dock2reg.dodemo.demokluster.com/peat/peat/cache:60d147788af2b9b16b24da212b1ab825434258f9c474a908a18f66ac131a0818...
2026-03-21T20:08:37.868740590Z INFO[0001] Using caching version of cmd: RUN echo dockbump39 && apt-get update && apt-get install -y apt-transport-https && echo omg
2026-03-21T20:08:37.870877895Z INFO[0001] Using files from context: [/kanwork/tmpdockertars/ptdeploy2slice-12cnt-b855e360d083267a0272cb5b2f4dcd2428bfea23.tar.gz]
2026-03-21T20:08:37.873442712Z INFO[0001] Using files from context: [/kanwork/tmpdockertars/pnpm-deploy-gamesapp-nodemodules.tar.gz]
2026-03-21T20:08:38.312614409Z INFO[0001] Using files from context: [/kanwork/tmpdockertars/ptdeploy2slice-302cnt-9b78682f3af39473248cfaa24738db46f7ba6b3c.tar.gz]
2026-03-21T20:08:38.312979399Z INFO[0001] Checking for cached layer dock2reg.dodemo.demokluster.com/peat/peat/cache:4576393bb70175c25a187fe4cc06c435e71a56e27cde2fe3d3c108adaa72d6a8...
2026-03-21T20:08:38.528484263Z INFO[0001] No cached layer found for cmd RUN --mount=type=cache,id=nextbuild6e8dca47f,target=/approot/pt0/gamesapp/.next/cache echo nextbuild6e8dca47f && npx next build
2026-03-21T20:08:38.528534866Z INFO[0001] Unpacking rootfs as cmd ADD tmpdockertars/ptdeploy2slice-12cnt-b855e360d083267a0272cb5b2f4dcd2428bfea23.tar.gz . requires it.
2026-03-21T20:08:53.185680720Z INFO[0016] WORKDIR /approot
2026-03-21T20:08:53.185727123Z INFO[0016] Cmd: workdir
2026-03-21T20:08:53.185747904Z INFO[0016] Changed working directory to /approot
2026-03-21T20:08:53.185815097Z INFO[0016] No files changed in this command, skipping snapshotting.
2026-03-21T20:08:53.185867910Z INFO[0016] RUN echo dockbump39 && apt-get update && apt-get install -y apt-transport-https && echo omg
2026-03-21T20:08:53.185880101Z INFO[0016] Found cached layer, extracting to filesystem
2026-03-21T20:08:55.190058523Z INFO[0018] Using files from context: [/kanwork/tmpdockertars/ptdeploy2slice-12cnt-b855e360d083267a0272cb5b2f4dcd2428bfea23.tar.gz]
2026-03-21T20:08:55.190492026Z INFO[0018] ADD tmpdockertars/ptdeploy2slice-12cnt-b855e360d083267a0272cb5b2f4dcd2428bfea23.tar.gz .
2026-03-21T20:08:55.190736299Z INFO[0018] Unpacking local tar archive tmpdockertars/ptdeploy2slice-12cnt-b855e360d083267a0272cb5b2f4dcd2428bfea23.tar.gz to /approot/
2026-03-21T20:08:55.198623080Z INFO[0018] Taking snapshot of files...
2026-03-21T20:08:55.213498605Z INFO[0018] Using files from context: [/kanwork/tmpdockertars/pnpm-deploy-gamesapp-nodemodules.tar.gz]
2026-03-21T20:08:55.655924405Z INFO[0018] ADD tmpdockertars/pnpm-deploy-gamesapp-nodemodules.tar.gz .
2026-03-21T20:08:56.072188068Z INFO[0019] Unpacking local tar archive tmpdockertars/pnpm-deploy-gamesapp-nodemodules.tar.gz to /approot/
2026-03-21T20:09:13.453636568Z INFO[0036] Taking snapshot of files...
2026-03-21T20:09:29.287589724Z INFO[0052] Using files from context: [/kanwork/tmpdockertars/ptdeploy2slice-302cnt-9b78682f3af39473248cfaa24738db46f7ba6b3c.tar.gz]
2026-03-21T20:09:29.287850918Z INFO[0052] ADD tmpdockertars/ptdeploy2slice-302cnt-9b78682f3af39473248cfaa24738db46f7ba6b3c.tar.gz .
2026-03-21T20:09:29.288112792Z INFO[0052] Unpacking local tar archive tmpdockertars/ptdeploy2slice-302cnt-9b78682f3af39473248cfaa24738db46f7ba6b3c.tar.gz to /approot/
2026-03-21T20:09:29.362861117Z INFO[0052] Taking snapshot of files...
2026-03-21T20:09:29.395231968Z INFO[0052] ENV NEXT_TELEMETRY_DISABLED='1'
2026-03-21T20:09:29.408857573Z INFO[0052] No files changed in this command, skipping snapshotting.
2026-03-21T20:09:29.408882624Z INFO[0052] ENV NEXT_PUBLIC_GIT_SHA='28a421948b89ac0f09ac4ac0b6a1d73062e5cefb'
2026-03-21T20:09:29.409045233Z INFO[0052] No files changed in this command, skipping snapshotting.
2026-03-21T20:09:29.409071364Z INFO[0052] ENV NEXT_PUBLIC_JSON='{"isDev":false}'
2026-03-21T20:09:29.409098395Z INFO[0052] No files changed in this command, skipping snapshotting.
2026-03-21T20:09:29.409120037Z INFO[0052] ENV PREBUILD_ENVJSON='{"appPath":"pt0/gamesapp"}'
2026-03-21T20:09:29.409189520Z INFO[0052] No files changed in this command, skipping snapshotting.
2026-03-21T20:09:29.409216662Z INFO[0052] ENV NODE_ENV='production'
2026-03-21T20:09:29.409237893Z INFO[0052] No files changed in this command, skipping snapshotting.
2026-03-21T20:09:29.409247334Z INFO[0052] WORKDIR /approot/pt0/gamesapp
2026-03-21T20:09:29.409266464Z INFO[0052] Cmd: workdir
2026-03-21T20:09:29.409276195Z INFO[0052] Changed working directory to /approot/pt0/gamesapp
2026-03-21T20:09:29.409410242Z INFO[0052] No files changed in this command, skipping snapshotting.
2026-03-21T20:09:29.409440004Z INFO[0052] ENV ISNEXTBUILD=1
2026-03-21T20:09:29.409458425Z INFO[0052] No files changed in this command, skipping snapshotting.
2026-03-21T20:09:29.409468705Z INFO[0052] ENV NODE_OPTIONS="--no-warnings=ExperimentalWarning --max-old-space-size=2048"
2026-03-21T20:09:29.409540179Z INFO[0052] No files changed in this command, skipping snapshotting.
2026-03-21T20:09:29.409551110Z INFO[0052] RUN --mount=type=cache,id=nextbuild6e8dca47f,target=/approot/pt0/gamesapp/.next/cache echo nextbuild6e8dca47f && npx next build
2026-03-21T20:09:30.985229180Z INFO[0054] Cmd: /bin/sh
2026-03-21T20:09:30.985260572Z INFO[0054] Args: [-c echo nextbuild6e8dca47f && npx next build]
2026-03-21T20:09:30.985266182Z INFO[0054] Running: [/bin/sh -c echo nextbuild6e8dca47f && npx next build]
2026-03-21T20:09:30.986685477Z nextbuild6e8dca47f
2026-03-21T20:09:32.556915919Z ▲ Next.js 15.5.14
2026-03-21T20:09:32.557081307Z - Experiments (use with caution):
2026-03-21T20:09:32.557143991Z ✓ externalDir
2026-03-21T20:09:32.557163002Z
2026-03-21T20:09:32.583353944Z Creating an optimized production build ...
2026-03-21T20:09:32.622774609Z Using tsconfig file: ../../tsconfig.json
2026-03-21T20:09:56.400279146Z ✓ Compiled successfully in 23.5s
2026-03-21T20:09:56.404064216Z Skipping validation of types
2026-03-21T20:09:56.404085628Z Skipping linting
2026-03-21T20:09:56.745935069Z Collecting page data ...
2026-03-21T20:10:06.944809543Z Generating static pages (0/8) ...
2026-03-21T20:10:12.578956798Z Generating static pages (2/8)
2026-03-21T20:10:12.579007181Z Generating static pages (4/8)
2026-03-21T20:10:12.579017531Z Generating static pages (6/8)
2026-03-21T20:10:12.579038612Z ✓ Generating static pages (8/8)
2026-03-21T20:10:14.054147328Z Finalizing page optimization ...
2026-03-21T20:10:14.054195591Z Collecting build traces ...
2026-03-21T20:10:27.860218198Z
2026-03-21T20:10:27.863644369Z Route (app) Size First Load JS
2026-03-21T20:10:27.863691032Z ─ ƒ /api/graphql 0 B 102 kB
2026-03-21T20:10:27.863701862Z + First Load JS shared by all 102 kB
2026-03-21T20:10:27.863711033Z ├ chunks/87c73c54-8a6ee509914814c6.js 54.3 kB
2026-03-21T20:10:27.863720323Z ├ chunks/956-0342357405ea127d.js 45.4 kB
2026-03-21T20:10:27.863729214Z └ other shared chunks (total) 2.05 kB
2026-03-21T20:10:27.863739144Z
2026-03-21T20:10:27.863748004Z Route (pages) Size First Load JS
2026-03-21T20:10:27.863756745Z ┌ ○ / (755 ms) 1.45 kB 360 kB
2026-03-21T20:10:27.863766636Z ├ /_app 0 B 282 kB
2026-03-21T20:10:27.863775936Z ├ ○ /[gameRoom] (756 ms) 145 kB 503 kB
2026-03-21T20:10:27.863786277Z ├ ○ /404 228 B 282 kB
2026-03-21T20:10:27.863796107Z ├ ○ /ai-art-gallery (755 ms) 2.91 kB 329 kB
2026-03-21T20:10:27.863806267Z ├ ○ /oldgames/[gameRoom] (755 ms) 474 B 359 kB
2026-03-21T20:10:27.863815668Z ├ ○ /oldgames/[gameRoom]/[ppOldGameId] (757 ms) 490 B 359 kB
2026-03-21T20:10:27.863824988Z └ ○ /oldgames/[gameRoom]/[ppOldGameId]/[paper_stack_name] (756 ms) 493 B 359 kB
2026-03-21T20:10:27.863834309Z + First Load JS shared by all 282 kB
2026-03-21T20:10:27.863843729Z ├ chunks/framework-bf23fdfd1572a97a.js 59.7 kB
2026-03-21T20:10:27.863853220Z ├ chunks/main-c6dda297a4ba345f.js 37 kB
2026-03-21T20:10:27.863862630Z ├ chunks/pages/_app-cef0fecb5103e834.js 183 kB
2026-03-21T20:10:27.863872141Z └ other shared chunks (total) 1.81 kB
2026-03-21T20:10:27.863881202Z
2026-03-21T20:10:27.863902232Z ○ (Static) prerendered as static content
2026-03-21T20:10:27.863912013Z ƒ (Dynamic) server-rendered on demand
2026-03-21T20:10:27.863921044Z
2026-03-21T20:10:28.016596360Z npm notice
2026-03-21T20:10:28.016646803Z npm notice New minor version of npm available! 11.3.0 -> 11.12.0
2026-03-21T20:10:28.016681315Z npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.12.0
2026-03-21T20:10:28.016689295Z npm notice To update run: npm install -g npm@11.12.0
2026-03-21T20:10:28.016695686Z npm notice
2026-03-21T20:10:29.739453434Z INFO[0112] Taking snapshot of files...
2026-03-21T20:10:30.520904530Z INFO[0113] Pushing layer dock2reg.dodemo.demokluster.com/peat/peat/cache:4576393bb70175c25a187fe4cc06c435e71a56e27cde2fe3d3c108adaa72d6a8 to cache now
2026-03-21T20:10:30.521083039Z INFO[0113] Pushing image to dock2reg.dodemo.demokluster.com/peat/peat/cache:4576393bb70175c25a187fe4cc06c435e71a56e27cde2fe3d3c108adaa72d6a8
2026-03-21T20:10:30.580673852Z INFO[0113] ENV ISNEXTBUILD=
2026-03-21T20:10:30.595070892Z INFO[0113] No files changed in this command, skipping snapshotting.
2026-03-21T20:10:34.007583913Z INFO[0117] Pushed dock2reg.dodemo.demokluster.com/peat/peat/cache@sha256:e94ff0ab501e417177403d7455dba20d47c87dbc59a91c6e3056d0b38f05ea9a
2026-03-21T20:10:34.008938345Z INFO[0117] Pushing image to dock2reg.dodemo.demokluster.com/peat/peat:dfca5363cbd8
308.6s commitexists 28a421948b89ac0f09ac4ac0b6a1d73062e5cefb (on harv3demo-gitssh)
312.4s k8s harv3demo create: gamesdev-rnt-6f142cddf (configmap)
313.3s k8s harv3demo cantupdate: kanikocache-gitssh (pvc)
314.9s k8s harv3demo patch: regcred-dock2reg-dodemo (secret)
316.3s runtime kanikobuild Pending (gitclone: PodInitializing) Pending (gitclone running) building
2026-03-21T20:12:42.032182309Z INFO[0000] Resolved base name dock2reg.dodemo.demokluster.com/peat/peat:dfca5363cbd8 to nextbuildstage
2026-03-21T20:12:42.032239002Z INFO[0000] Resolved base name node:24.0.1-bookworm to runnerstage
2026-03-21T20:12:42.032253133Z INFO[0000] Using dockerignore file: /kanwork/.dockerignore
2026-03-21T20:12:42.032298495Z INFO[0000] Retrieving image manifest dock2reg.dodemo.demokluster.com/peat/peat:dfca5363cbd8
2026-03-21T20:12:42.032308706Z INFO[0000] Retrieving image dock2reg.dodemo.demokluster.com/peat/peat:dfca5363cbd8 from registry dock2reg.dodemo.demokluster.com
2026-03-21T20:12:42.255697681Z INFO[0000] Retrieving image manifest dock2reg.dodemo.demokluster.com/peat/peat:dfca5363cbd8
2026-03-21T20:12:42.255716922Z INFO[0000] Returning cached image manifest
2026-03-21T20:12:42.322780469Z INFO[0000] Retrieving image manifest node:24.0.1-bookworm
2026-03-21T20:12:42.322793309Z INFO[0000] Retrieving image node:24.0.1-bookworm from registry index.docker.io
2026-03-21T20:12:42.697611467Z INFO[0000] Retrieving image manifest node:24.0.1-bookworm
2026-03-21T20:12:42.697635079Z INFO[0000] Returning cached image manifest
2026-03-21T20:12:42.868173246Z INFO[0001] Built cross stage deps: map[0:[/approot]]
2026-03-21T20:12:42.868191227Z INFO[0001] Retrieving image manifest dock2reg.dodemo.demokluster.com/peat/peat:dfca5363cbd8
2026-03-21T20:12:42.868193557Z INFO[0001] Returning cached image manifest
2026-03-21T20:12:42.868257980Z INFO[0001] Retrieving image manifest dock2reg.dodemo.demokluster.com/peat/peat:dfca5363cbd8
2026-03-21T20:12:42.868261060Z INFO[0001] Returning cached image manifest
2026-03-21T20:12:42.868562246Z INFO[0001] Executing 0 build triggers
2026-03-21T20:12:42.869017579Z INFO[0001] Building stage 'dock2reg.dodemo.demokluster.com/peat/peat:dfca5363cbd8' [idx: '0', base-idx: '-1']
2026-03-21T20:13:17.326281595Z INFO[0035] Saving file approot for later use
2026-03-21T20:13:34.523712343Z INFO[0052] Deleting filesystem...
2026-03-21T20:13:37.704568413Z INFO[0055] Retrieving image manifest node:24.0.1-bookworm
2026-03-21T20:13:37.704610945Z INFO[0055] Returning cached image manifest
2026-03-21T20:13:37.704618195Z INFO[0055] Retrieving image manifest node:24.0.1-bookworm
2026-03-21T20:13:37.704625026Z INFO[0055] Returning cached image manifest
2026-03-21T20:13:37.704654777Z INFO[0055] Executing 0 build triggers
2026-03-21T20:13:37.704946612Z INFO[0055] Building stage 'node:24.0.1-bookworm' [idx: '1', base-idx: '-1']
2026-03-21T20:13:47.130875659Z INFO[0065] Cmd: EXPOSE
2026-03-21T20:13:47.130921221Z INFO[0065] Adding exposed port: 3011/tcp
2026-03-21T20:13:47.130931872Z INFO[0065] Unpacking rootfs as cmd COPY --from=nextbuildstage /approot /approot requires it.
2026-03-21T20:14:02.204112136Z INFO[0080] ENV NEXT_TELEMETRY_DISABLED='1'
2026-03-21T20:14:02.204321737Z INFO[0080] No files changed in this command, skipping snapshotting.
2026-03-21T20:14:02.204366389Z INFO[0080] ENV NEXT_PUBLIC_GIT_SHA='28a421948b89ac0f09ac4ac0b6a1d73062e5cefb'
2026-03-21T20:14:02.204526658Z INFO[0080] No files changed in this command, skipping snapshotting.
2026-03-21T20:14:02.204560509Z INFO[0080] ENV NEXT_PUBLIC_JSON='{"isDev":false}'
2026-03-21T20:14:02.204675815Z INFO[0080] No files changed in this command, skipping snapshotting.
2026-03-21T20:14:02.204729928Z INFO[0080] ENV PREBUILD_ENVJSON='{"appPath":"pt0/gamesapp"}'
2026-03-21T20:14:02.204907307Z INFO[0080] No files changed in this command, skipping snapshotting.
2026-03-21T20:14:02.204922688Z INFO[0080] ENV NODE_ENV='production'
2026-03-21T20:14:02.205079896Z INFO[0080] No files changed in this command, skipping snapshotting.
2026-03-21T20:14:11.609006797Z INFO[0089] COPY --from=nextbuildstage /approot /approot
2026-03-21T20:14:29.387524656Z INFO[0107] Taking snapshot of files...
2026-03-21T20:14:52.887158111Z INFO[0131] WORKDIR /approot/pt0/gamesapp
2026-03-21T20:14:52.887194953Z INFO[0131] Cmd: workdir
2026-03-21T20:14:52.887205974Z INFO[0131] Changed working directory to /approot/pt0/gamesapp
2026-03-21T20:14:52.902151643Z INFO[0131] No files changed in this command, skipping snapshotting.
2026-03-21T20:14:52.902204316Z INFO[0131] EXPOSE 3011
2026-03-21T20:14:52.902225266Z INFO[0131] Cmd: EXPOSE
2026-03-21T20:14:52.902234647Z INFO[0131] Adding exposed port: 3011/tcp
2026-03-21T20:14:52.902324432Z INFO[0131] No files changed in this command, skipping snapshotting.
2026-03-21T20:14:52.902333742Z INFO[0131] CMD ["node", "--enable-source-maps", "runnext.mjs"]
2026-03-21T20:14:52.902400915Z INFO[0131] No files changed in this command, skipping snapshotting.
2026-03-21T20:14:52.903043439Z INFO[0131] Pushing image to dock2reg.dodemo.demokluster.com/peat/peat:dfcf6f8f2bd3
589.3s k8s dodemo patch: gamesdev (deployment)
589.3s awaitrollout gamesdev Creating.. ready
623.5s k8s dodemo patch: gamesdev (service, ingress)
app hosted at games.dodemo.demokluster.com
runtests --ptenv=testprod --suite=unit,health,server,db
1/1 PASS unit:shortModelNamesUnique 12 models
1/2 PASS healthgql:gqlWorksTrue games.dodemo.demokluster.com/
2/2 PASS healthgql:gitShaMatchesDeployedTrue games.dodemo.demokluster.com/
1/1 PASS publicip:returnsCorrectPublicIp 203.0.113.124
1/15 PASS auth:reqEmailLoginWorks
2/15 PASS auth:badOtpRejected
3/15 PASS auth:validOtpReturnsToken
4/15 PASS auth:tokenResolvesToUser authtest-1774124239111@test.example.com
5/15 PASS auth:badTokenReturnsNull
6/15 PASS auth:emailLoginLinkSetsCookie user1tok
7/15 PASS auth:emailLoginLinkShowsLoggedIn
8/15 PASS auth:createGameRoom deer-gate-glen-bell
9/15 PASS auth:createGameRoomIdempotent deer-gate-glen-bell
10/15 PASS auth:createGameRoomRequiresAuth
11/15 PASS auth:nonexistentRoomRejected
12/15 PASS auth:nonexistentRoomActionRejected
13/15 PASS auth:resecureRoomChangesLabel deer-gate-glen-bell -> brass-card-eagle-sand
14/15 PASS auth:resecureRoomRequiresHost
15/15 PASS auth:resecureRoomNonHostRejected
1/17 PASS state:happyPath4Players 6 rounds
2/17 PASS state:playerLeaveMidGame 5 rounds
3/17 PASS state:wrongStackRejected
4/17 PASS state:largePlayers 8p, 10 rounds
5/17 PASS state:tooFewPlayersBlocked
6/17 PASS state:rejoinAfterLeave
7/17 PASS state:rejoinAfterAwolKick testplayer1
8/17 PASS state:emptySubmissionRejected
9/17 PASS state:kickAfterGraceInitialPrompt testplayer1
10/17 PASS state:kickAfterGrace testplayer1 5s overdue
11/17 PASS state:gameCompletesWith3PlayersAnd4Stacks 3p, 5 stacks, 6 rounds
12/17 PASS state:gameCompletesAfterAwolKick 5 rounds
13/17 PASS state:aiToggleDisablesEndOfGameDrawings
14/17 PASS state:aiToggleEnablesEndOfGameDrawings 5 drawings, replay verified
15/17 PASS state:kickWithBlockIpPreventsRejoin
16/17 PASS state:resetBlockedIpsAllowsRejoin
17/17 PASS state:kickWithoutBlockIpAllowsRejoin
nonce: xtest1774124241683
poll #1...
found: 596591c7eb PtErr throwDebugH
1/2 PASS sendrecvexception:serverException 596591c7eb (2026-03-21T20:17:21.000Z)
nonce: jstest1774124245782
poll #1...
found: d5edaedec9 ptFeError Test JS error jstest1774124245782
2/2 PASS sendrecvexception:clientJsError d5edaedec9 (2026-03-21T20:17:26.000Z)
1/8 PASS hardening:queryDepthLimitEnforced
2/8 PASS hardening:normalDepthQueryAllowed
3/8 PASS hardening:batchedRequestsRejected
4/8 PASS hardening:oversizedPlayerAliasRejected 40 chars
5/8 PASS hardening:oversizedDescriptionRejected 350 chars
6/8 PASS hardening:oversizedPayloadRejected ~147KB
7/8 PASS hardening:normalSizedInputsAllowed
8/8 PASS hardening:stickySessionAnnotation $cookie_gameshardcook
1/10 PASS db:e6ee9eeb613b58d8b7e29664a2fd8fc8 24 actions (13d ago)
2/10 PASS db:9102508541f75582b0392fb0b7979813 24 actions (14d ago)
3/10 PASS db:6d63fbf33243562084fe7c2a3b3243be 52 actions (18d ago)
4/10 PASS db:29b097ff32455588b5142d57cbdf215a 37 actions (30d ago)
5/10 PASS db:3920998d97d85a4cbd936f1ada9eb403 26 actions (37d ago)
6/10 PASS db:9bb2a0a5d09f5b17a685147249100359 32 actions (51d ago)
7/10 PASS db:eecdfde4080f5a3a9e4ced782cc88093 34 actions (72d ago)
8/10 PASS db:37c3b2af947a5960ae1250b4697a3af4 34 actions (86d ago)
9/10 PASS db:2356b5f7f33c5db39b6b8ce5079e945e 4 actions (100d ago)
10/10 PASS db:5977c872d1bf517b835167c9ad89bcfc 30 actions (106d ago)
Round 1: 4 actions
Round 2: 4 actions
Round 3: 3 actions
Round 4: 2 actions
Round 5: 3 actions
Round 6: 3 actions
Round 7: 1 actions
Round 8: 2 actions 1/1 PASS ui:happyPath4Players
Games: scale-a-1774124270509, scale-b-1774124270509
Players per game: 4
Pods ready: gamesdev-5f988ddbb8-k6zjt, gamesdev-5f988ddbb8-w6xh2
Progress: A=1 B=0
Progress: A=1 B=1
Deleting one pod mid-test...
Deleting pod: gamesdev-5f988ddbb8-k6zjt
Progress: A=2 B=1
Progress: A=2 B=2
Progress: A=3 B=2
Progress: A=3 B=3 Waiting for replacement...
Replacement ready, continuing...
Game A: finished in 4 rounds
Game B: finished in 4 rounds
Pod deleted: gamesdev-5f988ddbb8-k6zjt
========================================
PASS [unit] 1/1 unit tests passed
PASS [health] all passed
PASS [server] all passed
PASS [db] all passed
All 4 suites passed!
testdeploy complete
{runtime: '759.8s', focus: 'testdeploy gameswc', logPath: './tmp/bash-logs/timeout_sync_gameswcmjs--016857.log', summarizeAboveTokCnt: 350} # <- & ^ vis to user-only (not agent to save tokens)
━━━ Summary (12261→33 tok) ━━━ # <- vis to user&agent ↓
✅ Success
- All 4 test suites passed
- Total deployment time: ~14 minutes
- 15/15 auth tests, 17/17 state tests passed
⚙ todowrite
✓ testdeploy sync_gameswc.mjs
→ testdeploy sync_donateapp.mjs
○ runtests sync_donatedb.mjs
○ runtests sync.mjs (vultr2)
○ runtests sepPtTestsF.mjs
○ Summarize failures
⚙ bash testdeploy donateapp
testdeploy: ~1m local + ~14m apply + ~39s deployed (~16m total)
runtests --ptenv=testlocal --suite=healthgql,ethpay,donate,publicip
1/2 PASS healthgql:gqlBreaksFalse 127.0.0.1:3015/
2/2 PASS healthgql:gqlWorksTrue 127.0.0.1:3015/
1/6 PASS ethpay:seededShuffle: deterministic for same seed
2/6 PASS ethpay:seededShuffle: single element always returns that element
3/6 PASS ethpay:findFreeGwei: returns target when no collisions
4/6 PASS ethpay:findFreeGwei: avoids collisions
5/6 PASS ethpay:usdToTargetGwei: converts correctly
6/6 PASS ethpay:roundedGwei: rounds bigint to gwei
1/30 PASS donate:gmCreateDonaOrder: creates order with valid input order 2d5c32c2-1e0e-4bdc-9151-ae57b3a3f430
2/30 PASS donate:gmCreateDonaOrder: rejects empty display string rejected empty string
3/30 PASS donate:gmCreateDonaOrder: rejects below minimum payment rejected $0.50
4/30 PASS donate:gqDonaInfo: returns entry statistics 442/1000 filled
5/30 PASS donate:gqDonaOrder: returns null for non-existent order returns null for non-existent order
6/30 PASS donate:gqEntryBySourceOrderId: returns null for non-existent order returns null for non-existent source order
7/30 PASS donate:gqDonaEntries: returns leaderboard in correct order 10 entries returned
8/30 PASS donate:gqCharityLeaderboard: returns charity statistics 2 charities
9/30 PASS donate:gmCreateDonaOrder: allows multiple orders with different input created 2 orders: cbdfd913, 4d7133bb
10/30 PASS donate:chip-in: isChipIn flag reflects existing paid entry (not pending orders) both not chip-in (correct - no paid entry exists)
11/30 PASS donate:payment detection: captures sender_addr sender_addr=0x314a1bce... (mock)
12/30 PASS donate:gmCreateDonaOrder: accepts supportOppose=oppose order ce36a689 with oppose
13/30 PASS donate:gmCreateDonaOrder: defaults supportOppose to support order 31b06f5a defaults to support
14/30 PASS donate:gqMyDonations: returns entries for sender address found donation for 0x314A1BCe
15/30 PASS donate:chip-in: oppose donation creates separate entry, not chip-in to support entry oppose creates separate entry, support=$5 oppose=$3
16/30 PASS donate:chip-in: explicit targetEntryId with mismatched stance creates separate entry explicit targetEntryId with mismatched stance creates separate entry
17/30 PASS donate:chip-in: same stance chips into existing entry chip-in incremented entry to $8
18/30 PASS donate:chip-in: order page can find entry via gqEntryBySourceOrderId after chip-in payment gqEntryBySourceOrderId found entry after chip-in
19/30 PASS donate:gqMyDonations: includes chip-in payments from dona_payments userA sees $5, userB sees $3 chip-in
20/30 PASS donate:chip-in payment: captures sender_addr in dona_payments dona_payments.sender_addr=0x01167e1a...
21/30 PASS donate:gqMyDonations: returns user contribution amount, not entry total chipper sees $3, owner sees $5
22/30 PASS donate:gmCreateDonaOrder: ipfs_cid generates pending-upload ref ref=pending-upload-667b4...
23/30 PASS donate:gmCreateDonaOrder: ipfs_cid enforces $1/MB minimum rejected $3 for 10MB (requires $10)
24/30 PASS donate:ipfs_cid: pendingUpload flag set after payment entry 7084127d... pendingUpload=true
25/30 PASS donate:ipfs_cid: upload file via token CID=QmWr7GW1SgBf...
26/30 PASS donate:gqMeritByAddr: returns merit for author of paid entry merit=$830.00
27/30 PASS donate:gqMeritByAddr: chip-in increases author merit merit increased $941 -> $948
28/30 PASS donate:gqMeritByAddr: oppose donation reduces author merit support=$10, oppose=-$4 (net merit reflects both)
29/30 PASS donate:gqTopDonors: returns ranked donors by total donated 7 donors ranked correctly
30/30 PASS donate:gqTopMeritEarners: returns ranked earners by merit 5 earners ranked correctly
========================================
PASS [healthgql] 2/2 healthgql tests passed
PASS [ethpay] 6/6 ethpay tests passed
PASS [donate] 30/30 donate tests passed
SKIP [publicip] Public IP test only runs with --ptenv=testprod
All 3 suites passed!
apply
3.9s k8s dodemo patch: secrets2-exceptionemail-token (secret), secrets2-donatedb-qs (secret), secrets2-demok-fm-smtp-json (secret), secrets2-demok-fm-imap-json (secret), secrets2-alchemy-api (secret), secrets2-etherscan-api (secret), secrets2-donate-git-pull-secret (secret), secrets2-donateapp-appsecret (secret)
5.5s commitexists 5c93b16438e1fb18f92731133aeb9d5c4c47e2bc (on harv3demo-gitssh)
9.7s k8s harv3demo create: donate-rnt-5c455e561 (configmap)
9.8s k8s harv3demo create: donate-rnt-5c455e561-tarspecs (configmap)
10.7s k8s harv3demo cantupdate: kanikocache-gitssh (pvc)
12.4s k8s harv3demo patch: regcred-dock2reg-dodemo (secret)
13.0s nextbuild kanikobuild Pending (gitclone: PodInitializing) Pending (gitclone running) Pending (prebuild running).... streaming (running 2m)
2026-03-21T20:21:37.910313968Z INFO[0000] Resolved base name node:24.0.1-bookworm to yarninstallstage
2026-03-21T20:21:37.910451795Z INFO[0000] Using dockerignore file: /kanwork/.dockerignore
2026-03-21T20:21:37.910548370Z INFO[0000] Retrieving image manifest node:24.0.1-bookworm
2026-03-21T20:21:37.910552171Z INFO[0000] Retrieving image node:24.0.1-bookworm from registry index.docker.io
2026-03-21T20:21:38.309084815Z INFO[0000] Retrieving image manifest node:24.0.1-bookworm
2026-03-21T20:21:38.309117406Z INFO[0000] Returning cached image manifest
2026-03-21T20:21:38.478474938Z INFO[0000] Built cross stage deps: map[]
2026-03-21T20:21:38.478542952Z INFO[0000] Retrieving image manifest node:24.0.1-bookworm
2026-03-21T20:21:38.478563273Z INFO[0000] Returning cached image manifest
2026-03-21T20:21:38.478581334Z INFO[0000] Retrieving image manifest node:24.0.1-bookworm
2026-03-21T20:21:38.478591394Z INFO[0000] Returning cached image manifest
2026-03-21T20:21:38.478935112Z INFO[0000] Executing 0 build triggers
2026-03-21T20:21:38.479471999Z INFO[0000] Building stage 'node:24.0.1-bookworm' [idx: '0', base-idx: '-1']
2026-03-21T20:21:38.479518151Z INFO[0000] Checking for cached layer dock2reg.dodemo.demokluster.com/peat/peat/cache:60d147788af2b9b16b24da212b1ab825434258f9c474a908a18f66ac131a0818...
2026-03-21T20:21:38.757996644Z INFO[0001] Using caching version of cmd: RUN echo dockbump39 && apt-get update && apt-get install -y apt-transport-https && echo omg
2026-03-21T20:21:38.758584834Z INFO[0001] Using files from context: [/kanwork/tmpdockertars/ptdeploy2slice-13cnt-bfb31d56bd4bab27ded317ffb3f228e907374c8c.tar.gz]
2026-03-21T20:21:38.768848960Z INFO[0001] Using files from context: [/kanwork/tmpdockertars/pnpm-deploy-donateapp-nodemodules.tar.gz]
2026-03-21T20:21:39.266964335Z INFO[0001] Using files from context: [/kanwork/tmpdockertars/ptdeploy2slice-198cnt-ed2315ba44bbfc2d6aa6c8dc9a442fb614bef3df.tar.gz]
2026-03-21T20:21:39.267376736Z INFO[0001] Checking for cached layer dock2reg.dodemo.demokluster.com/peat/peat/cache:60331558b0049a935ec034b8c2df79d90ba45c6988d5c1ff701b93ae3676db72...
2026-03-21T20:21:39.553682522Z INFO[0001] No cached layer found for cmd RUN --mount=type=cache,id=nextbuilda48e183d8,target=/approot/pt0/donateapp/.next/cache echo nextbuilda48e183d8 && npx next build
2026-03-21T20:21:39.553713554Z INFO[0001] Unpacking rootfs as cmd ADD tmpdockertars/ptdeploy2slice-13cnt-bfb31d56bd4bab27ded317ffb3f228e907374c8c.tar.gz . requires it.
2026-03-21T20:21:53.972186187Z INFO[0016] WORKDIR /approot
2026-03-21T20:21:53.972224619Z INFO[0016] Cmd: workdir
2026-03-21T20:21:53.972235459Z INFO[0016] Changed working directory to /approot
2026-03-21T20:21:53.972405468Z INFO[0016] No files changed in this command, skipping snapshotting.
2026-03-21T20:21:53.972433689Z INFO[0016] RUN echo dockbump39 && apt-get update && apt-get install -y apt-transport-https && echo omg
2026-03-21T20:21:53.972440300Z INFO[0016] Found cached layer, extracting to filesystem
2026-03-21T20:21:55.866439132Z INFO[0018] Using files from context: [/kanwork/tmpdockertars/ptdeploy2slice-13cnt-bfb31d56bd4bab27ded317ffb3f228e907374c8c.tar.gz]
2026-03-21T20:21:55.866817581Z INFO[0018] ADD tmpdockertars/ptdeploy2slice-13cnt-bfb31d56bd4bab27ded317ffb3f228e907374c8c.tar.gz .
2026-03-21T20:21:55.867086994Z INFO[0018] Unpacking local tar archive tmpdockertars/ptdeploy2slice-13cnt-bfb31d56bd4bab27ded317ffb3f228e907374c8c.tar.gz to /approot/
2026-03-21T20:21:55.874307748Z INFO[0018] Taking snapshot of files...
2026-03-21T20:21:55.890089161Z INFO[0018] Using files from context: [/kanwork/tmpdockertars/pnpm-deploy-donateapp-nodemodules.tar.gz]
2026-03-21T20:21:56.409013148Z INFO[0018] ADD tmpdockertars/pnpm-deploy-donateapp-nodemodules.tar.gz .
2026-03-21T20:21:56.942516777Z INFO[0019] Unpacking local tar archive tmpdockertars/pnpm-deploy-donateapp-nodemodules.tar.gz to /approot/
2026-03-21T20:22:25.431275267Z INFO[0047] Taking snapshot of files...
2026-03-21T20:22:47.275767497Z INFO[0069] Using files from context: [/kanwork/tmpdockertars/ptdeploy2slice-198cnt-ed2315ba44bbfc2d6aa6c8dc9a442fb614bef3df.tar.gz]
2026-03-21T20:22:47.275938105Z INFO[0069] ADD tmpdockertars/ptdeploy2slice-198cnt-ed2315ba44bbfc2d6aa6c8dc9a442fb614bef3df.tar.gz .
2026-03-21T20:22:47.276271032Z INFO[0069] Unpacking local tar archive tmpdockertars/ptdeploy2slice-198cnt-ed2315ba44bbfc2d6aa6c8dc9a442fb614bef3df.tar.gz to /approot/
2026-03-21T20:22:47.338707057Z INFO[0069] Taking snapshot of files...
2026-03-21T20:22:47.363443019Z INFO[0069] ENV NEXT_TELEMETRY_DISABLED='1'
2026-03-21T20:22:47.393616644Z INFO[0069] No files changed in this command, skipping snapshotting.
2026-03-21T20:22:47.393659436Z INFO[0069] ENV NEXT_PUBLIC_GIT_SHA='5c93b16438e1fb18f92731133aeb9d5c4c47e2bc'
2026-03-21T20:22:47.393812214Z INFO[0069] No files changed in this command, skipping snapshotting.
2026-03-21T20:22:47.393833544Z INFO[0069] ENV NEXT_PUBLIC_JSON='{"ipfsGatewayUrl":"https://ipfs.dodemo.demokluster.com/ipfs","isDev":false}'
2026-03-21T20:22:47.393868076Z INFO[0069] No files changed in this command, skipping snapshotting.
2026-03-21T20:22:47.393877817Z INFO[0069] ENV PREBUILD_ENVJSON='{"appPath":"pt0/donateapp"}'
2026-03-21T20:22:47.393974911Z INFO[0069] No files changed in this command, skipping snapshotting.
2026-03-21T20:22:47.393979952Z INFO[0069] ENV NODE_ENV='production'
2026-03-21T20:22:47.394036065Z INFO[0069] No files changed in this command, skipping snapshotting.
2026-03-21T20:22:47.394040785Z INFO[0069] ENV GIT_SSH_COMMAND='ssh -i /ssh-key/id_ed25519 -o UserKnownHostsFile=/peatSymposium/.ssh/known_hosts -o StrictHostKeyChecking=no'
2026-03-21T20:22:47.394152820Z INFO[0069] No files changed in this command, skipping snapshotting.
2026-03-21T20:22:47.394166231Z INFO[0069] WORKDIR /approot/pt0/donateapp
2026-03-21T20:22:47.394175322Z INFO[0069] Cmd: workdir
2026-03-21T20:22:47.394184412Z INFO[0069] Changed working directory to /approot/pt0/donateapp
2026-03-21T20:22:47.394205313Z INFO[0069] No files changed in this command, skipping snapshotting.
2026-03-21T20:22:47.394212294Z INFO[0069] ENV ISNEXTBUILD=1
2026-03-21T20:22:47.394327659Z INFO[0069] No files changed in this command, skipping snapshotting.
2026-03-21T20:22:47.394333240Z INFO[0069] ENV NODE_OPTIONS="--no-warnings=ExperimentalWarning --max-old-space-size=2048"
2026-03-21T20:22:47.394468766Z INFO[0069] No files changed in this command, skipping snapshotting.
2026-03-21T20:22:47.394484467Z INFO[0069] RUN --mount=type=cache,id=nextbuilda48e183d8,target=/approot/pt0/donateapp/.next/cache echo nextbuilda48e183d8 && npx next build
2026-03-21T20:22:49.877303926Z INFO[0072] Cmd: /bin/sh
2026-03-21T20:22:49.877386810Z INFO[0072] Args: [-c echo nextbuilda48e183d8 && npx next build]
2026-03-21T20:22:49.877396021Z INFO[0072] Running: [/bin/sh -c echo nextbuilda48e183d8 && npx next build]
2026-03-21T20:22:49.889964532Z nextbuilda48e183d8
2026-03-21T20:22:51.468840253Z ▲ Next.js 15.5.14
2026-03-21T20:22:51.468996671Z - Experiments (use with caution):
2026-03-21T20:22:51.469997761Z ✓ externalDir
2026-03-21T20:22:51.470004392Z
2026-03-21T20:22:51.505273792Z Creating an optimized production build ...
2026-03-21T20:22:51.552178127Z Using tsconfig file: ../../tsconfig.json
2026-03-21T20:23:08.251756333Z ✓ Compiled successfully in 16.4s
2026-03-21T20:23:08.256659479Z Skipping validation of types
2026-03-21T20:23:08.256679991Z Skipping linting
2026-03-21T20:23:08.598244668Z Collecting page data ...
2026-03-21T20:23:19.257961608Z Generating static pages (0/14) ...
2026-03-21T20:23:28.415988111Z Generating static pages (3/14)
2026-03-21T20:23:28.416032054Z Generating static pages (6/14)
2026-03-21T20:23:28.614824912Z Generating static pages (10/14)
2026-03-21T20:23:28.614871855Z ✓ Generating static pages (14/14)
2026-03-21T20:23:30.551374508Z Finalizing page optimization ...
2026-03-21T20:23:30.551412130Z Collecting build traces ...
2026-03-21T20:23:52.610377139Z
2026-03-21T20:23:52.614050293Z Route (app) Size First Load JS
2026-03-21T20:23:52.614065384Z ┌ ƒ /api/graphql 138 B 103 kB
2026-03-21T20:23:52.614075795Z ├ ƒ /api/upload 138 B 103 kB
2026-03-21T20:23:52.614085705Z ├ ƒ /api/v1/resolve/profiles 138 B 103 kB
2026-03-21T20:23:52.614095145Z └ ƒ /api/v2/resolve/name/[name] 138 B 103 kB
2026-03-21T20:23:52.614104726Z + First Load JS shared by all 103 kB
2026-03-21T20:23:52.614113666Z ├ chunks/1956-0c1758b322759359.js 45.4 kB
2026-03-21T20:23:52.614122797Z ├ chunks/87c73c54-8a6ee509914814c6.js 54.3 kB
2026-03-21T20:23:52.614131527Z └ other shared chunks (total) 2.98 kB
2026-03-21T20:23:52.614140058Z
2026-03-21T20:23:52.614149178Z Route (pages) Size First Load JS
2026-03-21T20:23:52.614157788Z ┌ ○ / 3.29 kB 303 kB
2026-03-21T20:23:52.614166489Z ├ /_app 0 B 275 kB
2026-03-21T20:23:52.614175149Z ├ ○ /404 229 B 275 kB
2026-03-21T20:23:52.614183840Z ├ ○ /charities (693 ms) 4.16 kB 279 kB
2026-03-21T20:23:52.614192440Z ├ ○ /donate 2.45 kB 285 kB
2026-03-21T20:23:52.614201131Z ├ ○ /donate-media (813 ms) 2.49 kB 285 kB
2026-03-21T20:23:52.614209701Z ├ ○ /donate/[orderId] (693 ms) 33.5 kB 309 kB
2026-03-21T20:23:52.614218462Z ├ ○ /donors (813 ms) 8.88 kB 288 kB
2026-03-21T20:23:52.614227062Z ├ ○ /entry/[id] (693 ms) 6.51 kB 282 kB
2026-03-21T20:23:52.614235623Z ├ ○ /media 3.85 kB 303 kB
2026-03-21T20:23:52.614244303Z ├ ○ /profile/[addr] (813 ms) 3.98 kB 283 kB
2026-03-21T20:23:52.614252853Z ├ ○ /submit-media (813 ms) 3.65 kB 302 kB
2026-03-21T20:23:52.614261854Z └ ○ /success (694 ms) 733 B 276 kB
2026-03-21T20:23:52.614270604Z + First Load JS shared by all 275 kB
2026-03-21T20:23:52.614292415Z ├ chunks/framework-ffe9288f24d189b5.js 59.7 kB
2026-03-21T20:23:52.614298726Z ├ chunks/main-c64f50722b7c3d72.js 37 kB
2026-03-21T20:23:52.614304716Z ├ chunks/pages/_app-90496c699ce268b3.js 176 kB
2026-03-21T20:23:52.614310756Z └ other shared chunks (total) 2.86 kB
2026-03-21T20:23:52.614316636Z
2026-03-21T20:23:52.614337968Z ○ (Static) prerendered as static content
2026-03-21T20:23:52.614344348Z ƒ (Dynamic) server-rendered on demand
2026-03-21T20:23:52.614350098Z
2026-03-21T20:23:52.779557017Z npm notice
2026-03-21T20:23:52.779593419Z npm notice New minor version of npm available! 11.3.0 -> 11.12.0
2026-03-21T20:23:52.779601579Z npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.12.0
2026-03-21T20:23:52.779607939Z npm notice To update run: npm install -g npm@11.12.0
2026-03-21T20:23:52.779614130Z npm notice
2026-03-21T20:23:55.158999441Z INFO[0137] Taking snapshot of files...
2026-03-21T20:23:56.181311726Z INFO[0138] Pushing layer dock2reg.dodemo.demokluster.com/peat/peat/cache:60331558b0049a935ec034b8c2df79d90ba45c6988d5c1ff701b93ae3676db72 to cache now
2026-03-21T20:23:56.181549188Z INFO[0138] Pushing image to dock2reg.dodemo.demokluster.com/peat/peat/cache:60331558b0049a935ec034b8c2df79d90ba45c6988d5c1ff701b93ae3676db72
2026-03-21T20:23:56.265941447Z INFO[0138] ENV ISNEXTBUILD=
2026-03-21T20:23:56.295299658Z INFO[0138] No files changed in this command, skipping snapshotting.
2026-03-21T20:23:57.970536177Z INFO[0140] Pushed dock2reg.dodemo.demokluster.com/peat/peat/cache@sha256:0dc832601e13152f6e1d5ea0c627113f73d39d54c5a43772fb2dd8aa47d82f3a
2026-03-21T20:23:57.971851443Z INFO[0140] Pushing image to dock2reg.dodemo.demokluster.com/peat/peat:dfcc79149079
356.6s commitexists 5c93b16438e1fb18f92731133aeb9d5c4c47e2bc (on harv3demo-gitssh)
360.7s k8s harv3demo create: donate-rnt-67ccf6a5b (configmap)
361.7s k8s harv3demo cantupdate: kanikocache-gitssh (pvc)
363.5s k8s harv3demo patch: regcred-dock2reg-dodemo (secret)
365.1s runtime kanikobuild Pending (gitclone: PodInitializing) Pending (gitclone running) building
2026-03-21T20:26:25.555166973Z INFO[0000] Resolved base name dock2reg.dodemo.demokluster.com/peat/peat:dfcc79149079 to nextbuildstage
2026-03-21T20:26:25.555218486Z INFO[0000] Resolved base name node:24.0.1-bookworm to runnerstage
2026-03-21T20:26:25.555227946Z INFO[0000] Using dockerignore file: /kanwork/.dockerignore
2026-03-21T20:26:25.555230406Z INFO[0000] Retrieving image manifest dock2reg.dodemo.demokluster.com/peat/peat:dfcc79149079
2026-03-21T20:26:25.555260268Z INFO[0000] Retrieving image dock2reg.dodemo.demokluster.com/peat/peat:dfcc79149079 from registry dock2reg.dodemo.demokluster.com
2026-03-21T20:26:25.787014160Z INFO[0000] Retrieving image manifest dock2reg.dodemo.demokluster.com/peat/peat:dfcc79149079
2026-03-21T20:26:25.787040481Z INFO[0000] Returning cached image manifest
2026-03-21T20:26:25.855835976Z INFO[0000] Retrieving image manifest node:24.0.1-bookworm
2026-03-21T20:26:25.855865818Z INFO[0000] Retrieving image node:24.0.1-bookworm from registry index.docker.io
2026-03-21T20:26:26.305424915Z INFO[0001] Retrieving image manifest node:24.0.1-bookworm
2026-03-21T20:26:26.305455586Z INFO[0001] Returning cached image manifest
2026-03-21T20:26:26.467552330Z INFO[0001] Built cross stage deps: map[0:[/approot]]
2026-03-21T20:26:26.467563801Z INFO[0001] Retrieving image manifest dock2reg.dodemo.demokluster.com/peat/peat:dfcc79149079
2026-03-21T20:26:26.467566191Z INFO[0001] Returning cached image manifest
2026-03-21T20:26:26.467568291Z INFO[0001] Retrieving image manifest dock2reg.dodemo.demokluster.com/peat/peat:dfcc79149079
2026-03-21T20:26:26.467570101Z INFO[0001] Returning cached image manifest
2026-03-21T20:26:26.467913158Z INFO[0001] Executing 0 build triggers
2026-03-21T20:26:26.468373121Z INFO[0001] Building stage 'dock2reg.dodemo.demokluster.com/peat/peat:dfcc79149079' [idx: '0', base-idx: '-1']
2026-03-21T20:27:09.097259640Z INFO[0043] Saving file approot for later use
2026-03-21T20:27:31.146120304Z INFO[0065] Deleting filesystem...
2026-03-21T20:27:35.602265933Z INFO[0070] Retrieving image manifest node:24.0.1-bookworm
2026-03-21T20:27:35.602302865Z INFO[0070] Returning cached image manifest
2026-03-21T20:27:35.602313306Z INFO[0070] Retrieving image manifest node:24.0.1-bookworm
2026-03-21T20:27:35.602322186Z INFO[0070] Returning cached image manifest
2026-03-21T20:27:35.602343497Z INFO[0070] Executing 0 build triggers
2026-03-21T20:27:35.602646412Z INFO[0070] Building stage 'node:24.0.1-bookworm' [idx: '1', base-idx: '-1']
2026-03-21T20:27:50.977147364Z INFO[0085] Cmd: EXPOSE
2026-03-21T20:27:50.977180276Z INFO[0085] Adding exposed port: 3015/tcp
2026-03-21T20:27:50.977186856Z INFO[0085] Unpacking rootfs as cmd COPY --from=nextbuildstage /approot /approot requires it.
2026-03-21T20:28:05.534248905Z INFO[0100] ENV NEXT_TELEMETRY_DISABLED='1'
2026-03-21T20:28:05.534294557Z INFO[0100] No files changed in this command, skipping snapshotting.
2026-03-21T20:28:05.534320418Z INFO[0100] ENV NEXT_PUBLIC_GIT_SHA='5c93b16438e1fb18f92731133aeb9d5c4c47e2bc'
2026-03-21T20:28:05.534358720Z INFO[0100] No files changed in this command, skipping snapshotting.
2026-03-21T20:28:05.534365621Z INFO[0100] ENV NEXT_PUBLIC_JSON='{"ipfsGatewayUrl":"https://ipfs.dodemo.demokluster.com/ipfs","isDev":false}'
2026-03-21T20:28:05.534497487Z INFO[0100] No files changed in this command, skipping snapshotting.
2026-03-21T20:28:05.535806743Z INFO[0100] ENV PREBUILD_ENVJSON='{"appPath":"pt0/donateapp"}'
2026-03-21T20:28:05.535818683Z INFO[0100] No files changed in this command, skipping snapshotting.
2026-03-21T20:28:05.535822104Z INFO[0100] ENV NODE_ENV='production'
2026-03-21T20:28:05.535829354Z INFO[0100] No files changed in this command, skipping snapshotting.
2026-03-21T20:28:05.535832434Z INFO[0100] ENV GIT_SSH_COMMAND='ssh -i /ssh-key/id_ed25519 -o UserKnownHostsFile=/peatSymposium/.ssh/known_hosts -o StrictHostKeyChecking=no'
2026-03-21T20:28:05.535835404Z INFO[0100] No files changed in this command, skipping snapshotting.
2026-03-21T20:28:20.681752129Z INFO[0115] COPY --from=nextbuildstage /approot /approot
2026-03-21T20:28:46.141684132Z INFO[0140] Taking snapshot of files...
2026-03-21T20:29:14.054220549Z INFO[0168] WORKDIR /approot/pt0/donateapp
2026-03-21T20:29:14.054275072Z INFO[0168] Cmd: workdir
2026-03-21T20:29:14.054285662Z INFO[0168] Changed working directory to /approot/pt0/donateapp
2026-03-21T20:29:14.088253503Z INFO[0168] No files changed in this command, skipping snapshotting.
2026-03-21T20:29:14.088301886Z INFO[0168] EXPOSE 3015
2026-03-21T20:29:14.088313746Z INFO[0168] Cmd: EXPOSE
2026-03-21T20:29:14.088325376Z INFO[0168] Adding exposed port: 3015/tcp
2026-03-21T20:29:14.088483704Z INFO[0168] No files changed in this command, skipping snapshotting.
2026-03-21T20:29:14.088528907Z INFO[0168] CMD ["node", "--enable-source-maps", "runnext.mjs"]
2026-03-21T20:29:14.088549858Z INFO[0168] No files changed in this command, skipping snapshotting.
2026-03-21T20:29:14.089123766Z INFO[0168] Pushing image to dock2reg.dodemo.demokluster.com/peat/peat:dfc5ebbbd482
681.1s k8s dodemo patch: donate-peat-ssh (secret), donate (deployment)
681.1s k8s dodemo cantupdate: donate-peat-pvc (pvc)
681.1s awaitrollout donate Pending.. ready
715.3s k8s dodemo patch: donate (service, ingress)
app hosted at donate.dodemo.demokluster.com
{ testfundWallet: '0x38F20c64Cf2df5f625568a45f66Ae224668dC6a9', testfundBalanceEth: '0.000512774193586', scratchWallet: '0x314A1BCeA9aA9Df345031b9f37A71758844F9486', scratchBalanceEth: '0.02841926351807246', sweepEth: '0.000513892611534' }
Sweep tx: 0x03869e660985d475ea45709dbdb58a3e08bd9ccf8db6e52322b7dd42400260b1
Confirmed
New scratchWallet balance: 0.02893315612960646 ETH
runtests --ptenv=testprod --suite=healthgql,ethpay,donate,publicip
1/2 PASS healthgql:gqlWorksTrue donate.dodemo.demokluster.com/
2/2 PASS healthgql:gitShaMatchesDeployedTrue donate.dodemo.demokluster.com/
1/6 PASS ethpay:seededShuffle: deterministic for same seed
2/6 PASS ethpay:seededShuffle: single element always returns that element
3/6 PASS ethpay:findFreeGwei: returns target when no collisions
4/6 PASS ethpay:findFreeGwei: avoids collisions
5/6 PASS ethpay:usdToTargetGwei: converts correctly
6/6 PASS ethpay:roundedGwei: rounds bigint to gwei
1/30 PASS donate:gmCreateDonaOrder: creates order with valid input order 84023512-4fd3-4e37-9596-685e973b453d
2/30 PASS donate:gmCreateDonaOrder: rejects empty display string rejected empty string
3/30 PASS donate:gmCreateDonaOrder: rejects below minimum payment rejected $0.50
4/30 PASS donate:gqDonaInfo: returns entry statistics 449/1000 filled
5/30 PASS donate:gqDonaOrder: returns null for non-existent order returns null for non-existent order
6/30 PASS donate:gqEntryBySourceOrderId: returns null for non-existent order returns null for non-existent source order
7/30 PASS donate:gqDonaEntries: returns leaderboard in correct order 10 entries returned
8/30 PASS donate:gqCharityLeaderboard: returns charity statistics 2 charities
9/30 PASS donate:gmCreateDonaOrder: allows multiple orders with different input created 2 orders: f484a24f, 646d3981
10/30 PASS donate:chip-in: isChipIn flag reflects existing paid entry (not pending orders) both not chip-in (correct - no paid entry exists)
11/30 PASS donate:payment detection: captures sender_addr sender_addr=0x314a1bce... (real, gas=0.000000387153927)
12/30 PASS donate:gmCreateDonaOrder: accepts supportOppose=oppose order 98e54e2f with oppose
13/30 PASS donate:gmCreateDonaOrder: defaults supportOppose to support order e17b4072 defaults to support
14/30 PASS donate:gqMyDonations: returns entries for sender address found donation for 0x314A1BCe
15/30 PASS donate:chip-in: oppose donation creates separate entry, not chip-in to support entry oppose creates separate entry, support=$5 oppose=$3
16/30 PASS donate:chip-in: explicit targetEntryId with mismatched stance creates separate entry explicit targetEntryId with mismatched stance creates separate entry
17/30 PASS donate:chip-in: same stance chips into existing entry chip-in incremented entry to $8
18/30 PASS donate:chip-in: order page can find entry via gqEntryBySourceOrderId after chip-in payment gqEntryBySourceOrderId found entry after chip-in
19/30 PASS donate:gqMyDonations: includes chip-in payments from dona_payments userA sees $5, userB sees $3 chip-in
20/30 PASS donate:chip-in payment: captures sender_addr in dona_payments dona_payments.sender_addr=0xbe97d09e...
21/30 PASS donate:gqMyDonations: returns user contribution amount, not entry total chipper sees $3, owner sees $5
22/30 PASS donate:gmCreateDonaOrder: ipfs_cid generates pending-upload ref ref=pending-upload-fba30...
23/30 PASS donate:gmCreateDonaOrder: ipfs_cid enforces $1/MB minimum rejected $3 for 10MB (requires $10)
24/30 PASS donate:ipfs_cid: pendingUpload flag set after payment entry 923bce9a... pendingUpload=true
25/30 PASS donate:ipfs_cid: upload file via token CID=QmWr7GW1SgBf...
26/30 PASS donate:gqMeritByAddr: returns merit for author of paid entry merit=$840.00
27/30 PASS donate:gqMeritByAddr: chip-in increases author merit merit increased $953 -> $960
28/30 PASS donate:gqMeritByAddr: oppose donation reduces author merit support=$10, oppose=-$4 (net merit reflects both)
29/30 PASS donate:gqTopDonors: returns ranked donors by total donated 7 donors ranked correctly
30/30 PASS donate:gqTopMeritEarners: returns ranked earners by merit 5 earners ranked correctly
1/1 PASS publicip:returnsCorrectPublicIp 203.0.113.124
========================================
PASS [healthgql] 2/2 healthgql tests passed
PASS [ethpay] 6/6 ethpay tests passed
PASS [donate] 30/30 donate tests passed
PASS [publicip] 1/1 publicip tests passed
All 4 suites passed!
runtests gas: 0.0000003872 ETH
testdeploy complete
{runtime: '825.4s', focus: 'testdeploy donateapp', logPath: './tmp/bash-logs/timeout_sync_donateappmjs--01Kr2h.log', summarizeAboveTokCnt: 350} # <- & ^ vis to user-only (not agent to save tokens)
━━━ Summary (12382→39 tok) ━━━ # <- vis to user&agent ↓
✅ Success
- 2/2 healthgql, 6/6 ethpay, 30/30 donate, 1/1 publicip tests passed
- Total deployment time: ~16 minutes
⚙ todowrite
✓ testdeploy sync_gameswc.mjs
✓ testdeploy sync_donateapp.mjs
→ runtests sync_donatedb.mjs
○ runtests sync.mjs (vultr2)
○ runtests sepPtTestsF.mjs
○ Summarize failures
⚙ bash runtests donatedb
Invalid value for --ptenv: 'local'
Valid values: testlocal, testprod
⚙ bash runtests donatedb testlocal
runtests: ~10s eta
runtests --ptenv=testlocal --suite=clitests
1/6 PASS clitests:help-exits-0 help works
2/6 PASS clitests:unknown-action-errors rejects unknown action
3/6 PASS clitests:unknown-flag-errors rejects unknown flag
4/6 PASS clitests:howimports-accepts-positional-arg howimports resolves import tree
5/6 PASS clitests:apply-history-flag-accepted apply --history accepted
6/6 PASS clitests:dbconsole-produces-output dbconsole produces output
========================================
PASS [clitests] 6/6 clitests tests passed
All 1 suites passed!
⚙ todowrite
✓ testdeploy sync_gameswc.mjs
✓ testdeploy sync_donateapp.mjs
✓ runtests sync_donatedb.mjs
→ runtests sync.mjs (vultr2)
○ runtests sepPtTestsF.mjs
○ Summarize failures
⚙ bash runtests vultr2 sync
Invalid value for --ptenv: 'local'
Valid values: testlocal, testprod
⚙ bash runtests vultr2 testlocal
runtests --ptenv=testlocal --suite=clitests
1/4 PASS clitests:help-lists-steps help lists steps
2/4 PASS clitests:unknown-step-errors rejects unknown step
3/4 PASS clitests:steps-flag-accepted info --steps=k8sSetupCli accepted
4/4 PASS clitests:apply-flags-accepted-with-steps applyCli flags accepted with --steps
========================================
PASS [clitests] 4/4 clitests tests passed
All 1 suites passed!
⚙ todowrite
✓ testdeploy sync_gameswc.mjs
✓ testdeploy sync_donateapp.mjs
✓ runtests sync_donatedb.mjs
✓ runtests sync.mjs (vultr2)
→ runtests sepPtTestsF.mjs
○ Summarize failures
⚙ bash runtests sepPtTestsF
1/4 PASS sepPtTests:getFullEpImportTree-returns-paths-for-registered-ep 528 paths for sepTestQ.mjs
2/4 PASS sepPtTests:getFullEpImportTree-includes-sharedF-imports found sharedF imports
3/4 PASS sepPtTests:getFullEpImportTree-caching-returns-same-result cached result matches
4/4 PASS sepPtTests:getFullEpImportTree-includes-virtual-imports-for-nextjs-app found pages/app virtual imports
All tests passed
⚙ todowrite
✓ testdeploy sync_gameswc.mjs
✓ testdeploy sync_donateapp.mjs
✓ runtests sync_donatedb.mjs
✓ runtests sync.mjs (vultr2)
✓ runtests sepPtTestsF.mjs
✓ Summarize failures
All 5 tasks passed - no failures to investigate.
| Task | Result |
|---|
| testdeploy sync_gameswc.mjs | ✅ 4 suites, 32 tests |
| testdeploy sync_donateapp.mjs | ✅ 4 suites, 39 tests |
| runtests sync_donatedb.mjs | ✅ 6/6 clitests |
| runtests sync.mjs (vultr2) | ✅ 4/4 clitests |
| runtests sepPtTestsF.mjs | ✅ 4/4 tests |