🏛 架构平台 Arch.Platform

反馈 5d361525

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

🐛 Bug 摘要

--self-check 模式范围扩张,实际扫描整个 ~/.claude/skills/ 而非仅 audit skill 自身,scope 处理不一致

🔍 根因分析

scripts/scan.py:413 设置了 args.self_check_root = SKILL_DIR(~/.claude/skills/audit/),意图是把 --self-check 的扫描范围限定在 audit 自身目录。但各 module 的 check 实现继续使用模块顶部定义的常量路径:principles_core 用 SKILLS_ROOT = CLAUDE_ROOT / skills;principles_depth 类似地用全局常量遍历;scope_expansion 用 PROJECTS 绝对路径。这些常量都没有读取 cfg.self_check_root 做范围限定,导致 --self-check 跑出 134 条 finding(9 blocker + 125 warn),其中绝大部分来自其他 skill(SkillOpt-main / sdlc-code / sdlc-design / sdlc-operate / sdlc-requirement / consolidate-claude / audit-triage 等),而非 audit 自身。这违背了 --self-check 的设计意图(让 audit owner 改完自身代码后,快速得到 仅关于自己的 报告),也违背了一致性原则:scope 处理应该被 cfg 统一驱动。

🔧 修复方案

1) 在 lib/config.py 的 AuditConfig 新增 scan_root: Path | None = None 字段,self-check 模式下 scan.py 把它设为 SKILL_DIR;2) 重构 lib/modules/*.py 各 module 的常量(SKILLS_ROOT 等)改为函数级读取 cfg.scan_root,self-check 时退到 SKILL_DIR,默认仍为 CLAUDE_ROOT / skills;3) 或更轻量:在 lib/core.py 加 ScanScope helper,所有 module 通过它取路径,ScanScope 内部读 cfg.scan_root;4) 单测覆盖:新增 test_self_check_scopes_only_audit_own_dir,用 mock cfg 验证 --self-check 跑出来 finding 的 target path 都以 SKILL_DIR 为前缀;5) 跑 --self-check 验证现状 9 blocker + 125 warn 应回归到接近 0 blocker / 仅 audit 自身 warn。

📋 元数据

报告人
小敏(audit owner)
创建时间
2026-06-26 12:06
关联版本
f8059a73-36a8-47df-a7df-a9175ac16a3f
影响项目
audit (1 个)

📝 推进反馈状态

状态推进请用:

arch feedback update 5d361525-7533-45eb-8b0e-fa0e767a5e6e --status fixing  # 开始修
arch feedback update 5d361525-7533-45eb-8b0e-fa0e767a5e6e --status fixed   # 已修
arch feedback update 5d361525-7533-45eb-8b0e-fa0e767a5e6e --status wontfix --decision keep_as_is  # 不修