@fitlab-ai/agent-infra 0.9.11 → 0.9.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/README.zh-CN.md +6 -6
- package/dist/bin/internal-cli.js +5 -0
- package/dist/lib/agent-clients/adapters/codex-lifecycle/build-identity.js +71 -10
- package/dist/lib/defaults.json +4 -0
- package/dist/lib/git/workflow.js +43 -1
- package/dist/lib/init.js +1 -0
- package/dist/lib/internal/git-workflow.js +8 -1
- package/dist/lib/internal/platform-pr.js +8 -2
- package/dist/lib/internal/task-delivery.js +59 -0
- package/dist/lib/platform/github-client.js +7 -1
- package/dist/lib/platform/pr-checks.js +8 -5
- package/dist/lib/platform/pr-summary.js +12 -8
- package/dist/lib/platform/pull-requests.js +393 -91
- package/dist/lib/platform/verification-required.js +13 -2
- package/dist/lib/platform/verification-sync.js +9 -4
- package/dist/lib/pr-review/evidence-grading.js +12 -4
- package/dist/lib/sandbox/config.js +5 -0
- package/dist/lib/sandbox/control/lifecycle.js +29 -7
- package/dist/lib/server/process-state.js +2 -2
- package/dist/lib/task/artifact-lifecycle.js +2 -2
- package/dist/lib/task/commit-intent.js +100 -0
- package/dist/lib/task/commit-operation.js +195 -101
- package/dist/lib/task/create.js +33 -7
- package/dist/lib/task/decision-details.js +3 -48
- package/dist/lib/task/delivery-target.js +97 -0
- package/dist/lib/task/delivery.js +153 -0
- package/dist/lib/task/human-override.js +5 -2
- package/dist/lib/task/lifecycle.js +106 -9
- package/dist/lib/task/orchestration.js +55 -62
- package/dist/lib/task/pr-delivery-fact.js +182 -0
- package/dist/lib/task/review-finalization.js +4 -8
- package/dist/lib/task/review-fingerprint.js +8 -0
- package/dist/lib/task/verification-engine.js +48 -24
- package/dist/lib/task/verification-review.js +1 -1
- package/dist/lib/update.js +9 -0
- package/dist/lifecycle-build-manifest.json +3 -3
- package/lib/agent-clients/adapters/codex-lifecycle/build-identity.ts +105 -10
- package/lib/agent-clients/adapters/codex-lifecycle/manifest-files.json +12 -1
- package/lib/defaults.json +4 -0
- package/lib/git/workflow.ts +38 -1
- package/lib/init.ts +3 -0
- package/lib/internal/git-workflow.ts +7 -1
- package/lib/internal/platform-pr.ts +8 -1
- package/lib/internal/task-delivery.ts +53 -0
- package/lib/platform/github-client.ts +8 -1
- package/lib/platform/pr-checks.ts +7 -5
- package/lib/platform/pr-summary.ts +10 -7
- package/lib/platform/pull-requests.ts +425 -87
- package/lib/platform/verification-required.ts +12 -2
- package/lib/platform/verification-sync.ts +9 -4
- package/lib/pr-review/evidence-grading.ts +7 -4
- package/lib/sandbox/config.ts +7 -0
- package/lib/sandbox/control/lifecycle.ts +30 -8
- package/lib/server/process-state.ts +2 -2
- package/lib/task/artifact-lifecycle.ts +2 -2
- package/lib/task/commit-intent.ts +137 -0
- package/lib/task/commit-operation.ts +174 -87
- package/lib/task/create.ts +34 -9
- package/lib/task/decision-details.ts +2 -62
- package/lib/task/delivery-target.ts +130 -0
- package/lib/task/delivery.ts +160 -0
- package/lib/task/human-override.ts +5 -2
- package/lib/task/lifecycle.ts +93 -4
- package/lib/task/orchestration.ts +62 -65
- package/lib/task/pr-delivery-fact.ts +254 -0
- package/lib/task/review-finalization.ts +4 -14
- package/lib/task/review-fingerprint.ts +10 -0
- package/lib/task/verification-engine.ts +45 -28
- package/lib/task/verification-review.ts +2 -0
- package/lib/update.ts +10 -0
- package/package.json +1 -1
- package/templates/.agents/rules/README.en.md +4 -2
- package/templates/.agents/rules/README.zh-CN.md +4 -2
- package/templates/.agents/rules/create-issue.en.md +11 -2
- package/templates/.agents/rules/create-issue.zh-CN.md +24 -2
- package/templates/.agents/rules/issue-pr-commands.en.md +4 -17
- package/templates/.agents/rules/issue-sync.en.md +26 -5
- package/templates/.agents/rules/issue-sync.zh-CN.md +62 -5
- package/templates/.agents/rules/label-milestone-setup.en.md +15 -2
- package/templates/.agents/rules/label-milestone-setup.zh-CN.md +15 -2
- package/templates/.agents/rules/local-artifact-repair.en.md +46 -0
- package/templates/.agents/rules/local-artifact-repair.zh-CN.md +46 -0
- package/templates/.agents/rules/milestone-inference.en.md +12 -2
- package/templates/.agents/rules/milestone-inference.zh-CN.md +25 -3
- package/templates/.agents/rules/pr-sync.en.md +22 -13
- package/templates/.agents/rules/pr-sync.zh-CN.md +22 -1
- package/templates/.agents/rules/release-commands.en.md +42 -3
- package/templates/.agents/rules/release-commands.zh-CN.md +42 -3
- package/templates/.agents/rules/security-alerts.en.md +17 -2
- package/templates/.agents/rules/security-alerts.zh-CN.md +17 -2
- package/templates/.agents/rules/sync-content-generation.en.md +8 -0
- package/templates/.agents/rules/sync-content-generation.zh-CN.md +8 -0
- package/templates/.agents/rules/task-management.en.md +1 -1
- package/templates/.agents/rules/task-management.zh-CN.md +1 -1
- package/templates/.agents/scripts/security-alerts.github.sh +151 -0
- package/templates/.agents/scripts/security-alerts.sh +31 -0
- package/templates/.agents/skills/analyze-task/SKILL.en.md +1 -0
- package/templates/.agents/skills/analyze-task/SKILL.zh-CN.md +1 -0
- package/templates/.agents/skills/close-codescan/SKILL.en.md +2 -2
- package/templates/.agents/skills/close-codescan/SKILL.zh-CN.md +2 -2
- package/templates/.agents/skills/close-dependabot/SKILL.en.md +2 -2
- package/templates/.agents/skills/close-dependabot/SKILL.zh-CN.md +2 -2
- package/templates/.agents/skills/code-task/SKILL.en.md +5 -2
- package/templates/.agents/skills/code-task/SKILL.zh-CN.md +6 -3
- package/templates/.agents/skills/commit/SKILL.en.md +3 -3
- package/templates/.agents/skills/commit/SKILL.zh-CN.md +3 -3
- package/templates/.agents/skills/commit/config/verify.json +1 -1
- package/templates/.agents/skills/commit/reference/commit-orchestration.en.md +3 -3
- package/templates/.agents/skills/commit/reference/commit-orchestration.zh-CN.md +3 -3
- package/templates/.agents/skills/commit/reference/pr-summary-sync.en.md +1 -1
- package/templates/.agents/skills/commit/reference/pr-summary-sync.zh-CN.md +1 -1
- package/templates/.agents/skills/commit/reference/task-status-update.en.md +2 -2
- package/templates/.agents/skills/commit/reference/task-status-update.zh-CN.md +2 -2
- package/templates/.agents/skills/complete-manual-validation/SKILL.en.md +2 -1
- package/templates/.agents/skills/complete-manual-validation/SKILL.zh-CN.md +2 -1
- package/templates/.agents/skills/complete-manual-validation/config/verify.en.json +1 -1
- package/templates/.agents/skills/complete-manual-validation/config/verify.zh-CN.json +1 -1
- package/templates/.agents/skills/complete-manual-validation/reference/summary-update.en.md +1 -1
- package/templates/.agents/skills/complete-manual-validation/reference/summary-update.zh-CN.md +1 -1
- package/templates/.agents/skills/complete-task/SKILL.en.md +10 -10
- package/templates/.agents/skills/complete-task/SKILL.zh-CN.md +10 -10
- package/templates/.agents/skills/complete-task/reference/external-delivery.en.md +2 -2
- package/templates/.agents/skills/complete-task/reference/external-delivery.zh-CN.md +2 -2
- package/templates/.agents/skills/create-pr/SKILL.en.md +4 -4
- package/templates/.agents/skills/create-pr/SKILL.zh-CN.md +4 -4
- package/templates/.agents/skills/create-task/SKILL.en.md +1 -0
- package/templates/.agents/skills/create-task/SKILL.zh-CN.md +1 -0
- package/templates/.agents/skills/import-codescan/SKILL.en.md +1 -1
- package/templates/.agents/skills/import-codescan/SKILL.zh-CN.md +1 -1
- package/templates/.agents/skills/import-dependabot/SKILL.en.md +1 -1
- package/templates/.agents/skills/import-dependabot/SKILL.zh-CN.md +1 -1
- package/templates/.agents/skills/init-labels/SKILL.en.md +9 -10
- package/templates/.agents/skills/init-labels/SKILL.zh-CN.md +9 -10
- package/templates/.agents/skills/init-labels/scripts/init-labels.github.sh +57 -1
- package/templates/.agents/skills/init-labels/scripts/init-labels.sh +27 -1
- package/templates/.agents/skills/init-milestones/SKILL.en.md +3 -5
- package/templates/.agents/skills/init-milestones/SKILL.zh-CN.md +3 -5
- package/templates/.agents/skills/plan-task/SKILL.en.md +1 -0
- package/templates/.agents/skills/plan-task/SKILL.zh-CN.md +1 -0
- package/templates/.agents/skills/review-analysis/SKILL.en.md +4 -3
- package/templates/.agents/skills/review-analysis/SKILL.zh-CN.md +4 -3
- package/templates/.agents/skills/review-analysis/reference/output-templates.en.md +18 -0
- package/templates/.agents/skills/review-analysis/reference/output-templates.zh-CN.md +18 -0
- package/templates/.agents/skills/review-code/SKILL.en.md +7 -6
- package/templates/.agents/skills/review-code/SKILL.zh-CN.md +7 -6
- package/templates/.agents/skills/review-code/reference/output-templates.en.md +19 -1
- package/templates/.agents/skills/review-code/reference/output-templates.zh-CN.md +19 -1
- package/templates/.agents/skills/review-code/reference/report-template.en.md +4 -2
- package/templates/.agents/skills/review-code/reference/report-template.zh-CN.md +4 -2
- package/templates/.agents/skills/review-plan/SKILL.en.md +4 -3
- package/templates/.agents/skills/review-plan/SKILL.zh-CN.md +4 -3
- package/templates/.agents/skills/review-plan/reference/output-templates.en.md +18 -0
- package/templates/.agents/skills/review-plan/reference/output-templates.zh-CN.md +18 -0
- package/templates/.agents/skills/review-pr/SKILL.en.md +1 -0
- package/templates/.agents/skills/review-pr/SKILL.zh-CN.md +1 -0
- package/templates/.agents/skills/review-pr/reference/evidence-grading.en.md +2 -2
- package/templates/.agents/skills/review-pr/reference/evidence-grading.zh-CN.md +2 -2
- package/templates/.agents/skills/run-manual-validation/SKILL.en.md +1 -0
- package/templates/.agents/skills/run-manual-validation/SKILL.zh-CN.md +1 -0
- package/templates/.agents/skills/run-task/SKILL.en.md +1 -1
- package/templates/.agents/skills/run-task/SKILL.zh-CN.md +1 -1
- package/templates/.agents/skills/update-agent-infra/scripts/sync-templates.js +4 -0
- package/templates/.agents/skills/watch-pr/SKILL.en.md +4 -4
- package/templates/.agents/skills/watch-pr/SKILL.zh-CN.md +4 -4
- package/templates/.agents/templates/task.en.md +5 -1
- package/templates/.agents/templates/task.zh-CN.md +5 -1
- package/templates/.agents/workflows/bug-fix.en.yaml +9 -8
- package/templates/.agents/workflows/bug-fix.zh-CN.yaml +9 -8
- package/templates/.agents/workflows/feature-development.en.yaml +9 -8
- package/templates/.agents/workflows/feature-development.zh-CN.yaml +9 -8
- package/templates/.agents/workflows/refactoring.en.yaml +9 -8
- package/templates/.agents/workflows/refactoring.zh-CN.yaml +9 -8
- package/templates/.agents/rules/create-issue.github.en.md +0 -14
- package/templates/.agents/rules/create-issue.github.zh-CN.md +0 -27
- package/templates/.agents/rules/issue-pr-commands.github.en.md +0 -34
- package/templates/.agents/rules/issue-pr-commands.github.zh-CN.md +0 -49
- package/templates/.agents/rules/issue-sync.github.en.md +0 -40
- package/templates/.agents/rules/issue-sync.github.zh-CN.md +0 -76
- package/templates/.agents/rules/label-milestone-setup.github.en.md +0 -60
- package/templates/.agents/rules/label-milestone-setup.github.zh-CN.md +0 -60
- package/templates/.agents/rules/milestone-inference.github.en.md +0 -15
- package/templates/.agents/rules/milestone-inference.github.zh-CN.md +0 -27
- package/templates/.agents/rules/pr-checks-commands.github.en.md +0 -18
- package/templates/.agents/rules/pr-checks-commands.github.zh-CN.md +0 -34
- package/templates/.agents/rules/pr-sync.github.en.md +0 -43
- package/templates/.agents/rules/pr-sync.github.zh-CN.md +0 -69
- package/templates/.agents/rules/release-commands.github.en.md +0 -44
- package/templates/.agents/rules/release-commands.github.zh-CN.md +0 -44
- package/templates/.agents/rules/security-alerts.github.en.md +0 -43
- package/templates/.agents/rules/security-alerts.github.zh-CN.md +0 -43
- /package/templates/.agents/rules/{issue-fields.github.en.md → issue-fields.en.md} +0 -0
- /package/templates/.agents/rules/{issue-fields.github.zh-CN.md → issue-fields.zh-CN.md} +0 -0
|
@@ -20,9 +20,27 @@
|
|
|
20
20
|
- 所选场景必须通过统一 helper 生成 `{next-step-commands}`
|
|
21
21
|
- 计数行固定显示 5 个数字。manual-validation(`{e}`)不影响分支;`人工裁决`(`{h}`)是本阶段 `needs-human-decision` 行数,属于未闭环账本状态,因此 `{h} > 0` 时 `canAdvance=false`,必须按 `.agents/rules/next-step-output.md` 的「人工裁决待办前置块」展开详情,并只输出修订与复审路径。
|
|
22
22
|
|
|
23
|
+
### 场景 R:最终化停止但结果可见
|
|
24
|
+
|
|
25
|
+
当 finalizer 失败,或模型因安全门、无进展、重复诊断或紧急熔断停止时,使用本场景,不调用统一 helper,也不输出跨阶段命令。
|
|
26
|
+
|
|
27
|
+
```text
|
|
28
|
+
任务 {task-id} 审查结果已生成,但生命周期未推进。
|
|
29
|
+
- 审查产物:.agents/workspace/active/{task-id}/{review-artifact}
|
|
30
|
+
- 最后有效 summary/findings:{last-readable-review-result}
|
|
31
|
+
- 本地修复次数:{repairAttempts}
|
|
32
|
+
- 最后诊断:{last-structured-diagnostic}
|
|
33
|
+
- 停止原因:{stop-reason}
|
|
34
|
+
- 完成事件:未发布 | 跨阶段命令:未生成
|
|
35
|
+
|
|
36
|
+
说明:本次仅停止生命周期推进,已有审查结果仍可查看。请先进行人工处理,或重新运行当前审查技能。
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
如果 summary 无法安全解析,`{last-readable-review-result}` 必须改为“摘要不可安全解析”,并保留 artifact 路径和原始结构化诊断;不得推算计数或补写结论。
|
|
40
|
+
|
|
23
41
|
### 场景 A:通过且无问题
|
|
24
42
|
|
|
25
|
-
通过后不得按轮次路由。先比较审查快照树 `T` 与基线 `R` 的树,再读取任务的 `prFlow` / `
|
|
43
|
+
通过后不得按轮次路由。先比较审查快照树 `T` 与基线 `R` 的树,再读取任务的 `prFlow` / verified `pr_delivery_fact`;存在 PR 时调用 `agent-infra-internal platform-checks inspect {task-id}`。只选择以下一个互斥出口:
|
|
26
44
|
|
|
27
45
|
- `T != R^{tree}`:场景 A1(提交)。
|
|
28
46
|
- `T == R^{tree}` 且无 PR:`prFlow=disabled` 用场景 A4(完成),否则用场景 A2(创建 PR)。
|
|
@@ -21,8 +21,10 @@ Use this template when writing `review-code.md` or `review-code-r{N}.md`.
|
|
|
21
21
|
- **Reviewer**: {reviewer-name}
|
|
22
22
|
- **Review Time**: {timestamp}
|
|
23
23
|
- **Scope**: {file-count and major modules}
|
|
24
|
-
- **Review
|
|
25
|
-
- **Reviewed
|
|
24
|
+
- **Review Target Commit**: {target branch SHA M read once from the task-bound remote/base at review start; never overwritten by a later live target}
|
|
25
|
+
- **Reviewed Head**: {local HEAD R captured once for this round; must equal this round's HEAD}
|
|
26
|
+
- **Review Baseline Commit**: {compatibility display of R; must equal Reviewed Head}
|
|
27
|
+
- **Reviewed Diff Base**: {D used for the complete diff/fingerprint; must equal merge-base(R, saved M)}
|
|
26
28
|
- **Reviewed Diff Fingerprint**: {fingerprint field from git-workflow snapshot}
|
|
27
29
|
- **Reviewed Snapshot Tree**: {tree field from git-workflow snapshot}
|
|
28
30
|
- **Overall Verdict**: {Approved / Changes Requested / Rejected} (pick exactly one; combined phrases will fail the verify gate)
|
|
@@ -21,8 +21,10 @@
|
|
|
21
21
|
- **审查者**:{reviewer-name}
|
|
22
22
|
- **审查时间**:{timestamp}
|
|
23
23
|
- **审查范围**:{file-count and major modules}
|
|
24
|
-
-
|
|
25
|
-
-
|
|
24
|
+
- **审查目标提交**:{本轮一次性从任务绑定 remote/base 读取的目标分支 SHA M;不可被后续实时目标覆盖}
|
|
25
|
+
- **审查已检视提交**:{本轮一次性捕获的本地 HEAD R;必须等于本轮 HEAD}
|
|
26
|
+
- **审查基线提交**:{R 的兼容显示字段;必须与审查已检视提交相同}
|
|
27
|
+
- **审查差异基线**:{用于完整 diff/fingerprint 的 D;必须等于 merge-base(R, saved M)}
|
|
26
28
|
- **审查差异指纹**:{git-workflow snapshot 输出的 fingerprint 字段}
|
|
27
29
|
- **审查快照树**:{git-workflow snapshot 输出的 tree 字段}
|
|
28
30
|
- **总体结论**:{通过 / 需要修改 / 拒绝}(恰取一个;禁止写组合短语,否则 verify gate 失败)
|
|
@@ -16,6 +16,7 @@ Review the latest plan artifact and produce `review-plan.md` or `review-plan-r{N
|
|
|
16
16
|
## Boundary / Critical Rules
|
|
17
17
|
|
|
18
18
|
- This skill only reviews plan artifacts and writes a report; it does not modify product code.
|
|
19
|
+
- Before generating task or lifecycle Markdown that will be synchronized to an Issue, read `.agents/rules/sync-content-generation.md` and apply its producer-side constraints; the sync path does not parse or rewrite the body
|
|
19
20
|
- After executing this skill, you **must** immediately update task.md.
|
|
20
21
|
|
|
21
22
|
Version stamp rule: when creating or updating `task.md` frontmatter, read `.agents/rules/version-stamp.md` first and write or refresh `agent_infra_version`.
|
|
@@ -69,7 +70,7 @@ Create `.agents/workspace/active/{task-id}/{review-artifact}`.
|
|
|
69
70
|
|
|
70
71
|
### 6. Update Task Status
|
|
71
72
|
|
|
72
|
-
After the report, submit each new finding with `agent-infra-internal task-ledger {task-id} finding-upsert --stage plan --review-artifact {review-artifact} --ordinal {n} --severity {blocker|major|minor} --evidence {review-artifact}#{anchor}`; submit prior-response dispositions with `finding-review --id {ledger-id} --status {confirmed|closed|open|needs-human-decision} --evidence {evidence}`. Do not scan ids or edit ledger rows. After all ledger writes, call `agent-infra-internal task-review {task-id} finalize-summary --stage plan --artifact {review-artifact} {execution-flag}`
|
|
73
|
+
After the report, submit each new finding with `agent-infra-internal task-ledger {task-id} finding-upsert --stage plan --review-artifact {review-artifact} --ordinal {n} --severity {blocker|major|minor} --evidence {review-artifact}#{anchor}`; submit prior-response dispositions with `finding-review --id {ledger-id} --status {confirmed|closed|open|needs-human-decision} --evidence {evidence}`. Do not scan ids or edit ledger rows. After all ledger writes, make the initial call to `agent-infra-internal task-review {task-id} finalize-summary --stage plan --artifact {review-artifact} {execution-flag}`; after a failure, follow `.agents/rules/local-artifact-repair.md` to decide whether to edit and rerun, and never treat an error type or `changed=false` as automatic authorization.
|
|
73
74
|
|
|
74
75
|
Bind and reuse this structured mapping from that one response:
|
|
75
76
|
|
|
@@ -79,13 +80,13 @@ Bind and reuse this structured mapping from that one response:
|
|
|
79
80
|
{unresolved-minor} = stageStatus.unresolvedFindingCounts.minor
|
|
80
81
|
```
|
|
81
82
|
|
|
82
|
-
The intent atomically finalizes the report summary and returns the same ledger snapshot. Do not call `stage-status`, replace placeholders manually, or rescan the finding list.
|
|
83
|
+
The intent atomically finalizes the report summary and returns the same ledger snapshot. Do not call `stage-status`, replace placeholders manually, or rescan the finding list. After a failure, the model may edit the same controlled artifact and rerun the same intent only when the shared rule's mechanical gates pass; reassess convergence after every failure. The final complete result determines the verdict and counts from that same snapshot: `stageStatus.canAdvance=true` with an Approved conclusion permits cross-stage advancement; `stageStatus.canAdvance=false` still requires `agent-infra-internal task-event {task-id} review-plan.completed --agent {standard-agent-token} --artifact {review-artifact} --verdict {approved|changes-requested|rejected} --blockers {unresolved-blockers} --major {unresolved-major} --minor {unresolved-minor} --manual-validation {n} {execution-flag}`, using `changes-requested` and routing to same-stage revision/review (use `rejected` when the report explicitly rejects). On failure, model stop, lack of progress, or the emergency cap, do not publish a completion event or cross-stage command; use the `repair-stop` scenario in `reference/output-templates.md` to show existing summary/findings, the artifact, actual repair attempts, the last diagnostic, and the stop reason.
|
|
83
84
|
|
|
84
85
|
`manual-validation` is the data source for the `Manual-validation` count folded into review rows in `ai task log`; do not add a parallel manual-verification field.
|
|
85
86
|
|
|
86
87
|
If task.md has a valid `issue_number`, run `agent-infra-internal platform-comment sync {task-id} --kind task --agent {standard-agent-token}`, then `agent-infra-internal platform-comment sync {task-id} --kind artifact --artifact {review-artifact} --agent {standard-agent-token}`.
|
|
87
88
|
|
|
88
|
-
Before writing the summary, the finalization intent checks decision-detail ids;
|
|
89
|
+
Before writing the summary, the finalization intent checks decision-detail ids; any visible duplicate returns a structured failure and preserves the artifact bytes, while the model decides whether a minimal edit is safe under the shared rule. If the safety gates fail, diagnostics repeat, no byte-level progress occurs, or the emergency cap is reached, stop before the completion event; the stop path must still show the existing review result instead of hiding the artifact.
|
|
89
90
|
|
|
90
91
|
### 7. Run Completion Gate
|
|
91
92
|
|
|
@@ -16,6 +16,7 @@ description: >
|
|
|
16
16
|
## 行为边界 / 关键规则
|
|
17
17
|
|
|
18
18
|
- 本技能只审查方案产物并写报告,不修改业务代码
|
|
19
|
+
- 生成会同步到 Issue 的任务或生命周期 Markdown 前,先读取 `.agents/rules/sync-content-generation.md` 并遵循其中的生成端约束;同步端不解析或改写正文
|
|
19
20
|
- 执行本技能后,你**必须**立即更新 task.md
|
|
20
21
|
|
|
21
22
|
版本戳规则:创建或更新 `task.md` frontmatter 时,先读取 `.agents/rules/version-stamp.md`,并写入或刷新 `agent_infra_version`。
|
|
@@ -72,7 +73,7 @@ agent-infra-internal task-snapshot {task-id} --format text
|
|
|
72
73
|
|
|
73
74
|
### 6. 更新任务状态
|
|
74
75
|
|
|
75
|
-
报告完成后,新 finding 逐条调用 `agent-infra-internal task-ledger {task-id} finding-upsert --stage plan --review-artifact {review-artifact} --ordinal {n} --severity {blocker|major|minor} --evidence {review-artifact}#{anchor}`;复核上一轮响应时调用 `finding-review --id {ledger-id} --status {confirmed|closed|open|needs-human-decision} --evidence {相称证据}
|
|
76
|
+
报告完成后,新 finding 逐条调用 `agent-infra-internal task-ledger {task-id} finding-upsert --stage plan --review-artifact {review-artifact} --ordinal {n} --severity {blocker|major|minor} --evidence {review-artifact}#{anchor}`;复核上一轮响应时调用 `finding-review --id {ledger-id} --status {confirmed|closed|open|needs-human-decision} --evidence {相称证据}`。不得扫描编号或手写账本行。全部账本写入完成后首次调用 `agent-infra-internal task-review {task-id} finalize-summary --stage plan --artifact {review-artifact} {execution-flag}`;失败后是否继续编辑并重跑,必须遵循 `.agents/rules/local-artifact-repair.md`,不能把失败类型或 `changed=false` 当作自动授权。
|
|
76
77
|
|
|
77
78
|
从该次返回值绑定并复用以下结构化映射:
|
|
78
79
|
|
|
@@ -82,13 +83,13 @@ agent-infra-internal task-snapshot {task-id} --format text
|
|
|
82
83
|
{unresolved-minor} = stageStatus.unresolvedFindingCounts.minor
|
|
83
84
|
```
|
|
84
85
|
|
|
85
|
-
该 intent 原子最终化报告摘要并返回同一次账本快照;不得再调用 `stage-status
|
|
86
|
+
该 intent 原子最终化报告摘要并返回同一次账本快照;不得再调用 `stage-status`、手工替换占位符或扫描问题清单。失败后,模型只能在共享规则的机械安全门通过时修改同一个受控 artifact,并完整重跑相同 intent;每次失败都重新判断是否收敛。最终一次完整成功返回决定同一快照的 verdict 和计数:`stageStatus.canAdvance=true` 且结论为 Approved 时允许跨阶段推进;`stageStatus.canAdvance=false` 时仍须执行 `agent-infra-internal task-event {task-id} review-plan.completed --agent {standard-agent-token} --artifact {review-artifact} --verdict {approved|changes-requested|rejected} --blockers {unresolved-blockers} --major {unresolved-major} --minor {unresolved-minor} --manual-validation {n} {execution-flag}`,使用 `changes-requested` 并路由到同阶段修订/复审(报告明确拒绝时使用 `rejected`)。失败、模型停止、无进展或紧急熔断时,不发布完成事件或跨阶段命令,但必须按 `reference/output-templates.md` 的 `repair-stop` 场景展示已有 summary/findings、artifact、实际修复次数、最后诊断和停止原因。
|
|
86
87
|
|
|
87
88
|
`manual-validation` 是 `ai task log` 中 review 行「人工校验点」(EN `Manual-validation`)计数的数据源;不要新增并行人工验证字段。
|
|
88
89
|
|
|
89
90
|
如果 task.md 中存在有效的 `issue_number`,调用 `agent-infra-internal platform-comment sync {task-id} --kind task --agent {standard-agent-token}`,再调用 `agent-infra-internal platform-comment sync {task-id} --kind artifact --artifact {review-artifact} --agent {standard-agent-token}`;失败按 `.agents/rules/issue-sync.md` 记录 warning。
|
|
90
91
|
|
|
91
|
-
最终化 intent 会在写入摘要前检查详情块 ID
|
|
92
|
+
最终化 intent 会在写入摘要前检查详情块 ID;任何可见重复都返回结构化失败并保持 artifact 字节不变,由模型按共享规则判断是否进行最小编辑。无法通过安全门、诊断重复、没有实际字节变化或达到紧急熔断时,停止在完成事件之前;停止路径仍必须展示已有审查结果,不得吞掉 artifact 内容。
|
|
92
93
|
|
|
93
94
|
### 7. 完成校验
|
|
94
95
|
|
|
@@ -18,6 +18,24 @@ Rules:
|
|
|
18
18
|
- The selected scenario must generate `{next-step-commands}` through the shared helper
|
|
19
19
|
- The count line shows 4 numbers. `Human-decision` (`{h}`) counts this stage's `needs-human-decision` rows; because those rows are unresolved, `{h} > 0` means `canAdvance=false`. Expand the "Pending human-decision pre-block" from `.agents/rules/next-step-output.md` and show revision and re-review paths only.
|
|
20
20
|
|
|
21
|
+
### Scenario R: Finalization stopped with results visible
|
|
22
|
+
|
|
23
|
+
When the finalizer fails, or the model stops because of a safety gate, lack of progress, repeated diagnostics, or the emergency cap, use this scenario. Do not call the shared helper or output cross-stage commands.
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
Task {task-id} review results were generated, but lifecycle advancement stopped.
|
|
27
|
+
- Review artifact: .agents/workspace/active/{task-id}/{review-artifact}
|
|
28
|
+
- Last valid summary/findings: {last-readable-review-result}
|
|
29
|
+
- Local repair attempts: {repairAttempts}
|
|
30
|
+
- Last diagnostic: {last-structured-diagnostic}
|
|
31
|
+
- Stop reason: {stop-reason}
|
|
32
|
+
- Completion event: not published | Cross-stage commands: not generated
|
|
33
|
+
|
|
34
|
+
Note: only lifecycle advancement stopped; the existing review result remains available. Handle it manually or rerun the current review skill.
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
If the summary cannot be parsed safely, set `{last-readable-review-result}` to "summary could not be parsed safely" and retain the artifact path and raw structured diagnostic; do not infer counts or add a conclusion.
|
|
38
|
+
|
|
21
39
|
### Scenario A: Approved with no findings
|
|
22
40
|
|
|
23
41
|
Populate `{next-step-commands}` for this scenario by running `agent-infra-internal agent-client next-steps --skill code-task --task-ref {task-ref}`.
|
|
@@ -18,6 +18,24 @@
|
|
|
18
18
|
- 所选场景必须通过统一 helper 生成 `{next-step-commands}`
|
|
19
19
|
- 计数行固定显示 4 个数字。`人工裁决`(`{h}`)是本阶段 `needs-human-decision` 行数;它属于未闭环账本状态,因此 `{h} > 0` 时 `canAdvance=false`,必须按 `.agents/rules/next-step-output.md` 的「人工裁决待办前置块」展开详情,并只输出修订与复审路径。
|
|
20
20
|
|
|
21
|
+
### 场景 R:最终化停止但结果可见
|
|
22
|
+
|
|
23
|
+
当 finalizer 失败,或模型因安全门、无进展、重复诊断或紧急熔断停止时,使用本场景,不调用统一 helper,也不输出跨阶段命令。
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
任务 {task-id} 审查结果已生成,但生命周期未推进。
|
|
27
|
+
- 审查产物:.agents/workspace/active/{task-id}/{review-artifact}
|
|
28
|
+
- 最后有效 summary/findings:{last-readable-review-result}
|
|
29
|
+
- 本地修复次数:{repairAttempts}
|
|
30
|
+
- 最后诊断:{last-structured-diagnostic}
|
|
31
|
+
- 停止原因:{stop-reason}
|
|
32
|
+
- 完成事件:未发布 | 跨阶段命令:未生成
|
|
33
|
+
|
|
34
|
+
说明:本次仅停止生命周期推进,已有审查结果仍可查看。请先进行人工处理,或重新运行当前审查技能。
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
如果 summary 无法安全解析,`{last-readable-review-result}` 必须改为“摘要不可安全解析”,并保留 artifact 路径和原始结构化诊断;不得推算计数或补写结论。
|
|
38
|
+
|
|
21
39
|
### 场景 A:通过且无问题
|
|
22
40
|
|
|
23
41
|
使用 `agent-infra-internal agent-client next-steps --skill code-task --task-ref {task-ref}` 生成本场景的 `{next-step-commands}`。
|
|
@@ -16,6 +16,7 @@ Based on the target PR's lifecycle-evidence completeness and change risk, select
|
|
|
16
16
|
- `pr-review*` is an independent artifact family: it does not join the analysis/plan/code stage chain and never changes `current_step`
|
|
17
17
|
- Only a formal PR Review (head SHA, conclusion, findings, receipt, Issue artifact link) is published on the PR; no second full process copy goes to a regular PR comment
|
|
18
18
|
- The full process copy and the reversible `task.md` mirror are synced only to the linked Issue; `restore-task` keeps its Issue-only contract
|
|
19
|
+
- Before generating artifact Markdown that will be synced to an Issue, read `.agents/rules/sync-content-generation.md` and follow its generator-side constraints; Issue sync remains transparent and does not parse or rewrite the body
|
|
19
20
|
- Never backfill or fabricate `analysis`/`plan`/`code` lifecycle history for an external PR
|
|
20
21
|
- The head SHA is recorded only in `pr-review*` and the formal PR Review; on head drift you must start a new round and never reuse an old conclusion
|
|
21
22
|
- Review depth is driven by evidence completeness and change risk, never by the submitter's identity
|
|
@@ -16,6 +16,7 @@ description: >
|
|
|
16
16
|
- `pr-review*` 是独立 artifact family:不接入 analysis/plan/code 阶段依赖链,不修改 `current_step`
|
|
17
17
|
- PR 上只发布正式 PR Review(head SHA、结论、finding、receipt、Issue artifact 链接),不发第二份完整过程原文到 PR 普通评论
|
|
18
18
|
- 完整过程原文与 `task.md` 的可逆镜像只在关联 Issue 上同步;`restore-task` 保持 Issue-only 契约
|
|
19
|
+
- 生成会同步到 Issue 的 artifact Markdown 前,先读取 `.agents/rules/sync-content-generation.md` 并遵循其中的生成端约束;Issue 同步保持透明,不解析或改写正文
|
|
19
20
|
- 不得为外部 PR 倒填或伪造已发生的 `analysis`/`plan`/`code` 生命周期历史
|
|
20
21
|
- head SHA 唯一记录于 `pr-review*` 与正式 PR Review;head 漂移必须进入新轮次,不得沿用旧结论
|
|
21
22
|
- 审查深度由证据完整度和变更风险决定,不由提交者身份决定
|
|
@@ -17,7 +17,7 @@ Evidence scenario classification (S1/S2/S3) → freshness/alignment → risk gra
|
|
|
17
17
|
|
|
18
18
|
- Exactly one hit → `unique`; multiple without a unique winner → `ambiguous` (candidate list); zero hits → `none`.
|
|
19
19
|
- Ambiguous hosts fail closed and never enter evidence classification. `pr-review-grade resolve-host --pr <N>` returns a typed `HostResolution`, and `decide` explicitly rejects `ambiguous`.
|
|
20
|
-
- `Closes/Fixes #N` in the PR body (case-insensitive, comma/space separated, lists supported) is parsed by `extractClosingIssueNumbers`; a local `active/*/task.md` `
|
|
20
|
+
- `Closes/Fixes #N` in the PR body (case-insensitive, comma/space separated, lists supported) is parsed by `extractClosingIssueNumbers`; a local `active/*/task.md` verified `pr_delivery_fact.identity.number` hit takes priority over the `issue_number` reverse lookup, and a task hit via both paths deduplicates to a single candidate.
|
|
21
21
|
|
|
22
22
|
## Evidence Scenario Classification (S1 → S2 → S3)
|
|
23
23
|
|
|
@@ -33,7 +33,7 @@ Evidence scenario classification (S1/S2/S3) → freshness/alignment → risk gra
|
|
|
33
33
|
## Freshness and Alignment
|
|
34
34
|
|
|
35
35
|
- Freshness benchmark = the reviewed head SHA recorded by the latest `pr-review*`, compared character-for-character with the current head: match → `fresh`, otherwise → `stale`.
|
|
36
|
-
- Alignment = freshness is `fresh` and the `issue_number` / `
|
|
36
|
+
- Alignment = freshness is `fresh` and the `issue_number` / verified `pr_delivery_fact.identity.number` match the resolution result.
|
|
37
37
|
- No prior `pr-review*` → `n/a` / `n/a` (first-review special case).
|
|
38
38
|
|
|
39
39
|
## Risk Grading (pure evidence)
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
- 唯一命中 → `unique`;多个且无法唯一 → `ambiguous`(候选列表);零命中 → `none`。
|
|
19
19
|
- 多宿主歧义即 fail closed:不进入证据分类;由 `pr-review-grade resolve-host --pr <N>` 返回 typed `HostResolution`,`decide` 对 `ambiguous` 显式拒绝。
|
|
20
|
-
- PR body 的 `Closes/Fixes #N`(大小写不敏感、逗号/空格分隔、支持列表)经 `extractClosingIssueNumbers` 解析;本地 `active/*/task.md` 的 `
|
|
20
|
+
- PR body 的 `Closes/Fixes #N`(大小写不敏感、逗号/空格分隔、支持列表)经 `extractClosingIssueNumbers` 解析;本地 `active/*/task.md` 的 verified `pr_delivery_fact.identity.number` 命中优先于 `issue_number` 反查,同一任务经两条路径命中按单候选去重。
|
|
21
21
|
|
|
22
22
|
## 证据场景分类(S1 → S2 → S3)
|
|
23
23
|
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
## 新鲜度与对齐
|
|
34
34
|
|
|
35
35
|
- 新鲜度基准 = 上一轮 `pr-review*` 记录的被审 head SHA,与当前 head 逐字符比对:一致 → `fresh`,否则 → `stale`。
|
|
36
|
-
- 对齐 = freshness 为 fresh 且 `issue_number` / `
|
|
36
|
+
- 对齐 = freshness 为 fresh 且 `issue_number` / verified `pr_delivery_fact.identity.number` 与解析结果一致。
|
|
37
37
|
- 无先前 `pr-review*` → `n/a` / `n/a`(首轮特例)。
|
|
38
38
|
|
|
39
39
|
## 风险分级(纯证据口径)
|
|
@@ -18,6 +18,7 @@ The entry point may omit the task ref; explicit task scope accepts only `--task
|
|
|
18
18
|
- `complete-manual-validation` remains the maintainer's final registration after coverage is judged sufficient.
|
|
19
19
|
- Never manipulate temporary worktrees, leases, or containers directly; only call `agent-infra-internal task-validate`.
|
|
20
20
|
- Never record tokens, environment variables, full argv, absolute user paths, or raw transcripts in the artifact.
|
|
21
|
+
- Before generating a validation artifact Markdown file that will be synced to an Issue, read `.agents/rules/sync-content-generation.md` and follow its generator-side constraints; Issue sync remains transparent and does not parse or rewrite the body.
|
|
21
22
|
|
|
22
23
|
## Step 0: State Check (pre-execution hard gate)
|
|
23
24
|
|
|
@@ -18,6 +18,7 @@ description: >
|
|
|
18
18
|
- `complete-manual-validation` 仍是维护者确认覆盖充分后的最终登记入口。
|
|
19
19
|
- 禁止直接操作临时 worktree、lease 或 container;只调用 `agent-infra-internal task-validate`。
|
|
20
20
|
- 产物不得记录 token、环境变量、完整 argv、绝对用户路径或原始 transcript。
|
|
21
|
+
- 生成会同步到 Issue 的验证 artifact Markdown 前,先读取 `.agents/rules/sync-content-generation.md` 并遵循其中的生成端约束;Issue 同步保持透明,不解析或改写正文。
|
|
21
22
|
|
|
22
23
|
## 第 0 步:状态核对(执行前硬约束)
|
|
23
24
|
|
|
@@ -18,7 +18,7 @@ The orchestrator delegates only and never executes a stage skill itself. First r
|
|
|
18
18
|
3. Run `task-orchestration {task-id} begin-or-resume --client {client}` with the complete explicit policy. With no explicit policy, core reads that client's configured policy; existing runs use persisted policy. Disk state outside the complete current structure fails closed without rewriting; finish or clear active runs before upgrading. Stop on paused/completed results.
|
|
19
19
|
4. Run `route`. On `completed`, run `agent-infra-internal task-verify {task-id} run-task.completed --format text` and stop. Only a `running` result with non-null `next` supplies action, role, round, artifact, requested model, and requested effort.
|
|
20
20
|
5. Codex runs `codex-lifecycle capability-arm --task-id {task-id}` once. The current loop's real PostToolUse must attest that ordinary tool response. Pass its marker token, the exact routed model, and the exact routed reasoning effort to `prepare --client {client} --requested-model {requestedModel} --requested-reasoning-effort {requestedReasoningEffort} --capability-token {token}`. Core first validates the exact routed model/effort, capability provenance, and controller binding, then captures a read-only snapshot, builds an in-memory prepared receipt, atomically consumes the token, and saves the prepared state with the capability session, turn, and tool-use origin. Activation then verifies that spawn belongs to the same session and turn and uses a distinct tool-use. Other clients use the same prepare without a token. Failure creates no baseline, receipt, or child.
|
|
21
|
-
6. After prepare, run `task-orchestration <task-ref> dispatch` immediately before calling the fresh native child, then use route's exact model/effort and only the short task ref, skill, `--orchestrated`, and stage identity. The trusted hook-spawn first-observation time must fall between dispatch and the deadline. Its first provenance-sensitive command must be `await-activation --stage ... --round ... --artifact ... --role ...`; before `running`, it must not snapshot, emit stage-started, write business files
|
|
21
|
+
6. After prepare, run `task-orchestration <task-ref> dispatch` immediately before calling the fresh native child, then use route's exact model/effort and only the short task ref, skill, `--orchestrated`, and stage identity. The trusted hook-spawn first-observation time must fall between dispatch and the deadline. Its first provenance-sensitive command must be `await-activation --stage ... --round ... --artifact ... --role ...`; before `running`, it must not snapshot, emit stage-started, or write business files. The code stage may create a local checkpoint only through code-task's durable intent core; it must not delegate a separate commit stage or push. Only explicit `recover-prepared` may clear an expired orphan when the task fingerprint is exact and no matching unconsumed active lifecycle evidence remains.
|
|
22
22
|
7. Codex uses SubagentStart/Stop and App Server actual evidence to activate, consume, and seal one receipt; trusted parent fallback must produce the same complete provenance. Timed-out waits do nothing. Advance only a sealed receipt and repeat step 4 only while running.
|
|
23
23
|
8. Create a fresh child each round and never follow up with an old reviewer. Each requested/actual mismatch needs its own host fallback reason. Protocol, capability, receipt hook/evidence binding, source, controller, identity, ledger, or fingerprint failure pauses and fails closed; cross-root package/build/contract or hook/profile content drift is delivered as a warning instead of blocking natural evolution.
|
|
24
24
|
9. On pause or completion, run the matching typed verification and report the structured endpoint.
|
|
@@ -18,7 +18,7 @@ description: >
|
|
|
18
18
|
3. 调用 `agent-infra-internal task-orchestration {task-id} begin-or-resume --client {client}` 并转发完整显式策略。完全没有显式策略时由核心读取当前 client 的 `agentClients[].orchestration`;existing run 使用持久化策略。磁盘状态不符合当前完整结构时核心失败关闭且不改写;升级前必须完成或清空 active run。仅当核心返回 `ORCHESTRATION_MODEL_POLICY_REQUIRED` 时,先用 `agent-client model-selection` 展示 complete/partial/interactive-only 来源,再一次收集完整策略;未回答则不创建 run。若为 paused/completed,按结构化结果停止。
|
|
19
19
|
4. 调用 `route` 并读取结构化结果。若返回 `completed`,立即运行 `agent-infra-internal task-verify {task-id} run-task.completed --format text` 并停止;仅当返回 `running` 且 `next` 非空时读取唯一 action、role、round、artifact、`requestedModel` 和 `requestedReasoningEffort`,不得自行推断。
|
|
20
20
|
5. Codex 先调用一次 `agent-infra-internal codex-lifecycle capability-arm --task-id {task-id}`。该普通工具调用必须由当前 loop 的真实 PostToolUse 回写 attestation;把 route 返回的精确 model、effort 和 marker 中 token 一并传给 `prepare --client {client} --requested-model {requestedModel} --requested-reasoning-effort {requestedReasoningEffort} --capability-token {token}`。核心先校验精确的 model/effort、capability provenance 与 controller binding,再只读捕获快照、构造内存中的 prepared receipt,最后原子消费 token 并保存 prepared 状态,同时持久化 capability 的 session、turn、tool-use 来源。activation 再校验 spawn 与该来源属于同一 session/turn,且 spawn 使用独立的 tool-use。其他客户端直接调用同一 prepare(无 token)。任一失败不得创建 baseline、receipt 或 child。
|
|
21
|
-
6. prepare 成功后,在调用 fresh 原生子 Agent 的紧邻前一步执行 `task-orchestration <task-ref> dispatch`,再显式覆盖 route 返回的 model/effort;只传短任务引用、skill 名、`--orchestrated` 与 stage/round/artifact/role。可信 hook-spawn 首次观察时间必须位于 dispatch 与 deadline 之间。child 的第一条 provenance-sensitive 命令必须是 `await-activation --stage ... --round ... --artifact ... --role ...`;返回 running 前禁止 snapshot、阶段 started
|
|
21
|
+
6. prepare 成功后,在调用 fresh 原生子 Agent 的紧邻前一步执行 `task-orchestration <task-ref> dispatch`,再显式覆盖 route 返回的 model/effort;只传短任务引用、skill 名、`--orchestrated` 与 stage/round/artifact/role。可信 hook-spawn 首次观察时间必须位于 dispatch 与 deadline 之间。child 的第一条 provenance-sensitive 命令必须是 `await-activation --stage ... --round ... --artifact ... --role ...`;返回 running 前禁止 snapshot、阶段 started 或业务写入;代码阶段的本地 checkpoint 只能通过 code-task 的持久化 intent 核心完成,禁止单独委派 commit 阶段或推送。超时由核心暂停;崩溃遗留 prepared receipt 只能在 exact workspace fingerprint、无匹配的未消费 active lifecycle evidence 且 deadline 已过时显式 `recover-prepared`。
|
|
22
22
|
7. Codex 用 SubagentStart/Stop 与 App Server actual evidence 激活、消费并封存唯一 receipt;受信 parent fallback 仍必须形成相同的完整 provenance。timed-out wait 无动作;只有 empty turns 或协议 `inProgress` 可等待,malformed、身份/传输错误或异常 terminal 均暂停。子 Agent 返回后只对 sealed receipt 调用 `advance`;只有 `running` 才重复步骤 4。
|
|
23
23
|
8. 每轮创建新 child;禁止 follow-up 复用 reviewer。actual model/effort 与 requested 不同时必须有各自的宿主降级理由。protocol、capability、receipt 内 hook/evidence binding、source、controller、身份、账本或 fingerprint 异常都调用 `pause` 并失败关闭;跨根 package/build/contract 或 hook/profile 内容漂移按 warning 交付,不把自然演进差异当成硬失败。
|
|
24
24
|
9. 完成或暂停后运行对应 typed verification,并把结构化 run 摘要、暂停原因、commit 终点或 clean completion evidence 告知用户。
|
|
@@ -39,8 +39,8 @@ After prerequisites pass and before this round's first artifact action, append a
|
|
|
39
39
|
|
|
40
40
|
Resolve the target PR number `{pr#}` and an optional `{task-id}` via these deterministic branches:
|
|
41
41
|
|
|
42
|
-
- Scenario A (argument omitted): reverse-lookup the active task from the current branch, then read its `
|
|
43
|
-
- Scenario B (omitted task ref or `--task/-t`, **task-anchored primary path**): resolve the full `{task-id}` via "Task Context Resolution" and read `.agents/workspace/active/{task-id}/task.md` for `
|
|
42
|
+
- Scenario A (argument omitted): reverse-lookup the active task from the current branch, then read its verified `pr_delivery_fact.identity.number`.
|
|
43
|
+
- Scenario B (omitted task ref or `--task/-t`, **task-anchored primary path**): resolve the full `{task-id}` via "Task Context Resolution" and read `.agents/workspace/active/{task-id}/task.md` for verified `pr_delivery_fact.identity.number` as `{pr#}`; if the fact is unbound, follow "Error Handling" to prompt running `create-pr` first, then stop.
|
|
44
44
|
- Scenario C (`--pr <number>` or a PR URL): use that PR number directly as `{pr#}`; then determine `{task-id}` via "Reverse-lookup task".
|
|
45
45
|
- Reverse-lookup task (scenarios A / C): use task context/query capabilities to find the unique active task bound to `{pr#}`. If none exists, stop and request binding first; the typed checks intent does not create a second taskless state machine.
|
|
46
46
|
|
|
@@ -74,7 +74,7 @@ Update `.agents/workspace/active/{task-id}/task.md`:
|
|
|
74
74
|
- `assigned_to`: {current agent}
|
|
75
75
|
- `updated_at`: {current time}
|
|
76
76
|
- `agent_infra_version`: per `.agents/rules/version-stamp.md`
|
|
77
|
-
- **Do not change** `
|
|
77
|
+
- **Do not change** `pr_delivery_fact` or `current_step`
|
|
78
78
|
- **Append** to `## Activity Log` (do not overwrite prior entries; `{N}` = number of existing Watch PR entries for this task + 1):
|
|
79
79
|
```
|
|
80
80
|
- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Watch PR (Round {N})** by {agent} — {success: PR ready, repair commits: {k} [{SHA summary}] / blocked: blocked: {summary}}
|
|
@@ -148,6 +148,6 @@ Stop immediately after the checklist. The green exit waits for the user to run `
|
|
|
148
148
|
|
|
149
149
|
## Error Handling
|
|
150
150
|
|
|
151
|
-
- Cannot locate a PR (task short id resolves but task.md has no `
|
|
151
|
+
- Cannot locate a PR (task short id resolves but task.md has no verified bound `pr_delivery_fact`, and no `--pr` was passed and the current branch has no PR): prompt "Run `create-pr` first, or specify the PR with `--pr <number>`", then stop.
|
|
152
152
|
- Platform CLI not authenticated or API unavailable: prompt that manual intervention is needed, then stop.
|
|
153
153
|
- Short-id resolution failure: pass through `task-short-id.js`'s exit code and error message; do not rewrite it.
|
|
@@ -39,8 +39,8 @@ description: >
|
|
|
39
39
|
|
|
40
40
|
按以下确定性分支解析出目标 PR 号 `{pr#}` 与可选 `{task-id}`:
|
|
41
41
|
|
|
42
|
-
- 场景 A(省略入参):从当前分支反查 active task;定位后读取其 `
|
|
43
|
-
- 场景 B(省略 task ref 或 `--task/-t`,**任务锚定主路径**):按「任务上下文解析」取得完整 `{task-id}`。读 `.agents/workspace/active/{task-id}/task.md` 取 `
|
|
42
|
+
- 场景 A(省略入参):从当前分支反查 active task;定位后读取其 verified `pr_delivery_fact.identity.number`。
|
|
43
|
+
- 场景 B(省略 task ref 或 `--task/-t`,**任务锚定主路径**):按「任务上下文解析」取得完整 `{task-id}`。读 `.agents/workspace/active/{task-id}/task.md` 取 verified `pr_delivery_fact.identity.number` 作为 `{pr#}`;fact 未绑定时按「错误处理」提示先 `create-pr`,停止。
|
|
44
44
|
- 场景 C(`--pr <number>` 或 PR URL):直接取该 PR 号为 `{pr#}`;随后按「反查任务」确定 `{task-id}`。
|
|
45
45
|
- 反查任务(场景 A / C):通过任务上下文/任务查询取得与 `{pr#}` 唯一绑定的 active task。未命中时停止并提示先绑定 PR;typed checks intent 不建立第二套无任务状态机。
|
|
46
46
|
|
|
@@ -74,7 +74,7 @@ date "+%Y-%m-%d %H:%M:%S%z" | sed 's/\([+-][0-9][0-9]\)\([0-9][0-9]\)$/\1:\2/'
|
|
|
74
74
|
- `assigned_to`:{当前代理}
|
|
75
75
|
- `updated_at`:{当前时间}
|
|
76
76
|
- `agent_infra_version`:按 `.agents/rules/version-stamp.md` 取值
|
|
77
|
-
- **不改** `
|
|
77
|
+
- **不改** `pr_delivery_fact` 与 `current_step`
|
|
78
78
|
- **追加**到 `## 活动日志`(不要覆盖之前的记录;`{N}` = 本任务已有 Watch PR 条目数 + 1):
|
|
79
79
|
```
|
|
80
80
|
- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Watch PR (Round {N})** by {agent} — {成功:PR ready, repair commits: {k} [{sha 摘要}] / 阻塞:blocked: {简述}}
|
|
@@ -148,6 +148,6 @@ agent-infra-internal task-verify {task-id} watch-pr.completed --format text
|
|
|
148
148
|
|
|
149
149
|
## 错误处理
|
|
150
150
|
|
|
151
|
-
- 无法定位 PR(任务短号命中但 task.md 无 `
|
|
151
|
+
- 无法定位 PR(任务短号命中但 task.md 无 verified bound `pr_delivery_fact`,且未传 `--pr`、当前分支也无 PR):提示「请先运行 `create-pr`,或用 `--pr <number>` 指定 PR」,停止。
|
|
152
152
|
- 平台 CLI 未认证或 API 不可用:提示需人工介入,停止。
|
|
153
153
|
- 短号解析失败:透传 `task-short-id.js` 的退出码与错误信息,不重写。
|
|
@@ -13,7 +13,11 @@ start_date: # Optional Issue field for Feature: YYYY-MM-DD
|
|
|
13
13
|
target_date: # Optional Issue field for Feature: YYYY-MM-DD
|
|
14
14
|
current_step: requirement-analysis # requirement-analysis | requirement-analysis-review | technical-design | technical-design-review | code | code-review | completed
|
|
15
15
|
assigned_to: # claude | codex | antigravity | opencode | human
|
|
16
|
-
|
|
16
|
+
pr_delivery_fact: '{"version":1,"state":"unbound","reason":"initial"}'
|
|
17
|
+
delivery_remote: origin # Git remote used to deliver the task branch
|
|
18
|
+
delivery_base_ref: main # Target branch for the task PR
|
|
19
|
+
checkpoint_commit: # Most recent local checkpoint commit
|
|
20
|
+
delivery_remote_head: # Most recent successfully delivered task branch SHA
|
|
17
21
|
---
|
|
18
22
|
|
|
19
23
|
# Task: [Title]
|
|
@@ -13,7 +13,11 @@ start_date: # Feature 可选 Issue 字段:YYYY-MM-DD
|
|
|
13
13
|
target_date: # Feature 可选 Issue 字段:YYYY-MM-DD
|
|
14
14
|
current_step: requirement-analysis # requirement-analysis | requirement-analysis-review | technical-design | technical-design-review | code | code-review | completed
|
|
15
15
|
assigned_to: # claude | codex | antigravity | opencode | human
|
|
16
|
-
|
|
16
|
+
pr_delivery_fact: '{"version":1,"state":"unbound","reason":"initial"}'
|
|
17
|
+
delivery_remote: origin # 任务分支交付使用的 Git remote
|
|
18
|
+
delivery_base_ref: main # 任务 PR 的目标分支
|
|
19
|
+
checkpoint_commit: # 最近一次本地 checkpoint commit
|
|
20
|
+
delivery_remote_head: # 最近一次成功交付到 remote 的任务分支 SHA
|
|
17
21
|
---
|
|
18
22
|
|
|
19
23
|
# 任务:[标题]
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
#
|
|
4
4
|
# Note: whether a step's `pr_tasks` list counts toward workflow progress follows the "PR path" rule:
|
|
5
5
|
# `.agents/.airc.json:prFlow="required"` always counts; `prFlow="disabled"` never counts;
|
|
6
|
-
# when the field is absent, exclude only if task.md's `
|
|
6
|
+
# when the field is absent, exclude only if task.md's `pr_delivery_fact.state=skipped`, otherwise count
|
|
7
7
|
# (see .agents/skills/complete-task/SKILL.md).
|
|
8
8
|
|
|
9
9
|
name: bug-fix
|
|
@@ -126,6 +126,7 @@ steps:
|
|
|
126
126
|
- Add a regression test that fails without the fix
|
|
127
127
|
- Fix findings from the latest code-review artifact when in fix mode
|
|
128
128
|
- Verify existing tests still pass
|
|
129
|
+
- Create a local checkpoint commit after tests pass
|
|
129
130
|
- Ensure code follows project conventions
|
|
130
131
|
inputs:
|
|
131
132
|
- Approved fix plan
|
|
@@ -177,21 +178,21 @@ steps:
|
|
|
177
178
|
- Code review report
|
|
178
179
|
- Findings list, if any
|
|
179
180
|
|
|
180
|
-
- name:
|
|
181
|
-
description:
|
|
181
|
+
- name: delivery
|
|
182
|
+
description: Deliver the approved checkpoint as a pull request, then complete the task after merge and final gates.
|
|
182
183
|
recommended_agents:
|
|
183
184
|
- claude
|
|
184
185
|
- human
|
|
185
186
|
tasks:
|
|
186
|
-
-
|
|
187
|
-
-
|
|
188
|
-
- Move the task to completed
|
|
187
|
+
- Verify the current HEAD still equals the approved checkpoint
|
|
188
|
+
- Confirm the task-bound delivery remote and base branch remain valid
|
|
189
|
+
- Move the task to completed after PR merge and final gates
|
|
189
190
|
pr_tasks:
|
|
190
191
|
- Create a pull request with a defect-fix description
|
|
191
192
|
- Link the PR to the defect report Issue
|
|
192
193
|
inputs:
|
|
193
|
-
-
|
|
194
|
+
- Approved local checkpoint
|
|
194
195
|
- Task workspace
|
|
195
196
|
outputs:
|
|
196
|
-
- Completed task workspace under .agents/workspace/completed/
|
|
197
197
|
- Pull request (only on the PR path)
|
|
198
|
+
- Completed task workspace under .agents/workspace/completed/ after merge and final gates
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
#
|
|
4
4
|
# 注:步骤中的 `pr_tasks` 列表按「走 PR 路径」判定是否计入工作流进度:
|
|
5
5
|
# `.agents/.airc.json:prFlow="required"` 始终计入;`prFlow="disabled"` 不计入;
|
|
6
|
-
# 字段缺省时仅当 task.md 的 `
|
|
6
|
+
# 字段缺省时仅当 task.md 的 `pr_delivery_fact.state=skipped` 排除,否则计入(详见 .agents/skills/complete-task/SKILL.md)。
|
|
7
7
|
|
|
8
8
|
name: bug-fix
|
|
9
9
|
description: 诊断和修复缺陷的工作流。
|
|
@@ -125,6 +125,7 @@ steps:
|
|
|
125
125
|
- 添加在没有修复时会失败的回归测试
|
|
126
126
|
- 修复最新 code-review 产物中要求处理的问题(如处于修复模式)
|
|
127
127
|
- 验证现有测试仍然通过
|
|
128
|
+
- 测试通过后创建本地 checkpoint commit
|
|
128
129
|
- 确保代码遵循项目规范
|
|
129
130
|
inputs:
|
|
130
131
|
- 已通过审查的修复方案
|
|
@@ -176,21 +177,21 @@ steps:
|
|
|
176
177
|
- 代码审查报告
|
|
177
178
|
- 问题列表(如有)
|
|
178
179
|
|
|
179
|
-
- name:
|
|
180
|
-
description:
|
|
180
|
+
- name: delivery
|
|
181
|
+
description: 将已审查的 checkpoint 交付为 PR,并在合并及最终门禁通过后完成任务。
|
|
181
182
|
recommended_agents:
|
|
182
183
|
- claude
|
|
183
184
|
- human
|
|
184
185
|
tasks:
|
|
185
|
-
-
|
|
186
|
-
-
|
|
187
|
-
-
|
|
186
|
+
- 验证当前 HEAD 仍等于已审查的 checkpoint
|
|
187
|
+
- 确认任务绑定的交付 remote 和目标分支仍有效
|
|
188
|
+
- 在 PR 合并及最终门禁通过后将任务移至已完成
|
|
188
189
|
pr_tasks:
|
|
189
190
|
- 创建包含缺陷修复描述的拉取请求
|
|
190
191
|
- 将 PR 关联到缺陷报告 Issue
|
|
191
192
|
inputs:
|
|
192
|
-
-
|
|
193
|
+
- 已审查的本地 checkpoint
|
|
193
194
|
- 任务文件
|
|
194
195
|
outputs:
|
|
195
|
-
- 已完成的任务文件(位于 .agents/workspace/completed/)
|
|
196
196
|
- 拉取请求(仅走 PR 路径时)
|
|
197
|
+
- 已完成的任务文件(PR 合并和最终门禁通过后)
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
#
|
|
4
4
|
# Note: whether a step's `pr_tasks` list counts toward workflow progress follows the "PR path" rule:
|
|
5
5
|
# `.agents/.airc.json:prFlow="required"` always counts; `prFlow="disabled"` never counts;
|
|
6
|
-
# when the field is absent, exclude only if task.md's `
|
|
6
|
+
# when the field is absent, exclude only if task.md's `pr_delivery_fact.state=skipped`, otherwise count
|
|
7
7
|
# (see .agents/skills/complete-task/SKILL.md).
|
|
8
8
|
|
|
9
9
|
name: feature-development
|
|
@@ -126,6 +126,7 @@ steps:
|
|
|
126
126
|
- Write unit tests
|
|
127
127
|
- Write integration tests when applicable
|
|
128
128
|
- Fix findings from the latest code-review artifact when in fix mode
|
|
129
|
+
- Create a local checkpoint commit after tests pass
|
|
129
130
|
- Ensure code follows project conventions
|
|
130
131
|
inputs:
|
|
131
132
|
- Approved technical design
|
|
@@ -177,21 +178,21 @@ steps:
|
|
|
177
178
|
- Code review report
|
|
178
179
|
- Findings to fix
|
|
179
180
|
|
|
180
|
-
- name:
|
|
181
|
-
description:
|
|
181
|
+
- name: delivery
|
|
182
|
+
description: Deliver the approved checkpoint as a pull request, then complete the task after merge and final gates.
|
|
182
183
|
recommended_agents:
|
|
183
184
|
- claude
|
|
184
185
|
- human
|
|
185
186
|
tasks:
|
|
186
|
-
-
|
|
187
|
-
-
|
|
188
|
-
- Move the task to completed
|
|
187
|
+
- Verify the current HEAD still equals the approved checkpoint
|
|
188
|
+
- Confirm the task-bound delivery remote and base branch remain valid
|
|
189
|
+
- Move the task to completed after PR merge and final gates
|
|
189
190
|
pr_tasks:
|
|
190
191
|
- Create a pull request with an appropriate description
|
|
191
192
|
- Link the PR to the related Issue
|
|
192
193
|
inputs:
|
|
193
|
-
-
|
|
194
|
+
- Approved local checkpoint
|
|
194
195
|
- Task workspace
|
|
195
196
|
outputs:
|
|
196
|
-
- Completed task workspace under .agents/workspace/completed/
|
|
197
197
|
- Pull request (only on the PR path)
|
|
198
|
+
- Completed task workspace under .agents/workspace/completed/ after merge and final gates
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
#
|
|
4
4
|
# 注:步骤中的 `pr_tasks` 列表按「走 PR 路径」判定是否计入工作流进度:
|
|
5
5
|
# `.agents/.airc.json:prFlow="required"` 始终计入;`prFlow="disabled"` 不计入;
|
|
6
|
-
# 字段缺省时仅当 task.md 的 `
|
|
6
|
+
# 字段缺省时仅当 task.md 的 `pr_delivery_fact.state=skipped` 排除,否则计入(详见 .agents/skills/complete-task/SKILL.md)。
|
|
7
7
|
|
|
8
8
|
name: feature-development
|
|
9
9
|
description: 开发新功能的端到端工作流。
|
|
@@ -125,6 +125,7 @@ steps:
|
|
|
125
125
|
- 编写单元测试
|
|
126
126
|
- 编写集成测试(如适用)
|
|
127
127
|
- 修复最新 code-review 产物中要求处理的问题(如处于修复模式)
|
|
128
|
+
- 测试通过后创建本地 checkpoint commit
|
|
128
129
|
- 确保代码遵循项目规范
|
|
129
130
|
inputs:
|
|
130
131
|
- 已通过审查的技术设计
|
|
@@ -176,21 +177,21 @@ steps:
|
|
|
176
177
|
- 代码审查报告
|
|
177
178
|
- 待修复问题列表
|
|
178
179
|
|
|
179
|
-
- name:
|
|
180
|
-
description:
|
|
180
|
+
- name: delivery
|
|
181
|
+
description: 将已审查的 checkpoint 交付为 PR,并在合并及最终门禁通过后完成任务。
|
|
181
182
|
recommended_agents:
|
|
182
183
|
- claude
|
|
183
184
|
- human
|
|
184
185
|
tasks:
|
|
185
|
-
-
|
|
186
|
-
-
|
|
187
|
-
-
|
|
186
|
+
- 验证当前 HEAD 仍等于已审查的 checkpoint
|
|
187
|
+
- 确认任务绑定的交付 remote 和目标分支仍有效
|
|
188
|
+
- 在 PR 合并及最终门禁通过后将任务移至已完成
|
|
188
189
|
pr_tasks:
|
|
189
190
|
- 创建包含适当描述的拉取请求
|
|
190
191
|
- 将 PR 关联到相关 Issue
|
|
191
192
|
inputs:
|
|
192
|
-
-
|
|
193
|
+
- 已审查的本地 checkpoint
|
|
193
194
|
- 任务文件
|
|
194
195
|
outputs:
|
|
195
|
-
- 已完成的任务文件(位于 .agents/workspace/completed/)
|
|
196
196
|
- 拉取请求(仅走 PR 路径时)
|
|
197
|
+
- 已完成的任务文件(PR 合并和最终门禁通过后)
|