# CALMF и блокчейн — обязательные интерфейсы ядра

Начиная с SDK 0.4.1 каждый `Engine()` содержит `engine.interfaces`.
HTML, CSS, JavaScript и WebGL-компонент находятся в wheel `yeti3-core`.
Отдельная установка темы, CDN или npm не нужны. Проверка наличия этих ресурсов
входит в автоматические самопроверки при создании ядра.

## Что видит администратор

- CALMF: вызовы, родительские связи, успех, ошибка, таймаут, повтор, отмена и прерывание.
- Блокчейн: реальные блоки и связи по хешам, номер блока, хеш события и время записи.
- Инспектор: подробности выбранного узла, масштабирование и перемещение графа.
- Списки событий и блоков работают без WebGL и доступны с клавиатуры.

Панель показывает последние 128 записей, а общий счётчик — всю текущую SDK-цепочку.
Она не объединяет автоматически отдельные исторические Django/Medical цепочки.
Реквизиты пользователей, тела запросов, токены и пароли в интерфейс не передаются.
Project Chain — журнал целостности; это не обещание распределённого консенсуса.

## Django

```python
from django.urls import path
from yeti3_core import Engine

engine = Engine()
urlpatterns = [
    path('_yeti3/core/', engine.interfaces.django_view),
    path('_yeti3/core/<str:asset>', engine.interfaces.django_view),
]
```

Должны быть включены стандартные SessionMiddleware и AuthenticationMiddleware.
Войти под активным администратором (`is_staff`) и открыть `/_yeti3/core/`.
Без прав UI и JSON возвращают 403; изменение данных через эти маршруты запрещено.
На сервере задать стабильные `YETI3_PRODUCT_ID`, `YETI3_CHAIN_PATH` и постоянный
путь CALMF. Путь цепочки и очередь должны попадать в резервное копирование.

## Другой сервер

`engine.interfaces.asset(name)` возвращает байты и Content-Type.
`engine.interfaces.snapshot()` возвращает JSON-совместимый снимок.
Адаптер обязан проверять права администратора **до** выдачи снимка и устанавливать
`Cache-Control: private, no-store`. Методы сами по себе не являются HTTP-сервером
и не проверяют произвольные токены. Для Rekvio предусмотрен адаптер существующей
серверной сессии с проверкой `role == 'admin'`.

## Развёртывание существующего сайта

В репозитории SDK: `deployment/core-runtime/site_runtime.py` и `deploy.py`.
Адаптер запускает ядро и самопроверки, оборачивает WSGI/ASGI, сохраняет CALMF до
возврата управления, а фоновый обработчик записывает блоки пакетами. Квитанция
остаётся до успешной записи; после сбоя повтор не создаёт новый блок.

`yeti3-core` 0.4.1 проверен на Python 3.11 и 3.13. Полный `yeti3-engine` и
дополнительные пакеты по-прежнему требуют Python 3.12+.
Не обновляйте старое монолитное окружение поверх файлов: используйте новый образ
или виртуальное окружение. Сохраните прежний образ и постоянные данные для отката.
