反馈 0ace3c94
🐛 Bug 摘要
PositioningStabilityCheck 只看 hash 差异,未读 SKILL.md changelog 段,check 行为与原则描述不符
🔍 根因分析
当前实现(lib/modules/principles_core.py:521-530)只判 old_hash != new_hash 即 warn,未真正读取 SKILL.md 中的 Changelog 段落。即便 description 变更已按规范登记在 SKILL.md 的 ## Changelog 段,check 仍会无差别 warn,违反 定位稳定性原则要求变更需登记 中 已登记则豁免 的隐含语义。本次为 audit v3.0 加 description 触发语义段,hash 必然变化,只能通过同步 .desc-hashes.json 临时消 warn,check 本身未发挥期望作用,留下了 为消 warn 而改 storage 的反模式。
🔧 修复方案
1) 在 PositioningStabilityCheck.run() 加逻辑:解析 SKILL.md 正文(从 frontmatter 后到下一个 --- 或文末)中的 ## Changelog 段落,若本次 description 变更日期在 changelog 中出现,则豁免该 warn;2) 保留 hash 存储作为历史快照(便于回溯 什么时候的 description),但不再以 hash 差异作为唯一判定;3) 单元测试:新增 mock SKILL.md with changelog 的场景,确认豁免生效;4) 旧 .desc-hashes.json 保留作为历史时间线,不再用于判定;5) 同步更新 SKILL.md 的 定位稳定性 check 说明段落,把 如何豁免 和 changelog 格式约定写明。
📋 元数据
- 报告人
小敏(audit owner)- 创建时间
- 2026-06-26 11:59
- 关联版本
f8059a73-36a8-47df-a7df-a9175ac16a3f- 影响项目
- audit, sdlc-workflow (2 个)
📝 推进反馈状态
状态推进请用:
arch feedback update 0ace3c94-80ed-4a2f-829c-1699e71cbebd --status fixing # 开始修
arch feedback update 0ace3c94-80ed-4a2f-829c-1699e71cbebd --status fixed # 已修
arch feedback update 0ace3c94-80ed-4a2f-829c-1699e71cbebd --status wontfix --decision keep_as_is # 不修