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.