Tyapkin
Начать с Тяпкина

Как это работает

Понятный цикл — от входного события до решения, результата и проверяемой истории.

От события к проверяемому решению

Представим сервисную заявку. Она находится в состоянии «Новая». Сотрудник хочет принять её в работу. Тяпкин проверяет допустимость такого перехода относительно контракта; приложение решает, как хранить заявку и что делать дальше.

1. Опишите правила на Capkin

В сценарии укажите участника, полномочие, Input, Guard и допустимый Transition. Компилятор принимает закрытый набор конструкций. Неизвестная фраза становится ошибкой, а не неявным правилом.

2. Передайте Input

Приложение передаёт проверенный контракт, текущий checkpoint, Input и claims. Principal обозначает участника, Capability — его допустимое действие. Проверка внешней личности и источников доверия принадлежит приложению.

3. Проверьте условия

Guard задаёт условие перехода. CAP проверяет решение в рамках контракта и предоставленных evidence. Он не превращает внешний факт в истину: за происхождение и достоверность факта отвечает выбранный источник доверия.

4. Получите State и Output

Если переход допустим, формируются новый State, Output intentions и Commitment. Приложение сохраняет своё состояние и организует исполнение. При недопустимом входе успешный переход не должен появиться.

5. Проверьте Trace

Trace связывает последовательность Commitment. Проверка сверяет историю с контрактом и доверенным checkpoint. Это позволяет воспроизвести решение и обнаружить нарушение цепочки.

Кто за что отвечает

ТяпкинВаше приложение
Capkin compiler и проверенный Machine contractПользователи, интерфейс и предметные данные
Детерминированное решение CAPВыбор версии контракта и авторизация внешнего участника
Commitment и проверка TraceХранение State, транзакции и recovery
Явное Output intentionАдаптер, повтор, фактический результат и его receipt

Связать несколько Machine можно отдельным Flow. Каждая Machine всё равно принимает собственный Input и имеет самостоятельную историю.

От объяснения к первому запуску

Откройте быстрый старт, чтобы скомпилировать готовый пример. Для деталей используйте границу малого ядра и описание Rust runtime.

On this page