` | Link dropped, text kept (scheme allowlist); never rewritten by base resolution |
+| Data URI payloads | `
` | Image dropped, alt text kept (only raster `data:image/*` allowed) |
+| Markdown in text | `# x *y* <img onerror>
` | Escaped; renders as the literal text |
+| Fence breakout | ```` ``` ```` inside `` | Fence longer than any backtick run in the code |
| Style expressions | `style="background:url(javascript:...)"` | Attribute not read |
| Deep nesting | 1000+ nested `` | Flattened to text at `max_nesting_depth` (256) |
| Huge text nodes | 100KB+ single text node | Passed through (bounded by input limit) |
@@ -346,6 +371,7 @@ process, or smuggling content past a human reviewer.
| S14 | Returned Markdown never exceeds `max_output_size` | `limits::*output_cap*` |
| S15 | No configuration of `max_nesting_depth` can overflow the stack | `limits::*hard_ceiling_survives_small_stack` |
| S16 | Extraction stops with `ResourceLimit` once `timeout` passes (checked at least after each non-interruptible third-party step) | `limits::*zero_timeout_rejects`, `limits::tests::*` |
+| S17 | Rendered markdown has no raw HTML, no non-allowlisted link/image scheme, and document text cannot create Markdown structure | `output_safety::*` (pulldown-cmark oracle + proptests) |
## See also