결정 기록 실행하고 검사하기

검토한 환불 규칙에 엄격한 JSON을 넣어 실행하고, 정확한 결정 기록을 남긴 뒤 그 기록이 무엇을 확인하고 무엇을 보장하지 않는지 배웁니다.

한도 안에서 한 번 실행, 하나 남는 기록

정확한 한도 아래 환불 규칙을 실행하고, 확인한 것을 남기세요.

네이티브 lispex rule run은 검토한 규칙을 준비하고, 엄격한 JSON 입력 하나를 받아, 별도의 엔진에서 한 번만 평가합니다. 이 엔진은 바깥에서 아무것도 끌어다 쓰지 않고, 선언해 둔 한도 안에서 작업량과 할당을 전부 셈해야만 앞으로 나아갑니다. 실행이 끝나면 구성원 다섯을 담은 결정 디렉터리가 남습니다. 준비된 규칙 아티팩트, 나중에도 같은 요청인지 알아볼 수 있도록 정해진 형식으로 적어 둔 입력, 정확한 요청 결속을 담은 결정적 결과, 남에게 건넬 수 있는 기록 부분, 파생 요약입니다. 원본 규칙 소스는 일부러 여기에 넣지 않습니다.

  1. 01검토한 규칙
  2. 02엄격한 JSON 입력
  3. 03allow 결정
  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는 기록된 요청을 새 엔진 인스턴스에서 한 번 평가해 같은 결과가 나와야만 통과합니다. 셋 모두 권한을 부여하지 않습니다.

건넬 수 있는 기록이 함께 묶는 것

규칙의 의미, 정해진 형식으로 적어 둔 입력, 정확한 한도, 규칙을 실행한 정확한 프로그램, 그리고 몇 번을 돌려도 같은 그 결과를 함께 묶습니다. 어떤 질문에 어떤 상한 아래에서 답했는지를 정확히 알기에 충분한 정보입니다. 소모했거나 남은 사용량은 여기에 들어가지 않습니다.

기록이 성립시키지 않는 것

누가 실행했는지, 지금도 유효한지, 규칙에 담긴 정책이 공정하거나 옳은지, 같은 결정이 두 번 쓰였는지는 알 수 없습니다. 프로세스 밖에서 행동할 권한도 생기지 않습니다.

장치보다 결정을 먼저 읽어 보세요

규칙이 묻는 것은 두 가지뿐입니다. 배송 후 며칠이 지났는지, 상품을 개봉했는지입니다. 파일을 찾거나, 네트워크를 호출하거나, 시계를 읽거나, 숨겨진 호스트 함수를 부르지 않습니다.

입력결정이유
14일, 미개봉allow아직 환불 기간 안에 있습니다
15일, 미개봉deny환불 기간을 지났습니다
14일, 개봉deny개봉한 상품은 허용하지 않습니다

allowdeny를 실제 업무에서 어떻게 처리할지는 애플리케이션의 책임입니다. 리스펙스는 데이터를 반환할 뿐, 환불을 직접 실행하지 않습니다.

명령을 네 개로 나눈 이유

명령하는 일
rule run규칙을 준비하고 엄격한 JSON을 정확한 한도 아래 평가한 뒤, 다섯 파일로 된 결정 디렉터리를 한 번에 기록합니다
rule inspect실행하지 않고 디렉터리의 내용을 읽어 요약합니다
rule verify실행하지 않고 파일 집합, 식별자, 해시, 결속 관계를 검증합니다
rule replay기록된 요청을 규칙을 실행하는 프로그램의 새 인스턴스에서 한 번 실행하고 같은 결과인지 확인합니다

디렉터리에는 준비된 아티팩트, 형식이 바이트 단위까지 정해진 입력, 정확한 요청이 결속된 결정적 결과, 발급 가능한 휴대 코어, 파생된 요약이 들어갑니다. 휴대 코어란 규칙과 입력, 한도, 결과를 한데 묶어 둔 부분이고, 무엇을 평가했는지 확인하기에는 이것으로 충분합니다. 파생된 요약 자체에는 아무런 권한이 없습니다. 원본 규칙 소스는 들어가지 않습니다. 기존 출력은 덮어쓰지 않으며, 잘못된 입력, 변조된 파일, 여분 파일, 심볼릭 링크는 거부합니다.

