# IPZ PageShell lifecycle

- **ID:** IPZ-PAGESHELL-LIFECYCLE-2026-08-15
- **Status:** IDLE
- **Task:** Delivery 5 PageShell lifecycle slice
- **Source request:** Assess PageShell from current `origin/master` and implement the smallest complete Delivery 5 lifecycle convergence directly. Preserve public API, layout/markup identity, accessibility, and caller behavior. If stateless, prove and document ownership with focused integration evidence; if stateful, add idempotent `mount()`, `update(next)`, and `destroy()` with cleanup/remount coverage. Keep inventory/report/plan truthful. Do not alter unrelated components/pages, delegate, use external models, invoke skills, or land.

## Outcome and acceptance criteria

Classify PageShell correctly under R-UI-2 and R-UI-4. If it owns lifecycle state, it must expose idempotent `mount()`, `update(next)`, and `destroy()`; clean up replaced and destroyed regions; and support remount when applicable without duplicate mounts or retained resources. Its constructor/export/caller contract, markup, accessibility, layout, and route behavior must remain unchanged. Add lowest-owner focused integration evidence. Regenerate only truthful inventory/report records. Pass focused tests, full admin tests, lint, production build, inventory verification, changed-file gate, and full dependency-ready factory gate. Create one terse local commit and do not land.

## Preserved WIP and constraints

- Start from fetched `origin/master` `aaa2dc0af4cfc0e61fc0804472d86011839e8765` in this isolated clean worktree.
- Preserve unrelated work and edit only PageShell, its focused tests, truthful inventory/report artifacts if needed, and plan registry records.
- Read the Delivery 5 contract, landed lifecycle components, source/callers, and existing focused tests before editing.
- No delegation, skills, external models, landing, or unrelated component/page changes.

## Execution steps

1. Inspect the lifecycle contract, PageShell ownership/callers/tests, landed stateful references, and inventory classification.
2. Classify PageShell and implement only the required lifecycle convergence plus lowest-layer test coverage.
3. Regenerate and verify architecture inventory/report if classification or source changes require it.
4. Run all requested gates with dependencies installed, resolve every signal, and record concrete results.
5. Update this receipt and the plan index, commit locally with a terse message, and leave the commit unlanded.

## Current receipt

Re-review found a remove-and-readd race and an incorrect lifecycle classification in the local repair. PageShell now reuses a region's pending mount promise, so remove-and-readd cannot run concurrent mounts; stale completion still compensates only inactive regions. The registry now truthfully classifies PageShell as direct `mount/update/destroy`, and both generated inventory reports were regenerated. Focused tests passed (15 tests), including the remove-and-readd regression. Full admin tests passed (50 files, 669 tests); lint, production build, inventory verification, and UI gate passed. The dependency-ready full factory gate passed, including PHP syntax, tests, PHPCS baseline, PHPStan, admin lint/build, and UI architecture. The resulting local commit is unlanded. The independently reviewed predecessor is `f2b3b9d0a`.

## Next executable action

Await an explicitly authorized re-review or landing task; do not land this commit.
