Песочница

Запуск и проверка записей решения

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

Один запуск в объявленных пределах, одна сохранённая запись

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

Native-команда lispex rule run готовит проверенное правило, принимает один строгий 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. Запись, проверенная тремя способами

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

Что связывает передаваемая часть записи

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

Контекст под управлением приложения

Приложение задаёт идентификатор исполнителя, политику актуальности, проверку правила, предотвращение повторного использования и полномочия для действий за пределами процесса.

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

Правило спрашивает, сколько дней прошло и был ли товар открыт. Приложение явно передаёт оба значения и владеет деловым смыслом allow и deny.

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

Четыре локальные команды

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

Каталог содержит:

ЧленРоль
подготовленный артефактканонический исполняемый материал правила
канонический вводточное значение запроса
артефакт результатадетерминированный результат и привязка запроса
portable coreидентичность правила, ввода, ресурсов, вычислителя, transcript и результата
сводкачитаемая проекция канонических членов

Авторское рабочее пространство хранит source. Новые выходные пути сохраняют каждую готовую запись, а неверные или изменённые члены получают явный отказ.

Аутентифицируйте издателя

Получатель создаёт политику для одного проверенного открытого ключа. Native подписывает материал решения и записывает канонический .lpxdecision с заданным бюджетом байтов.

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, конверт издателя, подготовленный артефакт, portable core, артефакт результата и сводку. Native выдаёт, изучает, аутентифицирует и повторяет bundle. npm предоставляет offline inspection и authentication.

Роли продуктов

Аутентификация решения записывает целостность package, подпись издателя, допуск политикой получателя и привязку запроса. Replay добавляет свежий результат вычислителя. Ваучер добавляет подписанные complete transcripts, закреплённый потребителем запрос, текущее наблюдение Native и локальный шлюз решения. Хост-приложение владеет актуальностью, предотвращением повторного использования, деловой авторизацией и внешним действием.

Куда дальше

Использование Ваучера Лиспекса · Передача приложению

Запуск и проверка записей решения · Лиспекс