文档腐化检测(Doc-Rot)
使用用户的语言回答;保留技术术语、命令、路径和检查ID不变。
查找因时间而过时失效的文档内容。报告已验证的腐化(CONFIRMED);将仅属陈旧的放入推测的腐化(SUSPECTED)。
参数
- 范围(SCOPE): 指定文件(默认,若给出)| 本会话中触及的文档文件 | 整个仓库的文档 —
.md/.mdx/.markdown/.rst/.txt/.adoc/.asciidoc/.org(若文件大于20个,先确认)。 - 层级(TIER): 快速(Quick)= 仅机械年龄标记(约免费)· 完整(Full)= 语义陈旧判断(付费模式)。默认值来自
.coalledger.json的quickVsFull配置;完整模式始终需要单独同意。
年龄标记(机械层——确定性检测)
| 标记(marker) | 信号(signal) |
|---|---|
| 版本号字符串 | 文档中提到的版本低于项目当前版本(与版本的权威来源对比,例如清单文件) |
| 日期戳 | “最后更新”/需重新验证/已验证的日期过于久远或已过期 |
| 死亡任务标记 | 无明显生命迹象的 TODO / FIXME / “即将推出” / “尚未” |
| 过时徽章 | 硬编码的状态/版本徽章与仓库当前状态矛盾 |
检测是确定性的;但标记是否代表腐化并非确定——归档文件上的旧日期没问题,但在安装指南上则不行。
方法
- 快速检查(Quick): 按上表收集年龄标记。陈旧≠腐化:单独的标记只放入推测的腐化(SUSPECTED)。
- 完整检查(Full): 在上下文中判断每个标记,并寻找无日期的腐化——已更改的界面的过时说明,声称被后续文档取代的声明(实时文档之间的纯粹矛盾属于文档一致性范畴;腐化是时间轴上的问题)。
- 确认后才放入已验证的腐化(CONFIRMED): 仅当当前状态与文档矛盾时(版本来源指明更新版本;被引用的界面已消失),发现才视为CONFIRMED。任何推断的内容保持为SUSPECTED。
- 通过上下文判断严重性( 绝无固定映射),然后遵循
severityFloor:腐烂的安装/安全步骤(读者依赖)为高-严重;过时的徽章或版本提及为中;归档文档中的旧日期为低。
升级边界
一个声明是否曾经为真属于文档根基(doc-grounding)的职责;对高风险声明的正式验证会升级到CoalBoard(/coalboard)(如果该工具已安装)。此金丝雀仅回答“时间是否破坏了它”。
输出
| # | 路径:行号 | 标记 | 证据(当前状态) | 严重性 | 修复 |
仅输出CONFIRMED表格;SUSPECTED(陈旧但未证实)作为单独列表,绝不在主表格中。
报告: 若可调用则调用ReportFindings——file/line必须是指标所在行,不得转述;无法解析的行报告您的最佳猜测,在总结中注明不精确,不得删除。严重性在summary中加前缀(例如[HIGH] …),根据上述按上下文判断严重性的规则,按严重性从高到低排序,SUSPECTED(陈旧但未证实)的verdict: PLAUSIBLE;聊天中仅包含总结行(数量 · SUSPECTED列表 · 超过32项的溢出)+ 修复菜单,不得重申事实。若不可调用 → 保持上表不变。点击“应用修复”表示同意下方“应用安全修复”类别(仅限明确当前值的更新),与修复模式(Fix mode)结合使用——绝不绕过。任何修复轮次后,重新报告相同发现,并附上outcome: fixed/skipped/no_change_needed。
修复模式(用户选择)
在任何互动会话中报告后,您必须通过问题工具呈现此菜单(仅当发现为零或没有用户时跳过)。绝不自动修复实时文档。
- 应用安全修复: 仅更新那些当前值明确的项(将版本号更新为清单中的版本,根据用户确认刷新日期,根据用户确认删除已弃用的TODO)。每次修复:创建检查点(在git仓库中执行git stash/commit;否则拷贝文件——绝不假设git存在)-> 应用修复 -> 重新读取更改的行。
- 让我选择: 列出所有发现;用户选择。
- 仅报告: 退出,不进行任何更改。
绝不自动修复: 重写过时的说明(内容决策)、删除章节、任何您未验证其当前真实性的内容。
多语言支持
年龄标记是语言无关的(版本、日期和徽章在任何散文语言中看起来都一样;日期格式多样——按结构解析,不依赖英文月份名称)。对于处理欠佳的语言,语义判断降级为低置信度标志,绝不产生误报警。
问题报告
若此金丝雀表现异常,请提供选项让用户到https://github.com/TheColliery/CoalLedger/issues提交问题,并附上经用户审核的摘要——绝不自动提交。