安全策略与渲染版本
安全边界:stripHtml 去掉脚本/样式/图片标签与注释,safeHref 只放行 https:、http:、mailto: 与 # 锚点,生成 SVG 计划时所有标签经 escapeHtml 转义。输入预览永远只写 textContent,不把用户内容当 HTML 插入。
快速输入或切换模板时,createRenderGate 为每次渲染分配递增版本号,较慢慢旧结果检测到自己不是最新版本就被丢弃;commitRender 在解析失败时保留上次成功树并打上 stale 标记,说明它不是当前输入的结果。空输入走空态分支,不抛错误栈。
这些策略在 tests/acceptance.test.mjs 里都有固定向量的真实断言,可用 npm run test:smoke 复现。