Self-hosted runners persist a lot more across runs vs. GitHub-provided runners. Currently the code just skips cache restoration to the runner's local FS when invalidate-cache: true is set. However, the cache is usually already present in its restored location on self-hosted runners. So an additional check is needed to ignore that w/ invalidate-cache: true. I'll work up a PR.