Project shell contribution
Project-owned shell contribution — это data-only artifact в разрешённом design//smart/ root и ссылка на admitted binding ID. Он не требует изменения engine src/.
Порядок подключения
- Выберите собственный namespace в
docara.json. - Создайте artifact через hash-bound scaffold dry-run/apply.
- Проверьте manifest/schema/namespace/capabilities.
- Убедитесь через
docara atlas --json, что owner=projectи support=project. - Выполните isolated preview на реальной странице.
- Только затем соберите full output.
project.footer-smartblockprojectВладелец: project/project; namespace: project; origin: project; provider: project.project; authoring: configuration.
project.footersectionprojectВладелец: project/project; namespace: project; origin: project; provider: project.project; authoring: container.
Capabilities: shell.footer.
Container: allowed_children=[project.footer-smart]; slots=[content]; min_children=0; max_children=64; order=declared; max_depth=2, depth_semantics=relative_subtree_root_level_1.
project.footer-linkssmartprojectВладелец: project/project; namespace: project; origin: project; provider: project.project; authoring: block.
Capabilities: smart.render.
project.install-buildersmartprojectВладелец: project/project; namespace: project; origin: project; provider: project.project; authoring: container.
Capabilities: smart.children, smart.hydration, smart.render.
Container: allowed_children=[ui.checkbox, ui.dropdown, ui.input]; slots=[controls]; min_children=1; max_children=64; order=declared; max_depth=8, depth_semantics=relative_subtree_root_level_1.
project.product-configuratorsmartprojectВладелец: project/project; namespace: project; origin: project; provider: project.project; authoring: container.
Capabilities: content.embeddable, smart.children, smart.hydration, smart.render.
Container: allowed_children=[ui.checkbox, ui.dropdown]; slots=[controls]; min_children=1; max_children=64; order=declared; max_depth=8, depth_semantics=relative_subtree_root_level_1.
section.project.footerviewprojectВладелец: project/project; namespace: project; origin: project; provider: project.project; authoring: configuration.
Fail-closed границы
- project ID не затеняет package/Framework ID;
- binding-owned props нельзя переопределить config-ом;
- capability/region/slot collision отклоняется;
- traversal, symlink, hardlink, case collision и arbitrary path отклоняются;
- shell contribution не меняет outer page/head.
Пример footer из принятого Goal B показывает shell-role, а install builder и product configurator — content-role. Все три проходят существующие registries и Gateway.