Status · 2026-09-02

Where the format actually stands

Version 1, published. What is stable, what the reference implementations still owe it, and what is open.

Version 1 of the format was published on 2026-09-02. Every meeting gocassini records is written this way and the files are in people's hands. Nothing here is a plan.

Stable

The wire strings in org.cassini.portable-meeting/1 are not going to move. CASSINI_FORMAT, the payload chunk naming, base64url+gzip+utf8json, the CASSINI_TX_<ID>_PAYLOAD_ prefix scheme, the manifest's top-level members and the cassini.words.v1 body shape are load-bearing in shipped software. A change to any of them is a new major version.

What the software still owes the specification

The document is ahead of the code in a few places: padded base64url is refused by one reader, none of them yet bounds the decompression against the declared RAW_BYTES, and the six trust-state names are not the names they print. The conformance suite is where each of those shows up as a warning, and it is the thing to run against your own reader. The gocassini change that writes version: 1 and the scripted role is an open pull request.

Open

A second implementation. There isn't one. One implementation is not an ecosystem, and most of why this site exists is to find out whether that can change. The name question was settled: the format keeps the product's name, for the reason SQLite's file format keeps its. The argument in full.

What a second implementation would need. I do not know, because there isn't one. The honest answer to "who else implements this" is nobody, and one implementation is not an ecosystem. Most of why this repository exists is to find out whether that can change.

If you have built something that reads or writes these files, or tried to and hit a wall, I would like to hear about it. The walls are more useful.

The full arguments

The design notes carry them, dates and all. The freeze list is the complete inventory.