jamesfredley commented on PR #15557: URL: https://github.com/apache/grails-core/pull/15557#issuecomment-4409463913
## Final audit pass + 8.0.x merge (2026-05-08) Merged latest `8.0.x` (`b47917c1fe`, "Fix forge dockerBuildNative class-initialization conflicts" and the 8.0.0-M1 release/merge-back) into `grails8-groovy5-sb4`, then ran a final audit using parallel `librarian` (Groovy JIRA + GROOVY_5_0_X commit log) and `explore` (workaround code-path + silent-workaround sweep) sub-agents. ### Verdict per remaining workaround | # | Workaround | Verdict | Evidence | |---|---|---|---| | 1 | `render(Map)` File-truthiness | **Keep (Groovy semantics change, not a bug)** | GROOVY-11996 fix-version is **5.0.7**, not 5.0.6. The system property is an opt-out, not a revert. | | 2 | `VariableScopeVisitor` canonicalisation NPE (4 sites) | **Keep** | No matching JIRA on GROOVY_5_0_X. `:grails-datamapping-tck:compileGroovy` still fails with `BUG! exception in phase 'canonicalization'` on build #26. | | 3 | `boot4-disabled-integration-test-config` (5 test apps) | **Keep** | `MissingPropertyException` for action method parameters under `-PgrailsIndy=false` still reproduces on build #26. No JIRA. | | 4 | `ConfigurationBuilder` + `AbstractConstraint` | **Keep** | Spring 6/7 + Groovy 5 binding interaction; no upstream JIRA. | | 5 | `g.taglib` `@IgnoreIf` (`GspCompileStaticSpec`, `JsonViewTemplateResolverSpec`) | **Keep** | Regression of GROOVY-6362 / GROOVY-11817; no follow-up JIRA filed yet. | | 6 | `Validateable.resolveDefaultNullable()` reflection bypass | **Keep** | [GROOVY-11985](https://issues.apache.org/jira/browse/GROOVY-11985) is **OPEN**. Root cause is the GROOVY-8854 (Sep 2023) `TraitReceiverTransformer` change. | Cross-checked all 20 GROOVY-* tickets shipped in 5.0.6 and the 4 post-release commits on `GROOVY_5_0_X` HEAD - none of them match any remaining Grails workaround. Latest `5.0.6-SNAPSHOT` resolves to `a1c006c974` (GROOVY-11996, 2026-05-06). ### Pushed in this final pass - **`a0b74286ed`** - Merge `origin/8.0.x` (15 commits, includes 8.0.0-M1 release/merge-back and the forge `dockerBuildNative` class-init fix). - **`43ad57a296`** - Two follow-on cleanups the audit surfaced: - **Silent workaround in `grails-shell-cli/TemplateRendererImpl`**: the `render(CharSequence, File, Map, boolean)` (line 115), `render(File, File, Map, boolean)` (line 150), and `render(Resource, File, Map, boolean)` (line 193) overloads were *still* using `if (template && destination)` Groovy truthiness, hitting the same `File.asBoolean = exists() && (isDirectory() OR length>0)` trap that we fixed in `render(Map)` already. Rewrote all three to explicit `== null` checks with early returns, mirroring the `grails-core` counterparts. - **Stale JIRA reference in `grails-data-hibernate5/TraitPropertyAccessStrategy`**: dropped the misleading `// See https://issues.apache.org/jira/browse/GROOVY-11512` comment. GROOVY-11512 was closed and fixed in `5.0.0-alpha-11` / `4.0.24` (2024-11-05), long before this PR. The boolean-getter fallback is plain JavaBean-conventions defence, not Groovy-version-conditional. ### What is **not** changing in this pass - **`GenerateControllerCommand.generateFile` typed-positional bypass** stays as defence-in-depth. The `render(Map)` callee is fixed, but scaffolding silent-no-op is bad UX so the explicit-overload bypass is cheap insurance. - **`TraitPropertyAccessStrategy` boolean-getter fallback** stays as benign JavaBean defence (just dropped the stale JIRA comment). ### Local verification ``` JAVA_HOME=/.../corretto-21 ./gradlew :grails-shell-cli:test :grails-data-hibernate5:classes JAVA_HOME=/.../corretto-21 ./gradlew :grails-geb:compileTestFixturesGroovy -PgrailsIndy=false --rerun-tasks JAVA_HOME=/.../corretto-21 ./gradlew :grails-test-examples-geb:compileIntegrationTestGroovy -PgrailsIndy=false --rerun-tasks ``` All PASS. PR description has been refreshed in full and CI is now running on the merged + final-pass HEAD `43ad57a296`. @jdaugherty / @paulk-asert - this is the burn-down endpoint locally. The 6 items in the table above are everything that still survives full audit against 5.0.6-SNAPSHOT build #26. -- 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]
