markdown
Technical notes on web development, DevOps, and AI integration.
3 articles
- 17:04tooling
All Unit Tests Green, Yet the Converter Still Broke
Three pull-side bugs slipped past unit tests that were green on each side; only the round-trip property test caught the unsynchronized two-sided contract.
TL;DR: A round-trip property test over real docs failed despite green unit tests, showing the push and pull sides followed different contracts. Fixes addressed nested bold links via a wrap stack, a regex stash leak fixed by looping, and empty quote markers needing canonicalization. The lesson is unit tests only prove local specs, so you need cross-boundary property tests.
#plane#python#markdown - 16:20tooling
Two-way converter: conservative on push, tolerant on pull
A horizontal rule that vanished without a trace exposed a healthy two-way converter design: canonical push, tolerant pull that still refuses loudly.
TL;DR: My horizontal rule vanished on pull because the parser only handled <hr /> and silently ignored plain <hr>. The fix now throws a clear error for the bare tag instead of quietly dropping it. The tool now pushes conservative canonical HTML but only tolerates its known dialect on pull, backed by round-trip property tests.
#plane#python#markdown - 15:26tooling
The Markdown converter I trust is the one that refuses
A two-way repo-to-Plane converter that rejects anything outside a closed subset, line number included, instead of guessing.
TL;DR: The doc-sync converter rejects unsupported Markdown with an exact line number instead of silently truncating content. It only handles a strict subset like headings to h4, lists, tables and code blocks while frontmatter stays repo-side and images become pointers. This strict grammar and repo-side normalization makes round-trip conversions predictable and errors easy to fix.
#plane#python#markdown