Интеграция

Вычислитель Лиспекса и LIT

Запуск правила Лиспекса из CLI, использование установленного API приложения и работа с поверхностью тестирования и интеграции LIT.

Топаз предоставляет две поверхности Лиспекса. topaz lispex embed run вычисляет одно правило и записывает результат без настройки пакета и сборки. LIT (Lispex-in-Topaz) — написанный на Топазе исходный код интерпретатора, который выполняется напрямую, через сгенерированные Rust и Python, а также по маршрутам Web как поверхность тестирования и интеграции Лиспекса.

Что такое Лиспекс

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

Запрос приходит списком именованных полей, и любой ответ, включая отказ, тоже возвращается списком. Это отдельный от Топаза язык со своей документацией и своей схемой версий. Подробности вы найдёте на сайте Лиспекс.

Какой путь выбрать

  • Чтобы встроить правила Лиспекса в собираемое приложение, перейдите в раздел Запуск правил Лиспекса.
  • Чтобы вычислить отдельное правило без пакета, используйте topaz lispex embed run.
  • Для выпуска приложения на Топазе выберите одну из поддерживаемых целевых платформ Топаза.
  • Чтобы понять назначение LIT, рассматривайте его как свидетельство совместной работы компонентов инструментария на крупной программе Лиспекса.
  • Чтобы использовать Лиспекс как самостоятельный продукт, обратитесь к его документации. Здесь описана граница интеграции со стороны Топаза.

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

Подготовьте стандартный файл правила на Лиспексе, канонический входной файл lispex.embed-value/v1 и закрытый файл лимитов. Затем укажите новый каталог для результатов:

BASH
topaz lispex embed run \
  --source rule.lspx \
  --input value.lpxvalue \
  --limits limits.json \
  --output lispex-result

Документ лимитов должен иметь приведённую ниже структуру. Значения можно уменьшать, но добавлять или удалять поля нельзя.

JSON
{
  "schema": "topaz.lispex-embed-limits/v1",
  "prepare": {
    "raw_source_bytes": 4096,
    "prepare_work": 1000000,
    "logical_allocation": 1000000,
    "syntax_depth": 64
  },
  "evaluate": {
    "canonical_input_bytes": 4096,
    "eval_work": 1000000,
    "logical_allocation": 1000000,
    "semantic_frames": 1000,
    "traversal_depth": 256,
    "output_bytes": 1000000,
    "diagnostic_bytes": 1000000,
    "transcript_bytes": 1000000,
    "transcript_events": 100,
    "result_bytes": 1000000
  }
}

При успешном выполнении каталог lispex-result содержит файлы result.lpxvalue и report.json. В случае детерминированной семантической ошибки или превышения лимита формируется только отчёт. При отклонении запроса или ошибке движка каталог не создаётся. Проверить конкретный компонент и политику без запасного варианта можно командой:

BASH
topaz lispex embed info --json

Команда использует фиксированные компонент, профиль, среду выполнения и маршрут. Поиск и загрузка компонентов, обратные вызовы и резервные маршруты отсутствуют. Отчёт фиксирует выполнение и допуск Топаза, а переносимые ядра в формате Лиспекса создаёт API артефактов приложения.

Что означают свидетельства LIT

Одна и та же эталонная версия исходного кода LIT исполняется напрямую, через сгенерированные программы на Rust и Python, а также в браузере. Эта комплексная программа позволяет выявлять дефекты проверки, генерации кода, среды выполнения и взаимодействия с окружением.

Успешная запись LIT указывает программу, маршруты выполнения, входные данные и наблюдаемые результаты. Неподдерживаемые операции возвращают явную ошибку. Все четыре маршрута используют одну линию исходного кода и выявляют регрессии проверки, генерации, среды выполнения и границ хоста.

Граница продукта

Установленный вычислитель обрабатывает через topaz lispex embed документированные компонент, профиль, входные файлы, лимиты ресурсов и контракт результата. Выбор цели Топаза остаётся отдельной поверхностью: --target lispex и --target lit отклоняются до записи артефакта. LIT входит в систему тестирования и интеграции репозитория и находится вне установленного пакета.

Использование Лиспекса в приложении на Топазе

Пакет связывает именованные правила Лиспекса с вычислителем полного текущего профиля, исходным кодом, лимитами ресурсов и встроенным компонентом. Сборка с lock-файлом подготавливает каждое правило один раз и формирует std.lispex вместе с std.lispex.rules. Код на Топазе работает с непрозрачными типами правил и значений вместо необработанных дескрипторов Wasm. Для каждого вычисления создаются новые память гостя, глобальное состояние, счётчик и буфер транскрипта; квоты приложения, отмена и очистка охватывают лимиты вызова.

Если достаточно типизированного результата, используйте evaluate. Для детерминированного результата с переносимой записью предназначена функция evaluateWithEvidence. Метод consumerArtifactBytes сохраняет запись, consumerArtifactFromBytes принимает её обратно только после проверки, а inspectConsumerArtifact и verifyConsumerArtifact возвращают стабильный идентификатор. portableCoreBytes извлекает точные байты ядра в формате Лиспекса при его наличии. freshReplay повторно вычисляет правило и входные данные с лимитами из записи в новом гостевом экземпляре, принимая только полностью совпавший артефакт.

Ядро и внешний артефакт формируются на стороне потребителя и не аутентифицированы. Они не содержат сведений об издателе, одобрении поставщика, полномочиях подписи, допуске компонента или разрешениях на внешние действия. Локальный предварительный отказ, отмена, отклонение очередью, раннее срабатывание защитного лимита и сбой движка не приводят к созданию переносимого ядра.

Приложение полного текущего профиля работает в интерпретаторе и сгенерированных продуктах на всех пяти нативных релизных платформах. Установленный пакет поддерживает установку через npm, удаление исходного кода и компилятора, перенос исполняемого файла, обработку нескольких входов, отказ при превышении лимитов ресурсов, восстановление после дедлайна, проверку артефактов и повторное выполнение в новом экземпляре. Маршруты Python, Web, HTTP-сервиса, no-capability и MCP с пустым набором компонентов отклоняются до записи артефакта или выполнения. Маршрут совместимости с Топазом 5.18 остаётся доступным через профиль совместимости embedded-core со своими идентификаторами компонента, профиля, контракта и подготовленного артефакта.

Последовательность от манифеста, правила, лимитов ресурсов и lock-файла до сборки, запуска, артефакта и повторного вычисления описана в разделе Запуск правил Лиспекса. LIT служит поверхностью тестирования и интеграции Лиспекса, а руководство создаёт приложение принятия решений на Лиспексе с полным текущим профилем.

Связанные разделы