父 RFC: #679
背景
internal/runtime/hooks/types.go 与 internal/config/runtime_hooks.go 当前各自维护一份 hook point 字符串集合与能力约束,新增点位需双端同步,容易漂移。accept_gate 在 runtime types 已声明但配置侧/文档侧未对齐,即为典型证据。
目标
让 hook point 与能力 (UserAllowed / CanBlock / CanAnnotate / CanUpdateInput) 只在 runtime hooks 包定义一次,config 校验通过导出 API 查询,新增点位无需修改 config 包代码。
范围
internal/runtime/hooks 导出:
ListHookPoints() []HookPoint
HookPointCapabilities(point) (HookPointCapability, bool)(已存在,保留)
IsUserAllowed(point) bool / IsRepoAllowed(point) bool(若 repo 能力今后独立)
internal/config/runtime_hooks.go:
- 删除
runtimeHookPoint* 常量与 switch case 列表
- 删除
runtimeHookPointUserAllowed 本地实现
- 全部改为调用 runtime hooks 包导出 API
- 增加一致性测试:
- 任何 hookPointCapabilities 中存在但未被 config 接受的点位 → 测试失败
accept_gate 在 types 已声明,本任务一并补齐 config 侧支持(若设计允许 user)
- 同步更新
docs/runtime-hooks-design.md 点位清单与能力矩阵
验收
不在本任务范围
- 新增任何 hook 点位
- 改动能力矩阵中已有点位的 CanBlock/CanUpdateInput 值
父 RFC: #679
背景
internal/runtime/hooks/types.go与internal/config/runtime_hooks.go当前各自维护一份 hook point 字符串集合与能力约束,新增点位需双端同步,容易漂移。accept_gate在 runtime types 已声明但配置侧/文档侧未对齐,即为典型证据。目标
让 hook point 与能力 (
UserAllowed/CanBlock/CanAnnotate/CanUpdateInput) 只在 runtime hooks 包定义一次,config 校验通过导出 API 查询,新增点位无需修改 config 包代码。范围
internal/runtime/hooks导出:ListHookPoints() []HookPointHookPointCapabilities(point) (HookPointCapability, bool)(已存在,保留)IsUserAllowed(point) bool/IsRepoAllowed(point) bool(若 repo 能力今后独立)internal/config/runtime_hooks.go:runtimeHookPoint*常量与switch case列表runtimeHookPointUserAllowed本地实现accept_gate在 types 已声明,本任务一并补齐 config 侧支持(若设计允许 user)docs/runtime-hooks-design.md点位清单与能力矩阵验收
accept_gate在文档点位清单中出现,并明确是否 UserAllowedgo test ./internal/runtime/... ./internal/config/...通过不在本任务范围