fix: #3607228 Resolve the programme page's component versions instead of shipping 'active'

A fresh install via the browser installer's site-template picker breaks at 89%, on the programme page's content template:

Drupal\Core\Recipe\InvalidConfigException: There were validation errors in canvas.content_template.node.program.full:
- component_tree.<uuid>.component_version: 'active' is not a version that exists on component config entity 'block.system_breadcrumb_block'. Available versions: '0d7e961dd03aa710'.
...

All 74 entries in that tree carried the literal string active instead of a real version hash. active resolves when a component tree is delivered as a plain recipe config file, but this tree is delivered through the setComponentTreeIfComponentsExist config action, and the action's own validation rejects it — a distinction that does not surface on an already-installed site, because setting the tree there goes through a direct config save, which happens to tolerate it with a fallback warning rather than aborting.

That is exactly why this went unnoticed through three merged MRs (!29 (merged), !30 (merged), and the delivery-card work behind them): each was verified against an existing install (ha-fresh-0804, since removed), never a genuine recipe-apply install. Confirmed on a browser install of the current 1.0.x HEAD that it fails the same way before this fix, and installs clean after it.

Fix: resolved the real active version hash for each of this tree's 15 distinct components from a running site and wrote those in place of active. Every other content template (node.blog.full, node.event.full) already carried real hashes and is untouched.

AI-Generated: Yes

Checkpoints:

  • File an issue
  • Addition/Change/Update/Fix
  • Testing to ensure no regression
  • Automated unit testing coverage
  • Automated functional testing coverage
  • UX/UI designer responsibilities
  • Readability
  • Accessibility
  • Performance
  • Security
  • Developer Documentation
  • User Guide Documentation
  • Reviewed by human
  • Code review by maintainers
  • Full testing and approval
  • Credit contributors
  • Review with the product owner
  • Release notes snippet
  • Release
Edited by Rajab Natshah

Merge request reports

Loading