Reference implementation

Lispex Vouch

Lispex Vouch — portable decision receipts, offline verify, and rule-change replay. The reference implementation of CSK.

Lispex Vouch is the first and reference implementation of CSK. It runs on the checked subset of the Lispex language, the CSK Profile, with a Rust core and a JavaScript verifier. The spec is written so that more than one implementation can exist.

lispex run program.lspx

Run a program on the same WebAssembly reference core the playground uses. Receipt generation lives in the native Rust reference path, not in this CLI.

lispex verify receipt.json

Check an existing receipt offline with the published verifier. It inspects bytes and hashes without executing source. Exit 0 means the artifact holds.

lispex replay <corpus> --against <pin>

Compare a decision corpus against a version pin or receipt set, offline, and report every flip.

Verify a real receipt in your own terminal. The commands below run the published verifier, not a demo.

age-threshold.receipt.jsonDownload the receipt
{
  "boundary": {
    "attests": [
      "source-bytes",
      "profile-input-hash-binding",
      "canonical-core-v0-bytes",
      "meaning-graph-v0-hash-binding",
      "reference-transcript-bytes",
      "meaning-env-transcript-bytes",
      "lowered-subset-transcript-agreement"
    ],
    "excludes": [
      "semantic-equivalence",
      "independent-witness",
      "substrate-independence",
      "error-agreement",
      "input-provenance",
      "topaz-reporting",
      "full-cskernel-coverage",
      "target-code-generation",
      "private-implementation-detail"
    ]
  },
  "canonical": {
    "byte_len": 117,
    "hash": {
      "algo": "sha-256",
      "domain": "lispex/core-hash/v0",
      "hex": "0166138fc6f17a1ce016adcc8470a29a0e2d368dccab41ed1340211ecfd36c7b"
    },
    "status": "ok"
  },
  "comparison": {
    "blockers": [],
    "fault_class": null,
    "first_divergence": null,
    "reason": "transcript-bytes-equal",
    "status": "agree",
    "substrate": "shared-rust-reference"
  },
  "diagnostics": [],
  "differential_receipt": "csk.differential-receipt/v0",
  "engine": {
    "canonical_format": "lispex.core.canonical/v0",
    "commit": {
      "dirty": false,
      "hex": "1b19dcfe7b97db842a6850dd8d4bea1d8030c136",
      "vcs": "git"
    },
    "name": "lispex-rust-reference",
    "version": "1.3.1"
  },
  "graph": {
    "byte_len": 1514,
    "hash": {
      "algo": "sha-256",
      "domain": "csk/meaning-graph-hash/v0",
      "hex": "94a5e0e686d28601c20a4825ab97c3699cc19b226031ff701ee105f4c4f844c9"
    },
    "status": "ok"
  },
  "input": {
    "byte_len": 4,
    "datum": "(20)",
    "hash": {
      "algo": "sha-256",
      "domain": "csk/profile-input-hash/v0",
      "hex": "110af5fa552beb95424869a04b48937f7ebe323198aeb2dbb68c8e27f8966c28"
    },
    "name": "input",
    "path": "profile-gallery/decision-gallery/inputs/age-threshold.datum",
    "status": "bound"
  },
  "meaning_env": {
    "fault": null,
    "hash": {
      "algo": "sha-256",
      "domain": "csk/meaning-env-transcript-hash/v0",
      "hex": "f0dfd43e2b272c0ec36731090325f53e11b41d5b8a80ecc682355b83e158ac51"
    },
    "status": "ok",
    "steps": {
      "limit": 65536,
      "used": 9
    },
    "transcript": [
      "(decision allow)"
    ],
    "transcript_byte_len": 17
  },
  "reference": {
    "hash": {
      "algo": "sha-256",
      "domain": "lispex/runtime-hash/v0",
      "hex": "dafb01565d181ad602e7a31d83aede59aa10462cf4723daab00edfb49b007abb"
    },
    "status": "ok",
    "transcript": [
      "(decision allow)"
    ],
    "transcript_byte_len": 17
  },
  "source": {
    "byte_len": 78,
    "hash": {
      "algo": "sha-256",
      "domain": "lispex/source-hash/v0",
      "hex": "d5ca57e06197ed1dd0fbd2fdb3f82225492bca5c86a2f3858ff92670e4f79eac"
    },
    "path": "profile-gallery/decision-gallery/cases/age-threshold.lspx"
  }
}
npx lispex verify age-threshold.receipt.json
receipt is artifact-consistent
# verify-report: "status": "pass" · exit 0
# flip one hex nibble in the receipt, then verify again
npx lispex verify tampered.receipt.json
receipt is not artifact-consistent
- meaning-env-hash-mismatch
# exit 1

The verify button runs the exact verifier file published in the lispex package on npm, byte for byte, inside the browser.

Core Semantic Kernel