Settle 4.4's payloads as editor-written on the test site, and let 4.4 follow 12
CI / publish (push) Successful in 4s
CI / gate (push) Successful in 25s

This commit was merged in pull request #77.
This commit is contained in:
2026-09-15 17:51:57 +02:00
parent 10d63ff8e6
commit e23fd9495e
3 changed files with 12 additions and 9 deletions
+2 -2
View File
@@ -223,8 +223,8 @@ functions, and a branch floor that only ever moves upward. It sits below 100 bec
`noUncheckedIndexedAccess` and ADF's optional keys force — `?? []`, `?? {}`, `?.`, an index
compared against `undefined` — have a half no valid document reaches.
The corpus, all checked in: hand-built fixtures per node and combination; real sanitized ADF from
live Atlassian APIs; the CommonMark spec suite against `markdownToAdf` and `markdownToHtml`.
The corpus, all checked in: hand-built fixtures per node and combination; real ADF Atlassian's
editor wrote; the CommonMark spec suite against `markdownToAdf` and `markdownToHtml`.
Beside the corpus, properties run over documents generated from the node tables, on a fixed seed in
the gate; `PROPERTY_RUNS=<runs>` raises the runs and randomizes the seed for local digging, and a
+2 -2
View File
@@ -10,8 +10,8 @@ One directory per contract kind, each landing with its milestone:
markdown is not canonical.
- `errors/` — `<name>.md`: markdown input that must not convert. A `<name>.error` beside it
pins which error.
- `real-payloads/` — `<name>.json`: sanitized live ADF, round-tripped ADF→markdown→ADF. No
expected markdown.
- `real-payloads/` — `<name>.json`: ADF Atlassian's editor wrote, round-tripped ADF→markdown→ADF.
No expected markdown.
- `commonmark-spec/` — the CommonMark suite run against `markdownToAdf` by three checks. `spec.json`
is the suite; `refusals.json` pins each refusing example to its error `code`; `exceptions.json`
pins each known divergence by `check`, `example`, `kind` and the exact `divergence`, with a
+8 -5
View File
@@ -9,7 +9,8 @@ Shipping order: 3h, 3i, 3j, 5a, 5b, 5c, 5d, 5 → `0.1.0` (shipped 2026-09-05);
6, 7 → `0.3.0`; 9 → TBD; 5e last.
The numbering is the order the work was planned in, not the order it ships. `0.2.0`'s order is settled
(the maintainer, 2026-09-13): 11 makes the tables 4 generates from answer to Atlassian's schema, 4
proves 12, 13 spells 11's gaps in 12's grammar, and 12 rewrites code 4b and 4c change.
proves 12, 13 spells 11's gaps in 12's grammar, and 12 rewrites code 4b and 4c change. 4.4 alone
may follow 12 while its payloads are not ready (the maintainer, 2026-09-15).
- [x] **0 — Scaffold.**
- [x] **1a — The directive grammar.**
@@ -59,10 +60,12 @@ proves 12, 13 spells 11's gaps in 12's grammar, and 12 rewrites code 4b and 4c c
- [ ] **4.3 — The markdown property.** Generated markdown through `markdownToAdf` never throws,
and the runs fit the budget; where it parses and `adfToMarkdown` spells the result, that
spelling parses and emits to itself byte for byte (§2).
- [ ] **4.4 — The real payloads.** `corpus/real-payloads/` holds the maintainer's sanitized
payloads, each round-tripped ADF→markdown→ADF with no expected markdown. It waits on the
maintainer dropping the `.json` files untracked into the main checkout's
`corpus/real-payloads/` (the maintainer, 2026-09-14); the chunk moves them onto its branch.
- [ ] **4.4 — The real payloads.** `corpus/real-payloads/` holds ADF Atlassian's editor wrote,
each round-tripped ADF→markdown→ADF with no expected markdown.
**Settled** (the maintainer, 2026-09-15): the chunk authors the payloads itself on the
maintainer's Atlassian test site — invented content, so nothing needs sanitizing — driving the
editor with Playwright, and reads the ADF back over REST. Only the documents are committed; no
client or fetch script enters the repo (§7).
- [ ] **4b — The block walk's retry (`0.2.0`).** `emitBlock` walks a subtree twice wherever
`readableBlock` reads it whole and then gives up — a list item whose first line reads back
as a thematic break — and the walk below does the same, so the cost doubles per level: