Add spec-aware orch tasks and verification gates

This commit is contained in:
2026-03-23 14:05:10 +08:00
parent 4d8c90eb26
commit 9f9b66330c
22 changed files with 1696 additions and 55 deletions
+2
View File
@@ -7,3 +7,5 @@
| `task-add-creates-ready-root-task` | [task-add-creates-ready-root-task.md](./task-add-creates-ready-root-task.md) | creates a dependency-free task that becomes ready immediately |
| `task-add-rejects-invalid-acceptance-json` | [task-add-rejects-invalid-acceptance-json.md](./task-add-rejects-invalid-acceptance-json.md) | rejects malformed `--acceptance-json` with `invalid_input` |
| `task-add-rejects-invalid-priority` | [task-add-rejects-invalid-priority.md](./task-add-rejects-invalid-priority.md) | rejects priorities outside `low|normal|high` |
| `task-add-snapshots-spec-and-verification-policy` | [task-add-snapshots-spec-and-verification-policy.md](./task-add-snapshots-spec-and-verification-policy.md) | snapshots spec file content, verification profile, and scope policy onto the task |
| `task-add-rejects-spec-sha-mismatch` | [task-add-rejects-spec-sha-mismatch.md](./task-add-rejects-spec-sha-mismatch.md) | rejects explicit spec hashes that do not match the task spec file content |
@@ -0,0 +1,34 @@
# Case: `task-add-rejects-spec-sha-mismatch`
## 用例意义
验证 `task add` 在接收 `--spec-file``--spec-sha` 时,会拒绝内容摘要不匹配的任务定义,避免 task spec 漂移。
## 前置条件
- 已存在 run `run_blog_007`
- 临时目录内存在可读取的 spec 文件 `TMPDIR/task.md`
- 调用时传入的 `--spec-sha` 与文件实际 SHA256 不一致
## 输入
```bash
orch --db TMPDIR/coord.db --json run init --run run_blog_007 --goal "Validate spec sha mismatch"
orch --db TMPDIR/coord.db --json task add \
--run run_blog_007 \
--task T1 \
--title "Implement verifier" \
--spec-file TMPDIR/task.md \
--spec-sha deadbeef
```
## 预期输出
- `task add` 退出码为 `30`
- JSON error payload 的 `error.code == "invalid_input"`
- `error.message` 包含 `spec-sha does not match spec-file contents`
## 断言结论
- task spec 快照不是“尽力而为”的附带字段;当显式声明 SHA 时,CLI 会把它当成契约校验
- leader 不能在 spec 内容与预期摘要不一致时继续创建 task
@@ -0,0 +1,49 @@
# Case: `task-add-snapshots-spec-and-verification-policy`
## 用例意义
验证 `task add` 在创建任务时,不只是写入基础调度字段,还会快照 task spec 与验证策略。
## 前置条件
- 已存在 run `run_blog_006`
- 临时目录内存在可读取的 spec 文件 `TMPDIR/task.md`
## 输入
```bash
orch --db TMPDIR/coord.db --json run init --run run_blog_006 --goal "Validate spec-aware task add"
orch --db TMPDIR/coord.db --json task add \
--run run_blog_006 \
--task T1 \
--title "Implement verifier" \
--spec-file TMPDIR/task.md \
--check-profile cadence_component \
--required-check lint \
--required-check test \
--allowed-path packages/ui \
--blocked-path scripts/release-metadata.mjs \
--metadata-json '{"repo":"cadence-ui"}'
```
## 预期输出
- `task add` 退出码为 `0`
- `data.task.status == "ready"`
- `data.task.spec.spec_file == "TMPDIR/task.md"`
- `data.task.spec.check_profile == "cadence_component"`
- `data.task.spec.required_checks` 包含 `lint``test`
- `data.task.spec.allowed_paths` 包含 `packages/ui`
- `data.task.spec.blocked_paths` 包含 `scripts/release-metadata.mjs`
- `data.task.gate.status == "pending"`
- `data.task.gate.required_checks` 与 spec 中的 required checks 一致
## 断言结论
- `task add` 现在会把任务说明和验证策略一起固化到 task spec,而不是只保存 `title`/`summary`
- required checks 一旦存在,task 会立即带上 `pending` gate,而不是等到 worker 完成后才临时推断
## 补充约束
- `spec_file` 对应内容应作为快照随 task 保存,而不是只保存路径引用
- `check_profile` 目前只是任务策略名,后续 profile/adapter 机制会负责把它解释成真正的执行计划