Skip to content

fix(WebUI): GadgetRegistry modern-preferred load hardening (#3025) - #3071

Merged
natechadwick merged 1 commit into
mainfrom
fix/issue-3025-gadget-registry-load-hardening
Aug 11, 2026
Merged

natechadwick merged 1 commit into
mainfrom
fix/issue-3025-gadget-registry-load-hardening

Conversation

@natechadwick-intsof

Copy link
Copy Markdown
Collaborator

Summary

Hardens WebUI GadgetRegistry modern-preferred dual-load (parent #2630 residual of #2788) without removing the legacy fallback (#2852).

  • Prefer gadget-catalog.json; fall back to GadgetRegistry.xml when modern is absent, empty, or unreadable
  • INFO selection metrics: modern= / legacyRegistryXml= / none= / entries= / source= (parity with PSWidgetDao issue 2630 residual: wire PSWidgetDao modern-first selection (keep shim) #3024)
  • Test-visible getLastLoadSource() + new getLastLoadEntryCount()
  • Edge-case tests: empty/invalid modern catalog, blank/null catalog resource, successive last-load updates, modern preferred when both present
  • Refresh dual-run residual notes in definition-xml-shim-removal-criteria.md, dual-run-legacy-definition-xml-shim.md, gadget-definition-inventory.md

Out of scope: shim/customer path deletion (#2852); Widget DAO (#3024 sibling).

Parent

Test plan

  • WebUI: standalone ..\mvnw.cmd clean install (includes Surefire)
  • GadgetRegistryTest: 15 tests, 0 failures
  • Reviewer: confirm legacy GadgetRegistry.xml still on classpath and dual-load path unchanged for customer installs

Gates evidence

  • modules_built: WebUI
  • build_evidence: cd WebUI; ..\mvnw.cmd clean install → BUILD SUCCESS; GadgetRegistryTest Tests run: 15, Failures: 0, Errors: 0
  • downstream_checked: none (additive public getLastLoadEntryCount(); class already final; no signature breaks; no reverse-dep callers required)
  • product-docs: N/A — dual-run residual metrics / engineering operator notes only (docs/ai-generated dual-run criteria); no operator UI or install step change

Operator

Operator: Grok: night-issue-prs (model grok-4.5)

Co-Authored by Grok Build using grok-4.5 with agent main.

Prefer modern gadget-catalog.json with legacy GadgetRegistry.xml fallback
retained (#2852). Add INFO selection metrics (modern/legacyRegistryXml/none),
getLastLoadEntryCount(), and edge-case tests for empty/unreadable modern
catalog and successive last-load source updates. Refresh dual-run residual
notes under definition-xml-shim-removal-criteria.

Parent: #2630. Fixes #3025.

> Co-Authored by Grok Build using grok-4.5 with agent main.
@natechadwick
natechadwick merged commit 0d94ae9 into main Aug 11, 2026
6 checks passed
@natechadwick
natechadwick deleted the fix/issue-3025-gadget-registry-load-hardening branch August 11, 2026 22:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

model:grok-4.5 Grok 4.5 model operator:grok Changes authored by Grok operator:night-issue-prs night-issue-prs workflow

Projects

None yet

Development

Successfully merging this pull request may close these issues.

issue 2630 residual: GadgetRegistry modern-preferred load hardening

2 participants