Compare
Honest trade-offs. K2F is not a lossless superset of PDF, Markdown, HTML, or DOCX.
| Capability | Markdown | HTML | DOCX | K2F | |
|---|---|---|---|---|---|
| Agent-stable node ids | No | No | Fragile DOM | Fragile XML | Yes — dotted ids in the semantic tree |
| Pixel-stable pages | Yes | No | No (viewport reflow) | Soft / app-dependent | Yes — viewers paint `document.K2F.lock` |
| Semantic roles vs presentation | Drawing only | Headings / lists | Tags mixed with CSS | Styles | Roles + Theme; no inline CSS in State A |
| Integrity banner | No | No | No | Optional | Required (SIGNED, UNSIGNED, SIGNED_BUT_BROKEN, BROKEN_INTEGRITY, UNLOCKED) |
| PDF as editable source | It is the file | N/A | N/A | N/A | No — `PDF_IS_NOT_A_SOURCE`; export is a drawing of the lock |
| Arbitrary vector art in source | Yes | No | SVG | DrawingML | No in State A (a real loss vs PDF) |
| Engine / reader mismatch | Viewer differences | Renderer differences | User-agent differences | App differences | `ENGINE_MISMATCH` — intentional, not silent drift |
| Markdown round-trip | N/A | Native | Lossy | Lossy | Supported and lossy for theme, lock, and node ids |
| MCP server | N/A | N/A | N/A | N/A | Not shipped |
| Package registries | N/A | N/A | N/A | N/A | Not on npm/PyPI yet — local install only |