VeriSimDB is a safety-critical cross-modal entity engine ("octad model":
each entity exists across 8 modalities). Its application logic is written
in Rust (workspace crates under rust-core/ — verisim-octad,
verisim-graph, verisim-planner, verisim-drift, verisim-nif,
etc.). Per the estate language policy
(standards/rhodium-standard-repositories/spec/LANGUAGE-POLICY.adoc
§Terminology), "Rust" means "Rust/SPARK": Rust is the primary
implementation language now, but the project is designed to admit
SPARK/Ada verification modules across a stable, Idris2-typed boundary,
with Zig as the FFI layer. Rust here is never the ABI/API/FFI layer.
This document is the project’s compliance stance against that policy.
Prior to this audit (2026-05-18) the seam (src/abi/.idr + ffi/zig/)
was present but carried *no stance doc — a silent-regress risk flagged
by the estate audit (status was "DESIGNED-ONLY"). This document records
the seam honestly and brings the project to documented structural
compliance.
VeriSimDB is a database/verisimilitude engine, not a ledger. The correctness-critical surface is the cross-modal entity store, its drift detection, and the C ABI that exposes it to consumers.
| Critical surface | Where |
|---|---|
Result-code round-trip (no FFI status corruption) |
|
Entity lifecycle / modality read-write safety |
|
C ABI struct layout fidelity |
|
Octad cross-modal consistency, drift thresholds |
Rust workspace: |
| File | Role |
|---|---|
|
Idris2 boundary types — total models of |
|
C-ABI struct layout — offsets/sizes that must match the Rust
|
|
Zig/C-FFI boundary: every |
All three modules carry %default total and contain zero proof
escapes (no believe_me, assert_total, postulate, idris_crash).
They are checkable in principle with idris2 --check src/abi/Types.idr
etc. The Idris2 toolchain is not yet wired into CI; wiring it is the
primary tracked follow-up.
debugger/src/abi/ carries a parallel copy of the same three modules
for the debugger component; the same total/no-escape property holds
there.
The boundary is the Idris2 seam above. A future SPARK/Ada
re-implementation of any correctness-critical store/drift component sits
on the far side of the Foreign C-ABI contract without changing it: it
must honour the VResult code discipline and the Layout struct
contract. No SPARK code exists yet; the seam exists so it can be added
without redesign, which is exactly what §Terminology requires of a
"designed to admit SPARK/Ada" Rust project.
-
The Idris2 seam states the FFI shape contract (result-code round-trip, layout, total wrappers). It does not yet carry type-level statements of the deeper octad-consistency or drift-threshold invariants enforced (only) in the Rust workspace; those are owed, not proven.
-
ffi/zig/src/main.zigstill contains unfilled{{PROJECT}}RSR template placeholders — the Zig implementation layer is scaffolding, not a finished faithful implementation of theForeign.idrcontract. This is a real gap on the FFI side, not merely a missing proof. -
Idris2 is not in CI (
.tool-versionscarries noidris2entry), so the seam’s totality is asserted, not gate-enforced. -
The companion data repo
verisimdb-datadeliberately removed its template ABI Idris2 files (see itsPROOF-NEEDS.md) to avoid a false formal-verification impression; that repo is data, not verified code, and makes no verification claims.
-
standards/rhodium-standard-repositories/spec/LANGUAGE-POLICY.adoc§Terminology, §"Rust is never the ABI" -
Estate exemplar stance:
proof-of-work/RUST-SPARK-STANCE.adoc -
This repo’s seam:
src/abi/{Types,Layout,Foreign}.idr -
Tracking: hyperpolymath/standards#124