3
0
mirror of https://github.com/larvit/adf-codec.git synced 2026-11-12 11:48:29 +01:00

Answer stability round 2: the retry advice covers every call, readers included, and names JavaScriptCore as the one exception to determinism

This commit is contained in:
2026-10-13 01:10:49 +02:00
committed by Lillem4n
parent 4657796d4d
commit 142ed310c2
+7 -7
View File
@@ -396,8 +396,9 @@ carry](https://github.com/larvit/adf-codec/blob/main/docs/decisions.md#unknown-n
release.
- `message` is free text for a person fixing the input. It may change in any release.
- `path` is the node's place from the document root, alternating `'content'` and an index, so
`path.map((step) => '/' + step).join('')` is a JSON Pointer at the node. The empty path is the
document itself.
`path.map((step) => '/' + step).join('')` is a JSON Pointer at the node, or at the list holding it
where `adfToPortableMarkdown` unwraps a list into its items. The empty path is the document
itself.
- `position` is `{ line, offset }` into the string passed in: `line` counted from 1, `offset` a
UTF-16 code unit, which is a JavaScript string index. It points at or before the refusal —
currently the start of the line the enclosing block begins on; a later minor may narrow that,
@@ -408,11 +409,10 @@ A parse always names a position, so the three markdown readers return `ParseErro
typed on `ConvertError` takes both.
A call reports the first refusal in document order and stops, so a document with several surfaces
them one per call. Every refusal is deterministic on one engine — there is no I/O anywhere — so a
retry returns the identical error: fix the input, or set the document aside. Only a refusal past
the engine's own limits differs between engines: on JavaScriptCore (Bun, Safari), retry once a
writer's `unsupported-node-shape` at the empty path, since that engine reports a heap running short
the same way.
them one per call. Every refusal is deterministic — there is no I/O anywhere — so a retry returns
the identical error: fix the input, or set the document aside. The one exception is JavaScriptCore
(Bun, Safari), which reports a heap running short as it reports a string past its longest: there,
retry once a call's `unsupported-node-shape` at the empty path.
### Parsing