2026-10-18T10:49:09.5582385Z Current runner version: '0.3.5'
2026-10-18T10:49:09.5582421Z Runner name: 'g1t'
2026-10-18T10:49:09.5582435Z ##[group]Operating System
2026-10-18T10:49:09.5582448Z Debian GNU/Linux
2026-10-18T10:49:09.5582461Z 12 (bookworm)
2026-10-18T10:49:09.5582477Z ##[endgroup]
2026-10-18T10:49:09.5582489Z ##[group]Runner Image
2026-10-18T10:49:09.5582527Z Included Software: Node 24, Python 3, Go, Rust
2026-10-18T10:49:09.5582537Z ##[endgroup]
2026-10-18T10:49:09.5582551Z ##[group]Machine
2026-10-18T10:49:09.5582561Z Hosted by g1t
2026-10-18T10:49:09.5582570Z Architecture: X64
2026-10-18T10:49:09.5582586Z CPUs: 2
2026-10-18T10:49:09.5582600Z Memory: 8 GB
2026-10-18T10:49:09.5582615Z ##[endgroup]
2026-10-18T10:49:09.5582629Z ##[group]G1T_TOKEN Permissions
2026-10-18T10:49:09.5582642Z Contents: read
2026-10-18T10:49:09.5582655Z Metadata: read
2026-10-18T10:49:09.5582670Z ##[endgroup]
2026-10-18T10:49:09.5582690Z Secret source: Actions
2026-10-18T10:49:09.5582702Z Prepare workflow directory
2026-10-18T10:49:09.5836665Z Prepare all required actions
2026-10-18T10:49:09.5836739Z Getting action download info
2026-10-18T10:49:09.5842197Z Getting action download info for 'actions/checkout@v5'
2026-10-18T10:49:09.9445080Z Download action repository 'actions/checkout@v5' (SHA:fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09) from g1t
2026-10-18T10:49:10.3573828Z Getting action download info for 'actions/cache@v4'
2026-10-18T10:49:10.7362138Z Download action repository 'actions/cache@v4' (SHA:0057852bfaa89a56745cba8c7296529d2fc39830) from g1t
2026-10-18T10:49:11.7108221Z Complete job name: TypeScript
2026-10-18T10:49:11.9434142Z ##[group]Run actions/checkout@v5
2026-10-18T10:49:11.9434207Z with:
2026-10-18T10:49:11.9434220Z   allow-unsafe-pr-checkout: false
2026-10-18T10:49:11.9434235Z   clean: true
2026-10-18T10:49:11.9434248Z   fetch-depth: 1
2026-10-18T10:49:11.9434262Z   fetch-tags: false
2026-10-18T10:49:11.9434273Z   filter: 
2026-10-18T10:49:11.9434285Z   github-server-url: 
2026-10-18T10:49:11.9434296Z   lfs: false
2026-10-18T10:49:11.9434307Z   path: 
2026-10-18T10:49:11.9434386Z   persist-credentials: true
2026-10-18T10:49:11.9434398Z   ref: 
2026-10-18T10:49:11.9434410Z   repository: flagon-io/g1t
2026-10-18T10:49:11.9434423Z   set-safe-directory: true
2026-10-18T10:49:11.9434435Z   show-progress: true
2026-10-18T10:49:11.9434449Z   sparse-checkout: 
2026-10-18T10:49:11.9434460Z   sparse-checkout-cone-mode: true
2026-10-18T10:49:11.9434476Z   ssh-key: 
2026-10-18T10:49:11.9434491Z   ssh-known-hosts: 
2026-10-18T10:49:11.9434604Z   ssh-strict: true
2026-10-18T10:49:11.9434620Z   ssh-user: git
2026-10-18T10:49:11.9434630Z   submodules: false
2026-10-18T10:49:11.9434689Z   token: ***
2026-10-18T10:49:11.9434701Z env:
2026-10-18T10:49:11.9434714Z   CARGO_TERM_COLOR: never
2026-10-18T10:49:11.9434726Z   WRANGLER_SEND_METRICS: false
2026-10-18T10:49:11.9434736Z ##[endgroup]
2026-10-18T10:49:12.4005236Z Syncing repository: flagon-io/g1t
2026-10-18T10:49:12.4005341Z ##[group]Getting Git version info
2026-10-18T10:49:12.4005391Z Working directory is '/home/runner/work/repo'
2026-10-18T10:49:12.4053709Z [command]/usr/bin/git version
2026-10-18T10:49:12.4576492Z git version 2.39.5
2026-10-18T10:49:12.4622097Z ##[endgroup]
2026-10-18T10:49:12.4652354Z Temporarily overriding HOME='/home/runner/_temp/9de22c99-bd25-4f9c-b8ac-28a5bccf00cc' before making global git config changes
2026-10-18T10:49:12.4653011Z Adding repository directory to the temporary git global config as a safe directory
2026-10-18T10:49:12.4661575Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/repo
2026-10-18T10:49:12.4740744Z Deleting the contents of '/home/runner/work/repo'
2026-10-18T10:49:12.4751531Z ##[group]Initializing the repository
2026-10-18T10:49:12.4765161Z [command]/usr/bin/git init /home/runner/work/repo
2026-10-18T10:49:12.4906301Z hint: Using 'master' as the name for the initial branch. This default branch name
2026-10-18T10:49:12.4906717Z hint: is subject to change. To configure the initial branch name to use in all
2026-10-18T10:49:12.4906806Z hint: of your new repositories, which will suppress this warning, call:
2026-10-18T10:49:12.4906822Z hint: 
2026-10-18T10:49:12.4906860Z hint: 	git config --global init.defaultBranch <name>
2026-10-18T10:49:12.4906875Z hint: 
2026-10-18T10:49:12.4906941Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
2026-10-18T10:49:12.4907003Z hint: 'development'. The just-created branch can be renamed via this command:
2026-10-18T10:49:12.4907018Z hint: 
2026-10-18T10:49:12.4907047Z hint: 	git branch -m <name>
2026-10-18T10:49:12.4918823Z Initialized empty Git repository in /home/runner/work/repo/.git/
2026-10-18T10:49:12.4944065Z [command]/usr/bin/git remote add origin https://g1t.sh/flagon-io/g1t
2026-10-18T10:49:12.4997737Z ##[endgroup]
2026-10-18T10:49:12.4997872Z ##[group]Disabling automatic garbage collection
2026-10-18T10:49:12.5008577Z [command]/usr/bin/git config --local gc.auto 0
2026-10-18T10:49:12.5062207Z ##[endgroup]
2026-10-18T10:49:12.5062314Z ##[group]Setting up auth
2026-10-18T10:49:12.5075737Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-18T10:49:12.5132040Z [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-10-18T10:49:12.5864050Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/g1t\.sh\/\.extraheader
2026-10-18T10:49:12.5921796Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/g1t\.sh\/\.extraheader' && git config --local --unset-all 'http.https://g1t.sh/.extraheader' || :"
2026-10-18T10:49:12.6863174Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
2026-10-18T10:49:12.6955267Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
2026-10-18T10:49:12.7672985Z [command]/usr/bin/git config --local http.https://g1t.sh/.extraheader AUTHORIZATION: basic ***
2026-10-18T10:49:12.7792308Z ##[endgroup]
2026-10-18T10:49:12.7792504Z ##[group]Fetching the repository
2026-10-18T10:49:12.7818639Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +e249b9f4cff8ef395127964df942d61e0466b6dd:refs/remotes/pull/163/merge
2026-10-18T10:49:17.6539199Z From https://g1t.sh/flagon-io/g1t
2026-10-18T10:49:17.8165001Z  * [new ref]         e249b9f4cff8ef395127964df942d61e0466b6dd -> pull/163/merge
2026-10-18T10:49:17.8165110Z ##[endgroup]
2026-10-18T10:49:17.8165155Z ##[group]Determining the checkout info
2026-10-18T10:49:17.8165174Z ##[endgroup]
2026-10-18T10:49:17.8165212Z [command]/usr/bin/git sparse-checkout disable
2026-10-18T10:49:17.8165319Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig
2026-10-18T10:49:17.8165364Z ##[group]Checking out the ref
2026-10-18T10:49:17.8165478Z [command]/usr/bin/git checkout --progress --force refs/remotes/pull/163/merge
2026-10-18T10:49:18.1865834Z Note: switching to 'refs/remotes/pull/163/merge'.
2026-10-18T10:49:18.1865945Z 
2026-10-18T10:49:18.1866096Z You are in 'detached HEAD' state. You can look around, make experimental
2026-10-18T10:49:18.1866199Z changes and commit them, and you can discard any commits you make in this
2026-10-18T10:49:18.1866336Z state without impacting any branches by switching back to a branch.
2026-10-18T10:49:18.1866367Z 
2026-10-18T10:49:18.1866453Z If you want to create a new branch to retain commits you create, you may
2026-10-18T10:49:18.1866543Z do so (now or later) by using -c with the switch command. Example:
2026-10-18T10:49:18.1866565Z 
2026-10-18T10:49:18.1866599Z   git switch -c <new-branch-name>
2026-10-18T10:49:18.1866618Z 
2026-10-18T10:49:18.1866641Z Or undo this operation with:
2026-10-18T10:49:18.1866661Z 
2026-10-18T10:49:18.1866683Z   git switch -
2026-10-18T10:49:18.1866705Z 
2026-10-18T10:49:18.1866788Z Turn off this advice by setting config variable advice.detachedHead to false
2026-10-18T10:49:18.1866809Z 
2026-10-18T10:49:18.1866950Z HEAD is now at e249b9f Merge 159f04280d691bf6f681291eacac3b8747805e89 into 7ecaac1d1cf31cd8a0f272594b0fb86928ace428
2026-10-18T10:49:18.1881694Z ##[endgroup]
2026-10-18T10:49:18.1939907Z [command]/usr/bin/git log -1 --format=%H
2026-10-18T10:49:18.1973071Z e249b9f4cff8ef395127964df942d61e0466b6dd
2026-10-18T10:49:18.5238516Z ##[group]Run actions/cache@v4
2026-10-18T10:49:18.5238567Z with:
2026-10-18T10:49:18.5238579Z   enableCrossOsArchive: false
2026-10-18T10:49:18.5238591Z   fail-on-cache-miss: false
2026-10-18T10:49:18.5238688Z   key: npm-full-Linux-d193595f755da186e76061e433b790e8f1849037a491c81d42ae1f4257286974
2026-10-18T10:49:18.5238701Z   lookup-only: false
2026-10-18T10:49:18.5238710Z   path: ~/.npm
2026-10-18T10:49:18.5238718Z   restore-keys: npm-full-Linux-
2026-10-18T10:49:18.5238729Z   save-always: false
2026-10-18T10:49:18.5238737Z   upload-chunk-size: 
2026-10-18T10:49:18.5238747Z env:
2026-10-18T10:49:18.5238755Z   CARGO_TERM_COLOR: never
2026-10-18T10:49:18.5238764Z   WRANGLER_SEND_METRICS: false
2026-10-18T10:49:18.5238773Z ##[endgroup]
2026-10-18T10:49:18.7389419Z (node:1221) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
2026-10-18T10:49:18.7389580Z (Use `node --trace-deprecation ...` to show where the warning was created)
2026-10-18T10:49:33.2128094Z Cache Size: ~456 MB (477763572 B)
2026-10-18T10:49:33.3463251Z [command]/usr/bin/tar -xf /home/runner/_temp/34e10c16-f4ac-4c19-a16f-2b7c6842ea35/cache.tzst -P -C /home/runner/work/repo --use-compress-program unzstd
2026-10-18T10:49:35.7167653Z Cache restored successfully
2026-10-18T10:49:35.8458098Z Cache restored from key: npm-full-Linux-d193595f755da186e76061e433b790e8f1849037a491c81d42ae1f4257286974
2026-10-18T10:49:36.1349379Z ##[group]Run node scripts/deploy/npm-ci.mjs --prefer-offline --no-audit --no-fund
2026-10-18T10:49:36.1349475Z [36;1mnode scripts/deploy/npm-ci.mjs --prefer-offline --no-audit --no-fund[0m
2026-10-18T10:49:36.1349493Z shell: /usr/bin/bash -e {0}
2026-10-18T10:49:36.1349508Z env:
2026-10-18T10:49:36.1349517Z   CARGO_TERM_COLOR: never
2026-10-18T10:49:36.1349526Z   WRANGLER_SEND_METRICS: false
2026-10-18T10:49:36.1349535Z ##[endgroup]
2026-10-18T10:50:06.1507560Z npm warn deprecated uuid@11.1.1: uuid@10 and below is no longer supported.  For ESM codebases, update to uuid@latest.  For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).
2026-10-18T10:50:42.5084977Z 
2026-10-18T10:50:42.6491961Z added 1325 packages in 1m
2026-10-18T10:50:42.6492145Z npm warn install-scripts 2 packages have install scripts not yet covered by allowScripts:
2026-10-18T10:50:42.6492233Z npm warn install-scripts   esbuild@0.28.1 (postinstall: node install.js)
2026-10-18T10:50:42.6492306Z npm warn install-scripts   workerd@1.20261001.1 (postinstall: node install.js)
2026-10-18T10:50:42.6492320Z npm warn install-scripts
2026-10-18T10:50:42.6492414Z npm warn install-scripts Run `npm install-scripts ls` to review, or `npm install-scripts approve <pkg>` to allow.
2026-10-18T10:50:43.1934745Z ##[group]Run npm run typecheck
2026-10-18T10:50:43.1934794Z [36;1mnpm run typecheck[0m
2026-10-18T10:50:43.1934817Z shell: /usr/bin/bash -e {0}
2026-10-18T10:50:43.1934827Z env:
2026-10-18T10:50:43.1934839Z   CARGO_TERM_COLOR: never
2026-10-18T10:50:43.1934856Z   WRANGLER_SEND_METRICS: false
2026-10-18T10:50:43.1934870Z ##[endgroup]
2026-10-18T10:50:43.5652644Z 
2026-10-18T10:50:43.5652787Z > typecheck
2026-10-18T10:50:43.5652835Z > npm run typecheck --workspaces --if-present
2026-10-18T10:50:43.5652897Z 
2026-10-18T10:50:43.8048690Z 
2026-10-18T10:50:43.8048778Z > @g1t/mobile@0.1.0 typecheck
2026-10-18T10:50:43.8048807Z > tsc --noEmit
2026-10-18T10:50:43.8048829Z 
2026-10-18T10:50:53.5653382Z 
2026-10-18T10:50:53.6985417Z > @g1t/status@0.1.0 typecheck
2026-10-18T10:50:53.6985570Z > wrangler types --include-env=false && tsc -p tsconfig.json
2026-10-18T10:50:53.6985595Z 
2026-10-18T10:50:55.1008660Z 
2026-10-18T10:50:55.1008790Z  ⛅️ wrangler 4.146.0 (update available 4.151.1)
2026-10-18T10:50:55.1008957Z ───────────────────────────────────────────────
2026-10-18T10:50:55.2211851Z Generating runtime types...
2026-10-18T10:50:55.2212124Z 
2026-10-18T10:50:57.2759107Z Runtime types generated.
2026-10-18T10:50:57.4149406Z 
2026-10-18T10:50:57.4149484Z 
2026-10-18T10:50:57.4149538Z ✨ Types written to worker-configuration.d.ts
2026-10-18T10:50:57.4149563Z 
2026-10-18T10:50:57.4149581Z 📖 Read about runtime types
2026-10-18T10:50:57.4149696Z https://developers.cloudflare.com/workers/languages/typescript/#generate-types
2026-10-18T10:50:57.4149782Z 📣 Remember to rerun 'wrangler types' after you change your wrangler.jsonc file.
2026-10-18T10:50:57.4149802Z 
2026-10-18T10:51:02.8188978Z 
2026-10-18T10:51:02.9514951Z > typecheck
2026-10-18T10:51:02.9515130Z > wrangler types --include-env=false && react-router typegen && tsc -b --force
2026-10-18T10:51:02.9515160Z 
2026-10-18T10:51:04.4008370Z 
2026-10-18T10:51:04.4008576Z  ⛅️ wrangler 4.146.0 (update available 4.151.1)
2026-10-18T10:51:04.4008764Z ───────────────────────────────────────────────
2026-10-18T10:51:04.4834282Z Generating runtime types...
2026-10-18T10:51:04.4839280Z 
2026-10-18T10:51:04.5159353Z Runtime types generated.
2026-10-18T10:51:04.5159679Z 
2026-10-18T10:51:04.5164402Z 
2026-10-18T10:51:04.5207486Z ✨ Types written to worker-configuration.d.ts
2026-10-18T10:51:04.5208200Z 
2026-10-18T10:51:04.5227105Z 📖 Read about runtime types
2026-10-18T10:51:04.5227490Z https://developers.cloudflare.com/workers/languages/typescript/#generate-types
2026-10-18T10:51:04.5231240Z 📣 Remember to rerun 'wrangler types' after you change your wrangler.jsonc file.
2026-10-18T10:51:04.5231514Z 
2026-10-18T10:51:24.8133832Z 
2026-10-18T10:51:25.0028037Z > typecheck
2026-10-18T10:51:25.0028278Z > wrangler types --include-env=false && react-router typegen && tsc -b --force
2026-10-18T10:51:25.0028337Z 
2026-10-18T10:51:26.5368733Z 
2026-10-18T10:51:26.5369136Z  ⛅️ wrangler 4.146.0 (update available 4.151.1)
2026-10-18T10:51:26.5369351Z ───────────────────────────────────────────────
2026-10-18T10:51:26.6991852Z Generating runtime types...
2026-10-18T10:51:26.6996512Z 
2026-10-18T10:51:26.7098400Z Runtime types generated.
2026-10-18T10:51:26.7098904Z 
2026-10-18T10:51:26.7113561Z 
2026-10-18T10:51:26.7142091Z ✨ Types written to worker-configuration.d.ts
2026-10-18T10:51:26.7142187Z 
2026-10-18T10:51:26.7159800Z 📖 Read about runtime types
2026-10-18T10:51:26.7159964Z https://developers.cloudflare.com/workers/languages/typescript/#generate-types
2026-10-18T10:51:26.7162240Z 📣 Remember to rerun 'wrangler types' after you change your wrangler.jsonc file.
2026-10-18T10:51:26.7162269Z 
2026-10-18T10:52:52.0980764Z 
2026-10-18T10:52:52.2393109Z > @g1t/artifacts@0.1.0 typecheck
2026-10-18T10:52:52.2393291Z > wrangler types --include-env=false && tsc -p tsconfig.json
2026-10-18T10:52:52.2393319Z 
2026-10-18T10:52:53.7274511Z 
2026-10-18T10:52:53.7274710Z  ⛅️ wrangler 4.146.0 (update available 4.151.1)
2026-10-18T10:52:53.7274891Z ───────────────────────────────────────────────
2026-10-18T10:52:53.8675056Z Generating runtime types...
2026-10-18T10:52:53.8675207Z 
2026-10-18T10:52:55.8707932Z Runtime types generated.
2026-10-18T10:52:56.0159993Z 
2026-10-18T10:52:56.0160046Z 
2026-10-18T10:52:56.0160096Z ✨ Types written to worker-configuration.d.ts
2026-10-18T10:52:56.0160280Z 
2026-10-18T10:52:56.0160301Z 📖 Read about runtime types
2026-10-18T10:52:56.0160410Z https://developers.cloudflare.com/workers/languages/typescript/#generate-types
2026-10-18T10:52:56.0160495Z 📣 Remember to rerun 'wrangler types' after you change your wrangler.jsonc file.
2026-10-18T10:52:56.0160505Z 
2026-10-18T10:53:04.0314089Z 
2026-10-18T10:53:04.1609298Z > @g1t/chat@0.1.0 typecheck
2026-10-18T10:53:04.1609468Z > wrangler types --include-env=false && tsc -p tsconfig.json
2026-10-18T10:53:04.1609488Z 
2026-10-18T10:53:05.7648446Z 
2026-10-18T10:53:05.7648677Z  ⛅️ wrangler 4.146.0 (update available 4.151.1)
2026-10-18T10:53:05.7648871Z ───────────────────────────────────────────────
2026-10-18T10:53:05.8947600Z Generating runtime types...
2026-10-18T10:53:05.8948120Z 
2026-10-18T10:53:08.0644883Z Runtime types generated.
2026-10-18T10:53:08.2039119Z 
2026-10-18T10:53:08.2039174Z 
2026-10-18T10:53:08.2039223Z ✨ Types written to worker-configuration.d.ts
2026-10-18T10:53:08.2039247Z 
2026-10-18T10:53:08.2039260Z 📖 Read about runtime types
2026-10-18T10:53:08.2039360Z https://developers.cloudflare.com/workers/languages/typescript/#generate-types
2026-10-18T10:53:08.2039445Z 📣 Remember to rerun 'wrangler types' after you change your wrangler.jsonc file.
2026-10-18T10:53:08.2039465Z 
2026-10-18T10:53:13.0721807Z 
2026-10-18T10:53:13.2009660Z > @g1t/deployments@0.1.0 typecheck
2026-10-18T10:53:13.2009826Z > wrangler types --include-env=false && tsc -p tsconfig.json
2026-10-18T10:53:13.2009852Z 
2026-10-18T10:53:14.7728875Z 
2026-10-18T10:53:14.7729063Z  ⛅️ wrangler 4.146.0 (update available 4.151.1)
2026-10-18T10:53:14.7729239Z ───────────────────────────────────────────────
2026-10-18T10:53:14.9254059Z Generating runtime types...
2026-10-18T10:53:14.9254166Z 
2026-10-18T10:53:17.1389453Z Runtime types generated.
2026-10-18T10:53:17.2726734Z 
2026-10-18T10:53:17.2726808Z 
2026-10-18T10:53:17.2726871Z ✨ Types written to worker-configuration.d.ts
2026-10-18T10:53:17.2726899Z 
2026-10-18T10:53:17.2726918Z 📖 Read about runtime types
2026-10-18T10:53:17.2727055Z https://developers.cloudflare.com/workers/languages/typescript/#generate-types
2026-10-18T10:53:17.2727159Z 📣 Remember to rerun 'wrangler types' after you change your wrangler.jsonc file.
2026-10-18T10:53:17.2727175Z 
2026-10-18T10:53:22.8627095Z 
2026-10-18T10:53:23.0080281Z > @g1t/notify@0.1.0 typecheck
2026-10-18T10:53:23.0080460Z > wrangler types --include-env=false && tsc -p tsconfig.json
2026-10-18T10:53:23.0080489Z 
2026-10-18T10:53:24.6168419Z 
2026-10-18T10:53:24.6168611Z  ⛅️ wrangler 4.146.0 (update available 4.151.1)
2026-10-18T10:53:24.6168821Z ───────────────────────────────────────────────
2026-10-18T10:53:24.7125646Z Generating runtime types...
2026-10-18T10:53:24.7126016Z 
2026-10-18T10:53:26.8167012Z Runtime types generated.
2026-10-18T10:53:26.9842981Z 
2026-10-18T10:53:26.9843029Z 
2026-10-18T10:53:26.9843069Z ✨ Types written to worker-configuration.d.ts
2026-10-18T10:53:26.9843087Z 
2026-10-18T10:53:26.9843102Z 📖 Read about runtime types
2026-10-18T10:53:26.9843382Z https://developers.cloudflare.com/workers/languages/typescript/#generate-types
2026-10-18T10:53:26.9843460Z 📣 Remember to rerun 'wrangler types' after you change your wrangler.jsonc file.
2026-10-18T10:53:26.9843470Z 
2026-10-18T10:53:31.2267127Z 
2026-10-18T10:53:31.3636516Z > @g1t/og@0.1.0 typecheck
2026-10-18T10:53:31.3636697Z > wrangler types --include-env=false && tsc -p tsconfig.json
2026-10-18T10:53:31.3636729Z 
2026-10-18T10:53:32.6688381Z 
2026-10-18T10:53:32.6688561Z  ⛅️ wrangler 4.146.0 (update available 4.151.1)
2026-10-18T10:53:32.6688728Z ───────────────────────────────────────────────
2026-10-18T10:53:32.7749993Z Generating runtime types...
2026-10-18T10:53:32.7750270Z 
2026-10-18T10:53:34.8088630Z Runtime types generated.
2026-10-18T10:53:34.9358287Z 
2026-10-18T10:53:34.9358361Z 
2026-10-18T10:53:34.9358409Z ✨ Types written to worker-configuration.d.ts
2026-10-18T10:53:34.9358429Z 
2026-10-18T10:53:34.9358441Z 📖 Read about runtime types
2026-10-18T10:53:34.9358540Z https://developers.cloudflare.com/workers/languages/typescript/#generate-types
2026-10-18T10:53:34.9358623Z 📣 Remember to rerun 'wrangler types' after you change your wrangler.jsonc file.
2026-10-18T10:53:34.9358634Z 
2026-10-18T10:53:38.6468738Z 
2026-10-18T10:53:38.7756734Z > @g1t/pages@0.1.0 typecheck
2026-10-18T10:53:38.7756931Z > wrangler types --include-env=false && tsc -p tsconfig.json
2026-10-18T10:53:38.7756962Z 
2026-10-18T10:53:40.0248145Z 
2026-10-18T10:53:40.0248329Z  ⛅️ wrangler 4.146.0 (update available 4.151.1)
2026-10-18T10:53:40.0248523Z ───────────────────────────────────────────────
2026-10-18T10:53:40.0923682Z Generating runtime types...
2026-10-18T10:53:40.0924067Z 
2026-10-18T10:53:42.3283567Z Runtime types generated.
2026-10-18T10:53:42.4577981Z 
2026-10-18T10:53:42.4578042Z 
2026-10-18T10:53:42.4578093Z ✨ Types written to worker-configuration.d.ts
2026-10-18T10:53:42.4578116Z 
2026-10-18T10:53:42.4578131Z 📖 Read about runtime types
2026-10-18T10:53:42.4578256Z https://developers.cloudflare.com/workers/languages/typescript/#generate-types
2026-10-18T10:53:42.4578354Z 📣 Remember to rerun 'wrangler types' after you change your wrangler.jsonc file.
2026-10-18T10:53:42.4578369Z 
2026-10-18T10:53:44.3625466Z 
2026-10-18T10:53:44.3625587Z > @g1t/projects@0.1.0 typecheck
2026-10-18T10:53:44.3625708Z > wrangler types --include-env=false && tsc -p tsconfig.json
2026-10-18T10:53:44.3625726Z 
2026-10-18T10:53:45.9088503Z 
2026-10-18T10:53:46.0527146Z  ⛅️ wrangler 4.146.0 (update available 4.151.1)
2026-10-18T10:53:46.0527341Z ───────────────────────────────────────────────
2026-10-18T10:53:46.0527368Z Generating runtime types...
2026-10-18T10:53:46.0527381Z 
2026-10-18T10:53:48.1083197Z Runtime types generated.
2026-10-18T10:53:48.2418918Z 
2026-10-18T10:53:48.2419017Z 
2026-10-18T10:53:48.2419108Z ✨ Types written to worker-configuration.d.ts
2026-10-18T10:53:48.2419158Z 
2026-10-18T10:53:48.2419183Z 📖 Read about runtime types
2026-10-18T10:53:48.2419374Z https://developers.cloudflare.com/workers/languages/typescript/#generate-types
2026-10-18T10:53:48.2419495Z 📣 Remember to rerun 'wrangler types' after you change your wrangler.jsonc file.
2026-10-18T10:53:48.2419506Z 
2026-10-18T10:53:52.5920341Z 
2026-10-18T10:53:52.7533521Z > @g1t/runner@0.1.0 typecheck
2026-10-18T10:53:52.7533693Z > wrangler types --include-env=false && tsc -p tsconfig.json
2026-10-18T10:53:52.7533725Z 
2026-10-18T10:53:54.2768625Z 
2026-10-18T10:53:54.2768774Z  ⛅️ wrangler 4.146.0 (update available 4.151.1)
2026-10-18T10:53:54.2769631Z ───────────────────────────────────────────────
2026-10-18T10:53:54.3951247Z Generating runtime types...
2026-10-18T10:53:54.3951546Z 
2026-10-18T10:53:56.3648210Z Runtime types generated.
2026-10-18T10:53:56.5025984Z 
2026-10-18T10:53:56.5026052Z 
2026-10-18T10:53:56.5026106Z ✨ Types written to worker-configuration.d.ts
2026-10-18T10:53:56.5026134Z 
2026-10-18T10:53:56.5026150Z 📖 Read about runtime types
2026-10-18T10:53:56.5026284Z https://developers.cloudflare.com/workers/languages/typescript/#generate-types
2026-10-18T10:53:56.5026389Z 📣 Remember to rerun 'wrangler types' after you change your wrangler.jsonc file.
2026-10-18T10:53:56.5026405Z 
2026-10-18T10:54:00.5431677Z 
2026-10-18T10:54:00.6758496Z > @g1t/telemetry@0.1.0 typecheck
2026-10-18T10:54:00.6758661Z > wrangler types --include-env=false && tsc -p tsconfig.json
2026-10-18T10:54:00.6758688Z 
2026-10-18T10:54:02.1408128Z 
2026-10-18T10:54:02.1408293Z  ⛅️ wrangler 4.146.0 (update available 4.151.1)
2026-10-18T10:54:02.1408444Z ───────────────────────────────────────────────
2026-10-18T10:54:02.2404148Z Generating runtime types...
2026-10-18T10:54:02.2404252Z 
2026-10-18T10:54:04.2433535Z Runtime types generated.
2026-10-18T10:54:04.3737101Z 
2026-10-18T10:54:04.3737177Z 
2026-10-18T10:54:04.3737253Z ✨ Types written to worker-configuration.d.ts
2026-10-18T10:54:04.3737285Z 
2026-10-18T10:54:04.3737304Z 📖 Read about runtime types
2026-10-18T10:54:04.3737430Z https://developers.cloudflare.com/workers/languages/typescript/#generate-types
2026-10-18T10:54:04.3737529Z 📣 Remember to rerun 'wrangler types' after you change your wrangler.jsonc file.
2026-10-18T10:54:04.3737548Z 
2026-10-18T10:54:08.5492734Z 
2026-10-18T10:54:08.6835306Z > @g1t/contracts@0.1.0 typecheck
2026-10-18T10:54:08.6835390Z > tsc -p tsconfig.json
2026-10-18T10:54:08.6835417Z 
2026-10-18T10:54:12.4957048Z ##[group]Run npm test --workspaces --if-present
2026-10-18T10:54:12.4957115Z [36;1mnpm test --workspaces --if-present[0m
2026-10-18T10:54:12.4957135Z shell: /usr/bin/bash -e {0}
2026-10-18T10:54:12.4957150Z env:
2026-10-18T10:54:12.4957177Z   CARGO_TERM_COLOR: never
2026-10-18T10:54:12.4957192Z   WRANGLER_SEND_METRICS: false
2026-10-18T10:54:12.4957206Z ##[endgroup]
2026-10-18T10:54:12.6898550Z 
2026-10-18T10:54:12.6898761Z > @g1t/docs@0.1.0 test
2026-10-18T10:54:12.6898803Z > node --test "src/diagrams/*.test.ts"
2026-10-18T10:54:12.6898820Z 
2026-10-18T10:54:12.9463238Z ✔ every diagram draws, and reads as text (9.984659ms)
2026-10-18T10:54:12.9489325Z ✔ every box is inside its diagram, and no two boxes overlap (2.483214ms)
2026-10-18T10:54:12.9489389Z ✔ every box's text fits inside it (0.633591ms)
2026-10-18T10:54:12.9491637Z ✔ an arrow to a box that does not exist is an error, not a missing line (0.905312ms)
2026-10-18T10:54:12.9646625Z ℹ tests 4
2026-10-18T10:54:12.9646931Z ℹ suites 0
2026-10-18T10:54:12.9647099Z ℹ pass 4
2026-10-18T10:54:12.9647266Z ℹ fail 0
2026-10-18T10:54:12.9647458Z ℹ cancelled 0
2026-10-18T10:54:12.9649610Z ℹ skipped 0
2026-10-18T10:54:12.9649811Z ℹ todo 0
2026-10-18T10:54:12.9650321Z ℹ duration_ms 227.165893
2026-10-18T10:54:12.9739878Z 
2026-10-18T10:54:12.9740257Z > @g1t/mobile@0.1.0 test
2026-10-18T10:54:12.9740499Z > node --test "src/lib/*.test.ts"
2026-10-18T10:54:12.9740715Z 
2026-10-18T10:54:13.1780057Z (node:1863) [MODULE_TYPELESS_PACKAGE_JSON] Warning: Module type of file:///home/runner/work/repo/apps/mobile/src/lib/board.test.ts is not specified and it doesn't parse as CommonJS.
2026-10-18T10:54:13.1786247Z Reparsing as ES module because module syntax was detected. This incurs a performance overhead.
2026-10-18T10:54:13.1801612Z To eliminate this warning, add "type": "module" to /home/runner/work/repo/apps/mobile/package.json.
2026-10-18T10:54:13.1802625Z (Use `node --trace-warnings ...` to show where the warning was created)
2026-10-18T10:54:13.2109501Z ✔ an open item nobody is on is in the backlog (1.808513ms)
2026-10-18T10:54:13.2110924Z ✔ an item someone is on, or with a draft, is in progress (0.370061ms)
2026-10-18T10:54:13.2116305Z ✔ an item with an open pull request is in review, even with someone on it (0.36081ms)
2026-10-18T10:54:13.2116414Z ✔ an item landed in some targets but not all is landing, ahead of review (0.35365ms)
2026-10-18T10:54:13.2117626Z ✔ an item closed in the last two weeks is done, and older ones are left out (0.572832ms)
2026-10-18T10:54:13.2118683Z ✔ the board puts each item in its stage once, done newest first (10.84064ms)
2026-10-18T10:54:13.2125353Z ✔ who is on an item: its assignees, then who runs a live session on it, in what (2.119064ms)
2026-10-18T10:54:13.3609038Z (node:1870) [MODULE_TYPELESS_PACKAGE_JSON] Warning: Module type of file:///home/runner/work/repo/apps/mobile/src/lib/links.test.ts is not specified and it doesn't parse as CommonJS.
2026-10-18T10:54:13.3609182Z Reparsing as ES module because module syntax was detected. This incurs a performance overhead.
2026-10-18T10:54:13.3609247Z To eliminate this warning, add "type": "module" to /home/runner/work/repo/apps/mobile/package.json.
2026-10-18T10:54:13.3609311Z (Use `node --trace-warnings ...` to show where the warning was created)
2026-10-18T10:54:13.3875099Z ✔ a g1t:// link names a site path, as on the desktop (2.102334ms)
2026-10-18T10:54:13.3879504Z ✔ an https link to the site names the same path as a g1t:// one (0.356761ms)
2026-10-18T10:54:13.3883615Z ✔ Chat's pages open the app's Chat (0.473801ms)
2026-10-18T10:54:13.3890811Z ✔ Work's pages open the app's Work (0.653042ms)
2026-10-18T10:54:13.3890861Z ✔ Work's board opens Work on its board (0.24723ms)
2026-10-18T10:54:13.3898813Z ✔ Work's sessions open Work on its Sessions, and a session its screen (0.31089ms)
2026-10-18T10:54:13.3907237Z ✔ a session opens its page, or its pull request's for g1t's agent and a recorded one (0.35048ms)
2026-10-18T10:54:13.3907335Z ✔ an old link to an issue asks g1t what its number names in its repository (0.3455ms)
2026-10-18T10:54:13.3909705Z ✔ Code's pages open the app's Code (0.29308ms)
2026-10-18T10:54:13.3913223Z ✔ #N is read where it was written, owner/name#N in that repository, workspace#N in that workspace (1.163212ms)
2026-10-18T10:54:13.3916770Z ✔ what a reference names opens its screen, and the site reads one the app cannot (0.30304ms)
2026-10-18T10:54:13.3919904Z ✔ old links to Agents, Customize and the Marketplace open Home (0.185241ms)
2026-10-18T10:54:13.3931892Z ✔ the integrations directory stays on the site (1.338812ms)
2026-10-18T10:54:13.3936721Z ✔ the app's sign-in comes back to its own screen, and the site's own pages stay on the site (0.133311ms)
2026-10-18T10:54:13.3938356Z ✔ a connect link points the app at a g1t (0.24749ms)
2026-10-18T10:54:13.5130405Z (node:1877) [MODULE_TYPELESS_PACKAGE_JSON] Warning: Module type of file:///home/runner/work/repo/apps/mobile/src/lib/new-item.test.ts is not specified and it doesn't parse as CommonJS.
2026-10-18T10:54:13.6525536Z Reparsing as ES module because module syntax was detected. This incurs a performance overhead.
2026-10-18T10:54:13.6526668Z To eliminate this warning, add "type": "module" to /home/runner/work/repo/apps/mobile/package.json.
2026-10-18T10:54:13.6526783Z (Use `node --trace-warnings ...` to show where the warning was created)
2026-10-18T10:54:13.6526849Z ✔ a new work item may land in its own workspace's repositories, each once (2.367635ms)
2026-10-18T10:54:13.6526912Z ✔ a new work item is filed from a repository of its workspace, by name or path (0.403641ms)
2026-10-18T10:54:13.6638735Z (node:1884) [MODULE_TYPELESS_PACKAGE_JSON] Warning: Module type of file:///home/runner/work/repo/apps/mobile/src/lib/server.test.ts is not specified and it doesn't parse as CommonJS.
2026-10-18T10:54:13.6690930Z Reparsing as ES module because module syntax was detected. This incurs a performance overhead.
2026-10-18T10:54:13.6691357Z To eliminate this warning, add "type": "module" to /home/runner/work/repo/apps/mobile/package.json.
2026-10-18T10:54:13.6691611Z (Use `node --trace-warnings ...` to show where the warning was created)
2026-10-18T10:54:13.6809007Z ✔ an origin is all that is kept (1.746073ms)
2026-10-18T10:54:13.6843592Z ✔ hosted g1t's API is api.g1t.sh, and a self-hosted one's is api. on its host (1.290872ms)
2026-10-18T10:54:13.6849312Z ✔ an API given by hand wins (0.348951ms)
2026-10-18T10:54:13.6849385Z ✔ sockets follow the site's scheme (0.409941ms)
2026-10-18T10:54:13.8374176Z (node:1891) [MODULE_TYPELESS_PACKAGE_JSON] Warning: Module type of file:///home/runner/work/repo/apps/mobile/src/lib/sessions.test.ts is not specified and it doesn't parse as CommonJS.
2026-10-18T10:54:13.8374370Z Reparsing as ES module because module syntax was detected. This incurs a performance overhead.
2026-10-18T10:54:13.8374454Z To eliminate this warning, add "type": "module" to /home/runner/work/repo/apps/mobile/package.json.
2026-10-18T10:54:13.8374851Z (Use `node --trace-warnings ...` to show where the warning was created)
2026-10-18T10:54:13.8679835Z ✔ subagents are a tree under their session, in the order they started (17.418983ms)
2026-10-18T10:54:13.8682142Z ✔ the files a session touched, once each (0.581141ms)
2026-10-18T10:54:13.8696172Z ✔ a session's name is its title, else its task or first prompt (0.434511ms)
2026-10-18T10:54:13.8731444Z ✔ the list's filters are the API's (2.858766ms)
2026-10-18T10:54:13.8883096Z ℹ tests 32
2026-10-18T10:54:13.8883440Z ℹ suites 0
2026-10-18T10:54:13.8883612Z ℹ pass 32
2026-10-18T10:54:13.8883777Z ℹ fail 0
2026-10-18T10:54:13.8883952Z ℹ cancelled 0
2026-10-18T10:54:13.8884111Z ℹ skipped 0
2026-10-18T10:54:13.8884275Z ℹ todo 0
2026-10-18T10:54:13.8884434Z ℹ duration_ms 864.126108
2026-10-18T10:54:13.9001247Z 
2026-10-18T10:54:13.9001355Z > @g1t/status@0.1.0 test
2026-10-18T10:54:13.9001481Z > node --experimental-transform-types --no-warnings=ExperimentalWarning --test src/*.test.ts
2026-10-18T10:54:13.9001501Z 
2026-10-18T10:54:14.2378206Z ✔ a draft at 4 bad of the last 5 checks, once (4.97452ms)
2026-10-18T10:54:14.2408430Z ✔ N of M: a good check between does not hide trouble that keeps coming (0.916922ms)
2026-10-18T10:54:14.2408632Z ✔ a blip is not an incident: three bad of five is under the line, and three good checks end the run (0.649052ms)
2026-10-18T10:54:14.2408716Z ✔ slow then failing is one run, at its worst (0.31794ms)
2026-10-18T10:54:14.2408758Z ✔ parts failing together share one draft (0.508741ms)
2026-10-18T10:54:14.2408872Z ✔ with an incident already open on the part: a line on it, no draft; recovery is noted once the run ends (0.718551ms)
2026-10-18T10:54:14.2430025Z ✔ a run that never crossed the line is not noted as a recovery (0.399031ms)
2026-10-18T10:54:14.2432527Z ✔ parts under maintenance and unmonitored parts are left alone (0.521381ms)
2026-10-18T10:54:14.2438340Z ✔ the draft says what failed (1.132142ms)
2026-10-18T10:54:14.2442018Z ✔ a run that recovered is over: the next one starts fresh, with its own start (1.058362ms)
2026-10-18T10:54:14.2445067Z ✔ a run slow for hours, raised long ago, still ends when the checks go healthy (0.830662ms)
2026-10-18T10:54:14.2446733Z ✔ during a deploy, trouble is counted but not drafted; it is drafted once it outlasts the window (1.649593ms)
2026-10-18T10:54:14.2475243Z ✔ during a deploy, an incident already open still hears about its parts (0.295941ms)
2026-10-18T10:54:14.2478529Z ✔ the deploy window: running, finished plus grace, and a start that never finished (0.714581ms)
2026-10-18T10:54:14.2481802Z ✔ deploys that overlap are one window, finished when the last one is (0.771071ms)
2026-10-18T10:54:14.2484604Z ✔ a detected draft that recovers and stays healthy is dismissed; trouble in between starts the wait again (0.870702ms)
2026-10-18T10:54:14.2490449Z ✔ a draft nobody acknowledges is raised again after 45 minutes, once, then every 6 hours (0.632471ms)
2026-10-18T10:54:14.2493448Z ✔ slow and down are said apart, with the run's own start (0.797302ms)
2026-10-18T10:54:14.6440599Z ✔ the 6 Oct draft: a slow run at 03:13 that recovered does not leak into the one at 07:25 (12.673264ms)
2026-10-18T10:54:14.7796169Z ✔ a run kept before N of M (no checks, no recent) is read as all bad, and still ends (4.256698ms)
2026-10-18T10:54:14.7796332Z ✔ a run is kept while it lasts, and only the parts still failing keep one (4.264668ms)
2026-10-18T10:54:14.7796411Z ✔ the deploy window is kept between rounds (4.229378ms)
2026-10-18T10:54:14.7796551Z ✔ every check is kept for 7 days, with where it ran from, and an incident's page reads its parts' checks (16.089841ms)
2026-10-18T10:54:14.7796670Z ✔ a draft left waiting is raised again, with a line on its timeline, and forgotten once it is not waiting (5.709551ms)
2026-10-18T10:54:14.7796784Z ✔ a detected draft that recovered is dismissed after ten healthy minutes; one staff picked up is left alone (7.323644ms)
2026-10-18T10:54:14.9916910Z ✔ declaring: cleaned and checked; operational parts are left out (4.554769ms)
2026-10-18T10:54:14.9917923Z ✔ declaring is refused without what it needs (1.466513ms)
2026-10-18T10:54:14.9929130Z ✔ severities: SEV1 and SEV2 email subscribers by default (0.409981ms)
2026-10-18T10:54:14.9930502Z ✔ an update needs words when it is public; a note can be just a change (0.574541ms)
2026-10-18T10:54:14.9961050Z ✔ lifecycle: identified, then monitoring marks it mitigated, then resolved (1.340212ms)
2026-10-18T10:54:14.9962840Z ✔ lifecycle: resolving straight away marks it mitigated too; reopening clears resolved (0.650972ms)
2026-10-18T10:54:14.9973898Z ✔ lifecycle: a published incident's status changes only with public words (0.767461ms)
2026-10-18T10:54:14.9974001Z ✔ lifecycle: severity and impact changes are written on the timeline (0.651202ms)
2026-10-18T10:54:14.9974109Z ✔ lifecycle: drafts take notes but nothing public; dismissed takes nothing; the first touch acknowledges (0.808661ms)
2026-10-18T10:54:14.9974174Z ✔ roles: each change is a line, and nobody is said plainly (1.140382ms)
2026-10-18T10:54:14.9974196Z ✔ durations read plainly (0.415471ms)
2026-10-18T10:54:14.9974264Z ✔ maintenance: a window in the future, under 72 hours, on known parts (0.965042ms)
2026-10-18T10:54:14.9974691Z ✔ postmortems: published only with a summary and a cause; the draft is filled from the incident (1.047662ms)
2026-10-18T10:54:14.9979838Z ✔ short ids are ten unambiguous characters (8.450226ms)
2026-10-18T10:54:15.3114989Z ✔ classify: fast is up, slow is degraded, failed is down, none is unmonitored (3.246696ms)
2026-10-18T10:54:15.3133959Z ✔ uptime rounds down, so one failure never reads as 100% (0.457711ms)
2026-10-18T10:54:15.3134268Z ✔ a day's colour: a blip stays green, a bad hour is degraded, worse is down (0.368331ms)
2026-10-18T10:54:15.3136959Z ✔ lastDays ends today, oldest first (0.894262ms)
2026-10-18T10:54:15.3141655Z ✔ an incident is on every day it was open (0.377081ms)
2026-10-18T10:54:15.3147425Z ✔ bars and 90-day uptime come from the daily tally (0.733111ms)
2026-10-18T10:54:15.3151717Z ✔ a bar marks the days an incident on its part was open (0.526731ms)
2026-10-18T10:54:15.3156098Z ✔ summarize: core down is a major outage, others partial, slow is degraded performance (0.875491ms)
2026-10-18T10:54:15.3158223Z ✔ recent incidents: open ones and those resolved in 90 days, newest first (0.468891ms)
2026-10-18T10:54:15.3159581Z ✔ buildPage: parts with no check are unmonitored and have no uptime; staleness is noticed (4.432828ms)
2026-10-18T10:54:15.3161604Z ✔ components: an installation without a host leaves that part off (0.930432ms)
2026-10-18T10:54:15.3163610Z ✔ a part's state: the worse of its check and open incidents; maintenance unless an incident says worse (0.256431ms)
2026-10-18T10:54:15.3167433Z ✔ maintenance moves with its window, and cancelled or completed stays put (0.343201ms)
2026-10-18T10:54:15.3170287Z ✔ buildPage: incident impacts and maintenance reach the parts and the banner (18.151754ms)
2026-10-18T10:54:15.3188724Z ✔ git storage is listed only with the repos service, and degraded says why (0.594901ms)
2026-10-18T10:54:15.5792561Z ✔ page loads say they are a browser, so the site streams them; the name stays on the end (40.178096ms)
2026-10-18T10:54:15.5814691Z ✔ the data centre that answered is read from cf-ray (1.328842ms)
2026-10-18T10:54:15.5814794Z ✔ a slow answer is asked again at once: one slow answer is not slow, two are (2.182564ms)
2026-10-18T10:54:15.5814862Z ✔ a step works on 2xx, or on exactly the status it expects (1.447432ms)
2026-10-18T10:54:15.5975940Z ✔ a step that cannot connect, or takes too long, fails with why (20.97109ms)
2026-10-18T10:54:15.5978637Z ✔ a check's steps: all must work, and it takes as long as the slowest (0.474591ms)
2026-10-18T10:54:15.5981303Z ✔ runCheck: billing without a binding, and a part with no check, are null (0.903192ms)
2026-10-18T10:54:15.5982743Z ✔ git storage is judged by how its calls went, and quiet is up (1.029702ms)
2026-10-18T10:54:15.9854432Z ✔ escape covers HTML's specials (2.203754ms)
2026-10-18T10:54:15.9854603Z ✔ the page: banner, every part with its bar, and no incidents (28.148724ms)
2026-10-18T10:54:15.9854705Z ✔ an outage and an open incident are said at the top, escaped (4.663249ms)
2026-10-18T10:54:15.9854824Z ✔ every page follows the system's light or dark setting, with a switch kept in this browser (4.445848ms)
2026-10-18T10:54:15.9854906Z ✔ the theme script picks the stored choice, else auto (0.980381ms)
2026-10-18T10:54:15.9854951Z ✔ a stale page says the checks stopped (1.166572ms)
2026-10-18T10:54:15.9854984Z ✔ a day's detail names what happened (0.336171ms)
2026-10-18T10:54:15.9855016Z ✔ the badge is an SVG coloured by state (0.33075ms)
2026-10-18T10:54:15.9855098Z ✔ maintenance: upcoming, then in progress with its parts under maintenance (5.078419ms)
2026-10-18T10:54:15.9855178Z ✔ an incident's page: every update, its parts' impact, and the postmortem once published (2.330574ms)
2026-10-18T10:54:15.9855230Z ✔ prose: paragraphs and lists, escaped (0.215801ms)
2026-10-18T10:54:15.9855302Z ✔ history: months newest first, empty ones said so (3.399616ms)
2026-10-18T10:54:15.9855382Z ✔ subscribe pages: the form, its parts, and a confirm button rather than a link that acts (1.493203ms)
2026-10-18T10:54:16.1958847Z ✔ addresses are trimmed, lowercased and checked (1.598793ms)
2026-10-18T10:54:16.1999792Z ✔ confirmation tokens: random, and only their hash is kept (14.348057ms)
2026-10-18T10:54:16.2172972Z ✔ unsubscribe links are signed, not stored, and refuse tampering (4.503708ms)
2026-10-18T10:54:16.2177269Z ✔ per-part subscriptions (1.485212ms)
2026-10-18T10:54:16.2177421Z ✔ letters: escaped HTML, plain text, and an unsubscribe link in every update (0.846761ms)
2026-10-18T10:54:16.2177800Z ✔ senders: the binding when there is one, none otherwise (0.625181ms)
2026-10-18T10:54:16.2181121Z ✔ feeds: every public update and maintenance notice, newest first, in Atom and JSON Feed (10.33735ms)
2026-10-18T10:54:16.5415033Z ✔ the reader's zone: their cookie, else Cloudflare's guess, else UTC (58.254101ms)
2026-10-18T10:54:16.5525313Z ✔ times carry their zone's abbreviation (23.824805ms)
2026-10-18T10:54:16.5525532Z ✔ the status page says times in the reader's zone, with UTC in datetime and on hover (18.640495ms)
2026-10-18T10:54:16.5847656Z ℹ tests 85
2026-10-18T10:54:16.5848563Z ℹ suites 0
2026-10-18T10:54:16.5849094Z ℹ pass 85
2026-10-18T10:54:16.5849425Z ℹ fail 0
2026-10-18T10:54:16.5849849Z ℹ cancelled 0
2026-10-18T10:54:16.5850281Z ℹ skipped 0
2026-10-18T10:54:16.5850651Z ℹ todo 0
2026-10-18T10:54:16.5851161Z ℹ duration_ms 2635.138986
2026-10-18T10:54:16.6040564Z 
2026-10-18T10:54:16.6040959Z > test
2026-10-18T10:54:16.6041159Z > node --test app/**/*.test.ts
2026-10-18T10:54:16.6041389Z 
2026-10-18T10:54:17.0519527Z ✔ a valid token from staff is let in, by its email (65.803855ms)
2026-10-18T10:54:17.0557990Z ✔ an audience given as a string is accepted too (4.360788ms)
2026-10-18T10:54:17.0613072Z ✔ a token for another Access application is refused (4.366379ms)
2026-10-18T10:54:17.0665121Z ✔ a token from another team is refused (4.649109ms)
2026-10-18T10:54:17.0724427Z ✔ an expired token is refused (6.098732ms)
2026-10-18T10:54:17.0770749Z ✔ a token without an expiry is refused (4.9957ms)
2026-10-18T10:54:17.0815160Z ✔ a token not valid yet is refused (4.379219ms)
2026-10-18T10:54:17.0852658Z ✔ a token signed by another key under a known key id is refused (3.596527ms)
2026-10-18T10:54:17.0878446Z ✔ a token whose claims were changed after signing is refused (3.810047ms)
2026-10-18T10:54:17.0914565Z ✔ a token signed by a key the team does not publish is refused (2.678826ms)
2026-10-18T10:54:17.0942465Z ✔ alg none and HS256 are refused before any key is fetched (2.904345ms)
2026-10-18T10:54:17.0963489Z ✔ a valid token whose email is not staff is refused (2.955966ms)
2026-10-18T10:54:17.0990728Z ✔ a token with neither an email nor a client id is refused (2.692075ms)
2026-10-18T10:54:17.1044652Z ✔ a listed service token is let in as its name at service.g1t.sh (3.278506ms)
2026-10-18T10:54:17.1105486Z ✔ a service token not listed is refused (5.987321ms)
2026-10-18T10:54:17.1157741Z ✔ a listed service token still needs a valid signature and audience (5.738031ms)
2026-10-18T10:54:17.1199303Z ✔ an email wins over a client id on the same token (3.141196ms)
2026-10-18T10:54:17.1219024Z ✔ service tokens are read as client id to name, dropping malformed entries (1.143252ms)
2026-10-18T10:54:17.1263709Z ✔ staff emails match without regard to case (3.081205ms)
2026-10-18T10:54:17.1264123Z ✔ a request without a token is refused (1.583713ms)
2026-10-18T10:54:17.1264153Z ✔ garbage is refused (0.457711ms)
2026-10-18T10:54:17.1343081Z ✔ the team's keys are fetched once and kept for a few minutes (8.008965ms)
2026-10-18T10:54:17.1398234Z ✔ when the keys cannot be fetched, nothing is let in (2.911676ms)
2026-10-18T10:54:17.1438431Z ✔ sudo is closed until every setting is given (1.236543ms)
2026-10-18T10:54:17.1438587Z ✔ changes are only taken from sudo's own pages (1.188072ms)
2026-10-18T10:54:17.1438663Z ✔ everyone at a staff domain is staff, and nobody at a lookalike (0.319381ms)
2026-10-18T10:54:17.3340550Z ✔ an alias, its workspace and why are read as identity takes them (2.137844ms)
2026-10-18T10:54:17.3347960Z ✔ a malformed alias or workspace, or no reason, is refused before identity is asked (1.626463ms)
2026-10-18T10:54:17.3351107Z ✔ removing an alias needs a reason (0.24958ms)
2026-10-18T10:54:17.5019252Z ✔ niceCeiling rounds up to 1, 2, 2.5 or 5 times a power of ten (1.955894ms)
2026-10-18T10:54:17.5027944Z ✔ ticks run from zero to the top (1.031772ms)
2026-10-18T10:54:17.5034358Z ✔ months are named (0.421951ms)
2026-10-18T10:54:17.5065728Z ✔ margin and change (0.340401ms)
2026-10-18T10:54:17.5083127Z ✔ monthBars scales both series to one axis from zero (0.795971ms)
2026-10-18T10:54:17.5092050Z ✔ a tiny month still shows, and an empty chart has an axis (0.452811ms)
2026-10-18T10:54:17.5092449Z ✔ negative figures draw nothing below the baseline (0.31634ms)
2026-10-18T10:54:17.5105298Z ✔ barPath rounds the top and keeps the foot square (0.521561ms)
2026-10-18T10:54:17.5107971Z ✔ axis labels are short (2.119784ms)
2026-10-18T10:54:17.5112933Z ✔ shares are against the largest (0.467951ms)
2026-10-18T10:54:17.5118438Z ✔ a day, briefly (0.458681ms)
2026-10-18T10:54:17.7738157Z ✔ every day of the range is there, even an empty one (2.910055ms)
2026-10-18T10:54:17.7738345Z ✔ all of g1t is money in against every cost; a product is its value against its cost (0.606421ms)
2026-10-18T10:54:17.7738370Z ✔ margins read against the floor (0.465341ms)
2026-10-18T10:54:17.7770105Z ✔ unit costs keep the places they need (0.31238ms)
2026-10-18T10:54:17.7773384Z ✔ the range and product come from the address, within bounds (0.362871ms)
2026-10-18T10:54:17.7775202Z ✔ the guardrails form is checked (45.825858ms)
2026-10-18T10:54:17.7782926Z ✔ a mapping names Cloudflare's product and meter and one of g1t's products (0.851902ms)
2026-10-18T10:54:17.7812551Z ✔ the spend bar shows only when a cap stops work (1.563813ms)
2026-10-18T10:54:17.7812696Z ✔ what g1t paid this month adds every bucket, the free tier and subscriptions (0.605982ms)
2026-10-18T10:54:17.7812761Z ✔ charged without real money is what it cost g1t, never its price (0.593471ms)
2026-10-18T10:54:17.7812823Z ✔ margins are a share of the price: cost plus 20% is 16.7% (0.319201ms)
2026-10-18T10:54:17.7812885Z ✔ who g1t paid is the statement's all-in cost, subscriptions included (0.328381ms)
2026-10-18T10:54:17.7812939Z ✔ a rate g1t sets shows no cost, and a weight is no money (0.31486ms)
2026-10-18T10:54:17.7826569Z ✔ a rise replaced before its date says so, rather than missing its date (0.343631ms)
2026-10-18T10:54:17.7828324Z ✔ the pause banner names every paused level, and who paused it when it was not a person (0.689552ms)
2026-10-18T10:54:17.7835695Z ✔ subscriptions over the range are billing's, day by day by the billing cycle (0.492041ms)
2026-10-18T10:54:17.7846818Z ✔ test-mode charges are given away, never money in (0.26119ms)
2026-10-18T10:54:17.7847103Z ✔ the billing cycle reads as Cloudflare's Billable usage page does (0.542851ms)
2026-10-18T10:54:17.7847334Z ✔ the last read of the bill says when it may be incomplete (0.630852ms)
2026-10-18T10:54:18.1726599Z ✔ the presets are $10, $20, $25, $50 and $100, each one step (6.792173ms)
2026-10-18T10:54:18.1726780Z ✔ an expiry is never, 30, 90 or 365 days, or the end of a chosen day (1.308322ms)
2026-10-18T10:54:18.1726883Z ✔ a small credit is one step; over $100 the slug is typed out (47.491001ms)
2026-10-18T10:54:18.1726929Z ✔ a credit needs a kind and a note (2.441465ms)
2026-10-18T10:54:18.1727010Z ✔ a refund says what it is for, never expires, and refunds a day that was (0.823212ms)
2026-10-18T10:54:18.1727098Z ✔ a grant reads in a line, as the Billing page says it (9.885519ms)
2026-10-18T10:54:18.1727120Z ✔ a month filter is a month (0.815522ms)
2026-10-18T10:54:18.2879721Z ✔ what went reads as one line (1.514573ms)
2026-10-18T10:54:18.2894269Z ✔ only a protected account is refused outright (0.420771ms)
2026-10-18T10:54:18.2900016Z ✔ workspaces it owns alone go with it, said up front (0.754821ms)
2026-10-18T10:54:18.2916549Z ✔ a protected workspace or billing that cannot settle stops it, naming which (0.385291ms)
2026-10-18T10:54:18.2916676Z ✔ staff confirm with the username (0.361581ms)
2026-10-18T10:54:18.2916788Z ✔ the form needs a reason, the username, and the box ticked when workspaces go too (0.365451ms)
2026-10-18T10:54:18.2916879Z ✔ workspaces deleted with the account are matched to their deletions (1.582583ms)
2026-10-18T10:54:18.4635923Z ✔ what went reads as one line (1.621983ms)
2026-10-18T10:54:18.4639652Z ✔ days left round up, and none once it is due (0.32933ms)
2026-10-18T10:54:18.4645926Z ✔ a purge is confirmed by the slug alone (0.30745ms)
2026-10-18T10:54:18.7050597Z ✔ a 100% discount keeps its budget and an end date, and names who set it (41.208579ms)
2026-10-18T10:54:18.7058355Z ✔ a discount is a preset or a custom whole percent (0.816102ms)
2026-10-18T10:54:18.7061093Z ✔ no discount and no limit is standard, which clears the end date (0.371341ms)
2026-10-18T10:54:18.7064288Z ✔ terms are refused without a note, with a bad discount, or ending in the past (2.243524ms)
2026-10-18T10:54:18.7074299Z ✔ workspace lists take commas, spaces and lines, once each (0.718402ms)
2026-10-18T10:54:18.7081041Z ✔ invoice emails are one address (0.505831ms)
2026-10-18T10:54:18.7081099Z ✔ credits are positive and capped (0.409651ms)
2026-10-18T10:54:18.7081212Z ✔ a sales record: a stage, an owner's email or nobody, a next step and its day (0.877122ms)
2026-10-18T10:54:18.7089206Z ✔ a sales note is required, and not endless (0.399661ms)
2026-10-18T10:54:18.7099190Z ✔ allowances: the plan without its price, pool shares, and staff's overrides (0.927932ms)
2026-10-18T10:54:18.7102606Z ✔ a bank transfer: an amount, its reference, a note, and the slug typed out (0.641801ms)
2026-10-18T10:54:18.7108204Z ✔ a decision: approve as asked or at another amount; decline needs a note (0.639242ms)
2026-10-18T10:54:18.7113750Z ✔ goodwill: no amount is the one-click credit; a reason when one is needed; a day not in the future (0.751371ms)
2026-10-18T10:54:18.9275028Z ✔ a page runs only sudo's own scripts, by its nonce (9.582819ms)
2026-10-18T10:54:18.9289589Z ✔ an answer that is not a page runs nothing (0.29507ms)
2026-10-18T10:54:18.9322999Z ✔ a page keeps its own policy; anything else gets the strict one (36.93186ms)
2026-10-18T10:54:19.1723270Z ✔ filters come from the address; unknown values are dropped (2.508734ms)
2026-10-18T10:54:19.3315399Z ✔ tabs: open, drafts, and resolved (dismissed drafts included) (0.587811ms)
2026-10-18T10:54:19.3315548Z ✔ maintenance: live first by start, then finished newest first (9.338857ms)
2026-10-18T10:54:19.3315646Z ✔ phase chips: draft, dismissed, postmortem, else the status (0.40397ms)
2026-10-18T10:54:19.3315696Z ✔ durations, medians and UTC times (11.662422ms)
2026-10-18T10:54:19.3315776Z ✔ forms: impacts per part, notify by severity, next status, staff suggestions (35.012507ms)
2026-10-18T10:54:19.3315844Z ✔ the status page's audit lines join the Audit log and link to their pages (0.613541ms)
2026-10-18T10:54:19.3315898Z ✔ the postmortem preview reads text as the status page does (0.537841ms)
2026-10-18T10:54:19.3315952Z ✔ the page has one address, with its search and tab (1.580443ms)
2026-10-18T10:54:19.3316008Z ✔ revoking and granting say so, and nothing else is flashed (0.369461ms)
2026-10-18T10:54:19.3316070Z ✔ an account made with a shared link says where it came from (0.366991ms)
2026-10-18T10:54:19.3316121Z ✔ a grant names a person, a whole number of invites and why (1.626383ms)
2026-10-18T10:54:19.5143347Z ✔ the chart: answered checks as a line, broken by failures and gaps; slow ones dotted; the slow line drawn (6.740413ms)
2026-10-18T10:54:19.5143540Z ✔ the chart's scale leaves room over the slow line when every check was fast (0.687602ms)
2026-10-18T10:54:19.5155513Z ✔ the summary over the chart (0.788602ms)
2026-10-18T10:54:19.7285878Z ✔ invoice filters are checked (2.276775ms)
2026-10-18T10:54:19.7303206Z ✔ totals: void counts for nothing; open, overdue and failed are outstanding (1.746424ms)
2026-10-18T10:54:19.7309994Z ✔ links keep only the filters that are set (0.552191ms)
2026-10-18T10:54:19.7321520Z ✔ only https links are followed (0.282811ms)
2026-10-18T10:54:19.7330523Z ✔ account ids link to their pages; anything else does not (0.764451ms)
2026-10-18T10:54:19.7343627Z ✔ accounts are named by slug, or the enterprise's name when known (0.27626ms)
2026-10-18T10:54:19.7358924Z ✔ actions read plainly, known or not (0.365281ms)
2026-10-18T10:54:19.7359062Z ✔ an older page only when this one was full (0.518001ms)
2026-10-18T10:54:19.7359107Z ✔ audit filters are checked (0.686231ms)
2026-10-18T10:54:19.9274990Z ✔ dollars read to the cent, and small amounts keep their fractions (2.051864ms)
2026-10-18T10:54:19.9286656Z ✔ typed amounts become micros exactly (0.573831ms)
2026-10-18T10:54:20.0912244Z ✔ the sidebar: two top-level links, then sections that fold (2.564135ms)
2026-10-18T10:54:20.0912605Z ✔ no section holds a single page, and every section has an icon (0.436001ms)
2026-10-18T10:54:20.0914089Z ✔ the section holding the current page is the one drawn open (0.829182ms)
2026-10-18T10:54:20.0922550Z ✔ every item has its own path, a label and a line about it (0.630801ms)
2026-10-18T10:54:20.0923786Z ✔ the built pages are not marked soon (0.358101ms)
2026-10-18T10:54:20.0925538Z ✔ every soon page says what it will do, why, and what it will have (1.764034ms)
2026-10-18T10:54:20.0936372Z ✔ view as customer promises an audit and a time limit (0.30278ms)
2026-10-18T10:54:20.0936463Z ✔ soonFor finds a placeholder by its path, and nothing else (0.23131ms)
2026-10-18T10:54:20.0942692Z ✔ isCurrent: an item stays lit on the pages beneath it; / only on itself (0.280911ms)
2026-10-18T10:54:20.0945165Z ✔ open incidents show beside Incidents, and nothing waits beside Invites (0.505891ms)
2026-10-18T10:54:20.2606535Z ✔ the request filter is open unless another status is named (2.246904ms)
2026-10-18T10:54:20.3946196Z ✔ an answer is due one business day after the request (0.625651ms)
2026-10-18T10:54:20.3946337Z ✔ how long a request has waited, and whether it is overdue (1.325133ms)
2026-10-18T10:54:20.3946416Z ✔ a workspace's age in its largest whole unit (0.29562ms)
2026-10-18T10:54:20.3946517Z ✔ goodwill: g1t absorbs only what is past its margin (0.525011ms)
2026-10-18T10:54:20.3946590Z ✔ goodwill needs a reason past the one-click credit, or a second time in 12 months (0.573151ms)
2026-10-18T10:54:20.3946654Z ✔ velocity: five times the usual hour is fast (0.401511ms)
2026-10-18T10:54:20.3946717Z ✔ margin counts the plan's price and never what g1t gave (0.437621ms)
2026-10-18T10:54:20.3946776Z ✔ given: labelled by source, totalled at price and at cost (0.456041ms)
2026-10-18T10:54:20.3946839Z ✔ margin on what was sold leaves out the cost of what g1t gave (0.630331ms)
2026-10-18T10:54:20.3946918Z ✔ the month by the Costs model: given is cost already, and the margin is on what was sold (0.349961ms)
2026-10-18T10:54:20.4372124Z ✔ most urgent first: by kind, then the larger figure, else as billing sent them (2.516755ms)
2026-10-18T10:54:20.4373326Z ✔ sorting leaves the input alone (0.27641ms)
2026-10-18T10:54:20.4374232Z ✔ filter by kind, and by whose they are (0.600231ms)
2026-10-18T10:54:20.4375107Z ✔ counts by kind (0.413311ms)
2026-10-18T10:54:20.4375655Z ✔ query values are checked (0.350841ms)
2026-10-18T10:54:20.4376671Z ✔ links into the queue leave out the defaults (0.412061ms)
2026-10-18T10:54:20.4383436Z ✔ names for kinds and stages, and for ones sudo does not know (0.433561ms)
2026-10-18T10:54:20.4384536Z ✔ follow-ups due: today or earlier, open deals only, one per workspace, oldest first (10.985821ms)
2026-10-18T10:54:20.5914891Z ✔ a suspension's hold is known as one, so lifting it lifts the hold (1.397823ms)
2026-10-18T10:54:20.5927022Z ✔ a reason is required, and kept short (1.428673ms)
2026-10-18T10:54:20.7423756Z ✔ terms read as a discount; comped from before discounts is 100% (1.809223ms)
2026-10-18T10:54:20.9204631Z ✔ the exclusion list reads commas, spaces and case alike, once each (2.212555ms)
2026-10-18T10:54:20.9243316Z ✔ a detach says each change it makes, and nothing when there is none (1.474723ms)
2026-10-18T10:54:20.9243491Z ✔ a detach says what metered usage, included usage and test disputes it let go (0.431651ms)
2026-10-18T10:54:21.1060526Z ✔ the theme: the cookie's choice, else Auto; Light and Dark on <html>, Auto nothing (1.222322ms)
2026-10-18T10:54:21.3426162Z ✔ the zone: the staff member's choice, else Cloudflare's guess, else UTC (24.052976ms)
2026-10-18T10:54:21.4847130Z ✔ a time on a page: in the zone, with its abbreviation; UTC on hover (3.286446ms)
2026-10-18T10:54:21.4847343Z ✔ form times are read and shown in the zone (7.331514ms)
2026-10-18T10:54:21.4847374Z ✔ how long ago, briefly (0.708961ms)
2026-10-18T10:54:21.5521663Z ✔ every workspace is listed, with or without billing (3.047646ms)
2026-10-18T10:54:21.5521883Z ✔ a workspace on an enterprise shows the enterprise and only its own share (0.625081ms)
2026-10-18T10:54:21.5553609Z ✔ a page lists only its own workspaces, not the rest of an enterprise (0.42801ms)
2026-10-18T10:54:21.5555958Z ✔ pages stay within the list (0.489191ms)
2026-10-18T10:54:21.5556934Z ✔ old account links go to the workspace or the enterprise (0.716651ms)
2026-10-18T10:54:21.5737016Z ℹ tests 163
2026-10-18T10:54:21.5737497Z ℹ suites 0
2026-10-18T10:54:21.5737740Z ℹ pass 163
2026-10-18T10:54:21.5738007Z ℹ fail 0
2026-10-18T10:54:21.5738233Z ℹ cancelled 0
2026-10-18T10:54:21.5738452Z ℹ skipped 0
2026-10-18T10:54:21.5738668Z ℹ todo 0
2026-10-18T10:54:21.5738902Z ℹ duration_ms 4903.857254
2026-10-18T10:54:21.5868027Z 
2026-10-18T10:54:21.5868461Z > test
2026-10-18T10:54:21.5868684Z > node --test app/**/*.test.ts
2026-10-18T10:54:21.5868902Z 
2026-10-18T10:54:21.8773685Z ✔ a license is named by its SPDX id, or not at all (1.657624ms)
2026-10-18T10:54:21.8773775Z ✔ counts read as words (0.394861ms)
2026-10-18T10:54:21.8777882Z ✔ every language down to a tenth of a percent is listed, at most eight; the rest are Other (1.476503ms)
2026-10-18T10:54:21.8779973Z ✔ weeks line up with the repository's (0.30787ms)
2026-10-18T10:54:21.8782271Z ✔ pushes, tags, merges and renames are activity (0.579992ms)
2026-10-18T10:54:21.8784167Z ✔ a deleted branch is activity with the commit that restores it; a deleted tag is not (0.25819ms)
2026-10-18T10:54:21.8786647Z ✔ activity is about a branch when it pushed, deleted, renamed or merged into it (0.271861ms)
2026-10-18T10:54:22.0830033Z ✔ a token made for one workspace reads its reach, repositories and permissions (3.342626ms)
2026-10-18T10:54:22.0833328Z ✔ a token reaches every workspace, or none, and may never expire (0.623981ms)
2026-10-18T10:54:22.0833657Z ✔ a workspace's own token holds nothing about a person, and reaches all or selected repositories (0.594341ms)
2026-10-18T10:54:22.0833941Z ✔ editing reads neither the expiry nor needs a name (0.308811ms)
2026-10-18T10:54:22.0834196Z ✔ mistakes are named (0.697991ms)
2026-10-18T10:54:22.0867781Z ✔ permissions are scopes read per resource (1.151023ms)
2026-10-18T10:54:22.0867931Z ✔ lifetimes follow the rules of every workspace a token reaches (0.638361ms)
2026-10-18T10:54:22.0880193Z ✔ lists read a token in a line (0.878042ms)
2026-10-18T10:54:22.0880317Z ✔ old addresses of the token settings go to the current pages (0.865362ms)
2026-10-18T10:54:22.0885255Z ✔ saving a token sends only what changed (1.533133ms)
2026-10-18T10:54:22.0892972Z ✔ using the website is off unless checked, and never on a workspace's token (0.555251ms)
2026-10-18T10:54:22.2576458Z ✔ the dialog lists only what the account has (3.083066ms)
2026-10-18T10:54:22.2576678Z ✔ owning a workspace alone stands in the way, and names it (0.539031ms)
2026-10-18T10:54:22.2576719Z ✔ a protected account says so first (0.315581ms)
2026-10-18T10:54:22.2576755Z ✔ only the username itself confirms (0.503161ms)
2026-10-18T10:54:22.4293169Z ✔ every anchor of the old settings page lands on its own page (1.490683ms)
2026-10-18T10:54:22.5652160Z ✔ a settings path names its page (0.46101ms)
2026-10-18T10:54:22.7236341Z ✔ with no settings, the addresses are g1t.sh's (2.709205ms)
2026-10-18T10:54:22.7276233Z ✔ settings replace the addresses, without trailing slashes (0.547131ms)
2026-10-18T10:54:22.7276723Z ✔ files people supply are served from an origin of their own (0.497381ms)
2026-10-18T10:54:22.7277037Z ✔ pages without root data use g1t.sh's addresses (0.43796ms)
2026-10-18T10:54:22.7277272Z ✔ the defaults kept in meta and agent setup are g1t.sh's (0.25512ms)
2026-10-18T10:54:22.7277452Z ✔ a clone address is under the site (0.320941ms)
2026-10-18T10:54:22.9553639Z ✔ an advisory form is checked and cleaned (44.578185ms)
2026-10-18T10:54:22.9558643Z ✔ a report needs a title and a description, and an email when signed out (0.793311ms)
2026-10-18T10:54:22.9575411Z ✔ states and severities parse only to what is known (0.480701ms)
2026-10-18T10:54:23.2008376Z ✔ developer discovery aliases point at the installation's machine endpoints (1.900044ms)
2026-10-18T10:54:23.2047407Z ✔ negotiation honors explicit types, quality, specificity, exclusions and browser defaults (1.764723ms)
2026-10-18T10:54:23.2051738Z ✔ homepage and genuine 404 documents have Markdown with the right status, discovery links and Vary (67.544249ms)
2026-10-18T10:54:23.2053970Z ✔ HEAD, unsupported types, private refusals and writes preserve protocol boundaries (2.424404ms)
2026-10-18T10:54:23.4099862Z ✔ a choice is remembered and read back (2.028534ms)
2026-10-18T10:54:23.4118704Z ✔ no choice, an unknown one, or storage that throws falls back to the default (0.604291ms)
2026-10-18T10:54:23.4131487Z ✔ every toggle on the page follows the last choice (0.618622ms)
2026-10-18T10:54:23.4133909Z ✔ parseAgent accepts only known agents (0.28545ms)
2026-10-18T10:54:23.4136938Z ✔ every snippet points at the MCP server (2.120144ms)
2026-10-18T10:54:23.4144110Z ✔ the snippets can point at another MCP server (0.502271ms)
2026-10-18T10:54:23.4147786Z ✔ the first configured provider supplies the default without reordering (2.749785ms)
2026-10-18T10:54:23.4153059Z ✔ explicit choices beat provider defaults, and defaults are not saved as choices (0.495171ms)
2026-10-18T10:54:23.4199548Z ✔ chat clients have distinct setup instructions and LibreChat uses per-user OAuth (0.592151ms)
2026-10-18T10:54:23.6085663Z ✔ every AI provider is shown, once, in a group (3.206486ms)
2026-10-18T10:54:23.7544237Z ✔ AI providers are the workspace's AI settings, not integrations (0.475931ms)
2026-10-18T10:54:23.7544432Z ✔ older links to the AI providers' page open the AI page (0.382651ms)
2026-10-18T10:54:23.7704251Z ✔ visitors from the EU, EEA, UK and Switzerland are asked first (1.281032ms)
2026-10-18T10:54:23.7704636Z ✔ others are not, nor is a visitor whose country is unknown (0.250541ms)
2026-10-18T10:54:23.7721124Z ✔ on the server nothing is chosen or required (0.299491ms)
2026-10-18T10:54:23.9236316Z ✔ the front door is sent as it is (1.911393ms)
2026-10-18T10:54:23.9238374Z ✔ names in other addresses are replaced, and g1t's own words kept (0.351141ms)
2026-10-18T10:54:23.9239855Z ✔ a URL on the site keeps only campaign parameters; another site's is left alone (0.491041ms)
2026-10-18T10:54:23.9251814Z ✔ a click inside the app goes without its text, link, attributes or title (1.573673ms)
2026-10-18T10:54:23.9251909Z ✔ on the front door a click keeps its text (0.26236ms)
2026-10-18T10:54:23.9251994Z ✔ recordings and error reports are never sent, and heatmaps only from the front door (0.385461ms)
2026-10-18T10:54:23.9252094Z ✔ pages after signing in keep their address but not their text, which can show an email address (0.380801ms)
2026-10-18T10:54:24.0972938Z ✔ plain text is one unstyled span (2.562945ms)
2026-10-18T10:54:24.0985036Z ✔ SGR codes style the text after them until a reset (1.478872ms)
2026-10-18T10:54:24.0997847Z ✔ 256 colours and 24-bit colours, in both of their forms (0.821931ms)
2026-10-18T10:54:24.1016929Z ✔ every other escape is dropped, and a link keeps its text (0.508451ms)
2026-10-18T10:54:24.1017349Z ✔ the 16 colours are theme classes; the rest are inline colours (0.51666ms)
2026-10-18T10:54:24.1025214Z ✔ a search marks its matches across spans, colours kept (2.657955ms)
2026-10-18T10:54:24.3289866Z ✔ Work is a built-in app right after Home, for every member, and Sessions are in it (2.930865ms)
2026-10-18T10:54:24.3290029Z ✔ the rail is Home, Explore, Work, Chat, Code, Artifacts and Routines (0.31402ms)
2026-10-18T10:54:24.3290103Z ✔ a phone's bar is Home, Work, Chat and Notifications, with Code first of More's apps (2.585014ms)
2026-10-18T10:54:24.3290200Z ✔ only integrations are pinned; built-in apps, their pages, old plugins and connectors are not (0.723801ms)
2026-10-18T10:54:24.3290228Z ✔ an integration's app opens its page (0.501301ms)
2026-10-18T10:54:24.3290458Z ✔ installed apps are what the workspace connected, opening where each is managed (0.645422ms)
2026-10-18T10:54:24.3295400Z ✔ pins are kept per workspace, in the order they were pinned (0.725561ms)
2026-10-18T10:54:24.3298926Z ✔ a cookie someone wrote by hand reads as far as it makes sense (0.490341ms)
2026-10-18T10:54:24.3301253Z ✔ pins of built-in pages from before are dropped (0.282001ms)
2026-10-18T10:54:24.3302405Z ✔ the account's pins win over the cookie, which is the fallback (0.489541ms)
2026-10-18T10:54:24.3303371Z ✔ a pin form pins or unpins one app (41.247239ms)
2026-10-18T10:54:24.3306223Z ✔ the cookies last a year and are secure when the site is (0.515421ms)
2026-10-18T10:54:24.4910646Z ✔ iso projects the floor axes and lifts by z (3.099936ms)
2026-10-18T10:54:24.4941143Z ✔ pts and isoPath round to one decimal place (0.615211ms)
2026-10-18T10:54:24.4965662Z ✔ stagger spreads starts evenly inside the loop (0.548671ms)
2026-10-18T10:54:24.5028213Z ✔ timing names the custom properties the stylesheet reads (0.452321ms)
2026-10-18T10:54:24.6628924Z ✔ Auto is the picker's first option and its default (2.582515ms)
2026-10-18T10:54:24.7935806Z ✔ an explicit pick stays picked (0.2679ms)
2026-10-18T10:54:24.7935985Z ✔ an AI provider that lists no models, or an Azure deployment, has no Auto (0.33683ms)
2026-10-18T10:54:24.7936111Z ✔ the chosen model reads as Auto, or by its name (0.33209ms)
2026-10-18T10:54:24.8471960Z ✔ the page says which repository, work item or pull request the person is on (3.167006ms)
2026-10-18T10:54:24.8504746Z ✔ the composer says where the question is asked from (0.556871ms)
2026-10-18T10:54:24.8523830Z ✔ an answer's kept lines fold into its steps, each as it last was, and its sources (0.854332ms)
2026-10-18T10:54:24.8528890Z ✔ a proposed session is kept once and says what it will do (0.489001ms)
2026-10-18T10:54:25.0541480Z ✔ archive keys cannot read releases, source maps or private objects (1.701624ms)
2026-10-18T10:54:25.0543402Z ✔ a stylesheet removed from the new build stays available with its MIME type (44.579465ms)
2026-10-18T10:54:25.0581126Z ✔ missing or unavailable assets never become HTML or cacheable errors (1.007402ms)
2026-10-18T10:54:25.2297723Z ✔ a paste uploads image files only when it has no text (2.910566ms)
2026-10-18T10:54:25.2336986Z ✔ only a drag that carries files is taken (0.29659ms)
2026-10-18T10:54:25.2337128Z ✔ what is refused before it is sent, in a plain sentence (0.27339ms)
2026-10-18T10:54:25.2337192Z ✔ a pasted image with no name is image.png (0.543461ms)
2026-10-18T10:54:25.2337220Z ✔ Markdown escapes the name's brackets (0.363931ms)
2026-10-18T10:54:25.2337266Z ✔ each upload has a placeholder of its own (0.333911ms)
2026-10-18T10:54:25.2337295Z ✔ an image goes in on a line of its own (0.345201ms)
2026-10-18T10:54:25.2337361Z ✔ the placeholder is swapped where it is now, keeping what was written around it (2.053914ms)
2026-10-18T10:54:25.2337662Z ✔ a refusal from the service reads as a sentence (0.451181ms)
2026-10-18T10:54:25.2339220Z ✔ deferred images get their addresses once the work item is open (0.776032ms)
2026-10-18T10:54:25.2341210Z ✔ the caret stays in the person's writing when a placeholder is swapped (0.2293ms)
2026-10-18T10:54:25.4046450Z ✔ overlaps for the same work item are alternatives; the rest are collisions (2.479675ms)
2026-10-18T10:54:25.4099063Z ✔ the other attempts are the work item's other pull requests, newest first, a few at most (0.3841ms)
2026-10-18T10:54:25.4100769Z ✔ shared paths are the files both change (0.301021ms)
2026-10-18T10:54:25.4101959Z ✔ a review stands at each reviewer's latest verdict, changes asked for first (0.711461ms)
2026-10-18T10:54:25.4103064Z ✔ an attempt's outcome says which was merged instead (0.32893ms)
2026-10-18T10:54:25.4128304Z ✔ an agent's review is advisory: it neither approves nor asks for changes (0.28776ms)
2026-10-18T10:54:25.5966095Z ✔ owners see everything, members their projects, others nothing (2.302414ms)
2026-10-18T10:54:25.5982907Z ✔ filters are read from the address, and nonsense is dropped (1.187042ms)
2026-10-18T10:54:25.5992839Z ✔ links keep the other filters (0.554771ms)
2026-10-18T10:54:25.6005172Z ✔ an old agent's entry is shown with whom it acted for (0.583631ms)
2026-10-18T10:54:25.6005319Z ✔ the CSV quotes what it must and keeps formulas as text (0.686241ms)
2026-10-18T10:54:25.6005399Z ✔ the log reads back only as far as the plan keeps it (0.309671ms)
2026-10-18T10:54:25.9805306Z ✔ an image is known by its bytes (1.884283ms)
2026-10-18T10:54:25.9805461Z ✔ SVG and anything else is refused, whatever it is called (45.182956ms)
2026-10-18T10:54:25.9805498Z ✔ more than a megabyte is refused (128.080474ms)
2026-10-18T10:54:25.9805519Z ✔ an image is sent as base64 (0.721611ms)
2026-10-18T10:54:25.9805538Z ✔ a missing file is asked for (0.330421ms)
2026-10-18T10:54:26.1148327Z ✔ a badge says how the newest finished run went (1.397642ms)
2026-10-18T10:54:26.1161148Z ✔ the badge is an SVG with its label and state, escaped (1.354512ms)
2026-10-18T10:54:26.1182891Z ✔ its address and Markdown name the workflow file, and a branch or event when chosen (0.541351ms)
2026-10-18T10:54:26.2692892Z ✔ a plan that is on says so (1.455942ms)
2026-10-18T10:54:26.2726732Z ✔ a plan whose payment has not cleared says it is pending, never that it is on (0.426921ms)
2026-10-18T10:54:26.2726944Z ✔ a failed payment points at Update payment method (0.33194ms)
2026-10-18T10:54:26.2759543Z ✔ a prepayment is settled when the balance rose or it was just entered (0.509341ms)
2026-10-18T10:54:26.2782039Z ✔ a bank transfer still on its way is pending (0.30462ms)
2026-10-18T10:54:26.4923826Z ✔ a credit from g1t reads in a line, with what is left and when it expires (25.373588ms)
2026-10-18T10:54:26.4939698Z ✔ dollars are read from what people type (0.478741ms)
2026-10-18T10:54:26.4940035Z ✔ a prepayment is $25 or more, by card up to $10,000, by bank transfer from $1,000 (7.354634ms)
2026-10-18T10:54:26.4940141Z ✔ a limit request needs an amount, a reason and a monthly spend; an overage only a reason (0.554621ms)
2026-10-18T10:54:26.4940224Z ✔ a spend limit is automatic, fixed, the full amount available, or the one-time raise (0.393561ms)
2026-10-18T10:54:26.4940680Z ✔ the spend limit's range: up to the highest ceiling plus prepaid, then once to twice it, then ask (0.37739ms)
2026-10-18T10:54:26.4945853Z ✔ the plan card says where the workspace stands (0.42318ms)
2026-10-18T10:54:26.4951269Z ✔ the overview's Usage card reads the month by what pays (0.777972ms)
2026-10-18T10:54:26.4955748Z ✔ a meter's share stays between 0 and 1 (0.337301ms)
2026-10-18T10:54:26.4963724Z ✔ after a card check the owner reads whether the trial started (0.912652ms)
2026-10-18T10:54:26.4966020Z ✔ alerts read as sentences (0.361501ms)
2026-10-18T10:54:26.4970512Z ✔ a workspace needs attention when paused, on a spike, or at 90% (0.33339ms)
2026-10-18T10:54:26.4984464Z ✔ a request says where it stands (0.24931ms)
2026-10-18T10:54:26.4984603Z ✔ the plan shows every meter, with no quota beside any of them (0.386381ms)
2026-10-18T10:54:26.4985814Z ✔ a free workspace sees only what it can use, and anything it used anyway (0.24409ms)
2026-10-18T10:54:26.4991375Z ✔ storage reads in powers of ten (0.241051ms)
2026-10-18T10:54:26.4995411Z ✔ kinds of work without words of their own are one Other, listed once and last (0.329941ms)
2026-10-18T10:54:26.5001021Z ✔ budget alerts keep the levels ticked, highest first (0.794731ms)
2026-10-18T10:54:26.6611446Z ✔ each work item's stage is the first that holds: done, landing, review, progress, backlog (2.117944ms)
2026-10-18T10:54:26.6632561Z ✔ the board puts each item in its column with who and which session is on it (1.868793ms)
2026-10-18T10:54:26.6632680Z ✔ a phone shows the stage asked for, else the first with something in it (0.427811ms)
2026-10-18T10:54:26.6639186Z ✔ the board reads open pull requests in every repository an open work item is linked to, each once (0.483701ms)
2026-10-18T10:54:26.8599146Z ✔ branches with an open pull request are read first, the default branch never (3.309107ms)
2026-10-18T10:54:26.9989003Z ✔ no default branch head, nothing to measure against (0.433541ms)
2026-10-18T10:54:26.9989158Z ✔ each branch gets its measured commit and drift, newest first, by head hash (1.066822ms)
2026-10-18T10:54:26.9989260Z ✔ when repos could not answer, the branches still show, without commits or counts (0.624841ms)
2026-10-18T10:54:26.9989340Z ✔ repos' answer, as its JSON reads, keeps every count (flagon-io/hello's farewell) (0.775151ms)
2026-10-18T10:54:26.9989404Z ✔ a branch's pull request is the open one, else the newest merged or closed (3.324426ms)
2026-10-18T10:54:26.9989458Z ✔ a tab comes from the address, the overview otherwise (0.307411ms)
2026-10-18T10:54:26.9989515Z ✔ stale is no commits in 90 days; yours is the viewer's latest commit (0.705681ms)
2026-10-18T10:54:26.9989574Z ✔ a branch with nothing the default branch lacks, or a merged pull request, is merged (0.906392ms)
2026-10-18T10:54:26.9989664Z ✔ the overview shows a few of yours, the active and the stale ones; each tab lists its own (1.576103ms)
2026-10-18T10:54:26.9989957Z ✔ the bars are drawn against the longest count shown (0.37795ms)
2026-10-18T10:54:27.0683479Z ✔ old navigation reads switch builds before loaders; writes and ordinary documents do not (40.151416ms)
2026-10-18T10:54:27.2854747Z ✔ a pressed button is busy until the status changes (2.204545ms)
2026-10-18T10:54:27.2871728Z ✔ a pressed button is given back when nothing changes for a while (0.380011ms)
2026-10-18T10:54:27.2871824Z ✔ a button nobody pressed is not busy (0.37141ms)
2026-10-18T10:54:27.4853382Z ✔ a card shows only its links: nothing answers the rest any more (2.669385ms)
2026-10-18T10:54:27.4853859Z ✔ a draft issue's chip says where it is (0.604181ms)
2026-10-18T10:54:27.4860803Z ✔ a long body starts folded (0.660811ms)
2026-10-18T10:54:27.6834977Z ✔ the conversation cache keeps the most recently used, and no more (2.656015ms)
2026-10-18T10:54:27.9237993Z ✔ formatting is written as Markdown (4.160698ms)
2026-10-18T10:54:28.0626747Z ✔ links: with their text, or bare when the text is the address (3.285876ms)
2026-10-18T10:54:28.0626947Z ✔ each paragraph is a line; an empty one is a blank line (0.542031ms)
2026-10-18T10:54:28.0627095Z ✔ text that only looks like Markdown is escaped, and mentions stay mentions (0.504201ms)
2026-10-18T10:54:28.0627140Z ✔ lists, quotes and code blocks (1.116912ms)
2026-10-18T10:54:28.0627251Z ✔ Markdown comes back into the composer as it was written (6.312042ms)
2026-10-18T10:54:28.0627336Z ✔ Markdown the composer cannot write still comes in (1.584453ms)
2026-10-18T10:54:28.1659260Z ✔ a message in the conversation on screen, in a window in front, is silent (2.791345ms)
2026-10-18T10:54:28.1672943Z ✔ the same message plays `message` once the window is not in front, or the tab is hidden (1.084202ms)
2026-10-18T10:54:28.1683975Z ✔ a message in another conversation you have open plays `message` (2.827965ms)
2026-10-18T10:54:28.1709745Z ✔ a direct message not from you plays `direct`; one from you plays nothing (0.512321ms)
2026-10-18T10:54:28.1709894Z ✔ a mention of you plays `mention`, over `direct` and `message` (0.541001ms)
2026-10-18T10:54:28.1719598Z ✔ @you is a whole handle, outside code (0.380281ms)
2026-10-18T10:54:28.1731457Z ✔ your own messages never sound, whichever way they arrive (0.459521ms)
2026-10-18T10:54:28.1740967Z ✔ a muted conversation is silent, even for a mention or a DM (0.426351ms)
2026-10-18T10:54:28.1772175Z ✔ Do not disturb silences everything (0.361981ms)
2026-10-18T10:54:28.1772342Z ✔ sounds off, or one cue off, is silent for that (0.937122ms)
2026-10-18T10:54:28.1772450Z ✔ an old agent's message counts like a person's (0.450981ms)
2026-10-18T10:54:28.1772515Z ✔ a deleted message, and an inbox notification, make no sound (0.331651ms)
2026-10-18T10:54:28.1775702Z ✔ sounds come at most one every 1.5 s, and one message sounds once however it arrives (0.536081ms)
2026-10-18T10:54:28.1781780Z ✔ an arrival's key is its message id, the same over the socket and the feed (0.368611ms)
2026-10-18T10:54:28.1805477Z ✔ a desktop notification shows only when wanted, allowed, out of front, and not already pushed (0.547061ms)
2026-10-18T10:54:28.1805588Z ✔ g1t's answer is silent while it thinks and streams, and pings once it is written (0.631591ms)
2026-10-18T10:54:28.4630460Z ✔ messages from one author close together share a header; days get a rule (30.479608ms)
2026-10-18T10:54:28.4631538Z ✔ merging keeps one copy of each message, and drops the pending one once saved (0.712922ms)
2026-10-18T10:54:28.4632186Z ✔ an @ being typed suggests people (0.880082ms)
2026-10-18T10:54:28.4632930Z ✔ message text: mentions, references, links and code, never HTML (3.006566ms)
2026-10-18T10:54:28.4635191Z ✔ message blocks: fenced code, lists, quotes and paragraphs (2.148844ms)
2026-10-18T10:54:28.4636297Z ✔ the sidebar: sections, filters and the rail's count (3.206786ms)
2026-10-18T10:54:28.4649700Z ✔ the sidebar keeps public channels apart from the workspace's own (0.977101ms)
2026-10-18T10:54:28.4649822Z ✔ an old conversation with an agent alone opens read-only, under the name the agent had (0.44248ms)
2026-10-18T10:54:28.4649895Z ✔ addresses, names, money and reconnecting (0.946002ms)
2026-10-18T10:54:28.4654700Z ✔ a member shows by display name, else by their username as they wrote it (0.512561ms)
2026-10-18T10:54:28.4658290Z ✔ mentions read as the names people know, found by the lowercased handle (0.361451ms)
2026-10-18T10:54:28.4661375Z ✔ the typing line: who is typing (0.420041ms)
2026-10-18T10:54:28.6541357Z ✔ signing in, signing up and choosing a workspace stand alone, for everyone (2.289704ms)
2026-10-18T10:54:28.6547495Z ✔ answering an invitation stands alone until you belong to a workspace (0.27919ms)
2026-10-18T10:54:28.6562636Z ✔ someone signed in gets the app everywhere else, public pages included (0.33275ms)
2026-10-18T10:54:28.6562784Z ✔ a visitor gets the public frame everywhere else (0.242601ms)
2026-10-18T10:54:28.6570654Z ✔ a project's menu hides member-only pages from everyone else (1.571653ms)
2026-10-18T10:54:28.6574490Z ✔ the phone's project strip lights the page a path is under (3.488037ms)
2026-10-18T10:54:28.6580801Z ✔ project operations keep their place in navigation and require integration access (0.798992ms)
2026-10-18T10:54:28.6584236Z ✔ features keeps the public topbar for visitors and members (0.31534ms)
2026-10-18T10:54:28.8468850Z ✔ its author edits and deletes their own comment (2.458755ms)
2026-10-18T10:54:28.8483094Z ✔ a maintainer edits and deletes anyone's (0.30597ms)
2026-10-18T10:54:28.8525804Z ✔ a review is edited but never deleted, and a note is never changed (0.25173ms)
2026-10-18T10:54:28.8525985Z ✔ an agent's comment is answered for by whoever it acted for; its review is never deleted (0.326041ms)
2026-10-18T10:54:29.0137311Z ✔ the headline says the worst of a commit's checks (1.710183ms)
2026-10-18T10:54:29.1476193Z ✔ the tally counts each kind, worst first (0.405311ms)
2026-10-18T10:54:29.1476324Z ✔ a check run says how it went and how long it took (0.520661ms)
2026-10-18T10:54:29.1476397Z ✔ details go to g1t's own page first, and elsewhere apart (1.547573ms)
2026-10-18T10:54:29.1934929Z ✔ co-authors leave the body and keep only their names (3.002936ms)
2026-10-18T10:54:29.1935153Z ✔ a message that is only trailers has no body (0.492281ms)
2026-10-18T10:54:29.1935237Z ✔ a trailer shows its name, never an address (0.284181ms)
2026-10-18T10:54:29.1935296Z ✔ prose that happens to contain a colon stays prose (0.27667ms)
2026-10-18T10:54:29.1944695Z ✔ references split from the text around them (0.610971ms)
2026-10-18T10:54:29.1947684Z ✔ a full hash is a commit; a short one, a link's fragment or a word's # are text (0.409741ms)
2026-10-18T10:54:29.1953735Z ✔ a session's id is a session, as a note says what it closed the issue in (0.349211ms)
2026-10-18T10:54:29.1958974Z ✔ a commit's hint is its subject, cut on a word when it runs long (0.585311ms)
2026-10-18T10:54:29.3796105Z ✔ a confirmed address is the account, whatever name the commit carries (3.632837ms)
2026-10-18T10:54:29.3808688Z ✔ an unconfirmed address matches nobody: the name on the commit, no link (0.949752ms)
2026-10-18T10:54:29.3816612Z ✔ the noreply address is the account (0.420081ms)
2026-10-18T10:54:29.3851430Z ✔ a deleted account's commits are ghost's, with no profile (0.301711ms)
2026-10-18T10:54:29.3851908Z ✔ g1t's commits, now and as its agents and queue made them before, are g1t (0.465661ms)
2026-10-18T10:54:29.3852151Z ✔ a commit sent to the page carries no address at all (3.750157ms)
2026-10-18T10:54:29.3852833Z ✔ one question per page: every distinct address, g1t's left out (0.463381ms)
2026-10-18T10:54:29.3853512Z ✔ co-authors are read from the trailers only (0.346951ms)
2026-10-18T10:54:29.3853788Z ✔ contributors and commits show one person the same way (0.525801ms)
2026-10-18T10:54:29.3854251Z ✔ a coding agent is shown as itself by the address on its commit, never by its name (0.733412ms)
2026-10-18T10:54:29.5574363Z ✔ the page a refusal names becomes a link, without its full stop (3.472197ms)
2026-10-18T10:54:29.5586825Z ✔ text without a page, or with other slashes, stays text (0.424561ms)
2026-10-18T10:54:29.7402282Z ✔ a pending account is sent to confirm its address from every app page (1.998504ms)
2026-10-18T10:54:29.7414475Z ✔ client navigations are gated as the page they load (0.425501ms)
2026-10-18T10:54:29.7416930Z ✔ the pages confirming needs, and the public pages about g1t, stay open (0.533961ms)
2026-10-18T10:54:29.7436591Z ✔ confirmed accounts, visitors and non-people are never gated (0.336221ms)
2026-10-18T10:54:29.7436740Z ✔ what the page says once confirmed, and where it goes (0.477171ms)
2026-10-18T10:54:29.7436844Z ✔ confirming an account whose invite names a workspace goes on to accept or decline it (0.243191ms)
2026-10-18T10:54:29.7442617Z ✔ the code field is a one-time code typed with a number pad (1.008172ms)
2026-10-18T10:54:29.9509411Z ✔ the two contexts list different connectors (2.316484ms)
2026-10-18T10:54:29.9516147Z ✔ a category shows only its own connectors, sorted into connected, available and soon (7.751285ms)
2026-10-18T10:54:29.9535046Z ✔ all shows everything once (3.016575ms)
2026-10-18T10:54:29.9535254Z ✔ search finds by name, description, tag and keyword, across every category (1.280743ms)
2026-10-18T10:54:29.9568878Z ✔ the navigation counts each category and leaves out empty ones (0.749621ms)
2026-10-18T10:54:29.9569932Z ✔ an unknown category is all of them (0.320301ms)
2026-10-18T10:54:29.9570035Z ✔ a tile has the connector's letters and a steady colour (0.613001ms)
2026-10-18T10:54:29.9570103Z ✔ asking for a connector names it and who it is for (0.38289ms)
2026-10-18T10:54:30.1606341Z ✔ a content key is a hash of every part, in order, and never of a join that could collide (19.691058ms)
2026-10-18T10:54:30.3790837Z ✔ the isolate's memory keeps the most recently used within its weight (1.068642ms)
2026-10-18T10:54:30.3790920Z ✔ lines weigh their characters (0.30116ms)
2026-10-18T10:54:30.3791007Z ✔ an answer is computed once, then read from the isolate, then from the data centre (53.550493ms)
2026-10-18T10:54:30.3791086Z ✔ a new version never reads what an old one kept (4.014028ms)
2026-10-18T10:54:30.3791164Z ✔ nothing to keep is not kept, and a broken shared entry counts as missing (3.306126ms)
2026-10-18T10:54:30.3791237Z ✔ without a data centre's cache the isolate still keeps answers (2.256805ms)
2026-10-18T10:54:30.4545801Z ✔ publisher documents a browser would open are downloads (1.931074ms)
2026-10-18T10:54:30.4545973Z ✔ data types stay inline (0.329861ms)
2026-10-18T10:54:30.4582694Z ✔ every registry answer runs nothing and is never sniffed (46.078528ms)
2026-10-18T10:54:30.4607092Z ✔ download names keep quotes and control characters out of the header (1.009012ms)
2026-10-18T10:54:30.6951395Z ✔ the calendar is 53 weeks of seven days, ending with today's week (3.216776ms)
2026-10-18T10:54:30.6951593Z ✔ each day is shaded in quarters of the busiest (6.667503ms)
2026-10-18T10:54:30.6951677Z ✔ months are named over the week they start in (2.550725ms)
2026-10-18T10:54:30.6951754Z ✔ a month that starts too close to the first column takes its place (1.325623ms)
2026-10-18T10:54:30.6951829Z ✔ a year that starts early in a month keeps its first label (0.967362ms)
2026-10-18T10:54:30.6951859Z ✔ a bad date draws nothing (0.319551ms)
2026-10-18T10:54:30.6951899Z ✔ hints and the heading read as sentences (31.54631ms)
2026-10-18T10:54:30.9030438Z ✔ harnesses are named as people know them (2.055584ms)
2026-10-18T10:54:30.9035030Z ✔ a claim says when it lapses; one that ended says nothing (0.429191ms)
2026-10-18T10:54:30.9051236Z ✔ Live now lists sessions heard from lately and folds away the idle, the latest first (1.526043ms)
2026-10-18T10:54:30.9051402Z ✔ live work is grouped by work item, most recent first, with sessions on no work item apart (1.080862ms)
2026-10-18T10:54:30.9051509Z ✔ sessions on no work item are grouped by pull request, then by a branch of their own, then the rest together (0.876692ms)
2026-10-18T10:54:30.9055356Z ✔ a session is never title-less: its title, its first prompt's intent, its branch, or untitled (3.158776ms)
2026-10-18T10:54:30.9060352Z ✔ a title from the first prompt is provisional until g1t, the agent or a person names the session (0.673292ms)
2026-10-18T10:54:30.9064961Z ✔ a prompt's intent is its first line or sentence, plain, clipped on a word (0.748541ms)
2026-10-18T10:54:30.9070421Z ✔ evidence is read as far as it goes (0.869912ms)
2026-10-18T10:54:30.9075763Z ✔ a failure stands until the pull request passes in the queue or merges, and a fix after it answers it (0.981772ms)
2026-10-18T10:54:30.9078510Z ✔ coordination events read as lines of the feed (0.897872ms)
2026-10-18T10:54:30.9081804Z ✔ a session is ended by hand by whoever runs it, or by anyone who can write (0.328041ms)
2026-10-18T10:54:30.9099970Z ✔ a session ended by hand says who ended it in the feed (0.22942ms)
2026-10-18T10:54:30.9100106Z ✔ sessions become trees by their parents; one whose parent is missing is a root (0.640911ms)
2026-10-18T10:54:30.9100194Z ✔ how a session was tied to its work, what it touched, and how long it ran (0.449101ms)
2026-10-18T10:54:30.9100268Z ✔ numbers in a sentence are found for linking (0.39089ms)
2026-10-18T10:54:30.9100304Z ✔ blocked_by is typed as numbers (0.41231ms)
2026-10-18T10:54:30.9102336Z ✔ a session's pending updates read as the feed does, leaving out what it does not show (0.311891ms)
2026-10-18T10:54:30.9108275Z ✔ a work item's pull requests are linked in the repository that has them, and not at all when none or two do (0.247391ms)
2026-10-18T10:54:31.2962331Z ✔ an answer in time is passed through (1.929874ms)
2026-10-18T10:54:31.2962508Z ✔ a call that never answers fails at its deadline, and its signal aborts (21.093961ms)
2026-10-18T10:54:31.2962632Z ✔ a call that ignores its signal is still let go (11.259762ms)
2026-10-18T10:54:31.2962726Z ✔ a failure in time is the call's own, not a deadline (1.053342ms)
2026-10-18T10:54:31.2962769Z ✔ the caller's own signal aborts the call (0.849891ms)
2026-10-18T10:54:31.2962822Z ✔ each call gets the time its work needs (0.321581ms)
2026-10-18T10:54:31.2962902Z ✔ a long method of one service is not long in another (0.238741ms)
2026-10-18T10:54:31.2962985Z ✔ no read outlasts the browser's patience with a navigation (0.26013ms)
2026-10-18T10:54:31.3600145Z ✔ a next run is said as a time ahead (1.800713ms)
2026-10-18T10:54:31.3614223Z ✔ an entry's status (1.200713ms)
2026-10-18T10:54:31.3615568Z ✔ rules read as one line (0.491291ms)
2026-10-18T10:54:31.3636654Z ✔ only live update pull requests are listed (0.32727ms)
2026-10-18T10:54:31.5094221Z ✔ what a build found is said with what it was built with (1.113032ms)
2026-10-18T10:54:31.5110900Z ✔ a container size reads plainly (0.257991ms)
2026-10-18T10:54:31.7055984Z ✔ a commit that is gone is said plainly, naming the pull request (2.115024ms)
2026-10-18T10:54:31.7059774Z ✔ a run of the same failure of one app is one row, counted, linking to the newest (1.721683ms)
2026-10-18T10:54:31.7062115Z ✔ other apps' builds in between do not break a run; a different error does (0.598441ms)
2026-10-18T10:54:31.7067527Z ✔ builds that did not fail are never folded (2.501465ms)
2026-10-18T10:54:31.7069656Z ✔ environments list production first, then lasting ones, then previews, newest first in each (0.516271ms)
2026-10-18T10:54:31.7072078Z ✔ production is the production environment that has had a deployment, named production first (0.370211ms)
2026-10-18T10:54:31.7082442Z ✔ an environment is served at its own address, else its current deployment's (0.410611ms)
2026-10-18T10:54:31.7083790Z ✔ the list's filter is read from the address, ignoring what it cannot be (0.848592ms)
2026-10-18T10:54:31.7084752Z ✔ changing a filter keeps the others and starts again from the first page (0.705371ms)
2026-10-18T10:54:31.7086392Z ✔ a filter's choices are each value once, sorted, keeping the chosen one (9.636468ms)
2026-10-18T10:54:31.7088502Z ✔ words for states, sources, environments and pages (0.493581ms)
2026-10-18T10:54:31.7090055Z ✔ only a deployment's newest status can still be under way (0.245441ms)
2026-10-18T10:54:31.7092288Z ✔ native screenshots use the serving app, not a newer attempt or custom domain (0.30224ms)
2026-10-18T10:54:31.9188875Z ✔ a report carries the app's words, without its buttons or log (3.414857ms)
2026-10-18T10:54:31.9191736Z ✔ a report goes when what the page shows changes, and as a heartbeat (0.588361ms)
2026-10-18T10:54:31.9196978Z ✔ a sandboxed desktop reports each kind of job, without its buttons (1.596844ms)
2026-10-18T10:54:31.9215747Z ✔ each kind of job reports its state, whether the person stopped it, and its job, without what only works here (0.994402ms)
2026-10-18T10:54:31.9216069Z ✔ a kind of job's work links to its run when the runner says which (0.655841ms)
2026-10-18T10:54:31.9216377Z ✔ only a diagnosis and a backend the app makes are kept (0.37305ms)
2026-10-18T10:54:31.9222096Z ✔ a report says how the runner's updates stand, without the app's own words and button (1.116592ms)
2026-10-18T10:54:32.1496202Z ✔ a change is saved over the settings as the app has them, and nothing else (3.263887ms)
2026-10-18T10:54:32.1503427Z ✔ the app opens the section it names, or the first (0.609941ms)
2026-10-18T10:54:32.1524015Z ✔ updates say where this copy stands (23.386925ms)
2026-10-18T10:54:32.1531939Z ✔ a failed check says why in a line (0.824732ms)
2026-10-18T10:54:32.3916286Z ✔ the desktop app is known by its cookie (47.434631ms)
2026-10-18T10:54:32.5436296Z ✔ the launcher opens the site with ?app=desktop (0.521781ms)
2026-10-18T10:54:32.6348253Z ✔ developer mode is on only for the cookie's own value (1.946903ms)
2026-10-18T10:54:32.6376645Z ✔ the cookie keeps the choice for a year, and turning it off forgets it (0.413461ms)
2026-10-18T10:54:32.6376868Z ✔ the server's own errors go only to someone signed in who turned it on (48.747103ms)
2026-10-18T10:54:32.6376918Z ✔ whatever was thrown is described (1.896324ms)
2026-10-18T10:54:32.6386438Z ✔ one report says what failed, where, when and on which build (2.763036ms)
2026-10-18T10:54:32.8861132Z ✔ files asked for together are fetched in one request, and once (77.873368ms)
2026-10-18T10:54:32.9130269Z ✔ many files at once go 20 to a request (32.786962ms)
2026-10-18T10:54:32.9761216Z ✔ the files after one come with it, and are not asked for again (63.09893ms)
2026-10-18T10:54:33.0420466Z ✔ a failed fetch is an error, and is tried again when asked again (64.750903ms)
2026-10-18T10:54:33.6791371Z ✔ a highlighted file's HTML, kept apart and given back, is the same highlighted file (278.824452ms)
2026-10-18T10:54:33.6791447Z ✔ lines without HTML stay without it (0.397521ms)
2026-10-18T10:54:33.6791531Z ✔ what a file's colours depend on: each line's side and text, not its numbers or path (0.551721ms)
2026-10-18T10:54:33.6791560Z ✔ a small change is sent whole (0.633551ms)
2026-10-18T10:54:33.6791632Z ✔ past the first screens' lines, files are sent with their counts but not their lines (1.617203ms)
2026-10-18T10:54:33.6791704Z ✔ a very large file waits to be asked for, and does not hold back the files after it (1.151822ms)
2026-10-18T10:54:33.6791769Z ✔ files with comments keep their lines wherever they are, however large (1.105472ms)
2026-10-18T10:54:33.6791832Z ✔ files the comparison left out wait with no counts; binary files are as they were (0.38534ms)
2026-10-18T10:54:33.6791894Z ✔ a link to a file names it by path, encoded or not, and only a file of the change (0.603141ms)
2026-10-18T10:54:33.8130062Z ✔ a User-Agent names the visitor's platform, phones first (4.054707ms)
2026-10-18T10:54:33.8140690Z ✔ client hints name the processor (0.485651ms)
2026-10-18T10:54:33.8150571Z ✔ the file offered first is the platform's preferred kind, on the visitor's processor (0.819342ms)
2026-10-18T10:54:34.1060158Z ✔ the primary cannot be removed, and only a confirmed address can become it (3.516006ms)
2026-10-18T10:54:34.1070823Z ✔ the last confirmed address stays, even when it is not the primary (0.771411ms)
2026-10-18T10:54:34.1079268Z ✔ the backup is a confirmed address other than the primary (0.414171ms)
2026-10-18T10:54:34.1122548Z ✔ a change waiting on the password keeps its fields but never the password (54.333924ms)
2026-10-18T10:54:34.3741262Z ✔ the emoji data is complete and small (3.657097ms)
2026-10-18T10:54:34.3750389Z ✔ search finds by shortcode first, then name, then keyword (35.405838ms)
2026-10-18T10:54:34.3760649Z ✔ the workspace's own emoji are found by name, ahead of standard ones as good (12.879354ms)
2026-10-18T10:54:34.3771067Z ✔ skin tones apply where an emoji has them (0.745301ms)
2026-10-18T10:54:34.3776126Z ✔ a new emoji's name: its shape, standard ones and taken ones (2.349915ms)
2026-10-18T10:54:34.3786716Z ✔ a :name being typed is offered for completion, but not in links or times (0.672141ms)
2026-10-18T10:54:34.3830930Z ✔ :name: becomes the workspace's emoji in text; anything else stays (1.252293ms)
2026-10-18T10:54:34.3831131Z ✔ reacting shows at once, and taking it back undoes it (0.742002ms)
2026-10-18T10:54:34.3831221Z ✔ the room's reaction events count others once, and the viewer's own never twice (0.927711ms)
2026-10-18T10:54:34.3831311Z ✔ a message from the room keeps the viewer's own reactions marked (0.566091ms)
2026-10-18T10:54:34.3831353Z ✔ who reacted reads as a sentence (0.366401ms)
2026-10-18T10:54:34.3831416Z ✔ recent emoji: newest first, each once, a few (0.3521ms)
2026-10-18T10:54:34.7770549Z ✔ an environment's name is lowercased, and anything else is refused (1.839233ms)
2026-10-18T10:54:34.7770740Z ✔ a form's rules: reviewers in order without blanks or repeats, patterns only for selected branches (43.789053ms)
2026-10-18T10:54:34.7770811Z ✔ a form past the limits says what is wrong (24.123536ms)
2026-10-18T10:54:34.7770853Z ✔ an environment's rules in a few words (0.968562ms)
2026-10-18T10:54:34.8835255Z ✔ the tree orders each level and lifts folios whose parent isn't there (2.567165ms)
2026-10-18T10:54:34.8847635Z ✔ the home list groups by the viewer's day: Today, Yesterday, then dates (30.213888ms)
2026-10-18T10:54:34.8853634Z ✔ chat messages name the artifacts they link to, in this workspace only (0.853652ms)
2026-10-18T10:54:34.8870002Z ✔ snippets mark their matches (0.520901ms)
2026-10-18T10:54:34.8870101Z ✔ covers, colours, roles, reading time (1.911604ms)
2026-10-18T10:54:34.8871368Z ✔ a citation links to its code, a glob to the folder it starts from (0.644491ms)
2026-10-18T10:54:34.8882123Z ✔ a project's docs become folders, and spaces and files have addresses under Artifacts (0.652141ms)
2026-10-18T10:54:35.1527648Z ✔ a limit lets requests through until it is reached (4.312948ms)
2026-10-18T10:54:35.1540246Z ✔ a missing or failing binding fails open (43.310272ms)
2026-10-18T10:54:35.1642830Z ✔ secrets are keyed by a short hash, never as they are (16.433491ms)
2026-10-18T10:54:35.1646056Z ✔ git without credentials is limited by address, with a message git shows (7.290254ms)
2026-10-18T10:54:35.1690530Z ✔ git with credentials counts by a hash of them, apart from the address (2.866765ms)
2026-10-18T10:54:35.1703046Z ✔ signed-out pages count by address, and costly ones against a tighter limit too (2.540574ms)
2026-10-18T10:54:35.1751778Z ✔ signed-in requests count by session, and every request by address (5.64465ms)
2026-10-18T10:54:35.1826939Z ✔ requests with an access token count by a hash of the token, at the API's limit (2.384114ms)
2026-10-18T10:54:35.1841308Z ✔ files the Worker serves itself are never limited (0.806022ms)
2026-10-18T10:54:35.1841363Z ✔ costly pages are recognised (0.439741ms)
2026-10-18T10:54:35.1841445Z ✔ the session cookie is read from among others (0.269571ms)
2026-10-18T10:54:35.1841521Z ✔ every wrangler.jsonc declares the rate limits RATE_LIMITS lists, and only those (2.647215ms)
2026-10-18T10:54:35.1842146Z ✔ repository files on the usercontent origin count per address; avatars do not (0.904392ms)
2026-10-18T10:54:35.1845373Z ✔ a signed archive link is known by its token, and only on an archive (0.25581ms)
2026-10-18T10:54:35.3585734Z ✔ an answer streams into its message, then the stored one takes over (2.384234ms)
2026-10-18T10:54:35.3617325Z ✔ other conversations, thread replies and deletions (1.466323ms)
2026-10-18T10:54:35.3617489Z ✔ a cleared conversation empties, and only that one (0.361481ms)
2026-10-18T10:54:35.3619336Z ✔ /clear, typed to g1t, is the command and nothing else is (0.26765ms)
2026-10-18T10:54:35.3619481Z ✔ who g1t is, and answers cut off at their limit (0.346611ms)
2026-10-18T10:54:35.3619507Z ✔ suggestions fit the page (0.866242ms)
2026-10-18T10:54:35.3619573Z ✔ links into the site show as what they lead to (1.375433ms)
2026-10-18T10:54:35.3619658Z ✔ a question asked on a page says which, and one written in Chat says nothing (2.039694ms)
2026-10-18T10:54:35.5617450Z ✔ the state must come back exactly as it was given (13.926117ms)
2026-10-18T10:54:35.5618306Z ✔ cookies are read by name, and odd values are ignored (0.629341ms)
2026-10-18T10:54:35.5619603Z ✔ an installation returns to the workspace it was started for (0.545811ms)
2026-10-18T10:54:35.5681458Z ✔ an installation made on GitHub directly is offered to the workspaces that lack it (1.773943ms)
2026-10-18T10:54:35.5681701Z ✔ the setup page offers only workspaces the person owns, saying which have it (0.685481ms)
2026-10-18T10:54:35.5681804Z ✔ once an installation is recorded, Integrations says GitHub is connected (0.417431ms)
2026-10-18T10:54:35.5681906Z ✔ Connect GitHub links first, adds what is there, and installs only when nothing is (0.604081ms)
2026-10-18T10:54:35.7270143Z ✔ go get finds a repository's code from its address and any package in it (2.182424ms)
2026-10-18T10:54:35.8638937Z ✔ only go-get requests for a repository's address are answered (0.673691ms)
2026-10-18T10:54:35.9529932Z ✔ an untouched form inherits everything (50.314546ms)
2026-10-18T10:54:35.9539936Z ✔ time caps of a level's own are kept, and nothing else is sent (0.859642ms)
2026-10-18T10:54:35.9546996Z ✔ nonsense is passed on for the service to refuse (0.520521ms)
2026-10-18T10:54:36.1331837Z ▶ homeShows
2026-10-18T10:54:36.1332015Z   ✔ takes a default branch's pushes and tags, not another branch's (1.375353ms)
2026-10-18T10:54:36.1338494Z   ✔ takes any branch's push where the default branch is not known (0.33563ms)
2026-10-18T10:54:36.1349589Z   ✔ takes what Home lists and leaves a commit's checks (0.366461ms)
2026-10-18T10:54:36.1349649Z ✔ homeShows (3.934508ms)
2026-10-18T10:54:36.1361256Z ▶ arrivedOf
2026-10-18T10:54:36.1361328Z   ✔ finds nothing new on the first draw (2.123084ms)
2026-10-18T10:54:36.1365599Z   ✔ finds the rows that were not shown before (0.389311ms)
2026-10-18T10:54:36.1378691Z   ✔ does not count a row that went and came back as new (0.278381ms)
2026-10-18T10:54:36.1378743Z   ✔ starts over when the span switches (0.25374ms)
2026-10-18T10:54:36.1378759Z ✔ arrivedOf (3.750287ms)
2026-10-18T10:54:36.4525790Z ✔ Code's needs become rows with what is at stake (2.373255ms)
2026-10-18T10:54:36.4531776Z ✔ Start here: the most pressing tier first, then what has waited longest (1.611643ms)
2026-10-18T10:54:36.4533388Z ✔ the same order whatever order the rows came in (11.795512ms)
2026-10-18T10:54:36.4539282Z ✔ notifications: warnings and failures in this workspace; none about repositories without Code (0.955402ms)
2026-10-18T10:54:36.4542316Z ✔ a notification about something already listed is left out (0.945532ms)
2026-10-18T10:54:36.4562994Z ✔ without Code access no Code row is asked for or shown, and a silent source is named (0.575601ms)
2026-10-18T10:54:36.4563121Z ✔ chat: mentions anywhere and unread direct messages, never muted (0.452051ms)
2026-10-18T10:54:36.4563147Z ✔ a day is the reader's day (10.716661ms)
2026-10-18T10:54:36.4563234Z ✔ since your last visit, in words, in the reader's time zone (12.176703ms)
2026-10-18T10:54:36.4563261Z ✔ how long a span is (0.629931ms)
2026-10-18T10:54:36.4564271Z ✔ the span: since your last visit, capped, or a fixed window (1.774703ms)
2026-10-18T10:54:36.4566325Z ✔ an actor is not a person when it is g1t or an agent of older rows; everyone else is (0.25684ms)
2026-10-18T10:54:36.4573010Z ✔ the digest: what was done, by kind with counts, and who, agents marked (2.777305ms)
2026-10-18T10:54:36.4576365Z ✔ g1t is one row, named, whichever key it used: its account, a workspace, or chat's system:g1t (0.635131ms)
2026-10-18T10:54:36.4580133Z ✔ the digest says which part didn't answer, and counts what could be read (3.106476ms)
2026-10-18T10:54:36.4591910Z ✔ the sentence: people first, then what landed; honest when quiet or unread (1.117262ms)
2026-10-18T10:54:36.4592495Z ✔ what landed: every merge in the span, newest first, g1t's older ones as @g1t (0.544241ms)
2026-10-18T10:54:36.4593525Z ✔ what landed, besides merges: direct pushes, releases, packages and production builds, newest first (0.897262ms)
2026-10-18T10:54:36.4658282Z ✔ a production build is its own row only where no merge or push on the list says it (0.262031ms)
2026-10-18T10:54:36.4658458Z ✔ builds that finished in the span: live or failed, never skipped (0.699121ms)
2026-10-18T10:54:36.4658541Z ✔ running now: workflow runs and builds going (1.224542ms)
2026-10-18T10:54:36.4659374Z ✔ the span's months: one, or the ones it crosses (0.310431ms)
2026-10-18T10:54:36.4659470Z ✔ spend in the span: the UTC days it covers across months, at price, without money in (0.693871ms)
2026-10-18T10:54:36.4659555Z ✔ each merge and push says whether it is live, from what deployments recorded (0.886611ms)
2026-10-18T10:54:36.4700792Z ✔ a change made in a harness session carries the agent mark, linked to the session (0.887242ms)
2026-10-18T10:54:36.4700948Z ✔ each person's push to a default branch is a row: its commit, who pushed, and its session (0.950432ms)
2026-10-18T10:54:36.4701013Z ✔ what landed over the week reads day by day, newest first (1.680543ms)
2026-10-18T10:54:36.4701077Z ✔ while you were away: what settled by itself, what shipped, and what still needs you (0.991462ms)
2026-10-18T10:54:36.4701138Z ✔ Summarize asks about the span the page shows, as a person would (1.141923ms)
2026-10-18T10:54:36.4701200Z ✔ Explain asks about the one change, by what it is (0.560901ms)
2026-10-18T10:54:36.6462728Z ✔ the card is the public profile, signed out too (2.593864ms)
2026-10-18T10:54:36.6469314Z ✔ a private workspace is hidden from someone outside it (2.177964ms)
2026-10-18T10:54:36.6471045Z ✔ commits to a repository show only to those who may read it (1.608363ms)
2026-10-18T10:54:36.6472734Z ✔ the card carries the time zone a profile gives, and none when it gives none (0.628501ms)
2026-10-18T10:54:36.6483876Z ✔ a failing service leaves its part out, not the card (0.543641ms)
2026-10-18T10:54:36.6484037Z ✔ g1t has its own card; ghost and strangers have none (1.427193ms)
2026-10-18T10:54:36.6485280Z ✔ workspaces past three are counted (0.391091ms)
2026-10-18T10:54:36.6486231Z ✔ how recently, in the words the card uses (0.30636ms)
2026-10-18T10:54:36.6496592Z ✔ the card's address and its repository (0.842061ms)
2026-10-18T10:54:37.0386404Z ✔ tabs read from the address, and each shows one severity (2.480395ms)
2026-10-18T10:54:37.0386563Z ✔ counts are what is unread under each tab (0.339021ms)
2026-10-18T10:54:37.0386602Z ✔ the bell shows a number up to 99 (0.33292ms)
2026-10-18T10:54:37.0386634Z ✔ times are said in a few characters (23.962205ms)
2026-10-18T10:54:37.0386711Z ✔ a snooze is for later, by one of a few choices (0.629451ms)
2026-10-18T10:54:37.0386781Z ✔ forms ask for one mark on one item, or read for every item (46.92484ms)
2026-10-18T10:54:37.0386903Z ✔ what needs you puts what waits on you before a failure, and leaves out the rest (1.684243ms)
2026-10-18T10:54:37.0386955Z ✔ every tab says something when it is empty (3.469287ms)
2026-10-18T10:54:37.0387014Z ✔ every reason has words, a filter and an email choice (1.274442ms)
2026-10-18T10:54:37.0387100Z ✔ a thread says how much happened on it once more than one thing has (0.716712ms)
2026-10-18T10:54:37.0387204Z ✔ a done item that settled by itself says why, and who did it (0.502971ms)
2026-10-18T10:54:37.0387295Z ✔ watching is read from the menu, and a custom watch of nothing is the default (1.104492ms)
2026-10-18T10:54:37.0387385Z ✔ the subscribe button says whether, and why (0.994302ms)
2026-10-18T10:54:37.0387663Z ✔ email reasons are read from the settings form in rank order (0.399231ms)
2026-10-18T10:54:37.0387754Z ✔ security alerts that are not urgent reach people as they choose, daily until they do (0.629041ms)
2026-10-18T10:54:37.1230539Z ✔ bold, italic, code and links read as marks (3.235206ms)
2026-10-18T10:54:37.1239778Z ✔ what is not a mark stays as written (0.549651ms)
2026-10-18T10:54:37.1245793Z ✔ the plain words, for a tooltip (0.33891ms)
2026-10-18T10:54:37.3559000Z ✔ the Invitations page sorts every state under one filter, and counts them (6.062421ms)
2026-10-18T10:54:37.3559617Z ✔ the Members page filters by role, two-factor, team and words (1.490803ms)
2026-10-18T10:54:37.3569326Z ✔ everyone is offered a plain sign-up (0.367371ms)
2026-10-18T10:54:37.3570273Z ✔ an invite link is on g1t.sh unless told otherwise (0.427711ms)
2026-10-18T10:54:37.3571564Z ✔ an invite email's proof is kept only when it looks like one, and goes along to the invite's page (0.937242ms)
2026-10-18T10:54:37.3573746Z ✔ signing up from the invite email says the address is confirmed already; otherwise the code step applies (0.720912ms)
2026-10-18T10:54:37.3575909Z ✔ a pasted link or code is tidied to the code (0.615141ms)
2026-10-18T10:54:37.3580822Z ✔ each invite says where it stands and whom it is for (0.711082ms)
2026-10-18T10:54:37.3582384Z ✔ bots that fill the hidden field or answer instantly are turned away (0.811112ms)
2026-10-18T10:54:37.3586902Z ✔ a username is suggested from the invited address (0.916201ms)
2026-10-18T10:54:37.3590367Z ✔ an invite lands in its workspace, else its repository (0.39806ms)
2026-10-18T10:54:37.3594735Z ✔ the welcome is for one place, and ends (0.800041ms)
2026-10-18T10:54:37.3611225Z ✔ the two invites say which they are (0.469911ms)
2026-10-18T10:54:37.3611295Z ✔ an invite's page names the invite it is (0.412351ms)
2026-10-18T10:54:37.3611376Z ✔ Invite a friend never reads as a gate on signing up (0.767532ms)
2026-10-18T10:54:37.3612581Z ✔ a friend can also be invited only to a paid workspace the person owns (1.149372ms)
2026-10-18T10:54:37.3616722Z ✔ the form sends a workspace only when its box is ticked and it was offered (0.471001ms)
2026-10-18T10:54:37.3620760Z ✔ how many invites are left reads plainly, and the menu shows the count (0.262531ms)
2026-10-18T10:54:37.3628694Z ✔ only a pending invite is sent again or copied; one waiting on its friend can still be revoked (0.26875ms)
2026-10-18T10:54:37.5619138Z ✔ colors are six hex digits however they were written (2.202434ms)
2026-10-18T10:54:37.5619387Z ✔ a chip is tinted with its label's color, and neutral without one (1.826524ms)
2026-10-18T10:54:37.5621634Z ✔ labels are found by name or description (0.688771ms)
2026-10-18T10:54:37.5637194Z ✔ a milestone's progress and due date read as words (0.797822ms)
2026-10-18T10:54:37.5640426Z ✔ filters come from the address, and q wins (0.947042ms)
2026-10-18T10:54:37.5650259Z ✔ changing one filter keeps the others (0.496811ms)
2026-10-18T10:54:37.9177659Z ✔ the copyright year is computed, in UTC (3.148906ms)
2026-10-18T10:54:38.0536061Z ✔ the legal line names the company and the year (0.513231ms)
2026-10-18T10:54:38.0536253Z ✔ products are listed the way a sentence lists them (0.452041ms)
2026-10-18T10:54:38.0536291Z ✔ policy dates read as words (0.399441ms)
2026-10-18T10:54:38.0536351Z ✔ every policy has its own address (0.751152ms)
2026-10-18T10:54:38.0536467Z ✔ security.txt has the fields RFC 9116 asks for, and expires within a year (1.230352ms)
2026-10-18T10:54:38.1401328Z ✔ one line and a run of lines are read from the fragment (3.229316ms)
2026-10-18T10:54:38.1430448Z ✔ a run written backwards is put in order (0.415301ms)
2026-10-18T10:54:38.1463860Z ✔ anything else names no lines (0.493751ms)
2026-10-18T10:54:38.1466026Z ✔ a run is held to the file's length (0.463391ms)
2026-10-18T10:54:38.1469654Z ✔ a run is written back the way it is read (0.397071ms)
2026-10-18T10:54:38.1472116Z ✔ a pick is one line; a shift-pick runs from the line already picked (0.352441ms)
2026-10-18T10:54:38.1474848Z ✔ a line is in the run when it is between its ends (0.294631ms)
2026-10-18T10:54:38.3556328Z ✔ the end above the window's bottom edge is in view (1.730774ms)
2026-10-18T10:54:38.3563906Z ✔ an end one row below the edge is not reached: following stops there (0.390231ms)
2026-10-18T10:54:38.3609311Z ✔ what covers the bottom of the window hides the end: a phone's tab bar (0.28476ms)
2026-10-18T10:54:38.3649062Z ✔ a folded step has no end to follow (0.2566ms)
2026-10-18T10:54:38.9029273Z ✔ a log read chunk by chunk is the log read at once, wherever the chunks fall (42.551261ms)
2026-10-18T10:54:38.9029429Z ✔ a group a chunk leaves open holds the next chunk's lines (0.717802ms)
2026-10-18T10:54:38.9029512Z ✔ a line still being written shows, and is read once it ends (0.769831ms)
2026-10-18T10:54:38.9029929Z ✔ reading a long log chunk by chunk reads each line once (231.076051ms)
2026-10-18T10:54:38.9030010Z ✔ a log's rows are its lines and groups' titles, open groups' lines under them (0.991261ms)
2026-10-18T10:54:38.9030073Z ✔ a log reads as lines and folded groups, numbered past the group markers (0.498321ms)
2026-10-18T10:54:38.9030135Z ✔ search finds lines in any case, inside folded groups too (0.711271ms)
2026-10-18T10:54:38.9041988Z ✔ matches are marked where they fall (0.37734ms)
2026-10-18T10:54:38.9045612Z ✔ a run's archive has each job whole and a file per step, named as the API names them (2.159574ms)
2026-10-18T10:54:38.9047229Z ✔ each line's time comes off the front, as GitHub's logs stamp it, and colours stay beside the plain text (1.932794ms)
2026-10-18T10:54:39.1410450Z ✔ a live job is asked every second while a step runs, less often while none does (3.108856ms)
2026-10-18T10:54:39.2783005Z ✔ a failed answer is tried again, waiting longer each time, never stopping a live log (0.686141ms)
2026-10-18T10:54:39.2783208Z ✔ a 429 waits as long as Retry-After says; a 404 stops; a finished job's last fetch gives up (0.534641ms)
2026-10-18T10:54:39.2783311Z ✔ a quiet step says for how long it has printed nothing (0.457991ms)
2026-10-18T10:54:39.2783393Z ✔ Retry-After reads as seconds or as a date (0.387451ms)
2026-10-18T10:54:39.3257744Z ✔ rows start where the rows above them end, measured or not (2.915596ms)
2026-10-18T10:54:39.3262769Z ✔ only the rows on screen and a little around them are drawn (2.603245ms)
2026-10-18T10:54:39.5023784Z ✔ @name links to the person or workspace (4.527708ms)
2026-10-18T10:54:39.5066282Z ✔ @g1t is g1t's agent, never the workspace alias at /g1t (0.520071ms)
2026-10-18T10:54:39.5066396Z ✔ @workspace/team links to the team (0.35893ms)
2026-10-18T10:54:39.5066484Z ✔ #12 in a repository is read there, by the page that asks the work service (0.485121ms)
2026-10-18T10:54:39.5066581Z ✔ #12 in a workspace's text is its work item, and workspace#12 is that workspace's (0.523571ms)
2026-10-18T10:54:39.5066645Z ✔ #12 with nowhere to read it stays text, and so does a link's fragment (0.27445ms)
2026-10-18T10:54:41.1453036Z ✔ README.md: the kept tree renders exactly what react-markdown renders (416.827515ms)
2026-10-18T10:54:41.1466908Z ✔ apps/docs/src/content/docs/guides/deploy-to-cloudflare.md: the kept tree renders exactly what react-markdown renders (351.31265ms)
2026-10-18T10:54:41.1481510Z ✔ CONTRIBUTING.md: the kept tree renders exactly what react-markdown renders (254.907706ms)
2026-10-18T10:54:41.1492673Z ✔ edge cases: the kept tree renders exactly what react-markdown renders (36.934911ms)
2026-10-18T10:54:41.1506158Z ✔ empty: the kept tree renders exactly what react-markdown renders (3.767717ms)
2026-10-18T10:54:41.3743705Z ✔ with no handles nothing is offered (1.968724ms)
2026-10-18T10:54:41.5037561Z ✔ teams complete from the workspace or from their own name (1.931233ms)
2026-10-18T10:54:41.5037696Z ✔ at most five, and nothing once one is typed in full (0.457741ms)
2026-10-18T10:54:41.5709059Z ✔ a merge commit names where it came from by default (2.842346ms)
2026-10-18T10:54:41.5732855Z ✔ a squash lists its commits when it has more than one (0.581291ms)
2026-10-18T10:54:41.5732955Z ✔ a template is filled in once (0.924551ms)
2026-10-18T10:54:41.5733023Z ✔ a message splits into title and body (0.467121ms)
2026-10-18T10:54:41.5733120Z ✔ the sample pull request previews as the server writes it (0.484601ms)
2026-10-18T10:54:41.5741719Z ✔ choices from settings leave the message to the service (0.400851ms)
2026-10-18T10:54:41.5750460Z ✔ the allowed methods follow the settings, fast-forward included (0.302051ms)
2026-10-18T10:54:41.7683649Z ✔ public landing pages opt into a canonical without affecting other routes (4.605488ms)
2026-10-18T10:54:41.7695119Z ✔ the homepage declares its canonical URL using the installation's origin (0.566551ms)
2026-10-18T10:54:41.7704472Z ✔ a page gets its title, description, Open Graph and Twitter tags (0.867081ms)
2026-10-18T10:54:41.7734180Z ✔ pages under a project describe the project, and their card follows its details (1.347203ms)
2026-10-18T10:54:41.7734326Z ✔ a page's address and card come from the root loader's addresses (0.772791ms)
2026-10-18T10:54:41.7734416Z ✔ without a card service, a page has no image tags (0.46323ms)
2026-10-18T10:54:41.7734671Z ✔ with nothing particular to say, a page says what g1t is (0.472941ms)
2026-10-18T10:54:41.7735076Z ✔ a card's version changes with what it shows (0.448561ms)
2026-10-18T10:54:41.7743613Z ✔ every card address carries the render version, so a new design is a new address (0.684951ms)
2026-10-18T10:54:41.7757215Z ✔ an excerpt is plain text from the start of the Markdown (1.049752ms)
2026-10-18T10:54:42.0301374Z ✔ each kind of need gets its reason chip (2.204274ms)
2026-10-18T10:54:42.0304207Z ✔ why a need needs a person is said for every reason (2.877596ms)
2026-10-18T10:54:42.0305846Z ✔ what is known lists only what is known (19.765668ms)
2026-10-18T10:54:42.0320393Z ✔ the required checks are read from the pull request's check status (0.25837ms)
2026-10-18T10:54:42.0320520Z ✔ test files are recognised by the names test runners use (0.44797ms)
2026-10-18T10:54:42.0320598Z ✔ a push to the default branch counts a person's own commits, not merges or g1t's (0.660191ms)
2026-10-18T10:54:42.0322787Z ✔ who pushed is the account that signed in, not the name on the commits (0.647971ms)
2026-10-18T10:54:42.0324741Z ✔ a short read of the branch is enough when it reaches the oldest push (0.328391ms)
2026-10-18T10:54:42.0331577Z ✔ each push to the default branch places the commits it brought, at its time, from one read of the history (0.663782ms)
2026-10-18T10:54:42.0332531Z ✔ a change merged automatically when g1t merged it (0.28925ms)
2026-10-18T10:54:42.0336730Z ✔ the week is seven days of landed changes, with the week before (12.201684ms)
2026-10-18T10:54:42.0339995Z ✔ days follow the viewer's time zone (3.684167ms)
2026-10-18T10:54:42.0355373Z ✔ the change from last week, and how it reads (0.445101ms)
2026-10-18T10:54:42.0355476Z ✔ a repository's merged list reaches back when it is not full or its oldest is old enough (0.449301ms)
2026-10-18T10:54:42.0355540Z ✔ landed today is the viewer's calendar day, newest first (1.434153ms)
2026-10-18T10:54:42.0358732Z ✔ tabs and sorting come from the address (0.414171ms)
2026-10-18T10:54:42.0361442Z ✔ the summary says the week plainly (0.2714ms)
2026-10-18T10:54:42.0363781Z ✔ a job waiting for a self-hosted runner says so (0.30039ms)
2026-10-18T10:54:42.2695616Z ✔ a first visit has nothing to count from and starts the clock (6.127142ms)
2026-10-18T10:54:42.2695758Z ✔ views within a visit keep counting from the visit before (0.435551ms)
2026-10-18T10:54:42.2695828Z ✔ a long gap starts a new visit, counting from the last view (0.270511ms)
2026-10-18T10:54:42.2695860Z ✔ a cookie from the future is ignored (0.397651ms)
2026-10-18T10:54:42.2695889Z ✔ cookies are read by name (0.449341ms)
2026-10-18T10:54:42.2695951Z ✔ greetings follow the hour, in the viewer's zone (23.555155ms)
2026-10-18T10:54:42.2696008Z ✔ one person's burst in one project reads as one line (1.129112ms)
2026-10-18T10:54:42.2696067Z ✔ a burst breaks across projects and long gaps (0.361761ms)
2026-10-18T10:54:42.2705152Z ✔ needs are ranked by urgency, then by how long they waited (0.734501ms)
2026-10-18T10:54:42.2713870Z ✔ a running run quiet for ten minutes is stuck (0.736912ms)
2026-10-18T10:54:42.2722612Z ✔ daily buckets put each point on its day, oldest first (0.399361ms)
2026-10-18T10:54:42.2734905Z ✔ median, pass rates and spans (1.120592ms)
2026-10-18T10:54:42.2780253Z ✔ work item to merge pairs a merge with the work item it landed (0.312921ms)
2026-10-18T10:54:42.2784544Z ✔ sparkline points span the box, zero on the floor (0.331211ms)
2026-10-18T10:54:42.2784800Z ✔ open work items by age (0.501901ms)
2026-10-18T10:54:42.2785003Z ✔ the feed names people, not account ids (0.393871ms)
2026-10-18T10:54:42.2785240Z ✔ a workspace acting as itself is g1t, never a person named after the workspace (0.22444ms)
2026-10-18T10:54:42.2785422Z ✔ waits read in the largest whole unit (0.338671ms)
2026-10-18T10:54:42.2785640Z ✔ a production deploy that finished is a line, linked to it on the current path (0.503881ms)
2026-10-18T10:54:42.4602006Z ✔ money rounds half up at the cent on whole micros, never on a float (1.920634ms)
2026-10-18T10:54:42.5868628Z ✔ a fraction of a cent reads <$0.01, and exactly nothing reads $0.00 (0.29405ms)
2026-10-18T10:54:42.5868718Z ✔ negatives lead with a minus sign (0.23638ms)
2026-10-18T10:54:42.5868811Z ✔ precise shows up to four places, trimmed down to two (0.277601ms)
2026-10-18T10:54:42.5868832Z ✔ compact is an axis label (0.30916ms)
2026-10-18T10:54:42.5868906Z ✔ whole dollars drop the cents only when there are none (0.34674ms)
2026-10-18T10:54:42.5868984Z ✔ form fields read plain dollars, rounded the same way (0.4091ms)
2026-10-18T10:54:42.5869063Z ✔ dollars from a service that counts in dollars become whole micros (0.25224ms)
2026-10-18T10:54:42.7829709Z ✔ an old page loses navigation ownership as soon as a newer click starts (56.550588ms)
2026-10-18T10:54:42.7829859Z ✔ repeated clicks to the same path have different recovery owners (0.262321ms)
2026-10-18T10:54:42.7830113Z ✔ latest sidebar destination wins: /artifacts/one then /artifacts/two (6.203092ms)
2026-10-18T10:54:42.7831506Z ✔ latest sidebar destination wins: /artifacts/one then /code (2.601365ms)
2026-10-18T10:54:42.9501927Z ✔ a path on g1t is kept, with its query and fragment (1.695083ms)
2026-10-18T10:54:42.9513630Z ✔ anything that could leave g1t goes home instead (0.45681ms)
2026-10-18T10:54:42.9517874Z ✔ sign in and sign up links carry where to come back to (0.412121ms)
2026-10-18T10:54:43.1928833Z ✔ finds a title on an element, not on a component's own prop or inside an expression (2.933806ms)
2026-10-18T10:54:43.1928975Z ✔ no native title hints in apps/web (76.007455ms)
2026-10-18T10:54:43.3592866Z ✔ the kind a loader names wins over the address (1.913254ms)
2026-10-18T10:54:43.3625361Z ✔ without one, the shape of the address decides (0.638911ms)
2026-10-18T10:54:43.3637462Z ✔ signed out: nothing here, which may be private, and sign in if it is yours (0.41679ms)
2026-10-18T10:54:43.3653050Z ✔ signed in: it does not exist or you cannot see it, and who you are (0.3596ms)
2026-10-18T10:54:43.3653194Z ✔ a missing person is simply no one, signed in or not (0.35955ms)
2026-10-18T10:54:43.3653255Z ✔ the page depends only on the kind and the viewer (1.754624ms)
2026-10-18T10:54:43.5499951Z ✔ toasts: newest last, at most three, never twice (3.391176ms)
2026-10-18T10:54:43.6846791Z ✔ a newer message in the same conversation replaces its toast (0.34739ms)
2026-10-18T10:54:43.6846918Z ✔ no toast for the conversation on screen, by page or by channel; inbox items always (0.447811ms)
2026-10-18T10:54:43.6847009Z ✔ quick replies post to the conversation, in its thread when there is one (2.243445ms)
2026-10-18T10:54:43.6847077Z ✔ badges: chat only once the feed's counts are complete; the inbox whenever known (0.529601ms)
2026-10-18T10:54:43.6847149Z ✔ reading a conversation here zeroes it at once (0.381371ms)
2026-10-18T10:54:43.6847239Z ✔ the sidebar takes the feed's counts once they are complete, and spots conversations it does not list (0.658301ms)
2026-10-18T10:54:43.6847290Z ✔ the tab title counts what needs you, once (0.523161ms)
2026-10-18T10:54:43.6847350Z ✔ browser notifications are offered once, after a DM or mention, never after a no (0.49472ms)
2026-10-18T10:54:43.6847417Z ✔ reconnecting waits a jittered, growing time, never past half a minute (0.679651ms)
2026-10-18T10:54:43.6847480Z ✔ a stack taller than the screen folds its oldest toasts into a pill, never the newest (0.432211ms)
2026-10-18T10:54:43.6847536Z ✔ a card's notification offers its links alone: nothing answers its other buttons (0.359891ms)
2026-10-18T10:54:43.6847593Z ✔ recent notifications are kept newest first, once each (1.197202ms)
2026-10-18T10:54:43.6847651Z ✔ the panel waits on the newest notification per card, for a day, until it is acted on (0.889372ms)
2026-10-18T10:54:43.6848056Z ✔ the backoff starts over only after a connection held for a while (0.232721ms)
2026-10-18T10:54:43.7248068Z ✔ successful and denied OAuth callbacks carry the exact configured issuer and state (3.792087ms)
2026-10-18T10:54:43.9438379Z ✔ a view reads from the address and writes back to it (3.124286ms)
2026-10-18T10:54:43.9453825Z ✔ numbers read as people read them (19.006426ms)
2026-10-18T10:54:43.9468652Z ✔ a live line is shown only when the page's search would have found it (0.705522ms)
2026-10-18T10:54:43.9471679Z ✔ spans nest under their parents, and orphans are still shown (0.741351ms)
2026-10-18T10:54:43.9499539Z ✔ an error's work item says what, how often and where to look (0.971522ms)
2026-10-18T10:54:44.1288773Z ✔ a new workspace has every step to do, in the guide's order (3.031756ms)
2026-10-18T10:54:44.1291270Z ✔ a step is done from the workspace's state, not from clicks (0.405921ms)
2026-10-18T10:54:44.1302383Z ✔ a provider whose check failed is not a working one (0.32099ms)
2026-10-18T10:54:44.1303050Z ✔ code is brought by a project or a connected GitHub; people by a member or an invitation (0.27247ms)
2026-10-18T10:54:44.1304178Z ✔ either the CLI or the plugin signed in connects the harness (0.248831ms)
2026-10-18T10:54:44.1308611Z ✔ skipped steps count as settled, but the AI provider cannot be skipped and a done step is not skipped (0.25365ms)
2026-10-18T10:54:44.1313239Z ✔ skipping keeps the guide's order and takes a skip back (1.800934ms)
2026-10-18T10:54:44.1316061Z ✔ it opens by itself until dismissed, and whenever it is asked for (0.235691ms)
2026-10-18T10:54:44.2905319Z ✔ the first tab to claim an arrival pings, and every other tab stays quiet (2.084064ms)
2026-10-18T10:54:44.2920753Z ✔ old marks are cleared as tabs claim, and other keys are left alone (1.898003ms)
2026-10-18T10:54:44.4891318Z ✔ a pull request g1t made shows g1t, requested by whoever asked (8.005755ms)
2026-10-18T10:54:44.4914852Z ✔ anything else shows its author (0.349161ms)
2026-10-18T10:54:44.4937679Z ✔ work g1t started itself names nobody as asking (0.40265ms)
2026-10-18T10:54:44.6862537Z ✔ one-time-code fields are findable by password managers and carry no ignore attributes (2.384845ms)
2026-10-18T10:54:44.8433847Z ✔ an authenticator code field takes six digits, with or without the space (0.611461ms)
2026-10-18T10:54:44.8434020Z ✔ a field that takes recovery codes neither cuts nor refuses one (0.30416ms)
2026-10-18T10:54:44.8434094Z ✔ a code pasted into the boxes loses its spaces and dashes; a recovery code is told apart (0.930001ms)
2026-10-18T10:54:44.9091085Z ✔ sizes read as registries show them (2.337424ms)
2026-10-18T10:54:44.9100962Z ✔ digests shorten for lists (0.425961ms)
2026-10-18T10:54:44.9109610Z ✔ an npm package is installed after .npmrc names its scope's registry, and a token for private ones (1.808743ms)
2026-10-18T10:54:44.9120165Z ✔ a Composer package is required after its workspace's repository is added, with credentials for private ones (0.30114ms)
2026-10-18T10:54:44.9131321Z ✔ a crate is added after .cargo/config.toml names its workspace's registry, with cargo login for private ones (0.633992ms)
2026-10-18T10:54:44.9144372Z ✔ a Maven artifact is fetched from its workspace's repository, with a settings.xml server for private ones (0.475051ms)
2026-10-18T10:54:44.9154447Z ✔ a NuGet package is added from its workspace's feed, named as a source with credentials for private ones (0.352701ms)
2026-10-18T10:54:44.9169051Z ✔ a gem is added with Bundler from its workspace's registry, with credentials for private ones (2.328294ms)
2026-10-18T10:54:44.9179169Z ✔ a container image is pulled by its address and tag (0.523191ms)
2026-10-18T10:54:44.9190493Z ✔ packages are listed by the visibility and order asked for (16.218901ms)
2026-10-18T10:54:44.9202769Z ✔ download counts read short (0.364071ms)
2026-10-18T10:54:45.1638174Z ✔ a page runs only its own scripts and is never framed (10.858451ms)
2026-10-18T10:54:45.1652783Z ✔ every answer gains nosniff and a referrer policy; pages are not framed (46.652059ms)
2026-10-18T10:54:45.3430626Z ✔ a part that throws is kept as failed, by what it is; one that answers is its answer (2.637995ms)
2026-10-18T10:54:45.5777930Z ✔ nothing is pending while the page is idle (46.833779ms)
2026-10-18T10:54:45.5778093Z ✔ a post is pending while it is sent and while the page reloads after it (0.709341ms)
2026-10-18T10:54:45.5778161Z ✔ following a link, or a GET form, is not a pending write (0.401641ms)
2026-10-18T10:54:45.5807544Z ✔ only the submission that matches is pending, so one row's button does not speak for another's (0.575731ms)
2026-10-18T10:54:45.7547315Z ✔ people are searched by username or name, and an email address is never looked up (1.745783ms)
2026-10-18T10:54:45.8818721Z ✔ the invite form names an address or a username (1.496842ms)
2026-10-18T10:54:45.8818844Z ✔ an invitation says the role it joins with and how long it works (0.584031ms)
2026-10-18T10:54:45.9147871Z ✔ a team's lead is a person; an old agent lead is nobody's (1.417203ms)
2026-10-18T10:54:45.9170260Z ✔ the directory lists people, in one search (1.626993ms)
2026-10-18T10:54:45.9184513Z ✔ forms read plainly (0.34303ms)
2026-10-18T10:54:45.9217143Z ✔ access to Code says where it comes from (0.396301ms)
2026-10-18T10:54:46.0882616Z ✔ bookmarks survive the cookie (3.027796ms)
2026-10-18T10:54:46.0882776Z ✔ a malformed or foreign cookie entry is dropped (0.426951ms)
2026-10-18T10:54:46.0892012Z ✔ the cookie is HttpOnly, short-lived and Secure over HTTPS (0.499391ms)
2026-10-18T10:54:46.0892067Z ✔ what each call asks for (0.461201ms)
2026-10-18T10:54:46.0895904Z ✔ only known reads are taken not to write (0.480951ms)
2026-10-18T10:54:46.0899163Z ✔ a signed-out GET never sets the bookmark cookie, so public pages stay cacheable (0.28848ms)
2026-10-18T10:54:46.0906663Z ✔ timings (1.207023ms)
2026-10-18T10:54:46.2373953Z ✔ a phone is told by its client hint, else its user agent (1.554573ms)
2026-10-18T10:54:46.4346936Z ✔ the project being looked at leads recent, once (2.710045ms)
2026-10-18T10:54:46.4354992Z ✔ pinned projects are never also recent (0.4001ms)
2026-10-18T10:54:46.4371979Z ✔ another workspace's project is not this one's recent (0.37122ms)
2026-10-18T10:54:46.4410397Z ✔ recent holds a few (0.31783ms)
2026-10-18T10:54:46.4410754Z ✔ a pin form says what to change (40.188127ms)
2026-10-18T10:54:46.4411097Z ✔ a pin moves up or down within the list (0.344611ms)
2026-10-18T10:54:46.6554009Z ✔ clear after: minutes and hours from now, the end of today, the end of the week, or never (2.145655ms)
2026-10-18T10:54:46.6561300Z ✔ a custom time is the viewer's own, and only one still ahead counts (0.482251ms)
2026-10-18T10:54:46.6563440Z ✔ pausing notifications: half an hour, an hour, or until nine tomorrow morning (0.679391ms)
2026-10-18T10:54:46.6565200Z ✔ every preset says something and clears sensibly (0.35491ms)
2026-10-18T10:54:46.6569258Z ✔ how someone shows: offline, away, active, and Do Not Disturb over either (0.503211ms)
2026-10-18T10:54:46.6574726Z ✔ a status past its time is gone, even before the feed says so (0.3761ms)
2026-10-18T10:54:46.6577470Z ✔ when something ends, in a few words (24.270896ms)
2026-10-18T10:54:46.6587138Z ✔ a tab is idle after ten minutes without input (0.317131ms)
2026-10-18T10:54:46.6589724Z ✔ custom emoji are named; ordinary emoji are not (0.683802ms)
2026-10-18T10:54:46.6590628Z ✔ people merge by id, and a later word wins (0.722351ms)
2026-10-18T10:54:46.8692914Z ✔ an uploaded image is served from the usercontent origin by its hash (1.373653ms)
2026-10-18T10:54:47.0239902Z ✔ an upload is a PNG, JPEG or WebP of at most 5 MB, read by its bytes (51.892859ms)
2026-10-18T10:54:47.0240058Z ✔ production elsewhere is taken at its address, versioned by the day (1.003332ms)
2026-10-18T10:54:47.0240142Z ✔ a reported production deployment gives the address and the commit (0.450501ms)
2026-10-18T10:54:47.0240226Z ✔ no screenshot when it is not elsewhere, has no address, or shows an upload (0.363461ms)
2026-10-18T10:54:47.0240308Z ✔ a version changes with the deploy or the day (0.282451ms)
2026-10-18T10:54:47.0240368Z ✔ the card tries the screenshot, then the upload; a preferred upload alone (0.483501ms)
2026-10-18T10:54:47.0408812Z ✔ a CLI-only fix keeps latest branch checks separate from the older production commit (2.726085ms)
2026-10-18T10:54:47.0419187Z ✔ the same commit is not reported twice, and a project without deployment still shows branch checks (0.390161ms)
2026-10-18T10:54:47.0430941Z ✔ an unavailable branch head never mislabels deployed checks as latest branch checks (0.350611ms)
2026-10-18T10:54:47.0494821Z ✔ a failed same-commit retry does not replace the serving deployment (0.345391ms)
2026-10-18T10:54:47.2731910Z ✔ a package reads as its registry, its name and its latest version (2.017404ms)
2026-10-18T10:54:47.2735514Z ✔ what a library publishes comes before an image, released ones first (1.130702ms)
2026-10-18T10:54:47.2736537Z ✔ each ecosystem links to how it publishes (0.23886ms)
2026-10-18T10:54:47.2739362Z ✔ each choice sets a kind and where it runs, and reads back (0.27418ms)
2026-10-18T10:54:47.2746727Z ✔ a project's badge says what it is and where it runs (0.347151ms)
2026-10-18T10:54:47.2746850Z ✔ links show homepage, docs, then the rest, never twice (0.656591ms)
2026-10-18T10:54:47.2749196Z ✔ an overview form changes only what it carries (38.198533ms)
2026-10-18T10:54:47.2762842Z ✔ the latest release is the newest tag by its commit (10.574771ms)
2026-10-18T10:54:47.2762942Z ✔ cards show production, else the homepage or docs (0.791892ms)
2026-10-18T10:54:47.2763006Z ✔ custom links are read from a form's rows, blank rows left out (0.714211ms)
2026-10-18T10:54:47.2764175Z ✔ only what g1t deploys leads with production (0.305821ms)
2026-10-18T10:54:47.4644773Z ✔ an empty address is the default list (3.388986ms)
2026-10-18T10:54:47.4651034Z ✔ what the address says is read, and nonsense is the default (0.535841ms)
2026-10-18T10:54:47.4655684Z ✔ the address round-trips, and a change goes back to page one (0.873631ms)
2026-10-18T10:54:47.4659120Z ✔ archived projects are left out unless asked for (10.727471ms)
2026-10-18T10:54:47.4663829Z ✔ filters narrow by visibility, kind, language and deployments (0.920652ms)
2026-10-18T10:54:47.4674212Z ✔ search matches every word, in the name, slug or description, names that start with it first (0.575581ms)
2026-10-18T10:54:47.4678600Z ✔ each sort orders as it says, ties by name (0.608482ms)
2026-10-18T10:54:47.4694745Z ✔ pages hold PAGE_SIZE, and a page past the end is the last (0.584271ms)
2026-10-18T10:54:47.4694831Z ✔ facets count the whole workspace (1.014572ms)
2026-10-18T10:54:47.4694928Z ✔ the keyboard moves through rows and stops at the ends (0.704582ms)
2026-10-18T10:54:47.6291732Z ✔ code is not docs: a project never gets a Docs tab (1.927753ms)
2026-10-18T10:54:47.6321626Z ✔ build configuration is discoverable under deployments only with integration access (0.973921ms)
2026-10-18T10:54:47.6335538Z ✔ Storage is planned while implemented environments are no longer marked Soon (0.24431ms)
2026-10-18T10:54:47.8036966Z ✔ a project page names its repository (1.844853ms)
2026-10-18T10:54:47.8044611Z ✔ pages that are not a repository's name none (0.330641ms)
2026-10-18T10:54:47.8054723Z ✔ only a repository that is there and public is served from the cache (0.365881ms)
2026-10-18T10:54:48.0541369Z ✔ a pull request's own snake_case fields are read into camelCase (1.706544ms)
2026-10-18T10:54:48.2102817Z ✔ camelCase is taken as it is (3.471377ms)
2026-10-18T10:54:48.2102982Z ✔ getPull reads the work service's answer at the edge (57.059369ms)
2026-10-18T10:54:48.2103026Z ✔ getPull passes a refusal through (0.903372ms)
2026-10-18T10:54:48.3237715Z ✔ every page asks billing for the same month (3.048726ms)
2026-10-18T10:54:48.3274744Z ✔ Home and Usage show one figure for the month (1.146942ms)
2026-10-18T10:54:48.4996433Z ✔ a reference's written form (3.145146ms)
2026-10-18T10:54:48.4996716Z ✔ #N in a repository goes through its ref page; in a workspace, to its work item (0.770402ms)
2026-10-18T10:54:48.6916573Z ✔ the container registry's paths go to the packages service (2.408575ms)
2026-10-18T10:54:48.6921170Z ✔ the npm registry's paths go to the packages service (0.765842ms)
2026-10-18T10:54:48.6922155Z ✔ the Composer registries go to the packages service (0.459691ms)
2026-10-18T10:54:48.6923672Z ✔ the Cargo registries go to the packages service (0.289281ms)
2026-10-18T10:54:48.6926632Z ✔ the Maven repositories go to the packages service (0.341641ms)
2026-10-18T10:54:48.6936753Z ✔ the NuGet feeds go to the packages service (0.24096ms)
2026-10-18T10:54:48.6937085Z ✔ the RubyGems registries go to the packages service (0.255881ms)
2026-10-18T10:54:48.6939314Z ✔ git goes to repos, and everything else is the site's (0.313761ms)
2026-10-18T10:54:48.6939968Z ✔ a registry request names its workspace, and can be moved to another (1.346773ms)
2026-10-18T10:54:48.9129467Z ✔ the typed name confirms only the full name, in any case (2.041283ms)
2026-10-18T10:54:48.9168587Z ✔ filters by visibility and archived (1.999314ms)
2026-10-18T10:54:48.9168790Z ✔ search matches every word in name, description or topics (0.611601ms)
2026-10-18T10:54:48.9169118Z ✔ counts each filter (0.574121ms)
2026-10-18T10:54:48.9169141Z ✔ an unknown filter is all (0.316ms)
2026-10-18T10:54:48.9169240Z ✔ a bulk action is summed up, with each failure and why (0.48086ms)
2026-10-18T10:54:48.9169325Z ✔ a renamed branch keeps the rest of the address (0.37512ms)
2026-10-18T10:54:48.9169358Z ✔ days until a date, never negative (0.42787ms)
2026-10-18T10:54:48.9199611Z ✔ dates read the same everywhere (23.254194ms)
2026-10-18T10:54:48.9213396Z ✔ names are tidied, not judged (1.312453ms)
2026-10-18T10:54:49.1669017Z ✔ refs name their branch or tag (6.247701ms)
2026-10-18T10:54:49.3447519Z ✔ a project's overview follows what it runs, who is working on it and what may need someone, not every push (0.893522ms)
2026-10-18T10:54:49.3449867Z ✔ the overview hears its own commit's checks, and every pull request's finished ones (0.485181ms)
2026-10-18T10:54:49.3449974Z ✔ the files page follows refs, checks, releases and deployments (0.705312ms)
2026-10-18T10:54:49.3450557Z ✔ a page of files hears its own branch and its commit's checks, not every branch's (0.707062ms)
2026-10-18T10:54:49.3450634Z ✔ the commits page hears pushes to its own branch only (0.630291ms)
2026-10-18T10:54:49.3450725Z ✔ branches, tags, and the list of pull requests (0.511261ms)
2026-10-18T10:54:49.3450794Z ✔ a pull request hears its own changes, its head branch and its head's checks (0.499771ms)
2026-10-18T10:54:49.3450860Z ✔ a pull request does not hear a work item that shares its number (0.265931ms)
2026-10-18T10:54:49.3450949Z ✔ the Sessions page hears claims, sessions starting and ending, what the queue finds, and merges (0.434901ms)
2026-10-18T10:54:49.3451015Z ✔ a session going on reaches the pull request it is on, and no other (0.337071ms)
2026-10-18T10:54:49.3451081Z ✔ a session's page hears every session, claim and overlap in the repository (0.25096ms)
2026-10-18T10:54:49.3451105Z ✔ runs, one run, and security (0.288751ms)
2026-10-18T10:54:49.3451170Z ✔ new commits are counted, and uncounted when a push was not (0.490161ms)
2026-10-18T10:54:49.3451227Z ✔ a change waits a second for more, five at most, then refreshes (1.500323ms)
2026-10-18T10:54:49.3451288Z ✔ never under someone typing, a dialog, or a navigation: it waits for them (0.284331ms)
2026-10-18T10:54:49.3452010Z ✔ a burst of changes refreshes at most every two seconds (1.084232ms)
2026-10-18T10:54:49.3452087Z ✔ a tab out of view never refreshes; back in view, it catches up at once (0.233011ms)
2026-10-18T10:54:49.3452170Z ✔ without the socket: back in view every 30 s at most, a poll every minute in view, never with it (0.493731ms)
2026-10-18T10:54:49.3452479Z ✔ typing is in text boxes, text areas and editors (0.30607ms)
2026-10-18T10:54:49.3452513Z ✔ the bottom of the page, with some slack (0.29495ms)
2026-10-18T10:54:49.3454019Z ✔ a workspace's Work pages: the list hears every work item, an item page its own (0.436671ms)
2026-10-18T10:54:49.5787716Z ✔ only an active navigation carries its build; fetchers, refreshes and writes never force a document switch (50.658016ms)
2026-10-18T10:54:49.5789043Z ✔ a request that got no answer, in each browser's words, is a network failure (3.582967ms)
2026-10-18T10:54:49.5792791Z ✔ a stale build, an abort or a server's error is not (0.368591ms)
2026-10-18T10:54:49.5815948Z ✔ only the router's own reads are sent again (0.309681ms)
2026-10-18T10:54:49.5816103Z ✔ a read for the page already showing is a refresh; one for another page is a navigation (0.466231ms)
2026-10-18T10:54:49.5816188Z ✔ retries come quickly at first, then settle (0.30019ms)
2026-10-18T10:54:49.5816275Z ✔ a refresh waits out the browser being offline, however long (0.301681ms)
2026-10-18T10:54:49.5816390Z ✔ a network that is up and never answers is no blip: a refresh gives up, and so does a click (0.230491ms)
2026-10-18T10:54:49.5816469Z ✔ while the error page tries on its own, a read is tried once (0.18737ms)
2026-10-18T10:54:49.7638992Z ✔ everything may be crawled but a file's blame (2.186234ms)
2026-10-18T10:54:49.7651838Z ✔ g1t.sh names its docs' map too (0.428501ms)
2026-10-18T10:54:49.9649984Z ✔ a new ruleset protects the default branch, and a workspace's holds everywhere (2.388574ms)
2026-10-18T10:54:49.9680969Z ✔ every rule type has a label, a group and its defaults (0.709671ms)
2026-10-18T10:54:49.9681063Z ✔ an export imports back as it was (1.130042ms)
2026-10-18T10:54:49.9681160Z ✔ an import fills in what it leaves out and refuses what is not a ruleset (1.480863ms)
2026-10-18T10:54:49.9681235Z ✔ who may bypass, and whose changes a rule holds for, read plainly (0.477971ms)
2026-10-18T10:54:49.9681270Z ✔ what a ruleset targets, in a few words (0.354231ms)
2026-10-18T10:54:50.1321384Z ✔ sizes read as KB, MB or GB (1.211843ms)
2026-10-18T10:54:50.1327980Z ✔ expiry reads from now (0.276211ms)
2026-10-18T10:54:50.1332283Z ✔ KV is asked for an old, finished run's artifacts only until they have expired (0.3162ms)
2026-10-18T10:54:50.2961492Z ✔ a re-run of failed jobs whose job waits for a self-hosted runner can be cancelled, not re-run (2.767885ms)
2026-10-18T10:54:50.4474289Z ✔ an earlier attempt's page offers Cancel run while the latest attempt runs (0.475781ms)
2026-10-18T10:54:50.4474415Z ✔ a job not finished keeps the latest attempt going, whatever the run's own status says (0.432961ms)
2026-10-18T10:54:50.4474668Z ✔ every status a run waits or runs in can be cancelled (0.436021ms)
2026-10-18T10:54:50.4474739Z ✔ a finished run is re-run from its latest attempt only (0.347391ms)
2026-10-18T10:54:50.4474788Z ✔ a run being cancelled shows Force cancel (0.219851ms)
2026-10-18T10:54:50.4474855Z ✔ neither without Write, nor for a run whose workflow file could not be used (0.22954ms)
2026-10-18T10:54:50.5072560Z ✔ columns go by the longest path of needs (3.922757ms)
2026-10-18T10:54:50.5076232Z ✔ a need of a job not in the run is left out (0.509911ms)
2026-10-18T10:54:50.5081251Z ✔ a cycle cannot loop the layout (2.203114ms)
2026-10-18T10:54:50.5086033Z ✔ ordering a column by its needs takes out a crossing (3.326887ms)
2026-10-18T10:54:50.5091239Z ✔ ordering keeps the order as listed when nothing crosses (0.426561ms)
2026-10-18T10:54:50.5110699Z ✔ a matrix's jobs are one node, named without their combination (0.623561ms)
2026-10-18T10:54:50.5110831Z ✔ an expanded matrix is taller, and its connectors still meet its first line (0.693832ms)
2026-10-18T10:54:50.5110916Z ✔ a matrix's calls share the caller's box, each call's jobs named by its combination (0.844902ms)
2026-10-18T10:54:50.5110993Z ✔ a called workflow's jobs sit in a box under the job calling it (1.018422ms)
2026-10-18T10:54:50.5117187Z ✔ a connector's colour follows the run: red from a failure, moving into a running job (0.630542ms)
2026-10-18T10:54:50.5120703Z ✔ a deployment's address makes its node taller (0.30557ms)
2026-10-18T10:54:50.5124383Z ✔ several jobs stand together as running, then as the worst ending (0.268141ms)
2026-10-18T10:54:50.5132925Z ✔ connectors run straight on one row, and turn with rounded corners between rows (1.722003ms)
2026-10-18T10:54:50.5134798Z ✔ an empty run lays out as nothing (0.253041ms)
2026-10-18T10:54:50.5153170Z ✔ a matrix whose jobs deploy to one address shows it once (0.533581ms)
2026-10-18T10:54:50.7442845Z ✔ g1t cloud is the running sandbox runs not handed to the workspace's runners, and the jobs in g1t's sandboxes (18.136445ms)
2026-10-18T10:54:50.7480498Z ✔ a service that does not answer leaves only its part out (0.899512ms)
2026-10-18T10:54:50.7480621Z ✔ a full list says there may be more (0.375921ms)
2026-10-18T10:54:50.7480755Z ✔ this month's time adds agent sandbox and sandbox time for g1t cloud, and self-hosted time for the workspace's own (0.961312ms)
2026-10-18T10:54:50.7480846Z ✔ prices are each machine's rate a minute, from the catalogue (0.721272ms)
2026-10-18T10:54:50.7480931Z ✔ machine time and prices read as people say them (0.573581ms)
2026-10-18T10:54:50.9829228Z ✔ quoted runs stay whole (3.649337ms)
2026-10-18T10:54:50.9844955Z ✔ a qualifier is read, quotes and all (0.945312ms)
2026-10-18T10:54:50.9847181Z ✔ a filter replaces its qualifier and keeps the rest (0.947602ms)
2026-10-18T10:54:50.9851952Z ✔ is: values of one family replace each other (1.109722ms)
2026-10-18T10:54:50.9863464Z ✔ addresses carry the query, the tab and the page (0.751061ms)
2026-10-18T10:54:50.9869481Z ✔ counts stop at the cap (0.405001ms)
2026-10-18T10:54:51.2392155Z ✔ the state parameter falls back to open (2.054934ms)
2026-10-18T10:54:51.2402675Z ✔ ids say which tab and which role an alert takes (0.434041ms)
2026-10-18T10:54:51.2412094Z ✔ alerts are counted by state (1.837504ms)
2026-10-18T10:54:51.2439362Z ✔ likely test values are listed apart from real secrets (0.478891ms)
2026-10-18T10:54:51.2439516Z ✔ packages group their alerts and take the worst severity (0.877732ms)
2026-10-18T10:54:51.2440353Z ✔ versions compare number by number (0.31627ms)
2026-10-18T10:54:51.2440377Z ✔ the newest security update wins (2.250205ms)
2026-10-18T10:54:51.2440452Z ✔ a secret's activity starts with when it was found (11.129521ms)
2026-10-18T10:54:51.2442603Z ✔ an older decision without a row is shown from the alert itself (0.637492ms)
2026-10-18T10:54:51.2450642Z ✔ a dependency's activity links its pull request and work item (1.165822ms)
2026-10-18T10:54:51.4267525Z ✔ every feature is one row with a status word and one thing to do (3.581097ms)
2026-10-18T10:54:51.5794606Z ✔ what is on reads as enabled, with a link to it (0.512731ms)
2026-10-18T10:54:51.5794776Z ✔ someone who cannot change settings sees the rows without the switches (0.785071ms)
2026-10-18T10:54:51.5794882Z ✔ the policy template says how to report and names the private form when it is on (0.550891ms)
2026-10-18T10:54:51.6675865Z ✔ secret filters are read from the address and narrow the list (3.564766ms)
2026-10-18T10:54:51.6693195Z ✔ secret types are listed once each, custom patterns by name (14.448538ms)
2026-10-18T10:54:51.6693295Z ✔ code filters and counts (1.164092ms)
2026-10-18T10:54:51.6704668Z ✔ old Security links go to the sections that replaced their tabs (0.590511ms)
2026-10-18T10:54:51.6706447Z ✔ the starter workflow scans each language it finds, then uploads SARIF for the right ref (1.354242ms)
2026-10-18T10:54:51.6711190Z ✔ a trend is scaled to its tallest day (0.35239ms)
2026-10-18T10:54:51.8757593Z ✔ a session card's state reads as what is happening (3.685097ms)
2026-10-18T10:54:51.8770221Z ✔ every state has a chip, whatever its case; an unknown one is quiet (0.569981ms)
2026-10-18T10:54:52.0920802Z ✔ a tool call says its tool once (3.814017ms)
2026-10-18T10:54:52.0980616Z ✔ an MCP tool reads by its server, resource and action (0.957242ms)
2026-10-18T10:54:52.0980775Z ✔ the tool comes from the text when the entry has none (0.717381ms)
2026-10-18T10:54:52.0980850Z ✔ tool calls between messages run together, results under their calls (0.969821ms)
2026-10-18T10:54:52.1002736Z ✔ a prompt's work item and comment blocks read as quotes (1.031742ms)
2026-10-18T10:54:52.4014593Z ✔ every kind of session opens where it is shown (2.058264ms)
2026-10-18T10:54:52.4035393Z ✔ a session is named by its title, its subagent task, its pull request, never nothing (3.210456ms)
2026-10-18T10:54:52.4048580Z ✔ Sessions keeps its filters in the address and drops what it does not know (2.040564ms)
2026-10-18T10:54:52.4054312Z ✔ Sessions can be a work item's own: ?item=12 (0.581022ms)
2026-10-18T10:54:52.4063662Z ✔ live sessions come apart from those that ended, most recently heard from first (14.940558ms)
2026-10-18T10:54:52.4072781Z ✔ a session's cost reads as an estimate at list price, and says when some usage is priced as unknown (9.902909ms)
2026-10-18T10:54:52.6061784Z ✔ full overrides remain visible on both scopes (2.121524ms)
2026-10-18T10:54:52.8560918Z ✔ environment-restricted project keys still suppress workspace fallback (0.527531ms)
2026-10-18T10:54:52.8561015Z ✔ only shared readers are overridden (0.457611ms)
2026-10-18T10:54:52.8561111Z ✔ different names, kinds and readers do not override (0.496931ms)
2026-10-18T10:54:52.8561193Z ✔ a Mac shows the Command key, everything else Ctrl (2.166684ms)
2026-10-18T10:54:53.0977868Z ✔ weeks of seven days end with the last day, and the quarter starts on its first month (4.242458ms)
2026-10-18T10:54:53.0983141Z ✔ batches add up per repository, and quiet weeks stay in the line (13.344586ms)
2026-10-18T10:54:53.0987468Z ✔ usage by day falls into its week (0.939742ms)
2026-10-18T10:54:53.0990518Z ✔ the pulse says each figure against last week, and whether that is good news (19.077296ms)
2026-10-18T10:54:53.1003378Z ✔ the change holding up the most work items leads, with what it holds up (0.985912ms)
2026-10-18T10:54:53.1003563Z ✔ a quick draft waiting long for review is said with both times; a slowdown alone is said against the weeks before (1.843233ms)
2026-10-18T10:54:53.1006592Z ✔ spend that concentrates in one milestone is a finding; spread-out spend is not (1.329872ms)
2026-10-18T10:54:53.1010223Z ✔ a milestone closed this week says when against its due date, and what it took (0.883292ms)
2026-10-18T10:54:53.1015822Z ✔ stalled changes and rework are findings only when they moved (1.060332ms)
2026-10-18T10:54:53.1018173Z ✔ who works where: new ground, one person carrying a project, and a first agent merge (1.849364ms)
2026-10-18T10:54:53.1026712Z ✔ findings come highest first, and a quiet week still says something (0.528451ms)
2026-10-18T10:54:53.1029494Z ✔ waits are said in words and in a few characters (0.315851ms)
2026-10-18T10:54:53.1033637Z ✔ the spend flow threads each pull request through its milestone, work item and project (1.504353ms)
2026-10-18T10:54:53.1045869Z ✔ the rhythm adds each group's days and leaves out groups with nothing (0.486651ms)
2026-10-18T10:54:53.1046782Z ✔ quarter spend adds each pull request's share of its sessions to g1t's usage (0.26899ms)
2026-10-18T10:54:53.1050715Z ✔ a harness catching on: two or more people started this month, two weeks or more after the first (0.742691ms)
2026-10-18T10:54:53.1057411Z ✔ agents' direct commits count as what they landed, and as what spend is spread over (0.819122ms)
2026-10-18T10:54:53.3462699Z ✔ only the site's live sockets take a ticket, in the form the routes match (3.506766ms)
2026-10-18T10:54:53.3949169Z ✔ a ticket opens the socket it was made for, as the token's owner (60.443065ms)
2026-10-18T10:54:53.4019226Z ✔ a ticket past its minute opens nothing (4.591429ms)
2026-10-18T10:54:53.4044157Z ✔ a ticket opens no other socket: another kind, or another workspace's (6.744903ms)
2026-10-18T10:54:53.4138019Z ✔ a ticket changed in any way, or sealed with another key, opens nothing (9.348648ms)
2026-10-18T10:54:53.4186124Z ✔ the token is checked again when the socket opens: deleted, revoked or without the website permission, it opens nothing (4.600118ms)
2026-10-18T10:54:53.4291397Z ✔ a ticket is never taken by anything but a socket's upgrade (6.555952ms)
2026-10-18T10:54:53.4418952Z ✔ a session's page opens its sockets at once and adds no ticket; a token's page asks for one first (16.05795ms)
2026-10-18T10:54:53.4470870Z ✔ a ticket for a chat-scoped token opens Chat's socket and the feed, checked again as it opens (5.15594ms)
2026-10-18T10:54:53.6959530Z ✔ every cue in both sets is short, starts and ends in silence, and never clips (54.666424ms)
2026-10-18T10:54:53.8368311Z ✔ the cues are told apart: different figures, and Bright is higher and shorter than Soft (0.600041ms)
2026-10-18T10:54:53.8368435Z ✔ the envelope rises from nothing, falls, and lands on exactly nothing (0.31958ms)
2026-10-18T10:54:53.8368497Z ✔ volume is a curve: half way reads as half as loud, not a third (0.28624ms)
2026-10-18T10:54:53.8779432Z ✔ only a workspace's SAML address is answered before React Router (2.388325ms)
2026-10-18T10:54:53.8794580Z ✔ afterwards it goes on to the workspace, never off the site (0.618311ms)
2026-10-18T10:54:53.8853977Z ✔ why a SAML sign-in failed survives the trip in a cookie (0.578451ms)
2026-10-18T10:54:53.8854166Z ✔ a workspace's provider is pointed at its id, which a rename never changes (1.559613ms)
2026-10-18T10:54:53.8854253Z ✔ the SAML binding cookie crosses sites to /auth/sso alone (0.523981ms)
2026-10-18T10:54:54.0435137Z ✔ a client navigation that hits an older build reloads the page (2.411825ms)
2026-10-18T10:54:54.0491080Z ✔ an address only the new build knows reloads, once it fell to the catch-all (0.443121ms)
2026-10-18T10:54:54.0509640Z ✔ a document load, or any other error, shows the error page (0.634732ms)
2026-10-18T10:54:54.0510126Z ✔ the location a tab's document loaded at is no client navigation, whatever its key (0.399221ms)
2026-10-18T10:54:54.0511692Z ✔ an address loaded again once is not loaded again (0.491431ms)
2026-10-18T10:54:54.2260090Z ✔ each stack is found by what is at the root (2.306685ms)
2026-10-18T10:54:54.2278784Z ✔ a Node project's workflow runs the scripts it has (1.552113ms)
2026-10-18T10:54:54.2331400Z ✔ an unreadable package.json runs the usual scripts only if present (0.551921ms)
2026-10-18T10:54:54.2331950Z ✔ Rust, Go and an unknown project each get a workflow (0.809472ms)
2026-10-18T10:54:54.2332265Z ✔ the workflow is well-formed: one job per stack, steps under each (1.007402ms)
2026-10-18T10:54:54.2332539Z ✔ a branch name is found that is free (0.305411ms)
2026-10-18T10:54:54.3928987Z ✔ the status page lives on its own host (1.128452ms)
2026-10-18T10:54:54.3930258Z ✔ the short line is the report's title, else words for its state (0.28972ms)
2026-10-18T10:54:54.3934520Z ✔ each state has its own dot (0.257341ms)
2026-10-18T10:54:54.6759560Z ✔ organization contact is the supplied public email, without an invented postal address (2.774955ms)
2026-10-18T10:54:55.0827448Z ✔ an idle page has nothing to retry (1.734884ms)
2026-10-18T10:54:55.0827632Z ✔ a navigation still loading is retried at its full address (0.309181ms)
2026-10-18T10:54:55.0827723Z ✔ a form still being sent is never sent again (0.20827ms)
2026-10-18T10:54:55.1433118Z ✔ a profile's tabs are paths, and its overview is the profile (1.877794ms)
2026-10-18T10:54:55.1440423Z ✔ an old profile address with ?tab= goes to the tab's path, keeping its filters (1.061962ms)
2026-10-18T10:54:55.1474585Z ✔ a pull request's tabs are /session and /files (0.37451ms)
2026-10-18T10:54:55.1474738Z ✔ an old pull request address with ?tab= goes to the tab's path, keeping the rest (0.44917ms)
2026-10-18T10:54:55.1474778Z ✔ the Branches page's tabs are paths (0.4589ms)
2026-10-18T10:54:55.1474856Z ✔ rules' Insights is a path, for a repository and a workspace (0.737981ms)
2026-10-18T10:54:55.1474964Z ✔ notifications' Saved and Done are paths; the severity tabs and reasons narrow them (2.601345ms)
2026-10-18T10:54:55.3836003Z ✔ a pax record's length counts itself (2.099944ms)
2026-10-18T10:54:55.3848211Z ✔ a long path splits into ustar's prefix and name when it can (1.576013ms)
2026-10-18T10:54:55.3857163Z ✔ headers are ustar, with the commit in a pax global header (5.323221ms)
2026-10-18T10:54:55.4450593Z ✔ tar reads the archive back: files, folders, modes, a symlink and long paths (110.40231ms)
2026-10-18T10:54:55.7250711Z ✔ team pages live under the workspace's teams (1.938003ms)
2026-10-18T10:54:55.7250893Z ✔ teams are found by every word of the search (2.154344ms)
2026-10-18T10:54:55.7250928Z ✔ your teams come first (0.411861ms)
2026-10-18T10:54:55.7251030Z ✔ a team can go under any visible team but itself and those below it (0.617461ms)
2026-10-18T10:54:55.7252105Z ✔ a new team reads its form (51.928949ms)
2026-10-18T10:54:55.7253703Z ✔ settings change only what their form has (0.906992ms)
2026-10-18T10:54:55.7257900Z ✔ review assignment is read within bounds (0.762121ms)
2026-10-18T10:54:55.7264866Z ✔ counts leave out what is none (0.476011ms)
2026-10-18T10:54:55.7279286Z ✔ who may create teams follows the workspace's setting (11.111641ms)
2026-10-18T10:54:55.9030131Z ✔ the cookie keeps auto, light or dark, and anything else is the default (1.788514ms)
2026-10-18T10:54:55.9030312Z ✔ the cookie is kept a year, on every path, and secure on https (0.372791ms)
2026-10-18T10:54:55.9049915Z ✔ Light and Dark are data-theme on <html>; Auto leaves it to the system (0.300291ms)
2026-10-18T10:54:55.9062350Z ✔ a chosen theme is itself; Auto with no browser to ask is dark (0.269511ms)
2026-10-18T10:54:56.1030859Z ✔ a moment within the last week is said in minutes, hours or days (2.015304ms)
2026-10-18T10:54:56.2549248Z ✔ a moment weeks ago is said in weeks, and older ones by their date (24.608227ms)
2026-10-18T10:54:56.2549415Z ✔ a moment that can't be read says nothing (0.555891ms)
2026-10-18T10:54:56.2549447Z ✔ the hint gives the moment in full (0.685171ms)
2026-10-18T10:54:56.3168812Z ✔ a profile's local time is the time of day in its zone (23.642115ms)
2026-10-18T10:54:56.3168985Z ✔ no zone, or one the runtime does not know, shows no time (0.752992ms)
2026-10-18T10:54:56.3177935Z ✔ the zones to pick from are sorted, with UTC and a saved one always there (4.98391ms)
2026-10-18T10:54:56.3184376Z ✔ zones read as places, with their offset (1.455823ms)
2026-10-18T10:54:56.5031899Z ✔ every scope is on the checklist exactly once, admin ones under Dangerous (2.818666ms)
2026-10-18T10:54:56.5040055Z ✔ ticked boxes store the highest level of each resource (0.956112ms)
2026-10-18T10:54:56.5045515Z ✔ full access is null, and nothing ticked is refused (0.419421ms)
2026-10-18T10:54:56.5049798Z ✔ a higher level ticks the lower ones of its resource only (0.32036ms)
2026-10-18T10:54:56.5052645Z ✔ full access ticks the top level of everything (1.278242ms)
2026-10-18T10:54:56.5056760Z ✔ presets are recognised however their scopes are written (1.000712ms)
2026-10-18T10:54:56.5059572Z ✔ a token's access reads plainly (1.345593ms)
2026-10-18T10:54:56.5062574Z ✔ an application asking for nothing usable gets the default set, never admin (0.445671ms)
2026-10-18T10:54:56.5071586Z ✔ consent keeps only what was asked for (0.756792ms)
2026-10-18T10:54:56.5076885Z ✔ expiry words (0.732721ms)
2026-10-18T10:54:56.6584945Z ✔ the accent is the logo's lavender, and mint means success (1.629253ms)
2026-10-18T10:54:56.6590678Z ✔ merged reads apart from the accent (0.332651ms)
2026-10-18T10:54:56.6590973Z ✔ text colours meet WCAG AA on every surface (1.015022ms)
2026-10-18T10:54:56.6591053Z ✔ the dark base reads on an accent or success button (0.331301ms)
2026-10-18T10:54:56.6607297Z ✔ focus borders in the dim accent stand out from the page (0.25512ms)
2026-10-18T10:54:56.6620988Z ✔ the light accent is a deeper lavender, and light success is green (1.637043ms)
2026-10-18T10:54:56.6621038Z ✔ every dark token has a light one (0.776011ms)
2026-10-18T10:54:56.6621111Z ✔ light text colours meet WCAG AA on every light surface (0.512581ms)
2026-10-18T10:54:56.6621173Z ✔ the light page reads on an accent or success button (0.383871ms)
2026-10-18T10:54:56.6621232Z ✔ light focus borders in the dim accent stand out from the page (0.764032ms)
2026-10-18T10:54:56.8334794Z ✔ the first frame is Home before anything settles, the same on the server and the client (2.626725ms)
2026-10-18T10:54:56.8334950Z ✔ the scenes come in the story's order: Home first (3.956717ms)
2026-10-18T10:54:56.8342181Z ✔ checks pass before review, and the queue merges only after approval (0.207651ms)
2026-10-18T10:54:56.8351538Z ✔ Home's #431 opens the pull request, and the cursor stays out of its way until it has merged (0.278931ms)
2026-10-18T10:54:56.8360876Z ✔ the session plays back in full before the tour moves on to Chat (0.37467ms)
2026-10-18T10:54:56.8371151Z ✔ the loop wraps (0.39052ms)
2026-10-18T10:54:56.8382114Z ✔ pills start where their scene does, and progress runs 0 to 1 (0.405761ms)
2026-10-18T10:54:56.8407389Z ✔ each still shows its step's point (0.224791ms)
2026-10-18T10:54:56.8409365Z ✔ Dana tells support only after Priya says it shipped (0.514321ms)
2026-10-18T10:54:56.8410842Z ✔ on Home, notifications settle and leave before Summarize, and the summary finishes before #431 is opened (0.697402ms)
2026-10-18T10:54:56.9984878Z ✔ Turnstile is on only with both its site key and its secret (2.183134ms)
2026-10-18T10:54:56.9993575Z ✔ only Cloudflare's success counts as a pass (0.33841ms)
2026-10-18T10:54:57.0001414Z ✔ the page's policy lets the widget's script and frame load, and nothing else framed (0.637412ms)
2026-10-18T10:54:57.4053830Z ✔ periods resolve to whole UTC days, both ends included (4.349698ms)
2026-10-18T10:54:57.4053990Z ✔ columns cover every day, stack products, and add up when cumulative (32.390872ms)
2026-10-18T10:54:57.4054081Z ✔ the money axis has clean ticks, never the same label twice (1.923864ms)
2026-10-18T10:54:57.4054118Z ✔ quantities read in their units (8.449056ms)
2026-10-18T10:54:57.4054200Z ✔ the receipt shows usage at price, then what paid, then what is charged (0.869111ms)
2026-10-18T10:54:57.4054283Z ✔ grouping by project adds a project's meters together (0.820292ms)
2026-10-18T10:54:57.4054361Z ✔ the CSV has a row per day and meter with anything on it (1.025352ms)
2026-10-18T10:54:57.4054394Z ✔ test-mode hints are for g1t's own people (0.4276ms)
2026-10-18T10:54:57.4054516Z ✔ the pending note says what the close will charge, with the fraction of a cent that explains a gap (1.607833ms)
2026-10-18T10:54:57.4054631Z ✔ products no longer offered still read in older usage (0.560531ms)
2026-10-18T10:54:57.4706842Z ✔ a raw file's path keeps a ref with slashes in one segment (2.960096ms)
2026-10-18T10:54:57.4711349Z ✔ paths that are not a file, or climb out of the repository, are refused (0.368931ms)
2026-10-18T10:54:57.4725260Z ✔ usercontent is its own host, or a path on the site (0.535991ms)
2026-10-18T10:54:57.5282479Z ✔ a token is good for its file alone, until it ends (22.576103ms)
2026-10-18T10:54:57.5287579Z ✔ files are served as data that cannot run (47.13039ms)
2026-10-18T10:54:57.5297798Z ✔ a README's relative pictures are the repository's files at the same commit (0.981212ms)
2026-10-18T10:54:57.5299968Z ✔ commits are full hashes (0.330681ms)
2026-10-18T10:54:57.8830866Z ✔ a token with the website permission signs the request in as its owner (65.405335ms)
2026-10-18T10:54:57.8835536Z ✔ a token without the website permission is no one: a page loads signed out, data and posts get a 401 (6.573293ms)
2026-10-18T10:54:57.8840128Z ✔ a revoked, expired or made-up token is refused, and nothing else is tried (0.660851ms)
2026-10-18T10:54:57.8843833Z ✔ tokens are read from the Authorization header only, never a query string or a cookie (1.188173ms)
2026-10-18T10:54:57.8854399Z ✔ what needs a real sign-in is refused with a token, whatever the method (2.808025ms)
2026-10-18T10:54:57.8858783Z ✔ deleting or giving away a workspace and payment methods are refused; other changes there are not (20.765719ms)
2026-10-18T10:54:57.8865077Z ✔ only a person's own token with the permission is a website user (0.626031ms)
2026-10-18T10:54:57.8872247Z ✔ cross-site form posts are refused for a session cookie and a token alike (0.954191ms)
2026-10-18T10:54:57.8878716Z ✔ a token with chat:read reads Chat's JSON without the website permission, and sends nothing (5.50969ms)
2026-10-18T10:54:57.8887581Z ✔ a token with chat:write sends to Chat's JSON, and reads it too (1.145913ms)
2026-10-18T10:54:57.8887851Z ✔ a token without a chat scope, or not a person's own, reaches none of Chat (1.846633ms)
2026-10-18T10:54:57.8890342Z ✔ a chat-scoped token opens nothing else on the site: pages are signed out, data and posts are a 401 (4.476439ms)
2026-10-18T10:54:57.8894869Z ✔ push registration and notification settings take the notifications scopes (1.049752ms)
2026-10-18T10:54:57.8897209Z ✔ full access, legacy or not, reaches Chat only with the website permission; the website permission keeps opening everything (1.345713ms)
2026-10-18T10:54:57.8903251Z ✔ a chat-scoped token opens Chat's socket and the feed, never an artifact's (0.375361ms)
2026-10-18T10:54:58.1081225Z ✔ the Work list's filters come from its address (5.089879ms)
2026-10-18T10:54:58.1090724Z ✔ the filters go back into the address in one order, leaving out what is unset (0.975582ms)
2026-10-18T10:54:58.1096674Z ✔ how many filters are on, for the phone's Filters button (1.061532ms)
2026-10-18T10:54:58.1107420Z ✔ a repository's Work tab, and a new work item filed from it (4.336788ms)
2026-10-18T10:54:58.1110354Z ✔ an item's repositories fit a phone: two, then how many more (0.869401ms)
2026-10-18T10:54:58.1111255Z ✔ old addresses of a repository's issues, labels, milestones and Work page lead on (1.356422ms)
2026-10-18T10:54:58.1118694Z ✔ an empty Work list names the repository it is filtered to, when that is all it is filtered by (0.533991ms)
2026-10-18T10:54:58.2837878Z ✔ only a removed file is archived, not a disabled, invalid or branch-only workflow (3.034006ms)
2026-10-18T10:54:58.4210078Z ✔ an archive-only repository keeps its workflow history available (0.36421ms)
2026-10-18T10:54:58.4785539Z ✔ the chosen workspace holds while you are a member, else the first (1.479133ms)
2026-10-18T10:54:58.4788984Z ✔ a project in one of your workspaces is about that workspace (0.296651ms)
2026-10-18T10:54:58.4798032Z ✔ a project somewhere you do not belong leaves the chosen workspace (0.21744ms)
2026-10-18T10:54:58.4817546Z ✔ a workspace's own pages are about that workspace (0.234311ms)
2026-10-18T10:54:58.4817685Z ✔ the cookie reads back what was remembered (0.510991ms)
2026-10-18T10:54:58.4817789Z ✔ a deleted workspace you had chosen gives way to another, or to none (0.322961ms)
2026-10-18T10:54:58.6380603Z ✔ what goes lists only what the workspace holds (2.822216ms)
2026-10-18T10:54:58.6392016Z ✔ only billing or protection stands in the way (0.334411ms)
2026-10-18T10:54:58.6398651Z ✔ the slug confirms in any case, and nothing else does (0.3649ms)
2026-10-18T10:54:58.8147334Z ✔ someone with no workspace is sent to make one or answer an invitation, never to Mission control (2.355635ms)
2026-10-18T10:54:58.8149337Z ✔ the pages someone without a workspace needs stay open (0.482301ms)
2026-10-18T10:54:58.8173091Z ✔ nobody else is gated: a member, an unconfirmed account, a repository collaborator, someone held by a policy, a visitor (0.463071ms)
2026-10-18T10:54:59.0058472Z ✔ workspace averages weight samples rather than averaging project averages (2.134444ms)
2026-10-18T10:54:59.0079135Z ✔ costs combine meters and products without conflating project keys (1.526453ms)
2026-10-18T10:54:59.0113979Z ✔ a project's usage is its repository's, not its slug's (0.28803ms)
2026-10-18T10:54:59.0114520Z ✔ missing duration is distinct from a fast change (0.44377ms)
2026-10-18T10:54:59.0138303Z ✔ daily series combines batches and retains quiet days across month boundaries (1.162102ms)
2026-10-18T10:54:59.2824857Z ✔ a path is one of the workspace's pages, or none (2.491395ms)
2026-10-18T10:54:59.2830540Z ✔ old addresses go to where their pages are now (0.900392ms)
2026-10-18T10:54:59.2837472Z ✔ ?tab= opens that page, keeping the rest of the query (0.481251ms)
2026-10-18T10:54:59.2842642Z ✔ a click's data request is for the same page as a full load (0.385821ms)
2026-10-18T10:54:59.4236977Z ✔ an alias or old name leads to the same page under the workspace (0.485561ms)
2026-10-18T10:54:59.4237103Z ✔ a click's data request for an alias leads to the page, not its data (0.26598ms)
2026-10-18T10:54:59.4237134Z ✔ the rail's mode follows the address (1.087262ms)
2026-10-18T10:54:59.4237211Z ✔ Workspace mode's sidebar knows which group and page an address is (2.295764ms)
2026-10-18T10:54:59.4237299Z ✔ a member without Code access is sent around Code's pages (0.671212ms)
2026-10-18T10:54:59.4237353Z ✔ Work is a mode of its own, after Home (0.634291ms)
2026-10-18T10:54:59.4237432Z ✔ g1t beyond your workspaces is browsed, and whose it is (1.255473ms)
2026-10-18T10:54:59.4436719Z ✔ a thread's link is its conversation with ?thread= (1.380183ms)
2026-10-18T10:54:59.6501310Z ✔ crc32 matches the standard check value (1.713114ms)
2026-10-18T10:54:59.6667974Z ✔ a zip holds each file, deflated or stored, and reads back (67.339669ms)
2026-10-18T10:54:59.6713018Z ✔ each file keeps its Unix mode: executables and symlinks (7.266804ms)
2026-10-18T10:54:59.6908289Z ℹ tests 1085
2026-10-18T10:54:59.6908380Z ℹ suites 2
2026-10-18T10:54:59.6908856Z ℹ pass 1085
2026-10-18T10:54:59.6909375Z ℹ fail 0
2026-10-18T10:54:59.6909560Z ℹ cancelled 0
2026-10-18T10:54:59.6909750Z ℹ skipped 0
2026-10-18T10:54:59.6909914Z ℹ todo 0
2026-10-18T10:54:59.6910077Z ℹ duration_ms 38052.180019
2026-10-18T10:54:59.7153114Z 
2026-10-18T10:54:59.7153453Z > @g1t/artifacts@0.1.0 test
2026-10-18T10:54:59.7154012Z > node --test "src/**/*.test.ts"
2026-10-18T10:54:59.7154206Z 
2026-10-18T10:55:00.0077501Z ✔ workspace spaces give every member their base role (2.130994ms)
2026-10-18T10:55:00.0091054Z ✔ team spaces give the team's members their base role, and nobody else anything (0.461071ms)
2026-10-18T10:55:00.0100436Z ✔ a listing raises a role but never lowers it (0.431951ms)
2026-10-18T10:55:00.0102113Z ✔ a team listed on a space reaches its members (0.24545ms)
2026-10-18T10:55:00.0106121Z ✔ owners manage workspace and team spaces, but a private space is its members' alone (0.400111ms)
2026-10-18T10:55:00.0108395Z ✔ a space is readable by the whole workspace only when it is open with a base role (0.244331ms)
2026-10-18T10:55:00.0111555Z ✔ roles order view < comment < edit < manage (1.889444ms)
2026-10-18T10:55:00.0112980Z ✔ a private space keeps someone who can manage it (0.27446ms)
2026-10-18T10:55:00.2659822Z ✔ passages follow headings, with the heading path (4.851269ms)
2026-10-18T10:55:00.2684067Z ✔ long sections split on paragraphs, never past the most (2.588775ms)
2026-10-18T10:55:00.2684172Z ✔ one huge paragraph is cut at sentences (0.534351ms)
2026-10-18T10:55:00.2684276Z ✔ tiny sections join the next, naming its heading (0.495101ms)
2026-10-18T10:55:00.2684357Z ✔ a tiny last section joins the one before (0.442211ms)
2026-10-18T10:55:00.2684437Z ✔ headings inside code fences are code, and fences stay whole (0.508461ms)
2026-10-18T10:55:00.2684519Z ✔ a file's front matter and leading title are not passages (0.311911ms)
2026-10-18T10:55:00.2694742Z ✔ empty documents have no passages; huge ones stop at the most (3.913727ms)
2026-10-18T10:55:00.2698667Z ✔ what is embedded leads with the title and heading (0.443671ms)
2026-10-18T10:55:00.2700322Z ✔ hashes and ids are stable and short (0.679412ms)
2026-10-18T10:55:00.4787737Z ✔ paths are kept tidy, and unsafe ones refused (2.618575ms)
2026-10-18T10:55:00.6393192Z ✔ a citation names a repository and a path; a label only for what it names (2.460374ms)
2026-10-18T10:55:00.6393374Z ✔ a change touches a cited file, anything under a cited folder, and what a glob matches (1.606233ms)
2026-10-18T10:55:00.6393468Z ✔ a citation links to the code at the commit it was cited at (0.777021ms)
2026-10-18T10:55:00.6393551Z ✔ links to code in a page are citations too, a chip's own link once (2.493544ms)
2026-10-18T10:55:00.6393640Z ✔ the header's Describes list is tidy and short (1.294462ms)
2026-10-18T10:55:00.6574368Z ✔ a line diff keeps what stayed and marks what changed (3.332127ms)
2026-10-18T10:55:00.6610934Z ✔ from nothing, everything is added (0.563331ms)
2026-10-18T10:55:01.0643413Z ✔ a section runs to the next heading of its level or higher, subsections included (40.732408ms)
2026-10-18T10:55:01.0660489Z ✔ replacing a section changes only that section (9.354268ms)
2026-10-18T10:55:01.0676312Z ✔ blocks targets use the ids agents read from the outline (5.763751ms)
2026-10-18T10:55:01.0696312Z ✔ append adds at the end; document replaces everything (3.347227ms)
2026-10-18T10:55:01.0725144Z ✔ an edit made on the server merges with a person typing at the same time (32.299522ms)
2026-10-18T10:55:01.0740336Z ✔ restoring a version brings back its blocks as a new change (4.91642ms)
2026-10-18T10:55:01.0740493Z ✔ a comment anchors to the text between two positions, across blocks (7.447404ms)
2026-10-18T10:55:01.0740589Z ✔ range ids list the blocks a suggestion covers (1.941023ms)
2026-10-18T10:55:01.4837982Z embedding usage of workspaces not looked up yet waits 1
2026-10-18T10:55:01.6207490Z embedding usage of workspaces not looked up yet waits 1
2026-10-18T10:55:01.6207590Z embedding usage of workspaces not looked up yet waits 1
2026-10-18T10:55:01.6208159Z could not tell which workspaces are free; keeping what billing last said Error: billing answered 503
2026-10-18T10:55:01.6208254Z embedding budget of a free workspace used for the month w1
2026-10-18T10:55:01.6208331Z docs embedding cap reached w1 1 passages wait for the next hour
2026-10-18T10:55:01.6208445Z ✔ each workspace's month of tokens goes to billing as context, once per change, and only this month's (31.084969ms)
2026-10-18T10:55:01.6208551Z ✔ a month's last tokens go as that month's once it is over, then the new month's on their own (39.350745ms)
2026-10-18T10:55:01.6208641Z ✔ billing down: nothing is marked reported, and the plan it last said holds (20.688619ms)
2026-10-18T10:55:01.6208754Z ✔ a free workspace past its month's budget embeds nothing more; its passages are kept for words (26.2967ms)
2026-10-18T10:55:01.6208791Z ✔ cost and detail (0.644822ms)
2026-10-18T10:55:01.9015074Z ✔ puts, gets and deletes a file by its key, path style, signed (91.930085ms)
2026-10-18T10:55:01.9101738Z ✔ a missing file is null (5.888992ms)
2026-10-18T10:55:01.9201538Z ✔ virtual-hosted addresses put the bucket in the host (7.198124ms)
2026-10-18T10:55:01.9201685Z ✔ the store follows the settings, and says what is missing (1.598263ms)
2026-10-18T10:55:02.1453361Z ✔ private: only the owner, and not the workspace owner (3.369106ms)
2026-10-18T10:55:02.1487565Z ✔ an open space gives every member its base role; owners manage (0.773462ms)
2026-10-18T10:55:02.1491771Z ✔ a team space: its team gets the base role; others nothing; workspace owners manage (0.680821ms)
2026-10-18T10:55:02.1503266Z ✔ a members-only space: only its members, never the workspace owner (0.551792ms)
2026-10-18T10:55:02.1503327Z ✔ grants to a person, an agent and a team (0.533301ms)
2026-10-18T10:55:02.1503409Z ✔ a grant raises a space role but never lowers it (0.396541ms)
2026-10-18T10:55:02.1503487Z ✔ general access: workspace gives every member its role, never manage (0.418231ms)
2026-10-18T10:55:02.1503548Z ✔ general access: link gives its role only to people who opened it (0.32493ms)
2026-10-18T10:55:02.1507880Z ✔ nested docs inherit their parent's grants, space and general access (2.111764ms)
2026-10-18T10:55:02.1510929Z ✔ a parent's owner keeps full access to what others add under it (4.421808ms)
2026-10-18T10:55:02.1516705Z ✔ restricting stops the space, the parent's grants and general access (0.862472ms)
2026-10-18T10:55:02.1523157Z ✔ the access root and path of a new folio (0.423521ms)
2026-10-18T10:55:02.1526818Z ✔ materialize writes the owner, ancestor owners and grants up to the access root, highest role each (0.949592ms)
2026-10-18T10:55:02.1531753Z ✔ the index scope is the space's only when access is exactly the space's (0.717651ms)
2026-10-18T10:55:02.1549744Z ✔ readable by the whole workspace: open spaces and workspace general access only (0.594671ms)
2026-10-18T10:55:02.1549814Z ✔ who may share (0.528001ms)
2026-10-18T10:55:02.3969124Z ✔ a page carries the saved document as base64, and none when there is none or it is too large (28.393014ms)
2026-10-18T10:55:02.3978214Z ✔ titles, icons, covers and sources are cleaned (1.322833ms)
2026-10-18T10:55:02.4005600Z ✔ the cursor goes there and back, and nonsense is no cursor (0.667851ms)
2026-10-18T10:55:02.4006370Z ✔ a tree puts a row under its parent only when the parent is shown (0.966871ms)
2026-10-18T10:55:02.4007607Z ✔ shared tops leave out children of what is shown and anything shown elsewhere (0.630031ms)
2026-10-18T10:55:02.4008809Z ✔ depth and height come from paths (0.324981ms)
2026-10-18T10:55:02.9551430Z ✔ a cold room never holds up page state; its snapshot is saved in the background (3.410196ms)
2026-10-18T10:55:02.9554001Z ✔ saved state and trashed documents never wake the live room (0.657521ms)
2026-10-18T10:55:03.2061100Z ✔ a person's first request for a folio goes (18.582205ms)
2026-10-18T10:55:03.2126821Z ✔ asking again within a day is refused, for that folio only (17.863694ms)
2026-10-18T10:55:03.2129951Z ✔ a day later they may ask again, and the day starts over (20.391349ms)
2026-10-18T10:55:03.2132346Z ✔ a refused press doesn't push the next allowed time back (17.509253ms)
2026-10-18T10:55:03.4438108Z ✔ every folio RPC method in the contract is answered, and nothing else (3.860877ms)
2026-10-18T10:55:03.4438582Z ✔ Docs' own methods fall through to the legacy switch (0.35416ms)
2026-10-18T10:55:03.8922588Z ✔ erasing folios takes their rows and search rows, deepest first, and leaves the rest (20.63143ms)
2026-10-18T10:55:03.8956759Z ✔ a child still alive under an erased folio goes to the top of where it was (18.312354ms)
2026-10-18T10:55:03.8956869Z ✔ erasing nothing does nothing (18.789425ms)
2026-10-18T10:55:03.8957942Z ✔ deleting a space trashes what is in it together, frees its address and keeps its row marked (23.321184ms)
2026-10-18T10:55:03.8975555Z ✔ a deleted General is still the workspace's default row, so it is never made again (20.308058ms)
2026-10-18T10:55:03.8975757Z ✔ a folio restored from a deleted space lands in General when it is live and the restorer may add to it (0.873051ms)
2026-10-18T10:55:04.3478450Z docs embedding cap reached w1 2 passages wait for the next hour
2026-10-18T10:55:04.3697562Z docs could not embed passages; the next save tries again pag_1 Error: model down
2026-10-18T10:55:04.4110539Z ✔ a page's passages are stored, embedded once, and only changed ones again (30.030308ms)
2026-10-18T10:55:04.4110735Z ✔ a passage that only moved keeps its vector; gone passages leave the index (26.21859ms)
2026-10-18T10:55:04.4114332Z ✔ moving a page to another space files its vectors there without embedding (21.762822ms)
2026-10-18T10:55:04.4135014Z ✔ embedding stops at the hourly cap and the rest waits, kept for words (22.765124ms)
2026-10-18T10:55:04.4135129Z ✔ an embedding failure leaves passages for the next save, never throws (19.807318ms)
2026-10-18T10:55:04.4138039Z ✔ without an embedder, passages are kept for words only (15.59748ms)
2026-10-18T10:55:04.4140417Z ✔ a project's docs file is indexed with its repository (17.641484ms)
2026-10-18T10:55:04.7868638Z ✔ the registry has the doc kind and nothing not built yet (3.994288ms)
2026-10-18T10:55:04.9433009Z ✔ a doc seeds from Markdown and renders it back, with its card (42.0489ms)
2026-10-18T10:55:04.9433154Z ✔ an agent's edit applies to its target, and a missing one doesn't (10.81194ms)
2026-10-18T10:55:04.9433242Z ✔ a doc restores from an old state and from old text (7.565024ms)
2026-10-18T10:55:04.9433278Z ✔ links to other folios and preview lines (0.480721ms)
2026-10-18T10:55:05.1323175Z ✔ Markdown survives a trip through the document (42.673212ms)
2026-10-18T10:55:05.1378777Z ✔ the document has BlockNote's shape: a group of containers with ids (1.895354ms)
2026-10-18T10:55:05.1379007Z ✔ marks are stored as y-prosemirror stores them (3.153876ms)
2026-10-18T10:55:05.1379056Z ✔ nested list items become children (0.720592ms)
2026-10-18T10:55:05.1379108Z ✔ snake_case and URLs are not italicized (0.424431ms)
2026-10-18T10:55:05.1379183Z ✔ the outline names each top-level block for agents (1.716543ms)
2026-10-18T10:55:05.1380202Z ✔ mentions are found by id; search text drops markup (3.218966ms)
2026-10-18T10:55:05.1443973Z ✔ a citation chip is a link to the code, and is found as a citation (3.003306ms)
2026-10-18T10:55:05.3673317Z ✔ the cap comes from its var, 1 GB unless set, and 0 is none (2.128684ms)
2026-10-18T10:55:05.3684816Z ✔ a free workspace's upload past the cap is refused, and says how to make room (0.864721ms)
2026-10-18T10:55:05.5670916Z ✔ the index is filtered by the allowed spaces, or by workspace and after when there are too many (3.803968ms)
2026-10-18T10:55:05.5724481Z ✔ hybrid search fuses ranks: found both ways first (0.724291ms)
2026-10-18T10:55:05.5724758Z ✔ query embeddings are kept a minute (1.011052ms)
2026-10-18T10:55:05.7668628Z ✔ a project's docs are Markdown under docs/ and the README at the root (12.891435ms)
2026-10-18T10:55:05.7682999Z ✔ a file's title is its front matter's, its first heading, or its name (1.261592ms)
2026-10-18T10:55:05.9549704Z ✔ queries are quoted word by word, the last a prefix (2.915125ms)
2026-10-18T10:55:06.0934868Z ✔ a search looks only in spaces the reader can read (1.646683ms)
2026-10-18T10:55:06.0940853Z ✔ a project filter matches the page's projects or its space's (4.048238ms)
2026-10-18T10:55:06.1831999Z ✔ signs AWS's get-vanilla test vector (24.100226ms)
2026-10-18T10:55:06.1894397Z ✔ signs the S3 GET Object example (5.748581ms)
2026-10-18T10:55:06.1931151Z ✔ hashes and encodes as SigV4 wants (3.904777ms)
2026-10-18T10:55:06.1990241Z ✔ puts the query in order (5.666711ms)
2026-10-18T10:55:06.4147068Z ✔ page slugs carry the id, so renames keep links working (3.335007ms)
2026-10-18T10:55:06.4151930Z ✔ slugify drops accents and punctuation (0.664151ms)
2026-10-18T10:55:06.4164008Z ✔ space slugs avoid taken and reserved names (0.865252ms)
2026-10-18T10:55:06.4209952Z ✔ links to pages are found by their ids (1.858084ms)
2026-10-18T10:55:06.7654387Z ✔ threads are kept in the shape the editor reads (13.111485ms)
2026-10-18T10:55:06.7654667Z ✔ viewers can't comment; only authors edit; editors delete others' comments and threads (4.832429ms)
2026-10-18T10:55:06.7654710Z ✔ replies, resolving and reactions (3.793897ms)
2026-10-18T10:55:06.7662031Z ✔ a comment's text and mentions come from its blocks (0.498481ms)
2026-10-18T10:55:06.9777655Z ✔ children come in position order (2.995745ms)
2026-10-18T10:55:07.1252790Z ✔ placing before a sibling takes the midpoint (0.582721ms)
2026-10-18T10:55:07.1252945Z ✔ moving a page among its own siblings ignores where it was (0.241841ms)
2026-10-18T10:55:07.1253039Z ✔ siblings too close together are renumbered (0.36135ms)
2026-10-18T10:55:07.1253120Z ✔ a page can't move under itself or its own descendants (0.475081ms)
2026-10-18T10:55:07.1253139Z ✔ descendants and ancestors (0.457251ms)
2026-10-18T10:55:07.1253226Z ✔ export paths follow the tree and stay unique (0.867952ms)
2026-10-18T10:55:07.3249136Z ✔ a cold request cannot make another request wait on its workspace I/O (39.776586ms)
2026-10-18T10:55:07.3263689Z ✔ failed workspace reads are retried by the next request (3.895668ms)
2026-10-18T10:55:07.5101911Z ✔ dashboard templates that read issues read work items after the migration, run once or twice (19.997229ms)
2026-10-18T10:55:07.5350420Z ℹ tests 131
2026-10-18T10:55:07.5351029Z ℹ suites 0
2026-10-18T10:55:07.5351273Z ℹ pass 131
2026-10-18T10:55:07.5351486Z ℹ fail 0
2026-10-18T10:55:07.5351662Z ℹ cancelled 0
2026-10-18T10:55:07.5351867Z ℹ skipped 0
2026-10-18T10:55:07.5352043Z ℹ todo 0
2026-10-18T10:55:07.5352216Z ℹ duration_ms 7751.962756
2026-10-18T10:55:07.5525705Z 
2026-10-18T10:55:07.5526161Z > @g1t/chat@0.1.0 test
2026-10-18T10:55:07.5526368Z > node --test src/*.test.ts
2026-10-18T10:55:07.5526540Z 
2026-10-18T10:55:07.7987040Z ✔ a channel is private, kept to the workspace, or public; a direct message is always private (1.700143ms)
2026-10-18T10:55:07.7987535Z ✔ who may read: anyone in it; members for a workspace channel; anyone for a public one (0.294761ms)
2026-10-18T10:55:07.7987907Z ✔ someone outside the workspace taken out of a public channel can't join it again on their own (0.28369ms)
2026-10-18T10:55:07.7999096Z ✔ owners always invite guests; members while the workspace lets them (0.37207ms)
2026-10-18T10:55:07.8001170Z ✔ only signed-in people with a confirmed address come in as guests (0.383211ms)
2026-10-18T10:55:07.8003528Z ✔ letting someone in: anyone in the channel for a member; those who invite guests for anyone else (0.215821ms)
2026-10-18T10:55:07.8005751Z ✔ a request's note is trimmed, cut to length, and null when empty (0.25607ms)
2026-10-18T10:55:07.9673290Z ✔ messages, conversations with any, and who said how much, most first (3.104066ms)
2026-10-18T10:55:07.9696576Z ✔ nothing said is zeros, not an error (0.508611ms)
2026-10-18T10:55:07.9696664Z ✔ a span is two times in order (0.459981ms)
2026-10-18T10:55:08.3629942Z g1t's answer broke off Error: binding down
2026-10-18T10:55:08.3630099Z     at file:///home/runner/work/repo/services/chat/src/answer.test.ts:84:11
2026-10-18T10:55:08.3630187Z     at Object.ask (file:///home/runner/work/repo/services/chat/src/answer.test.ts:31:14)
2026-10-18T10:55:08.3630256Z     at runAnswer (file:///home/runner/work/repo/services/chat/src/answer.ts:64:33)
2026-10-18T10:55:08.3630335Z     at async TestContext.<anonymous> (file:///home/runner/work/repo/services/chat/src/answer.test.ts:86:3)
2026-10-18T10:55:08.3630401Z     at async Test.run (node:internal/test_runner/test:1409:7)
2026-10-18T10:55:08.3630650Z     at async Test.processPendingSubtests (node:internal/test_runner/test:974:7)
2026-10-18T10:55:08.3630705Z ✔ an answer streams into the message and ends as a normal one (75.990345ms)
2026-10-18T10:55:08.3630762Z ✔ with no provider chosen, g1t says so once, without asking (0.723002ms)
2026-10-18T10:55:08.3630832Z ✔ a chosen provider that cannot answer is a short message, not silence (0.467381ms)
2026-10-18T10:55:08.3630887Z ✔ a refusal or an unreachable service ends as an error message (2.912996ms)
2026-10-18T10:55:08.3630913Z ✔ Stop keeps what came, marked stopped (23.034514ms)
2026-10-18T10:55:08.4815492Z ✔ an old card keeps its links and drops actions nobody answers any more (2.564605ms)
2026-10-18T10:55:08.4845270Z ✔ a card with nothing left to press has no actions (0.499351ms)
2026-10-18T10:55:08.7183991Z ✔ only the one person in a direct message with g1t may clear it, and only their own (1.728693ms)
2026-10-18T10:55:08.7201331Z ✔ clearing deletes everything in that conversation and nothing anywhere else (7.722315ms)
2026-10-18T10:55:08.7205670Z ✔ clearing again, or an empty conversation, deletes nothing and is no error (6.496093ms)
2026-10-18T10:55:08.7206107Z ✔ after a clear, what g1t reads holds none of the old conversation (7.840495ms)
2026-10-18T10:55:08.9272815Z ✔ a reaction is one emoji, however many code points it takes (2.364775ms)
2026-10-18T10:55:08.9293400Z ✔ a reaction is a Unicode emoji or a workspace's own by name (1.720403ms)
2026-10-18T10:55:08.9298177Z ✔ custom emoji names: lowercase letters, digits, - _ +, 2 to 32, not a standard one (0.558911ms)
2026-10-18T10:55:08.9302320Z ✔ an image is known by its bytes, with its size (0.884131ms)
2026-10-18T10:55:08.9303923Z ✔ a custom emoji file is a PNG, GIF or WebP up to 256 KB and 512 pixels a side (0.632312ms)
2026-10-18T10:55:08.9305068Z ✔ a file comes as base64, with or without a data: prefix (0.642881ms)
2026-10-18T10:55:08.9316878Z ✔ a message holds at most 50 kinds of reaction; more of one kind always fits (0.291101ms)
2026-10-18T10:55:08.9316980Z ✔ who may add and remove a workspace's emoji (0.29111ms)
2026-10-18T10:55:08.9317055Z ✔ reactions are counted per message and emoji, in the order first used (1.783703ms)
2026-10-18T10:55:08.9323321Z ✔ a message carries the first ten who reacted, and counts them all (0.816392ms)
2026-10-18T10:55:09.1729909Z ✔ g1t is one reserved member, system:g1t, and only that system key parses (7.306424ms)
2026-10-18T10:55:09.1730453Z ✔ a direct message with g1t is one person and g1t, keyed like any other (0.512901ms)
2026-10-18T10:55:09.1730552Z ✔ only a person's own top-level words in their direct message with g1t start an answer (0.779011ms)
2026-10-18T10:55:09.1730638Z ✔ the conversation maps the person to user and g1t's answers to assistant, alternating (0.915751ms)
2026-10-18T10:55:09.1730725Z ✔ an earlier answer is read back with what it read in g1t, so it is not taken for made up (0.751291ms)
2026-10-18T10:55:09.1731835Z ✔ the conversation leaves out failed answers, the set-up note, the answer being written, cards and deleted messages (0.539091ms)
2026-10-18T10:55:09.1752471Z ✔ a stopped answer still counts as what g1t said (0.470591ms)
2026-10-18T10:55:09.1755468Z ✔ a new conversation reads only what comes after the latest mark (0.747871ms)
2026-10-18T10:55:09.1760456Z ✔ the conversation ends with the person and keeps within Ask's limits, newest first (1.604363ms)
2026-10-18T10:55:09.1763660Z ✔ the page an answer is told is the newest question's, as sent from the top bar (1.110603ms)
2026-10-18T10:55:09.1771426Z ✔ with no provider chosen, g1t says where an owner chooses one (4.750849ms)
2026-10-18T10:55:09.1784692Z ✔ an answer is read as it streams, and unknown events are kept as steps, never text (1.806844ms)
2026-10-18T10:55:09.1786873Z ✔ an answer Auto chose a model for says so; a chosen model's does not (0.27671ms)
2026-10-18T10:55:09.1788500Z ✔ a tool step is kept once, as it last was, and sources are kept whole (0.632281ms)
2026-10-18T10:55:09.1789969Z ✔ an answer that breaks off or fails is never silence (0.883211ms)
2026-10-18T10:55:09.1791564Z ✔ one person's answers are limited to twenty a minute (0.418921ms)
2026-10-18T10:55:09.1796038Z ✔ an answer left mid-stream by a room that went away shows as stopped (0.344721ms)
2026-10-18T10:55:09.1806797Z ✔ what a proposal's card did is kept on its answer, merged step by step (0.774602ms)
2026-10-18T10:55:09.4260067Z ✔ posting as g1t is refused for anything that came in from the internet (62.81878ms)
2026-10-18T10:55:09.7172454Z ✔ a service binding's call posts and edits as g1t; anything else is not found (7.800315ms)
2026-10-18T10:55:09.7172616Z ✔ the site's chat client never reaches the internal methods (2.908436ms)
2026-10-18T10:55:09.7172687Z ✔ mentions are found once each, lowercased, in order (3.089825ms)
2026-10-18T10:55:09.7172755Z ✔ an email address or a stray @ is not a mention (0.29025ms)
2026-10-18T10:55:09.7172817Z ✔ a kept mention matches its whole handle only (0.333501ms)
2026-10-18T10:55:09.7807995Z ✔ a message needs something in it, and not too much (20.52035ms)
2026-10-18T10:55:09.7808400Z ✔ a page holds the default, or what was asked within limits (0.408431ms)
2026-10-18T10:55:09.7815191Z ✔ a page read one past its size says where to read on from (0.551361ms)
2026-10-18T10:55:09.7823579Z ✔ the meter counts by UTC day (0.249351ms)
2026-10-18T10:55:09.7838714Z ✔ a socket frame says typing in this channel, or is ignored (0.511281ms)
2026-10-18T10:55:09.9479435Z ✔ a channel name is kept lowercase, without #, spaces as dashes (2.662985ms)
2026-10-18T10:55:09.9479918Z ✔ a channel name uses letters, digits, dashes and underscores, and is not too long (0.464681ms)
2026-10-18T10:55:09.9511868Z ✔ the site's chat routes are not channel names (0.253071ms)
2026-10-18T10:55:09.9532629Z ✔ the same members always make the same direct-message key (0.26838ms)
2026-10-18T10:55:09.9533005Z ✔ a direct message with nobody else, or only yourself, is notes to yourself (0.43048ms)
2026-10-18T10:55:10.1645587Z ✔ a direct message notifies everyone else in it, muted or not, never the author (3.964298ms)
2026-10-18T10:55:10.1670227Z ✔ in a channel, a mention notifies the person named even when muted; the rest only count (0.396941ms)
2026-10-18T10:55:10.1670361Z ✔ a reply notifies the people in its thread unless they muted the conversation (0.459261ms)
2026-10-18T10:55:10.1677545Z ✔ deliveries: counts for everyone, a notification for those it is for, the author's count cleared (3.268887ms)
2026-10-18T10:55:10.1678151Z ✔ a person without a display name is named by their username as they wrote it (0.658211ms)
2026-10-18T10:55:10.1684767Z ✔ a reply links to its thread; a DM to the DM (0.303031ms)
2026-10-18T10:55:10.1686925Z ✔ previews are one short line without markup (1.815533ms)
2026-10-18T10:55:10.1695175Z ✔ counts after a read: what is left past the mark, mentions included, never your own (0.534201ms)
2026-10-18T10:55:10.3643467Z ✔ a workspace without settings lets every member make channels, and new people land in #general (2.136204ms)
2026-10-18T10:55:10.3655916Z ✔ default channels once chosen are kept as chosen, even none (0.430851ms)
2026-10-18T10:55:10.3665898Z ✔ who may make a channel follows its visibility's setting (0.199831ms)
2026-10-18T10:55:10.3703651Z ✔ renaming and archiving: workspace owners always, a channel's owners unless kept to workspace owners (0.33347ms)
2026-10-18T10:55:10.3726470Z ✔ what a role may do, for the page (0.30882ms)
2026-10-18T10:55:10.3726599Z ✔ a change is checked field by field; what is left out stays (0.557161ms)
2026-10-18T10:55:10.3726677Z ✔ settings are kept with their default channels as JSON (0.30012ms)
2026-10-18T10:55:10.5382782Z ✔ unread is what others wrote after your last read (1.264432ms)
2026-10-18T10:55:10.7116693Z ✔ counts per channel, replies included, with mentions of the viewer (1.617863ms)
2026-10-18T10:55:10.7116835Z ✔ the sidebar puts starred first, then the most recently active (9.910349ms)
2026-10-18T10:55:10.7116913Z ✔ a direct message is titled by the others, or by you for notes (0.533321ms)
2026-10-18T10:55:10.7149440Z ✔ cards kept about issues are about work items after the migration, run once or twice (9.489748ms)
2026-10-18T10:55:10.7361357Z ℹ tests 85
2026-10-18T10:55:10.7361829Z ℹ suites 0
2026-10-18T10:55:10.7362051Z ℹ pass 85
2026-10-18T10:55:10.7362228Z ℹ fail 0
2026-10-18T10:55:10.7362428Z ℹ cancelled 0
2026-10-18T10:55:10.7362594Z ℹ skipped 0
2026-10-18T10:55:10.7362783Z ℹ todo 0
2026-10-18T10:55:10.7362952Z ℹ duration_ms 3121.987564
2026-10-18T10:55:10.7503373Z 
2026-10-18T10:55:10.7503857Z > @g1t/deployments@0.1.0 test
2026-10-18T10:55:10.7504287Z > node --experimental-transform-types --no-warnings=ExperimentalWarning --test src/*.test.ts
2026-10-18T10:55:10.7504509Z 
2026-10-18T10:55:11.0488625Z ✔ a Read collaborator sees a project's deployments but cannot deploy or change them (2.033174ms)
2026-10-18T10:55:11.0543484Z ✔ an outside collaborator with Write can deploy, but settings and domains need Admin (0.369481ms)
2026-10-18T10:55:11.0543666Z ✔ members follow the workspace's base permission; owners manage everything (0.382801ms)
2026-10-18T10:55:11.0543747Z ✔ anyone can see a public project's deployments, and no more (0.19433ms)
2026-10-18T10:55:11.0543826Z ✔ a preview of a change made for someone is trusted as they are (21.802061ms)
2026-10-18T10:55:11.7728894Z build dpl_1 registry 
2026-10-18T10:55:11.7993553Z build dpl_1 registry 
2026-10-18T10:55:11.8012048Z ✔ while containers are off, the registry step says so in its own words (79.188781ms)
2026-10-18T10:55:11.8050508Z build dpl_1 registry 
2026-10-18T10:55:11.8162252Z build dpl_1 finish 
2026-10-18T10:55:11.8173180Z ✔ a build gets a push-only login for its app's repository, held to its size (17.003643ms)
2026-10-18T10:55:11.8233709Z build dpl_2 finish 
2026-10-18T10:55:11.8359421Z build dpl_1 finish 
2026-10-18T10:55:11.8377515Z ✔ an image outside the app's repository, or not in the registry, is never run (19.741227ms)
2026-10-18T10:55:11.8460660Z build dpl_2 finish 
2026-10-18T10:55:11.8988393Z build dpl_1 finish 
2026-10-18T10:55:11.8994182Z ✔ a container app runs behind g1t's Worker, is metered by its own token, and comes down whole (62.211588ms)
2026-10-18T10:55:11.9230085Z build dpl_1 finish 
2026-10-18T10:55:11.9243618Z ✔ a paused container app keeps its class and stops serving (22.122152ms)
2026-10-18T10:55:11.9378675Z build dpl_1 finish 
2026-10-18T10:55:11.9617377Z build dpl_1 finish 
2026-10-18T10:55:11.9621879Z ✔ the app's Container application is attached to the namespace its Worker's binding names (38.818234ms)
2026-10-18T10:55:11.9666524Z deleted images web-acme dpl_0
2026-10-18T10:55:11.9686580Z build dpl_2 finish 
2026-10-18T10:55:11.9724856Z deleted images web-acme dpl_0
2026-10-18T10:55:11.9759465Z deleted images web-acme dpl_1, dpl_2
2026-10-18T10:55:11.9774714Z ✔ an app keeps the image it runs, the one before it and those still being built, and none once it is down (26.2558ms)
2026-10-18T10:55:12.5775710Z ✔ a build gets a push-only login, for minutes, and pushes to its app's repository (2.553755ms)
2026-10-18T10:55:12.8416319Z ✔ only an image by digest in the app's own repository is run (0.616771ms)
2026-10-18T10:55:12.8416521Z ✔ the app's Worker is g1t's, with its settings and the project's entries as bindings (0.652121ms)
2026-10-18T10:55:12.8416611Z ✔ the container application runs one instance of the app's image at its size (0.38639ms)
2026-10-18T10:55:12.8416645Z ✔ an app's reports are read strictly (0.641022ms)
2026-10-18T10:55:12.8416712Z ✔ container time costs what Cloudflare charges at most, and the margin goes on top (15.99591ms)
2026-10-18T10:55:12.8416813Z ✔ the app's Worker starts its container with the project's entries, meters it and lets it sleep (48.561152ms)
2026-10-18T10:55:12.8416846Z g1t-container-ended {"exitCode":1,"message":"exited"}
2026-10-18T10:55:12.8416907Z ✔ an app that stops before it answers says how it ended (254.565066ms)
2026-10-18T10:55:12.8416966Z ✔ a paused app answers with a notice and its container stops (2.266594ms)
2026-10-18T10:55:13.1031655Z ✔ an environment is named as given, production when not (2.723856ms)
2026-10-18T10:55:13.1062190Z ✔ addresses are http(s), and a payload is an object (0.653811ms)
2026-10-18T10:55:13.1073409Z ✔ refs read as their branch or tag (0.370501ms)
2026-10-18T10:55:13.1088669Z ✔ each state says something on the commit, but inactive (0.317751ms)
2026-10-18T10:55:13.1088823Z ✔ a g1t.page build's status reads as a deployment state (0.600721ms)
2026-10-18T10:55:13.1137163Z ✔ a run's deployment moves on, and a failure sticks until the run ends (0.221851ms)
2026-10-18T10:55:13.1137356Z ✔ a run's outcome for an environment comes from the jobs that ran (0.34835ms)
2026-10-18T10:55:13.1137410Z ✔ production comes first, then the newest (10.814ms)
2026-10-18T10:55:13.1137496Z ✔ a g1t.page build is a deployment in the same model (4.568228ms)
2026-10-18T10:55:13.1138088Z ✔ a build's statuses come from its own timestamps (1.066982ms)
2026-10-18T10:55:13.3709128Z ✔ hostnames are lowercased and cleaned of what people paste (2.915125ms)
2026-10-18T10:55:13.3726957Z ✔ international names become punycode (5.778001ms)
2026-10-18T10:55:13.3758150Z ✔ what is not a hostname g1t can serve is refused (0.834372ms)
2026-10-18T10:55:13.3793954Z ✔ g1t's own domains are refused (0.455771ms)
2026-10-18T10:55:13.3795794Z ✔ apex and www twins (0.616651ms)
2026-10-18T10:55:13.3796929Z ✔ Cloudflare's states become a domain's (0.37411ms)
2026-10-18T10:55:13.3804409Z ✔ the records Cloudflare asks for are listed (1.530873ms)
2026-10-18T10:55:13.6166803Z ✔ every request and CPU millisecond is metered from the first, with nothing included (26.025939ms)
2026-10-18T10:55:13.7582618Z ✔ a busy workspace on the plan is never capped, only charged (0.379991ms)
2026-10-18T10:55:13.7582767Z ✔ custom domains are charged from the first, by the month (0.26139ms)
2026-10-18T10:55:13.7582871Z ✔ apps are not metered: a month with only apps up and no traffic costs nothing (0.504511ms)
2026-10-18T10:55:13.7582905Z ✔ amounts read plainly (0.30187ms)
2026-10-18T10:55:13.7582976Z ✔ a count that does not move the meter is not written (0.45405ms)
2026-10-18T10:55:14.4711384Z ✔ a transfer rebuilds every app under the new workspace, paused ones too (108.335407ms)
2026-10-18T10:55:14.5014033Z ✔ a second delivery builds nothing more (27.233892ms)
2026-10-18T10:55:14.5154637Z could not rebuild moved apps [
2026-10-18T10:55:14.5155130Z   'flagon-io/lab-api (v2): The runner answered 503.',
2026-10-18T10:55:14.5156627Z   'flagon-io/lab-api: The runner answered 503.'
2026-10-18T10:55:14.5156881Z ]
2026-10-18T10:55:14.5312281Z deployments could not handle repo.transferred Error: could not rebuild after the move to flagon-io/lab-api: flagon-io/lab-api (v2): The runner answered 503.; flagon-io/lab-api: The runner answered 503.
2026-10-18T10:55:14.5312798Z     at Deployments.moved (/home/runner/work/repo/services/deployments/src/index.ts:2135:43)
2026-10-18T10:55:14.5313128Z     at async Deployments.onEvent (/home/runner/work/repo/services/deployments/src/index.ts:1880:9)
2026-10-18T10:55:14.5313457Z     at async Object.queue (/home/runner/work/repo/services/deployments/src/index.ts:2974:9)
2026-10-18T10:55:14.5313703Z     at async deliver (/home/runner/work/repo/services/deployments/src/moves.flow.test.ts:223:3)
2026-10-18T10:55:14.5314531Z     at async TestContext.<anonymous> (/home/runner/work/repo/services/deployments/src/moves.flow.test.ts:252:16)
2026-10-18T10:55:14.5328731Z     at async Test.run (node:internal/test_runner/test:1409:7)
2026-10-18T10:55:14.5328876Z     at async Test.processPendingSubtests (node:internal/test_runner/test:974:7)
2026-10-18T10:55:14.5642340Z ✔ a rebuild that could not be queued is not acked, and the next delivery queues it (66.052435ms)
2026-10-18T10:55:14.5738412Z could not rebuild moved apps [
2026-10-18T10:55:14.5738777Z   'flagon-io/lab-api (v2): The runner answered 503.',
2026-10-18T10:55:14.5739194Z   'flagon-io/lab-api: The runner answered 503.'
2026-10-18T10:55:14.5739368Z ]
2026-10-18T10:55:14.5746536Z deployments could not handle repo.transferred Error: could not rebuild after the move to flagon-io/lab-api: flagon-io/lab-api (v2): The runner answered 503.; flagon-io/lab-api: The runner answered 503.
2026-10-18T10:55:14.5747332Z     at Deployments.moved (/home/runner/work/repo/services/deployments/src/index.ts:2135:43)
2026-10-18T10:55:14.5747597Z     at async Deployments.onEvent (/home/runner/work/repo/services/deployments/src/index.ts:1880:9)
2026-10-18T10:55:14.5750458Z     at async Object.queue (/home/runner/work/repo/services/deployments/src/index.ts:2974:9)
2026-10-18T10:55:14.5750713Z     at async deliver (/home/runner/work/repo/services/deployments/src/moves.flow.test.ts:223:3)
2026-10-18T10:55:14.5750964Z     at async TestContext.<anonymous> (/home/runner/work/repo/services/deployments/src/moves.flow.test.ts:266:3)
2026-10-18T10:55:14.5751189Z     at async Test.run (node:internal/test_runner/test:1409:7)
2026-10-18T10:55:14.5751400Z     at async Test.processPendingSubtests (node:internal/test_runner/test:974:7)
2026-10-18T10:55:14.6139942Z ✔ the sweep picks up a move whose deliveries ran out, keyed on the new workspace (47.41202ms)
2026-10-18T10:55:14.6409473Z ✔ a move waits, without refused deployments, while the new workspace is over its limit (28.177394ms)
2026-10-18T10:55:14.7763843Z build dpl_01m57adh6pekcsjvqt05ktgrnr finish 
2026-10-18T10:55:14.7764064Z ✔ once the new app is live, the old address redirects to it, paused or not (37.482162ms)
2026-10-18T10:55:14.7764102Z could not rebuild moved apps [
2026-10-18T10:55:14.7764166Z   'flagon-io/lab-api (v2): The runner answered 503.',
2026-10-18T10:55:14.7764202Z   'flagon-io/lab-api: The runner answered 503.'
2026-10-18T10:55:14.7764221Z ]
2026-10-18T10:55:14.7764313Z ✔ the sweep never pauses a moved app for its old workspace's limit (51.271238ms)
2026-10-18T10:55:14.7764408Z ✔ a branch's preview comes down once its branch is gone, and a pull request's stays (18.313385ms)
2026-10-18T10:55:14.9758465Z ✔ each stale app is one target, paused or not, with the names it replaces (3.588427ms)
2026-10-18T10:55:14.9814396Z ✔ an app under two old names (moved twice) is built once, replacing both (0.449121ms)
2026-10-18T10:55:14.9814557Z ✔ a build a move dropped is built again, at its newer commit (0.311341ms)
2026-10-18T10:55:14.9814625Z ✔ only a queued build counts as rebuilt; refusals and errors are tried again (0.21683ms)
2026-10-18T10:55:14.9825107Z ✔ a rebuild that could not start waits before it is tried again (0.2447ms)
2026-10-18T10:55:14.9833372Z ✔ an app is its project's current workspace's, not the one its row names (0.1885ms)
2026-10-18T10:55:15.6890187Z ✔ a workspace named like a domain loses that hyphen in hostnames (2.461224ms)
2026-10-18T10:55:15.8263169Z ✔ an app's name uses that spelling, so no label reads as another site (0.493411ms)
2026-10-18T10:55:15.9680000Z ✔ the location keeps the path and query, on the new host (1.451513ms)
2026-10-18T10:55:15.9690023Z ✔ the script answers every request with a 301 to the same place (53.440782ms)
2026-10-18T10:55:15.9710778Z ✔ the target is lowercased and must be a hostname (0.782542ms)
2026-10-18T10:55:16.2382544Z ✔ git's words for a commit that is gone are recognised, and only those (8.080365ms)
2026-10-18T10:55:16.2382760Z ✔ a commit that is gone says so plainly, naming the pull request (0.556741ms)
2026-10-18T10:55:16.2382862Z ✔ nothing built yet, or the last build went up long ago: build (7.077284ms)
2026-10-18T10:55:16.2382957Z ✔ a commit that is gone is never tried again, with or without backoff (0.389821ms)
2026-10-18T10:55:16.2383007Z ✔ each identical failure doubles the wait (0.34238ms)
2026-10-18T10:55:16.2383095Z ✔ three identical failures in a row stop it (0.23153ms)
2026-10-18T10:55:16.2401371Z ✔ a different error or commit starts the count again (0.423441ms)
2026-10-18T10:55:16.2404448Z ✔ a refused or skipped rebuild waits the base delay with backoff, not without (0.381121ms)
2026-10-18T10:55:16.5274281Z ✔ a deployment ships what no deployment shipped before, and stops at the last one's history (3.400216ms)
2026-10-18T10:55:16.5274501Z ✔ a change shipped is live from the deployment that first shipped it (1.140182ms)
2026-10-18T10:55:16.5286979Z ✔ a change not shipped is deploying, failed or waiting, by the production attempts after it (0.683881ms)
2026-10-18T10:55:16.5300111Z ✔ a change that landed before recording began goes live with the first success after it (0.41688ms)
2026-10-18T10:55:16.5338391Z ✔ only a production success is a shipment, linked to its page (0.45393ms)
2026-10-18T10:55:16.5339033Z ✔ addresses stay on the site (0.19956ms)
2026-10-18T10:55:16.9280463Z ✔ an app's OpenTelemetry variables point at the project, unless it set its own (4.420559ms)
2026-10-18T10:55:16.9280662Z ✔ tags and resource attributes name the project and deployment (0.729432ms)
2026-10-18T10:55:16.9280770Z ✔ Cloudflare's traces go to the destination, logs stay with the Tail Worker (0.484061ms)
2026-10-18T10:55:17.7789611Z ✔ a push to the production branch opens a production build the job runs, with no sandbox and nothing reserved (113.727687ms)
2026-10-18T10:55:17.7841549Z build dpl_01m57adm8ge04szpg17xpxvs20 started 
2026-10-18T10:55:17.7854855Z build dpl_01m57adm8ge04szpg17xpxvs20 finish 
2026-10-18T10:55:17.9231400Z build dpl_01m57adm8ge04szpg17xpxvs20 started 
2026-10-18T10:55:17.9231502Z build dpl_sandbox finish 
2026-10-18T10:55:17.9231652Z ✔ the job reports with the build's token, and its seconds are not charged again (34.913897ms)
2026-10-18T10:55:17.9231697Z build dpl_01m57adm9xe2ktfzrg908e8mfd finish 
2026-10-18T10:55:17.9231792Z build dpl_01m57adma5e7zs7zc5qnvg8z7q fail npm run build failed
2026-10-18T10:55:17.9231809Z build dpl_owed finish 
2026-10-18T10:55:17.9231887Z ✔ a sandbox's build is still charged by the second; a workflow job's never is (36.70582ms)
2026-10-18T10:55:17.9231912Z build not charged yet dpl_owed billing is down
2026-10-18T10:55:17.9231930Z build charge left for the sweep dpl_owed 30
2026-10-18T10:55:17.9231952Z build not charged yet dpl_owed billing is down
2026-10-18T10:55:17.9232015Z could not remove orphans TypeError: (intermediate value) is not iterable
2026-10-18T10:55:17.9232087Z     at Deployments.removeOrphans (/home/runner/work/repo/services/deployments/src/index.ts:2700:26)
2026-10-18T10:55:17.9232152Z     at async Deployments.sweep (/home/runner/work/repo/services/deployments/src/index.ts:2625:5)
2026-10-18T10:55:17.9232217Z     at async Object.scheduled (/home/runner/work/repo/services/deployments/src/index.ts:2984:5)
2026-10-18T10:55:17.9232316Z     at async TestContext.<anonymous> (/home/runner/work/repo/services/deployments/src/workflow-builds.flow.test.ts:280:3)
2026-10-18T10:55:17.9232425Z     at async Test.run (node:internal/test_runner/test:1409:7)
2026-10-18T10:55:17.9232485Z     at async Test.processPendingSubtests (node:internal/test_runner/test:974:7)
2026-10-18T10:55:17.9232498Z build charged late dpl_owed 30
2026-10-18T10:55:17.9232586Z could not remove orphans TypeError: (intermediate value) is not iterable
2026-10-18T10:55:17.9233558Z     at Deployments.removeOrphans (/home/runner/work/repo/services/deployments/src/index.ts:2700:26)
2026-10-18T10:55:17.9233658Z     at async Deployments.sweep (/home/runner/work/repo/services/deployments/src/index.ts:2625:5)
2026-10-18T10:55:17.9233746Z     at async Object.scheduled (/home/runner/work/repo/services/deployments/src/index.ts:2984:5)
2026-10-18T10:55:17.9233846Z     at async TestContext.<anonymous> (/home/runner/work/repo/services/deployments/src/workflow-builds.flow.test.ts:285:3)
2026-10-18T10:55:17.9233928Z     at async Test.run (node:internal/test_runner/test:1409:7)
2026-10-18T10:55:17.9234012Z     at async Test.processPendingSubtests (node:internal/test_runner/test:974:7)
2026-10-18T10:55:17.9234091Z could not remove orphans TypeError: (intermediate value) is not iterable
2026-10-18T10:55:17.9234183Z     at Deployments.removeOrphans (/home/runner/work/repo/services/deployments/src/index.ts:2700:26)
2026-10-18T10:55:17.9234274Z     at async Deployments.sweep (/home/runner/work/repo/services/deployments/src/index.ts:2625:5)
2026-10-18T10:55:17.9234356Z     at async Object.scheduled (/home/runner/work/repo/services/deployments/src/index.ts:2984:5)
2026-10-18T10:55:17.9234470Z     at async TestContext.<anonymous> (/home/runner/work/repo/services/deployments/src/workflow-builds.flow.test.ts:286:3)
2026-10-18T10:55:17.9234558Z     at async Test.run (node:internal/test_runner/test:1409:7)
2026-10-18T10:55:17.9234644Z     at async Test.processPendingSubtests (node:internal/test_runner/test:974:7)
2026-10-18T10:55:17.9234750Z ✔ a build billing cannot charge still goes live and is announced; the sweep charges it once, later (59.322503ms)
2026-10-18T10:55:17.9357120Z ✔ another branch builds its preview; a pull request's run builds the pull request's (24.153856ms)
2026-10-18T10:55:17.9933805Z ✔ a pull request from a fork, or one that had to be approved, gets no build secrets (25.388609ms)
2026-10-18T10:55:17.9937321Z ✔ it is refused without a job's write token, after the job, without the plan, or with previews off (30.203798ms)
2026-10-18T10:55:18.0029080Z ✔ a job that ends without finishing its build fails the build at once, and leaves a finished one be (26.447451ms)
2026-10-18T10:55:18.6319171Z ✔ only a workflow job's token for the repository, with deployments: write, opens a build (3.294436ms)
2026-10-18T10:55:18.6334540Z ✔ a run on the production branch builds production; another branch, its preview; a pull request, its own (2.935135ms)
2026-10-18T10:55:18.6355406Z ✔ a run from a fork, from someone who cannot push, or one that needed approval gets no secrets (0.560341ms)
2026-10-18T10:55:18.6355518Z ✔ the commit is the run's unless one is given (0.481211ms)
2026-10-18T10:55:18.6355594Z ✔ the project is the one named, or the only one with Deployments on (0.544851ms)
2026-10-18T10:55:18.6362766Z ✔ a read-only token opens only a preview, and only from the deploy workflow g1t manages (0.340461ms)
2026-10-18T10:55:18.6364805Z ✔ a build its job left open says how the job ended (0.591551ms)
2026-10-18T10:55:18.6576127Z ℹ tests 95
2026-10-18T10:55:18.6576477Z ℹ suites 0
2026-10-18T10:55:18.6576709Z ℹ pass 95
2026-10-18T10:55:18.6576890Z ℹ fail 0
2026-10-18T10:55:18.6577067Z ℹ cancelled 0
2026-10-18T10:55:18.6577233Z ℹ skipped 0
2026-10-18T10:55:18.6577423Z ℹ todo 0
2026-10-18T10:55:18.6577610Z ℹ duration_ms 7855.395963
2026-10-18T10:55:18.6711263Z 
2026-10-18T10:55:18.6715862Z > @g1t/notify@0.1.0 test
2026-10-18T10:55:18.6716076Z > node --test src/*.test.ts
2026-10-18T10:55:18.6716248Z 
2026-10-18T10:55:19.0720108Z ✔ a device is an Expo push token, a platform and maybe a name (3.908567ms)
2026-10-18T10:55:19.0720302Z ✔ a message says what a browser push says, with where it is in chat (1.281552ms)
2026-10-18T10:55:19.0720425Z ✔ what is not said to you goes at normal priority; one with no conversation threads by itself (1.702844ms)
2026-10-18T10:55:19.0720460Z ✔ a card's place travels with it (0.730732ms)
2026-10-18T10:55:19.0720527Z ✔ tickets: ok counts, DeviceNotRegistered is gone, anything else is an error (0.961522ms)
2026-10-18T10:55:19.0720601Z ✔ sending: 100 to a request, JSON with Expo's headers, the access token only when set (57.962211ms)
2026-10-18T10:55:19.0720667Z ✔ a failed request counts nothing and the others still count (2.146394ms)
2026-10-18T10:55:19.1755390Z ✔ a notification of a message from before the clear is dropped; one after is told (1.306502ms)
2026-10-18T10:55:19.1757276Z ✔ forgetting is kept per workspace and conversation, and takes only chat's ids (0.602902ms)
2026-10-18T10:55:19.3633583Z ✔ the default hears of what is said to you or waits on you, not everything (2.340804ms)
2026-10-18T10:55:19.3652597Z ✔ a workspace's own level wins over the general one (0.449601ms)
2026-10-18T10:55:19.3652803Z ✔ changes are checked: unknown levels ignored, null clears, the same as the general level is no override (0.880921ms)
2026-10-18T10:55:19.3655046Z ✔ a tab counts as in front of you only while focused and recently heard from (0.32001ms)
2026-10-18T10:55:19.3665343Z ✔ push only when no tab is focused, there is a browser to push to, and the level wants it (2.118734ms)
2026-10-18T10:55:19.3681630Z ✔ notifications are cleaned: kinds checked, links kept on the site, text trimmed (0.925401ms)
2026-10-18T10:55:19.3706249Z ✔ settled threads are strings, each once, and bounded (0.667812ms)
2026-10-18T10:55:19.3707386Z ✔ a push is small and collapses by conversation (0.33956ms)
2026-10-18T10:55:19.3709325Z ✔ counts add up, replace on set, never go below zero, and keep mute (0.567821ms)
2026-10-18T10:55:19.3710483Z ✔ totals leave muted unread out, as the rail does, but count their mentions (0.572911ms)
2026-10-18T10:55:19.3713760Z ✔ a notification's card is checked: its place, its actions, links kept on the site (0.497471ms)
2026-10-18T10:55:19.3714665Z ✔ a push shows only the card's actions that need nothing typed or confirmed, two at most (0.303621ms)
2026-10-18T10:55:19.3728649Z ✔ a person with only the phone app is pushed to: the feed counts browsers and phones together (0.979332ms)
2026-10-18T10:55:19.5735203Z ✔ presence comes from the tabs: none is offline, all idle is away, one in use is active (1.862924ms)
2026-10-18T10:55:19.5744181Z ✔ a status is an emoji and a few words, trimmed, and clears at a time in the future (1.114452ms)
2026-10-18T10:55:19.5754492Z ✔ a status and Do Not Disturb are gone once their time passes (0.649532ms)
2026-10-18T10:55:19.5768667Z ✔ Do Not Disturb resumes with null, and refuses a time in the past (0.3637ms)
2026-10-18T10:55:19.5778123Z ✔ a calendar never replaces a status set by hand, but replaces its own (0.813741ms)
2026-10-18T10:55:19.5790915Z ✔ Do Not Disturb silences toasts and pushes; a test still shows (3.245777ms)
2026-10-18T10:55:19.5802592Z ✔ entries say how a person shows, and compare without their time (1.030502ms)
2026-10-18T10:55:19.5814006Z ✔ what is kept reads back, and anything else reads as nothing (0.614191ms)
2026-10-18T10:55:19.5829160Z ✔ a workspace's presence narrows to the people asked about (0.796722ms)
2026-10-18T10:55:19.5843082Z ✔ workspaces are slugs, lowercased and distinct (1.107472ms)
2026-10-18T10:55:19.7723449Z ✔ a workspace slug is lowercased and checked (2.204144ms)
2026-10-18T10:55:19.7756298Z ✔ the first mark starts a visit with nothing before it (2.085514ms)
2026-10-18T10:55:19.7771556Z ✔ marks close together are one visit; a gap starts the next (0.3685ms)
2026-10-18T10:55:19.7819714Z ✔ a mark never moves the visit back (0.3183ms)
2026-10-18T10:55:19.7819966Z ✔ a mark is never in the future, nor more than a day behind (0.30692ms)
2026-10-18T10:55:19.7820067Z ✔ last here: the visit before during one, its last mark after (0.394581ms)
2026-10-18T10:55:19.9886997Z ✔ a change keeps only what a change carries (3.122166ms)
2026-10-18T10:55:20.1237614Z ✔ what is not a change is dropped (0.676392ms)
2026-10-18T10:55:20.1238212Z ✔ changes go to their repositories in the order they came (9.455858ms)
2026-10-18T10:55:20.1238339Z ✔ each watcher hears the repository by the name it asked for (0.745002ms)
2026-10-18T10:55:20.1238383Z ✔ repository ids and paths are checked (0.685691ms)
2026-10-18T10:55:20.1238426Z ✔ a watch lasts its time and no longer (0.562651ms)
2026-10-18T10:55:20.1238530Z ✔ a workspace's changes keep only what one carries, by workspace (0.909971ms)
2026-10-18T10:55:20.2016357Z ✔ encryption reproduces RFC 8291's example byte for byte (23.048784ms)
2026-10-18T10:55:20.2055566Z ✔ the example's body decrypts with the subscriber's key (4.223828ms)
2026-10-18T10:55:20.2155271Z ✔ a fresh key and salt each time, and it still round-trips (9.981299ms)
2026-10-18T10:55:20.2158211Z ✔ too long a message for one record is refused (0.823381ms)
2026-10-18T10:55:20.2225800Z ✔ the VAPID JWT: ES256, the push service's origin, a 12-hour expiry, a subject, and a signature that verifies (6.322612ms)
2026-10-18T10:55:20.2840068Z ✔ a push is posted encrypted with its headers; 404 and 410 mean gone (61.203496ms)
2026-10-18T10:55:20.3024835Z ℹ tests 51
2026-10-18T10:55:20.3025272Z ℹ suites 0
2026-10-18T10:55:20.3025491Z ℹ pass 51
2026-10-18T10:55:20.3025698Z ℹ fail 0
2026-10-18T10:55:20.3025907Z ℹ cancelled 0
2026-10-18T10:55:20.3026153Z ℹ skipped 0
2026-10-18T10:55:20.3026455Z ℹ todo 0
2026-10-18T10:55:20.3026685Z ℹ duration_ms 1575.890676
2026-10-18T10:55:20.3144271Z 
2026-10-18T10:55:20.3144714Z > @g1t/og@0.1.0 test
2026-10-18T10:55:20.3144903Z > node --test src/*.test.ts
2026-10-18T10:55:20.3145103Z 
2026-10-18T10:55:20.6001464Z platform pause unreadable, so nothing is paused Error: platform_pause failed with status 500
2026-10-18T10:55:20.6034095Z ✔ while renders are paused, a miss gets the cached brand card, kept a minute (43.616703ms)
2026-10-18T10:55:20.6062823Z ✔ with no brand card cached, a miss is sent to the static logo (0.431721ms)
2026-10-18T10:55:20.6079768Z ✔ the platform pause is read once per 30 seconds, and nothing is paused when billing cannot say (3.146566ms)
2026-10-18T10:55:20.8737420Z ✔ paths are split and decoded, and anything else is refused (4.240618ms)
2026-10-18T10:55:20.8743080Z ✔ the site's own pages get their own cards, or the brand card (1.577843ms)
2026-10-18T10:55:20.8748032Z ✔ a workspace shows its name and how many projects are public (0.894722ms)
2026-10-18T10:55:20.8765566Z ✔ a person shows their name, bio and public work, looked up as no one (0.799631ms)
2026-10-18T10:55:20.8771102Z ✔ a public project shows its name, description and open work (0.796881ms)
2026-10-18T10:55:20.8780144Z ✔ work items, pull requests and Soon pages get cards of their own (2.824976ms)
2026-10-18T10:55:20.8786529Z ✔ nothing private ever reaches a card (1.257962ms)
2026-10-18T10:55:20.8790138Z ✔ a private project on a public repository keeps its name to itself (0.609051ms)
2026-10-18T10:55:20.8792852Z ✔ every lookup is made with no viewer (0.851352ms)
2026-10-18T10:55:20.8799260Z ✔ a service that fails gives the brand card, marked so it is not kept (0.919632ms)
2026-10-18T10:55:20.8804064Z ✔ a docs card is bounded, and has a title even without one (0.568781ms)
2026-10-18T10:55:20.8809025Z ✔ the cache key keeps only what changes the card (2.141464ms)
2026-10-18T10:55:20.8818491Z ✔ a v the site never writes is left out of the key (0.678872ms)
2026-10-18T10:55:20.8822667Z ✔ a path is keyed by the page whose card it shows (1.091402ms)
2026-10-18T10:55:20.8828956Z ✔ a path resolves to the same card as the page it is keyed by (1.562203ms)
2026-10-18T10:55:21.1074445Z ✔ an external production is visited only at a public address (3.279526ms)
2026-10-18T10:55:21.2445348Z ✔ an external request names a public http(s) address and a commit or a day (2.376574ms)
2026-10-18T10:55:21.2445532Z ✔ external screenshots are kept apart, by host (0.557631ms)
2026-10-18T10:55:21.2445644Z ✔ an external screenshot stands for a day, and not from before the deploy (0.391641ms)
2026-10-18T10:55:21.2445755Z ✔ the daily refresh takes the missing and the stalest first, up to its limit (0.496901ms)
2026-10-18T10:55:21.2445853Z ✔ only apps on g1t.page, with a commit, are taken (2.651015ms)
2026-10-18T10:55:21.2445885Z ✔ keys are by hostname (0.454391ms)
2026-10-18T10:55:21.2445983Z ✔ a failed attempt at a commit waits before it is tried again (0.40359ms)
2026-10-18T10:55:21.2446086Z ✔ a screenshot is current when it shows the commit and was taken after the deploy (0.641531ms)
2026-10-18T10:55:21.2446129Z ✔ kept objects expire after KEEP_DAYS (0.541791ms)
2026-10-18T10:55:21.2446149Z ℹ tests 28
2026-10-18T10:55:21.2446177Z ℹ suites 0
2026-10-18T10:55:21.2446198Z ℹ pass 28
2026-10-18T10:55:21.2446220Z ℹ fail 0
2026-10-18T10:55:21.2446239Z ℹ cancelled 0
2026-10-18T10:55:21.2446257Z ℹ skipped 0
2026-10-18T10:55:21.2446275Z ℹ todo 0
2026-10-18T10:55:21.2446294Z ℹ duration_ms 764.150407
2026-10-18T10:55:21.2446310Z 
2026-10-18T10:55:21.2446330Z > @g1t/pages@0.1.0 test
2026-10-18T10:55:21.2446351Z > node --test src/*.test.ts
2026-10-18T10:55:21.2446370Z 
2026-10-18T10:55:21.4676805Z g1t-request {
2026-10-18T10:55:21.4681047Z   id: '68f26d6162af9aba',
2026-10-18T10:55:21.4681252Z   script: 'web-acme',
2026-10-18T10:55:21.4681460Z   trace_id: 'b84bddf0c2c542ce3c96ca010e3d5839',
2026-10-18T10:55:21.4681639Z   app: null
2026-10-18T10:55:21.4681811Z }
2026-10-18T10:55:21.4766829Z g1t-request {
2026-10-18T10:55:21.4766920Z   id: '262fe7a4f6334f1f',
2026-10-18T10:55:21.4766941Z   script: 'shop-acme',
2026-10-18T10:55:21.4767375Z   trace_id: '5b27a72b3349f6a5e6481983c8aba29b',
2026-10-18T10:55:21.4767400Z   app: null
2026-10-18T10:55:21.4767420Z }
2026-10-18T10:55:21.4796293Z g1t-request {
2026-10-18T10:55:21.4796361Z   id: '9895c54bcb6d4b32',
2026-10-18T10:55:21.4796386Z   script: 'web-acme',
2026-10-18T10:55:21.4796435Z   trace_id: '6938de97e0b0b386850cc19237abd105',
2026-10-18T10:55:21.4796455Z   app: null
2026-10-18T10:55:21.4796473Z }
2026-10-18T10:55:21.4796491Z g1t-request {
2026-10-18T10:55:21.4796507Z   id: 'ed4274297714cdab',
2026-10-18T10:55:21.4796522Z   script: 'web-git-x-acme',
2026-10-18T10:55:21.4796548Z   trace_id: '12d671efee300e8dc3abe20b1d17affa',
2026-10-18T10:55:21.4796562Z   app: null
2026-10-18T10:55:21.4796576Z }
2026-10-18T10:55:21.4808195Z g1t-request {
2026-10-18T10:55:21.4808251Z   id: '574e20483d054220',
2026-10-18T10:55:21.4808271Z   script: 'gone-acme',
2026-10-18T10:55:21.4808307Z   trace_id: 'a7f4f9152addee90a4b5e203edd76959',
2026-10-18T10:55:21.4808321Z   app: null
2026-10-18T10:55:21.4808331Z }
2026-10-18T10:55:21.4834354Z g1t-request {
2026-10-18T10:55:21.4834654Z   id: '673112f0308ea73c',
2026-10-18T10:55:21.4834678Z   script: 'lab-api-flagon-io',
2026-10-18T10:55:21.4834715Z   trace_id: '9a3b26d44fd363c4fe78362fc3138050',
2026-10-18T10:55:21.4834735Z   app: null
2026-10-18T10:55:21.4834750Z }
2026-10-18T10:55:21.4848988Z g1t-request {
2026-10-18T10:55:21.4849220Z   id: '08c897fe9a4d24a0',
2026-10-18T10:55:21.4849392Z   script: 'shop-acme',
2026-10-18T10:55:21.4849582Z   trace_id: '02f912c6b7b32e5385199ea0fee6da17',
2026-10-18T10:55:21.4849750Z   app: null
2026-10-18T10:55:21.4849916Z }
2026-10-18T10:55:21.4856867Z g1t-request {
2026-10-18T10:55:21.4858456Z   id: '986174d77fa88f69',
2026-10-18T10:55:21.4858640Z   script: 'web-acme',
2026-10-18T10:55:21.4858844Z   trace_id: '932a3f6a65b22a89d08fac3199d390aa',
2026-10-18T10:55:21.4859011Z   app: null
2026-10-18T10:55:21.4860263Z }
2026-10-18T10:55:21.4945641Z ✔ hosts on g1t.page are the home page, the fallback origin, or an app (3.559117ms)
2026-10-18T10:55:21.4945790Z ✔ any other host is a custom domain (0.785462ms)
2026-10-18T10:55:21.4953854Z ✔ entries are read only when they are well formed (0.657031ms)
2026-10-18T10:55:21.4956912Z ✔ redirects keep the path and query (0.3572ms)
2026-10-18T10:55:21.4959329Z ✔ a custom domain is served by its project's app, with the request's host kept (58.251222ms)
2026-10-18T10:55:21.4965491Z ✔ a paired domain redirects with a 308, path and query kept (1.434183ms)
2026-10-18T10:55:21.4968456Z ✔ an unknown custom domain gets the branded 404 (1.444433ms)
2026-10-18T10:55:21.4991087Z ✔ a custom domain whose app is not up says so (1.969124ms)
2026-10-18T10:55:21.4997365Z ✔ g1t.page addresses dispatch by label as before (4.167418ms)
2026-10-18T10:55:21.4997643Z ✔ an app's old address redirects to its new one, whatever the old script answers (1.534183ms)
2026-10-18T10:55:21.4997722Z ✔ an app address with no redirect, or a failing lookup, is served as it is (1.117222ms)
2026-10-18T10:55:21.5007050Z ✔ every app runs within the limits, and one that goes over them says so (1.834764ms)
2026-10-18T10:55:21.5021226Z ✔ each request gets an id and continues the caller's trace, or starts one (0.612291ms)
2026-10-18T10:55:21.5021327Z ✔ an app's own entry carries what its requests are filed under (0.281261ms)
2026-10-18T10:55:21.5241463Z ℹ tests 14
2026-10-18T10:55:21.5241809Z ℹ suites 0
2026-10-18T10:55:21.5242002Z ℹ pass 14
2026-10-18T10:55:21.5242184Z ℹ fail 0
2026-10-18T10:55:21.5242369Z ℹ cancelled 0
2026-10-18T10:55:21.5242557Z ℹ skipped 0
2026-10-18T10:55:21.5242728Z ℹ todo 0
2026-10-18T10:55:21.5242913Z ℹ duration_ms 308.001757
2026-10-18T10:55:21.5348324Z 
2026-10-18T10:55:21.5348621Z > @g1t/projects@0.1.0 test
2026-10-18T10:55:21.5348784Z > node --test src/*.test.ts
2026-10-18T10:55:21.5348937Z 
2026-10-18T10:55:21.7511563Z ✔ a private project is seen by those who can read its repository (1.792534ms)
2026-10-18T10:55:21.7581230Z ✔ changing a project takes Maintain (0.699461ms)
2026-10-18T10:55:21.9500912Z ✔ a first piece of activity scores one (3.726447ms)
2026-10-18T10:55:21.9508554Z ✔ activity counts half as much a week later (0.542311ms)
2026-10-18T10:55:21.9528140Z ✔ a busy project outranks one busy long ago (0.729952ms)
2026-10-18T10:55:21.9547851Z ✔ an event delivered late never moves the time back (0.491681ms)
2026-10-18T10:55:21.9547950Z ✔ nonsense counts as nothing (0.402951ms)
2026-10-18T10:55:21.9554511Z ✔ pushes, work and deployments count; housekeeping does not (0.219441ms)
2026-10-18T10:55:21.9554650Z ✔ a work item's activity counts for every repository it is linked to (0.447211ms)
2026-10-18T10:55:22.1209971Z ✔ a change sets the description, clears it, or leaves it (1.476973ms)
2026-10-18T10:55:22.3626031Z ✔ a Composer package is a library; a Composer project is an app (3.340556ms)
2026-10-18T10:55:22.3626205Z ✔ package.json: an entry point without a start or dev script is a library (0.816091ms)
2026-10-18T10:55:22.3626303Z ✔ Cargo: a library and no binary is a library (0.664782ms)
2026-10-18T10:55:22.3626387Z ✔ Go: a module with no package main at its root is a library (0.589731ms)
2026-10-18T10:55:22.3626460Z ✔ Python: a build backend and no app framework is a library (2.957016ms)
2026-10-18T10:55:22.3626567Z ✔ the language's manifest decides before package.json, and a Workers config is always an app (0.380871ms)
2026-10-18T10:55:22.3626595Z ✔ the setting wins over everything (0.469051ms)
2026-10-18T10:55:22.3626671Z ✔ where it runs: set, or on g1t while Deployments are on, or nobody has said (0.526451ms)
2026-10-18T10:55:22.3626760Z ✔ an app that deploys production itself deploys itself, until something says otherwise (0.433351ms)
2026-10-18T10:55:22.3626835Z ✔ a change to the setting keeps it coherent (0.686731ms)
2026-10-18T10:55:22.3626906Z ✔ on auto: Deployments on, then packages, then files, then an app (0.422321ms)
2026-10-18T10:55:22.3626943Z ✔ an unknown setting is left to detection (0.21824ms)
2026-10-18T10:55:22.3627014Z ✔ detection says tool, and docs, where the files do (0.445791ms)
2026-10-18T10:55:22.4996373Z ✔ an address is http or https, with https added when none is given (4.062557ms)
2026-10-18T10:55:22.4996751Z ✔ anything else is refused, naming what it is (0.673211ms)
2026-10-18T10:55:22.5029004Z ✔ links: blank rows dropped, labels from the host, at most ten (1.038042ms)
2026-10-18T10:55:22.5029148Z ✔ stored links that cannot be read are none (0.477601ms)
2026-10-18T10:55:22.5029227Z ✔ a repository's own project follows its website until it has a homepage of its own (0.403671ms)
2026-10-18T10:55:22.6855258Z ✔ a pin goes at the end, or where it is asked for (2.835576ms)
2026-10-18T10:55:22.6943128Z ✔ pinning one already pinned moves it, never twice (0.495681ms)
2026-10-18T10:55:22.6943304Z ✔ a workspace holds a limited number of pins (0.51032ms)
2026-10-18T10:55:22.6943370Z ✔ reordering names every pin once and nothing else (0.676611ms)
2026-10-18T10:55:22.6943441Z ✔ recent leaves out what is pinned and keeps the latest few (0.474111ms)
2026-10-18T10:55:23.7452772Z ✔ a production image is a PNG, JPEG or WebP, by its bytes (2.105994ms)
2026-10-18T10:55:23.7463419Z ✔ an upload is checked: present, at most 5 MB, and an image (857.792846ms)
2026-10-18T10:55:23.7513448Z ✔ an image is kept by its hash, apart from avatars (14.898299ms)
2026-10-18T10:55:23.7518482Z ✔ the stored image, and whether it is preferred (1.855914ms)
2026-10-18T10:55:23.7544520Z ✔ only production elsewhere, at an address and not shown as an upload, is visited (0.426421ms)
2026-10-18T10:55:23.7544620Z ✔ the day a screenshot is versioned by (0.559011ms)
2026-10-18T10:55:23.9443434Z ✔ each statement is bound with as many values as it asks for (1.282203ms)
2026-10-18T10:55:23.9444958Z ✔ only stale slugs move, to the current one (1.110572ms)
2026-10-18T10:55:24.1332793Z ✔ each statement is bound with as many values as it asks for (2.480815ms)
2026-10-18T10:55:24.1336533Z ✔ projects move from the workspace the repository left to the one it is in (1.707083ms)
2026-10-18T10:55:24.1352301Z ✔ a delivery after the rows moved moves nothing but the path (0.456321ms)
2026-10-18T10:55:24.1354442Z ✔ a transfer keeps every slug (0.611371ms)
2026-10-18T10:55:24.1354720Z ✔ renamed, the repository's own project takes the new name as its slug if it is free (1.000522ms)
2026-10-18T10:55:24.1354963Z ✔ a rename of letter case alone keeps the slug (0.508841ms)
2026-10-18T10:55:24.1355192Z ✔ names become slugs as projects spell them (0.357101ms)
2026-10-18T10:55:24.1538672Z ℹ tests 48
2026-10-18T10:55:24.1551818Z ℹ suites 0
2026-10-18T10:55:24.1552278Z ℹ pass 48
2026-10-18T10:55:24.1552523Z ℹ fail 0
2026-10-18T10:55:24.1552837Z ℹ cancelled 0
2026-10-18T10:55:24.1553061Z ℹ skipped 0
2026-10-18T10:55:24.1553237Z ℹ todo 0
2026-10-18T10:55:24.1554002Z ℹ duration_ms 2573.378018
2026-10-18T10:55:24.1692017Z 
2026-10-18T10:55:24.1692393Z > @g1t/runner@0.1.0 test
2026-10-18T10:55:24.1692614Z > node --test src/*.test.ts
2026-10-18T10:55:24.1692803Z 
2026-10-18T10:55:24.3923511Z ✔ the sandbox gets its job and token, and no git credential (2.622085ms)
2026-10-18T10:55:24.5349922Z ✔ one sandbox per job (0.36438ms)
2026-10-18T10:55:24.5350103Z ✔ the pace comes from the variables, and 0 turns backups off (0.507591ms)
2026-10-18T10:55:24.7372944Z ✔ a request carrying a stand-in for its host is filled in, sent, and its answer scrubbed (75.447224ms)
2026-10-18T10:55:24.7385253Z ✔ a body is relayed, and one past the limit is refused (71.180666ms)
2026-10-18T10:55:24.7402810Z ✔ it is no open proxy: no stand-in, another host, or plain HTTP is refused and noted (3.735987ms)
2026-10-18T10:55:24.7402976Z ✔ only the job's current token opens it, and it must come as a header (2.125524ms)
2026-10-18T10:55:24.7403009Z ✔ a request has a time limit (3.094775ms)
2026-10-18T10:55:24.7403085Z ✔ an answer past the limit is refused by its length, or cut off as it streams (4.201388ms)
2026-10-18T10:55:24.7403169Z ✔ a value split across chunks is still scrubbed, and other bytes pass as they are (1.668083ms)
2026-10-18T10:55:24.7403257Z ✔ text bodies are scrubbed whatever their size; binary ones stream as they are (0.288351ms)
2026-10-18T10:55:24.7438851Z ✔ the request reads only in its own shape, and answer headers keep each cookie (10.36415ms)
2026-10-18T10:55:24.9821610Z ✔ stand-ins are found in the URL, the headers and Basic credentials (48.257622ms)
2026-10-18T10:55:24.9821795Z ✔ a stand-in in a header is filled in for its host (1.656093ms)
2026-10-18T10:55:24.9823675Z ✔ custom headers and token schemes are filled in as well (0.772801ms)
2026-10-18T10:55:24.9827825Z ✔ Basic credentials are decoded, filled in and encoded again (0.943082ms)
2026-10-18T10:55:24.9835420Z ✔ a stand-in in the query string is filled in, encoded (2.603985ms)
2026-10-18T10:55:24.9856060Z ✔ a stand-in sent to another host is left as it is and reported (0.743691ms)
2026-10-18T10:55:24.9856378Z ✔ a value is filled in only over HTTPS, even for its own host (0.400401ms)
2026-10-18T10:55:24.9856445Z ✔ a stand-in the job was not given is left alone, and not reported (0.366861ms)
2026-10-18T10:55:24.9856502Z ✔ a value echoed back is swapped for its stand-in again (0.637381ms)
2026-10-18T10:55:24.9890110Z ✔ only small, plain, uncompressed answers have their bodies rewritten (0.972412ms)
2026-10-18T10:55:24.9890217Z ✔ a misdirected secret is noted once per host (0.633882ms)
2026-10-18T10:55:25.1743469Z ✔ a well-formed update can start (2.122314ms)
2026-10-18T10:55:25.1743615Z ✔ the branch must be a security update's (0.619902ms)
2026-10-18T10:55:25.1743728Z ✔ names, versions and lockfiles are checked before anything starts (0.353561ms)
2026-10-18T10:55:25.1743819Z ✔ g1t acts as itself, a member of the workspace (1.149732ms)
2026-10-18T10:55:25.1743888Z ✔ the sandbox is given what bump mode reads (0.586081ms)
2026-10-18T10:55:25.1743945Z ✔ a version update names any branch git takes (0.744542ms)
2026-10-18T10:55:25.1744020Z ✔ a version update's packages, strategy and registries are checked (0.578681ms)
2026-10-18T10:55:25.1744094Z ✔ a version update's sandbox is told what to raise, how and from where (2.645785ms)
2026-10-18T10:55:25.3545671Z ✔ tokens are hashed the way identity stores them (10.69614ms)
2026-10-18T10:55:25.3951285Z ✔ a sandbox's credentials are bound to its run and revoked once when it stops (37.586701ms)
2026-10-18T10:55:25.5752822Z ✔ a sandbox with no run record still has its credentials revoked (4.488489ms)
2026-10-18T10:55:25.5969461Z ✔ a brokered secret's hosts match exactly, or by wildcard (2.054333ms)
2026-10-18T10:55:25.5969686Z ✔ hosts are compared without case, port or trailing dot (0.416981ms)
2026-10-18T10:55:25.5979906Z ✔ a wildcard covers subdomains at any depth, not the domain itself (0.292971ms)
2026-10-18T10:55:25.5984814Z ✔ the harness is told the run's time cap and branch, and nothing about the network (1.425393ms)
2026-10-18T10:55:25.6004170Z ✔ each sandbox class reports to its own namespace (0.354971ms)
2026-10-18T10:55:26.3310164Z egress upstream failed registry.npmjs.org GET try 1 of 3 Error: Network connection lost.
2026-10-18T10:55:26.3310331Z egress upstream failed registry.npmjs.org GET try 2 of 3 Error: Network connection lost.
2026-10-18T10:55:26.3386304Z egress upstream failed registry.npmjs.org GET try 1 of 3 Error: Network connection lost.
2026-10-18T10:55:26.3389663Z egress upstream failed registry.npmjs.org GET try 2 of 3 Error: Network connection lost.
2026-10-18T10:55:26.3389771Z egress upstream failed registry.npmjs.org GET try 3 of 3 Error: Network connection lost.
2026-10-18T10:55:26.3427961Z egress upstream failed api.example.com POST try 1 of 1 Error: Network connection lost.
2026-10-18T10:55:26.3478662Z egress upstream failed registry.npmjs.org GET try 1 of 3 Error: aborted
2026-10-18T10:55:26.3503131Z egress upstream failed registry.npmjs.org GET try 1 of 3 Error: aborted
2026-10-18T10:55:26.3528351Z egress upstream failed registry.npmjs.org GET try 2 of 3 Error: aborted
2026-10-18T10:55:26.3534629Z egress upstream failed registry.npmjs.org GET try 3 of 3 Error: aborted
2026-10-18T10:55:26.3625654Z egress body broke off registry.npmjs.org 3000000 of 8392704 bytes resuming, try 1 of 2 Error: aborted
2026-10-18T10:55:26.3761562Z egress body broke off registry.npmjs.org 6000000 of 8392704 bytes resuming, try 2 of 2 Error: aborted
2026-10-18T10:55:26.4074117Z egress body broke off registry.npmjs.org 3000000 of 8392704 bytes resuming, try 1 of 2 Error: aborted
2026-10-18T10:55:26.5762742Z egress body not resumed registry.npmjs.org 3000000 of 8392704 bytes the rest could not be had (206 bytes 3000000-8392703/8392704)
2026-10-18T10:55:26.5762927Z egress body broke off registry.npmjs.org 1000000 of 8392704 bytes resuming, try 1 of 2 Error: the answer ended after 1000000 of 8392704 bytes
2026-10-18T10:55:26.5763019Z egress body broke off registry.npmjs.org 1000000 of 8392704 bytes resuming, try 1 of 2 Error: aborted
2026-10-18T10:55:26.5763091Z egress body broke off registry.npmjs.org 2000000 of 8392704 bytes resuming, try 2 of 2 Error: aborted
2026-10-18T10:55:26.5763191Z egress body not resumed registry.npmjs.org 3000000 of 8392704 bytes Error: aborted
2026-10-18T10:55:26.5763278Z egress body broke off registry.npmjs.org 2000000 of 8392704 bytes resuming, try 1 of 2 Error: aborted
2026-10-18T10:55:26.5763372Z egress body broke off registry.npmjs.org 2000000 of 8392704 bytes resuming, try 2 of 2 Error: Network connection lost.
2026-10-18T10:55:26.5763441Z egress body broke off registry.npmjs.org 1000000 of 8392704 bytes resuming, try 1 of 2 Error: aborted
2026-10-18T10:55:26.5763527Z egress body not resumed registry.npmjs.org 1000000 of 8392704 bytes the rest could not be had (200 without a range)
2026-10-18T10:55:26.5763602Z ✔ a GET that fails is tried again, and its answer comes back (50.985608ms)
2026-10-18T10:55:26.5763694Z ✔ one that keeps failing gets a 502 naming the host and why, never a throw (2.350804ms)
2026-10-18T10:55:26.5763720Z ✔ a POST is never sent twice (2.911875ms)
2026-10-18T10:55:26.5763806Z ✔ an answer, even an error, is passed on as it is (2.492185ms)
2026-10-18T10:55:26.5763893Z ✔ a body that breaks off midway is tried again, and the whole answer comes back (2.700385ms)
2026-10-18T10:55:26.5763973Z ✔ a body that keeps breaking off ends as a 502, not a truncated answer (5.40051ms)
2026-10-18T10:55:26.5764052Z ✔ large, compressed or unsized answers stream as they come (1.916914ms)
2026-10-18T10:55:26.5764125Z ✔ a large tarball that breaks off midway is resumed from where it stopped, and arrives whole (44.611785ms)
2026-10-18T10:55:26.5764179Z ✔ a rest that comes compressed is never joined on to a body that came as it is (11.998403ms)
2026-10-18T10:55:26.5764259Z ✔ a large tarball sent whole streams as it is, asked for once (31.7639ms)
2026-10-18T10:55:26.5764333Z ✔ a body that ends short of its length is resumed too (44.703785ms)
2026-10-18T10:55:26.5764430Z ✔ a body that keeps breaking off errors after its resumptions, never handing on a short answer as whole (19.359987ms)
2026-10-18T10:55:26.5764529Z ✔ a resumption that fails to connect is tried again (32.909592ms)
2026-10-18T10:55:26.5764611Z ✔ no rest is joined on when the host answers a range with the whole file (5.31435ms)
2026-10-18T10:55:26.5764692Z ✔ only a whole, plain answer to a GET, from a host that takes ranges, is resumable (1.602713ms)
2026-10-18T10:55:26.8334366Z ✔ a paid workspace's start is reserved and goes ahead (55.285176ms)
2026-10-18T10:55:26.8343300Z ✔ billing's refusal is shown in its own words (4.083068ms)
2026-10-18T10:55:26.8345178Z ✔ a refusal without words gets g1t's, with what to do and where (1.304373ms)
2026-10-18T10:55:26.8358657Z ✔ a paused workspace starts nothing, and billing is not asked to reserve (0.823542ms)
2026-10-18T10:55:26.8362301Z ✔ an answer that holds compute back is kept seconds, one that lets it through half a minute (0.28811ms)
2026-10-18T10:55:26.8363553Z ✔ internal and enterprise plans pass even when billing refuses (1.346462ms)
2026-10-18T10:55:26.8364532Z ✔ a pause from billing holds for every plan: g1t's own budget and its daily breaker (1.631823ms)
2026-10-18T10:55:26.8366477Z ✔ billing down: free workspaces fail closed, paying ones go on (2.092984ms)
2026-10-18T10:55:26.8372616Z ✔ an answer that is not a refusal counts as billing being down (0.767321ms)
2026-10-18T10:55:26.8374007Z ✔ entitlements read in either case, and not at all without a plan (0.576721ms)
2026-10-18T10:55:26.8374998Z ✔ before they try: what a free workspace can start, by kind and repository (0.36621ms)
2026-10-18T10:55:26.8385989Z ✔ an estimate is the sandbox for its whole time cap (0.257861ms)
2026-10-18T10:55:26.8386454Z ✔ what work cost: its seconds at the sandbox price (0.247481ms)
2026-10-18T10:55:26.8386756Z ✔ the gate reads the sandbox price from the price book (0.763321ms)
2026-10-18T10:55:26.8393077Z ✔ the time cap is the lower of the guardrails' and the plan's (0.305081ms)
2026-10-18T10:55:26.8393320Z ✔ only a job that may be given brokered secrets passes the Worker (0.23815ms)
2026-10-18T10:55:26.8393542Z ✔ workflow jobs get Docker unless the operator turns it off (0.153271ms)
2026-10-18T10:55:27.0310861Z ✔ a stop that is told the first time is told once and logs nothing (3.823247ms)
2026-10-18T10:55:27.0354801Z ✔ a stop that fails once is tried again, and gets through (11.999823ms)
2026-10-18T10:55:27.0976875Z ✔ a stop that cannot be told never throws, and is logged with what and why (2.211785ms)
2026-10-18T10:55:27.0981716Z ✔ whatever is thrown, even nothing, is logged as one line (1.471452ms)
2026-10-18T10:55:27.0995974Z ✔ a service that cannot answer is a failure; one that refuses is not (53.953903ms)
2026-10-18T10:55:27.1003108Z ✔ a run inside its time cap is not stopped for inactivity (0.389641ms)
2026-10-18T10:55:27.1005939Z ✔ a sandbox with no cap or no start is stopped for inactivity as before (0.25664ms)
2026-10-18T10:55:27.1009798Z ✔ an earlier attempt's time cap does not stop the attempt running now (0.35786ms)
2026-10-18T10:55:27.1040048Z ✔ a sandbox with no run or no cap is never stopped for time (0.416051ms)
2026-10-18T10:55:27.1040218Z ✔ a sandbox g1t stopped fails even when its exit code says 0 (0.540161ms)
2026-10-18T10:55:27.1040311Z ✔ sandbox time billing confirms is forgotten; the rest is kept and tried again later (0.980482ms)
2026-10-18T10:55:27.1040391Z ✔ nothing kept means no retry; time tried for a week is given up (0.542461ms)
2026-10-18T10:55:27.1040465Z ✔ tries back off from 30 seconds to an hour (0.245331ms)
2026-10-18T10:55:27.2869357Z ✔ each label in the machine catalogue runs in its own class, bound and sized as wrangler.jsonc says (4.555949ms)
2026-10-18T10:55:27.2902700Z ✔ runs-on labels are the catalogue's, and a job is charged its minutes rounded up (0.819922ms)
2026-10-18T10:55:27.5314364Z self-hosted route unknown; using a sandbox Acme Error: runner_route failed with status 500
2026-10-18T10:55:27.6652582Z self-hosted task not cancelled do_3 Error: cancel_task failed with status 500
2026-10-18T10:55:27.6652741Z ✔ work goes to self-hosted runners only when the workspace says so (58.004871ms)
2026-10-18T10:55:27.6652847Z ✔ a task carries the sandbox's environment, without what only a sandbox has (0.560421ms)
2026-10-18T10:55:27.6652895Z ✔ handing over and withdrawing a task (3.429297ms)
2026-10-18T10:55:27.6652918Z ✔ the run says where it went (0.26643ms)
2026-10-18T10:55:27.6653008Z ✔ a task's repository comes from what the sandbox was started with (0.37661ms)
2026-10-18T10:55:27.6653030Z ℹ tests 91
2026-10-18T10:55:27.6653046Z ℹ suites 0
2026-10-18T10:55:27.6653063Z ℹ pass 91
2026-10-18T10:55:27.6653079Z ℹ fail 0
2026-10-18T10:55:27.6653103Z ℹ cancelled 0
2026-10-18T10:55:27.6653120Z ℹ skipped 0
2026-10-18T10:55:27.6653139Z ℹ todo 0
2026-10-18T10:55:27.6653154Z ℹ duration_ms 3337.840356
2026-10-18T10:55:27.6653184Z 
2026-10-18T10:55:27.6653201Z > @g1t/telemetry@0.1.0 test
2026-10-18T10:55:27.6653231Z > node --test src/*.test.ts src/otlp/*.test.ts
2026-10-18T10:55:27.6653247Z 
2026-10-18T10:55:27.8080134Z telemetry: usage not reported acme 2026-10 Error: billing answered 503
2026-10-18T10:55:27.8105387Z telemetry: a month that is over was not reported in full acme 2026-09 800
2026-10-18T10:55:27.8215131Z ✔ a free workspace's projects share one day's share, and a new day starts over (3.963827ms)
2026-10-18T10:55:27.8215316Z ✔ the plan last said holds; never said, it is unknown (0.890412ms)
2026-10-18T10:55:27.8215449Z ✔ on the plan, the month's total is reported, again when billing did not take it, and once it has, not again (5.07657ms)
2026-10-18T10:55:27.8215552Z ✔ the last report of a month goes before it ends (0.306581ms)
2026-10-18T10:55:27.8215881Z ✔ a month's last bytes are reported under that month after it ends; older months are not (4.530409ms)
2026-10-18T10:55:28.0269997Z ✔ a server span is a request, filed under its service and environment (3.498717ms)
2026-10-18T10:55:28.0329055Z ✔ an app on g1t.page has its requests counted from its tail events, not its SDK's spans (0.515611ms)
2026-10-18T10:55:28.0329245Z ✔ log records keep their severity, body and trace (5.986662ms)
2026-10-18T10:55:28.0335530Z ✔ metrics of each kind become points (2.202644ms)
2026-10-18T10:55:28.0353586Z ✔ a token names its project (0.504801ms)
2026-10-18T10:55:28.2508739Z ✔ a trace export in protobuf reads as OTLP/JSON does (11.570052ms)
2026-10-18T10:55:28.2512739Z ✔ logs and metrics in protobuf (3.361446ms)
2026-10-18T10:55:28.2519008Z ✔ a message cut short is refused, not read as garbage (0.685572ms)
2026-10-18T10:55:28.4101143Z ✔ a free workspace sends a thirtieth of 1 GB a day (1.477083ms)
2026-10-18T10:55:28.4112882Z ✔ past the day's share is over, and no cap never is (0.388031ms)
2026-10-18T10:55:28.4162131Z ✔ a held workspace takes nothing, a free one its day's share, the plan no cap; unknown is free (0.24376ms)
2026-10-18T10:55:28.4163825Z ✔ what is sent past the free amount costs by the GB; up to it, nothing (0.242881ms)
2026-10-18T10:55:28.4164863Z ✔ a row counts as what is kept of it (0.23947ms)
2026-10-18T10:55:28.5967633Z ✔ an error group linked to an issue keeps its old number when issues become work items (9.211468ms)
2026-10-18T10:55:28.7518229Z ✔ an error group's old number moves to legacy_number (5.06429ms)
2026-10-18T10:55:28.8266839Z ✔ routes lose their ids, keep their words (2.516934ms)
2026-10-18T10:55:28.8282053Z ✔ severities (0.501241ms)
2026-10-18T10:55:28.8293664Z ✔ ids and times (0.587082ms)
2026-10-18T10:55:28.8311226Z ✔ percentiles come from bucket counts, within a bucket of the truth (2.188164ms)
2026-10-18T10:55:28.8456574Z ✔ the same error thrown with different ids is one group (24.421877ms)
2026-10-18T10:55:29.1502179Z ✔ the dispatcher's half and the app's meet as one request, in either order (27.150921ms)
2026-10-18T10:55:29.2040182Z ✔ errors are grouped, counted, and open again when they come back (25.880849ms)
2026-10-18T10:55:29.2042433Z ✔ the overview counts requests, by minute and route, whether rolled up yet or not (33.788484ms)
2026-10-18T10:55:29.2209003Z ✔ a trace joins the request on g1t.page with the app's own spans and logs (19.543977ms)
2026-10-18T10:55:29.2356383Z ✔ logs are searched by words, levels and attributes, and paged (14.741958ms)
2026-10-18T10:55:29.2651481Z ✔ tokens: the deployments' one is kept and the same each time; others can be revoked (9.715379ms)
2026-10-18T10:55:29.2654752Z ✔ retention removes what is past it, and turning deployments off stops tail events (10.63951ms)
2026-10-18T10:55:29.2663907Z ✔ exports refuse addresses that loop or stay inside a network (7.908625ms)
2026-10-18T10:55:29.2664063Z ✔ search text, FTS queries and chart steps (0.444881ms)
2026-10-18T10:55:29.2736742Z ✔ a project of a workspace past its day's share is refused, and tail events keep only their requests (11.267521ms)
2026-10-18T10:55:29.2952954Z ℹ tests 35
2026-10-18T10:55:29.2953445Z ℹ suites 0
2026-10-18T10:55:29.2953651Z ℹ pass 35
2026-10-18T10:55:29.2954111Z ℹ fail 0
2026-10-18T10:55:29.2954134Z ℹ cancelled 0
2026-10-18T10:55:29.2954148Z ℹ skipped 0
2026-10-18T10:55:29.2954159Z ℹ todo 0
2026-10-18T10:55:29.2954170Z ℹ duration_ms 1654.955257
2026-10-18T10:55:29.3066913Z 
2026-10-18T10:55:29.3067026Z > @g1t/contracts@0.1.0 test
2026-10-18T10:55:29.3067054Z > node --test src/*.test.ts
2026-10-18T10:55:29.3067068Z 
2026-10-18T10:55:29.6084279Z ✔ formatting: bold, italic, strikethrough and code, as people and agents write them (6.362282ms)
2026-10-18T10:55:29.7793870Z ✔ words that only look like formatting stay words (4.144798ms)
2026-10-18T10:55:29.7793993Z ✔ mentions, channels and references; never inside code or a link's text (1.281302ms)
2026-10-18T10:55:29.7794057Z ✔ links go only to the web, mail or this site (0.976571ms)
2026-10-18T10:55:29.7794123Z ✔ XSS: script links, raw HTML and nested tricks are text (3.186576ms)
2026-10-18T10:55:29.7794189Z ✔ blocks: paragraphs keep their line breaks; code, lists, quotes, headings and rules (1.493443ms)
2026-10-18T10:55:29.7794255Z ✔ lists: numbered from where they start, nested by indenting, items with more than a line (0.848332ms)
2026-10-18T10:55:29.7794269Z ✔ deep nesting is bounded (5.21367ms)
2026-10-18T10:55:29.7794325Z ✔ plain text: the words without the marks, for previews (2.140334ms)
2026-10-18T10:55:29.7794379Z ✔ tables: a header, a --- row with its alignment, then rows (2.176814ms)
2026-10-18T10:55:29.7880965Z ✔ a member shows by their display name first (1.586903ms)
2026-10-18T10:55:29.7895477Z ✔ without a display name, a member shows by their username in its chosen case (0.35658ms)
2026-10-18T10:55:29.7906920Z ✔ a handle keeps its chosen case only when it is the same name (3.105855ms)
2026-10-18T10:55:29.9728251Z ✔ a coding agent is found by the address on its commits, not by its name (1.737393ms)
2026-10-18T10:55:29.9737710Z ✔ every agent has a unique id, lowercase addresses and logins, and a mark colour that is a hex or none (0.795441ms)
2026-10-18T10:55:30.1926756Z ✔ every connector has a unique id, a category and a scope (6.051251ms)
2026-10-18T10:55:30.1930083Z ✔ every category has connectors, and an available one in each scope it has is set up somewhere (0.989542ms)
2026-10-18T10:55:30.1955183Z ✔ every integration provider is an available connector, and no AI provider is one (2.070974ms)
2026-10-18T10:55:30.1961399Z ✔ only what g1t sets up end to end is available; the docs' Available today lists the same (1.679013ms)
2026-10-18T10:55:30.1979166Z ✔ a connector shows its personal side to you (0.659542ms)
2026-10-18T10:55:30.1990882Z ✔ a setup path names the workspace (0.446151ms)
2026-10-18T10:55:30.4122373Z ✔ timedD1 counts each statement's trip and each batch, and keeps bindings (3.764148ms)
2026-10-18T10:55:30.4145633Z ✔ openD1 reports the service time, the database time and the bookmark (46.145668ms)
2026-10-18T10:55:30.4169534Z ✔ openD1 without a session reads the primary and says so, with no db metric when nothing was read (1.322412ms)
2026-10-18T10:55:30.4169712Z ✔ sessionConstraint takes the two first-* words and a bookmark, and starts anything else on the primary (0.476751ms)
2026-10-18T10:55:30.5934144Z ✔ agrees with the Rust validator on every shared case (4.087027ms)
2026-10-18T10:55:30.5958741Z ✔ a parsed query keeps only what the catalog knows (0.682531ms)
2026-10-18T10:55:30.5968112Z ✔ every dataset has a time field and fields that are one thing each (0.468361ms)
2026-10-18T10:55:30.5980846Z ✔ a typed query is checked against the catalog (0.33101ms)
2026-10-18T10:55:30.5998880Z ✔ range ends are real dates or UTC times (0.352511ms)
2026-10-18T10:55:30.7700978Z ✔ a discovery document is read for its origins (2.782146ms)
2026-10-18T10:55:30.9308967Z ✔ anything else is not one (0.425351ms)
2026-10-18T10:55:30.9309703Z ✔ a connect link carries the site (0.228921ms)
2026-10-18T10:55:31.1051477Z ✔ agrees with the Rust validators on every shared case (3.193236ms)
2026-10-18T10:55:31.1068527Z ✔ addresses are flat, end in the id and survive renames (1.699583ms)
2026-10-18T10:55:31.1079964Z ✔ only a doc holds other folios (0.396771ms)
2026-10-18T10:55:31.1080023Z ✔ list queries are checked (0.347881ms)
2026-10-18T10:55:31.1080132Z ✔ the client calls exactly the artifacts service's folio methods (79.223761ms)
2026-10-18T10:55:31.1091610Z ✔ slides ops are checked by shape (0.709272ms)
2026-10-18T10:55:31.1091916Z ✔ design ops are checked by shape and size (28.027143ms)
2026-10-18T10:55:31.1097077Z ✔ dashboard ops check tiles, their queries and the grid (1.595113ms)
2026-10-18T10:55:31.3304249Z ✔ an id has its prefix and a 26-character suffix, and sorts by time (11.049951ms)
2026-10-18T10:55:31.3307488Z ✔ a floor bounds the ids of a span, as a range of any index that ends in the id (0.925392ms)
2026-10-18T10:55:31.5267272Z ✔ usernames take letters of either case, digits and single hyphens, up to 39 (2.668755ms)
2026-10-18T10:55:31.5316542Z ✔ reserved names are reserved in any case (0.558461ms)
2026-10-18T10:55:31.5378631Z ✔ a username is found lowercased and shown as written (0.748961ms)
2026-10-18T10:55:31.5378810Z ✔ the form's pattern says what the rule says (0.614841ms)
2026-10-18T10:55:31.5378885Z ✔ well-known GitHub action owners cannot be claimed, but stay valid names (0.649351ms)
2026-10-18T10:55:31.5524666Z ℹ tests 48
2026-10-18T10:55:31.5525685Z ℹ suites 0
2026-10-18T10:55:31.5525955Z ℹ pass 48
2026-10-18T10:55:31.5526162Z ℹ fail 0
2026-10-18T10:55:31.5526389Z ℹ cancelled 0
2026-10-18T10:55:31.5527314Z ℹ skipped 0
2026-10-18T10:55:31.5527540Z ℹ todo 0
2026-10-18T10:55:31.5528547Z ℹ duration_ms 2187.929134
2026-10-18T10:55:31.9575828Z ##[group]Run npm run test:deploy
2026-10-18T10:55:31.9575879Z [36;1mnpm run test:deploy[0m
2026-10-18T10:55:31.9575902Z shell: /usr/bin/bash -e {0}
2026-10-18T10:55:31.9575921Z env:
2026-10-18T10:55:31.9575935Z   CARGO_TERM_COLOR: never
2026-10-18T10:55:31.9575959Z   WRANGLER_SEND_METRICS: false
2026-10-18T10:55:31.9575974Z ##[endgroup]
2026-10-18T10:55:32.1383295Z 
2026-10-18T10:55:32.1383464Z > test:deploy
2026-10-18T10:55:32.1383493Z > node --test "scripts/deploy/*.test.mjs"
2026-10-18T10:55:32.1383551Z 
2026-10-18T10:55:32.3081410Z ✔ a release's version bump keeps the Rust caches' key, a new dependency changes it (3.549317ms)
2026-10-18T10:55:32.3084146Z ✔ the toolchain is read from rustc -V (0.500351ms)
2026-10-18T10:55:32.3086079Z ✔ the CLI's builder image is pinned, and keys its cache by its digest (0.31051ms)
2026-10-18T10:55:32.3111804Z ✔ a unit's hash is read from its files and folders (0.356431ms)
2026-10-18T10:55:32.3132109Z ✔ only the units the build did not use are pruned (3.311316ms)
2026-10-18T10:55:33.9205232Z error: no matching package named `base64` found
2026-10-18T10:55:33.9205369Z location searched: crates.io index
2026-10-18T10:55:33.9205562Z required by package `g1t-api v0.1.0 (/home/runner/work/repo/apps/api)`
2026-10-18T10:55:33.9205771Z note: offline mode (via `--offline`) can sometimes cause surprising resolution failures
2026-10-18T10:55:33.9205883Z help: if this error is too confusing you may wish to retry without `--offline`
2026-10-18T10:55:34.4091678Z ✔ the manifest matches every wrangler config in the repository (49.810145ms)
2026-10-18T10:55:34.4096222Z ✔ every wrangler.jsonc is found, and only checked-in ones (49.378314ms)
2026-10-18T10:55:34.4099594Z ✔ problems are found: an unlisted config, a later-stage binding, a wrong database, an unnamed KV (45.071206ms)
2026-10-18T10:55:34.4103608Z ✔ stages follow bindings: nothing binds to a unit that ships after it (0.660172ms)
2026-10-18T10:55:34.4110800Z ✔ inside a stage, a Worker that does not exist yet goes before those bound to it (1.324932ms)
2026-10-18T10:55:34.4114953Z ✔ Rust workers build with the shared script and the same wasm-opt level (1.328022ms)
2026-10-18T10:55:34.4116555Z ✔ shared crates and packages are read from workspace metadata (0.306541ms)
2026-10-18T10:55:34.4134314Z ✔ the runner's image is built from the runner crate and what it uses, on the base its lock names (0.673421ms)
2026-10-18T10:55:34.4134529Z ✔ services/runner/base.json records the base its folder builds (16.562762ms)
2026-10-18T10:55:34.4134770Z ✔ an image's hash ignores line endings, and its tags say what they are (176.518367ms)
2026-10-18T10:55:34.4137318Z ✔ only the lockfile entries the runner is built from name its image (0.390521ms)
2026-10-18T10:55:34.4150361Z ✔ the runner's deploy config names its image by reference, beside its wrangler.jsonc (26.09195ms)
2026-10-18T10:55:34.4156009Z ✔ the registry is asked for an image's manifest, without Docker (1.181522ms)
2026-10-18T10:55:34.4158245Z ✔ a push counts only when it ends with a digest, and is tried again (1.117642ms)
2026-10-18T10:55:34.4160006Z ✔ a static Linux binary is told from a dynamic one (1.224192ms)
2026-10-18T10:55:34.4163323Z ﹣ path dependencies agree with Cargo's own resolved graph (943.390149ms) # cargo metadata could not resolve offline
2026-10-18T10:55:34.4250201Z ✔ every import that leaves a unit's folder is covered by its dependencies or inputs (105.920542ms)
2026-10-18T10:55:34.4250355Z ✔ a shared crate's change reaches every unit built from it, and no other (1.068282ms)
2026-10-18T10:55:34.4250432Z ✔ a shared package's change reaches what imports it (0.45756ms)
2026-10-18T10:55:34.4250502Z ✔ a crate's tests, benches and examples deploy nothing (0.768552ms)
2026-10-18T10:55:34.4250570Z ✔ a Rust file compiled only for tests is found from what declares it (2.056684ms)
2026-10-18T10:55:34.4250627Z ✔ this repository's test-only sources are read from git (344.868358ms)
2026-10-18T10:55:34.4250698Z ✔ decide: a change only to tests deploys nothing (3.170826ms)
2026-10-18T10:55:34.4250775Z ✔ own folders, declared inputs and root files (0.989352ms)
2026-10-18T10:55:34.4250850Z ✔ a Cargo.lock change reaches only crates that use what changed (0.956281ms)
2026-10-18T10:55:34.4250937Z ✔ a package-lock change reaches through workspace links (0.781421ms)
2026-10-18T10:55:34.4251052Z ✔ decide: changed units deploy, others wait, unknown ones deploy (0.609121ms)
2026-10-18T10:55:34.4251118Z ✔ decide: --force deploys unchanged units; a commit missing from history deploys (0.337381ms)
2026-10-18T10:55:34.4251174Z ✔ decide: Cargo.lock counts only where it reaches (0.977952ms)
2026-10-18T10:55:34.4251237Z ✔ decide: the runner's image rebuilds only when what it is built from changed (0.483271ms)
2026-10-18T10:55:34.4251883Z ✔ the plan as data: migrations, and each stage's units in jobs that share a build (1.959434ms)
2026-10-18T10:55:34.4253429Z ✔ units are picked by short name, folder or Worker name (1.001282ms)
2026-10-18T10:55:34.4259156Z ✔ a CI job installs only what its units need (3.603087ms)
2026-10-18T10:55:34.4274278Z ✔ a deploy is annotated with its commit, and read back (0.640731ms)
2026-10-18T10:55:34.4275021Z ✔ the live commit: the live version's, looking through secret changes (0.766681ms)
2026-10-18T10:55:34.4275346Z ✔ Wrangler's output: pending migrations and the version a deploy made (0.653771ms)
2026-10-18T10:55:34.4275911Z ✔ the API's answers: the live commit as Wrangler's would give it (1.871083ms)
2026-10-18T10:55:34.9070452Z ✔ the API's answers: a Worker never deployed, and a refusal, never throw (503.445511ms)
2026-10-18T10:55:34.9071785Z ✔ the API is used only with the token Wrangler would be given (0.845371ms)
2026-10-18T10:55:34.9076895Z ✔ pending migrations: the folder's files less the names in d1_migrations (2.427624ms)
2026-10-18T10:55:35.0022701Z ✔ the pool runs everything, no more than its limit at once (15.58713ms)
2026-10-18T10:55:35.0039970Z ✔ self-hosting builds every Rust service the manifest says it runs (1.390263ms)
2026-10-18T10:55:35.0041389Z ✔ the self-hosting architecture page names every unit (0.393521ms)
2026-10-18T10:55:35.0042355Z ✔ the architecture's services page names every unit, with the services it binds to (4.800179ms)
2026-10-18T10:55:35.0043566Z ✔ resolveStack works on a manifest with no workspace crates or packages (5.38561ms)
2026-10-18T10:55:35.0114878Z ✔ decide: a commit older than what runs is never deployed by accident, even forced; --rollback means it (0.46615ms)
2026-10-18T10:55:35.0115045Z ✔ a deploy by hand reports to the repository on g1t, and a workflow's does not (2.589805ms)
2026-10-18T10:55:35.0115157Z ✔ a failed wrangler command is reported by its error, not its trace (0.408411ms)
2026-10-18T10:55:35.0115243Z ✔ Cloudflare failing is tried again; a mistake in what is deployed is not (0.555421ms)
2026-10-18T10:55:35.0115360Z ✔ sandboxes roll over at once when their image or container settings changed, and not otherwise (0.406041ms)
2026-10-18T10:55:35.0115458Z ✔ the deploy tool itself parses: a test that never imports it would not notice (62.594909ms)
2026-10-18T10:55:35.5623144Z ✔ the statements are all there (1.812813ms)
2026-10-18T10:55:35.5637508Z ✔ twenty invites each: the twenty-first is refused in the statement that writes (70.602285ms)
2026-10-18T10:55:35.5664590Z ✔ revoking an unused invite gives it back; an expired one never counted (127.469673ms)
2026-10-18T10:55:35.5664779Z ✔ a used invite is spent: revoking it does nothing and it still counts (62.75851ms)
2026-10-18T10:55:35.5667442Z ✔ a pending invite for the same address is found; a revoked one is not (60.912666ms)
2026-10-18T10:55:35.5691854Z ✔ staff grants add to the twenty and can take some back (61.019857ms)
2026-10-18T10:55:35.5692699Z ✔ signing up from the link spends the invite once and records who invited whom (58.959982ms)
2026-10-18T10:55:35.6643300Z ✔ a body that broke off is worth another try, a lockfile out of step is not (1.724163ms)
2026-10-18T10:55:35.6650812Z ✔ an install that ends without saying why, or stalls, is tried again (0.281861ms)
2026-10-18T10:55:35.6665905Z ✔ a dropped connection is tried again until the install passes (3.611837ms)
2026-10-18T10:55:35.6668749Z ✔ a real error fails at once (0.427201ms)
2026-10-18T10:55:35.6670616Z ✔ it gives up after its tries, with npm's exit code (0.393061ms)
2026-10-18T10:55:35.6672334Z ✔ a stalled install is run again (0.309631ms)
2026-10-18T10:55:35.8969204Z ✔ webhooks: the hourly purge deletes old deliveries by time (3.701947ms)
2026-10-18T10:55:35.8969934Z ✔ billing: this month's users are read from an index, not the ledger (91.162714ms)
2026-10-18T10:55:35.8970459Z ✔ events: a repository's events of one type, newest first, page by page (9.108107ms)
2026-10-18T10:55:35.8970564Z ✔ actions: a self-hosted runner's poll finds queued jobs by namespace, whatever its case (19.215046ms)
2026-10-18T10:55:35.8971739Z ✔ chat: a channel's messages and a thread's replies, newest first, page by page (4.614978ms)
2026-10-18T10:55:35.8971997Z ✔ chat: the sidebar's unread messages are read from each channel's index, after the last read (4.651218ms)
2026-10-18T10:55:35.8981623Z ✔ chat: a page's reactions are read by message, and a workspace's emoji by name (4.572148ms)
2026-10-18T10:55:36.0657077Z ✔ the runner's layer is the binary alone, at its path and mode, owned by root (6.163472ms)
2026-10-18T10:55:36.0661211Z ✔ the layer and entrypoint are what services/runner/Dockerfile builds (0.791091ms)
2026-10-18T10:55:36.0669309Z ✔ the config is the base's, with the layer, the entrypoint and no inherited command (1.127672ms)
2026-10-18T10:55:36.0681250Z ✔ the manifest names the base's layers, then the binary's, in the base's format (0.41056ms)
2026-10-18T10:55:36.0728587Z ✔ image references and bearer challenges are read (0.959751ms)
2026-10-18T10:55:36.0771489Z ✔ the runner's image is made in the registry from the base's manifest and one new layer, pulling none of the base (45.817827ms)
2026-10-18T10:55:36.0771872Z ✔ a base that is not where it should be, or not what base.json says, stops it (2.249455ms)
2026-10-18T10:55:36.0772356Z ✔ a registry that asks for a bearer token is given the one its realm trades the credentials for (3.948687ms)
2026-10-18T10:55:36.1642189Z scheduler: g1t-webhooks (* * * * *) is still running from the last time; skipped
2026-10-18T10:55:36.2126385Z scheduler: g1t-webhooks (* * * * *): 200 {"outcome":"exception"}
2026-10-18T10:55:36.2184833Z ✔ fields read numbers, ranges, lists and steps (2.949366ms)
2026-10-18T10:55:36.2200573Z ✔ the services' crons match when hosted g1t's would fire (2.663195ms)
2026-10-18T10:55:36.2207125Z ✔ what is due is each matching cron of each service (0.559451ms)
2026-10-18T10:55:36.2218615Z ✔ a run asks Wrangler for the handler, and a slow one is not doubled (50.133735ms)
2026-10-18T10:55:36.3666935Z ✔ a deploy is announced to status.g1t.sh with the token, and without one nothing is sent (47.17872ms)
2026-10-18T10:55:36.5093970Z ✔ an announcement that fails is a warning, never a failed deploy (0.947022ms)
2026-10-18T10:55:36.5094367Z ✔ the stages run inside the window: started before, finished after, even when they throw; a dry run says nothing (1.537293ms)
2026-10-18T10:55:36.5094462Z ✔ deploy.mjs announces every deploy, and the workflow passes it the token (0.899622ms)
2026-10-18T10:55:36.6327475Z ✔ discover actual hashed assets without archiving icons, source maps or library defaults (3.617127ms)
2026-10-18T10:55:36.6328195Z ✔ archive the old release's transitive chunks before replacing it (49.188194ms)
2026-10-18T10:55:36.6328446Z ✔ archive failures block cutover and immutable filename collisions are refused (5.781401ms)
2026-10-18T10:55:36.6343862Z ✔ a missing live asset aborts the archive instead of saving an HTML error as CSS (1.749083ms)
2026-10-18T10:55:36.6345451Z ✔ a release manifest skips unchanged uploads without scanning deployment history (1.693963ms)
2026-10-18T10:55:36.6346814Z ✔ provider rate limits wait and retry; persistent failure remains a failure (3.645887ms)
2026-10-18T10:55:36.6353904Z ✔ cutover verifies old and new assets and rejects HTML fallback or wrong build (5.65814ms)
2026-10-18T10:55:36.6373647Z ✔ cutover tolerates propagation delay but still requires the expected build and asset bytes (4.225428ms)
2026-10-18T10:55:39.7931883Z ✔ 1000 successive releases keep old tabs' assets and perform bounded incremental archive work (3166.395209ms)
2026-10-18T10:55:39.9970092Z ℹ tests 101
2026-10-18T10:55:39.9970329Z ℹ suites 0
2026-10-18T10:55:39.9970359Z ℹ pass 100
2026-10-18T10:55:39.9970384Z ℹ fail 0
2026-10-18T10:55:39.9970403Z ℹ cancelled 0
2026-10-18T10:55:39.9970420Z ℹ skipped 1
2026-10-18T10:55:39.9970442Z ℹ todo 0
2026-10-18T10:55:39.9970467Z ℹ duration_ms 7628.053589
2026-10-18T10:55:40.2965662Z ##[group]Run npm run test:conformance
2026-10-18T10:55:40.2965713Z [36;1mnpm run test:conformance[0m
2026-10-18T10:55:40.2965743Z shell: /usr/bin/bash -e {0}
2026-10-18T10:55:40.2965762Z env:
2026-10-18T10:55:40.2965791Z   CARGO_TERM_COLOR: never
2026-10-18T10:55:40.2965821Z   WRANGLER_SEND_METRICS: false
2026-10-18T10:55:40.2965836Z ##[endgroup]
2026-10-18T10:55:40.5070310Z 
2026-10-18T10:55:40.5070492Z > test:conformance
2026-10-18T10:55:40.5070585Z > node --test "conformance/*.test.mjs"
2026-10-18T10:55:40.5070615Z 
2026-10-18T10:55:42.8457888Z ✔ late enterprise overdue writes cannot reopen terminal invoices or pause paid workspaces (134.478156ms)
2026-10-18T10:55:42.9792404Z ✔ enterprise invoice acquisition freezes one payload and rejects stale balances after completion (127.520694ms)
2026-10-18T10:55:42.9792568Z ✔ a late enterprise invoice writer cannot recreate old lines after completion and rename (127.628543ms)
2026-10-18T10:55:42.9793188Z ✔ fee waivers refuse subscriptions that may still charge, including delinquent plans (119.050017ms)
2026-10-18T10:55:42.9793279Z ✔ demo detach finds all sources through bounded compound selects (114.588529ms)
2026-10-18T10:55:42.9793343Z ✔ payment, balance, dispute repayment and tax commit once together (110.26468ms)
2026-10-18T10:55:42.9793421Z ✔ a failure writing tax rolls back the credit and payment-stop updates (135.156588ms)
2026-10-18T10:55:42.9793454Z ✔ payment never clears an open dispute (111.992794ms)
2026-10-18T10:55:42.9793542Z ✔ concurrent invoice requests freeze one payload even as usage changes (106.572923ms)
2026-10-18T10:55:42.9793650Z ✔ a stale invoice calculation cannot create an attempt after payment changes the balance (105.17876ms)
2026-10-18T10:55:42.9793789Z ✔ the migration registry covers every billing migration (2.638235ms)
2026-10-18T10:55:42.9793970Z ✔ partial refunds, duplicate deliveries and reversed ordering debit only the cumulative total (230.6604ms)
2026-10-18T10:55:42.9794034Z ✔ refund tax failure rolls back the reversal and retries without a second debit (119.013287ms)
2026-10-18T10:55:42.9794097Z ✔ plan refunds reduce revenue without debiting prepaid usage credit (122.024383ms)
2026-10-18T10:55:42.9794159Z ✔ one card cannot fund concurrent trials or another trial after being replaced (113.925077ms)
2026-10-18T10:55:42.9794220Z ✔ usage allocation, source debits and ledger posting conserve credit across retries (109.357969ms)
2026-10-18T10:55:42.9794279Z ✔ an interrupted usage transaction consumes no allowance and a retry posts once (118.144835ms)
2026-10-18T10:55:42.9794335Z ✔ different workspaces share one bounded OSS pool and free overruns remain explicit (110.744681ms)
2026-10-18T10:55:44.1309027Z ✔ a complimentary allowance pays first and alone, and past it g1t covers rather than charging (151.88379ms)
2026-10-18T10:55:44.1323849Z ✔ changing the amount keeps the month's consumption; lowering it never creates a debt (122.387654ms)
2026-10-18T10:55:44.1347602Z ✔ late usage draws on the period it happened in, not the one it is posted in (107.547345ms)
2026-10-18T10:55:44.1347765Z ✔ charged past the allowance: g1t pays the allowance, the workspace's own card the rest (131.507321ms)
2026-10-18T10:55:44.1347855Z ✔ an enrollment's fee paid while enrolled is not evidence of the plan (117.270033ms)
2026-10-18T10:55:44.1347932Z ✔ an unlimited enrollment pays everything and still records what it used (135.978479ms)
2026-10-18T10:55:44.1347987Z ✔ an interrupted posting consumes no complimentary allowance (116.464642ms)
2026-10-18T10:55:44.1348007Z ✔ one open period per workspace (137.623132ms)
2026-10-18T10:55:44.1348069Z ✔ migration 0065 returns every workspace but flagon-io to Free, with an audit entry (127.817894ms)
2026-10-18T10:55:44.7931011Z ﹣ real Workers: CLI and MCP share durable updates, receipts and ownership rules (1.336922ms) # Build API/Work Workers and the g1t CLI first
2026-10-18T10:55:45.0056367Z ✔ identity purge work is atomic, idempotent and a prior restore prevents scheduling (71.882417ms)
2026-10-18T10:55:45.1495679Z ✔ chat purges the private AI conversation, preserves other tenants, retries failed rooms and rejects late writes (120.28379ms)
2026-10-18T10:55:45.1921994Z ✔ artifacts keep retry references when file deletion fails, then remove private state with FK enforcement (91.170774ms)
2026-10-18T10:55:45.3125461Z ✔ notification erasure retries presence cleanup, clears credentials and permanently blocks late delivery (119.748528ms)
2026-10-18T10:55:45.7229461Z ✔ destroyed document rooms reject late ensure calls and keep only a tombstone (408.98885ms)
2026-10-18T10:55:45.7763038Z ✔ erasing one member of a shared channel leaves everyone else's conversation alone (54.153373ms)
2026-10-18T10:55:45.8351358Z ✔ a shared channel's room shuts out only the erased member and tells nobody it was cleared (59.150703ms)
2026-10-18T10:55:45.9498805Z ✔ a workspace's large channel is deleted in chunks across calls, and nothing of it comes back (109.91885ms)
2026-10-18T10:55:46.0794607Z ✔ a purged workspace's slug can be made again: only what was said before the purge is dropped (129.114157ms)
2026-10-18T10:55:46.2828126Z ✔ vectors written while a document was being erased are taken back (145.370507ms)
2026-10-18T10:55:46.3633682Z ✔ a workspace's uploads are swept a page at a time, resuming after a failure (143.745104ms)
2026-10-18T10:55:47.0208399Z ✔ a late higher figure charges only what it adds, once (129.011466ms)
2026-10-18T10:55:47.0209295Z ✔ of two late reports worked out from the same figure, only one is charged (124.910168ms)
2026-10-18T10:55:47.0259069Z ✔ a closed month with no row yet takes the late figure as a charged row (126.322231ms)
2026-10-18T10:55:47.0259235Z ✔ a late correction draws on that month's allowances first (138.916705ms)
2026-10-18T10:55:47.0276892Z ✔ only a raise is charged: a lower late figure changes nothing (1.670863ms)
2026-10-18T10:55:47.2343933Z ✔ overlapping pushes cannot reserve the same final capacity (23.968306ms)
2026-10-18T10:55:47.4253256Z ✔ deleted retained data and interrupted write reservations still consume capacity (15.073799ms)
2026-10-18T10:55:47.4253417Z ✔ concurrent visibility changes cannot bypass public capacity (14.189607ms)
2026-10-18T10:55:47.4253516Z ✔ transfer admission uses destination capacity at the moment of mutation (16.942792ms)
2026-10-18T10:55:47.4253622Z ✔ native copy freezes new source writes until its storage snapshot is taken (17.283133ms)
2026-10-18T10:55:47.4253704Z ✔ a value's shape is its key paths and types, not its values (2.556125ms)
2026-10-18T10:55:47.4253791Z ✔ variables are kept by kind, and only GitHub's (2.739136ms)
2026-10-18T10:55:47.4253871Z ✔ the layout says where the workspace is, as GitHub lays it out (2.300824ms)
2026-10-18T10:55:47.4253948Z ✔ the diff names what g1t lacks or has differently, and what it adds (3.547397ms)
2026-10-18T10:55:47.4253967Z ℹ tests 53
2026-10-18T10:55:47.4253984Z ℹ suites 0
2026-10-18T10:55:47.4254001Z ℹ pass 52
2026-10-18T10:55:47.4254028Z ℹ fail 0
2026-10-18T10:55:47.4254060Z ℹ cancelled 0
2026-10-18T10:55:47.4254087Z ℹ skipped 1
2026-10-18T10:55:47.4254106Z ℹ todo 0
2026-10-18T10:55:47.4254128Z ℹ duration_ms 6794.91871
2026-10-18T10:55:47.7796047Z ##[group]Run npm run test:ops
2026-10-18T10:55:47.7796097Z [36;1mnpm run test:ops[0m
2026-10-18T10:55:47.7796123Z shell: /usr/bin/bash -e {0}
2026-10-18T10:55:47.7796136Z env:
2026-10-18T10:55:47.7796163Z   CARGO_TERM_COLOR: never
2026-10-18T10:55:47.7796180Z   WRANGLER_SEND_METRICS: false
2026-10-18T10:55:47.7796193Z ##[endgroup]
2026-10-18T10:55:47.9575708Z 
2026-10-18T10:55:47.9575974Z > test:ops
2026-10-18T10:55:47.9575996Z > node --test "scripts/ops/*.test.mjs"
2026-10-18T10:55:47.9576606Z 
2026-10-18T10:55:49.2679568Z ✔ refs, HEAD and differences are read as git writes them (9.877759ms)
2026-10-18T10:55:49.2709103Z ✔ a chain restores every ref, and the drill fails once the live repository differs (981.820413ms)
2026-10-18T10:55:49.3717389Z ✔ restore keeps only the refs the last entry names (211.126702ms)
2026-10-18T10:55:49.5049966Z ✔ today's configuration is one namespace that takes nothing new by name (6.855543ms)
2026-10-18T10:55:49.5080549Z ✔ each namespace's binding, jurisdiction and part in placing are read from the configuration (0.676801ms)
2026-10-18T10:55:49.5094785Z ✔ standings add up holdings and health, and warn about what needs doing (2.997436ms)
2026-10-18T10:55:49.5103137Z ✔ what Cloudflare has is checked against what is bound (1.107612ms)
2026-10-18T10:55:49.7037662Z ✔ the windows are the UTC month so far and the last 24 hours (5.833741ms)
2026-10-18T10:55:49.7069140Z ✔ a query asks for the variant's sums and dimensions under one alias (1.482453ms)
2026-10-18T10:55:49.7074377Z ✔ Workers Logs are read from whichever dataset the schema has, or skipped (0.889701ms)
2026-10-18T10:55:49.7079703Z ✔ groups are summed per name, named from the listing, sorted largest first, with totals (2.144025ms)
2026-10-18T10:55:49.7085284Z ✔ a dataset that errors or is missing is a note, and the others still report (33.239854ms)
2026-10-18T10:55:49.9461695Z ✔ the JSON report is one snake_case object with every row (1.833313ms)
2026-10-18T10:55:49.9461847Z ✔ the command line reads --json, --top and the account (2.367524ms)
2026-10-18T10:55:49.9462303Z ✔ errors, fallbacks, failed watcher queries and an all-empty account fail the check (1.473613ms)
2026-10-18T10:55:49.9462437Z ✔ the watcher queries are billing's, field for field, over the last full hour (25.396849ms)
2026-10-18T10:55:50.3915509Z ✔ keys, plans and what a restore records (5.664721ms)
2026-10-18T10:55:51.4478888Z ✔ restored repositories are served read-only, and pushes taken later are reconciled (1514.586148ms)
2026-10-18T10:55:52.2075469Z ✔ a git store over HTTP is restored into through its API (841.641925ms)
2026-10-18T10:55:52.3642650Z ✔ the command line has defaults and bounds (2.533245ms)
2026-10-18T10:55:52.3668429Z ✔ the window is the last N days (0.633522ms)
2026-10-18T10:55:52.3692018Z ✔ the query is for one script, with the variant's sums and dimensions (0.504941ms)
2026-10-18T10:55:52.3692209Z ✔ rows are named, summed per status and sorted by requests (1.212662ms)
2026-10-18T10:55:52.3692322Z ✔ Cloudflare's refusal becomes the error, so the next variant is tried (0.809142ms)
2026-10-18T10:55:52.3692390Z ✔ the telemetry questions filter on the script and on failures (0.800252ms)
2026-10-18T10:55:52.3692452Z ✔ a calculations answer becomes rows with counts, largest first (0.686221ms)
2026-10-18T10:55:52.3699182Z ✔ an events answer becomes plain records, the object id cut short (0.622521ms)
2026-10-18T10:55:52.3731045Z ✔ messages fall into buckets, expected or not (1.716883ms)
2026-10-18T10:55:52.3741493Z ✔ buckets sum the counts of their messages (0.794602ms)
2026-10-18T10:55:52.3742995Z ✔ the text report shows rates, statuses, buckets and what could not be read (29.261236ms)
2026-10-18T10:55:52.4977753Z ✔ a page's text leaves out scripts, styles and tags (2.749346ms)
2026-10-18T10:55:52.4999562Z ✔ a check passes on its status with every phrase on the page (0.568231ms)
2026-10-18T10:55:52.5012796Z ✔ a phrase only inside a script does not count (0.469831ms)
2026-10-18T10:55:52.5017747Z ✔ the sign-up check sends an address identity refuses before writing or counting (3.245507ms)
2026-10-18T10:55:52.5250253Z ℹ tests 34
2026-10-18T10:55:52.5250793Z ℹ suites 0
2026-10-18T10:55:52.5250993Z ℹ pass 34
2026-10-18T10:55:52.5251158Z ℹ fail 0
2026-10-18T10:55:52.5264786Z ℹ cancelled 0
2026-10-18T10:55:52.5265078Z ℹ skipped 0
2026-10-18T10:55:52.5265297Z ℹ todo 0
2026-10-18T10:55:52.5265506Z ℹ duration_ms 4499.133451
2026-10-18T10:55:52.8797080Z ##[group]Run node scripts/deploy.mjs manifest --check
2026-10-18T10:55:52.8797179Z [36;1mnode scripts/deploy.mjs manifest --check[0m
2026-10-18T10:55:52.8797208Z shell: /usr/bin/bash -e {0}
2026-10-18T10:55:52.8797224Z env:
2026-10-18T10:55:52.8797267Z   CARGO_TERM_COLOR: never
2026-10-18T10:55:52.8797285Z   WRANGLER_SEND_METRICS: false
2026-10-18T10:55:52.8797308Z ##[endgroup]
2026-10-18T10:55:53.2166908Z deploy/stack.jsonc is consistent with every wrangler.jsonc.
2026-10-18T10:55:53.5599133Z ##[group]Run node --test plugins/claude-code/test/hooks.test.mjs
2026-10-18T10:55:53.5600752Z [36;1mnode --test plugins/claude-code/test/hooks.test.mjs[0m
2026-10-18T10:55:53.5600810Z shell: /usr/bin/bash -e {0}
2026-10-18T10:55:53.5600842Z env:
2026-10-18T10:55:53.5600871Z   CARGO_TERM_COLOR: never
2026-10-18T10:55:53.5600885Z   WRANGLER_SEND_METRICS: false
2026-10-18T10:55:53.5600903Z ##[endgroup]
2026-10-18T10:56:00.5872568Z ▶ plan
2026-10-18T10:56:00.7410958Z   ✔ SessionStart starts the session (3.466837ms)
2026-10-18T10:56:00.7411143Z   ✔ UserPromptSubmit logs the prompt, cut to the limit (15.119519ms)
2026-10-18T10:56:00.7411267Z   ✔ a turn Claude Code starts itself for a background task is not a prompt (0.622571ms)
2026-10-18T10:56:00.7411351Z   ✔ UserPromptSubmit sends no title: g1t names the session from what it records (0.747321ms)
2026-10-18T10:56:00.7411424Z   ✔ G1T_RECORD_PROMPTS=0 keeps prompts back, and G1T_RECORD=0 everything (0.494711ms)
2026-10-18T10:56:00.7411492Z   ✔ PostToolUse sends the tool and its input's summary, never its response (3.062996ms)
2026-10-18T10:56:00.7411553Z   ✔ PostToolUse after a git push updates the head commit (1.459023ms)
2026-10-18T10:56:00.7411612Z   ✔ PostToolUse remembers the work item a command claims (0.671071ms)
2026-10-18T10:56:00.7411709Z   ✔ Stop sends a heartbeat with the transcript's usage, and SessionEnd reports it and ends the session with its reason (0.846341ms)
2026-10-18T10:56:00.7411903Z   ✔ events without a session, and other events, do nothing (0.790321ms)
2026-10-18T10:56:00.7411927Z ✔ plan (30.796809ms)
2026-10-18T10:56:00.7411942Z ▶ subagents
2026-10-18T10:56:00.7412000Z   ✔ SubagentStart starts a session of its own for the subagent (1.278332ms)
2026-10-18T10:56:00.7412088Z   ✔ SubagentStop reports its own transcript's usage and ends it with its final message, cut to the limit (604.368523ms)
2026-10-18T10:56:00.7412173Z   ✔ an Agent call gives its subagent the task, and once finished its final message, and nothing else of its answer (0.912772ms)
2026-10-18T10:56:00.7412235Z   ✔ what a subagent does is its own session's, and the files it writes are touched (6.631833ms)
2026-10-18T10:56:00.7412252Z   ✔ a skill is its name only (0.655182ms)
2026-10-18T10:56:00.7412581Z   ✔ branches made, commits, claims and g1t's MCP tools are touched (0.891461ms)
2026-10-18T10:56:00.7412683Z   ✔ a hand-off's work item comes with the session (0.22167ms)
2026-10-18T10:56:00.7412705Z ✔ subagents (616.055215ms)
2026-10-18T10:56:00.7412723Z ▶ summaries
2026-10-18T10:56:00.7412778Z   ✔ say what a tool was called with, in one short line (9.135467ms)
2026-10-18T10:56:00.7412798Z   ✔ hide what looks like a secret (1.114993ms)
2026-10-18T10:56:00.7412856Z   ✔ hide credentials wherever text is sent, and leave references alone (1.164792ms)
2026-10-18T10:56:00.7412886Z   ✔ find the work item in a branch name (1.121482ms)
2026-10-18T10:56:00.7412897Z ✔ summaries (13.108285ms)
2026-10-18T10:56:00.7412910Z ▶ the plugin's files
2026-10-18T10:56:00.7412922Z   ✔ parse as JSON (1.476413ms)
2026-10-18T10:56:00.7413007Z   ✔ the AGENTS.md snippet is the one in the docs (4.346849ms)
2026-10-18T10:56:00.7413027Z ✔ the plugin's files (6.277562ms)
2026-10-18T10:56:00.7413045Z ▶ with a working copy
2026-10-18T10:56:00.7413142Z   ✔ SessionStart gives Claude the branch's work item's work context (102.880647ms)
2026-10-18T10:56:00.7413237Z   ✔ the background half starts the session once, then logs into it (319.538929ms)
2026-10-18T10:56:00.7413333Z   ✔ a shell command's writes are this session's; what was uncommitted before it is not (242.699963ms)
2026-10-18T10:56:00.7413395Z   ✔ the CLI never guesses touched files from the whole working copy (339.564747ms)
2026-10-18T10:56:00.7413456Z   ✔ background retrieval reaches the next tool without auto-acknowledging (236.049391ms)
2026-10-18T10:56:00.7413517Z   ✔ hooks after SessionStart record; SessionEnd forgets the session (369.539385ms)
2026-10-18T10:56:00.7414050Z   ✔ a push that reached the remote updates the head commit (375.995837ms)
2026-10-18T10:56:00.7414131Z   ✔ each subagent is a session of its own under this one, whatever order its hooks arrive in (771.192351ms)
2026-10-18T10:56:00.7414227Z   ✔ five subagents of one type started at once each get their own Agent call's task, whatever order they start in (719.737413ms)
2026-10-18T10:56:00.7414337Z   ✔ a pending task is never handed to two subagents, and an exact subagent never takes another's (339.196727ms)
2026-10-18T10:56:00.7414417Z   ✔ a subagent's files give its task even when its Agent call was not kept (16.804072ms)
2026-10-18T10:56:00.7414503Z   ✔ a session started with no g1t remote is recorded once a command adds one (377.159009ms)
2026-10-18T10:56:00.7414591Z   ✔ a session given a g1t remote between prompts is recorded at the next one (123.825487ms)
2026-10-18T10:56:00.7414682Z   ✔ only commands that may add a remote look for one (18.853856ms)
2026-10-18T10:56:00.7414769Z   ✔ a subagent whose stop arrives first is started, then ended (359.472656ms)
2026-10-18T10:56:00.7414853Z   ✔ an Agent call that finished ends its subagent with what it reported (488.985783ms)
2026-10-18T10:56:00.7414951Z   ✔ a hand-off names its work item at the start (360.808388ms)
2026-10-18T10:56:00.7415043Z   ✔ a missing CLI records nothing and says so once (44.779925ms)
2026-10-18T10:56:00.7415129Z   ✔ a signed-out CLI is said once, at the next prompt (244.202796ms)
2026-10-18T10:56:00.7415184Z   ✔ outside a g1t repository nothing happens (37.764322ms)
2026-10-18T10:56:04.6067527Z   ✔ the script answers SessionStart on stdin quickly, as JSON (673.000933ms)
2026-10-18T10:56:04.7574238Z   ✔ the script prints nothing for a prompt, and never fails on bad input (184.479722ms)
2026-10-18T10:56:04.7574418Z   ✔ a CLI older than the plugin needs records nothing and says so once, with how to update it (145.219447ms)
2026-10-18T10:56:04.7574502Z   ✔ a CLI that refuses a command (exit 2) is said once, as one to update (191.700226ms)
2026-10-18T10:56:04.7574572Z   ✔ the stand-in CLI refuses what the real one refuses (19.235047ms)
2026-10-18T10:56:04.7574661Z   ✔ a session's usage is reported from its own transcript, to a CLI that takes it, and only the counts (879.980558ms)
2026-10-18T10:56:04.7574721Z   ✔ PowerShell commands are read as Bash ones are, and a subagent's act as its session (374.815565ms)
2026-10-18T10:56:04.7574797Z   ✔ a skill typed as /plugin:name is recorded once in its turn, however Claude Code then runs it (484.241873ms)
2026-10-18T10:56:04.7574872Z   ✔ with no work item in sight, Claude is told the session is recorded and when to open or claim one (36.285299ms)
2026-10-18T10:56:04.7574938Z   ✔ Claude is never nudged to retitle, and no prompt sets a title (939.592852ms)
2026-10-18T10:56:04.7574998Z   ✔ Claude's own commands get the session's id once it has started (268.830182ms)
2026-10-18T10:56:04.7575056Z   ✔ on a Node older than 18 nothing is recorded, and that is said once (19.178066ms)
2026-10-18T10:56:04.7575067Z ✔ with a working copy (10110.782985ms)
2026-10-18T10:56:04.7575124Z ✔ pending updates survive delivery and stay isolated between parent and child (7.898845ms)
2026-10-18T10:56:04.7575180Z ✔ a CLI too old to acknowledge is told to update, once per set of updates (3.088676ms)
2026-10-18T10:56:04.7575236Z ✔ an acknowledgement refreshes the inbox at once, from the shell or MCP (0.961822ms)
2026-10-18T10:56:04.7575248Z ▶ a transcript's usage
2026-10-18T10:56:04.7575302Z   ✔ counts each response once, per model and tier (2.213054ms)
2026-10-18T10:56:04.7575622Z   ✔ reads on from where it stopped, a line written in half counted once it is whole (5.31136ms)
2026-10-18T10:56:04.7575677Z   ✔ a transcript that cannot be read gives nothing, and never throws (1.322023ms)
2026-10-18T10:56:04.7575689Z ✔ a transcript's usage (9.265498ms)
2026-10-18T10:56:04.7575699Z ℹ tests 61
2026-10-18T10:56:04.7575710Z ℹ suites 6
2026-10-18T10:56:04.7575720Z ℹ pass 61
2026-10-18T10:56:04.7575730Z ℹ fail 0
2026-10-18T10:56:04.7575739Z ℹ cancelled 0
2026-10-18T10:56:04.7575749Z ℹ skipped 0
2026-10-18T10:56:04.7575761Z ℹ todo 0
2026-10-18T10:56:04.7575772Z ℹ duration_ms 10983.97965
2026-10-18T10:56:05.0629065Z ##[group]Run node scripts/plugins-release.mjs check
2026-10-18T10:56:05.0629135Z [36;1mnode scripts/plugins-release.mjs check[0m
2026-10-18T10:56:05.0629189Z [36;1mnode --test scripts/plugins-release.test.mjs[0m
2026-10-18T10:56:05.0629210Z shell: /usr/bin/bash -e {0}
2026-10-18T10:56:05.0629230Z env:
2026-10-18T10:56:05.0629255Z   CARGO_TERM_COLOR: never
2026-10-18T10:56:05.0629269Z   WRANGLER_SEND_METRICS: false
2026-10-18T10:56:05.0629290Z ##[endgroup]
2026-10-18T10:56:05.1451397Z g1t@g1t 0.3.1: the manifests agree and the published tree is only the plugin
2026-10-18T10:56:06.4498779Z ✔ this repository's manifests agree: g1t@g1t, one version (2.168364ms)
2026-10-18T10:56:06.4518752Z ✔ the build is the marketplace, the plugin without its tests, a README and the license (24.489007ms)
2026-10-18T10:56:06.4518938Z ✔ manifests that disagree stop the build (7.853695ms)
2026-10-18T10:56:06.4519342Z ✔ a file the script does not know about stops the build (5.090639ms)
2026-10-18T10:56:06.4525019Z ✔ anything that looks like a credential, or a credentials file, is never published (15.056838ms)
2026-10-18T10:56:06.4529093Z ✔ releases are tagged as claude plugin tag tags them (0.34333ms)
2026-10-18T10:56:06.4545087Z ✔ the token goes to git through its environment, never its arguments (0.45791ms)
2026-10-18T10:56:06.4545273Z ✔ publishing: the first commit and tag, nothing when unchanged, a new version for a changed plugin (1007.275221ms)
2026-10-18T10:56:06.4545441Z ✔ Codex catalog resolves its packaged skill and OAuth MCP server (7.865335ms)
2026-10-18T10:56:06.4793467Z ℹ tests 9
2026-10-18T10:56:06.4795438Z ℹ suites 0
2026-10-18T10:56:06.4795835Z ℹ pass 9
2026-10-18T10:56:06.4796020Z ℹ fail 0
2026-10-18T10:56:06.4796233Z ℹ cancelled 0
2026-10-18T10:56:06.4796452Z ℹ skipped 0
2026-10-18T10:56:06.4796669Z ℹ todo 0
2026-10-18T10:56:06.4796913Z ℹ duration_ms 1277.059825
2026-10-18T10:56:07.0611312Z Cache hit occurred on the primary key npm-full-Linux-d193595f755da186e76061e433b790e8f1849037a491c81d42ae1f4257286974, not saving cache.
2026-10-18T10:56:07.0614543Z (node:6407) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
2026-10-18T10:56:07.0614691Z (Use `node --trace-deprecation ...` to show where the warning was created)
2026-10-18T10:56:07.6383700Z [command]/usr/bin/git version
2026-10-18T10:56:07.6454817Z git version 2.39.5
2026-10-18T10:56:07.6562651Z Temporarily overriding HOME='/home/runner/_temp/f48d6993-fd1d-4caf-8e84-852062ff055d' before making global git config changes
2026-10-18T10:56:07.6569056Z Adding repository directory to the temporary git global config as a safe directory
2026-10-18T10:56:07.6574352Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/repo
2026-10-18T10:56:07.6701487Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-18T10:56:07.6800972Z [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-10-18T10:56:07.7324941Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/g1t\.sh\/\.extraheader
2026-10-18T10:56:07.7378199Z http.https://g1t.sh/.extraheader
2026-10-18T10:56:07.7400282Z [command]/usr/bin/git config --local --unset-all http.https://g1t.sh/.extraheader
2026-10-18T10:56:07.7482835Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/g1t\.sh\/\.extraheader' && git config --local --unset-all 'http.https://g1t.sh/.extraheader' || :"
2026-10-18T10:56:07.8023152Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
2026-10-18T10:56:07.8103022Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
2026-10-18T10:56:08.3466235Z Cleaning up orphan processes
