examples/document-prose-profile.umsg
%unimsg 0 document/prose-profile/v0 · 180 lines · 8702 bytes of text · 4144 bytes canonical · the raw file
Point at anything below — a sigil, a literal, a brace — and the card says what it is. Keyboard: tab through the document. Every explanation is also printed in full beneath the source.
%unimsg 0 document/prose-profile/v0
-- The first document in @rd/profile/prose/v0, written to find out whether the
-- profile is usable rather than to assert that it is.
--
-- THE OTHER TWO EXAMPLES ARE TYPESETTING. The tenancy agreement is paginated
-- and sets its margins; the Japanese article embeds two font faces and chooses
-- a leading in points. Both are the vocabulary working as designed, and both
-- are what somebody asking for an "enhanced markdown" did not want.
--
-- THIS ONE DECLARES NO TYPE AT ALL. Its defaults are the profile's, verbatim,
-- and after that there is not a single length in the file. What is left is the
-- part markdown cannot do: a table with a spanning header, a footnote, an
-- ordered list that is really numbered, a derived contents list, and an anchor
-- somebody can link to.
--
-- WHAT WRITING AND THEN RENDERING IT FOUND, and the count is the evidence
-- rather than a confession: six. Two changed the profile, three were this
-- document lying about the vocabulary, and one is a renderer's to fix.
--
-- THE THREE THIS DOCUMENT GOT WRONG were all the same mistake, and a renderer
-- found them where reading did not: a :table-cell, a :quotation and a note
-- entry all take BLOCKS under :children, and this document put runs in
-- :content on the first two and a bare block sequence on the third. All three
-- parsed. They rendered as an empty three-column grid, a quotation with a
-- source and no words, and a note card with a number and no note — each found
-- by looking at a rendering, none by reading the file.
--
-- THE LESSON IS ABOUT WHERE THE TRUTH IS. The structural table has a column
-- headed `carries-runs` and it answers `no` for every one of them; note-keys
-- requires :doc and :children. A parser cannot catch this, because a document
-- with a key the vocabulary does not define there is still well-formed
-- unimsg — so the gate that would catch it is a vocabulary checker, and until
-- one exists a renderer is the checker.
--
-- THE RENDERER'S ONE is the ordered list: this document names a :decimal
-- scheme and neither renderer wrote a number. The document says what to write,
-- so that is a gap on the reading side rather than the writing side. An
-- UNORDERED list is different and is nobody's bug — there is no bullet counter
-- style, a list with no :numbering is simply unordered, and the marker is the
-- reader's to choose. That is exactly why the profile now carries
-- what-a-reader-still-owes.
--
-- A LIST IS ORDERED ONLY BY CARRYING :numbering. The first draft refused
-- numbering schemes as typography, which would have refused the ordered list —
-- the one construct nobody would give up.
--
-- THERE IS NO INLINE-CODE RUN KIND. Inline code is a :text run whose :family is
-- :mono, so the draft that refused :family outright had no inline code in a
-- profile written to be a superset of a markdown subset that has it. :family is
-- now restricted to the three generic names rather than refused, which is the
-- honest line: a generic name is a request the reader satisfies, not a
-- measurement.
--
-- AND :styles SURVIVES USEFULLY only because a style may still say WHAT
-- something is. The moment it says how big, it is out.
prose-profile @document/prose-profile/v0 {
title "Reading a document without typesetting it"
status :draft
at 2026-09-01
flow :reflowable
targets [ external -> @rd/profile/prose/v0 ]
locale { language "en", direction :ltr }
-- The profile's block, verbatim. Every conforming document carries this
-- same five lines, which is what lets a profile reader skip resolution: it
-- knows the answer before it opens the file.
defaults {
family :sans
size pt 12
weight 400
colour :on-surface
line-height em 1.4
}
-- A style may say WHAT a thing is. It may not say how big.
styles {
caution { doc "a paragraph the reader should not skim", applies-to :block, properties { fill :muted } }
term { doc "a term on first use", applies-to :text, properties { slant :italic } }
strong { doc "a run the sentence turns on", applies-to :text, properties { weight 700 } }
code { doc "code, in the line", applies-to :text, properties { family :mono } }
}
numbering {
steps { doc "the steps of the procedure", style :decimal }
}
notes {
why-not-a-sibling {
doc "why this is a profile rather than a fourth vocabulary"
children [
{ block :paragraph, content [
"A fourth vocabulary would duplicate the block table, and two block tables drift." ] },
]
}
}
content [
{ block :contents, over :sections, depth 1 },
@what { block :section, name [ "What the profile is" ],
children [
{ block :paragraph, content [
"A prose document is an ordinary rich document that has declined to make any ",
{ kind :text, text "typographic", style -> @styles.term },
" decision. It carries the profile's defaults unchanged, sets no length anywhere, and is therefore readable by a renderer that never implements resolution",
{ kind :note, to -> @notes.why-not-a-sibling },
"." ] },
{ block :paragraph, style -> @styles.caution, content [
"It is still a rich document. A full reader renders it exactly as it renders any other, and nothing here narrows the vocabulary." ] },
] },
@keeps { block :section, name [ "What survives that markdown cannot hold" ],
children [
{ block :list, children [
{ block :list-item, children [
{ block :paragraph, content [ "a table whose header spans two columns" ] } ] },
{ block :list-item, children [
{ block :paragraph, content [ "a footnote with a real body, rather than a line at the bottom of the file" ] } ] },
{ block :list-item, children [
{ block :paragraph, content [ "an anchor another document can point at — see ",
{ kind :link, to -> @what, content [ "the section above" ] }, "" ] } ] },
] },
@comparison { block :table, name [ "Where each format stops" ],
children [
{ block :table-row, repeat :header, children [
{ block :table-header, scope :column, span { columns 2 }, children [ { block :paragraph, content [ "structure" ] } ] },
{ block :table-header, scope :column, children [ { block :paragraph, content [ "type" ] } ] },
] },
{ block :table-row, children [
{ block :table-cell, children [ { block :paragraph, content [ "markdown" ] } ] },
{ block :table-cell, children [ { block :paragraph, content [ "headings, lists, links" ] } ] },
{ block :table-cell, children [ { block :paragraph, content [ "none, and that is the point" ] } ] },
] },
{ block :table-row, children [
{ block :table-cell, children [ { block :paragraph, content [ "this profile" ] } ] },
{ block :table-cell, children [ { block :paragraph, content [ "tables, notes, citations, navigation" ] } ] },
{ block :table-cell, children [ { block :paragraph, content [ "none, declared" ] } ] },
] },
{ block :table-row, children [
{ block :table-cell, children [ { block :paragraph, content [ "the full vocabulary" ] } ] },
{ block :table-cell, children [ { block :paragraph, content [ "the same" ] } ] },
{ block :table-cell, children [ { block :paragraph, content [ "pages, fonts, inks, lengths" ] } ] },
] },
] },
] },
@writing { block :section, name [ "Writing one" ],
children [
{ block :list, numbering -> @numbering.steps, children [
{ block :list-item, children [
{ block :paragraph, content [ "copy the profile's ",
{ kind :text, text "defaults", style -> @styles.code }, " block, unchanged" ] } ] },
{ block :list-item, children [
{ block :paragraph, content [ "name the profile in ",
{ kind :text, text "targets", style -> @styles.code } ] } ] },
{ block :list-item, children [
{ block :paragraph, content [ "write the document, and set no length" ] } ] },
] },
{ block :quotation,
source [ "@rd/profile/prose/v0" ],
children [
{ block :paragraph, content [
"Declaring this profile is an author saying they have none." ] },
] },
{ block :code, lines [
"targets [ external -> @rd/profile/prose/v0 ]",
] },
] },
]
}
The canonical encoding
Produced by the reference encoder when this page was built. Decoding these bytes and printing them in the text form returns the document above, byte for byte — that round trip is the claim the whole format rests on.
a1 6d 70 72 6f 73 65 2d 70 72 6f 66 69 6c 65 da 00 01 11 d5 82 81 da 00
01 11 d6 78 19 64 6f 63 75 6d 65 6e 74 2f 70 72 6f 73 65 2d 70 72 6f 66
69 6c 65 2f 76 30 ab 62 61 74 da 00 01 11 da 6a 32 30 32 36 2d 30 39 2d
30 31 64 66 6c 6f 77 da 00 01 11 d4 6a 72 65 66 6c 6f 77 61 62 6c 65 65
6e 6f 74 65 73 a1 71 77 68 79 2d 6e 6f 74 2d 61 2d 73 69 62 6c 69 6e 67
a2 63 64 6f 63 78 35 77 68 79 20 74 68 69 73 20 69 73 20 61 20 70 72 6f
66 69 6c 65 20 72 61 74 68 65 72 20 74 68 61 6e 20 61 20 66 6f 75 72 74
68 20 76 6f 63 61 62 75 6c 61 72 79 68 63 68 69 6c 64 72 65 6e 81 a2 65
62 6c 6f 63 6b da 00 01 11 d4 69 70 61 72 61 67 72 61 70 68 67 63 6f 6e
74 65 6e 74 81 78 50 41 20 66 6f 75 72 74 68 20 76 6f 63 61 62 75 6c 61
72 79 20 77 6f 75 6c 64 20 64 75 70 6c 69 63 61 74 65 20 74 68 65 20 62
6c 6f 63 6b 20 74 61 62 6c 65 2c 20 61 6e 64 20 74 77 6f 20 62 6c 6f 63
6b 20 74 61 62 6c 65 73 20 64 72 69 66 74 2e 65 74 69 74 6c 65 78 29 52
65 61 64 69 6e 67 20 61 20 64 6f 63 75 6d 65 6e 74 20 77 69 74 68 6f 75
74 20 74 79 70 65 73 65 74 74 69 6e 67 20 69 74 66 6c 6f 63 61 6c 65 a2
68 6c 61 6e 67 75 61 67 65 62 65 6e 69 64 69 72 65 63 74 69 6f 6e da 00
01 11 d4 63 6c 74 72 66 73 74 61 74 75 73 da 00 01 11 d4 65 64 72 61 66
74 66 73 74 79 6c 65 73 a4 64 63 6f 64 65 a3 63 64 6f 63 71 63 6f 64 65
2c 20 69 6e 20 74 68 65 20 6c 69 6e 65 6a 61 70 70 6c 69 65 73 2d 74 6f
da 00 01 11 d4 64 74 65 78 74 6a 70 72 6f 70 65 72 74 69 65 73 a1 66 66
61 6d 69 6c 79 da 00 01 11 d4 64 6d 6f 6e 6f 64 74 65 72 6d a3 63 64 6f
63 73 61 20 74 65 72 6d 20 6f 6e 20 66 69 72 73 74 20 75 73 65 6a 61 70
70 6c 69 65 73 2d 74 6f da 00 01 11 d4 64 74 65 78 74 6a 70 72 6f 70 65
72 74 69 65 73 a1 65 73 6c 61 6e 74 da 00 01 11 d4 66 69 74 61 6c 69 63
66 73 74 72 6f 6e 67 a3 63 64 6f 63 78 1b 61 20 72 75 6e 20 74 68 65 20
73 65 6e 74 65 6e 63 65 20 74 75 72 6e 73 20 6f 6e 6a 61 70 70 6c 69 65
73 2d 74 6f da 00 01 11 d4 64 74 65 78 74 6a 70 72 6f 70 65 72 74 69 65
73 a1 66 77 65 69 67 68 74 19 02 bc 67 63 61 75 74 69 6f 6e a3 63 64 6f
63 78 26 61 20 70 61 72 61 67 72 61 70 68 20 74 68 65 20 72 65 61 64 65
72 20 73 68 6f 75 6c 64 20 6e 6f 74 20 73 6b 69 6d 6a 61 70 70 6c 69 65
73 2d 74 6f da 00 01 11 d4 65 62 6c 6f 63 6b 6a 70 72 6f 70 65 72 74 69
65 73 a1 64 66 69 6c 6c da 00 01 11 d4 65 6d 75 74 65 64 67 63 6f 6e 74
65 6e 74 84 a3 64 6f 76 65 72 da 00 01 11 d4 68 73 65 63 74 69 6f 6e 73
65 62 6c 6f 63 6b da 00 01 11 d4 68 63 6f 6e 74 65 6e 74 73 65 64 65 70
74 68 01 da 00 01 11 d5 82 81 da 00 01 11 d6 64 77 68 61 74 a3 64 6e 61
6d 65 81 73 57 68 61 74 20 74 68 65 20 70 72 6f 66 69 6c 65 20 69 73 65
62 6c 6f 63 6b da 00 01 11 d4 67 73 65 63 74 69 6f 6e 68 63 68 69 6c 64
72 65 6e 82 a2 65 62 6c 6f 63 6b da 00 01 11 d4 69 70 61 72 61 67 72 61
70 68 67 63 6f 6e 74 65 6e 74 85 78 4c 41 20 70 72 6f 73 65 20 64 6f 63
75 6d 65 6e 74 20 69 73 20 61 6e 20 6f 72 64 69 6e 61 72 79 20 72 69 63
68 20 64 6f 63 75 6d 65 6e 74 20 74 68 61 74 20 68 61 73 20 64 65 63 6c
69 6e 65 64 20 74 6f 20 6d 61 6b 65 20 61 6e 79 20 a3 64 6b 69 6e 64 da
00 01 11 d4 64 74 65 78 74 64 74 65 78 74 6b 74 79 70 6f 67 72 61 70 68
69 63 65 73 74 79 6c 65 da 00 01 11 d7 6b 73 74 79 6c 65 73 2e 74 65 72
6d 78 99 20 64 65 63 69 73 69 6f 6e 2e 20 49 74 20 63 61 72 72 69 65 73
20 74 68 65 20 70 72 6f 66 69 6c 65 27 73 20 64 65 66 61 75 6c 74 73 20
75 6e 63 68 61 6e 67 65 64 2c 20 73 65 74 73 20 6e 6f 20 6c 65 6e 67 74
68 20 61 6e 79 77 68 65 72 65 2c 20 61 6e 64 20 69 73 20 74 68 65 72 65
66 6f 72 65 20 72 65 61 64 61 62 6c 65 20 62 79 20 61 20 72 65 6e 64 65
72 65 72 20 74 68 61 74 20 6e 65 76 65 72 20 69 6d 70 6c 65 6d 65 6e 74
73 20 72 65 73 6f 6c 75 74 69 6f 6e a2 62 74 6f da 00 01 11 d7 77 6e 6f
74 65 73 2e 77 68 79 2d 6e 6f 74 2d 61 2d 73 69 62 6c 69 6e 67 64 6b 69
6e 64 da 00 01 11 d4 64 6e 6f 74 65 61 2e a3 65 62 6c 6f 63 6b da 00 01
11 d4 69 70 61 72 61 67 72 61 70 68 65 73 74 79 6c 65 da 00 01 11 d7 6e
73 74 79 6c 65 73 2e 63 61 75 74 69 6f 6e 67 63 6f 6e 74 65 6e 74 81 78
7f 49 74 20 69 73 20 73 74 69 6c 6c 20 61 20 72 69 63 68 20 64 6f 63 75
6d 65 6e 74 2e 20 41 20 66 75 6c 6c 20 72 65 61 64 65 72 20 72 65 6e 64
65 72 73 20 69 74 20 65 78 61 63 74 6c 79 20 61 73 20 69 74 20 72 65 6e
64 65 72 73 20 61 6e 79 20 6f 74 68 65 72 2c 20 61 6e 64 20 6e 6f 74 68
69 6e 67 20 68 65 72 65 20 6e 61 72 72 6f 77 73 20 74 68 65 20 76 6f 63
61 62 75 6c 61 72 79 2e da 00 01 11 d5 82 81 da 00 01 11 d6 65 6b 65 65
70 73 a3 64 6e 61 6d 65 81 78 27 57 68 61 74 20 73 75 72 76 69 76 65 73
20 74 68 61 74 20 6d 61 72 6b 64 6f 77 6e 20 63 61 6e 6e 6f 74 20 68 6f
6c 64 65 62 6c 6f 63 6b da 00 01 11 d4 67 73 65 63 74 69 6f 6e 68 63 68
69 6c 64 72 65 6e 82 a2 65 62 6c 6f 63 6b da 00 01 11 d4 64 6c 69 73 74
68 63 68 69 6c 64 72 65 6e 83 a2 65 62 6c 6f 63 6b da 00 01 11 d4 69 6c
69 73 74 2d 69 74 65 6d 68 63 68 69 6c 64 72 65 6e 81 a2 65 62 6c 6f 63
6b da 00 01 11 d4 69 70 61 72 61 67 72 61 70 68 67 63 6f 6e 74 65 6e 74
81 78 26 61 20 74 61 62 6c 65 20 77 68 6f 73 65 20 68 65 61 64 65 72 20
73 70 61 6e 73 20 74 77 6f 20 63 6f 6c 75 6d 6e 73 a2 65 62 6c 6f 63 6b
da 00 01 11 d4 69 6c 69 73 74 2d 69 74 65 6d 68 63 68 69 6c 64 72 65 6e
81 a2 65 62 6c 6f 63 6b da 00 01 11 d4 69 70 61 72 61 67 72 61 70 68 67
63 6f 6e 74 65 6e 74 81 78 49 61 20 66 6f 6f 74 6e 6f 74 65 20 77 69 74
68 20 61 20 72 65 61 6c 20 62 6f 64 79 2c 20 72 61 74 68 65 72 20 74 68
61 6e 20 61 20 6c 69 6e 65 20 61 74 20 74 68 65 20 62 6f 74 74 6f 6d 20
6f 66 20 74 68 65 20 66 69 6c 65 a2 65 62 6c 6f 63 6b da 00 01 11 d4 69
6c 69 73 74 2d 69 74 65 6d 68 63 68 69 6c 64 72 65 6e 81 a2 65 62 6c 6f
63 6b da 00 01 11 d4 69 70 61 72 61 67 72 61 70 68 67 63 6f 6e 74 65 6e
74 83 78 30 61 6e 20 61 6e 63 68 6f 72 20 61 6e 6f 74 68 65 72 20 64 6f
63 75 6d 65 6e 74 20 63 61 6e 20 70 6f 69 6e 74 20 61 74 20 e2 80 94 20
73 65 65 20 a3 62 74 6f da 00 01 11 d7 64 77 68 61 74 64 6b 69 6e 64 da
00 01 11 d4 64 6c 69 6e 6b 67 63 6f 6e 74 65 6e 74 81 71 74 68 65 20 73
65 63 74 69 6f 6e 20 61 62 6f 76 65 60 da 00 01 11 d5 82 81 da 00 01 11
d6 6a 63 6f 6d 70 61 72 69 73 6f 6e a3 64 6e 61 6d 65 81 77 57 68 65 72
65 20 65 61 63 68 20 66 6f 72 6d 61 74 20 73 74 6f 70 73 65 62 6c 6f 63
6b da 00 01 11 d4 65 74 61 62 6c 65 68 63 68 69 6c 64 72 65 6e 84 a3 65
62 6c 6f 63 6b da 00 01 11 d4 69 74 61 62 6c 65 2d 72 6f 77 66 72 65 70
65 61 74 da 00 01 11 d4 66 68 65 61 64 65 72 68 63 68 69 6c 64 72 65 6e
82 a4 64 73 70 61 6e a1 67 63 6f 6c 75 6d 6e 73 02 65 62 6c 6f 63 6b da
00 01 11 d4 6c 74 61 62 6c 65 2d 68 65 61 64 65 72 65 73 63 6f 70 65 da
00 01 11 d4 66 63 6f 6c 75 6d 6e 68 63 68 69 6c 64 72 65 6e 81 a2 65 62
6c 6f 63 6b da 00 01 11 d4 69 70 61 72 61 67 72 61 70 68 67 63 6f 6e 74
65 6e 74 81 69 73 74 72 75 63 74 75 72 65 a3 65 62 6c 6f 63 6b da 00 01
11 d4 6c 74 61 62 6c 65 2d 68 65 61 64 65 72 65 73 63 6f 70 65 da 00 01
11 d4 66 63 6f 6c 75 6d 6e 68 63 68 69 6c 64 72 65 6e 81 a2 65 62 6c 6f
63 6b da 00 01 11 d4 69 70 61 72 61 67 72 61 70 68 67 63 6f 6e 74 65 6e
74 81 64 74 79 70 65 a2 65 62 6c 6f 63 6b da 00 01 11 d4 69 74 61 62 6c
65 2d 72 6f 77 68 63 68 69 6c 64 72 65 6e 83 a2 65 62 6c 6f 63 6b da 00
01 11 d4 6a 74 61 62 6c 65 2d 63 65 6c 6c 68 63 68 69 6c 64 72 65 6e 81
a2 65 62 6c 6f 63 6b da 00 01 11 d4 69 70 61 72 61 67 72 61 70 68 67 63
6f 6e 74 65 6e 74 81 68 6d 61 72 6b 64 6f 77 6e a2 65 62 6c 6f 63 6b da
00 01 11 d4 6a 74 61 62 6c 65 2d 63 65 6c 6c 68 63 68 69 6c 64 72 65 6e
81 a2 65 62 6c 6f 63 6b da 00 01 11 d4 69 70 61 72 61 67 72 61 70 68 67
63 6f 6e 74 65 6e 74 81 76 68 65 61 64 69 6e 67 73 2c 20 6c 69 73 74 73
2c 20 6c 69 6e 6b 73 a2 65 62 6c 6f 63 6b da 00 01 11 d4 6a 74 61 62 6c
65 2d 63 65 6c 6c 68 63 68 69 6c 64 72 65 6e 81 a2 65 62 6c 6f 63 6b da
00 01 11 d4 69 70 61 72 61 67 72 61 70 68 67 63 6f 6e 74 65 6e 74 81 78
1b 6e 6f 6e 65 2c 20 61 6e 64 20 74 68 61 74 20 69 73 20 74 68 65 20 70
6f 69 6e 74 a2 65 62 6c 6f 63 6b da 00 01 11 d4 69 74 61 62 6c 65 2d 72
6f 77 68 63 68 69 6c 64 72 65 6e 83 a2 65 62 6c 6f 63 6b da 00 01 11 d4
6a 74 61 62 6c 65 2d 63 65 6c 6c 68 63 68 69 6c 64 72 65 6e 81 a2 65 62
6c 6f 63 6b da 00 01 11 d4 69 70 61 72 61 67 72 61 70 68 67 63 6f 6e 74
65 6e 74 81 6c 74 68 69 73 20 70 72 6f 66 69 6c 65 a2 65 62 6c 6f 63 6b
da 00 01 11 d4 6a 74 61 62 6c 65 2d 63 65 6c 6c 68 63 68 69 6c 64 72 65
6e 81 a2 65 62 6c 6f 63 6b da 00 01 11 d4 69 70 61 72 61 67 72 61 70 68
67 63 6f 6e 74 65 6e 74 81 78 24 74 61 62 6c 65 73 2c 20 6e 6f 74 65 73
2c 20 63 69 74 61 74 69 6f 6e 73 2c 20 6e 61 76 69 67 61 74 69 6f 6e a2
65 62 6c 6f 63 6b da 00 01 11 d4 6a 74 61 62 6c 65 2d 63 65 6c 6c 68 63
68 69 6c 64 72 65 6e 81 a2 65 62 6c 6f 63 6b da 00 01 11 d4 69 70 61 72
61 67 72 61 70 68 67 63 6f 6e 74 65 6e 74 81 6e 6e 6f 6e 65 2c 20 64 65
63 6c 61 72 65 64 a2 65 62 6c 6f 63 6b da 00 01 11 d4 69 74 61 62 6c 65
2d 72 6f 77 68 63 68 69 6c 64 72 65 6e 83 a2 65 62 6c 6f 63 6b da 00 01
11 d4 6a 74 61 62 6c 65 2d 63 65 6c 6c 68 63 68 69 6c 64 72 65 6e 81 a2
65 62 6c 6f 63 6b da 00 01 11 d4 69 70 61 72 61 67 72 61 70 68 67 63 6f
6e 74 65 6e 74 81 73 74 68 65 20 66 75 6c 6c 20 76 6f 63 61 62 75 6c 61
72 79 a2 65 62 6c 6f 63 6b da 00 01 11 d4 6a 74 61 62 6c 65 2d 63 65 6c
6c 68 63 68 69 6c 64 72 65 6e 81 a2 65 62 6c 6f 63 6b da 00 01 11 d4 69
70 61 72 61 67 72 61 70 68 67 63 6f 6e 74 65 6e 74 81 68 74 68 65 20 73
61 6d 65 a2 65 62 6c 6f 63 6b da 00 01 11 d4 6a 74 61 62 6c 65 2d 63 65
6c 6c 68 63 68 69 6c 64 72 65 6e 81 a2 65 62 6c 6f 63 6b da 00 01 11 d4
69 70 61 72 61 67 72 61 70 68 67 63 6f 6e 74 65 6e 74 81 78 1b 70 61 67
65 73 2c 20 66 6f 6e 74 73 2c 20 69 6e 6b 73 2c 20 6c 65 6e 67 74 68 73
da 00 01 11 d5 82 81 da 00 01 11 d6 67 77 72 69 74 69 6e 67 a3 64 6e 61
6d 65 81 6b 57 72 69 74 69 6e 67 20 6f 6e 65 65 62 6c 6f 63 6b da 00 01
11 d4 67 73 65 63 74 69 6f 6e 68 63 68 69 6c 64 72 65 6e 83 a3 65 62 6c
6f 63 6b da 00 01 11 d4 64 6c 69 73 74 68 63 68 69 6c 64 72 65 6e 83 a2
65 62 6c 6f 63 6b da 00 01 11 d4 69 6c 69 73 74 2d 69 74 65 6d 68 63 68
69 6c 64 72 65 6e 81 a2 65 62 6c 6f 63 6b da 00 01 11 d4 69 70 61 72 61
67 72 61 70 68 67 63 6f 6e 74 65 6e 74 83 73 63 6f 70 79 20 74 68 65 20
70 72 6f 66 69 6c 65 27 73 20 a3 64 6b 69 6e 64 da 00 01 11 d4 64 74 65
78 74 64 74 65 78 74 68 64 65 66 61 75 6c 74 73 65 73 74 79 6c 65 da 00
01 11 d7 6b 73 74 79 6c 65 73 2e 63 6f 64 65 71 20 62 6c 6f 63 6b 2c 20
75 6e 63 68 61 6e 67 65 64 a2 65 62 6c 6f 63 6b da 00 01 11 d4 69 6c 69
73 74 2d 69 74 65 6d 68 63 68 69 6c 64 72 65 6e 81 a2 65 62 6c 6f 63 6b
da 00 01 11 d4 69 70 61 72 61 67 72 61 70 68 67 63 6f 6e 74 65 6e 74 82
74 6e 61 6d 65 20 74 68 65 20 70 72 6f 66 69 6c 65 20 69 6e 20 a3 64 6b
69 6e 64 da 00 01 11 d4 64 74 65 78 74 64 74 65 78 74 67 74 61 72 67 65
74 73 65 73 74 79 6c 65 da 00 01 11 d7 6b 73 74 79 6c 65 73 2e 63 6f 64
65 a2 65 62 6c 6f 63 6b da 00 01 11 d4 69 6c 69 73 74 2d 69 74 65 6d 68
63 68 69 6c 64 72 65 6e 81 a2 65 62 6c 6f 63 6b da 00 01 11 d4 69 70 61
72 61 67 72 61 70 68 67 63 6f 6e 74 65 6e 74 81 78 25 77 72 69 74 65 20
74 68 65 20 64 6f 63 75 6d 65 6e 74 2c 20 61 6e 64 20 73 65 74 20 6e 6f
20 6c 65 6e 67 74 68 69 6e 75 6d 62 65 72 69 6e 67 da 00 01 11 d7 6f 6e
75 6d 62 65 72 69 6e 67 2e 73 74 65 70 73 a3 65 62 6c 6f 63 6b da 00 01
11 d4 69 71 75 6f 74 61 74 69 6f 6e 66 73 6f 75 72 63 65 81 74 40 72 64
2f 70 72 6f 66 69 6c 65 2f 70 72 6f 73 65 2f 76 30 68 63 68 69 6c 64 72
65 6e 81 a2 65 62 6c 6f 63 6b da 00 01 11 d4 69 70 61 72 61 67 72 61 70
68 67 63 6f 6e 74 65 6e 74 81 78 3a 44 65 63 6c 61 72 69 6e 67 20 74 68
69 73 20 70 72 6f 66 69 6c 65 20 69 73 20 61 6e 20 61 75 74 68 6f 72 20
73 61 79 69 6e 67 20 74 68 65 79 20 68 61 76 65 20 6e 6f 6e 65 2e a2 65
62 6c 6f 63 6b da 00 01 11 d4 64 63 6f 64 65 65 6c 69 6e 65 73 81 78 2c
74 61 72 67 65 74 73 20 5b 20 65 78 74 65 72 6e 61 6c 20 2d 3e 20 40 72
64 2f 70 72 6f 66 69 6c 65 2f 70 72 6f 73 65 2f 76 30 20 5d 67 74 61 72
67 65 74 73 81 da 00 01 11 d5 82 81 da 00 01 11 d4 68 65 78 74 65 72 6e
61 6c da 00 01 11 d7 73 72 64 2f 70 72 6f 66 69 6c 65 2f 70 72 6f 73 65
2f 76 30 68 64 65 66 61 75 6c 74 73 a5 64 73 69 7a 65 da 00 01 11 d5 82
81 da 00 01 11 d4 62 70 74 0c 66 63 6f 6c 6f 75 72 da 00 01 11 d4 6a 6f
6e 2d 73 75 72 66 61 63 65 66 66 61 6d 69 6c 79 da 00 01 11 d4 64 73 61
6e 73 66 77 65 69 67 68 74 19 01 90 6b 6c 69 6e 65 2d 68 65 69 67 68 74
da 00 01 11 d5 82 81 da 00 01 11 d4 62 65 6d c4 82 20 0e 69 6e 75 6d 62
65 72 69 6e 67 a1 65 73 74 65 70 73 a2 63 64 6f 63 78 1a 74 68 65 20 73
74 65 70 73 20 6f 66 20 74 68 65 20 70 72 6f 63 65 64 75 72 65 65 73 74
79 6c 65 da 00 01 11 d4 67 64 65 63 69 6d 61 6c
examples/document-prose-profile.umsg 4144 bytesEvery construct on this page
The formal columns are read from the specification when this page is generated. The last column is this site's plain-language gloss and is not normative — where they differ, the specification is right.
| construct | glyph | carries | example | gloss |
|---|---|---|---|---|
| :annotation | — | — | — | A bare name qualifying the value after it—for example a language tag or a unit such as kg. It is not a value itself; a bare name with nothing after it is an error, not a guess. |
| :array | ^ | type, or type:shape; then [ elements ] | ^f64 [ 1.5, 2.5 ] or ^i16:2x3 [ … ] | A packed, homogeneous numeric array. The ^ marker gives every element its type and may also give the row-major shape: ^f64:2x3 [ … ]. |
| :array-element | — | — | — | One element of a typed array. Its type comes from the ^ marker, so 1.5 inside ^f64 is binary64 rather than an exact decimal. |
| :array-missing | — | — | — | A missing position in a typed array. null here is not an element value: it adds a validity mask while preserving the array's shape. |
| :block | — | — | — | A block: named pairs, in braces. Its keys are sorted in the encoding and shown here as written. |
| :bytes | ~ | encoding:data | ~hex:ff00 or ~b64:iVBORw0KGgo= | Raw octets, carried as octets. No base64 tax, no pretending they are text. |
| :comment | -- | to end of line | -- a note | A note for people. It travels with the pair it precedes and never reaches the bytes. |
| :decimal | — | — | — | An exact decimal. 19.99 is nineteen and ninety-nine hundredths, not the nearest double to it. |
| :extension | ! | name, then value | !acme/hint { zone 4 } | A qualifier this reader may not know. It survives the round trip intact, and stays legible on the way past — the rule that separates an extension from a private convention. |
| :float | — | — | — | A binary float, marked so it can never be mistaken for the exact decimal beside it. |
| :hash | # | algorithm:hex | #sha256:deadbeef | The digest of some content, with the algorithm said out loud so it is still meaningful in ten years. |
| :header | % | unimsg only | %unimsg 0 label | Declares the format version and what this document is. Optional, and useful exactly when a file arrives without context. |
| :identifier | @ | word | @ord-88213 | Gives this value a name, so another document can point at it without copying it. |
| :integer | — | — | — | A whole number of any size. Past 2^53 it is still exact, which is the whole reason this is not JSON. |
| :key | — | — | — | A field name: the first thing in a pair. It is bare when possible and quoted when needed, and names the content without becoming part of the value. |
| :reference | -> | an identifier or a path | -> @cust-4471, -> @lexicon.entries.kitāb | Points at a name. Nothing follows it while reading — resolution is somebody else's job, deliberately. |
| :reserved-literal | — | — | — | One of six bare words that are values rather than names. The list is fixed, so no value is coerced by what it looks like. |
| :sequence | — | — | — | An ordered list. Order is preserved and is meaning. |
| :string | — | — | — | Text. May span lines, so prose does not have to be escaped into one. |
| :symbol | : | word | :dispatched | A name from a fixed vocabulary, not free text. :high is a value someone chose; "high" is a phrase someone typed. |
| :table-row | | | cells | | sku qty | One record of a table. A table is sugar for a sequence of blocks with the same keys, and encodes identically to the longhand. |
| — | — | — | A temporal value at the precision written. 2026-08 stays a month, and 03:52 stays a wall-clock time; neither is widened into an invented instant. |