🏛 架构平台 Arch.Platform

反馈 0ace3c94

← 看板
v=f8059a73
严重度
状态 待分诊
决策

🐛 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  # 不修