Emitter 2b: the block-node directives, the pipe table and the refusal corpus
CI / gate (push) Successful in 5s

This commit is contained in:
2026-08-25 15:10:02 +02:00
parent 39d09faa39
commit 56072d36ef
30 changed files with 715 additions and 56 deletions
+3
View File
@@ -9,6 +9,9 @@ One directory per contract kind:
`markdownToAdf` must build from it. One-way; the markdown is not canonical.
- `errors/``<name>.md`: markdown input that must not convert. A `<name>.error` beside it
pins which error.
- `unspellable/``<name>.json`: ADF `adfToMarkdown` must refuse, the `ConvertErrorCode` in the
`<name>.error` beside it. A maintainer decision (`todo.md`) moves a document from here to
`round-trip/`.
- `real-payloads/``<name>.json`: sanitized live ADF, round-tripped ADF→markdown→ADF. No
expected markdown.
+1
View File
@@ -0,0 +1 @@
unspelled-node-attribute
+18
View File
@@ -0,0 +1,18 @@
{
"content": [
{
"attrs": {
"localId": "01a03d5c-9b21-73f4-8e6a-0c47b1d9e2f8"
},
"content": [
{
"text": "Every block node in the schema carries one.",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "doc",
"version": 1
}
@@ -0,0 +1 @@
ambiguous-empty-code-block-language
@@ -0,0 +1,18 @@
{
"content": [
{
"attrs": {
"language": ""
},
"content": [
{
"text": "cargo build --release",
"type": "text"
}
],
"type": "codeBlock"
}
],
"type": "doc",
"version": 1
}
@@ -0,0 +1 @@
unspelled-block-separation
@@ -0,0 +1,40 @@
{
"content": [
{
"attrs": {
"title": "Full build log"
},
"content": [
{
"content": [
{
"text": "The build ran for 11 minutes.",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"panelType": "warning"
},
"content": [
{
"content": [
{
"text": "Three warnings went unread.",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "panel"
}
],
"type": "expand"
}
],
"type": "doc",
"version": 1
}
@@ -0,0 +1 @@
unspellable-link-destination
@@ -0,0 +1,23 @@
{
"content": [
{
"content": [
{
"marks": [
{
"attrs": {
"href": "https://example.com/a)b"
},
"type": "link"
}
],
"text": "The torque table",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "doc",
"version": 1
}
@@ -0,0 +1 @@
unspellable-link-title
+24
View File
@@ -0,0 +1,24 @@
{
"content": [
{
"content": [
{
"marks": [
{
"attrs": {
"href": "https://example.com/torque",
"title": "He said \"hi\""
},
"type": "link"
}
],
"text": "The torque table",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "doc",
"version": 1
}
+1
View File
@@ -0,0 +1 @@
ambiguous-empty-media-alt
+22
View File
@@ -0,0 +1,22 @@
{
"content": [
{
"attrs": {
"layout": "center"
},
"content": [
{
"attrs": {
"alt": "",
"type": "external",
"url": "https://example.com/moon.png"
},
"type": "media"
}
],
"type": "mediaSingle"
}
],
"type": "doc",
"version": 1
}
@@ -0,0 +1 @@
unspellable-line-start
+47
View File
@@ -0,0 +1,47 @@
{
"content": [
{
"content": [
{
"content": [
{
"content": [
{
"text": "Torque the bolts",
"type": "text"
}
],
"type": "paragraph"
},
{
"attrs": {
"order": 2
},
"content": [
{
"content": [
{
"content": [
{
"text": "Then sign off",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "listItem"
}
],
"type": "orderedList"
}
],
"type": "listItem"
}
],
"type": "bulletList"
}
],
"type": "doc",
"version": 1
}
@@ -0,0 +1 @@
ambiguous-ordered-list-start
@@ -0,0 +1,28 @@
{
"content": [
{
"attrs": {
"order": 1
},
"content": [
{
"content": [
{
"content": [
{
"text": "Loosen the clamp",
"type": "text"
}
],
"type": "paragraph"
}
],
"type": "listItem"
}
],
"type": "orderedList"
}
],
"type": "doc",
"version": 1
}