Emitter 2d: the opaque carry in both positions and the reserved info string #15

Merged
lilleman merged 5 commits from opaque-carry into main 2026-08-26 16:55:17 +02:00
Owner

todo.md 2d. A node type no section spells rides a fenced code block with info string adf in block position and :adf{json="…"} inline, and a codeBlock whose language is adf rides the block form whole — the reservation that keeps the carry lossless. corpus/round-trip/opaque-carry/ holds the three fixture pairs.

An inline run breaks at every carried node, so no emitted carry sits inside a mark spelling; the marks ride the carried JSON instead. unsupported-node-type and reserved-adf-language are gone — the carry replaces both, and nothing else reaches them.

A known node standing where a block belongs (hardBreak, listItem, text) stays a shape refusal rather than a carry: §3 carries node types the library does not know, not valid nodes in impossible positions.

The section-cannot-spell fallback — an attrs key no section lists, a value that is not the section's type, an arg slot holding no bare token — still refuses; todo.md binds it to 2e with the | rule the carry's json value needs.

todo.md 2d. A node type no section spells rides a fenced code block with info string `adf` in block position and `:adf{json="…"}` inline, and a `codeBlock` whose language is `adf` rides the block form whole — the reservation that keeps the carry lossless. `corpus/round-trip/opaque-carry/` holds the three fixture pairs. An inline run breaks at every carried node, so no emitted carry sits inside a mark spelling; the marks ride the carried JSON instead. `unsupported-node-type` and `reserved-adf-language` are gone — the carry replaces both, and nothing else reaches them. A known node standing where a block belongs (`hardBreak`, `listItem`, `text`) stays a shape refusal rather than a carry: §3 carries node types the library does not know, not valid nodes in impossible positions. The section-cannot-spell fallback — an attrs key no section lists, a value that is not the section's type, an arg slot holding no bare token — still refuses; todo.md binds it to 2e with the `|` rule the carry's `json` value needs.
lilleman added 1 commit 2026-08-26 15:47:02 +02:00
lilleman added 1 commit 2026-08-26 15:57:48 +02:00
lilleman added 1 commit 2026-08-26 16:22:01 +02:00
lilleman added 1 commit 2026-08-26 16:40:19 +02:00
lilleman added 1 commit 2026-08-26 16:54:24 +02:00
lilleman marked the pull request as ready for review 2026-08-26 16:54:58 +02:00
lilleman merged commit 9d02e4b47f into main 2026-08-26 16:55:17 +02:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: larvit/adf-codec#15