Formaat: de Marp-sleutellijst hangt aan geen poort en kan stil verouderen #1817

Closed
opened 2026-08-27 17:28:07 +00:00 by brenno · 1 comment
Owner

Wat er staat

Sinds #1815 toetst requiresWholeMarpBlockPreservation positief tegen
kMarpitDirectiveNames in lib/services/marp_source_preservation.dart: alleen
een commentaar waarvan de sleutel in die lijst staat, laat het diablok als bron
staan. Dat verving de oude toets ("elk woord gevolgd door een dubbele punt"), die
gewone spreeknotities opat.

Wat daarvan het gevolg is

De oude toets ving élke toekomstige Marp-richtlijn vanzelf op. Deze lijst niet.
Voegt Marp er een toe — zeg backdrop: — dan bewaart OciDeck een blok dat hem
draagt niet meer, en gaat de richtlijn bij het eerste opslaan verloren. Stil, en
pas merkbaar bij iemand die zijn deck ook met de echte Marp CLI rendert.

Dat is een bewuste afweging, geen vergissing: wat de brede toets kocht was
toekomstvastheid voor iets zeldzaams, wat ze kostte was een dagelijkse fout.
De afweging staat opgeschreven bij de lijst zelf, mét de omslagvoorwaarde. Dit
issue is die voorwaarde.

Twee wegen, en de tweede is de betere

  1. Een poort op de lijst. make check-marp (#1804) draait al de échte,
    gepinde Marp CLI vanuit tool/marp-check. Dat is de plek om de sleutellijst
    tegen díe versie te toetsen: haal de richtlijnnamen uit de gepinde Marp-bron
    (of toets ze functioneel — render een fixture met elke sleutel en kijk of
    Marp er iets mee doet) en laat de poort vallen zodra Marp iets kent dat wij
    niet kennen. Klein, en het houdt de lijst eerlijk bij elke pin-bump.

  2. De doorgeeflus van #1810. Als een onbekend dia-directief bij het lezen
    apart wordt gezet en bij het schrijven onveranderd teruggezet, dan is
    "bewaren of niet" helemaal geen vraag meer — dan overleeft een onbekende
    richtlijn hoe dan ook, en is de lijst alleen nog nodig om te bepalen of de
    dia getypeerd mag blijven. Dat is de structurele oplossing; dit issue mag
    ermee samenvallen zodra #1810 is opgepakt.

Toetsen

Bij weg 1: een poort die faalt op een sleutel die de gepinde Marp kent en
kMarpitDirectiveNames niet. Bij weg 2: de regressietest van #1810, plus de
bestaande test/marp_directive_note_test.dart die de acht bekende sleutels
al vastzet.

Herkomst

Afgesproken bij de bewaker-beoordeling van #1815 (PR #1816), waar dit als
uitwisselbaarheidsregressie werd benoemd en de omslagvoorwaarde is vastgelegd.

**Wat er staat** Sinds #1815 toetst `requiresWholeMarpBlockPreservation` positief tegen `kMarpitDirectiveNames` in `lib/services/marp_source_preservation.dart`: alleen een commentaar waarvan de sleutel in die lijst staat, laat het diablok als bron staan. Dat verving de oude toets ("elk woord gevolgd door een dubbele punt"), die gewone spreeknotities opat. **Wat daarvan het gevolg is** De oude toets ving élke *toekomstige* Marp-richtlijn vanzelf op. Deze lijst niet. Voegt Marp er een toe — zeg `backdrop:` — dan bewaart OciDeck een blok dat hem draagt niet meer, en gaat de richtlijn bij het eerste opslaan verloren. Stil, en pas merkbaar bij iemand die zijn deck ook met de echte Marp CLI rendert. Dat is een bewuste afweging, geen vergissing: wat de brede toets kocht was toekomstvastheid voor iets zeldzaams, wat ze kostte was een dagelijkse fout. De afweging staat opgeschreven bij de lijst zelf, mét de omslagvoorwaarde. Dit issue is die voorwaarde. **Twee wegen, en de tweede is de betere** 1. **Een poort op de lijst.** `make check-marp` (#1804) draait al de échte, gepinde Marp CLI vanuit `tool/marp-check`. Dat is de plek om de sleutellijst tegen díe versie te toetsen: haal de richtlijnnamen uit de gepinde Marp-bron (of toets ze functioneel — render een fixture met elke sleutel en kijk of Marp er iets mee doet) en laat de poort vallen zodra Marp iets kent dat wij niet kennen. Klein, en het houdt de lijst eerlijk bij elke pin-bump. 2. **De doorgeeflus van #1810.** Als een onbekend dia-directief bij het lezen apart wordt gezet en bij het schrijven onveranderd teruggezet, dan is "bewaren of niet" helemaal geen vraag meer — dan overleeft een onbekende richtlijn hoe dan ook, en is de lijst alleen nog nodig om te bepalen of de dia getypeerd mag blijven. Dat is de structurele oplossing; dit issue mag ermee samenvallen zodra #1810 is opgepakt. **Toetsen** Bij weg 1: een poort die faalt op een sleutel die de gepinde Marp kent en `kMarpitDirectiveNames` niet. Bij weg 2: de regressietest van #1810, plus de bestaande `test/marp_directive_note_test.dart` die de acht bekende sleutels al vastzet. **Herkomst** Afgesproken bij de bewaker-beoordeling van #1815 (PR #1816), waar dit als uitwisselbaarheidsregressie werd benoemd en de omslagvoorwaarde is vastgelegd.
Author
Owner

Opgelost in PR #1823 (gemerged). Sectie F in tool/marp-check/run.sh extraheert de richtlijnnamen uit de gepinde Marp CLI en vergelijkt ze met kMarpitDirectiveNames. Faalt bij elke mismatch in beide richtingen. Commentaar in marp_source_preservation.dart verwijst nu naar de poort.

Opgelost in PR #1823 (gemerged). Sectie F in `tool/marp-check/run.sh` extraheert de richtlijnnamen uit de gepinde Marp CLI en vergelijkt ze met `kMarpitDirectiveNames`. Faalt bij elke mismatch in beide richtingen. Commentaar in `marp_source_preservation.dart` verwijst nu naar de poort.
brenno 2026-08-28 08:05:02 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#1817
No description provided.