Tick 4.3 and 4, moving their text to todo-history.md
CI / gate (push) Successful in 25s
CI / publish (push) Successful in 4s

This commit was merged in pull request #81.
This commit is contained in:
2026-09-15 22:49:53 +02:00
parent ad1f3e996b
commit 4ac4a119e4
2 changed files with 30 additions and 29 deletions
+2 -28
View File
@@ -43,36 +43,10 @@ proves 12, 13 spells 11's gaps in 12's grammar, and 12 rewrites code 4b and 4c c
- [x] **3i — The inline nodes and the marks.**
- [x] **3j — The carry and the combinations.**
- [x] **3k — The CommonMark spec suite.**
- [ ] **4 — Round-trip property tests (`0.2.0`)**, widening 3j's corpus round-trip past the
documents a human wrote — the thing that proves 2 and 3 beyond them.
**Settled** (the maintainer, 2026-09-13): `fast-check` generates and shrinks. The gate runs a
fixed seed, the properties together adding about five seconds per engine; an environment
variable raises the runs and randomizes the seed for local digging, and a counterexample
found becomes a round-trip fixture. The generators draw from the node tables — each node's
content model and attribute vocabulary as `adf/` records them, which 11 holds to Atlassian's
schema — and misplace a share of nodes so the carry (§3) is exercised; no JSON Schema walker
enters the tests. `toEditorNormal` stays internal. 2e5's collision test goes, since a
collision already fails the round-trip on the same fixtures; the fixture-duplicate test
stays.
- [x] **4 — Round-trip property tests.**
- [x] **4.1 — Editor-normal and the node accessors.**
- [x] **4.2 — The ADF property.**
- [ ] **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).
**Settled** (the maintainer, 2026-09-15): the generators and run parameters 4.2 and 4.3
share live in one test-only module in `src/`, kept out of the build and coverage, with
10c's properties as its third user. Under the gate seed the property asserts floors on the
runs reaching the fixpoint and on the directive-shaped ones. It lands when hunts of several
hundred thousand runs per engine pass clean, since the breaks hit once per ~150,000 runs,
past a 10,000-run bar. Two breaks, both shipped in `0.1.0`, are fixed inside it. A backtick
string an escape formed closed an earlier bare run's code span, since CommonMark reads no
escape inside one: an escaped backtick alone or, as the review found, one joined to the bare
run after it. A backtick run now escapes whole, and a bare run escapes wherever a later
string of its length forms around an escape in the same inline content: the generalized pass
the maintainer chose (2026-09-15). A paragraph's opening read as a link
reference definition across a `]` the emitter spelled: the emitter now escapes the opening
`[` exactly when the parser's own definition reader accepts the paragraph, and a link
opening it rides the carry until 13b.
- [x] **4.3 — The markdown property.**
- [x] **4.4 — The real payloads.**
- [ ] **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