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]

Reply via email to