adr-reindex 是一个重排 ADR 索引的技能。adr-index 只会新增或更新行,无法删除行,因此当 ADR 文件被删除、或某文件中的一条关系行被移除后,其对应的索引行会永久残留;由于该孤儿行没有任何边,adr-verify 也检查不到。adr-reindex 用于收尾清理这类残留。
何时使用:删除 ADR 文件或移除关系行之后;作为定期一致性核对;当 adr-verify 统计的 ADR 数量高于磁盘上实际文件数(find docs/adr -name '*.md' | wc -l)时。
用法: node plugins/ruflo-adr/scripts/reindex.mjs
可选环境变量: REINDEX_FORMAT=json:以 JSON 而非 markdown 输出。 REINDEX_DRY_RUN=1:仅报告将会发生什么,不执行清除或写入。 ADR_ROOT=/path:指定扫描根目录及底层 memory purge/memory store 子进程运行所用根目录;必须与上一次 adr-index 使用的根目录一致,否则会处理错误仓库的命名空间。
它做什么:先用 memory purge --namespace <ns> --force 硬删除 adr-patterns 与 adr-edges 中的所有行,再重新扫描磁盘上所有 ADR 并重新存储,最后重新列出 adr-patterns 并断言数量等于刚扫描的 ADR 文件数,若不满足则以非零状态退出。此流程不可逆,它会清除整个命名空间;不要在流程之外直接对 adr-patterns/adr-edges 执行 memory purge。
限制:清除仅受锁保护以防并发 purge/delete,但无法阻止其他写入者,可能复活已清除的数据,届时需重跑;跨仓库指向未在本根目录扫描过的 ADR 的 related/depends-on 边会在重建时被丢弃,除非同一次运行中也索引了兄弟仓库的 ADR。