From 10d63ff8e69beb234b955b52a520674a4b1e858d Mon Sep 17 00:00:00 2001 From: Lilleman auf Larv Date: Mon, 14 Sep 2026 23:45:18 +0200 Subject: [PATCH] Tick 4.2, moving its text to todo-history.md, and give 13b the autolink fixture --- todo-history.md | 22 ++++++++++++++++++++++ todo.md | 24 ++++-------------------- 2 files changed, 26 insertions(+), 20 deletions(-) diff --git a/todo-history.md b/todo-history.md index 2f2b273..413add2 100644 --- a/todo-history.md +++ b/todo-history.md @@ -427,6 +427,28 @@ The done `todo.md` items in full, as they were written. `todo.md` keeps a one-li **Settled** (the maintainer, 2026-09-14): a text node carrying attributes never merges — `0.1.0` merged a carried one into its neighbour on read-back — and the fix lands here, as does the iterative serializer. + - [x] **4.2 — The ADF property.** `fast-check` joins `devDependencies`, AGENTS.md §5 naming what + it earns — shrinking a failing document to the nodes that break it — and §10 the properties + beside the corpus. A generated editor-normal document either refuses in `adfToMarkdown` + with a `ConvertError` or reads back through `markdownToAdf` to an equal document, and + nothing throws, under Node, Deno and Bun alike. 2e5's collision test is deleted. + **Settled** (the maintainer, 2026-09-14): about half the block positions draw attribute-less + CommonMark shapes — single-type lists, headings, blockquotes, pipe-table-shaped tables — where + the escaping lives. A round-trip break the property finds is fixed inside 4.2, one commit per + break with its round-trip fixture seen red first, and 4.2 lands when a deep run of about + 10,000 per engine passes clean; a break needing design goes to the maintainer. The first two, + both shipped in `0.1.0`: an empty `href` with a title spelled `[a]( "")`, which reads back as + the href `""`, and a `[` or `]` in a link's destination or title inside a directive mark, + refused as the emitter's own output or, with `]`, losing the link. Later, settled the same + day: an autolink whose href holds a backtick takes the `[text](url)` form inside a + directive's content; and a V8 fault the deep runs hit — once `JSON.parse` has read a key + holding an escaped backslash, a later escaped quote or newline key comes back as that + backslash, on Node and Deno but not Bun — is accepted rather than worked around, since the + library only refuses such a document, so the generators' JSON keys avoid those characters; the + fault is reported upstream (https://issues.chromium.org/issues/521080746, nodejs/node#63785), + where the maintainer added to both on 2026-09-14. The review found one more break of the + same class, fixed the same way: a would-be inline directive in a link target inside a + directive's content. - [x] **5a — Rename to `@larvit/adf-codec` (`0.1.0`).** Before the first publish, the name being the published identity: `package.json` `name` and `repository`, the Gitea repo and its remote, the README title, §6's published-as line, the checkout directory. diff --git a/todo.md b/todo.md index 657e7cc..26fcd6c 100644 --- a/todo.md +++ b/todo.md @@ -55,25 +55,7 @@ proves 12, 13 spells 11's gaps in 12's grammar, and 12 rewrites code 4b and 4c c collision already fails the round-trip on the same fixtures; the fixture-duplicate test stays. - [x] **4.1 — Editor-normal and the node accessors.** - - [ ] **4.2 — The ADF property.** `fast-check` joins `devDependencies`, AGENTS.md §5 naming what - it earns — shrinking a failing document to the nodes that break it — and §10 the properties - beside the corpus. A generated editor-normal document either refuses in `adfToMarkdown` - with a `ConvertError` or reads back through `markdownToAdf` to an equal document, and - nothing throws, under Node, Deno and Bun alike. 2e5's collision test is deleted. - **Settled** (the maintainer, 2026-09-14): about half the block positions draw attribute-less - CommonMark shapes — single-type lists, headings, blockquotes, pipe-table-shaped tables — where - the escaping lives. A round-trip break the property finds is fixed inside 4.2, one commit per - break with its round-trip fixture seen red first, and 4.2 lands when a deep run of about - 10,000 per engine passes clean; a break needing design goes to the maintainer. The first two, - both shipped in `0.1.0`: an empty `href` with a title spelled `[a]( "")`, which reads back as - the href `""`, and a `[` or `]` in a link's destination or title inside a directive mark, - refused as the emitter's own output or, with `]`, losing the link. Later, settled the same - day: an autolink whose href holds a backtick takes the `[text](url)` form inside a - directive's content; and a V8 fault the deep runs hit — once `JSON.parse` has read a key - holding an escaped backslash, a later escaped quote or newline key comes back as that - backslash, on Node and Deno but not Bun — is accepted rather than worked around, since the - library only refuses such a document, so the generators' JSON keys avoid those characters and - the maintainer reports the fault upstream. + - [x] **4.2 — The ADF property.** - [ ] **4.3 — The markdown property.** Generated markdown through `markdownToAdf` never throws, and the runs fit the budget; where it parses and `adfToMarkdown` spells the result, that spelling parses and emits to itself byte for byte (§2). @@ -311,7 +293,9 @@ proves 12, 13 spells 11's gaps in 12's grammar, and 12 rewrites code 4b and 4c c fixture per trigger, `spec/flavour.md`'s Marks section following; `unspellable-link` removed from the code list, its `errors/` fixtures and the CommonMark suite's `unspellable` exceptions it cures re-derived, and the README's code table and its "not every document - converts back" guarantee following; the gap list is empty. + converts back" guarantee following; the gap list is empty. A round-trip fixture holds the + shape 4.2's review left refused until then: an autolink-shaped link under a directive mark + whose href holds `\:name{`. ## The ADF inventory to cover -- 2.52.0