{"id":"0ace3c94-80ed-4a2f-829c-1699e71cbebd","version_id":"f8059a73-36a8-47df-a7df-a9175ac16a3f","reporter":"小敏(audit owner)","bug_summary":"PositioningStabilityCheck 只看 hash 差异,未读 SKILL.md changelog 段,check 行为与原则描述不符","root_cause":"当前实现(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 的反模式。","fix_plan":"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 格式约定写明。","severity":"low","status":"open","decision":null,"reused_in_projects":["audit","sdlc-workflow"],"decided_at":null,"created_at":"2026-06-26T11:59:27.736123","requirement_id":"25aae05a-fa2f-4824-afad-9fce03c44f2f"}