| … | … | @@ -64,8 +64,22 @@ fromBsky(rec) -> ImportedView |
| 64 | 64 | STRIP_VERSION -> string // consensus-critical (§10.3) |
| 65 | 65 | ``` |
| 66 | 66 | |
| 67 | | No dependencies beyond a CommonMark parser. Must run under Bare and Node alike (the daemon is |
| 68 | | Bare; the tests are Node), so no Node-only builtins. |
| 67 | Must run under Bare and Node alike (the daemon is Bare; the tests are Node), so no Node-only |
| 68 | builtins. |
| 69 | |
| 70 | ⚠ **Amended 2026-09-05.** This previously said *"no dependencies beyond a CommonMark parser"*, which |
| 71 | the pinned dialect makes impossible: §2.1 of `markdown-strip.md` requires CommonMark **plus six |
| 72 | extensions**, and four of them — GFM strikethrough, GFM tables, footnotes, directives — change block |
| 73 | or inline **structure**. Hand-rolling those is exactly how two implementations come to disagree, |
| 74 | which is the one failure `markdown-strip.md` §1 exists to prevent. |
| 75 | |
| 76 | **Decision (user, 2026-09-05): micromark.** `strip()` depends on 9 direct packages |
| 77 | (`mdast-util-from-markdown` plus the four extensions and their mdast halves), **57 packages |
| 78 | transitively**. That is a real cost and it is the price of the pinned dialect, not an accident. |
| 79 | |
| 80 | The two remaining extensions stay in our code: **wiki-links and hashtags are lexical rules over a |
| 81 | text run** (§3.6, §3.7 — the hashtag rule is given as a normative regex), so there is no structural |
| 82 | ambiguity for an implementation to resolve differently. |
| 69 | 83 | |
| 70 | 84 | ### 3.1 A record names its author by USER, never by DID |
| 71 | 85 | |