Backend Observation Matrix

The current observation contract compares the Rust reference, LIL, and LIT as three implementation families while retaining exact runner, artifact, host route, and provenance labels.

How to reason about it

  • Every runner exposes value/output, diagnostics, status, warnings, declared resource observations, artifact identity, limits, and provenance through the versioned observation contract.
  • LIL is a Lispex-written hosted interpreter and LIT is a Topaz-written transliteration. LIL currently supports all 205 primitive capability rows, while LIT independently remains at 84 supported and 121 rejected.
  • The installed-product receipt runs one host route per family over 144 cases. A route is one way of running a rule, such as the built-in interpreter or a separately installed product. The receipt records 253 family-pair agreements and 179 divergences. Pairwise results are Rust/LIL 61/83, Rust/LIT 65/79, and LIL/LIT 127/17, with 59 all-family agreements.
  • Separate evidence collected inside fixed limits seals LIT host agreement across interpreter, generated Rust, generated Python, and Web routes on a versioned set of four host checks.
  • The Native lispex.rust-engine-comparison/v1 report separately compares the Rust tree engine and the verified-bytecode VM engine. A VM is a virtual machine, the program that runs an already compiled list of instructions. The report preserves exact intermediate identities and fallback counters without adding a backend family.
  • The Native lispex.topaz-vm-comparison/v1 report separately compares one Lispex-derived bytecode artifact in the Rust and exact installed Topaz VMs. It records a separate VM lineage but does not rewrite the historical Rust/LIL/LIT family receipt.
  • The Native lispex.route-comparison/v1 receipt derives one source/Core IR/bytecode request and explicitly observes tree, Rust VM, exact Topaz VM, and the matching AOT product. AOT stands for ahead-of-time compilation, which turns the rule into a standalone program before it runs, so nothing compiles it at run time. The receipt checks semantic axes and comparable bytecode-cost resources separately while leaving unavailable tree counters unavailable.

Why the 179 pair differences occur

Every pair in the historical receipt now has one deterministic primary classification. “Classified” means the cause is machine-visible. It does not mean the difference is accepted or fixed.

Primary classificationPairsReading
capability-unsupported-loud115at least one limited backend rejected a capability it does not implement
different-disposition-known-defect46the backends reached different execution or error phases
diagnostic-projection-difference2the execution disposition agrees but diagnostics or warnings differ
host-resource-profile10the named set of resources or the resource outcome differs
semantic-mismatch6an observable same-disposition difference still needs investigation

The complete accounting is 432 family pairs, made up of 253 agreements, 179 divergences, and zero unclassified current divergences. A newly observed mismatch starts unclassified and fails closed until evidence assigns a reason.

Current backend status

Where it runsImplementation / provenanceCurrent evidence boundary
Native CLIRust reference with default tree and explicit verified-bytecode VM, same-origin-referencecurrent full Native CLI, and VM selection is strict with no fallback
Rust engine comparisontree and lispex-rust-vm/v1 sharing Rust values and primitive leavesfocused lispex.rust-engine-comparison/v1 observations and exact source/Core IR/bytecode identities. Diagnostic only, outside the 144-case family receipt
Topaz VM comparisonbuilt-in lispex-rust-vm/v1 and separately installed lispex-topaz-vm/v1, where the Topaz source is structurally separate and compiled by Topaz Rust Stage 0explicit macOS ARM64 lispex.topaz-vm-comparison/v1, with exact product/request/result identities, full-u64 resources, and zero fallback. Diagnostic only, outside Vouch and the historical family receipt
Four-route courtRust tree, built-in Rust VM, separately installed Topaz VM, and exact matching Topaz AOT, where the two Topaz products retain their declared Rust Stage 0 production lineageexplicit macOS ARM64 lispex.route-comparison/v1, with one derived request, exact products, semantic and comparable-resource axes, no-clobber, and zero retry or fallback. Diagnostic only, outside Vouch and the historical family receipt
Public WebAssembly / Playgroundsame Rust lineage compiled to WebAssemblycurrent same-origin observations, with profile-specific limits
npm CLINode packaging around the public WebAssembly and JavaScript buildcurrent packaging, and the command subset differs from native
Lispex-in-LispexLispex-written hosted interpreter, one LIL implementation familycurrent capability contract of 205/205 rows, including all 18 guest-calling rows through guest-machine frames, four limited private-effect output rows, three ordered warning-bearing aliases, and explicitly labelled character/string and advanced numeric host-kernel dependencies. The released 84-row joint-receipt snapshot has Rust/LIL agreement on 61 cases and divergence on 83
Lispex-in-Topaz interpreter routeTopaz-written transliteration, one LIT family with no source-independence claim84/205 primitive capability rows. The joint receipt pair Rust/LIT agrees on 65 cases and diverges on 79
Lispex-in-Topaz host routesthe one exact LIT source through interpreter, generated Rust, generated Python, and Webevidence collected inside fixed limits seals a versioned set of four host checks
Rust/LIL/LIT joint receiptthree implementation families and one installed product route per family144 cases and 432 executions, with 59 all-family agreements, 253 pair agreements, and 179 disclosed pair divergences
Scaled generated campaignnative and WebAssembly routes of the same Rust implementation lineage11,088 stored cases, with zero natural divergence and zero infrastructure failure. This is not the three-family receipt

A common mistake

Host variants within the Rust reference, LIL, or LIT family are not independent witnesses. A structurally different VM inside Rust is still same-lineage. The Topaz VM adds a separate implementation lineage but not a proof, a machine-checked whole-profile equivalence claim, or an automatic fourth family in the older receipt.

Current boundaries

  • No source-independence claim is made for LIT. The matrix holds only for what it recorded and does not establish whole-language semantic equivalence or no-divergence beyond it.

Keep going

Checked Surfaces breaks the 144 cases into their inventories, and Runtime and Backends states the admission rules behind each row.

Bytecode and Rust VM · Checked Surfaces · Runtime and Backends