# TraceCite Roadmap

更新日期：2026-10-10（北京时间）。

按 **正式交付 → 日常维护体验 → 真实项目验证 → 生态接入** 推进。
项目持续围绕引用与来源的一致性、来源变化后的文档维护，保留人工复核入口。

## 当前基础

0.7.2 已发布到 Mooncakes 和 GitHub，继承 0.5.0 的项目配置、init/check、GitHub Action 和 portable 核心库。
验收说明、第三方许可及 13 步和 14 步离线维护演示已纳入正式源码包；实际注册表安装与两平台独立包均已验证。
已发布内容与后续改动见 [版本记录](CHANGELOG.md)，交付证据见 [验收说明](docs/acceptance.md)。

近期顺序为 **0.8.0 降低 CI 与变化复核成本，同时开始维护试用 → 根据真实阻碍补齐 0.8.1 兼容性 → 0.9.0 汇总持续维护证据**。
持续使用验证从现在开始，不等待功能列表完成；优先解决有案例依据的接入和复核负担。
下列版本为规划目标，尚未完成的事项保持未勾选；执行顺序与范围根据实际反馈调整。

## 0.8.0：让严格检查适合日常 CI（发布验证中）

问题依据是两个固定仓库的 66 条警告分类。没有关联来源的引号可能是术语，也可能是真实引文；工具不能自行判断作者意图。
本版本先提供项目显式选择与可审计的覆盖统计，默认行为保持严格。

- [x] 配置和 CLI 支持 unassociated_quotes=review|skip；只允许显式跳过无来源的完整引号。
- [x] 跳过项逐条保留文档行、诊断与 not_checked 分类，独立统计 skipped_quotes；不增加已核验数量。
- [x] 提供 max_skipped_quotes 预算，超过上限时即使关闭 strict 也失败，禁止生成候选或写入基线。
- [x] 验证配置、CLI 覆盖、init 持久化和 Action 使用同一规则。
- [x] 保留未闭合引号、未知链接定义、显式引文、断链、越界路径和来源变化的正反检查。
- [x] 提供可运行接入样例，并记录两个固定案例在默认与显式策略下的统计差异。
- [x] 更新 JSON 契约、MoonBit 配置结构的迁移说明，验证三目标、CLI、源码 ZIP 和公共 API 消费。
- [x] 回放真实来源提交并减少变化报告的重复上下文；检测结果、退出码及完整快照保持一致。
- [x] 提供隔离回放脚本与实际项目试用记录方法，分别统计正常变化、错误文档和未检查项。
- [x] 根据真实语法案例支持独立 HTML ID，保留缺失目标失败与选中正文的基线复核；范围见[正反样例](examples/html-anchors/README.md)。
- [ ] 正式发布前再核对注册表安装与两平台独立包，保存固定提交和消费证据。

