5b3: merge the code list's duplicate causes, spell the list separator, claim the bare pipe table
This commit is contained in:
@@ -143,20 +143,39 @@ The numbering is the order the work was planned in, not the order it ships.
|
||||
- [ ] **5b — The consumer's error surface (`0.1.0`).** A product-owner read of the public surface
|
||||
found the error result legible to the library and opaque to the consumer holding it, and the
|
||||
README documenting no part of it. The sub-items are that read's answers, and they land before
|
||||
5 because §8 freezes the code list at `0.1.0` and 5b3's table is what reads the list before
|
||||
5 because §8 freezes the code list at `0.1.0` and 5b4's table is what reads the list before
|
||||
the freeze closes it.
|
||||
- [x] **5b1 — The error's source position.**
|
||||
- [x] **5b2 — The error messages.**
|
||||
- [ ] **5b3 — The README's consumer surface.** §8 invites an exhaustive switch on `code` and no
|
||||
- [ ] **5b3 — The code list and the flavour's gaps.** A second read of the surface, this one on
|
||||
the fifteen names §8 freezes at `0.1.0`: two pairs of them are one cause each, and one
|
||||
names a state the flavour leaves no way out of. `unspellable-character` and the text half
|
||||
of `unspellable-whitespace` are one refusal — a character CommonMark rewrites, the message
|
||||
naming it — and merge, `unspellable-whitespace` keeping the code for its other cause, the
|
||||
content slot no inline directive spans. `unspellable-link-destination` and
|
||||
`unspellable-link-title` become `unspellable-link`, the message naming the attribute.
|
||||
`unspellable-adjacent-lists` goes entirely: two adjacent `bulletList` nodes are valid ADF a
|
||||
site writes, and refusing them leaves the viewer persona a document it cannot render at
|
||||
all, so the flavour gains the separator that spells the pair apart, both directions,
|
||||
`spec/flavour.md` and fixtures. Thirteen codes stand — `unspellable-whitespace` keeps its own.
|
||||
The bare pipe table — `a | b` over `--- | ---`, GFM's shape without the leading pipes — is
|
||||
the one input that loses structure silently, reading back as a paragraph of prose; it
|
||||
becomes a `malformed-pipe-table` naming the form a row takes. That code keeps its name for
|
||||
the alignment colon: the flavour's own delimiter row is `-` runs, so the grammar is what
|
||||
refuses, and §8 records it rather than answering it again each review. The ninth
|
||||
`adfDocumentFault` branch names no node and carries the document's own path, the one branch
|
||||
the other eight outshine; §8 records why the guard stays a boolean.
|
||||
- [ ] **5b4 — The README's consumer surface.** §8 invites an exhaustive switch on `code` and no
|
||||
code name appears in the README, so it gains a table — code, when it fires, what the
|
||||
consumer does — grouped by direction; drafting it is the audit that reads the fifteen names
|
||||
before 5 freezes them. Four things a reader who has not opened the code cannot know: raw
|
||||
consumer does — grouped by direction, over the thirteen names 5b3 settled. Four things a
|
||||
reader who has not opened the code cannot know: raw
|
||||
HTML is core CommonMark and every construct in input is an error until `0.3.0`, which the
|
||||
guarantees' "three carve-outs and one gap" denies and which is the bot and LLM personas'
|
||||
most common failure; `adfToHtml`, `htmlToAdf`, `markdownToHtml` and `htmlToMarkdown` sit
|
||||
unmarked in the code block people copy from, as do the two HTML guarantee bullets, and take
|
||||
a `0.3.0` mark or leave the block; `adfToMarkdown` is partial on valid ADF — two adjacent
|
||||
`bulletList` nodes are an error result — which the viewer persona needs told along with
|
||||
a `0.3.0` mark or leave the block; `adfToMarkdown` is partial on valid ADF — a text node
|
||||
holding a carriage return, a link destination no canonical escape spells — which the viewer
|
||||
persona needs told along with
|
||||
what to do about it; and GFM past tables and strikethrough is literal text, task lists
|
||||
taking `:::taskList`. One sentence for the LLM persona: `code` is stable across minors,
|
||||
`message` is free text. The type-level surface freezes at the same moment and gets the same
|
||||
|
||||
Reference in New Issue
Block a user