The snapshot fields a channel config CARRIES — the vocabulary a preview can ever report, and
therefore the set every client must be able to NAME.
It lives in core because it is consumed on both sides: the server's reader record is the
runtime face of it (held EQUAL to this list by channel-config-moves.test.ts, so a field
gained there and not here is a red test, not a client rendering a raw key), and the surface's
label table is checked against it so no move can arrive with no word for it.
The snapshot fields a channel config CARRIES — the vocabulary a preview can ever report, and therefore the set every client must be able to NAME.
It lives in core because it is consumed on both sides: the server's reader record is the runtime face of it (held EQUAL to this list by
channel-config-moves.test.ts, so a field gained there and not here is a red test, not a client rendering a raw key), and the surface's label table is checked against it so no move can arrive with no word for it.