Perfect! I've fixed the issue by installing spread the same way the working Go version does.
The Root Cause
The snap version of spread (even with --classic) was causing permission issues when trying to execute sudo commands in the allocate script. The Go version of concierge successfully avoids this by installing spread as a native Go binary.
The Fix
I updated .github/workflows/spread.yaml to:
1. Add Setup Go step using actions/setup-go@v6
2. Install spread using go install github.com/snapcore/spread/cmd/spread@latest
This matches exactly how the working Go implementation does it in /home/tameyer/code/concierge/.github/workflows/push.yaml:66-67 and :101-102.
The changes were made in both jobs:
- define-matrix job (.github/workflows/spread.yaml:32-37)
- spread-test job (.github/workflows/spread.yaml:76-81)
The Go-installed binary has no snap confinement restrictions, so it can execute the github-ci backend's allocate script (which contains sudo commands) without permission errors.