界面与主题运行时
Typed presentation data, Theme selection, OVERRIDE and SLOT composition.
# Templates
Declare each template by package-relative path and register a stable name. Runtime resolution remains confined to the package root; arbitrary filesystem overwrite is not an extension API.
# Assets
Declare and register owned assets. A Theme may publish presentation resources but must not mutate Core files.
# Presentation Runtime
# Theme Package
Use package_type: theme-presentation, declare only permitted capabilities, call themeProvider(), then register named contributions.
# PresentationRenderContext
The render context contains explicit page, viewer, navigation, Theme-private presentation values and typed models. It is not a wrapper around host globals.
# PresentationViewModel
A view model binds a stable type and version to immutable presentation facts. It carries what a Theme needs to render, not storage authority.
# PresentationDataProvider
A business owner or host adapter implements type(), version() and provide(array): PresentationViewModel.
# OVERRIDE
An effective Theme can replace one named host presentation target. Multiple ambiguous effective overrides fail closed.
# SLOT
A SLOT appends a named contribution in deterministic dependency/priority/package order. It does not patch host files.
# Theme Selection
Enabled means available; effective means selected and eligible for one host-owned scope. Operators select through the host control plane. If selection becomes ineligible, the Kernel falls back to the Core default.
A Theme does not receive general business-data or storage authority.