diff --git a/AGENTS.md b/AGENTS.md index 9d97f5a..721f3b2 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -82,8 +82,9 @@ closed list a consumer may switch exhaustively, the message free text, the path from the document root. Adding, removing or renaming a code is breaking, so a milestone meeting a new failure cause reuses a code where one fits; the list is complete at `0.1.0`. A code names the cause; where one cause recurs across node types, one code covers them all and `path` and `message` -say which. A cause the carry answers gets no code: a mark no spelling writes rides the carry with -its node. +say which. A claim code names the spelling claimed, never the node that spelling would have built: +a malformed `:::table` is a `malformed-directive`. A cause the carry answers gets no code: a mark no +spelling writes rides the carry with its node. ## 9. Release automation @@ -139,7 +140,8 @@ live Atlassian APIs; property-generated ADF trees; the CommonMark spec suite aga unrepresentable. - `src/adf/` holds ADF's own knowledge and imports no format. Each format directory (`markdown/`, `html/`) parts into `emit/` (ADF→format) and `parse/` (format→ADF), its root holding what both - directions read. + directions read. A construct's reader lives in that root beside the regex the emitter escapes + against, so the two cannot drift; a reader with no emit counterpart goes in `parse/`. - The attribute vocabulary is ADF's: `adf/` walks it and narrows each value to its kind, and a format spells the narrowed value. A spelling that re-checks the type is the check's second copy. - Explicit over implicit; descriptive names; no catch-all files (`utils`, `helpers`, `misc`); a diff --git a/src/markdown/parse/blocks.test.ts b/src/markdown/parse/blocks.test.ts index b2c570a..e542a2a 100644 --- a/src/markdown/parse/blocks.test.ts +++ b/src/markdown/parse/blocks.test.ts @@ -36,6 +36,7 @@ test('keeps the link reference definitions a paragraph gives up, the first of a test('leaves the paragraph a line no definition spells', () => { assert.deepEqual(definitions('[]: /url\n'), []) + assert.deepEqual(definitions('[ ]: /url\n'), []) assert.deepEqual(definitions('[a]: closed>\n'), []) assert.deepEqual(definitions('[a]: