GitHub check

Whole log, 33 KB
Current runner version: '2.338.1'
Runner name: 'blacksmith-8vcpu-ubuntu-2404-6vuauk57br2lu5ne'
Runner group name: 'blacksmith scale sets - blacksmith-8vcpu-ubuntu-2404'
Machine name: 'ip-172-31-73-130'
▸ GITHUB_TOKEN Permissions
Contents: read
Issues: write
Metadata: read
PullRequests: write
Secret source: Actions
Cache mode: write
Prepare workflow directory
Prepare all required actions
Getting action download info
Download action repository 'actions/checkout@v6' (SHA:d23441a48e516b6c34aea4fa41551a30e30af803)
Download action repository 'voidzero-dev/setup-vp@v1' (SHA:250f29ce396baf5e8f24498e17c0dfdebabc26eb)
Download action repository 'actions/github-script@v8' (SHA:ed597411d8f924073f98dfc5c65a23a2325f34cd)
Setting BLACKSMITH_ACTIONS_RESULTS_URL to https://results-receiver.actions.githubusercontent.com/
Complete job name: Native fingerprint diff
A job started hook has been configured by the self-hosted runner administrator
▸ Run '/setup.sh'
shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 150
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 371
  BLACKSMITH_CHECK_RUN_ID: 120764334564
  BLACKSMITH_JOB_DISPLAY_NAME: Native fingerprint diff
  GITHUB_ACTIONS_CACHE_MODE: write
Logging daemon started (blacksmithd for logs)
Results daemon started (blacksmithd for results)
Background adoption and SSH setup started (PID: 3172)

----------------------------------------
View this job: https://app.blacksmith.sh/pingdotgg/runs/40057733610/jobs/120764334564
SSH Access (using your GitHub SSH key):
  ssh -p 64000 runner@blacksmith-8vcpu-ubuntu-2404-6vuauk57br2lu5ne.vm.blacksmith.sh

No GitHub SSH key? Add one at:
https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account

----------------------------------------

VM ID: blacksmith-8vcpu-ubuntu-2404-6vuauk57br2lu5ne
Host: production-152.236.39.114-x8664
Host Agent PID: 4156002
Host Agent Git SHA: 1637818df
Host CPU Manufacturer: AuthenticAMD
Blacksmith Host Generation: gen 2
Petname: production-concrete-beagle-f5488158
Region: us-east
Rootfs Version: ubuntu24-full-x64-081926
OS Version: Ubuntu 24.04.4 LTS

Enabling Blacksmith transparent cache
▸ Run actions/checkout@v6
with:
  ref: b4cbb3056ff4a0098443389199c6c569b935ae92
  fetch-depth: 2
  repository: pingdotgg/t3code
  token: ***
  ssh-strict: true
  ssh-user: git
  persist-credentials: true
  clean: true
  sparse-checkout-cone-mode: true
  fetch-tags: false
  show-progress: true
  lfs: false
  submodules: false
  set-safe-directory: true
  allow-unsafe-pr-checkout: false
env:
  APP_VARIANT: production
  NODE_OPTIONS: --max-old-space-size=8192
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 150
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 371
  GITHUB_REPO_NAME: pingdotgg/t3code
