What happened

Verify Agent Ghost.yml installed a krill-desktop.jar whose bytecode did not contain the PR’s changes. Bytecode inspection on krill#527 (CompositionLocalProvider wrapper in DarkBlueGrayTheme) confirmed the compiled class referenced a content() call from a commit predating the PR head — the .class file was restored from the Gradle build cache rather than compiled from the checked-out PR source.

gradle/actions/setup-gradle@v5 persists the Gradle build cache (~/.gradle/caches/build-cache) across workflow runs. When the cache key matched a prior run’s output for a .kt file that the PR modified, Gradle reused the stale cached .class and skipped recompilation. The resulting jar passed Ghost’s MCP-observable checks but ran the wrong code.

Fix

Prevention