<?xml version="1.0" encoding="UTF-8"?><oembed><type>video</type><version>1.0</version><html>&lt;iframe src=&quot;https://www.loom.com/embed/f941f20853444597931d85d6b56ef68c&quot; frameborder=&quot;0&quot; width=&quot;1662&quot; height=&quot;1246&quot; webkitallowfullscreen mozallowfullscreen allowfullscreen&gt;&lt;/iframe&gt;</html><height>1246</height><width>1662</width><provider_name>Loom</provider_name><provider_url>https://www.loom.com</provider_url><thumbnail_height>1246</thumbnail_height><thumbnail_width>1662</thumbnail_width><thumbnail_url>https://cdn.loom.com/sessions/thumbnails/f941f20853444597931d85d6b56ef68c-49f4009a5c8e8670.gif</thumbnail_url><duration>134.249</duration><title>Mirroring Asset Links and Degradation Tests</title><description>This Loom explains a substantial PR that updates how Markdown asset links are rewritten by tying together RewriteAssetLinks and MirrorAssetToRoamStorage within a new function in PortNodeAssets. It processes Markdown, finds asset links using existing utility functions, mirrors the assets, and returns rewritten Markdown. The PR also includes a small refactor to reuse a new get error message and fixes how it was used elsewhere. It adds extensive tests for the newly exposed functions, plus a separate commit with end to end Asset Degradation tests that verify failure cases are handled gracefully.</description></oembed>