@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.
Files changed (193) hide show
  1. package/README.md +6 -6
  2. package/README.zh-CN.md +6 -6
  3. package/dist/bin/internal-cli.js +5 -0
  4. package/dist/lib/agent-clients/adapters/codex-lifecycle/build-identity.js +71 -10
  5. package/dist/lib/defaults.json +4 -0
  6. package/dist/lib/git/workflow.js +43 -1
  7. package/dist/lib/init.js +1 -0
  8. package/dist/lib/internal/git-workflow.js +8 -1
  9. package/dist/lib/internal/platform-pr.js +8 -2
  10. package/dist/lib/internal/task-delivery.js +59 -0
  11. package/dist/lib/platform/github-client.js +7 -1
  12. package/dist/lib/platform/pr-checks.js +8 -5
  13. package/dist/lib/platform/pr-summary.js +12 -8
  14. package/dist/lib/platform/pull-requests.js +393 -91
  15. package/dist/lib/platform/verification-required.js +13 -2
  16. package/dist/lib/platform/verification-sync.js +9 -4
  17. package/dist/lib/pr-review/evidence-grading.js +12 -4
  18. package/dist/lib/sandbox/config.js +5 -0
  19. package/dist/lib/sandbox/control/lifecycle.js +29 -7
  20. package/dist/lib/server/process-state.js +2 -2
  21. package/dist/lib/task/artifact-lifecycle.js +2 -2
  22. package/dist/lib/task/commit-intent.js +100 -0
  23. package/dist/lib/task/commit-operation.js +195 -101
  24. package/dist/lib/task/create.js +33 -7
  25. package/dist/lib/task/decision-details.js +3 -48
  26. package/dist/lib/task/delivery-target.js +97 -0
  27. package/dist/lib/task/delivery.js +153 -0
  28. package/dist/lib/task/human-override.js +5 -2
  29. package/dist/lib/task/lifecycle.js +106 -9
  30. package/dist/lib/task/orchestration.js +55 -62
  31. package/dist/lib/task/pr-delivery-fact.js +182 -0
  32. package/dist/lib/task/review-finalization.js +4 -8
  33. package/dist/lib/task/review-fingerprint.js +8 -0
  34. package/dist/lib/task/verification-engine.js +48 -24
  35. package/dist/lib/task/verification-review.js +1 -1
  36. package/dist/lib/update.js +9 -0
  37. package/dist/lifecycle-build-manifest.json +3 -3
  38. package/lib/agent-clients/adapters/codex-lifecycle/build-identity.ts +105 -10
  39. package/lib/agent-clients/adapters/codex-lifecycle/manifest-files.json +12 -1
  40. package/lib/defaults.json +4 -0
  41. package/lib/git/workflow.ts +38 -1
  42. package/lib/init.ts +3 -0
  43. package/lib/internal/git-workflow.ts +7 -1
  44. package/lib/internal/platform-pr.ts +8 -1
  45. package/lib/internal/task-delivery.ts +53 -0
  46. package/lib/platform/github-client.ts +8 -1
  47. package/lib/platform/pr-checks.ts +7 -5
  48. package/lib/platform/pr-summary.ts +10 -7
  49. package/lib/platform/pull-requests.ts +425 -87
  50. package/lib/platform/verification-required.ts +12 -2
  51. package/lib/platform/verification-sync.ts +9 -4
  52. package/lib/pr-review/evidence-grading.ts +7 -4
  53. package/lib/sandbox/config.ts +7 -0
  54. package/lib/sandbox/control/lifecycle.ts +30 -8
  55. package/lib/server/process-state.ts +2 -2
  56. package/lib/task/artifact-lifecycle.ts +2 -2
  57. package/lib/task/commit-intent.ts +137 -0
  58. package/lib/task/commit-operation.ts +174 -87
  59. package/lib/task/create.ts +34 -9
  60. package/lib/task/decision-details.ts +2 -62
  61. package/lib/task/delivery-target.ts +130 -0
  62. package/lib/task/delivery.ts +160 -0
  63. package/lib/task/human-override.ts +5 -2
  64. package/lib/task/lifecycle.ts +93 -4
  65. package/lib/task/orchestration.ts +62 -65
  66. package/lib/task/pr-delivery-fact.ts +254 -0
  67. package/lib/task/review-finalization.ts +4 -14
  68. package/lib/task/review-fingerprint.ts +10 -0
  69. package/lib/task/verification-engine.ts +45 -28
  70. package/lib/task/verification-review.ts +2 -0
  71. package/lib/update.ts +10 -0
  72. package/package.json +1 -1
  73. package/templates/.agents/rules/README.en.md +4 -2
  74. package/templates/.agents/rules/README.zh-CN.md +4 -2
  75. package/templates/.agents/rules/create-issue.en.md +11 -2
  76. package/templates/.agents/rules/create-issue.zh-CN.md +24 -2
  77. package/templates/.agents/rules/issue-pr-commands.en.md +4 -17
  78. package/templates/.agents/rules/issue-sync.en.md +26 -5
  79. package/templates/.agents/rules/issue-sync.zh-CN.md +62 -5
  80. package/templates/.agents/rules/label-milestone-setup.en.md +15 -2
  81. package/templates/.agents/rules/label-milestone-setup.zh-CN.md +15 -2
  82. package/templates/.agents/rules/local-artifact-repair.en.md +46 -0
  83. package/templates/.agents/rules/local-artifact-repair.zh-CN.md +46 -0
  84. package/templates/.agents/rules/milestone-inference.en.md +12 -2
  85. package/templates/.agents/rules/milestone-inference.zh-CN.md +25 -3
  86. package/templates/.agents/rules/pr-sync.en.md +22 -13
  87. package/templates/.agents/rules/pr-sync.zh-CN.md +22 -1
  88. package/templates/.agents/rules/release-commands.en.md +42 -3
  89. package/templates/.agents/rules/release-commands.zh-CN.md +42 -3
  90. package/templates/.agents/rules/security-alerts.en.md +17 -2
  91. package/templates/.agents/rules/security-alerts.zh-CN.md +17 -2
  92. package/templates/.agents/rules/sync-content-generation.en.md +8 -0
  93. package/templates/.agents/rules/sync-content-generation.zh-CN.md +8 -0
  94. package/templates/.agents/rules/task-management.en.md +1 -1
  95. package/templates/.agents/rules/task-management.zh-CN.md +1 -1
  96. package/templates/.agents/scripts/security-alerts.github.sh +151 -0
  97. package/templates/.agents/scripts/security-alerts.sh +31 -0
  98. package/templates/.agents/skills/analyze-task/SKILL.en.md +1 -0
  99. package/templates/.agents/skills/analyze-task/SKILL.zh-CN.md +1 -0
  100. package/templates/.agents/skills/close-codescan/SKILL.en.md +2 -2
  101. package/templates/.agents/skills/close-codescan/SKILL.zh-CN.md +2 -2
  102. package/templates/.agents/skills/close-dependabot/SKILL.en.md +2 -2
  103. package/templates/.agents/skills/close-dependabot/SKILL.zh-CN.md +2 -2
  104. package/templates/.agents/skills/code-task/SKILL.en.md +5 -2
  105. package/templates/.agents/skills/code-task/SKILL.zh-CN.md +6 -3
  106. package/templates/.agents/skills/commit/SKILL.en.md +3 -3
  107. package/templates/.agents/skills/commit/SKILL.zh-CN.md +3 -3
  108. package/templates/.agents/skills/commit/config/verify.json +1 -1
  109. package/templates/.agents/skills/commit/reference/commit-orchestration.en.md +3 -3
  110. package/templates/.agents/skills/commit/reference/commit-orchestration.zh-CN.md +3 -3
  111. package/templates/.agents/skills/commit/reference/pr-summary-sync.en.md +1 -1
  112. package/templates/.agents/skills/commit/reference/pr-summary-sync.zh-CN.md +1 -1
  113. package/templates/.agents/skills/commit/reference/task-status-update.en.md +2 -2
  114. package/templates/.agents/skills/commit/reference/task-status-update.zh-CN.md +2 -2
  115. package/templates/.agents/skills/complete-manual-validation/SKILL.en.md +2 -1
  116. package/templates/.agents/skills/complete-manual-validation/SKILL.zh-CN.md +2 -1
  117. package/templates/.agents/skills/complete-manual-validation/config/verify.en.json +1 -1
  118. package/templates/.agents/skills/complete-manual-validation/config/verify.zh-CN.json +1 -1
  119. package/templates/.agents/skills/complete-manual-validation/reference/summary-update.en.md +1 -1
  120. package/templates/.agents/skills/complete-manual-validation/reference/summary-update.zh-CN.md +1 -1
  121. package/templates/.agents/skills/complete-task/SKILL.en.md +10 -10
  122. package/templates/.agents/skills/complete-task/SKILL.zh-CN.md +10 -10
  123. package/templates/.agents/skills/complete-task/reference/external-delivery.en.md +2 -2
  124. package/templates/.agents/skills/complete-task/reference/external-delivery.zh-CN.md +2 -2
  125. package/templates/.agents/skills/create-pr/SKILL.en.md +4 -4
  126. package/templates/.agents/skills/create-pr/SKILL.zh-CN.md +4 -4
  127. package/templates/.agents/skills/create-task/SKILL.en.md +1 -0
  128. package/templates/.agents/skills/create-task/SKILL.zh-CN.md +1 -0
  129. package/templates/.agents/skills/import-codescan/SKILL.en.md +1 -1
  130. package/templates/.agents/skills/import-codescan/SKILL.zh-CN.md +1 -1
  131. package/templates/.agents/skills/import-dependabot/SKILL.en.md +1 -1
  132. package/templates/.agents/skills/import-dependabot/SKILL.zh-CN.md +1 -1
  133. package/templates/.agents/skills/init-labels/SKILL.en.md +9 -10
  134. package/templates/.agents/skills/init-labels/SKILL.zh-CN.md +9 -10
  135. package/templates/.agents/skills/init-labels/scripts/init-labels.github.sh +57 -1
  136. package/templates/.agents/skills/init-labels/scripts/init-labels.sh +27 -1
  137. package/templates/.agents/skills/init-milestones/SKILL.en.md +3 -5
  138. package/templates/.agents/skills/init-milestones/SKILL.zh-CN.md +3 -5
  139. package/templates/.agents/skills/plan-task/SKILL.en.md +1 -0
  140. package/templates/.agents/skills/plan-task/SKILL.zh-CN.md +1 -0
  141. package/templates/.agents/skills/review-analysis/SKILL.en.md +4 -3
  142. package/templates/.agents/skills/review-analysis/SKILL.zh-CN.md +4 -3
  143. package/templates/.agents/skills/review-analysis/reference/output-templates.en.md +18 -0
  144. package/templates/.agents/skills/review-analysis/reference/output-templates.zh-CN.md +18 -0
  145. package/templates/.agents/skills/review-code/SKILL.en.md +7 -6
  146. package/templates/.agents/skills/review-code/SKILL.zh-CN.md +7 -6
  147. package/templates/.agents/skills/review-code/reference/output-templates.en.md +19 -1
  148. package/templates/.agents/skills/review-code/reference/output-templates.zh-CN.md +19 -1
  149. package/templates/.agents/skills/review-code/reference/report-template.en.md +4 -2
  150. package/templates/.agents/skills/review-code/reference/report-template.zh-CN.md +4 -2
  151. package/templates/.agents/skills/review-plan/SKILL.en.md +4 -3
  152. package/templates/.agents/skills/review-plan/SKILL.zh-CN.md +4 -3
  153. package/templates/.agents/skills/review-plan/reference/output-templates.en.md +18 -0
  154. package/templates/.agents/skills/review-plan/reference/output-templates.zh-CN.md +18 -0
  155. package/templates/.agents/skills/review-pr/SKILL.en.md +1 -0
  156. package/templates/.agents/skills/review-pr/SKILL.zh-CN.md +1 -0
  157. package/templates/.agents/skills/review-pr/reference/evidence-grading.en.md +2 -2
  158. package/templates/.agents/skills/review-pr/reference/evidence-grading.zh-CN.md +2 -2
  159. package/templates/.agents/skills/run-manual-validation/SKILL.en.md +1 -0
  160. package/templates/.agents/skills/run-manual-validation/SKILL.zh-CN.md +1 -0
  161. package/templates/.agents/skills/run-task/SKILL.en.md +1 -1
  162. package/templates/.agents/skills/run-task/SKILL.zh-CN.md +1 -1
  163. package/templates/.agents/skills/update-agent-infra/scripts/sync-templates.js +4 -0
  164. package/templates/.agents/skills/watch-pr/SKILL.en.md +4 -4
  165. package/templates/.agents/skills/watch-pr/SKILL.zh-CN.md +4 -4
  166. package/templates/.agents/templates/task.en.md +5 -1
  167. package/templates/.agents/templates/task.zh-CN.md +5 -1
  168. package/templates/.agents/workflows/bug-fix.en.yaml +9 -8
  169. package/templates/.agents/workflows/bug-fix.zh-CN.yaml +9 -8
  170. package/templates/.agents/workflows/feature-development.en.yaml +9 -8
  171. package/templates/.agents/workflows/feature-development.zh-CN.yaml +9 -8
  172. package/templates/.agents/workflows/refactoring.en.yaml +9 -8
  173. package/templates/.agents/workflows/refactoring.zh-CN.yaml +9 -8
  174. package/templates/.agents/rules/create-issue.github.en.md +0 -14
  175. package/templates/.agents/rules/create-issue.github.zh-CN.md +0 -27
  176. package/templates/.agents/rules/issue-pr-commands.github.en.md +0 -34
  177. package/templates/.agents/rules/issue-pr-commands.github.zh-CN.md +0 -49
  178. package/templates/.agents/rules/issue-sync.github.en.md +0 -40
  179. package/templates/.agents/rules/issue-sync.github.zh-CN.md +0 -76
  180. package/templates/.agents/rules/label-milestone-setup.github.en.md +0 -60
  181. package/templates/.agents/rules/label-milestone-setup.github.zh-CN.md +0 -60
  182. package/templates/.agents/rules/milestone-inference.github.en.md +0 -15
  183. package/templates/.agents/rules/milestone-inference.github.zh-CN.md +0 -27
  184. package/templates/.agents/rules/pr-checks-commands.github.en.md +0 -18
  185. package/templates/.agents/rules/pr-checks-commands.github.zh-CN.md +0 -34
  186. package/templates/.agents/rules/pr-sync.github.en.md +0 -43
  187. package/templates/.agents/rules/pr-sync.github.zh-CN.md +0 -69
  188. package/templates/.agents/rules/release-commands.github.en.md +0 -44
  189. package/templates/.agents/rules/release-commands.github.zh-CN.md +0 -44
  190. package/templates/.agents/rules/security-alerts.github.en.md +0 -43
  191. package/templates/.agents/rules/security-alerts.github.zh-CN.md +0 -43
  192. /package/templates/.agents/rules/{issue-fields.github.en.md → issue-fields.en.md} +0 -0
  193. /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` / `pr_number`;存在 PR 时调用 `agent-infra-internal platform-checks inspect {task-id}`。只选择以下一个互斥出口:
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 Baseline Commit**: {raw reviewed commit R captured once for this round; must equal this round's HEAD}
25
- - **Reviewed Diff Base**: {raw D used for the complete diff/fingerprint; the merge-base of R and the PR base SHA when a PR is bound, otherwise R}
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
- - **审查基线提交**:{本轮一次性捕获的审查提交 R 原文;必须等于本轮 HEAD}
25
- - **审查差异基线**:{用于完整 diff/fingerprint 的 D 原文;已绑定 PR 时为 R 与 PR base SHA 的 merge-base,否则为 R}
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}` exactly once.
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. If finalization fails or a response field is missing, stop before the completion event. Derive the verdict and next-step branch from the same response's `stageStatus.canAdvance`: only `canAdvance=true` permits `approved`; otherwise use `changes-requested` or `rejected`. Then run `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}`.
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; it auto-removes a duplicate only when exactly one formal `[needs-human-decision]` block remains and every other same-id block is clearly short and informal, then reruns the read-only check. Ambiguous duplicates fail closed. If this check or repair fails, stop before the completion event.
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 {相称证据}`。不得扫描编号或手写账本行。全部账本写入完成后只调用一次 `agent-infra-internal task-review {task-id} finalize-summary --stage plan --artifact {review-artifact} {execution-flag}`。
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`、手工替换占位符或扫描问题清单。最终化失败或返回字段缺失时,停止在完成事件之前。以同一次返回的 `stageStatus.canAdvance` 决定 verdict 和下一步:仅 `canAdvance=true` 可用 `approved`,否则必须用 `changes-requested` 或 `rejected`。随后执行 `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}`。
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;只有“一个正式 `[needs-human-decision]` 块 + 明确的简短非正式重复块”才会自动删除重复块并重新做只读检查,无法唯一判断时失败关闭。该检查或自动修复失败时,停止在完成事件之前。
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` `pr_number` hit takes priority over the `issue_number` reverse lookup, and a task hit via both paths deduplicates to a single candidate.
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` / `pr_number` match the resolution result.
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` 的 `pr_number` 命中优先于 `issue_number` 反查,同一任务经两条路径命中按单候选去重。
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` / `pr_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, or start commit. Only explicit `recover-prepared` may clear an expired orphan when the task fingerprint is exact and no matching unconsumed active lifecycle evidence remains.
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、业务写入或 commit。超时由核心暂停;崩溃遗留 prepared receipt 只能在 exact workspace fingerprint、无匹配的未消费 active lifecycle evidence 且 deadline 已过时显式 `recover-prepared`。
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 告知用户。
@@ -74,6 +74,10 @@ const DEFAULTS = {
74
74
  "task": {
75
75
  "shortIdLength": 2
76
76
  },
77
+ "delivery": {
78
+ "remote": "origin",
79
+ "baseRef": "main"
80
+ },
77
81
  "labels": {
78
82
  "in": {}
79
83
  },
@@ -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 `pr_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 `pr_number` as `{pr#}`; if `pr_number` is empty, follow "Error Handling" to prompt running `create-pr` first, then stop.
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** `pr_status` (keep `created`) or `current_step`
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 `pr_number`, 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.
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;定位后读取其 `pr_number`。
43
- - 场景 B(省略 task ref 或 `--task/-t`,**任务锚定主路径**):按「任务上下文解析」取得完整 `{task-id}`。读 `.agents/workspace/active/{task-id}/task.md` 取 `pr_number` 作为 `{pr#}`;`pr_number` 为空时按「错误处理」提示先 `create-pr`,停止。
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
- - **不改** `pr_status`(保持 `created`)与 `current_step`
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 无 `pr_number`,且未传 `--pr`、当前分支也无 PR):提示「请先运行 `create-pr`,或用 `--pr <number>` 指定 PR」,停止。
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
- pr_status: pending # PR status: pending (default) | created (PR created) | skipped (explicitly skipped)
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
- pr_status: pending # PR 状态:pending(默认)| created(已创建 PR)| skipped(显式跳过)
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 `pr_status=skipped`, otherwise count
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: commit
181
- description: Finalize the defect fix and create a pull request (the PR portion runs only on the PR path).
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
- - Ensure all tests pass
187
- - Write a commit message that references the defect or Issue
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
- - Final bug-fix branch
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 的 `pr_status=skipped` 排除,否则计入(详见 .agents/skills/complete-task/SKILL.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: commit
180
- description: 最终确认缺陷修复并创建拉取请求(PR 部分仅在走 PR 路径时执行)。
180
+ - name: delivery
181
+ description: 将已审查的 checkpoint 交付为 PR,并在合并及最终门禁通过后完成任务。
181
182
  recommended_agents:
182
183
  - claude
183
184
  - human
184
185
  tasks:
185
- - 确保所有测试通过
186
- - 编写引用缺陷/Issue 的提交信息
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 `pr_status=skipped`, otherwise count
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: commit
181
- description: Finalize changes and create a pull request (the PR portion runs only on the PR path).
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
- - Ensure all tests pass
187
- - Write a clear commit message following conventions
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
- - Final implementation branch
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 的 `pr_status=skipped` 排除,否则计入(详见 .agents/skills/complete-task/SKILL.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: commit
180
- description: 最终确认变更并创建拉取请求(PR 部分仅在走 PR 路径时执行)。
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 合并和最终门禁通过后)