45725acc7c
The backend test step fails on the self-hosted runner after 8s while passing on Windows, in a clean Linux container, and in CI's exact build-then-test order. The job log is not readable via the Gitea API (401), so step boundaries are the only available telemetry: splitting restore / build / test makes the failing phase identifiable from step timings alone. Restore retries once, mirroring the npm ci and dotnet SDK retries already in this workflow for the same runner's known flakiness. The suite itself is unchanged — still the whole suite, nothing filtered or skipped. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>