# PageBlock Contribution Lifecycle Plan **Goal:** Turn PageBlock Manifest template, Validator, and Quality Check declarations into executable contributions while migrating Notice and News without changing generated output. ## Task 1: Common Resource Plugin Contract - [x] Add a resource-backed PageBlock base that loads the existing `block.json` definition. - [x] Build Manifest template ownership from the definition instead of duplicating template paths in Java. - [x] Publish a stable Validator code and rendered-source Quality Check for each resource plugin. ## Task 2: Executable Contribution Lifecycle - [x] Verify PageBlock identity, capability, Validator, Quality Check, and template declarations during Registry loading. - [x] Reject missing template resources and declarations that do not exactly match `block.json`. - [x] Route instance validation and generation-context contribution through one coordinator. - [x] Execute the declared rendered-source check after Velocity rendering. ## Task 3: Notice And News Migration - [x] Publish `page-block.notice@1.0.0` and `page-block.news@1.0.0` as trusted built-in plugins. - [x] Move Notice primary key, status, active value, and publish-time context into its plugin. - [x] Move News primary key, status, active value, publish-time, summary, and image context into its plugin. - [x] Preserve the existing definitions, templates, output paths, API routes, and generated source behavior. ## Task 4: ProjectSpec And Verification - [x] Auto-select exact Notice and News plugin releases when projected layouts use those blocks. - [x] Keep migrated PageBlock selection enforcement generic in `PluginResolver`. - [x] Cover Manifest mismatch, missing executable identity, empty rendered output, generation context, and legacy rendering compatibility.