Panels are a new kernel rendering tier between surfaces and block
renderers, enabling composable companion views (e.g. notes panel
inside chat). This version ships the plumbing layer:
- Manifest validation for panels field (provider map + consumer array)
- Soft-dep warning at install time for unresolved panel consumers
- PanelMeta struct + resolvePanels() resolves consumers at surface load
- window.__PANELS__ injected into base template
- sw.panels SDK module (open/close/toggle/isOpen/isAvailable/list/active)
- Lazy JS loading pipeline with module caching
- 10 new tests (6 validation + 4 resolve)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>