Выполните правило возврата в точных лимитах и сохраните предмет проверки.
Native-команда lispex rule run готовит проверенное правило, принимает один строгий JSON-ввод и один раз вычисляет его на отдельном движке с учётом каждой единицы работы и выделения в заданных значениях. Результатом становится каталог решения из пяти членов: подготовленный артефакт правила, ввод в канонической форме, детерминированный результат с точной привязкой запроса, передаваемая запись и производная сводка. Исходный текст правила хранится в авторском рабочем пространстве.
- 01Проверенное правило
- 02Строгий JSON-ввод
- 03Решение allow
- 04Запись, которую можно проверить
1. Правило
(let ((days (cdr (car input)))
(opened (cdr (car (cdr input)))))
(if (< days 15)
(if opened "deny" "allow")
"deny"))2. Ввод
{
"days": 14,
"opened": false
}3. Один запуск в объявленных пределах
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Для случая «14-й день, не открыт», который хранится вместе с этой страницей, запуск возвращает allow.
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.jsonBundle содержит семь канонических членов: ввод, manifest, конверт издателя, подготовленный артефакт, portable core, артефакт результата и сводку. Native выдаёт, изучает, аутентифицирует и повторяет bundle. npm предоставляет offline inspection и authentication.
Роли продуктов
Аутентификация решения записывает целостность package, подпись издателя, допуск политикой получателя и привязку запроса. Replay добавляет свежий результат вычислителя. Ваучер добавляет подписанные complete transcripts, закреплённый потребителем запрос, текущее наблюдение Native и локальный шлюз решения. Хост-приложение владеет актуальностью, предотвращением повторного использования, деловой авторизацией и внешним действием.