Песочница

Создание решающих правил

Выполните проверенное правило возврата со строгим JSON, сохраните точную запись решения и разберите границы этой записи.

Одно решение, одна проверяемая запись

Выполните правило возврата и сохраните предмет проверки.

Проверенное правило и строгий JSON-ввод дают одно ограниченное локальное решение. Каталог хранит подготовленное правило, канонический ввод, результат и допустимое переносимое ядро.

  1. 01Проверенное правило
  2. 02Строгий JSON-ввод
  3. 03Решение: allow
  4. 04Проверяемое ядро

1. Правило

LISPEX
(let ((days (cdr (car input)))
      (opened (cdr (car (cdr input)))))
  (if (< days 15)
      (if opened "deny" "allow")
      "deny"))

2. Ввод

JSON
{
  "days": 14,
  "opened": false
}

3. Локальный запуск

SHELL
lispex rule run \
  --source refund-window.lspx \
  --input day-14-unopened.json \
  --prepare-limits prepare-limits.json \
  --eval-limits evaluation-limits.json \
  --out decision

lispex rule inspect --dir decision
lispex rule verify --dir decision
lispex rule replay --dir decision
4. Решение

Заказ на 14-й день с закрытым товаром возвращает allow.

5. Проверка записи

Его можно изучить без выполнения, проверить точные байты или один раз повторить в свежем экземпляре вычислителя.

Что связывает ядро

Смысловое правило, канонический ввод, точные лимиты, артефакт вычислителя и детерминированный результат.

Чего ядро не разрешает

Личность издателя, свежесть, корректность политики, защиту от replay и внешнее действие.

Сначала прочтите решение

Правило задаёт только два вопроса: сколько дней прошло и был ли товар открыт. Оно не читает файлы, не обращается к сети или часам и не вызывает скрытые функции host-приложения.

ВводРешениеПричина
14-й день, товар не открытallowзаказ ещё находится в сроке возврата
15-й день, товар не открытdenyсрок возврата уже истёк
14-й день, товар открытdenyоткрытый товар не допускается

Значение allow или deny для рабочего процесса определяет приложение. Lispex возвращает данные, но не оформляет возврат сам.

Разделяйте пять идентичностей

Продукт разработки, последний опубликованный продукт, семейство документации, семантический профиль и неизменяемая загрузка — разные идентичности. Develop-checkpoint может двигаться вперёд, не изображая наличие новых опубликованных байтов. /version.json показывает каждую текущую ось, а ссылки на загрузку остаются точно связаны с опубликованным релизом.

Зачем нужны четыре команды

КомандаДействие
rule runподготавливает правило, вычисляет строгий JSON с точными лимитами и атомарно записывает каталог решения из пяти файлов
rule inspectчитает и кратко описывает каталог без выполнения
rule verifyбез выполнения проверяет точный набор файлов, идентификаторы, хэши и связи
rule replayодин раз выполняет записанный запрос в свежем экземпляре вычислителя и требует тот же результат

Каталог содержит подготовленный артефакт, канонический ввод, детерминированный результат с точной привязкой запроса, допустимое переносимое ядро и производную неавторитетную сводку. Исходного текста правила в нём нет. Существующий результат не перезаписывается, а неверный ввод, изменённые или лишние файлы и символические ссылки отклоняются.

Аутентифицируйте один разрешённый ключ издателя

Native-checkpoint v1.14.5 после глубокой проверки каталога может упаковать точные материалы решения и envelope издателя в один ограниченный канонический файл .lpxdecision. Политику доверия создаёт получатель: bundle и envelope не могут сами выбрать доверенный ключ или правило.

lispex rule issue --dir decision \
  --private-key issuer.pkcs8.der \
  --issuer-label "Refund desk A" \
  --out issuer-envelope.json

lispex rule policy create --dir decision \
  --public-key issuer.spki.der \
  --consumer-label "Refund receiver" \
  --out recipient-policy.json

lispex rule authenticate --dir decision \
  --envelope issuer-envelope.json \
  --policy recipient-policy.json

lispex decision issue --dir decision \
  --private-key issuer.pkcs8.der \
  --issuer-label "Refund desk A" \
  --out refund.lpxdecision

lispex decision inspect --bundle refund.lpxdecision
lispex decision authenticate --bundle refund.lpxdecision \
  --policy recipient-policy.json
lispex decision replay --bundle refund.lpxdecision \
  --policy recipient-policy.json

Bundle содержит ровно семь файлов: канонический ввод, manifest, envelope издателя, подготовленный артефакт, portable core, артефакт результата и производную сводку. В нём нет исходника правила, исходного JSON, private key, времени, route или токена полномочия. Native может выпускать, проверять, аутентифицировать и повторно выполнять bundle. npm только проверяет и аутентифицирует его offline; выпуск и replay там отсутствуют. Браузер и Playground не экспортируют этот модуль проверки.

Отчёт раздельно показывает целостность пакета, подпись и допуск политикой, точную привязку запроса, свежий replay, защиту от повторного использования и полномочие на внешнее действие. rule authenticate ничего не выполняет: replay имеет статус not-performed, защита от повторного использования — not-provided, а внешнее полномочие — absent. Метка издателя является неподписанным описательным metadata.

Аутентификация решения и Vouch — разные процессы

Переносимое ядро связывает смысловое правило, канонический ввод, лимиты, точный артефакт вычислителя и детерминированный результат. Этого достаточно, чтобы проверить предмет вычисления.

Необязательный decision envelope аутентифицирует один точный ключ, разрешённый политикой получателя. Он не устанавливает организацию, свежесть, справедливость, защиту от replay или разрешение действовать. Vouch остаётся отдельным аутентифицированным процессом с привязкой к запросу. Ни аутентификация решения, ни Vouch evidence не превращаются во внешнее полномочие сами по себе.

Где доступна команда

Процесс rule, выпуск решения и replay предоставляет Native-продукт. npm дополнительно предоставляет только проверочные decision inspect и decision authenticate. Публичный браузерный WASM и Playground не экспортируют эти команды решения.

Режим первого решения в Playground позволяет скачать точную передачу материалов с исходником для выбранного ввода. Распакуйте ZIP в новый каталог и выполните вложенную явную команду, чтобы перейти к этому Native-процессу. Этот ZIP — материал подготовки, а не каталог решения, portable core, подпись или полномочие.

Куда дальше

Соберите правило по шагам в разделе Первое решающее правило или изучите зафиксированный Контракт ограниченного вычислителя.