适配 @lint-md/core v2.1.5:消费 fix convergence 状态(#182 增强)
core #182(已随 v2.1.5 发布)给 FixedResult 增加了 fix 收敛可观测字段:
convergence?: 'stable' | 'cycle' | 'max'
rounds?: number
metrics?: { rounds, wallTime, perRound }
这些字段可选且历史构造仍可用,CLI 当前只碰 fixedResult.result / notAppliedFixes,对未知字段天然兼容、不会报错。本 issue 是功能增强,不是兼容性必需。
现状
--fix 模式下 CLI 只 safeWriteFile(path, fixedResult.result)(lint-md.ts:193),不对收敛质量做任何判断。若 core 因 MAX_ROUNDS 截断(convergence==='max')或检测到振荡(convergence==='cycle'),CLI 会让用户误以为“已完全修复”。
适配方案(建议)
convergence==='max' / 'cycle':stderr 警告(仿 getUnappliedFixesWarnings),提示“fix 未完全收敛”,默认不 exit(1)(属质量警告,非硬错误)。
- 可选
--fail-on-incomplete-fix 开关:把上述情况升级为 exit(1)。
rounds / metrics:仅在 --dev 下日志输出,便于诊断收敛轮数/耗时。
验证
- 造一个会触发 cycle / max 的测试用例(如自替换规则振荡),断言 CLI 输出收敛警告。
npm run build && npm test 全绿。
适配 @lint-md/core v2.1.5:消费 fix
convergence状态(#182 增强)core #182(已随 v2.1.5 发布)给
FixedResult增加了 fix 收敛可观测字段:convergence?: 'stable' | 'cycle' | 'max'rounds?: numbermetrics?: { rounds, wallTime, perRound }这些字段可选且历史构造仍可用,CLI 当前只碰
fixedResult.result/notAppliedFixes,对未知字段天然兼容、不会报错。本 issue 是功能增强,不是兼容性必需。现状
--fix模式下 CLI 只safeWriteFile(path, fixedResult.result)(lint-md.ts:193),不对收敛质量做任何判断。若 core 因MAX_ROUNDS截断(convergence==='max')或检测到振荡(convergence==='cycle'),CLI 会让用户误以为“已完全修复”。适配方案(建议)
convergence==='max'/'cycle':stderr 警告(仿getUnappliedFixesWarnings),提示“fix 未完全收敛”,默认不 exit(1)(属质量警告,非硬错误)。--fail-on-incomplete-fix开关:把上述情况升级为exit(1)。rounds/metrics:仅在--dev下日志输出,便于诊断收敛轮数/耗时。验证
npm run build && npm test全绿。