Skip to content

[Hooks RFC #679] Task A: Hook 点位/能力单一真源重构 #681

@Cai-Tang-www

Description

@Cai-Tang-www

父 RFC: #679

背景

internal/runtime/hooks/types.gointernal/config/runtime_hooks.go 当前各自维护一份 hook point 字符串集合与能力约束,新增点位需双端同步,容易漂移。accept_gate 在 runtime types 已声明但配置侧/文档侧未对齐,即为典型证据。

目标

让 hook point 与能力 (UserAllowed / CanBlock / CanAnnotate / CanUpdateInput) 只在 runtime hooks 包定义一次,config 校验通过导出 API 查询,新增点位无需修改 config 包代码。

范围

  1. internal/runtime/hooks 导出:
    • ListHookPoints() []HookPoint
    • HookPointCapabilities(point) (HookPointCapability, bool)(已存在,保留)
    • IsUserAllowed(point) bool / IsRepoAllowed(point) bool(若 repo 能力今后独立)
  2. internal/config/runtime_hooks.go:
    • 删除 runtimeHookPoint* 常量与 switch case 列表
    • 删除 runtimeHookPointUserAllowed 本地实现
    • 全部改为调用 runtime hooks 包导出 API
  3. 增加一致性测试:
    • 任何 hookPointCapabilities 中存在但未被 config 接受的点位 → 测试失败
    • accept_gate 在 types 已声明,本任务一并补齐 config 侧支持(若设计允许 user)
  4. 同步更新 docs/runtime-hooks-design.md 点位清单与能力矩阵

验收

  • config 包内不再出现任何 hook point 字符串字面量
  • 新增一个虚拟点位仅改 runtime hooks 包即可让 config 接受
  • accept_gate 在文档点位清单中出现,并明确是否 UserAllowed
  • go test ./internal/runtime/... ./internal/config/... 通过
  • 现有 hook 行为零回归

不在本任务范围

  • 新增任何 hook 点位
  • 改动能力矩阵中已有点位的 CanBlock/CanUpdateInput 值

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions