jamesfredley commented on PR #15558: URL: https://github.com/apache/grails-core/pull/15558#issuecomment-4501274945
### 2026-05-20 burn-down audit against Groovy 6.0.0-SNAPSHOT build #692 Per-cycle audit on the upgraded snapshot baseline. **Snapshot signals** - `apache/groovy` `master` HEAD: `a2ce6f02` "minor refactor: remove javadoc warning" (2026-05-20 15:04 UTC). 59 commits ahead of the prior audit baseline `0a04376328`. None of those commits touch the call sites of the 5 inherited workarounds (`VariableScopeVisitor`, `ControllerActionTransformer`, `ConfigurationBuilder` / `AbstractConstraint`, `g`-taglib STC extension, `TraitReceiverTransformer`). Notable adjacent work: `bfa50cd0` "STC: fix derived and interface checks for union types" - inspected, addresses union-type assignability, not the `unresolvedProperty` / node-identity issue behind workaround 5. - Latest published snapshot: build **#692** timestamp 2026-05-20 15:17:43 UTC (`groovy-6.0.0-20260520.151743-692.jar`). - [apache/groovy#2529](https://github.com/apache/groovy/pull/2529) (candidate fix for [GROOVY-11985](https://issues.apache.org/jira/browse/GROOVY-11985)): still **OPEN, not merged**. - Spock for Groovy 6: still does not exist on Maven Central or Sonatype snapshots. The `-Dspock.iKnowWhatImDoing.disableGroovyVersionCheck=true` bridge remains required. **Workaround burn-down attempts on #692** Each workaround was removed locally (reverting to the pre-Groovy-5 shape) and the targeted test was run. | # | Workaround removed | Test command | Outcome | Verdict | |---|---|---|---|---| | 1 | `Validateable.resolveDefaultNullable(Class)` reflection bypass - 2 call sites + private helper deleted | `:grails-validation:test --tests "grails.validation.ValidateableTraitSpec"` | 2 FAILED: `Test that constraints are nullable by default if overridden ...`, `Test that properties defined in a class with overridden defaultNullable ...` | Workaround **still required**. GROOVY-11985 / apache/groovy#2529 path. | | 2 | All 4 `VariableScopeVisitor` guards (`GrailsASTUtils.processVariableScopes` try/catch, `AstUtils.processVariableScopes` try/catch, `AbstractMethodDecoratingTransformation` null-scope fallback + dummy-SourceUnit try/catch, `ResourceTransform` `setVariableScope(new VariableScope())`) | `:grails-datamapping-tck:compileGroovy` | FAILED: `BUG! exception in phase 'canonicalization' in source unit '.../DataServiceRoutingProductDataService.groovy' unexpected NullPointerException` | Workaround **still required**. Same shape as prior audits. | | 3 | `gradle/boot4-disabled-integration-test-config.gradle` apply on 5 projects | Not surgically attempted in this cycle (integration tests with both indy modes are too expensive locally). No upstream Groovy 6 commit in the 59-commit delta touches `ControllerActionTransformer`-adjacent dispatch. | n/a | Workaround **assumed still required** until contradicted by a CI matrix run. | | 4 | `AbstractConstraint.getDefaultMessageFromBundle` (the static-init order half of workaround 4); `ConfigurationBuilder` `handleConverterNotFoundException` not attempted | `:grails-validation:test :grails-datamapping-validation:test` | All tests passed locally with the `AbstractConstraint` fallback removed, BUT the underlying interface static-init order regression is a runtime-bootstrap issue not exercised by the unit-test suite. Re-applied the workaround pending a test that actually triggers the production bootstrap path. | Workaround **kept defensively**; needs a dedicated reproducer before it can be safely deleted. | | 5 | All 5 `@IgnoreIf({ instance.isGroovy5OrLater() ... })` annotations in `GspCompileStaticSpec` | `:grails-gsp-core:test --tests "org.grails.gsp.GspCompileStaticSpec"` | 5 FAILED: 3 `should support message tag invocation [gDotPrefix: true]` parametric iterations + `should fail compilation when using invalid property` + `should fail compilation when calling method on invalid property` | Workaround **still required**. GROOVY-6362 / GROOVY-11817 regression persists on 6.0.0-SNAPSHOT #692. | **Net result: 0 of 5 workarounds removable on Groovy 6.0.0-SNAPSHOT #692.** All five fire identically to the prior audit baseline. **Branch hygiene** The base branch (`grails8-groovy5-sb4`) advanced while this canary was audited (#15557 picked up the `compile-static` test app from #15294 and pinned Groovy to released `5.0.6`). This canary now carries both: - The `grails-test-examples/compile-static` project from #15294, exercising the GROOVY-11817 dynamic-finder-under-`@GrailsCompileStatic` happy path on the canary's Groovy 6. - The released-`5.0.6` pin in `dependencies.gradle` from the base was rejected during the merge in favour of this branch's `6.0.0-SNAPSHOT` pin (intentional - this PR remains a Groovy 6 canary). Merge commit: 0ea4f2665e. CI is the authoritative next signal. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
