Untilum
← Back to Untilum Protocol

RFC-0010: Capsule File Format

Status: Last Call · Date: 2026-07-17 · Editors: Untilum project — hello@untilum.com

Part of the TSP RFC series; see the series index for the Last Call window and how to comment. The key words MUST, MUST NOT, SHOULD, SHOULD NOT, and MAY in this document are to be interpreted as described in BCP 14 [RFC 2119] [RFC 8174] when, and only when, they appear in all capitals.

Abstract

This document requires every capsule-creating application to deliver one and the same file format — the UDDP container — and to form it byte-identically across implementations. It specifies the pinned opener-template mechanism that makes cross-implementation identity achievable despite compiled-bundle irreproducibility, and the conformance rules F1–F5 that keep the guarantee testable in CI.

1. Principle

Every application that creates capsules — the web app, the desktop application, the CLIs, the SDKs, third-party tools — MUST hand the user one and the same file format: the UDDP container (normative wire format: uddp-v1.md). A capsule is a 50–100 year promise; the file the user archives must not depend on which of our applications produced it, because by opening day none of them may exist. One format means one set of recovery instructions, one opener, one thing for archives and heirs to recognize.

A bare capsule.json remains the normative protocol artifact (RFC-0009; uddp-v1.md §1.2) and implementations MAY additionally expose it for interoperability and debugging — but the default deliverable to an end user is the container: capsule + embedded opener + instructions + specifications, in one file.

2. Identical formation across implementations

It is not enough that every application emits a UDDP file; they MUST emit the same UDDP file. For one capsule document (identical capsule.json bytes), one embedded beacon, and one opener-template version, every conforming generator — TypeScript, Rust, or independent — MUST produce a byte-identical container.

Why this is a protocol requirement and not a nicety:

3. The opener template

The only part of a container an implementation cannot independently reproduce is OPEN-ME.html: it embeds a compiled JavaScript bundle, and byte-identical bundles cannot be rebuilt from source across toolchains. Therefore:

4. Conformance

5. Relationship to other documents

6. Security Considerations

Byte-identical formation (F2) is a tamper-evidence mechanism: any conforming implementation can regenerate a suspect container and diff it, so a modified container cannot hide among legitimate variation — there is none. The pinned opener template is the counterpart supply-chain control (RFC-0002 §T8): implementations substitute placeholders and never rebuild the template, so a single reviewed, hashed artifact — carrying its own KAT self-test — is what every user receives, and F3’s no-modification rule keeps generators from becoming silent template editors.

7. References

7.1. Normative

7.2. Informative

Editors’ Addresses

Untilum project — Editors of the TSP RFC series Email: hello@untilum.com · Issues: https://github.com/untilum/protocol/issues

Revision History

Date Status Change
2026-07-14 Draft Initial version.
2026-07-17 Last Call Publication pass: BCP 14 boilerplate, Abstract, Security Considerations, References, Revision History added; no normative changes. Entered Last Call per RFC-0008 §4.