Performance is one issue. Testability is another. How do you test your pipeline changes? I am aware there's a tool that uses Docker to simulate what GitHub does on the backend but last time I tried it, it didn't work. It's not even supported by GitHub themselves and doesn't run like the real thing.

Once again, I will praise SourceHut CI. Being able to just run a freestyle pipeline without needing to commit and push to see if it works is great, and you can even SSH in to the agent when things go wrong. This is how CI should be done.

Yeah, you're right, there is a tool called act[1] that lets users test the GitHub Actions CI runs toward their local machine. The implementation looks very similar to GitHub Actions official runner, e.g use the identical provisioning scripts[2]. It is a very nice tool but serves a different purpose than us.

Regarding general testability with GitHub Actions, I'd recommend checking out the tmate action[3], which lets you debug your CI run with SSH.

[1] https://github.com/nektos/act

[2] https://github.com/actions/virtual-environments

[3] https://github.com/mxschmitt/action-tmate