The GitHub Actions job "CI" on grails-core.git/grails8-groovy6-canary has failed. Run started by GitHub user jamesfredley (triggered by jamesfredley).
Head commit for run: 78b62c57e4c684dd4a13a3f3db7a1dc4e88c4e45 / James Fredley <[email protected]> fix(config): track WriteFilteringMap mutations under Groovy 6 by excluding overridden methods from @Delegate WriteFilteringMap overrides put(String,Object), putAll(Map) and remove(Object) to record writes into the shared nestedDestinationMap (exposed via getWrittenValues()). But @Delegate on the `overlap` field also generated put(Object,Object)/putAll(Map)/remove(Object) forwarding straight to `overlap`, competing with those overrides. Under Groovy 6 a mutation can dispatch to the generated delegate method instead of the override, so the value lands in `overlap` but is never recorded in nestedDestinationMap. Effect: external .groovy config loading/merging silently lost values on Groovy 6 (ExternalConfigRunListener -> WriteFilteringMap), so getConfigProperty(...) returned null; and WriteFilteringMapSpec failed with getWrittenValues() empty. A plain-Groovy reproduction of the class works correctly, which is why it only surfaced through the full config-merge path and the Spock groovy-5.0 artifact's spec compilation - this is a genuine Groovy 6 production bug, not a test-only workaround. Exclude the three overridden mutators from @Delegate so only the tracking overrides (plus their compiler bridge methods) exist; every mutation is now recorded regardless of dispatch. Verified on Groovy 6.0.0-SNAPSHOT: :grails-core:test (309 tests) green, including WriteFilteringMapSpec :grails-test-examples-external-configuration:test green (ExternalConfigSpec, MergedConfigSpec) :grails-core:codeStyle green Assisted-by: claude-code:claude-4.8-opus Report URL: https://github.com/apache/grails-core/actions/runs/26660917756 With regards, GitHub Actions via GitBox
