用途:管理 Forge 工作流中的 gates 与 rails(默认较强但可切换),用于关闭或重新开启强制项、记录人工闸门审批、查看强制状态。存储的真实依据是 workflow.gates.<id>.enabled 一个字段,已安装的钩子在运行时读取解析后的配置,因此被禁用的护栏真正失效,而非表面关闭。
切换闸门与护栏: forge gate disable <gate-id> # 在 .forge/config.yaml 中设 workflow.gates.<id>.enabled = false forge gate enable <gate-id> # 设回 true 未知闸门 id 或禁用锁定闸门会在写入前报错,不会运行中途失败。因钩子在运行时解析配置,切换立即生效,无需重装。
常见护栏(默认开启、可切换):rail.tdd_intent 强制提交前 TDD 门(源码变更须有测试变更),最小采用配置默认关闭;rail.kernel_tracking 强制“每个议题都归档”;rail.auto_shepherd 自主 PR 巡检守护进程触发。gate.* 与 rail.* 命名空间不重叠,故一条命令面统一管理两者。
人工闸门审批事件: forge gate approve <issue-id> <gate-id> # 记录持久的 gate.approved 事件 forge gate reject <issue-id> <gate-id> # 记录 gate.rejected forge gate status <issue-id> # 列出该议题已记录事件(可安全恢复) forge gate check <issue-id> <gate-id> # 当且仅当闸门禁用或该议题存在审批时退出 0 check 是可复用的强制原语,供阶段技能调用:闸门禁用或该具体议题 id 已有审批事件即通过(审批按议题作用域,需传入相同的 <issue-id>)。事件在议题上持久化,压缩或崩溃后仍保留。
三态控制(声明式意图): forge control <gate-id|rail-id> <mandatory|optional|permission> forge control status [--json] forge control 设置声明意图词汇,并写入与 forge gate 相同的 enabled 字段,刻意不设并行键。它是视图/意图层:目前没有运行时消费者仅凭 control 标志拒绝(MCP/规则/技能为 presence-only 且被拒绝)。要真正关闭强制,请用 forge gate disable。
文档更新闸门: forge gate doc <detect|check|init|...> # = forge doc-gate(运行 forge doc-gate --help) 文档更新闸门归入本名词下为 forge gate doc;裸 forge doc-gate 保留为向后兼容别名。
相邻技能:处理 PR 评审反馈/解决讨论串 → review;项目现状与进行中事项快照 → status。
限制:资料未说明闸门 id 的完整清单、control 三态的详细语义以及各护栏的具体实现细节与权限要求,暂未提供。