Preview / Working Draft — v0.4 Conformance-Tier Stack. [PREVIEW] sections are under active development and subject to change.

Universal Manifest — Primer

v0.4 · Informative

This document:
/spec/v0.4/primer/
Document set:
Universal Manifest v0.4 (Conformance-Tier Stack)
Latest stable version:
https://universalmanifest.net/spec/v0.3/
History:
https://universalmanifest.net/spec/ (version index and changelog)
Editors:
Universal Manifest Working Group

Restructured per the Conformance-Tier Stack strategy (owner-selected, audit 2026-06-11). DRAFT for review.

This Primer is the breadth-first entry point to the Universal Manifest v0.4 document set. It is informative: it contains no normative requirements and defines no wire formats. Read it first to understand what Universal Manifest is and how the pieces fit. Then descend into the normative documents your work requires — starting with the Base specification, which everything else builds on.

Universal Manifest, in one sitting

What it is

A Universal Manifest is a portable, signed, self-describing capsule of state about a subject — a person, an app, a venue, a device — that one party can hand to another and the receiving party can verify on its own, without phoning home.

Think of it as a sealed envelope that travels with you. Inside are identity references, role permissions, device registrations, consent records, and pointers to authoritative data. Stamped across the outside is a cryptographic signature that proves the contents have not been altered since they were assembled, and a hard expiry that bounds how long anyone may rely on them. A smart display at a venue door, a kiosk, a peer's phone, or a network edge can read that envelope, check the stamp, apply its own policy, and act — even with no network connection at all.

That last property is the whole point. Universal Manifest is designed for local-first environments: venue edges, public displays, air-gapped rooms, NFC and BLE taps between two phones. In those settings an evaluator cannot assume a live connection to a cloud service of record. It must be able to decide, from the bytes in front of it plus material it already holds, whether to trust what it is looking at. A Universal Manifest is the standardized shape of those bytes, and this specification is the contract for how to read them.

Conceptually, Universal Manifest is a hybrid of two ideas the web already knows. From the Web Publication Manifest it borrows semantic linkability — linked-data identity references and pointers to canonical sources, so a manifest can describe a subject by reference rather than by copying everything inline. From the Web App Manifest it borrows an applied processing lifecycle — a defined sequence an evaluator runs to turn a received document into a decision. Put those together and you get a state capsule with both meaning and a runtime.

One framing worth keeping in mind, because it explains much of the design: a manifest is a bag of claims, not a proof of truth. The signature proves who assembled the envelope. It does not, by itself, prove that the subject controls every DID mentioned inside, or that an issuer really issued a claim listed there. The specification is largely about closing that gap honestly — giving evaluators graduated, explicit ways to verify the parts that matter, and to record exactly how far that verification got.

The shape of a manifest

Every manifest, no matter what kind, shares one fixed envelope. What makes a particular manifest an identity capsule versus a device descriptor versus a consent record versus a receipt is which optional members it carries — not a different schema per kind. The specification calls this a polymorphic envelope: one outer shape, many payloads.

The envelope has four layers:

A useful mental model: the anchor and lifespan members and the signature are the envelope you can always rely on being there; facets, claims, consents, pointers, and devices are the contents you discover by looking inside. An evaluator that meets a member it does not understand keeps it (so the signature still verifies) but does not act on it (so unknown extensions can never change a decision). That single rule — preserve everything, act only on what you recognize — is what makes the format extensible without becoming brittle.

The lifecycle: how a manifest becomes a decision

The conceptual spine of the whole specification is the six-stage evaluation sequence. When any evaluator encounters a manifest, it runs the manifest through these six stages in order. Each stage produces a defined output that feeds the next, and the evaluator may stop early at any stage by emitting a rejection. Told as a story:

  1. Arrive. The envelope is received and parsed. The evaluator confirms the required members are present and that type includes um:Manifest. It keeps any members it does not recognize — they must survive untouched through signature verification — but they will have no effect on the outcome.

  2. Verify. The evaluator checks the seal and the clock. It verifies the signature over the canonical bytes; it rejects anything expired or with an issue-time after its expiry. If the manifest leans on stronger identity binding for higher assurance, this is where those binding checks run, each recording its own outcome. A failed signature ends the story here.

  3. Project. The evaluator extracts only the facets, claims, pointers, and devices relevant to its context. Disclosure is holder-controlled: the holder chose what to include. Crucially, a facet that is absent is not projected — it is not evidence of absence. The evaluator must never assume it is seeing the subject's complete state.

  4. Consent. Before touching any facet's data, the evaluator checks the matching consent record: is my intended operation in the consent's scope, is my purpose within its declared purpose, is it still inside its validity window? No valid consent, no processing. An encrypted facet the evaluator cannot open is acknowledged as a sealed entry — recorded as present, never guessed at.

  5. Compose. The evaluator assembles the result into one of four honest outcomes: accepted, accepted-with-warnings, accepted-partial (some facets processed, others sealed or denied), or rejected. The result is machine-readable and carries per-facet status.

  6. Receipt. The evaluator emits a structured receipt — a machine-readable record of what it actually did. The receipt must not hide failed checks or suppress negative outcomes. It is the audit trail, and in v0.4 it can itself be a signed, chainable manifest.

Two design commitments run through every stage. First, honesty: a receipt records the real outcome, including the gap between what a manifest declared it needed and what the evaluator could actually verify. Second, fail-safe defaults: missing consent blocks processing, unverifiable trust caps out low, unknown content is preserved but inert. The evaluator never invents assurance it did not earn.

The core guarantees

Strip the specification to its promises and five remain:

These hold for the baseline of the specification — the part every conformant implementation must support. Everything beyond the baseline is layered on top in a disciplined way, which is the subject of the next section.

A map of the documents: tiers and extensions at one glance

Universal Manifest v0.4 is organized as a conformance-tier stack. The idea is simple: the question that decides what you must read and build is "what level of assurance am I certifying to?" The baseline answers most needs; each higher tier and each optional capability is a self-contained companion document you add only when you need it.

The trust ladder. Trust tiers are strictly additive — a claim verified at a higher tier automatically satisfies every lower tier. Higher tiers buy stronger guarantees at the cost of more user ceremony. The specification mandates no minimum; an evaluator picks its tier from its own threat model.

How that ladder becomes documents:

Reading paths, by who you are:

The stable-versus-preview line. The Base is the production-candidate core, on track to harden toward v1.0. The advanced tiers and several optional features are marked PREVIEW — under active working-group review, built into the draft on the editors' recommended defaults, and fully revisable before the schema locks. Naming a capability in the Base is breadth; specifying it in an extension is depth. That separation is what keeps the Base digestible while the frontier keeps moving — and it is exactly the discipline that kept v0.3 readable.


This Primer summarizes; it does not bind. Where it and a normative document appear to differ, the normative document governs. Start with the Base specification.