Gate-as-Code
自 v0.8.6 起,Gate-as-Code 用一份可分享的 TOML 描述「任务何时算绿」——与夜间队列、技能 stage gate、LHT verify 共用同一套谓词库(predicate library)。
是什么
- 一份 TOML:
[[verify]]行 + 可选verify_budget/rollback。 - 每行一个谓词:
exit_code、tests_pass、file_exists、file_count、command_output_matches等。 - 技能旁的
harness.toml(stage gate)与扁平门禁文件同一 schema。
维护者规格见产品仓 docs/harness/gates/。
CLI
# 校验内置预置
zagens gate validate --preset rust-cargo-smoke
# 校验自定义文件(CI 友好 JSON)
zagens gate validate --file path/to/my-gate.toml --json
# 列出内置预置
zagens gate list
入队时挂门禁:
zagens queue add "修复测试" --gate-preset rust-cargo-smoke
zagens queue add "检查" --gate-file ./gates/my.toml
详见 夜间队列。
扁平门禁示例
schema_version = 1
[harness]
id = "my-team-rust-gate"
description = "Compile and test before merge."
[verify_budget]
max_retries = 2
timeout_ms = 600000
[rollback]
strategy = "snapshot"
[[verify]]
id = "compile"
predicate = "tests_pass"
args = { toolchain = "cargo", cmd = "cargo check" }
[[verify]]
id = "tests"
predicate = "tests_pass"
args = { toolchain = "cargo", cmd = "cargo test" }
与 LHT / 技能的关系
| 场景 | 用法 |
|---|---|
| 夜间队列 | --gate-preset / --gate-file / 内联 --gate |
| 技能 stage gate | load_skill 旁 harness.toml,或 [long_horizon.stage_gate].manifest |
| LHT 完成门 | 面板/预置仍可配置 verify;long-refactor / long-fix 等预置会写入 enforce 产品门 |
桌面侧栏 Agent 体检 与 zagens doctor --tools 会聚合门禁/verify 相关 telemetry。
建议
- 团队把常用门禁放进仓库
gates/,CI 与夜间队列共用同一文件。 - 优先内置预置;需要定制时复制预置再改,而不是从零写。
- 门禁失败后看
.zagens/queue_events.jsonl与 handoff,再决定是否放宽谓词。