3
0
mirror of https://github.com/larvit/adf-codec.git synced 2026-11-12 19:58:28 +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 - 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 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 - 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 runs on Deno and Bun
- The gate installs the tarball - The gate installs the tarball
- Firefox reads the build - 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 `[!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 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 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 ## 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: 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. 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 HTML nests no `<a>` in an `<a>`, so no element can hold both a card's URL and the target of a link
element can hold both the link's target and the card's URL. Every writer refuses such a card marking it. Every writer refuses such a card, and a carry element holding one, as the maintainer
(§Writers refuse the shapes on a short list drawn from Atlassian's schema, before they write). The chose on 2026-11-04 over a new spelling (§Writers and carry readers refuse an inline card a link marks).
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.
A fifth panel (2026-11-04, three readers in the same roles, then four more for what the first three 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 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 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. 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 2026-11-04, replacing §No schema validation of 2026-08-23 (its mark refusal 2026-08-25), the
while Atlassian's schema forbids each shape on the list. 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 Every writer refuses a document holding an `inlineCard` with a `link` mark, as
the node's path, wherever the node stands: in a node a writer carries, or under a type the library `unsupported-node-shape` at the card's path, wherever the card stands: in a node a writer carries,
does not know. The list is one shape, an `inlineCard` holding a `link` mark, since the schema or under a type the library does not know. Every carry reader, `losslessMarkdownToAdf` and
gives a card the `annotation` mark alone (§The node tables answer to Atlassian's schema). A shape `htmlToAdf`, refuses a carried node holding one, so no reader builds a document a writer refuses.
joins only where the schema forbids it and no format can spell it, so a node type, mark or The schema gives a card the `annotation` mark alone (§The node tables answer to Atlassian's
attribute the schema does not name passes and rides the carry. There is no full schema validation schema), and spelling the pair would take a new spelling in each format; HTML nests no `<a>` in an
and no exported validator: `isAdfDocument` checks the document's shape alone. A refusal that keeps `<a>`. Another shape joins this entry only at the maintainer's word, once the schema forbids it and every format would
the round-trip is not on the list: a spelled node carrying the same mark type twice earns its own, need a spelling for it. A node type, mark or attribute the schema does not name still rides the
and input nesting a spelling inside its own kind (`*(*a*)*`) names that mark once. 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 The earlier entry premised that the site a document is saved to validates it. A hand-built
save is what the viewer/editor persona relies on, and a hand-built document is the one place the document has not reached the site yet, and the viewer/editor persona relies on a refusal arriving
site has not yet seen. before the save.
## The gate runs on Deno and Bun ## 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 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 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 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]. !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 - 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; 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. - 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 - An inline card a link marks is refused as `unsupported-node-shape`, carried or not, by `adfToHtml`
or not: Atlassian's schema gives a card no link mark. 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 - 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. most 500, as in markdown.