Repository navigation
cluster: Widget XML stop-ship batches A+B+C (#2883/#2884/#2885) - #2897
Conversation
…#2883) Remove committed sys__UserDependency--rxconfig/Widgets/*.xml from batch A product packages (baseWidgets, defaultLanguage, event, openGraph, twitter) now that modern widgets/<stem>/ roots exist (#2862). Add PSWidgetXmlInstallEmitter so package build materializes install Widget XML from modern for modern-only packages (deployer/PSWidgetDao wire format). Keep PSLegacyDefinitionXmlShim and upgrade compilers. Document 48→40 committed Widget def XML count. Fixes #2883 Refs #2630 #2626 #2862 > Co-Authored by Grok Build using grok-4.5 with agent main.
…ic) (#2884) Remove committed sys__UserDependency--rxconfig/Widgets/*.xml from batch B product packages (high-traffic + residual long-tail, 20 widgets / 14 pkgs) now that modern widgets/<stem>/ roots exist (#2862). Add PSWidgetXmlInstallEmitter so package build materializes install Widget XML from modern for modern-only packages (deployer/PSWidgetDao wire format). Leave batch A dual-ship committed XML (sibling #2883). Keep PSLegacyDefinitionXmlShim and upgrade compilers. Document 48→28 committed Widget def XML count. Fixes #2884 Refs #2630 #2626 #2862 > Co-Authored by Grok Build using grok-4.5 with agent main.
#2885) Remove committed sys__UserDependency--rxconfig/Widgets/*.xml from batch C product packages (19 widgets / 19 packages) now that modern widgets/<stem>/ roots exist (#2862). Add PSWidgetXmlInstallEmitter so package build materializes install Widget XML from modern for modern-only packages. Refresh definition-xml-shim-removal-criteria M1 snapshot (48→29) and widget inventory; waive perc.Test. Keep PSLegacyDefinitionXmlShim. Fixes #2885 Refs #2630 #2626 #2852 #2862 > Co-Authored by Grok Build using grok-4.5 with agent main.
Union A+B ship-exit: keep batch A modern-only tests, add batch B ship-exit materialize round-trip, dual-issue docs/inventory (48→20 remaining for C+Test). > Co-Authored by Grok Code using grok-4.5 with agent night-issue-prs-cluster.
Union A+B+C ship-exit: batch C modern-only materialize tests, inventory 48→1 (perc.Test waiver), M1 product non-waived Widget XML cleared in criteria snapshot. > Co-Authored by Grok Code using grok-4.5 with agent night-issue-prs-cluster.
Code Review SummaryStatus: 3 Issues Found | Recommendation: Address before merge Overview
Issue Details (click to expand)WARNING
SUGGESTION
Files Reviewed (9 files)
Fix these issues in Kilo Cloud Previous Review Summaries (2 snapshots, latest commit 8d89f3a)Current summary above is authoritative. Previous snapshots are kept for context only. Previous review (commit 8d89f3a)Status: 1 Issue Found | Recommendation: Address before merge Overview
Issue Details (click to expand)WARNING
Files Reviewed (8 files)
Fix these issues in Kilo Cloud Previous review (commit ae114a6)Status: 1 Issue Found | Recommendation: Address before merge Overview
Issue Details (click to expand)WARNING
Files Reviewed (8 files)
Reviewed by step-3.7-flash · Input: 190K · Output: 20.3K · Cached: 2.7M Review guidance: REVIEW.md from base branch |
Mirror batch A/B: after first materializeInstallWidgetXml, assert a second call returns 0 so overwrites of already-present install XML are caught. Evidence: cd modules/perc-packages; ../../mvnw.cmd clean install → BUILD SUCCESS > Co-Authored by Grok CLI using grok-4 with agent night-issue-prs-post-work.
Mirror batch A/B: after first materializeInstallWidgetXml, assert a second call returns 0 so overwrites of already-present install XML are caught. Evidence: cd modules/perc-packages; ../../mvnw.cmd clean install → BUILD SUCCESS > Co-Authored by Grok CLI using grok-4 with agent night-issue-prs-post-work.
8d89f3a to
23154c7
Compare
| throw new PSWidgetXmlException( | ||
| "Cannot emit install Widget XML without stem/id under " + packageDir); | ||
| } | ||
| Path out = widgetsDir.resolve(stem + ".xml"); |
There was a problem hiding this comment.
WARNING: No duplicate-stem guard before writing install Widget XML
materializeInstallWidgetXml writes stem + ".xml" in a loop without checking whether a previous widget already claimed that path. If two modern widgets ever resolve to the same stem (e.g. duplicate manifest ids), the second silently overwrites the first and the return value overcounts. compileModernWidgets sorts by id but does not deduplicate.
Consider tracking written stems in a Set<String> and either skipping duplicates with a warning or failing fast.
Reply with @kilocode-bot fix it to have Kilo Code address this issue.
| String type = res.getType() != null ? res.getType().trim().toLowerCase(Locale.ROOT) : ""; | ||
| if ("image".equals(type) || "file".equals(type) || type.isEmpty()) { | ||
| // Thumbnail already handled; skip generic files that are not CSS/JS. | ||
| if (!"css".equals(type) && !"js".equals(type)) { |
There was a problem hiding this comment.
SUGGESTION: Redundant conditional branches in resource filtering
The outer if ("image" || "file" || empty) combined with the inner if (!css && !js) is completely redundant with the subsequent if (!css && !js) at line 200. For image/file/empty types the inner branch always continues, and line 200 would produce the identical result. The outer block adds no behavioral value and could confuse future maintainers into thinking it gates a distinct case.
Reply with @kilocode-bot fix it to have Kilo Code address this issue.
| model.getContentType() != null && !model.getContentType().isBlank() | ||
| ? model.getContentType() | ||
| : "velocity"; | ||
| sb.append("\t<Content type=\"").append(escapeAttr(contentType)).append("\"><![CDATA["); |
There was a problem hiding this comment.
SUGGESTION: Content CDATA formatting differs from Code CDATA and original Widget XML
The emitted <Content type="..."><![CDATA[...]]></Content> has no internal newlines or indentation, while the <Code> element above it and the original committed Widget XML templates both use indented CDATA sections. This produces install XML that differs in whitespace from the committed originals, which may complicate diff-based review of generated artifacts.
Reply with @kilocode-bot fix it to have Kilo Code address this issue.
…ces (#3004) PR #2897 removed dual-ship sys__UserDependency--rxconfig/Widgets/*.xml from product packages (modern widgets/<stem>/ only). Four sitemanage package-file regression tests still asserted on the removed install Widget XML paths and failed on main (4 failures / 1009 tests). Update PercOpenGraph, SocialButtons, TwitterSummaryCards, and Registration deprecation tests to read component-package.json / snippets while preserving the same behavioral assertions. Evidence: cd projects/sitemanage; ../../mvnw.cmd clean install → BUILD SUCCESS > Co-Authored by Grok using grok-4.5 with agent main.
* feat(sitemanage): default modernPackageRoots for product/H2 installs (#3130) When widgetDao.modernPackageRoots is blank, discover package roots under ${rxdeploydir}/Packages/Modern (PSModernPackageRootDefaults), materializing from the perc-packages classpath when the install tree is empty. Stage Packages/Modern in the distribution and include it in upgrade overwrite. Keeps PSLegacyDefinitionXmlShim dual-run fallback (#2852). Tests cover modern-present and modern-absent selection. Criteria/dual-run docs updated. Parent: #2630 · Fixes #3130 > Co-Authored by Grok Build using grok-4.5 with agent main. * fix(dual-run): selection metrics evidence harness for M2 (#3131) Add cumulative modern/legacy (and gadget none) dual-run counters, snapshot maps, and formatSelectionMetricsSummary() on PSWidgetDao and GadgetRegistry. CI harness tests assert modern vs legacy selection metrics; criteria doc documents how to measure M2. No shim deletion. Parent: #2630 > Co-Authored by Grok Build using grok-4.5 with agent main. * docs(#3132): criteria M2 snapshot + operator dual-run checklist Refresh definition-XML shim removal criteria Status snapshot (2026-08-12) for M1/M2/M3/G1-G6 with merged PR links (#3024/#3025/#3026, cluster #2897) and open evidence PRs (#3130/#3131). Expand dual-run operator checklist for H2 qa-up and product install: how to read metrics, when shim must stay, and what evidence closes M2. Explicitly keep #2852 blocked until M1-M3+G1-G6. No code deletion. Parent: #2630 · Fixes #3132 > Co-Authored by Grok Build using grok-4.5 with agent main. * fix(dual-run): Zip Slip guards + diagnostic logs for modern package roots (#3130) Address PR #3134 review threads: log resolved modern root paths and full IOException stack; jar URI parse without URL round-trip; safeResolveUnder on classpath materialize (CodeQL Zip Slip); unit coverage for path escape. > Co-Authored by Grok CLI using agent overnight-pr-follow-up.
Summary
Overnight same-file thrash absorption for Widget def XML stop-ship batches A/B/C.
Three independent PRs each re-implemented
PSWidgetXmlInstallEmitter+ dual-ship package-build materialize and rewrote the same thrash paths with different batch-only inventory counts. This cluster unions all three ship-exits ontomainso product committed Widget XML goes 48 → 1 (only waivedperc.Test).Thrash files (shared by ≥3 PRs)
modules/perc-packages/src/main/java/com/percussion/packages/PSPackageBuilder.javamodules/perc-packages/src/main/java/com/percussion/packages/widgetxml/PSWidgetXmlDualShip.javamodules/perc-packages/src/main/java/com/percussion/packages/widgetxml/PSWidgetXmlInstallEmitter.javamodules/perc-packages/src/main/java/com/percussion/packages/widgetxml/PSWidgetXmlPackageCompiler.javamodules/perc-packages/src/test/java/com/percussion/packages/widgetxml/PSWidgetXmlDualShipTest.javamodules/perc-packages/src/test/java/com/percussion/packages/widgetxml/PSWidgetXmlInstallEmitterTest.javadocs/ai-generated/tasks/template-assembler-normalization/dual-ship-widget-xml-exit.mddocs/ai-generated/tasks/template-assembler-normalization/widget-xml-inventory.mdPlus per-batch Widget XML deletes under
Packages/**/sys__UserDependency--rxconfig/Widgets/and M1 criteria refresh (definition-xml-shim-removal-criteria.md).What landed
Supersedes
fix/issue-2883-stop-ship-widget-xml-batch-afix/issue-2884-stop-ship-widget-xml-batch-bfix/issue-2885-widget-def-xml-batch-cTest plan / gates
Committed product Widget XML after cluster: 1 (
perc.Testwaiver only).Checklist
modules/perc-packagesstandalone clean install greenOperator
Operator: Grok: night-issue-prs (model grok-4.5)
Fixes #2883
Fixes #2884
Fixes #2885