허용한 발급자 키 하나를 인증하세요

Native는 디렉터리의 깊은 검증이 끝난 뒤 정확한 결정 자료와 발급자 봉투를, 크기가 제한되고 형식이 바이트 단위까지 정해진 .lpxdecision 파일 하나에 담을 수 있습니다. 신뢰 정책은 수신자가 만듭니다. 묶음이나 봉투가 스스로 신뢰할 키나 규칙을 고를 수는 없습니다.

lispex rule issue --dir decision \
  --private-key issuer.pkcs8.der \
  --issuer-label "환불 데스크 A" \
  --out issuer-envelope.json

lispex rule policy create --dir decision \
  --public-key issuer.spki.der \
  --consumer-label "환불 수신자" \
  --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 "환불 데스크 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

묶음에는 정해진 형식의 입력, 매니페스트, 발급자 봉투, 준비 아티팩트, 휴대 코어, 결과 아티팩트, 파생 요약이라는 정확한 일곱 파일만 들어갑니다. 규칙 소스, 원본 입력 JSON, 개인 키, 시간, 실행 방식, 행동 권한 토큰은 들어가지 않습니다. Native는 발급·검사·인증·재실행을 제공합니다. npm은 오프라인 검사와 인증만 제공하며 발급하거나 재실행하지 않습니다. 브라우저와 플레이그라운드는 이 검증 모듈을 노출하지 않습니다.

인증 보고서는 패키지 무결성, 서명과 수신자 정책의 허용, 정확한 요청 결속, 새 인스턴스 재실행, 재사용 방지, 외부 행동 권한을 각각 따로 보여 줍니다. rule authenticate는 규칙을 실행하지 않습니다. 새 인스턴스 재실행은 not-performed, 재사용 방지는 not-provided, 외부 행동 권한은 absent로 남습니다. 발급자 라벨은 서명되지 않은 설명용 정보입니다.

결정 인증과 바우치는 서로 다른 흐름입니다

휴대 코어는 의미 규칙, 정해진 형식의 입력, 한도, 규칙을 실행하는 프로그램의 정확한 아티팩트, 결정적 결과를 하나로 묶습니다. 무엇을 평가했는지 확인하기에는 충분합니다.

선택적 발급자 봉투는 수신자 정책이 허용한 정확한 키 하나가 그 코어에 서명했음을 인증합니다. 조직 신원, 최신성, 공정성, 재사용 방지, 행동 허가는 증명하지 않습니다. 바우치는 여기와 별개로 서명 인증, 요청 결속, 재실행, 로컬 게이트를 제공하는 흐름입니다. 결정 인증과 바우치 증거 어느 쪽도 스스로 외부 행동 권한으로 승격되지 않습니다.

이 명령을 쓸 수 있는 제품

rule 흐름과 decision 발급·재실행은 Native 제품이 제공합니다. npm은 검증 전용 decision inspectdecision authenticate를 추가로 제공합니다. 공개 브라우저 WebAssembly 빌드와 플레이그라운드는 이 decision 명령을 노출하지 않습니다.

플레이그라운드의 첫 결정 모드에서는 선택한 입력에 맞는 정확한 소스 포함 작성 인계 ZIP을 받을 수 있습니다. 새 디렉터리에 풀고 포함된 명시적 명령을 실행하면 이 Native 흐름으로 이어집니다. 이 ZIP은 준비 자료이지 결정 디렉터리, 휴대 코어, 서명, 권한이 아닙니다.

다음으로

첫 결정 규칙에서 규칙을 차근차근 만들거나, 선언해 둔 한도 안에서 규칙 하나만 실행하는 작은 엔진의 동결된 계약을 제한 평가기 계약에서 확인하세요.