flutter pub get was re-running on every CI run because Base() attached a mutable WithMountedCache volume to /root/.pub-cache, making the execution cache key unstable. Extract toolchain() without cache mounts; pubGetLayer() now uses toolchain() so Dagger execution-caches pub get between runs. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>