Design rationale

The specification says what a conforming file looks like. It does not say why each field is there, what was considered and rejected, or what the decision cost. These pages are that record — one per structure, written so that a later reader, including a later version of the people who wrote it, can tell a deliberate choice from an accident.

A rationale document is the receipt. It exists so that the next argument about a field starts from what was already decided and why, rather than from scratch.

The documents

the magic is PNG's, two version fields rather than one, a CRC over twelve bytes, and why the whole thing is sixteen.

  • The frame — why the format is framed at all, why

`payload_len` comes first and is a `u32`, why `stream_id` sits in the header rather than the payload, and why the CRC is at the tail.

into segments, why bindings expire rather than accumulate, why the marker is a fixed sixteen-byte pattern wrapped in an ordinary frame, and why segment period is left to the writer.

How they are structured

Each follows the same shape, deliberately:

SectionWhat it holds
What it isthe structure itself, in one short statement
Decision by decisioneach field, with the alternatives that lost
What was deliberately kept outproposals rejected, and the rule that rejected them
Costs acceptedwhat the decision costs, stated rather than hidden
Not yet justifiedthe parts that are still assertion rather than argument

The last two sections are the point. A rationale that only lists advantages is marketing; the cost and the open-ended parts are what make it checkable.

The rules these documents appeal to are the six design rules in §1 of the specification, and a decision that cannot be traced back to one of them is marked as not yet justified rather than quietly kept.


MD5 signature: 749cbc178d4c35531a0c8f1369533701