ADR-0052:离线 CommonMark/GFM 语义导入
状态:已采纳。
背景
严格 Markdown 模板有独立的变量和编译规则,不能直接承担一般 Markdown 导入。通用输入需要成熟语法解析、源位置、明确的模型映射及可查询的损失。
决策
- 在
export4j-adapter-web中使用内部 commonmark-java 0.24.0 及同版表格/删除线扩展,生产依赖采用 BSD-2-Clause;第三方类型不进入公共签名。严格模板入口保持原契约。 - 输入为显式 String,图片仅从调用方登记的目标键读取。绝不获取 URL、文件或外链图片;相对被动链接只在显式 HTTP(S) base 下解析。
- 标题、段落、强调、链接、嵌套列表、表格和硬换行进入既有模型。代码、引用及未建模元数据不能冒充无损;按共享策略降级或丢弃,保留源 UTF-16 位置和真实格路径。
- 默认 ERROR。WARN/IGNORE 均保留实际损失;不支持的处理方式失败。脚本、危险链接、非法 Unicode、结构错误、预算及执行失败不受损失策略控制。
- 预检保存确切候选,执行返回同一候选及实际报告。输入、行长、AST、文字、表格槽、报告和工作分别有界;解析前后和遍历检查取消,不宣称能在第三方解析器内部硬中断。
边界与证据
不是完整 GFM、HTML 解释器或任意 Markdown 无损往返。代码角色由调用方显式选择实际字体,不隐式加载等宽字体。引用降级仅保留缩进文字,语言标签、代码容器与任务框语义有明确损失。