Syncing repository: pingdotgg/t3code
▸ Getting Git version info
Working directory is '/home/runner/_work/t3code/t3code'
[command]/usr/local/bin/git version
git version 2.55.0
Temporarily overriding HOME='/home/runner/_work/_temp/78ec7a18-7f83-4269-9b70-6058b72a7eac' before making global git config changes
Adding repository directory to the temporary git global config as a safe directory
[command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
Deleting the contents of '/home/runner/_work/t3code/t3code'
▸ Determining repository object format
▸ Initializing the repository
[command]/usr/local/bin/git init /home/runner/_work/t3code/t3code
hint: Using 'master' as the name for the initial branch. This default branch name
hint: will change to "main" in Git 3.0. To configure the initial branch name
hint: to use in all of your new repositories, which will suppress this warning,
hint: call:
hint:
hint: 	git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: 	git branch -m <name>
hint:
hint: Disable this message with "git config set advice.defaultBranchName false"
Initialized empty Git repository in /home/runner/_work/t3code/t3code/.git/
[command]/usr/local/bin/git remote add origin https://github.com/pingdotgg/t3code
▸ Disabling automatic garbage collection
[command]/usr/local/bin/git config --local gc.auto 0
▸ Setting up auth
Removing SSH command configuration
[command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
[command]/usr/local/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
Removing HTTP extra header
[command]/usr/local/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
[command]/usr/local/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :"
Removing includeIf entries pointing to credentials config files
[command]/usr/local/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
[command]/usr/local/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
[command]/usr/local/bin/git config --file /home/runner/_work/_temp/git-credentials-4e58715f-be3d-47cb-b8b2-fb59053fdea3.config http.https://github.com/.extraheader AUTHORIZATION: basic ***
[command]/usr/local/bin/git config --local includeIf.gitdir:/home/runner/_work/t3code/t3code/.git.path /home/runner/_work/_temp/git-credentials-4e58715f-be3d-47cb-b8b2-fb59053fdea3.config
[command]/usr/local/bin/git config --local includeIf.gitdir:/home/runner/_work/t3code/t3code/.git/worktrees/*.path /home/runner/_work/_temp/git-credentials-4e58715f-be3d-47cb-b8b2-fb59053fdea3.config
[command]/usr/local/bin/git config --local includeIf.gitdir:/github/workspace/.git.path /github/runner_temp/git-credentials-4e58715f-be3d-47cb-b8b2-fb59053fdea3.config
[command]/usr/local/bin/git config --local includeIf.gitdir:/github/workspace/.git/worktrees/*.path /github/runner_temp/git-credentials-4e58715f-be3d-47cb-b8b2-fb59053fdea3.config
▸ Fetching the repository
[command]/usr/local/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=2 origin b4cbb3056ff4a0098443389199c6c569b935ae92
From https://github.com/pingdotgg/t3code
 * branch              b4cbb3056ff4a0098443389199c6c569b935ae92 -> FETCH_HEAD
[command]/usr/local/bin/git rev-parse --verify --quiet b4cbb3056ff4a0098443389199c6c569b935ae92^{object}
b4cbb3056ff4a0098443389199c6c569b935ae92
▸ Determining the checkout info
[command]/usr/local/bin/git sparse-checkout disable
[command]/usr/local/bin/git config --local --unset-all extensions.worktreeConfig
▸ Checking out the ref
[command]/usr/local/bin/git checkout --progress --force b4cbb3056ff4a0098443389199c6c569b935ae92
Updating files:  94% (26584/28163)
Updating files:  95% (26755/28163)
Updating files:  96% (27037/28163)
Updating files:  97% (27319/28163)
Updating files:  98% (27600/28163)
Updating files:  99% (27882/28163)
Updating files: 100% (28163/28163)
Updating files: 100% (28163/28163), done.
Note: switching to 'b4cbb3056ff4a0098443389199c6c569b935ae92'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at b4cbb305 Merge 42a0cf350f568e431e8884b9440a158df21875c9 into f41617580439f33ab55fa1ba100437a5b4c7d516
[command]/usr/local/bin/git log -1 --format=%H
b4cbb3056ff4a0098443389199c6c569b935ae92
▸ Run base_sha=$(git rev-parse HEAD^1)
base_sha=$(git rev-parse HEAD^1)
echo "base_sha=$base_sha" >> "$GITHUB_OUTPUT"
paths=$(git diff --no-renames --name-only "$base_sha" HEAD -- \
  apps/mobile/ packages/client-runtime/ packages/contracts/ packages/shared/ \
  assets/ scripts/ patches/ package.json pnpm-lock.yaml pnpm-workspace.yaml \
  .github/workflows/mobile-fingerprint-check.yml)
if [[ -n "$paths" ]]; then
  echo "relevant=true" >> "$GITHUB_OUTPUT"
else
  echo "relevant=false" >> "$GITHUB_OUTPUT"
  echo "No native fingerprint inputs changed; clearing any stale native change label." >> "$GITHUB_STEP_SUMMARY"
fi
shell: /usr/bin/bash -e {0}
env:
  APP_VARIANT: production
  NODE_OPTIONS: --max-old-space-size=8192
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 150
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 371
  GITHUB_REPO_NAME: pingdotgg/t3code
▸ Run voidzero-dev/setup-vp@v1
with:
  node-version-file: package.json
  cache: true
  run-install: args:
  - --filter=@t3tools/mobile...

  sfw: false
env:
  APP_VARIANT: production
  NODE_OPTIONS: --max-old-space-size=8192
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 150
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 371
  GITHUB_REPO_NAME: pingdotgg/t3code
Resolved Node.js version '26.12.1' from package.json
Resolved Vite+ version '1.3.0' from package.json
Installing Vite+@1.3.0...
[command]/usr/bin/bash -c set -o pipefail; curl -fsSL --connect-timeout 5 --max-time 15 https://viteplus.dev/install.sh | bash
info: installing vite-plus@1.3.0...
info: Preparing Node.js and pnpm...
info: Installing dependencies...
✓ Dependencies installed.
Setup:
  Preparing vite-plus environment.

Created Shims:
  /home/runner/.vite-plus/bin/node
  /home/runner/.vite-plus/bin/npm
  /home/runner/.vite-plus/bin/npx
  /home/runner/.vite-plus/bin/pnpm
  /home/runner/.vite-plus/bin/pnpx
  /home/runner/.vite-plus/bin/pn
  /home/runner/.vite-plus/bin/pnx
  /home/runner/.vite-plus/bin/yarn
  /home/runner/.vite-plus/bin/yarnpkg
  /home/runner/.vite-plus/bin/bun
  /home/runner/.vite-plus/bin/bunx
  /home/runner/.vite-plus/bin/vpx
  /home/runner/.vite-plus/bin/vpr

Next Steps:
  For Bash, run:
  . "/home/runner/.vite-plus/env"

  If your ~/.bashrc does not already load Vite+, add this command for interactive non-login Bash sessions.
  Login Bash shells must also load the command through their login profile.

  Restart an already-running IDE to load its environment. Run `vp env doctor` to verify.
✓ Vite+ setup complete.
Setting up Node.js 26.12.1 via vp env use...
[command]/home/runner/.vite-plus/bin/vp env use 26.12.1
Installing Node.js v26.12.1...
Using Node.js v26.12.1 (resolved from 26.12.1)
Auto-detected lock file: pnpm-lock.yaml
Using lock file: /home/runner/_work/t3code/t3code/pnpm-lock.yaml
Resolving dependency cache directory in: /home/runner/_work/t3code/t3code
Cache hit for: vite-plus-Linux-x64-pnpm-cdf5a404c5eda7b4f6fd7ee104ef70bab4f8dcf0ec383d98ff9dadaf32a25701
Received 666894336 of 1192149277 (55.9%), 635.4 MBs/sec
Received 1192149277 of 1192149277 (100.0%), 559.5 MBs/sec
Cache Size: ~1137 MB (1192149277 B)
[command]/usr/bin/tar -xf /home/runner/_work/_temp/65bd96cd-afc3-434b-87e5-a76405e320bf/cache.tzst -P -C /home/runner/_work/t3code/t3code --use-compress-program unzstd
Cache restored successfully
Cache restored from key: vite-plus-Linux-x64-pnpm-cdf5a404c5eda7b4f6fd7ee104ef70bab4f8dcf0ec383d98ff9dadaf32a25701
▸ Running vp install --filter=@t3tools/mobile... in /home/runner/_work/t3code/t3code...
[command]/home/runner/.vite-plus/bin/vp install --filter=@t3tools/mobile...
Scope: 22 of 33 workspace projects
? Verifying lockfile against supply-chain policies (2088 entries)...
✓ Lockfile passes supply-chain policies (2088 entries in 1.4s)
Lockfile is up to date, resolution step is skipped
Packages are hard linked from the content-addressable store to the virtual store.
  Content-addressable store is at: /home/runner/.local/share/pnpm/store/v11
  Virtual store is at:             node_modules/.pnpm
Packages: +957
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Progress: resolved 957, reused 954, downloaded 0, added 957, done
. prepare$ vp config --no-agent
. prepare: Done

devDependencies:
+ @coderabbitai/config 1.1.0
+ @shadcn/lint 0.1.5
+ @types/node 24.12.4
+ knip 6.34.0
+ typescript <- @tsc-rs/typescript 0.8.0
+ vite-plus 1.3.0

Done in 2.2s using pnpm v12.14.0
Successfully ran vp install --filter=@t3tools/mobile...
vp v1.3.0

Local vite-plus:
  vite-plus  v1.3.0

Tools:
  vite             v8.3.4
  rolldown         v1.2.14
  vitest           v5.0.5
  oxfmt            v0.73.0
  oxlint           v1.88.0
  oxlint-tsgolint  v7.0.2004
  tsdown           v0.23.1

Environment:
  Package manager  pnpm v12.14.0
  Node.js          v26.12.1 (.session-node-version)
▸ Run pnpm_version="$(node --print "require('./package.json').packageManager.split('@').pop()")"
pnpm_version="$(node --print "require('./package.json').packageManager.split('@').pop()")"
vp_pnpm_bin="$HOME/.vite-plus/package_manager/pnpm/$pnpm_version/pnpm/bin"
echo "$vp_pnpm_bin" >> "$GITHUB_PATH"
"$vp_pnpm_bin/pnpm" --version
shell: /usr/bin/bash -e {0}
env:
  APP_VARIANT: production
  NODE_OPTIONS: --max-old-space-size=8192
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 150
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 371
  GITHUB_REPO_NAME: pingdotgg/t3code
12.14.0
▸ Run mkdir -p "$RUNNER_TEMP/fp/head" "$RUNNER_TEMP/fp/base"
mkdir -p "$RUNNER_TEMP/fp/head" "$RUNNER_TEMP/fp/base"
for platform in ios android; do
  npx expo-updates fingerprint:generate --platform "$platform" > "$RUNNER_TEMP/fp/head/$platform.json"
done
shell: /usr/bin/bash -e {0}
env:
  APP_VARIANT: production
  NODE_OPTIONS: --max-old-space-size=8192
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 150
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 371
  GITHUB_REPO_NAME: pingdotgg/t3code
▸ Run git checkout --quiet "$BASE_SHA"
git checkout --quiet "$BASE_SHA"
# Re-sync node_modules to the base commit's lockfile before
# fingerprinting — a dep-changing PR must not fingerprint the base
# against head's installed packages.
pnpm install --filter=@t3tools/mobile...
cd apps/mobile
for platform in ios android; do
  npx expo-updates fingerprint:generate --platform "$platform" > "$RUNNER_TEMP/fp/base/$platform.json"
done
shell: /usr/bin/bash -e {0}
env:
  APP_VARIANT: production
  NODE_OPTIONS: --max-old-space-size=8192
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 150
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 371
  GITHUB_REPO_NAME: pingdotgg/t3code
  BASE_SHA: f41617580439f33ab55fa1ba100437a5b4c7d516
Scope: 22 of 33 workspace projects
? Verifying lockfile against supply-chain policies (2088 entries)...
✓ Lockfile passes supply-chain policies (2088 entries in 1s)
Lockfile is up to date, resolution step is skipped
Packages: +4
++++
Progress: resolved 4, reused 1, downloaded 0, added 4, done
. prepare$ vp config --no-agent
. prepare: Done
Done in 1.5s using pnpm v12.14.0
▸ Run changed=""
changed=""
{
  echo "## Native fingerprint diff"
  echo
  for platform in ios android; do
    head_hash="$(jq -r .hash "$RUNNER_TEMP/fp/head/$platform.json")"
    base_hash="$(jq -r .hash "$RUNNER_TEMP/fp/base/$platform.json")"
    if [ "$head_hash" = "$base_hash" ]; then
      echo "- ✅ **$platform**: unchanged (\`$head_hash\`) — OTA-compatible"
      continue
    fi
    changed="$changed $platform"
    echo "- 📱 **$platform**: \`$base_hash\` → \`$head_hash\` — merging requires a new native build before OTAs work again"
    jq -r -n \
      --slurpfile h "$RUNNER_TEMP/fp/head/$platform.json" \
      --slurpfile b "$RUNNER_TEMP/fp/base/$platform.json" '
        ($b[0].sources | map({ (.filePath // .id): .hash }) | add // {}) as $bm
        | $h[0].sources[]
        | select($bm[(.filePath // .id)] != .hash)
        | "  - \(.type): `\(.filePath // .id)`"'
  done
} >> "$GITHUB_STEP_SUMMARY"
echo "changed_platforms=${changed# }" >> "$GITHUB_OUTPUT"
shell: /usr/bin/bash -e {0}
env:
  APP_VARIANT: production
  NODE_OPTIONS: --max-old-space-size=8192
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 150
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 371
  GITHUB_REPO_NAME: pingdotgg/t3code
▸ Run actions/github-script@v8
with:
  script: const managedLabel = {
  name: "📱 Native Change",
  color: "d93f0b",
  description:
    "Changes the native fingerprint; merging blocks production OTAs until a new store build ships.",
};
const nativeChanged = (process.env.CHANGED_PLATFORMS ?? "").trim() !== "";
const issueNumber = context.payload.pull_request.number;

try {
  const { data: existing } = await github.rest.issues.getLabel({
    owner: context.repo.owner,
    repo: context.repo.repo,
    name: managedLabel.name,
  });

  if (
    existing.color !== managedLabel.color ||
    (existing.description ?? "") !== managedLabel.description
  ) {
    await github.rest.issues.updateLabel({
      owner: context.repo.owner,
      repo: context.repo.repo,
      name: managedLabel.name,
      color: managedLabel.color,
      description: managedLabel.description,
    });
  }
} catch (error) {
  if (error.status !== 404) {
    throw error;
  }

  try {
    await github.rest.issues.createLabel({
      owner: context.repo.owner,
      repo: context.repo.repo,
      name: managedLabel.name,
      color: managedLabel.color,
      description: managedLabel.description,
    });
  } catch (createError) {
    if (createError.status !== 422) {
      throw createError;
    }
  }
}

const { data: currentLabels } = await github.rest.issues.listLabelsOnIssue({
  owner: context.repo.owner,
  repo: context.repo.repo,
  issue_number: issueNumber,
  per_page: 100,
});
const hasLabel = currentLabels.some((label) => label.name === managedLabel.name);

if (nativeChanged && !hasLabel) {
  await github.rest.issues.addLabels({
    owner: context.repo.owner,
    repo: context.repo.repo,
    issue_number: issueNumber,
    labels: [managedLabel.name],
  });
} else if (!nativeChanged && hasLabel) {
  try {
    await github.rest.issues.removeLabel({
      owner: context.repo.owner,
      repo: context.repo.repo,
      issue_number: issueNumber,
      name: managedLabel.name,
    });
  } catch (removeError) {
    if (removeError.status !== 404) {
      throw removeError;
    }
  }
}

core.info(
  `PR #${issueNumber}: native fingerprint ${nativeChanged ? `changed (${process.env.CHANGED_PLATFORMS})` : "unchanged"}`,
);

  github-token: ***
  debug: false
  user-agent: actions/github-script
  result-encoding: json
  retries: 0
  retry-exempt-status-codes: 400,401,403,404,422
env:
  APP_VARIANT: production
  NODE_OPTIONS: --max-old-space-size=8192
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 150
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 371
  GITHUB_REPO_NAME: pingdotgg/t3code
  CHANGED_PLATFORMS: ios android
PR #24263: native fingerprint changed (ios android)
Post job cleanup.
Cache hit on primary key "vite-plus-Linux-x64-pnpm-cdf5a404c5eda7b4f6fd7ee104ef70bab4f8dcf0ec383d98ff9dadaf32a25701". Skipping save.
Post job cleanup.
[command]/usr/local/bin/git version
git version 2.55.0
Temporarily overriding HOME='/home/runner/_work/_temp/48e15556-0081-42b1-ad57-2724acc5d192' before making global git config changes
Adding repository directory to the temporary git global config as a safe directory
[command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
Removing SSH command configuration
[command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
[command]/usr/local/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
Warning: The process '/usr/local/bin/git' failed with exit code 128
A job completed hook has been configured by the self-hosted runner administrator
▸ Run '/job_completed.sh'
shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 150
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 371
  BLACKSMITH_CHECK_RUN_ID: 120764334564
  BLACKSMITH_JOB_DISPLAY_NAME: Native fingerprint diff
  GITHUB_ACTIONS_CACHE_MODE: write
Docker container cache not activated, skipping hash computation.
No active SSH sessions detected. Proceeding with shutdown immediately.
Cleaning up orphan processes