当前已实现并验证的行为见[八步样例](examples/quote-policy/README.md)和[固定仓库对比](docs/field-validation.md#080-开发版引号策略对比)。

**完成标准**：项目可在不关闭 strict 的情况下显式控制无来源引号；新增跳过项受预算约束；真实来源失败和基线保护仍生效。
开发验证：native 125 项、JS/Wasm 各 110 项、CLI 75 项、JSON 契约 8 项；解包安装后公共 API 消费每目标 10 项及八步引号策略样例均通过。
一次固定上游提交回放将两处变化的前后文从 3170 字符减到 850 字符；这是展示量对比，不是人工工时收益。复现和后续试用方法见 [持续维护试用](docs/maintenance-trials.md)。
开发验证完成与正式发布分别标记。旧配置无需修改；直接构造 MoonBit 配置结构的使用者按迁移说明补入新增字段。

## 0.8.1：扩大 HTML 与 Markdown 锚点兼容范围（规划）

独立空 a 元素的 id 已按实际案例提前并入 0.8.0 开发线。下列剩余范围需要分别取证，不把局部支持标记为全面兼容。

- [ ] 从可复现文档中选择自定义 HTML ID、行内排版和跨行引用案例，记录当前错误与实际渲染结果。
- [ ] 根据真实需要扩展其他元素和跨行 HTML ID；保留重复目标、大小写、实体及代码与注释隔离规则。
- [ ] 为支持的规则提供独立期望结果及正反回归；不支持的站点规则继续明确提示。
- [ ] 验证锚点选择的实际正文、来源变化与快照比较，不只验证目标存在。

**完成标准**：公布支持范围与可运行对比案例；有效目标通过，缺失目标及错误片段仍失败。具体范围随案例证据调整。

## 0.9.0：验证持续维护价值（提前开始收集证据）

- [x] 重放真实项目的一次自然提交，保存诊断、开发复核依据、接受基线和再次通过的完整流程；明确标为历史回放。
- [ ] 记录至少两个项目的完整接入过程，包括初次扫描、人工分类、配置决定与接入成本。
- [ ] 在获得实际使用反馈后，记录自然发生的来源变化、诊断、修复和再次通过过程。
- [ ] 保存每个可复现问题的原始统计、范围、版本和处置依据；分别报告误报、真实问题和未检查项。
- [ ] 优先修复阻碍持续使用的问题，再决定是否增加编辑器或其他平台接入。

**完成标准**：至少有一轮真实维护过程可以追溯；没有维护者使用证据时，只称本地评估，不声称采用率或工时收益。外部协作不设置虚构完成日期。

## 1.0：稳定使用契约（候选门槛）

- [ ] 根据持续维护反馈固定配置、报告、退出码和公开 API 的兼容承诺。
- [ ] 提供升级与基线迁移说明，明确各平台、离线和联网检查的支持范围。
- [ ] 完成从旧版配置升级、全新安装、CI 接入和失败恢复的复现验证。

**进入条件**：0.8 系列核心体验完成，真实维护反馈得到处理，并且有证据支持稳定性承诺；不以功能数量或版本号作为成熟度证明。

## 0.5.1：发布收口（已完成）

优先让 GitHub 和 Mooncakes 的正式交付材料一致。

- [x] 将新增验收材料、许可通知纳入正式 Mooncakes 包。
- [x] 同步模块、CLI、安装示例和版本记录中的版本号。
- [x] 创建 GitHub 版本标签和正式 Release，长期提供 Linux/macOS 独立包与 SHA-256 校验文件。
- [x] 发布脚本防止重复发布已有版本，核对构建来源与交付身份。
- [x] 从实际注册表安装发布后的库和 CLI，验证公开 API 与维护流程。

**完成标准**：Mooncakes 安装、源码构建、独立包运行均通过，发布版本可对应固定提交。
执行步骤以 [发布指南](docs/publishing.md)为基础。

发布成果：[GitHub Release](https://github.com/Freakz2z/tracecite/releases/tag/v0.5.1)、[Mooncakes](https://mooncakes.io/docs/Freakz2z/tracecite)。固定提交、摘要和验证回执见 [0.5.1 交付记录](docs/releases/0.5.1.json)。

## 0.6.0：降低维护成本（已完成）

优先改善团队反复检查、定位问题和复核来源变化的体验。

- [x] 项目配置支持常用文件通配符，明确匹配、排除与空范围的行为。
- [x] 补充 Setext 标题解析，并验证与当前锚点和快照机制的兼容性。
- [x] 提供来源变化的集中复核报告和基线更新预览。
- [x] 允许项目明确要求检查覆盖范围，复核网页跳过项与未绑定源码的代码块。
- [x] 增加上述能力的边界测试和可运行维护示例。

**完成标准**：在一个示例项目中完成扫描、定位、修复、复核和更新基线，新增边界测试全部通过。
现有 [离线演示](examples/maintenance/README.md)继续作为维护闭环的回归验证。

发布成果与消费验证见 [0.6.0 交付记录](docs/releases/0.6.0.json)、[14 步维护复核演示](examples/review/README.md)及 [验收说明](docs/acceptance.md)。

## 0.6.x：真实项目验证

用实际维护反馈决定后续功能优先级。

- [x] 在本地接入两个实际仓库的固定版本：moonbitlang/async 与 moonbitlang/moon；不是上游采用。
- [ ] 记录自然发生的来源变化、误报、漏检及修复过程。
- [x] 为两个首轮案例保存固定提交、检查配置、结果和人工复核记录。
- [x] 首轮报告区分真实断链、工具误报、兼容性限制和未检查内容。
- [x] 根据首轮反馈修复三类兼容性问题，并为可复现问题增加回归测试。

**完成标准**：每个案例都可沿固定提交与复核记录追溯；采用与收益结论由实际数据支持。

首轮已扫描 65 份真实文档、287 条可检查引用，发现两条已核实断链和三类工具兼容性问题。
复现与结论见 [真实仓库验证](docs/field-validation.md)，不推算采用率、总体误报率或工时收益。

## 0.6.1：修复真实仓库暴露的边界（已完成）

- [x] 与 GitHub 一致地处理标题中的 Unicode 标点，消除长破折号锚点误报。
- [x] 区分脚注与普通引用链接，不将脚注正文当作文件路径。
- [x] 支持仓库根路径链接，保留工作区边界与越界拒绝。
- [x] 添加对应回归，重跑两个固定案例，确认真实断链仍被报告。

**完成标准**：三个已复核问题得到修复，前后结果可追溯；新增行为及限制写入使用说明。

0.6.1 发布与消费验证见 [交付记录](docs/releases/0.6.1.json)及 [GitHub Release](https://github.com/Freakz2z/tracecite/releases/tag/v0.6.1)。
兼容性最小样例和两个固定仓库的修复前后结果均已复现；待复核与未检查项继续保留。

## 0.7.0：完善生态接入（已完成）

让新的 MoonBit 项目更容易使用核心库、CLI 或 Action。

- [x] 增加可直接编译运行的 MoonBit 库接入样例。
- [x] 简化 CI 模板，继续复用项目配置。
- [x] 完善 JSON 诊断字段和兼容性说明，支持消费方稳定处理结果。
- [x] 改善网页失败诊断，帮助维护者区分回源失败和引文需要复核的情况。
- [x] 验证新项目按文档完成库、CLI 或 Action 接入。

**完成标准**：新项目可按文档完成接入，核心库的 native、JS、Wasm 三个编译目标保持验证通过。

发布成果见 [0.7.0 交付记录](docs/releases/0.7.0.json)、[独立库及 CI 接入](examples/library/README.md)、[JSON 契约](docs/json-report.md)。
实际注册表库样例、三目标消费与八步新项目接入已通过；本仓库 CI 验证完整 Action，八步演示验证检查脚本共用配置，不作为外部采用数据。

## 0.7.1：减少多语言文档误报（已完成）

- [x] 修复非 ASCII 标题小写转换，保留 Sigma 上下文与 İ 的展开行为。
- [x] 增加可直接运行的多语言标题样例、独立参考结果、三目标与 CLI 回归。
- [x] 修复 JSON 读取样例的错误类型边界，继续明确统计待复核项。
- [x] 验证源码包、注册表与独立包，并正式发布。

**完成标准**：有效标题链接通过，真实缺失锚点及来源变化仍报告；交付版本可对应固定提交。

发布成果见 [0.7.1 交付记录](docs/releases/0.7.1.json)及 [GitHub Release](https://github.com/Freakz2z/tracecite/releases/tag/v0.7.1)。
已发布的 0.7.0 独立包在同一受控样例中有 11 条锚点失败；0.7.1 注册表 CLI 与两个平台独立包均验证 12 条全部通过。该对比不作为外部采用或总体准确率数据。

## 0.7.2：交付引用解析与断链保护（已完成）

- [x] 逐条复核两个固定真实仓库的 66 条警告：58 条引号诊断、8 条不支持的编辑器位置写法；区分术语、跨行表达与需复核的来源比较，保存分类依据。
- [x] 修复重复定义漏检、标签归一化冲突、非 ASCII 标签、链接标题与地址边界，增加正反样例和回归。
- [x] 正式发布确认的解析修复，并核对固定提交、CI、注册表及独立包的正反结果。
- [x] 为解析修复补齐正反回归和可运行样例，将检查纳入源码包、注册表及独立包验证。

逐项复核见 [诊断分类记录](docs/field-validation/warning-review.json)，解析修复见 [正反样例](examples/link-parsing/README.md)。仍需确认引文意图和站点兼容性，未将现有警告自动忽略。

**完成标准**：确认的误报得到修复，真实断链、引文不匹配与来源变化继续报告；未检查内容仍单独统计。

发布成果见 [0.7.2 交付记录](docs/releases/0.7.2.json)及 [GitHub Release](https://github.com/Freakz2z/tracecite/releases/tag/v0.7.2)。
三种交付渠道的 12 条有效引用全部通过；第一条定义断链的样例仍退出 2。

## 更新与发布原则

每次更新都应包含清晰提交、CHANGELOG、可运行示例、相关测试和发布验证。
优先保持现有公开 API、命令和项目配置的兼容性；发生兼容性变化时，在版本记录中明确说明。
第三方组件继续保留各自许可和来源，具体要求见 [第三方通知](THIRD_PARTY_NOTICES.md)。

0.7.2 已正式交付，九项验收要求都有可复核材料；0.8.0 已实现显式引号策略与变化上下文展示。下一步围绕真实持续使用收集接入和复核成本，处理有证据的问题；维护者反馈及正式发布仍分别保留完成门槛。
项目安装与当前用法见 [README](README.mbt.md)。
