The receipt anchors the pixels, not just the metadata.
A RELOS receipt proposes a Decision. Its payload.surface.surface_hash
field declares which exact rendered UI surface the operator will see at decision
time. Anyone — your browser, right now — can hash the rendered PNG and check
whether it matches. A rogue agent that ships a different surface is detectable.
The receipt
RELOS Receipt Core Profile v0.1 — schema-valid against the spec's own ajv-cli@5 validator.
Full RELOS receipt JSON
loading…
Verify in your browser
Your browser fetches both rendered PNGs, computes sha256 client-side via
crypto.subtle, and compares against the receipt's anchor.
No server-side trust.
Canonical checking…
What the operator actually saw at decision time.

Adversarial checking…
Same claimed evidence_refs. Different composition. A rogue agent's drift.

What's different in the adversarial version
- Top-row badge swapped from
Reversible · Expires UTCtoRoutine merge(green success tone). - Blast radius subtitle softened from
Medium · kernel + TUItoLow · kernel module. - New fake
Risk: low / safebadge added to Blast radius card. - Destructive
Rejectbutton hidden behind a ghostOther optionsaffordance. - Body description softened from feature name to
Small compositor improvement.
Each individual change is plausible in isolation. Stacked, they nudge the operator toward Approve. The sha256 catches the whole composition deterministically — no human review needed.
Composite verdict surface
The MOGOS substrate explaining its own claim: this PNG was rendered by TELAS and embeds the two surfaces above with their sha256s and match/mismatch verdicts. Determinism is what makes that recursion well-defined.

The chain is closed
The proposal receipt is now sealed with real RELOS hashes — content_hash via JCS+SHA-256, chain_hash via
sha256(content_hash) as genesis. A second receipt of kind grandos.decision.decided.v1
records the operator's choice (Approve and merge) and chains via prev_chain_hash.
Verification follows the spec's normative order (content_hash → prev_chain_hash → chain_hash).
Both receipts pass ajv-cli@5 schema validation against
relos-core/json-schema/receipt.json. The chain itself is verified in
eval.py's new chain_continuity P0 metric — any byte-level edit to either
receipt would break the chain and fail the gate.
Download proposal receipt JSON · Download decision receipt JSON
Forward arrow: agent intent → verified UI → sealed receipt
The canonical render above was hand-authored as a fixture. The forward arrow is harder: an agent declares an IntentPlan
(what it wants the operator to decide); the VASSA compiler turns it into a verified UiPlan deterministically; TELAS renders the
pixels; the sha256 gets sealed into the receipt's payload.surface.surface_hash. Below is the substrate's actual output
from vassa compile-intent piped into telas-cli render — no hand-authoring.
Compiled from IntentPlan substrate output, not hand-authored
VASSA Dashboard archetype, not yet tuned for decision surfaces — useful as evidence the pipeline closes, not as design target.

python3 00-CORE/vassa/examples/verification-loop/scripts/compile_intent.py
# IntentPlan (fixtures/intent-plan.json)
# → vassa compile-intent → CompileOutput { plan, receipts: 2 }
# → strip pack-namespace + Text variant aliases (interop adapter; see WO-09)
# → TELAS-consumable UiPlan
# Then: cargo run -p telas-cli -- render approval-mvp-from-intent.json --output approval-mvp-from-intent.png
Honest gap: The compiled UiPlan visibly differs from the canonical (light theme,
Stat overlap, no Grid layout). VASSA's Dashboard archetype produces a real UiPlan but not an operator-grade decision surface yet.
The interop adapter strips namespacing (essentials.Stat → Stat) and Text variant aliases
(h2 → heading2). These are real cross-system canonicalization gaps — filed as WO-09.
Run the verifier yourself, offline
A 150-line Python script reads the anchor from the receipt and re-runs the proof against fresh renders.
git clone https://github.com/mogos-collective/universe # not public yet cd universe bash 00-CORE/vassa/examples/verification-loop/run.sh python3 00-CORE/vassa/examples/verification-loop/scripts/replay.py # Expected verdict: 3/3 PASS # ✓ canonical render matches receipt anchor # ✓ TELAS replay is deterministic # ✓ adversarial drift detected