* build: handle empty .patches files in patches-stats
Skip empty .patches files instead of trying to read the patch directory itself as a patch, matching the guard in script/lint.js.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NaKbwSnZWfbpde5rv7z4VT
* build: surface patches stats upload failures as a warning
Replace the `|| true` on the patches stats upload step with a `::warning::` annotation so failures are visible in GitHub Actions without failing the job.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NaKbwSnZWfbpde5rv7z4VT
---------
Co-authored-by: Claude <noreply@anthropic.com>