Specification v0.1
Universal Manifest v0.1 defines a portable state capsule: one document a subject (or a trusted issuer for that subject) can hand to multiple systems so those systems can safely learn:
- who the subject is (
subject) - when this capsule is valid (
issuedAt/expiresAt) - what the subject can do (claims / consents)
- how to find canonical data elsewhere (pointers / shard refs)
v0.1 is intentionally adoption-friendly:
- it is local-first (short TTL, bounded caching)
- it is forward compatible (unknown fields MUST be ignored safely)
- it is signature-permissive (integrity is staged; see v0.2)
Core document: lan:Manifest
Section titled “Core document: lan:Manifest”Required fields (v0.1)
Section titled “Required fields (v0.1)”@context— JSON-LD context URL@id— globally unique manifest identifier (a URI)@type— MUST includelan:Manifest(string or array)manifestVersion—"0.1"subject— who this manifest is about (a stable identifier URI; DID recommended but not required)issuedAt— ISO 8601 / RFC 3339 date-time (with timezone)expiresAt— ISO 8601 / RFC 3339 date-time (with timezone)
Optional fields (v0.1)
Section titled “Optional fields (v0.1)”v0.1 allows additional sections as long as consumers ignore unknown fields safely:
shards— composable sub-documents (lan:Shard)claims— assertions (role, verification status, policy flags, etc.)consents— permissions/consent grantsdevices— device registrations / trust metadatapointers— named references to canonical data sourcessignature— permissive signature envelope (non-interoperable in v0.1)
TTL and “use” semantics
Section titled “TTL and “use” semantics”Consumers MUST enforce TTL for use:
- If
now > expiresAt, the manifest MUST NOT be used to grant permissions or to render authoritative subject state. - Expired manifests MAY be retained for debugging, but MUST be treated as expired.
Issuers SHOULD use short TTLs appropriate to the surface (hours/days).
Extensibility (critical v0.1 rule)
Section titled “Extensibility (critical v0.1 rule)”Consumers MUST ignore unknown fields safely:
- unknown top-level properties
- unknown shard/entity shapes
- unknown item shapes inside
claims/consents/devices/pointers
This is what allows early adopters to extend the document without fragmenting the ecosystem.
Manifest IDs (@id)
Section titled “Manifest IDs (@id)”v0.1 recommendation for issuers:
- Generate
@idasurn:uuid:<uuidv4>
Rationale:
- globally unique
- offline-safe
- avoids premature commitments to content-addressed IDs before canonicalization is locked down
Caching + logging guidance (local-first)
Section titled “Caching + logging guidance (local-first)”Consumer guidance (for constrained devices and public surfaces):
- Cache the full manifest payload only while actively in use.
- Persist only references to
@idin logs/telemetry (optionally with a hash later).
Well-known names (non-normative registry)
Section titled “Well-known names (non-normative registry)”v0.1 allows arbitrary names, but these well-known strings reduce fragmentation across early adopters.
Shard names (shards[].name)
Section titled “Shard names (shards[].name)”canonicalProfilePointerpublicCapsulepublicProfilevenueIdentityvenuePolicyedgeNodedeviceIdentityvenueAssociation
Pointer names (pointers[].name)
Section titled “Pointer names (pointers[].name)”solidPod.creatorCanonicalsolidPod.venueCanonicalmatrix.userIdmatrixRoom.updatesmatrixRoom.revocationsactivityPub.actoredgeBaseUrledgeDescriptoruniversalManifest.currentconsumerExperience
Claim names (claims[].name)
Section titled “Claim names (claims[].name)”roleverification.statuspolicy.safeMode
Consent names (consents[].name)
Section titled “Consent names (consents[].name)”publicDisplayanalytics.proofOfPlaytelemetry.proofOfPlaysocial.profilePublic
Device trust levels (devices[].trust)
Section titled “Device trust levels (devices[].trust)”localenrolled
Published artifacts (versioned, immutable)
Section titled “Published artifacts (versioned, immutable)”These are expected to resolve over HTTPS:
- JSON-LD context:
/ns/universal-manifest/v0.1/schema.jsonld - JSON Schema:
/ns/universal-manifest/v0.1/schema.json - Discovery (non-normative):
/.well-known/universal-manifest.json
On the canonical standards host, that means:
https://universalmanifest.net/ns/universal-manifest/v0.1/schema.jsonldhttps://universalmanifest.net/ns/universal-manifest/v0.1/schema.json
Minimal example (v0.1)
Section titled “Minimal example (v0.1)”{ "@context": "https://universalmanifest.net/ns/universal-manifest/v0.1/schema.jsonld", "@id": "urn:uuid:2b5f0d3c-3c4c-4b83-8f2a-6f3b2cbd5c7d", "@type": "lan:Manifest", "manifestVersion": "0.1", "subject": "did:key:z6MkpExampleSubjectDid", "issuedAt": "2026-02-11T20:45:58Z", "expiresAt": "2026-02-12T20:45:58Z", "shards": []}- Conformance checklist + fixtures: Conformance → v0.1
- Draft integrity profile direction: Specification → v0.2