---
contractVersion: 1
title: Архитектура переносимой страницы
description: Пакет архитектурного решения с границами, альтернативами и доказательствами внедрения.
language: ru
---

# Архитектура переносимой страницы

**Вымышленный пример.** Все метрики, статусы, организации и решения на этой странице нужны только для
демонстрации движка отчётов; перед использованием замените их проверенными данными проекта.

Эта основа фиксирует одно системное решение с достаточной детализацией для реализации и последующего отката.
Граница доверия остаётся видимой, а не скрывается в коде фреймворка.

::::::section{title="Граница системы" id="boundary" nav="Граница" recipe="hero"}
![Граница источника, компилятора, артефакта и браузера](assets/system-map.ru.svg)

{{include: partials/decision.ru.md}}
::::::

::::::section{title="Поток выполнения" id="flow" nav="Поток" recipe="story"}

:::diagram{title="Граница автономной сборки" description="Декларативный локальный вход проходит проверку и рендеринг во время сборки, а затем становится статическим браузерным артефактом." direction="right"}
::node{id="source" label="Локальный источник" kind="accent"}
::node{id="model" label="Проверенная модель" kind="neutral"}
::node{id="render" label="Смысловой рендерер" kind="success"}
::node{id="artifact" label="Статический артефакт" kind="accent"}
::edge{from="source" to="model" label="разбор"}
::edge{from="model" to="render" label="типизированные данные"}
::edge{from="render" to="artifact" label="HTML и ресурсы"}
:::
::::::

::::::section{title="Альтернативы и последствия" id="alternatives" nav="Альтернативы" recipe="rail"}

::::tabs{title="Рассмотренные альтернативы"}
:::tab{label="Примитивы пакета"}
Один реестр, модель, рендерер и ограниченная среда выполнения удерживают все страницы на едином контракте.
:::
:::tab{label="Собственный интерфейс"}
Максимальная свобода, но каждая страница владеет настройкой фреймворка, безопасностью, доступностью и упаковкой.
:::
:::tab{label="Редактор как сервис"}
Быстрое визуальное редактирование, но появляется зависимость от сервиса и ослабевает автономная переносимость.
:::
::::

::::cards
:::card{title="Плюс"}
Авторы задают данные и смысловое намерение; пакет владеет браузерным поведением.
:::
:::card{title="Компромисс"}
Новые классы взаимодействий требуют выпуска пакета вместо произвольного авторского JavaScript.
:::
:::card{title="Защитная граница"}
Все файловые ссылки ограничиваются до чтения, а весь результат работает локально.
:::
::::

:::modal{title="Чек-лист архитектурного ревью" trigger="Открыть чек-лист ревью"}

- Остаётся ли источник декларативным?
- Ограничивается ли каждый локальный путь до чтения?
- Работает ли артефакт без сети и сервера?
- Проверено ли новое поведение через публичную границу?
  :::
  ::::::

::::::section{title="Внедрение" id="rollout" nav="Внедрение" recipe="metrics"}

:::steps{title="Применить решение"}

1. Заменить примерное решение и доказательства в декларативном исходнике.
2. Собрать смысловой результат через общий компилятор.
3. Открыть артефакт через `file://` на компьютере и телефоне.
4. Пересмотреть решение, когда проверенное требование перестанет укладываться в границу.
   :::
   ::::::
