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

Answer prose round 1: 2 🔴, 7 🟡 (0 misread); retitle the decision, state its rule, and fix the carry claims

This commit is contained in:
2026-11-04 20:30:08 +01:00
parent d7e54799cf
commit 78ca66bb29
4 changed files with 29 additions and 25 deletions
+1 -1
View File
@@ -59,7 +59,7 @@ In `docs/decisions.md`:
- Posts announcing a release wait for its publish, and their drafts wait for the finished release
- A chunk ruled worse merges where a plan item of its release already restores that code's reading, and that item takes the ruling's places
- A chunk ruled worse that restructures the places takes a paired ruling after each restructure, against the same base, and merges once one is not worse
- Writers refuse the shapes on a short list drawn from Atlassian's schema, before they write
- Writers and carry readers refuse an inline card a link marks
- The gate runs on Deno and Bun
- The gate installs the tarball
- Firefox reads the build
+23 -21
View File
@@ -296,7 +296,8 @@ besides hard breaks but no node that takes a link: the panel refused to have
`[!adf:status[Done]{color=green}](/u)` read as `/u` linked beside the status. A link text of hard
breaks alone still reads as its destination, then the breaks (§An image reads as an image only alone
in its paragraph). `adfToLosslessMarkdown` writes a node holding a mark its type does not take as
`!adf:carry`, so the round-trip holds.
`!adf:carry`, so the round-trip holds, except an inline card a link marks, which is refused
(§Writers and carry readers refuse an inline card a link marks).
## A linked image is written `[![alt](url)](href)`, a captioned image as its directive
@@ -439,11 +440,9 @@ marking a node that shows a note goes around the note, and an image's own `text`
schema, shows first, as every carried node's does. Recorded 2026-10-24 without a panel of its own:
it joins the second panel's `<a>` to that portable spelling.
Atlassian's schema gives no card a link mark, so only a hand-built document holds one, and no
element can hold both the link's target and the card's URL. Every writer refuses such a card
(§Writers refuse the shapes on a short list drawn from Atlassian's schema, before they write). The
maintainer chose this on 2026-11-04 over a new spelling. `htmlToAdf` still reads a carry element
holding one, since it checks no carried node's JSON against the schema.
HTML nests no `<a>` in an `<a>`, so no element can hold both a card's URL and the target of a link
marking it. Every writer refuses such a card, and a carry element holding one, as the maintainer
chose on 2026-11-04 over a new spelling (§Writers and carry readers refuse an inline card a link marks).
A fifth panel (2026-11-04, three readers in the same roles, then four more for what the first three
split on) was asked how to write a mention, emoji, status, date and inline card, which until then
@@ -750,24 +749,27 @@ stays on `insideRun` alone, since it answers the parted line. A refactor that me
so the chunk's later rulings read against that merge, the commit `larv-review ruling-base` prints. A restructure past a
pass's round cap still goes unreviewed, so the PR summary names it.
## Writers refuse the shapes on a short list drawn from Atlassian's schema, before they write
## Writers and carry readers refuse an inline card a link marks
2026-11-04, replacing §No schema validation of 2026-08-23, the maintainer. Goals 1 and 6. Valid
while Atlassian's schema forbids each shape on the list.
2026-11-04, replacing §No schema validation of 2026-08-23 (its mark refusal 2026-08-25), the
maintainer. Goal 1. Valid while Atlassian's schema gives a card no link mark.
Every writer opens by refusing a document holding a listed shape, as `unsupported-node-shape` at
the node's path, wherever the node stands: in a node a writer carries, or under a type the library
does not know. The list is one shape, an `inlineCard` holding a `link` mark, since the schema
gives a card the `annotation` mark alone (§The node tables answer to Atlassian's schema). A shape
joins only where the schema forbids it and no format can spell it, so a node type, mark or
attribute the schema does not name passes and rides the carry. There is no full schema validation
and no exported validator: `isAdfDocument` checks the document's shape alone. A refusal that keeps
the round-trip is not on the list: a spelled node carrying the same mark type twice earns its own,
and input nesting a spelling inside its own kind (`*(*a*)*`) names that mark once.
Every writer refuses a document holding an `inlineCard` with a `link` mark, as
`unsupported-node-shape` at the card's path, wherever the card stands: in a node a writer carries,
or under a type the library does not know. Every carry reader, `losslessMarkdownToAdf` and
`htmlToAdf`, refuses a carried node holding one, so no reader builds a document a writer refuses.
The schema gives a card the `annotation` mark alone (§The node tables answer to Atlassian's
schema), and spelling the pair would take a new spelling in each format; HTML nests no `<a>` in an
`<a>`. Another shape joins this entry only at the maintainer's word, once the schema forbids it and every format would
need a spelling for it. A node type, mark or attribute the schema does not name still rides the
carry. There is no full schema validation and no exported validator: `isAdfDocument` checks the
document's shape alone. A refusal that keeps the round-trip is no schema check and stays: a spelled
node carrying the same mark type twice is refused on its own terms, and input nesting a spelling
inside its own kind (`*(*a*)*`) names that mark once.
The earlier entry premised that the site a document is saved to validates it. A refusal before the
save is what the viewer/editor persona relies on, and a hand-built document is the one place the
site has not yet seen.
The earlier entry premised that the site a document is saved to validates it. A hand-built
document has not reached the site yet, and the viewer/editor persona relies on a refusal arriving
before the save.
## The gate runs on Deno and Bun
+3 -1
View File
@@ -582,7 +582,9 @@ open or close where the run sits (`un**-real**istic`), or one CommonMark's match
the merged run's pairing to another delimiter — rides the inline carry whole. So does every node
holding `em`, `strike` or `strong` in a line still read back wrong after 32 tries. An opaque carry inside
a mark spelling is a named error in input: the carry restores its node exactly, marks included
(`docs/decisions.md` §Unknown nodes ride the carry).
(`docs/decisions.md` §Unknown nodes ride the carry). An inline card a link marks rides no carry:
`adfToLosslessMarkdown` refuses it as `unsupported-node-shape`, and so does `losslessMarkdownToAdf`
reading a carry that holds one, since Atlassian's schema gives a card no link mark.
```
!adf:textColor[**Overdue**]{color="#ae2e24"}, H!adf:subsup[2]{type=sub}O, !adf:underline[signed].
+2 -2
View File
@@ -127,8 +127,8 @@ later release writes it as its own element.
- a list holding a node that is no `listItem`, or an item holding a mark, text, an empty key or
an attribute its type does not hold: the whole list rides the carry;
- a `listItem` outside a list, an inline node in block position and a block node inline.
- An inline card a link marks is refused as `unsupported-node-shape` wherever it stands, carried
or not: Atlassian's schema gives a card no link mark.
- An inline card a link marks is refused as `unsupported-node-shape`, carried or not, by `adfToHtml`
and by `htmlToAdf` reading a carry element: Atlassian's schema gives a card no link mark.
- A block carry's JSON nests at most 500 levels less the depth it stands at, an inline carry's at
most 500, as in markdown.