An agent saying DONE is not evidence. Verify the outcome.
INTENT → CLAIMS → EVIDENCE → POLICY → DECISION
Rust workspace, single CLI binary uni. Deterministic. Filesystem-only. No cloud required.
Watch the 42-second video · Reproduce this exact workflow
The video recreates terminal frames from the actual recorded output of the public v0.9.4 ARM64 release on a clean Git clone; it is not an unedited screen recording. The example verifies one claim, not an independently identified reviewer: the report explicitly says A2 and identity: SELF-DECLARED. See the linked run record before interpreting its verdict.
Developer Preview. The latest published binary is v0.9.4. See current status for what is shipped, what is measured, and what is still deliberately out of scope.
Prerequisites: Git, a stable Rust toolchain, and the build tools required by your project.
git clone https://github.com/memolabs-dev/uni-protocol.git
cd uni-protocol
cargo build --release
./target/release/uni verify examples/hello/hello.uni
./target/release/uni reportThat example runs cargo check through the trusted registry and records the
evidence under .uni/. To start in another repository, follow the complete
quickstart. Use uni init --profile node or --profile python for corresponding
starter verifier commands; review the trusted registry to match your project.
| Area | Command | Behavior |
|---|---|---|
| Contract | uni init |
creates .uni/{config.toml,contracts,evidence,decisions,artifacts,policies} + uni/intents |
| `uni compile | inspect` | |
uni import-speckit <dir> |
Spec Kit spec.md/plan.md → candidate DSL for human review | |
uni lint <contract> |
preflight without execution (coverage, registry refs, duplicates, selector bindings, pinned test names) | |
| Evidence | uni verify <contract> |
runs trusted-registry verifiers; incremental, git-+content-bound evidence; STALE on commit or watched-file change |
uni explain |
claims table + per-claim evidence detail (PRD §16 UX) | |
| Policy | .uni/policies/*.toml |
reject_on_invalid, escalate_on_stale/missing, min_verified_ratio (deterministic) |
| Decision | - | truth table → policy → ACCEPTED/REJECTED/EVIDENCE_REQUIRED/ESCALATED |
| Audit | uni report |
byte-stable CI/PR view (GitHub step summary ready) |
uni events |
append-only journal with uni.* attributes; --otlp emits OTLP/JSON, --all reads archives |
|
| Health | uni doctor |
workspace healthcheck (git, registry, policies, writability) |
| Packs | uni pack list / uni pack template <pack> <name> |
Domain Packs: reusable claim templates (packs/software) |
| Execute | uni run <contract> -- <command> |
runs your executor (any agent, any tool), then verifies; the exit code is the decision's |
| Work order | uni brief <contract> |
deterministic agent handoff: claims + exact evidence required (markdown/json, byte-stable) |
| Authorization | uni bind / uni bindings |
VerifierBindings for REQUIRE-carrying verifications (human act, journaled) |
| Identity | UNI_IDENTITY_TOKEN + [identities] |
verifies a signed JWT against a registry-pinned issuer (JWKS offline), lifting an independent proof from A3-D to A3 |
| Transport | uni bundle export / uni bundle verify |
audit surface as JSONL with per-record sha256; verify is offline and read-only |
| Study | experiments/study-50/ |
harness + metrics (agent self-report vs UNI vs human) |
Stack independence verified in CI: examples/ covers Rust, Python (unittest),
Node (node --test), and a file-hash artifact digest. CI matrix:
ubuntu, macos, windows for the core; POSIX-shell examples gated to Linux.
Release workflow builds five cross-compiled targets; the composite action in
adapters/github/ downloads the matching release binary (no build).
VERSION DOMAIN INTENT GOAL CLAIM REQUIRE ENSURE INVARIANT FORBID VERIFY ACCEPT REJECT ESCALATE
Verbatim from examples/booking/booking.uni:
VERSION 0.1
DOMAIN software
INTENT booking.cancel
GOAL
Cancel a confirmed booking safely.
CLAIM booking-state REQUIRED
ENSURE booking.status == cancelled
CLAIM inventory REQUIRED
ENSURE inventory.available == inventory.before + booking.seats
INVARIANT ledger-consistency CRITICAL
ENSURE ledger.balance == expected.balance
VERIFY booking-state
USING test.true
VERIFY inventory
USING test.true
VERIFY ledger-consistency
USING test.true
ACCEPT WHEN
required_claims == VERIFIED
AND critical_failures == 0
Every claim carries its own VERIFY, the invariant included: uni lint fails
otherwise. The verifier names resolve through the trusted registry, never
through the contract.
[verifiers]
"mini.tests" = "cargo test"
[verifiers."forbid.dirty-write"]
run = "! grep -Rn 'EVIL_WRITE' examples/forbid/sources.txt"
expect_not = "EVIL_WRITE"
files = ["examples/forbid/sources.txt"]
timeout = 30expect = output must contain; expect_not = output must not contain; files = content-bound
evidence invalidation by SHA-256 over watched files.
Memo Labs Dev maintains UNI as a standalone outcome-assurance layer. See the roadmap and acceptance coverage and October 2026 research snapshot.
Start with current status, which separates shipped behavior, measured evidence, and known limits.
Start at docs/index.md: why UNI, quickstart, language, claims, evidence, verification, decisions, GitHub, writing verifiers, specification.
The dated September 2026 report is kept as a historical snapshot. It is not the current project status.
cargo test # 158 tests incl. property-based decision determinism
./target/release/uni verify examples/hello/hello.uni && echo OKEvidence so far, with the limits kept beside the result:
- The check, in the pull request: a drifted proof lands as an inline annotation on the file that moved. docs/flagship-check.md
- Stale Evidence Benchmark, 100 manufactured drift scenarios with no model involved: on the 70 where the artifact stopped satisfying the claims, an exit-code CI stayed green 50 times, a cached CI 70 times, UNI 0 times. UNI detection 86 percent (100 percent in every detectable category), false-stale 0 percent. experiments/stale-bench/RESULTS-2026-09-14.md
- Reviewed real-agent study, corrected sample n=6: 0 false accepts and 1 false reject. H1/H2 (UNI beats an honest agent's self-report) are not supported. An older self-report column was invalid because the harness asserted DONE on the agent's behalf; those rows cannot be repaired, and the report says so. experiments/study-50/RESULTS-2026-09-14.md
- Hidden owner invariants, on two multi-file tasks: scripted plausible deliveries report DONE and keep their own tests green, while UNI rejects the property the implementer never saw. This proves the mechanism on these fixtures, not a population-level failure rate for coding models. Adversarial arm
- Drift after verification, on the same two tasks: a correct revision is verified, later code moves, prior evidence becomes stale, and the delivered revision is re-verified and rejected. Drift arm
Issues and pull requests are welcome. GitHub Issues is the public coordination
surface. Start with
CONTRIBUTING.md: it covers the one workflow worth knowing
(contract first, then uni verify), how to write a verifier adapter, and the
house rule that every claim is proven by a verifier rather than asserted in
prose. Check the existing issues first. If none matches, open a focused proposal
with the outcome you want and how it could be proved.
The project has a single binary with no cloud dependency, and its integration tests run the real CLI on real files. Please also read the Code of Conduct.
constitution.md - UNI is the outcome assurance layer. LLMs propose, humans/policies authorize, verifiers prove, UNI decides. Spec source: specs/001-uni-software-v01/spec.md.
