diff --git a/spec/flavour.md b/spec/flavour.md index 5839b2d..ed2e966 100644 --- a/spec/flavour.md +++ b/spec/flavour.md @@ -135,8 +135,9 @@ literal-text fallback — a typo that reparses as prose is the silent loss §2 r ## The opaque carry (AGENTS.md §3) A node no section spells where it stands — an unknown type, or a known one whose spelling belongs -to the other position — rides as its raw JSON and restores to a deep-equal node. Block and inline -positions canonicalize differently, each fitting where it sits: +to the other position — rides as its raw JSON and restores to a deep-equal node. A carry may hold +a node the emitter spells natively: it restores verbatim, and the next emit spells it canonically +(AGENTS.md §2). Block and inline positions canonicalize differently, each fitting where it sits: - **Block position**: a fenced code block with info string `adf`, body = the node's JSON — two-space indent, object keys sorted. diff --git a/todo.md b/todo.md index b157f57..5d5d18a 100644 --- a/todo.md +++ b/todo.md @@ -113,7 +113,9 @@ The numbering is the order the work was planned in, not the order it ships. landed the last decision `corpus/unspellable/` held and the directory went with it, so what the code list holds from here is permanent. The parser's own code additions are read here as one list before that freeze — nine sessions mint them - independently, and one cause wearing two codes is breaking to undo after `0.1.0`. That read + independently, and one cause wearing two codes is breaking to undo after `0.1.0` — one is + known already: a json attribute value past 500 levels reads `unsupported-node-shape` on + parse but `unsupported-nesting-depth` through the carry on emit. That read gets a test rather than an eye — every `ConvertErrorCode` member named at a production call site, the way `spec.test.ts` guards the node tables — since `unspelled-block-separation` outlived its cause until 3h went looking. `0.1.0`