- InvestmentsPanel: replace per-element listeners (destroyed by debounced
innerHTML) with event delegation on stable this.content
- IntelligenceGapBadge: null guard on context.actionableInsight for
environments where i18n is not initialized
- keyword-spike test: restructure headlines so spike term appears
mid-sentence (isLikelyProperNoun skips index-0), add initI18n
- investments-panel test: add pollUntil helper, re-query DOM elements
after debounced render cycles
- map-harness tests: increase WebGL harness init and poll timeouts,
relax golden screenshot pixel diff threshold