# Carousel PageBlock Feature Plugin Plan **Goal:** Migrate the existing Carousel BusinessBlock into the first trusted, versioned `page-block` Feature Plugin without changing generated source output. ## Task 1: PageBlock SPI - [x] Add a specialized `PageBlockFeaturePlugin` contract on top of `FeaturePlugin`. - [x] Add structured validation and deterministic generation contribution contexts. - [x] Add a plugin type to the common manifest contract. ## Task 2: Carousel Release - [x] Publish `page-block.carousel@1.0.0` as a trusted built-in Spring plugin. - [x] Declare Adapter/schema compatibility, page-block capability, DSL extension, validator, definition, and seven existing templates. - [x] Transfer ownership of the existing Carousel `block.json` definition to the plugin while retaining the resource file. ## Task 3: Validation And Generation - [x] Invoke the Carousel plugin validator from `BusinessBlockRegistryService`. - [x] Reject Carousel instance configuration keys outside the published definition. - [x] Move Carousel primary-key and optional-field Velocity variables out of the shared generation service and into the plugin contribution. - [x] Preserve all existing generated paths and template output. ## Task 4: ProjectSpec And Resolution - [x] Detect Carousel blocks in page and embedded layouts during legacy ProjectSpec projection. - [x] Add exact `page-block.carousel@1.0.0` selection to projected ProjectSpec documents. - [x] Reject manually supplied ProjectSpecs that use Carousel without selecting its plugin release. - [x] Include the release in the existing resolved execution plan, fingerprint, and Generation Run snapshot. ## Task 5: Verification - [x] Add manifest, validator, generation contribution, registry ownership, projection, and resolver tests. - [x] Run BusinessBlock/ProjectSpec compatibility tests, full Generator baseline, Admin tests, formatting checks, and frontend health check. - [x] Document database publication prerequisites and remaining legacy BusinessBlocks.