$ printf -- '- a\n\n - c\n - d\n\n- b\n'
- a
- c
- d
- b
$ printf -- '- a\n\n - c\n - d\n\n- b\n' | cargo run --bin pampa --
[ BulletList [[Para [Str "a"], BulletList [[Plain [Str "c"]], [Plain [Str "d"]]]], [Para [Str "b"]]] ]
$ printf -- '- a\n\n - c\n - d\n\n- b\n' | cargo run --bin pampa -- -t qmd
* a
* c
* d
* b
$ printf -- '- a\n\n - c\n - d\n\n- b\n' | cargo run --bin pampa -- -t qmd | cargo run --bin pampa --
[ BulletList [[Plain [Str "a"], BulletList [[Plain [Str "c"]], [Plain [Str "d"]]]], [Plain [Str "b"]]] ]
A
BulletListparsed as loose (each item's first block isParagraph) round-trips as tight (Plain) when at least one item contains a nested sublist. The writer emits blank-line separators between top-level items but the re-parser does not treat the resulting source as loose, so the outer list collapses. Symptom:items[[i]][[1]]$tag = "Plain"after the round trip where the original was"Paragraph".Examples in quarto-web: