From e23fd9495e5369399d451cbdf7108ab2b3f0c2b9 Mon Sep 17 00:00:00 2001 From: Lilleman auf Larv Date: Tue, 15 Sep 2026 17:51:57 +0200 Subject: [PATCH] Settle 4.4's payloads as editor-written on the test site, and let 4.4 follow 12 --- AGENTS.md | 4 ++-- corpus/README.md | 4 ++-- todo.md | 13 ++++++++----- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index aaaa56a..7228e9a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -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=` raises the runs and randomizes the seed for local digging, and a diff --git a/corpus/README.md b/corpus/README.md index bc56709..ed96da8 100644 --- a/corpus/README.md +++ b/corpus/README.md @@ -10,8 +10,8 @@ One directory per contract kind, each landing with its milestone: markdown is not canonical. - `errors/` — `.md`: markdown input that must not convert. A `.error` beside it pins which error. -- `real-payloads/` — `.json`: sanitized live ADF, round-tripped ADF→markdown→ADF. No - expected markdown. +- `real-payloads/` — `.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 diff --git a/todo.md b/todo.md index 26fcd6c..34bccc3 100644 --- a/todo.md +++ b/todo.md @@ -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: