Run #2 exposed two runner-mismatch bugs (now documented in architecture gitea-runners.md): - build-web failed with `corepack: command not found` — the fedora runners ship pnpm preinstalled via npm, not corepack. Call pnpm directly. - deploy jobs need an ssh client, which the base fedora images lack (they have rsync but not openssh-clients). Move deploy-api/deploy-web to `runs-on: infra`. build-api already passes on `runs-on: rust`. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016fKZzDpvjiJ9eYbPGgJvUP