@fitlab-ai/agent-infra 0.8.5 → 0.9.1

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 (467) hide show
  1. package/README.md +6 -1
  2. package/README.zh-CN.md +5 -1
  3. package/bin/cli.ts +2 -2
  4. package/dist/bin/cli.js +2 -2
  5. package/dist/bin/internal-cli.js +103 -0
  6. package/dist/lib/decide.js +81 -90
  7. package/dist/lib/defaults.json +1 -0
  8. package/dist/lib/git/review-snapshot.js +79 -0
  9. package/dist/lib/git/workflow.js +101 -0
  10. package/dist/lib/internal/git-workflow.js +42 -0
  11. package/dist/lib/internal/platform-checks.js +119 -0
  12. package/dist/lib/internal/platform-comment.js +129 -0
  13. package/dist/lib/internal/platform-context.js +46 -0
  14. package/dist/lib/internal/platform-issue.js +142 -0
  15. package/dist/lib/internal/platform-pr.js +146 -0
  16. package/dist/lib/internal/platform-release-notes.js +53 -0
  17. package/dist/lib/internal/release-workflow.js +320 -0
  18. package/dist/lib/internal/task-artifact.js +67 -0
  19. package/dist/lib/internal/task-context.js +43 -0
  20. package/dist/lib/internal/task-event.js +70 -0
  21. package/dist/lib/internal/task-ledger.js +114 -0
  22. package/dist/lib/internal/task-lifecycle.js +58 -0
  23. package/dist/lib/internal/task-short-id.js +83 -0
  24. package/dist/lib/internal/task-snapshot.js +47 -0
  25. package/dist/lib/internal/task-verify.js +50 -0
  26. package/dist/lib/internal/task-warning.js +74 -0
  27. package/dist/lib/platform/adapters.js +14 -0
  28. package/dist/lib/platform/context.js +146 -0
  29. package/dist/lib/platform/github-client.js +124 -0
  30. package/dist/lib/platform/github-release-notes.js +96 -0
  31. package/dist/lib/platform/issue-comments.js +409 -0
  32. package/dist/lib/platform/issue-metadata.js +183 -0
  33. package/dist/lib/platform/issues.js +619 -0
  34. package/dist/lib/platform/merged-pr-equivalence.js +54 -0
  35. package/dist/lib/platform/metadata-labels.js +28 -0
  36. package/dist/lib/platform/pr-checks.js +216 -0
  37. package/dist/lib/platform/pr-summary.js +88 -0
  38. package/dist/lib/platform/pull-request-metadata.js +38 -0
  39. package/dist/lib/platform/pull-requests.js +340 -0
  40. package/dist/lib/platform/release-notes.js +143 -0
  41. package/dist/lib/platform/releases.js +82 -0
  42. package/dist/lib/platform/types.js +22 -0
  43. package/dist/lib/platform/verification-required.js +102 -0
  44. package/dist/lib/platform/verification-sync.js +1014 -0
  45. package/dist/lib/platform/verification.js +6 -0
  46. package/dist/lib/release/channels.js +31 -0
  47. package/dist/lib/release/workflow.js +32 -0
  48. package/dist/lib/render.js +3 -2
  49. package/dist/lib/run/index.js +24 -7
  50. package/dist/lib/sandbox/build-proxy.js +63 -0
  51. package/dist/lib/sandbox/capture.js +25 -3
  52. package/dist/lib/sandbox/commands/create.js +93 -31
  53. package/dist/lib/sandbox/commands/enter.js +34 -11
  54. package/dist/lib/sandbox/commands/list-running.js +10 -8
  55. package/dist/lib/sandbox/commands/rebuild.js +24 -7
  56. package/dist/lib/sandbox/commands/show.js +2 -2
  57. package/dist/lib/sandbox/commands/start.js +53 -15
  58. package/dist/lib/sandbox/image-build.js +2 -1
  59. package/dist/lib/sandbox/index.js +6 -6
  60. package/dist/lib/sandbox/mounts.js +36 -0
  61. package/dist/lib/sandbox/recovery.js +562 -0
  62. package/dist/lib/sandbox/runtimes/ai-tools.dockerfile +24 -3
  63. package/dist/lib/sandbox/runtimes/base.dockerfile +8 -1
  64. package/dist/lib/sandbox/runtimes/java17.dockerfile +8 -1
  65. package/dist/lib/sandbox/runtimes/java21.dockerfile +8 -1
  66. package/dist/lib/sandbox/runtimes/node20.dockerfile +8 -1
  67. package/dist/lib/sandbox/runtimes/node22.dockerfile +8 -1
  68. package/dist/lib/sandbox/runtimes/python3.dockerfile +8 -1
  69. package/dist/lib/sandbox/shell.js +2 -1
  70. package/dist/lib/sandbox/task-resolver.js +5 -1
  71. package/dist/lib/sandbox/tools.js +19 -0
  72. package/dist/lib/server/protocol.js +5 -5
  73. package/dist/lib/task/activity-log.js +61 -0
  74. package/dist/lib/task/artifact-lifecycle.js +427 -0
  75. package/dist/lib/task/command-options.js +30 -0
  76. package/dist/lib/task/commands/cat.js +36 -6
  77. package/dist/lib/task/commands/decisions.js +80 -46
  78. package/dist/lib/task/commands/files.js +21 -7
  79. package/dist/lib/task/commands/grep.js +55 -7
  80. package/dist/lib/task/commands/issue-body.js +33 -19
  81. package/dist/lib/task/commands/log.js +27 -70
  82. package/dist/lib/task/commands/show.js +20 -7
  83. package/dist/lib/task/commands/status.js +18 -8
  84. package/dist/lib/task/decision-intents.js +154 -0
  85. package/dist/lib/task/decision-items.js +53 -0
  86. package/dist/lib/task/events.js +318 -0
  87. package/dist/lib/task/frontmatter.js +159 -1
  88. package/dist/lib/task/implementation-inputs.js +117 -0
  89. package/dist/lib/task/index.js +12 -9
  90. package/dist/lib/task/issue-form.js +21 -6
  91. package/dist/lib/task/ledger-intents.js +185 -0
  92. package/dist/lib/task/ledger.js +65 -35
  93. package/dist/lib/task/lifecycle.js +484 -0
  94. package/dist/lib/task/resolve-ref.js +152 -32
  95. package/dist/lib/task/review-artifacts.js +101 -0
  96. package/dist/lib/task/review-fingerprint.js +55 -0
  97. package/dist/lib/task/sections.js +358 -4
  98. package/dist/lib/task/short-id.js +292 -7
  99. package/dist/lib/task/snapshot.js +95 -0
  100. package/dist/lib/task/verification-checks.js +8 -0
  101. package/dist/lib/task/verification-config.js +14 -0
  102. package/dist/lib/task/verification-engine.js +923 -0
  103. package/dist/lib/task/verification-review.js +3 -0
  104. package/dist/lib/task/verification-types.js +2 -0
  105. package/dist/lib/task/verification.js +113 -0
  106. package/dist/lib/task/workflow-warning-intents.js +131 -0
  107. package/dist/lib/task/workflow-warnings.js +10 -78
  108. package/dist/lib/task/write.js +241 -0
  109. package/lib/decide.ts +57 -97
  110. package/lib/defaults.json +1 -0
  111. package/lib/git/review-snapshot.ts +73 -0
  112. package/lib/git/workflow.ts +101 -0
  113. package/lib/internal/git-workflow.ts +37 -0
  114. package/lib/internal/platform-checks.ts +101 -0
  115. package/lib/internal/platform-comment.ts +99 -0
  116. package/lib/internal/platform-context.ts +33 -0
  117. package/lib/internal/platform-issue.ts +116 -0
  118. package/lib/internal/platform-pr.ts +119 -0
  119. package/lib/internal/platform-release-notes.ts +55 -0
  120. package/lib/internal/release-workflow.ts +288 -0
  121. package/lib/internal/task-artifact.ts +47 -0
  122. package/lib/internal/task-context.ts +35 -0
  123. package/lib/internal/task-event.ts +51 -0
  124. package/lib/internal/task-ledger.ts +86 -0
  125. package/lib/internal/task-lifecycle.ts +41 -0
  126. package/lib/internal/task-short-id.ts +55 -0
  127. package/lib/internal/task-snapshot.ts +32 -0
  128. package/lib/internal/task-verify.ts +33 -0
  129. package/lib/internal/task-warning.ts +50 -0
  130. package/lib/platform/adapters.ts +30 -0
  131. package/lib/platform/context.ts +164 -0
  132. package/lib/platform/github-client.ts +146 -0
  133. package/lib/platform/github-release-notes.ts +132 -0
  134. package/lib/platform/issue-comments.ts +479 -0
  135. package/lib/platform/issue-metadata.ts +250 -0
  136. package/lib/platform/issues.ts +693 -0
  137. package/lib/platform/merged-pr-equivalence.ts +70 -0
  138. package/lib/platform/metadata-labels.ts +33 -0
  139. package/lib/platform/pr-checks.ts +247 -0
  140. package/lib/platform/pr-summary.ts +90 -0
  141. package/lib/platform/pull-request-metadata.ts +69 -0
  142. package/lib/platform/pull-requests.ts +386 -0
  143. package/lib/platform/release-notes.ts +167 -0
  144. package/lib/platform/releases.ts +71 -0
  145. package/lib/platform/types.ts +74 -0
  146. package/lib/platform/verification-required.ts +109 -0
  147. package/{runtime/platform-adapters/platform-sync.github.js → lib/platform/verification-sync.ts} +198 -367
  148. package/lib/platform/verification.ts +11 -0
  149. package/lib/release/channels.ts +30 -0
  150. package/lib/release/workflow.ts +31 -0
  151. package/lib/render.ts +3 -2
  152. package/lib/run/index.ts +25 -7
  153. package/lib/sandbox/build-proxy.ts +94 -0
  154. package/lib/sandbox/capture.ts +29 -3
  155. package/lib/sandbox/commands/create.ts +120 -36
  156. package/lib/sandbox/commands/enter.ts +38 -11
  157. package/lib/sandbox/commands/list-running.ts +10 -8
  158. package/lib/sandbox/commands/rebuild.ts +29 -7
  159. package/lib/sandbox/commands/show.ts +2 -2
  160. package/lib/sandbox/commands/start.ts +50 -16
  161. package/lib/sandbox/image-build.ts +4 -1
  162. package/lib/sandbox/index.ts +6 -6
  163. package/lib/sandbox/mounts.ts +55 -0
  164. package/lib/sandbox/recovery.ts +828 -0
  165. package/lib/sandbox/runtimes/ai-tools.dockerfile +24 -3
  166. package/lib/sandbox/runtimes/base.dockerfile +8 -1
  167. package/lib/sandbox/runtimes/java17.dockerfile +8 -1
  168. package/lib/sandbox/runtimes/java21.dockerfile +8 -1
  169. package/lib/sandbox/runtimes/node20.dockerfile +8 -1
  170. package/lib/sandbox/runtimes/node22.dockerfile +8 -1
  171. package/lib/sandbox/runtimes/python3.dockerfile +8 -1
  172. package/lib/sandbox/shell.ts +3 -1
  173. package/lib/sandbox/task-resolver.ts +5 -1
  174. package/lib/sandbox/tools.ts +31 -0
  175. package/lib/server/protocol.ts +5 -5
  176. package/lib/task/activity-log.ts +62 -0
  177. package/lib/task/artifact-lifecycle.ts +484 -0
  178. package/lib/task/command-options.ts +32 -0
  179. package/lib/task/commands/cat.ts +22 -9
  180. package/lib/task/commands/decisions.ts +49 -47
  181. package/lib/task/commands/files.ts +14 -6
  182. package/lib/task/commands/grep.ts +34 -7
  183. package/lib/task/commands/issue-body.ts +26 -21
  184. package/lib/task/commands/log.ts +17 -70
  185. package/lib/task/commands/show.ts +14 -6
  186. package/lib/task/commands/status.ts +17 -7
  187. package/lib/task/decision-intents.ts +163 -0
  188. package/lib/task/decision-items.ts +64 -0
  189. package/lib/task/events.ts +320 -0
  190. package/lib/task/frontmatter.ts +202 -2
  191. package/lib/task/implementation-inputs.ts +137 -0
  192. package/lib/task/index.ts +12 -9
  193. package/lib/task/issue-form.ts +24 -6
  194. package/lib/task/ledger-intents.ts +201 -0
  195. package/lib/task/ledger.ts +77 -31
  196. package/lib/task/lifecycle.ts +458 -0
  197. package/lib/task/resolve-ref.ts +197 -36
  198. package/{templates/.agents/scripts/lib/review-artifacts.js → lib/task/review-artifacts.ts} +11 -12
  199. package/{templates/.agents/scripts/lib/post-review-commit.js → lib/task/review-fingerprint.ts} +26 -12
  200. package/lib/task/sections.ts +486 -4
  201. package/lib/task/short-id.ts +403 -9
  202. package/lib/task/snapshot.ts +143 -0
  203. package/lib/task/verification-checks.ts +9 -0
  204. package/lib/task/verification-config.ts +20 -0
  205. package/{templates/.agents/scripts/validate-artifact.js → lib/task/verification-engine.ts} +230 -421
  206. package/lib/task/verification-review.ts +10 -0
  207. package/lib/task/verification-types.ts +29 -0
  208. package/lib/task/verification.ts +156 -0
  209. package/lib/task/workflow-warning-intents.ts +142 -0
  210. package/lib/task/workflow-warnings.ts +10 -78
  211. package/lib/task/write.ts +468 -0
  212. package/package.json +4 -2
  213. package/templates/.agents/README.en.md +4 -3
  214. package/templates/.agents/README.zh-CN.md +4 -3
  215. package/templates/.agents/rules/README.en.md +6 -5
  216. package/templates/.agents/rules/README.zh-CN.md +6 -5
  217. package/templates/.agents/rules/create-issue.en.md +1 -1
  218. package/templates/.agents/rules/create-issue.github.en.md +5 -184
  219. package/templates/.agents/rules/create-issue.github.zh-CN.md +12 -178
  220. package/templates/.agents/rules/create-issue.zh-CN.md +1 -1
  221. package/templates/.agents/rules/human-decision-context.en.md +36 -0
  222. package/templates/.agents/rules/human-decision-context.zh-CN.md +36 -0
  223. package/templates/.agents/rules/issue-fields.github.en.md +4 -148
  224. package/templates/.agents/rules/issue-fields.github.zh-CN.md +9 -144
  225. package/templates/.agents/rules/issue-pr-commands.en.md +43 -3
  226. package/templates/.agents/rules/issue-pr-commands.github.en.md +15 -220
  227. package/templates/.agents/rules/issue-pr-commands.github.zh-CN.md +23 -213
  228. package/templates/.agents/rules/issue-pr-commands.zh-CN.md +45 -3
  229. package/templates/.agents/rules/issue-sync.en.md +1 -1
  230. package/templates/.agents/rules/issue-sync.github.en.md +14 -301
  231. package/templates/.agents/rules/issue-sync.github.zh-CN.md +36 -287
  232. package/templates/.agents/rules/issue-sync.zh-CN.md +1 -1
  233. package/templates/.agents/rules/milestone-inference.en.md +1 -1
  234. package/templates/.agents/rules/milestone-inference.github.en.md +7 -119
  235. package/templates/.agents/rules/milestone-inference.github.zh-CN.md +8 -108
  236. package/templates/.agents/rules/milestone-inference.zh-CN.md +1 -1
  237. package/templates/.agents/rules/next-step-output.en.md +12 -11
  238. package/templates/.agents/rules/next-step-output.zh-CN.md +12 -11
  239. package/templates/.agents/rules/no-mid-flow-questions.en.md +3 -3
  240. package/templates/.agents/rules/no-mid-flow-questions.zh-CN.md +3 -3
  241. package/templates/.agents/rules/pr-checks-commands.en.md +16 -3
  242. package/templates/.agents/rules/pr-checks-commands.github.en.md +10 -54
  243. package/templates/.agents/rules/pr-checks-commands.github.zh-CN.md +19 -47
  244. package/templates/.agents/rules/pr-checks-commands.zh-CN.md +30 -3
  245. package/templates/.agents/rules/pr-sync.en.md +30 -3
  246. package/templates/.agents/rules/pr-sync.github.en.md +12 -115
  247. package/templates/.agents/rules/pr-sync.github.zh-CN.md +26 -104
  248. package/templates/.agents/rules/pr-sync.zh-CN.md +43 -3
  249. package/templates/.agents/rules/release-commands.en.md +2 -2
  250. package/templates/.agents/rules/release-commands.github.en.md +10 -40
  251. package/templates/.agents/rules/release-commands.github.zh-CN.md +9 -39
  252. package/templates/.agents/rules/release-commands.zh-CN.md +2 -2
  253. package/templates/.agents/rules/review-handshake.en.md +10 -6
  254. package/templates/.agents/rules/review-handshake.zh-CN.md +10 -6
  255. package/templates/.agents/rules/task-management.en.md +11 -2
  256. package/templates/.agents/rules/task-management.zh-CN.md +11 -3
  257. package/templates/.agents/rules/task-short-id.en.md +25 -29
  258. package/templates/.agents/rules/task-short-id.zh-CN.md +20 -23
  259. package/templates/.agents/rules/testing-discipline.en.md +20 -2
  260. package/templates/.agents/rules/testing-discipline.zh-CN.md +20 -2
  261. package/templates/.agents/scripts/lib/agent-infra-package.js +1 -9
  262. package/templates/.agents/scripts/task-short-id.js +71 -533
  263. package/templates/.agents/skills/analyze-task/SKILL.en.md +26 -56
  264. package/templates/.agents/skills/analyze-task/SKILL.zh-CN.md +30 -60
  265. package/templates/.agents/skills/analyze-task/config/verify.en.json +1 -3
  266. package/templates/.agents/skills/analyze-task/config/verify.zh-CN.json +1 -3
  267. package/templates/.agents/skills/block-task/SKILL.en.md +21 -47
  268. package/templates/.agents/skills/block-task/SKILL.zh-CN.md +23 -47
  269. package/templates/.agents/skills/block-task/config/verify.json +1 -2
  270. package/templates/.agents/skills/cancel-task/SKILL.en.md +16 -45
  271. package/templates/.agents/skills/cancel-task/SKILL.zh-CN.md +16 -45
  272. package/templates/.agents/skills/cancel-task/config/verify.json +1 -2
  273. package/templates/.agents/skills/check-task/SKILL.en.md +6 -3
  274. package/templates/.agents/skills/check-task/SKILL.zh-CN.md +6 -3
  275. package/templates/.agents/skills/close-codescan/SKILL.en.md +6 -24
  276. package/templates/.agents/skills/close-codescan/SKILL.zh-CN.md +6 -24
  277. package/templates/.agents/skills/close-dependabot/SKILL.en.md +6 -24
  278. package/templates/.agents/skills/close-dependabot/SKILL.zh-CN.md +6 -24
  279. package/templates/.agents/skills/code-task/SKILL.en.md +22 -35
  280. package/templates/.agents/skills/code-task/SKILL.zh-CN.md +28 -44
  281. package/templates/.agents/skills/code-task/config/verify.en.json +3 -3
  282. package/templates/.agents/skills/code-task/config/verify.zh-CN.json +3 -3
  283. package/templates/.agents/skills/code-task/reference/dual-mode.en.md +13 -9
  284. package/templates/.agents/skills/code-task/reference/dual-mode.zh-CN.md +13 -9
  285. package/templates/.agents/skills/code-task/reference/fix-mode.en.md +1 -1
  286. package/templates/.agents/skills/code-task/reference/fix-mode.zh-CN.md +1 -1
  287. package/templates/.agents/skills/code-task/reference/report-template.en.md +11 -1
  288. package/templates/.agents/skills/code-task/reference/report-template.zh-CN.md +11 -1
  289. package/templates/.agents/skills/commit/SKILL.en.md +13 -11
  290. package/templates/.agents/skills/commit/SKILL.zh-CN.md +13 -11
  291. package/templates/.agents/skills/commit/config/verify.json +1 -2
  292. package/templates/.agents/skills/commit/reference/commit-message.en.md +1 -11
  293. package/templates/.agents/skills/commit/reference/commit-message.zh-CN.md +1 -11
  294. package/templates/.agents/skills/commit/reference/issue-metadata-sync.en.md +4 -8
  295. package/templates/.agents/skills/commit/reference/issue-metadata-sync.zh-CN.md +4 -8
  296. package/templates/.agents/skills/commit/reference/pr-summary-sync.en.md +6 -18
  297. package/templates/.agents/skills/commit/reference/pr-summary-sync.zh-CN.md +5 -17
  298. package/templates/.agents/skills/commit/reference/task-status-update.en.md +13 -0
  299. package/templates/.agents/skills/commit/reference/task-status-update.zh-CN.md +13 -0
  300. package/templates/.agents/skills/complete-manual-validation/SKILL.en.md +13 -36
  301. package/templates/.agents/skills/complete-manual-validation/SKILL.zh-CN.md +13 -36
  302. package/templates/.agents/skills/complete-manual-validation/config/verify.en.json +1 -3
  303. package/templates/.agents/skills/complete-manual-validation/config/verify.zh-CN.json +1 -3
  304. package/templates/.agents/skills/complete-manual-validation/reference/summary-update.en.md +10 -54
  305. package/templates/.agents/skills/complete-manual-validation/reference/summary-update.zh-CN.md +10 -79
  306. package/templates/.agents/skills/complete-task/SKILL.en.md +59 -63
  307. package/templates/.agents/skills/complete-task/SKILL.zh-CN.md +59 -63
  308. package/templates/.agents/skills/complete-task/config/verify.en.json +10 -7
  309. package/templates/.agents/skills/complete-task/config/verify.zh-CN.json +10 -7
  310. package/templates/.agents/skills/create-pr/SKILL.en.md +19 -44
  311. package/templates/.agents/skills/create-pr/SKILL.zh-CN.md +19 -43
  312. package/templates/.agents/skills/create-pr/config/verify.json +1 -2
  313. package/templates/.agents/skills/create-pr/reference/comment-publish.en.md +8 -12
  314. package/templates/.agents/skills/create-pr/reference/comment-publish.zh-CN.md +7 -11
  315. package/templates/.agents/skills/create-release-note/SKILL.en.md +17 -38
  316. package/templates/.agents/skills/create-release-note/SKILL.zh-CN.md +16 -37
  317. package/templates/.agents/skills/create-task/SKILL.en.md +16 -13
  318. package/templates/.agents/skills/create-task/SKILL.zh-CN.md +16 -13
  319. package/templates/.agents/skills/create-task/config/verify.json +1 -2
  320. package/templates/.agents/skills/create-task/reference/context-capture.en.md +29 -0
  321. package/templates/.agents/skills/create-task/reference/context-capture.zh-CN.md +29 -0
  322. package/templates/.agents/skills/import-codescan/SKILL.en.md +2 -2
  323. package/templates/.agents/skills/import-codescan/SKILL.zh-CN.md +2 -2
  324. package/templates/.agents/skills/import-codescan/config/verify.json +1 -2
  325. package/templates/.agents/skills/import-dependabot/SKILL.en.md +2 -2
  326. package/templates/.agents/skills/import-dependabot/SKILL.zh-CN.md +2 -2
  327. package/templates/.agents/skills/import-dependabot/config/verify.json +1 -2
  328. package/templates/.agents/skills/import-issue/SKILL.en.md +9 -13
  329. package/templates/.agents/skills/import-issue/SKILL.zh-CN.md +10 -14
  330. package/templates/.agents/skills/import-issue/config/verify.json +1 -2
  331. package/templates/.agents/skills/plan-task/SKILL.en.md +17 -42
  332. package/templates/.agents/skills/plan-task/SKILL.zh-CN.md +22 -49
  333. package/templates/.agents/skills/plan-task/config/verify.en.json +1 -3
  334. package/templates/.agents/skills/plan-task/config/verify.zh-CN.json +1 -3
  335. package/templates/.agents/skills/post-release/SKILL.en.md +11 -81
  336. package/templates/.agents/skills/post-release/SKILL.zh-CN.md +8 -78
  337. package/templates/.agents/skills/refine-title/SKILL.en.md +1 -1
  338. package/templates/.agents/skills/refine-title/SKILL.zh-CN.md +1 -1
  339. package/templates/.agents/skills/release/SKILL.en.md +16 -163
  340. package/templates/.agents/skills/release/SKILL.zh-CN.md +15 -162
  341. package/templates/.agents/skills/restore-task/SKILL.en.md +11 -29
  342. package/templates/.agents/skills/restore-task/SKILL.zh-CN.md +11 -29
  343. package/templates/.agents/skills/restore-task/config/verify.json +1 -2
  344. package/templates/.agents/skills/review-analysis/SKILL.en.md +13 -25
  345. package/templates/.agents/skills/review-analysis/SKILL.zh-CN.md +13 -33
  346. package/templates/.agents/skills/review-analysis/config/verify.en.json +3 -4
  347. package/templates/.agents/skills/review-analysis/config/verify.zh-CN.json +3 -4
  348. package/templates/.agents/skills/review-analysis/reference/output-templates.en.md +9 -12
  349. package/templates/.agents/skills/review-analysis/reference/output-templates.zh-CN.md +9 -12
  350. package/templates/.agents/skills/review-analysis/reference/report-template.en.md +9 -2
  351. package/templates/.agents/skills/review-analysis/reference/report-template.zh-CN.md +9 -2
  352. package/templates/.agents/skills/review-analysis/reference/review-criteria.en.md +7 -0
  353. package/templates/.agents/skills/review-analysis/reference/review-criteria.zh-CN.md +7 -0
  354. package/templates/.agents/skills/review-code/SKILL.en.md +22 -36
  355. package/templates/.agents/skills/review-code/SKILL.zh-CN.md +23 -41
  356. package/templates/.agents/skills/review-code/config/verify.en.json +3 -4
  357. package/templates/.agents/skills/review-code/config/verify.zh-CN.json +3 -4
  358. package/templates/.agents/skills/review-code/reference/output-templates.en.md +56 -18
  359. package/templates/.agents/skills/review-code/reference/output-templates.zh-CN.md +56 -18
  360. package/templates/.agents/skills/review-code/reference/report-template.en.md +11 -4
  361. package/templates/.agents/skills/review-code/reference/report-template.zh-CN.md +11 -4
  362. package/templates/.agents/skills/review-code/reference/review-criteria.en.md +7 -0
  363. package/templates/.agents/skills/review-code/reference/review-criteria.zh-CN.md +7 -0
  364. package/templates/.agents/skills/review-plan/SKILL.en.md +13 -25
  365. package/templates/.agents/skills/review-plan/SKILL.zh-CN.md +13 -33
  366. package/templates/.agents/skills/review-plan/config/verify.en.json +3 -4
  367. package/templates/.agents/skills/review-plan/config/verify.zh-CN.json +3 -4
  368. package/templates/.agents/skills/review-plan/reference/output-templates.en.md +9 -12
  369. package/templates/.agents/skills/review-plan/reference/output-templates.zh-CN.md +9 -12
  370. package/templates/.agents/skills/review-plan/reference/report-template.en.md +9 -2
  371. package/templates/.agents/skills/review-plan/reference/report-template.zh-CN.md +9 -2
  372. package/templates/.agents/skills/review-plan/reference/review-criteria.en.md +7 -0
  373. package/templates/.agents/skills/review-plan/reference/review-criteria.zh-CN.md +7 -0
  374. package/templates/.agents/skills/update-agent-infra/SKILL.en.md +1 -2
  375. package/templates/.agents/skills/update-agent-infra/SKILL.zh-CN.md +1 -2
  376. package/templates/.agents/skills/update-agent-infra/scripts/sync-templates.js +3 -15
  377. package/templates/.agents/skills/watch-pr/SKILL.en.md +24 -14
  378. package/templates/.agents/skills/watch-pr/SKILL.zh-CN.md +25 -15
  379. package/templates/.agents/skills/watch-pr/config/verify.json +1 -2
  380. package/templates/.agents/skills/watch-pr/reference/monitor-and-heal.en.md +2 -2
  381. package/templates/.agents/skills/watch-pr/reference/monitor-and-heal.zh-CN.md +2 -2
  382. package/templates/.agents/templates/task.en.md +24 -1
  383. package/templates/.agents/templates/task.zh-CN.md +24 -1
  384. package/templates/.claude/commands/analyze-task.en.md +1 -1
  385. package/templates/.claude/commands/analyze-task.zh-CN.md +1 -1
  386. package/templates/.claude/commands/block-task.en.md +1 -1
  387. package/templates/.claude/commands/block-task.zh-CN.md +1 -1
  388. package/templates/.claude/commands/cancel-task.en.md +1 -1
  389. package/templates/.claude/commands/cancel-task.zh-CN.md +1 -1
  390. package/templates/.claude/commands/check-task.en.md +1 -1
  391. package/templates/.claude/commands/check-task.zh-CN.md +1 -1
  392. package/templates/.claude/commands/code-task.en.md +1 -1
  393. package/templates/.claude/commands/code-task.zh-CN.md +1 -1
  394. package/templates/.claude/commands/commit.en.md +1 -0
  395. package/templates/.claude/commands/commit.zh-CN.md +1 -0
  396. package/templates/.claude/commands/complete-manual-validation.en.md +1 -1
  397. package/templates/.claude/commands/complete-manual-validation.zh-CN.md +1 -1
  398. package/templates/.claude/commands/complete-task.en.md +1 -1
  399. package/templates/.claude/commands/complete-task.zh-CN.md +1 -1
  400. package/templates/.claude/commands/create-pr.en.md +1 -1
  401. package/templates/.claude/commands/create-pr.zh-CN.md +1 -1
  402. package/templates/.claude/commands/plan-task.en.md +1 -1
  403. package/templates/.claude/commands/plan-task.zh-CN.md +1 -1
  404. package/templates/.claude/commands/review-analysis.en.md +1 -1
  405. package/templates/.claude/commands/review-analysis.zh-CN.md +1 -1
  406. package/templates/.claude/commands/review-code.en.md +1 -1
  407. package/templates/.claude/commands/review-code.zh-CN.md +1 -1
  408. package/templates/.claude/commands/review-plan.en.md +1 -1
  409. package/templates/.claude/commands/review-plan.zh-CN.md +1 -1
  410. package/templates/.claude/commands/watch-pr.en.md +1 -1
  411. package/templates/.claude/commands/watch-pr.zh-CN.md +1 -1
  412. package/templates/.gemini/commands/_project_/analyze-task.en.toml +2 -0
  413. package/templates/.gemini/commands/_project_/analyze-task.zh-CN.toml +2 -0
  414. package/templates/.gemini/commands/_project_/block-task.en.toml +2 -0
  415. package/templates/.gemini/commands/_project_/block-task.zh-CN.toml +2 -0
  416. package/templates/.gemini/commands/_project_/cancel-task.en.toml +2 -0
  417. package/templates/.gemini/commands/_project_/cancel-task.zh-CN.toml +2 -0
  418. package/templates/.gemini/commands/_project_/check-task.en.toml +2 -0
  419. package/templates/.gemini/commands/_project_/check-task.zh-CN.toml +2 -0
  420. package/templates/.gemini/commands/_project_/code-task.en.toml +2 -0
  421. package/templates/.gemini/commands/_project_/code-task.zh-CN.toml +2 -0
  422. package/templates/.gemini/commands/_project_/commit.en.toml +4 -0
  423. package/templates/.gemini/commands/_project_/commit.zh-CN.toml +4 -0
  424. package/templates/.gemini/commands/_project_/complete-manual-validation.en.toml +2 -0
  425. package/templates/.gemini/commands/_project_/complete-manual-validation.zh-CN.toml +2 -0
  426. package/templates/.gemini/commands/_project_/complete-task.en.toml +2 -0
  427. package/templates/.gemini/commands/_project_/complete-task.zh-CN.toml +2 -0
  428. package/templates/.gemini/commands/_project_/create-pr.en.toml +2 -0
  429. package/templates/.gemini/commands/_project_/create-pr.zh-CN.toml +2 -0
  430. package/templates/.gemini/commands/_project_/plan-task.en.toml +2 -0
  431. package/templates/.gemini/commands/_project_/plan-task.zh-CN.toml +2 -0
  432. package/templates/.gemini/commands/_project_/review-analysis.en.toml +2 -0
  433. package/templates/.gemini/commands/_project_/review-analysis.zh-CN.toml +2 -0
  434. package/templates/.gemini/commands/_project_/review-code.en.toml +2 -0
  435. package/templates/.gemini/commands/_project_/review-code.zh-CN.toml +2 -0
  436. package/templates/.gemini/commands/_project_/review-plan.en.toml +2 -0
  437. package/templates/.gemini/commands/_project_/review-plan.zh-CN.toml +2 -0
  438. package/templates/.gemini/commands/_project_/watch-pr.en.toml +2 -0
  439. package/templates/.gemini/commands/_project_/watch-pr.zh-CN.toml +2 -0
  440. package/templates/.git-hooks/check-large-files.cjs +92 -0
  441. package/templates/.git-hooks/check-version-format.sh +5 -1
  442. package/templates/.git-hooks/pre-commit +1 -0
  443. package/templates/.opencode/commands/analyze-task.en.md +1 -1
  444. package/templates/.opencode/commands/analyze-task.zh-CN.md +1 -1
  445. package/templates/.opencode/commands/check-task.en.md +1 -1
  446. package/templates/.opencode/commands/check-task.zh-CN.md +1 -1
  447. package/templates/.opencode/commands/code-task.en.md +1 -1
  448. package/templates/.opencode/commands/code-task.zh-CN.md +1 -1
  449. package/templates/.opencode/commands/commit.en.md +2 -0
  450. package/templates/.opencode/commands/commit.zh-CN.md +2 -0
  451. package/templates/.opencode/commands/complete-task.en.md +1 -1
  452. package/templates/.opencode/commands/complete-task.zh-CN.md +1 -1
  453. package/templates/.opencode/commands/plan-task.en.md +1 -1
  454. package/templates/.opencode/commands/plan-task.zh-CN.md +1 -1
  455. package/templates/.opencode/commands/review-analysis.en.md +1 -1
  456. package/templates/.opencode/commands/review-analysis.zh-CN.md +1 -1
  457. package/templates/.opencode/commands/review-code.en.md +1 -1
  458. package/templates/.opencode/commands/review-code.zh-CN.md +1 -1
  459. package/templates/.opencode/commands/review-plan.en.md +1 -1
  460. package/templates/.opencode/commands/review-plan.zh-CN.md +1 -1
  461. package/templates/.agents/scripts/platform-adapters/platform-sync.github.js +0 -40
  462. package/templates/.agents/scripts/platform-adapters/platform-sync.js +0 -13
  463. package/templates/.agents/scripts/review-diff-fingerprint.js +0 -170
  464. package/templates/.agents/scripts/workflow-warnings.js +0 -290
  465. package/templates/.agents/skills/code-task/scripts/detect-mode.js +0 -257
  466. package/templates/.agents/skills/release/scripts/manage-milestones.github.sh +0 -80
  467. package/templates/.agents/skills/release/scripts/manage-milestones.sh +0 -6
@@ -23,14 +23,12 @@
23
23
  "验证详情",
24
24
  "PR 摘要同步"
25
25
  ],
26
- "freshness_minutes": 30,
27
26
  "required_patterns": [
28
27
  "^\\$ "
29
28
  ]
30
29
  },
31
30
  "activity-log": {
32
- "expected_action_pattern": "Complete Manual Validation",
33
- "freshness_minutes": 30
31
+ "expected_action_pattern": "Complete Manual Validation"
34
32
  },
35
33
  "review-ledger": {
36
34
  "stage_scope": ["analysis", "plan", "code"]
@@ -1,60 +1,16 @@
1
- # PR Summary Manual Validation Update
1
+ # Manual-validation PR Summary Update
2
2
 
3
- Read this file before `complete-manual-validation` updates the PR summary comment.
3
+ Run only for a valid `{task-id}` whose task.md binds a `pr_number`; any user-supplied PR identity must match it.
4
4
 
5
- ## Responsibility Boundary
5
+ Follow `.agents/rules/pr-sync.md` for the shared summary structure and failure semantics.
6
6
 
7
- This file only describes PR summary comment updates. The manual-validation artifact schema lives in `reference/report-template.md`.
7
+ 1. After the canonical `manual-validation*` artifact is written, run `agent-infra-internal platform-pr summary-context {task-id}`.
8
+ 2. Rebuild the summary from canonical inputs and render `### ✅ Manual Validation Passed` with the validation time and explanation.
9
+ 3. Write the plain body to a temporary file and run:
8
10
 
9
- ## PR Number Resolution
10
-
11
- 1. Resolve `{task-ref}` to the task directory and read `task.md`.
12
- 2. Prefer `task.md` frontmatter `pr_number`.
13
- 3. If `pr_number` is empty, parse `{pr-ref}` from user input: `#123`, `123`, or a full PR URL.
14
- 4. If `task.md` already has `pr_number` and the user also passed `{pr-ref}`, they must match.
15
- 5. If they differ, fail with `summary failed: pr_number mismatch`. Do not write an artifact or PATCH a comment.
16
- 6. If both are missing, fail with `summary failed: missing pr_number`. Do not write an artifact or PATCH a comment.
17
-
18
- ## Required Reads
19
-
20
- Before remote operations, read:
21
- - `.agents/rules/issue-sync.md` to resolve upstream repository and permissions.
22
- - `.agents/rules/pr-sync.md` to reuse the PR summary hidden marker, Issues comments API, and shell safety rules.
23
-
24
- ## Comment Lookup
25
-
26
- Fetch ordinary PR comments with the current platform's Issues comments API. Follow the concrete command pattern in `.agents/rules/pr-sync.md`.
27
-
28
- Find the `<!-- sync-pr:{task-id}:summary -->` summary comment. If it is missing, fail with `summary failed: missing sync-pr summary`.
29
-
30
- On failure, do not create an ordinary validation comment, do not create a partial summary comment, and do not write a `manual-validation*` artifact.
31
-
32
- ## Manual Validation Scope Extraction
33
-
34
- - If a `### ⚠️ Manual Verification Required` section exists, take that section until the next `### ` heading.
35
- - If the current summary already says `### ✅ Manual Validation Passed`, allow a new validation artifact round and update the details.
36
- - If the current summary says `### ✅ No Manual Verification Needed`, stop and report that this PR does not need manual validation; do not mark it as passed.
37
-
38
- ## Three-Branch Rendering
39
-
40
- The updated `{manual-validation-section}` is:
41
-
42
- ```markdown
43
- ### ✅ Manual Validation Passed
44
-
45
- - Validation time: {time}
46
- - Validation notes: {verification-summary}
11
+ ```bash
12
+ agent-infra-internal platform-pr summary-sync {task-id} \
13
+ --agent {agent} --body-file {summary-body-file}
47
14
  ```
48
15
 
49
- Later `pr-sync` aggregation renders in this priority order:
50
- 1. latest `manual-validation.md` / `manual-validation-r{N}.md` has a passed verdict -> `### ✅ Manual Validation Passed`
51
- 2. no passed artifact and retained manual-validation items exist -> `### ⚠️ Manual Verification Required`
52
- 3. no passed artifact and no retained manual-validation items -> `### ✅ No Manual Verification Needed`
53
-
54
- ## PATCH Rules
55
-
56
- Update existing comments with Issues comments PATCH and follow the heredoc safety rules in `.agents/rules/pr-sync.md`.
57
-
58
- ## Result Reporting
59
-
60
- Return `summary updated`, `summary skipped (no diff)`, or `summary failed: <reason>`.
16
+ The core owns marker/HEAD wrapping, pagination, and in-place reconciliation. If context says no manual validation is required, stop without marking it passed.
@@ -1,87 +1,18 @@
1
1
  # PR 摘要人工验证更新
2
2
 
3
- 在 `complete-manual-validation` 更新 PR 摘要评论前先读取本文件。
3
+ 人工验证产物结构见 `reference/report-template.md`。本步骤只在有效 `{task-id}` 且 task.md 已绑定 `pr_number` 时执行;用户另传 PR 身份时必须与绑定值一致。
4
4
 
5
- ## 职责边界
5
+ 摘要结构与失败语义统一遵循 `.agents/rules/pr-sync.md`。
6
6
 
7
- 本文件只描述 PR 摘要评论更新流程。人工验证产物结构见 `reference/report-template.md`。
7
+ 1. 在 canonical `manual-validation*` artifact 落盘后,调用 `agent-infra-internal platform-pr summary-context {task-id}`。
8
+ 2. 从返回的最新产物重新聚合摘要,将人工校验段渲染为 `### ✅ 人工验证已通过`,写明验证时间和说明。
9
+ 3. 把纯正文写入临时文件,调用:
8
10
 
9
- ## PR 号解析
10
-
11
- 1. 从 `{task-ref}` 定位任务目录并读取 `task.md`。
12
- 2. 优先读取 `task.md` frontmatter 的 `pr_number`。
13
- 3. 如果 `pr_number` 为空,再从用户输入的 `{pr-ref}` 解析:
14
- - `#123`
15
- - `123`
16
- - `{platform-host}/{owner}/{repo}/pull/123`
17
- 4. 如果 `task.md` 已有 `pr_number`,且用户也传入 `{pr-ref}`,两者必须一致。
18
- 5. 两者不一致时失败:`summary failed: pr_number mismatch`。不写 artifact,不 PATCH 评论。
19
- 6. 两者都缺失时失败:`summary failed: missing pr_number`。不写 artifact,不 PATCH 评论。
20
-
21
- ## 前置读取
22
-
23
- 执行远端操作前先读取:
24
- - `.agents/rules/issue-sync.md`,完成 upstream 仓库检测和权限检测。
25
- - `.agents/rules/pr-sync.md`,复用 PR 摘要隐藏标记、Issues comments API 和 Shell 安全规则。
26
-
27
- ## 评论查找
28
-
29
- 使用当前平台的 Issues comments API 查询 PR 上的普通评论,具体命令遵循 `.agents/rules/pr-sync.md`。
30
-
31
- 查找以以下标记开头或包含该标记的评论:
32
-
33
- ```html
34
- <!-- sync-pr:{task-id}:summary -->
35
- ```
36
-
37
- 找不到时失败:
38
-
39
- ```text
40
- summary failed: missing sync-pr summary
41
- ```
42
-
43
- 失败时不创建普通验证留言,不创建部分摘要评论,不写 `manual-validation*` artifact。
44
-
45
- ## 待人工校验范围提取
46
-
47
- 从当前摘要评论中提取人工校验范围:
48
- - 如果存在 `### ⚠️ 需人工校验` 段,取该段到下一个 `### ` heading 之前的内容。
49
- - 如果当前摘要已是 `### ✅ 人工验证已通过`,允许再次写入新一轮验证产物并更新详情。
50
- - 如果当前摘要是 `### ✅ 无需人工校验`,停止并提示当前 PR 无需人工校验;不误标为人工验证已通过。
51
-
52
- ## 三分支渲染
53
-
54
- 更新后的 `{manual-validation-section}` 为:
55
-
56
- ```markdown
57
- ### ✅ 人工验证已通过
58
-
59
- - 验证时间:{time}
60
- - 验证说明:{verification-summary}
11
+ ```bash
12
+ agent-infra-internal platform-pr summary-sync {task-id} \
13
+ --agent {agent} --body-file {summary-body-file}
61
14
  ```
62
15
 
63
- 后续 `pr-sync` 聚合时按以下优先级渲染:
64
- 1. 最新 `manual-validation.md` / `manual-validation-r{N}.md` 结论为通过 -> `### ✅ 人工验证已通过`
65
- 2. 没有通过产物且仍有保留人工校验项 -> `### ⚠️ 需人工校验`
66
- 3. 没有通过产物且无保留人工校验项 -> `### ✅ 无需人工校验`
67
-
68
- ## PATCH 规则
69
-
70
- 更新已有评论时必须使用 Issues comments PATCH,具体命令遵循 `.agents/rules/pr-sync.md`。
71
-
72
- Shell 安全规则:
73
- - 先读取本地和远端正文,再构造完整正文。
74
- - heredoc 使用单引号 `<<'EOF'`。
75
- - 不在 heredoc 内执行变量展开或命令替换。
76
- - 构造含 `<!-- -->` 的正文时不用 `echo`。
77
-
78
- ## 结果回传
16
+ marker、当前 HEAD、分页查找和原地更新由 core 负责。若当前 context 表明无需人工校验,则停止并返回 `summary failed: no manual validation required`,不误标通过。
79
17
 
80
- 返回以下结果之一:
81
- - `summary updated`
82
- - `summary skipped (no diff)`
83
- - `summary failed: missing pr_number`
84
- - `summary failed: pr_number mismatch`
85
- - `summary failed: missing sync-pr summary`
86
- - `summary failed: no manual validation required`
87
- - `summary failed: <reason>`
18
+ 结果回传:`summary updated`、`summary skipped (no diff)` 或 `summary failed: <reason>`。
@@ -3,6 +3,7 @@ name: complete-task
3
3
  description: >
4
4
  Mark a task as completed and archive it.
5
5
  Use when a task's work is done and verified and you want to close and archive it.
6
+ Only invoke this skill automatically when the conversation includes a resolvable task reference.
6
7
  ---
7
8
 
8
9
  # Complete Task
@@ -21,26 +22,20 @@ After loading workflow / skill / rules instructions, and before any task-state j
21
22
  Run these commands and paste the raw output into both the user-facing reply and this round's `## State Check` section:
22
23
 
23
24
  ```bash
24
- git status -s
25
- ls -la .agents/workspace/active/{task-id}/
26
- tail .agents/workspace/active/{task-id}/task.md
25
+ agent-infra-internal task-snapshot {task-id} --format text
27
26
  ```
28
27
 
29
28
  Before the state check is complete, do not make external-state assertions such as "the code is unchanged", "tests passed", or "there are no other references", including in reasoning. This gate is only a structural floor; evidence pairing and authenticity still require the report template and review discipline.
30
29
 
31
- ## Task id short ref
30
+ ## Task Context Resolution
32
31
 
33
- > If `{task-id}` matches `^[#]?[0-9]+$` (bare numeric or `#`-prefixed), follow the "SKILL parameter resolver" section of `.agents/rules/task-short-id.md`; treat `{task-id}` as the resolved full `TASK-YYYYMMDD-HHMMSS` form for every downstream command.
32
+ > The entry point may omit the task ref and also accepts a legacy positional ref or `--task <ref>` / `-t <ref>`. Separate task scope from the full arguments while preserving every business operand, then call `agent-infra-internal task-context resolve {task-scope}` where `{task-scope}` is empty, one positional ref, or one task flag. Read only `taskId` from the structured result and bind `{task-id}` to that full `TASK-YYYYMMDD-HHMMSS` for downstream commands. Pass through resolution failures without scanning tasks locally.
34
33
 
35
- ## Step Start: Write the started Marker
34
+ > Resolve the task reference, then confirm that the task is in a state or directory supported by this skill and that `task.md` exists; if it cannot be located, handle it as a missing task and stop.
36
35
 
37
- After confirming the task exists and before this round's first artifact action, append a started marker to task.md `## Activity Log` (same base action as this round's done entry plus a ` [started]` suffix, note `started`):
36
+ ## Step Start: Local Lifecycle Boundary
38
37
 
39
- ```
40
- - {YYYY-MM-DD HH:mm:ss±HH:MM} — **Complete Task [started]** by {agent} — started
41
- ```
42
-
43
- `ai task log` pairs it with the done entry written on completion onto one row (in progress → done). Format and pairing rules: see the "Activity Log started / done dual-marker convention" in `.agents/rules/task-management.md`.
38
+ On the normal path, complete business updates, platform sync, and the pre-completion gate while the task is active. Only then may the lifecycle intent in Step 6 atomically commit base terminal fields, the started/done pair, the directory move, and short-id release. Do not write those mechanical fields first. An archived task may only enter `finalization-retry`; do not move it back or rerun lifecycle.
44
39
 
45
40
  ## Steps
46
41
 
@@ -51,9 +46,12 @@ Check that the task exists in `.agents/workspace/active/{task-id}/`.
51
46
  Note: `{task-id}` format is `TASK-{yyyyMMdd-HHmmss}`, e.g. `TASK-20260306-143022`
52
47
 
53
48
  If not found in `active/`, check `blocked/` and `completed/`:
54
- - If in `completed/`: Inform user the task is already completed
49
+ - If in `completed/` and task.md has a matching Complete Task Activity Log entry: enter Scenario B `finalization-retry`, skip Steps 2-6, and proceed to Step 7
50
+ - If in `completed/` without a matching entry: report the incomplete terminal identity and stop without hand-repairing it
55
51
  - If in `blocked/`: Inform user the task is blocked; suggest unblocking first
56
52
 
53
+ Scenario A is the normal active-task path. Scenario B `finalization-retry` retries only the archived task comment and terminal gate.
54
+
57
55
  ### 2. Verify Completion Prerequisites (Failure Must Stop)
58
56
 
59
57
  **Gate read (project-level PR flow policy)**: Before running this step, read `.agents/.airc.json`'s `prFlow` field (three states: field absent = recommend PR by default, skipping allowed; `"required"` = PR mandatory; `"disabled"` = no PR flow), and `pr_status` from `task.md` frontmatter (`pending` / `created` / `skipped`).
@@ -89,16 +87,7 @@ Before marking complete, verify ALL of these:
89
87
  - [ ] Code has been reviewed (`review-code.md` or `review-code-r{N}.md` exists, and the latest review verdict is Approved; or review was done externally)
90
88
  - [ ] Code has been committed (no uncommitted changes related to this task)
91
89
  - [ ] Tests are passing
92
- - [ ] The disagreement ledger has no unclosed disagreements and there are no un-re-reviewed post-review commits (mechanically checked by the "Pre-completion hard gate" below)
93
-
94
- **Pre-completion hard gate (run BEFORE moving the directory or releasing the short id)**: the Step 7 `gate complete-task` runs only after the directory has been `mv`-ed to `completed/` and the short id released; to avoid a gate failure occurring after those irreversible operations, run the two new completion gates on the **active directory** first:
95
-
96
- ```bash
97
- node .agents/scripts/validate-artifact.js check review-ledger .agents/workspace/active/{task-id} --skill complete-task --format text
98
- node .agents/scripts/validate-artifact.js check post-review-commit .agents/workspace/active/{task-id} --skill complete-task --format text
99
- ```
100
-
101
- A non-zero exit from either (fail/blocked) -> treat as an unmet prerequisite and **stop**, do not run Steps 3-7. If the output contains `reviewed snapshot was not anchored`, rerun `commit` or `review-code`; never fall back to the review baseline. `--force` does **NOT** lift this hard gate: unclosed disagreements must first be closed in the ledger (`confirmed`/`closed`/`human-decided`), and un-re-reviewed commits after an anchor must be re-reviewed via `review-code` or covered by a `post-review-commit` / `human-decided` exemption row in the ledger.
90
+ - [ ] The disagreement ledger has no unclosed disagreements or un-re-reviewed post-review commits; local HEAD, `last_reviewed_commit`, and PR head either match strictly or a merged squash has complete platform identity, Git topology, and content-equivalence evidence
102
91
 
103
92
  > **⚠️ Prerequisite Branch Check — you must decide whether to continue or stop before proceeding:**
104
93
  >
@@ -106,7 +95,7 @@ A non-zero exit from either (fail/blocked) -> treat as an unmet prerequisite and
106
95
  > - If any condition is missing -> **stop by default** and output the prerequisite warning
107
96
  > - Only continue with unmet prerequisites when the user explicitly requested `--force`
108
97
  >
109
- > **Do not continue to Steps 3-7 when prerequisites are not met, and do not output "Task {task-id} completed; task directory moved to completed/."**
98
+ > **Do not continue to Steps 3-8 when prerequisites are not met, and do not output "Task {task-id} completed; task directory moved to completed/."**
110
99
 
111
100
  If any prerequisite is not met, warn the user:
112
101
  ```
@@ -116,78 +105,85 @@ Cannot complete task {task-id} - prerequisites not met:
116
105
  Please complete the missing steps first, or use --force to override.
117
106
  ```
118
107
 
119
- If prerequisites are not met and the user did not explicitly provide `--force`, stop immediately and do not execute Steps 3-7.
120
-
121
- ### 3. Update Task Metadata
108
+ If prerequisites are not met and the user did not explicitly provide `--force`, stop immediately and do not execute Steps 3-8.
122
109
 
123
- Get the current time:
124
-
125
- ```bash
126
- date "+%Y-%m-%d %H:%M:%S%z" | sed 's/\([+-][0-9][0-9]\)\([0-9][0-9]\)$/\1:\2/'
127
- ```
110
+ ### 3. Complete Business-Only Content
128
111
 
129
- Update `.agents/workspace/active/{task-id}/task.md`:
130
- - `status`: completed
131
- - `current_step`: completed
132
- - `completed_at`: {current timestamp}
133
- - `target_date`: write the date portion (`YYYY-MM-DD`) of `completed_at` only when empty; keep any existing (human-entered) value
134
- - `updated_at`: {current timestamp}
135
- - `agent_infra_version`: value from `.agents/rules/version-stamp.md`
112
+ Update only content that the lifecycle core does not own:
136
113
  - Add or update the `## State Check` section with the raw Step 0 audit command output, including `$ ` prompt lines, before `## Activity Log`
137
114
  - Mark all workflow steps as complete
138
115
  - Verify and check off all items in `## Completion Checklist` (change `- [ ]` to `- [x]`)
139
- - **Append** to `## Activity Log` (do NOT overwrite previous entries):
140
- ```
141
- - {YYYY-MM-DD HH:mm:ss±HH:MM} — **Complete Task** by {agent} — Task moved to completed/
142
- ```
143
116
 
144
- ### 4. Move Task
117
+ Do not write `status/current_step/completed_at/updated_at/agent_infra_version`, the base Activity Log pair, the directory move, or short-id state here. Step 6 owns them.
118
+
119
+ ### 4. Sync the Platform While Active
120
+
121
+ Check whether task.md has a valid `issue_number`. If it does not, skip this step without output.
122
+
123
+ > Issue metadata boundaries live in `.agents/rules/issue-sync.md`; comments use internal platform intents.
145
124
 
146
- Move the task directory from active to completed:
125
+ When an `issue_number` exists, execute in this exact order:
126
+
127
+ 1. In artifact-catalog order, run `agent-infra-internal platform-comment sync {task-id} --kind artifact --artifact {artifact} --agent {artifact-agent} --backfill` for every local artifact.
128
+ 2. Run `agent-infra-internal platform-issue sync {task-id} --agent {agent} --requirements --fields`.
129
+ 3. Write the business summary to a temporary file and run `agent-infra-internal platform-comment sync {task-id} --kind summary --body-file {path} --agent {agent}`.
130
+
131
+ Do not sync the task comment here; it requires the terminal task.md written by lifecycle. Do not set a `status:` label; platform automation clears status labels after the Issue closes.
132
+
133
+ If any operation fails, the task must remain active and its short id must remain valid. Record the failure with the matching structured warning intent, then stop without entering Step 5:
147
134
 
148
135
  ```bash
149
- mv .agents/workspace/active/{task-id} .agents/workspace/completed/{task-id}
136
+ agent-infra-internal task-warning {task-id} add --step complete-task --severity ACTION_REQUIRED --code {COMMENT_SYNC_FAILED|REQUIREMENTS_SYNC_FAILED|SUMMARY_SYNC_FAILED|NETWORK_RETRY_EXHAUSTED} --target {artifact|issue|summary|platform} --message "{error_code}: {error_message}" --action "Fix the platform sync problem and rerun complete-task"
150
137
  ```
151
138
 
152
- ### 5. Verify Move
139
+ The core deduplicates the stable `step/code/target` tuple. Callers must not allocate warning ids or edit ledger rows.
140
+
141
+ ### 5. Run the Active Pre-completion Hard Gate
142
+
143
+ After platform writes succeed and before moving the directory or releasing the short id, run:
153
144
 
154
145
  ```bash
155
- ls .agents/workspace/completed/{task-id}/task.md
146
+ agent-infra-internal task-verify {task-id} complete-task.preflight --format text
156
147
  ```
157
148
 
158
- Confirm the task directory was successfully moved.
149
+ This event runs `review-ledger`, `post-review-commit`, then `platform-sync-preflight`. On any non-zero exit (fail/blocked), keep the task active, derive the stable code/target from the gate result, record it through `task-warning ... add --step complete-task ...`, and stop. For a review/head mismatch, rerun `commit` or `review-code`; never fall back to the review baseline.
150
+
151
+ `--force` does not lift this hard gate: close ledger disagreements; re-review or exempt post-review commits, or prove a content-equivalent single-parent squash merge from the bound PR snapshot and local Git objects; then pass platform preflight. Missing platform facts, Git objects, topology, or content evidence fails closed. Required checks remain enforced before merge by branch protection / rulesets and the `review-code` / `watch-pr` routes.
159
152
 
160
- ### 6. Sync to Issue
153
+ ### 6. Apply the Local Lifecycle Intent and Verify the Move
161
154
 
162
- Check whether `task.md` includes a valid `issue_number`. If not, skip this step and output nothing.
155
+ ```bash
156
+ agent-infra-internal task-lifecycle {task-id} complete --agent {agent}
157
+ ```
163
158
 
164
- > Issue sync rules live in `.agents/rules/issue-sync.md`. Read that file before syncing, and complete upstream repository detection plus permission detection.
159
+ Only `status=applied|no-op` means local completion succeeded. On `status=failed`, show the structured error and recovery steps and retry the same intent; do not claim completion or hand-repair partial state.
160
+
161
+ ```bash
162
+ ls .agents/workspace/completed/{task-id}/task.md
163
+ ```
165
164
 
166
- If a valid `issue_number` exists:
167
- - First scan and backfill unpublished `task.md`, `analysis*.md`, `review-analysis*.md`, `plan*.md`, `review-plan*.md`, `code*.md`, and `review-code*.md` comments using the backfill rules in `.agents/rules/issue-sync.md` (`task.md` uses the idempotent update path)
168
- - Backfill checked `## Requirements` items to the Issue body by following the requirements-checkbox sync steps in issue-sync.md
169
- - Do not set any `status:` label — platform automation should clear status labels after the Issue closes; the pre-completion platform-sync gate verifies that a CLOSED Issue has no `status:` labels and fails until the workflow finishes or is repaired
170
- - Finally create or update the summary comment marked with the summary marker defined in `.agents/rules/issue-sync.md`
171
- - Read `.agents/rules/issue-fields.md` and follow Flow A to sync every non-empty Issue field (`priority`/`effort`/`start_date`/`target_date`) from `task.md` to the Issue (idempotent; skip without blocking when `has_push=false` or the fetch/write fails)
165
+ Confirm the task directory was successfully moved.
172
166
 
173
- ### 7. Verification Gate
167
+ ### 7. Sync the Terminal Task Comment and Run the Gate
174
168
 
175
- **Release short id** (after the directory has already been moved; the script is idempotent and returns 0 even if the task isn't registered):
169
+ Both Scenario A and Scenario B `finalization-retry` execute this step from the completed directory. If a valid `issue_number` exists, first run:
176
170
 
177
171
  ```bash
178
- node .agents/scripts/task-short-id.js release "$task_id" || true
172
+ agent-infra-internal platform-comment sync {task-id} --kind task --agent {agent}
179
173
  ```
180
174
 
175
+ If this call fails, the task is already archived and `task-warning` cannot accept it. Keep the task completed and stop. After fixing the network or platform issue, rerun complete-task; Step 1 will enter `finalization-retry` and repeat only this step.
176
+
181
177
  Run the verification gate to confirm the task artifact and sync state are valid:
182
178
 
183
179
  ```bash
184
- node .agents/scripts/validate-artifact.js gate complete-task .agents/workspace/completed/{task-id} --format text
180
+ agent-infra-internal task-verify {task-id} complete-task.completed --format text
185
181
  ```
186
182
 
187
183
  Handle the result as follows:
188
184
  - exit code 0 (all checks passed) -> continue to the "Inform User" step
189
185
  - exit code 1 (validation failed) -> fix the reported issues and run the gate again
190
- - exit code 2 (network blocked) -> stop and tell the user that human intervention is required
186
+ - exit code 2 (network blocked or status-label cleanup is still pending) -> keep the task completed and stop; rerun complete-task later to enter `finalization-retry`
191
187
 
192
188
  Keep the gate output in your reply as fresh evidence. Do not claim completion without output from this run.
193
189
 
@@ -3,6 +3,7 @@ name: complete-task
3
3
  description: >
4
4
  标记任务完成并归档。
5
5
  当任务工作已完成并验证、需要收尾归档时使用。
6
+ 仅当对话包含可解析的任务引用时才可自动调用本技能。
6
7
  ---
7
8
 
8
9
  # 完成任务
@@ -21,26 +22,20 @@ description: >
21
22
  运行以下命令,并把原文粘贴到回复正文和本轮产物的 `## 状态核对` 段:
22
23
 
23
24
  ```bash
24
- git status -s
25
- ls -la .agents/workspace/active/{task-id}/
26
- tail .agents/workspace/active/{task-id}/task.md
25
+ agent-infra-internal task-snapshot {task-id} --format text
27
26
  ```
28
27
 
29
28
  状态核对完成前,禁止任何关于外部状态的断言(例如“代码没变”“测试已通过”“没有其他引用”),包括思考阶段。本门禁只提供结构下限;逐条证据配对和真实性仍需按报告模板与审查要求核对。
30
29
 
31
- ## 任务入参短号别名
30
+ ## 任务上下文解析
32
31
 
33
- > 如果 `{task-id}` 入参匹配 `^[#]?[0-9]+$`(裸数字或带 `#` 前缀),先读取 `.agents/rules/task-short-id.md` 的「SKILL 入参解析」段执行解析;后续命令视 `{task-id}` 为解析后的全长 `TASK-YYYYMMDD-HHMMSS` 形式。
32
+ > 入口允许省略 task ref,也接受旧位置 task ref 或 `--task <ref>` / `-t <ref>`。先从完整参数中分离 task scope 并原样保留其他业务操作数,再调用 `agent-infra-internal task-context resolve {task-scope}`;`{task-scope}` 为空、位置 ref 或 task flag 之一。只读取结构化结果的 `taskId`,后续把 `{task-id}` 绑定为该完整 `TASK-YYYYMMDD-HHMMSS`。解析失败时透传非零退出码,不自行扫描任务。
34
33
 
35
- ## 步骤开始:写入 started 标记
34
+ > 解析任务引用,并确认任务位于本技能支持的状态或目录且存在 `task.md`;无法定位时按未找到任务处理并停止。
36
35
 
37
- 确认任务存在后、本轮第一个产出动作之前,向 task.md `## 活动日志` 追加一条 started 标记(与本轮 done 条目同基名 + ` [started]` 后缀,note 用 `started`):
36
+ ## 步骤开始:本地生命周期边界
38
37
 
39
- ```
40
- - {YYYY-MM-DD HH:mm:ss±HH:MM} — **Complete Task [started]** by {agent} — started
41
- ```
42
-
43
- `ai task log` 会把它与完成时写入的 done 条目配对成一行(进行中 → 已完成)。格式与配对规则见 `.agents/rules/task-management.md` 的「Activity Log started / done 双标记约定」。
38
+ 正常完成路径在 active 阶段完成业务更新、平台同步和预完成门禁后,才由步骤 6 的单次 lifecycle intent 原子完成基础终态字段、started/done 日志、目录转移和短号释放;不得提前手工写入这些机械状态。已归档任务只允许进入 `finalization-retry` 场景,不回迁目录或重新执行 lifecycle。
44
39
 
45
40
  ## 执行步骤
46
41
  ### 1. 验证任务存在
@@ -50,9 +45,12 @@ tail .agents/workspace/active/{task-id}/task.md
50
45
  注意:`{task-id}` 格式为 `TASK-{yyyyMMdd-HHmmss}`,例如 `TASK-20260306-143022`
51
46
 
52
47
  如果在 `active/` 中未找到,检查 `blocked/` 和 `completed/`:
53
- - 如果在 `completed/`:告知用户任务已完成
48
+ - 如果在 `completed/` 且 task.md 存在匹配的 Complete Task Activity Log:进入场景 B `finalization-retry`,跳过步骤 2-6,直接执行步骤 7
49
+ - 如果在 `completed/` 但缺少匹配日志:告知用户任务已完成但终态身份不完整并停止,不手工修补
54
50
  - 如果在 `blocked/`:告知用户任务被阻塞;建议先解除阻塞
55
51
 
52
+ 场景 A 为 active 任务的正常完成路径;场景 B `finalization-retry` 只重试归档后的 task 评论与终态门禁。
53
+
56
54
  ### 2. 验证完成前置条件(未满足则必须停止)
57
55
 
58
56
  **门控读取(项目级 PR 流程策略)**:在执行本步骤前,读取 `.agents/.airc.json` 的 `prFlow` 字段(三态:字段缺省 = 默认推荐 PR、允许跳过;`"required"` = 强制 PR;`"disabled"` = 强制无 PR),以及 `task.md` frontmatter 的 `pr_status`(`pending` / `created` / `skipped`)。
@@ -88,16 +86,7 @@ tail .agents/workspace/active/{task-id}/task.md
88
86
  - [ ] 代码已审查(`review-code.md` 或 `review-code-r{N}.md` 存在,且最新审查结论为 Approved;或已在外部完成审查)
89
87
  - [ ] 代码已提交(没有与此任务相关的未提交变更)
90
88
  - [ ] 测试通过
91
- - [ ] 审查分歧账本无未关闭分歧,且无未复审的 post-review 提交(由下方「预完成硬门禁」机械校验)
92
-
93
- **预完成硬门禁(在移动目录、释放短号之前运行)**:步骤 7 的 `gate complete-task` 在目录已 `mv` 到 `completed/`、短号已释放之后才运行;为避免门禁失败发生在不可逆操作之后,必须在 **active 目录**上预先运行新增的两项完成门禁:
94
-
95
- ```bash
96
- node .agents/scripts/validate-artifact.js check review-ledger .agents/workspace/active/{task-id} --skill complete-task --format text
97
- node .agents/scripts/validate-artifact.js check post-review-commit .agents/workspace/active/{task-id} --skill complete-task --format text
98
- ```
99
-
100
- 任一退出码非 0(fail/blocked)→ 按前置条件未满足处理,**停止**,不执行步骤 3-7。若输出包含 `reviewed snapshot was not anchored`,必须先重新 `commit` 或 `review-code`;不得回退审查基线。`--force` **不解除**本硬门禁:未关闭分歧必须先在账本闭合(`confirmed`/`closed`/`human-decided`),已锚点后的未复审提交必须重新 `review-code` 或在账本追加 `post-review-commit` / `human-decided` 豁免行。
89
+ - [ ] 审查分歧账本无未关闭分歧、无未复审的 post-review 提交;本地 HEAD、`last_reviewed_commit`、PR head 严格一致,或已合并 squash 的平台身份、Git 拓扑与内容等价证据完整
101
90
 
102
91
  > **⚠️ 前置条件分支判断 — 你必须先判断“继续”还是“停止”:**
103
92
  >
@@ -105,7 +94,7 @@ node .agents/scripts/validate-artifact.js check post-review-commit .agents/works
105
94
  > - 如果任意一个条件不满足 → **默认停止**,输出前置条件未满足的警告
106
95
  > - 只有用户明确要求 `--force` 时,才可以在前置条件未满足时继续
107
96
  >
108
- > **禁止在前置条件未满足时继续执行步骤 3-7,也不要输出「任务 {task-id} 已完成,任务目录已转移到 completed/。」**
97
+ > **禁止在前置条件未满足时继续执行步骤 3-8,也不要输出「任务 {task-id} 已完成,任务目录已转移到 completed/。」**
109
98
 
110
99
  如果任何前置条件未满足,警告用户:
111
100
  ```
@@ -115,78 +104,85 @@ Cannot complete task {task-id} - prerequisites not met:
115
104
  Please complete the missing steps first, or use --force to override.
116
105
  ```
117
106
 
118
- 如果前置条件未满足且用户未明确提供 `--force`,立即停止,不执行步骤 3-7。
119
-
120
- ### 3. 更新任务元数据
107
+ 如果前置条件未满足且用户未明确提供 `--force`,立即停止,不执行步骤 3-8。
121
108
 
122
- 获取当前时间:
123
-
124
- ```bash
125
- date "+%Y-%m-%d %H:%M:%S%z" | sed 's/\([+-][0-9][0-9]\)\([0-9][0-9]\)$/\1:\2/'
126
- ```
109
+ ### 3. 完成业务内容更新
127
110
 
128
- 更新 `.agents/workspace/active/{task-id}/task.md`:
129
- - `status`:completed
130
- - `current_step`:completed
131
- - `completed_at`:{当前时间戳}
132
- - `target_date`:仅当为空时写入 `completed_at` 的日期部分(`YYYY-MM-DD`);已有值(人工填写)则保留
133
- - `updated_at`:{当前时间戳}
134
- - `agent_infra_version`:按 `.agents/rules/version-stamp.md` 取值
111
+ 在 `.agents/workspace/active/{task-id}/task.md` 中只更新生命周期核心不负责的业务内容:
135
112
  - 新增或更新 `## 状态核对` 段,粘贴第 0 步审计命令原文(含 `$ ` 前缀行),放在 `## 活动日志` 之前
136
113
  - 标记所有工作流步骤为已完成
137
114
  - 逐项验证并勾选 `## 完成检查清单` 中的所有条目(将 `- [ ]` 改为 `- [x]`)
138
- - **追加**到 `## Activity Log`(不要覆盖之前的记录):
139
- ```
140
- - {YYYY-MM-DD HH:mm:ss±HH:MM} — **Complete Task** by {agent} — Task moved to completed/
141
- ```
142
115
 
143
- ### 4. 转移任务
116
+ 不得在本步骤写 `status/current_step/completed_at/updated_at/agent_infra_version`、基础 Activity Log、目录或短号;这些由步骤 6 统一提交。
117
+
118
+ ### 4. 在 active 阶段同步平台
119
+
120
+ 检查 `task.md` 中是否存在有效的 `issue_number`。如果没有,跳过本步骤且不输出任何内容。
121
+
122
+ > Issue 元数据边界见 `.agents/rules/issue-sync.md`;评论同步统一调用 internal platform intent。
144
123
 
145
- 将任务目录从 active 移动到 completed:
124
+ 如果存在有效的 `issue_number`,严格按以下顺序执行:
125
+
126
+ 1. 按 artifact catalog 顺序,对本地已有产物逐项调用 `agent-infra-internal platform-comment sync {task-id} --kind artifact --artifact {artifact} --agent {artifact-agent} --backfill`。
127
+ 2. 调用 `agent-infra-internal platform-issue sync {task-id} --agent {agent} --requirements --fields`。
128
+ 3. 把业务摘要写入临时文件,并调用 `agent-infra-internal platform-comment sync {task-id} --kind summary --body-file {path} --agent {agent}`。
129
+
130
+ 不要在本步骤同步 task 评论;它依赖 lifecycle 写入后的完整终态 task.md。不要设置 `status:` label,平台自动化应在 Issue 关闭后清理状态标签。
131
+
132
+ 任一操作失败时,任务仍必须位于 active 且短号仍有效;先按失败类型调用以下结构化 warning intent,再立即停止,不进入步骤 5:
146
133
 
147
134
  ```bash
148
- mv .agents/workspace/active/{task-id} .agents/workspace/completed/{task-id}
135
+ agent-infra-internal task-warning {task-id} add --step complete-task --severity ACTION_REQUIRED --code {COMMENT_SYNC_FAILED|REQUIREMENTS_SYNC_FAILED|SUMMARY_SYNC_FAILED|NETWORK_RETRY_EXHAUSTED} --target {artifact|issue|summary|platform} --message "{error_code}: {error_message}" --action "修复平台同步问题后重跑 complete-task"
149
136
  ```
150
137
 
151
- ### 5. 验证转移
138
+ 相同 `step/code/target` 组合由核心幂等去重;调用方不分配 warning id 或手写账本行。
139
+
140
+ ### 5. 运行 active 预完成硬门禁
141
+
142
+ 平台写入成功后、移动目录和释放短号之前运行:
152
143
 
153
144
  ```bash
154
- ls .agents/workspace/completed/{task-id}/task.md
145
+ agent-infra-internal task-verify {task-id} complete-task.preflight --format text
155
146
  ```
156
147
 
157
- 确认任务目录已成功移动。
148
+ 该事件依次执行 `review-ledger`、`post-review-commit`、`platform-sync-preflight`。任一退出码非 0(fail/blocked)时,任务必须继续留在 active;从 gate 结果取稳定 code/target,通过 `task-warning ... add --step complete-task ...` 落账后停止。若审查基线或 head 不一致,必须先重新 `commit` / `review-code`;不得回退审查基线。
149
+
150
+ `--force` 不解除本硬门禁:未关闭分歧必须先在账本闭合,未复审提交必须重新审查、具备有效豁免,或由绑定 PR 的权威合并快照与本地 Git 对象证明为内容等价的单父 squash merge;平台 preflight 必须通过。平台事实、Git 对象、拓扑或内容证据缺失时 fail closed。required checks 由合并前的分支保护 / ruleset 以及 `review-code` / `watch-pr` 路由承担。
158
151
 
159
- ### 6. 同步到 Issue
152
+ ### 6. 执行本地生命周期意图并验证转移
160
153
 
161
- 检查 `task.md` 中是否存在有效的 `issue_number`。如果没有,跳过此步骤且不输出任何内容。
154
+ ```bash
155
+ agent-infra-internal task-lifecycle {task-id} complete --agent {agent}
156
+ ```
162
157
 
163
- > Issue 同步规则见 `.agents/rules/issue-sync.md`。执行同步前先读取该文件,完成 upstream 仓库检测和权限检测。
158
+ 仅 `status=applied|no-op` 视为本地完成。`status=failed` 时展示 `error` 与 completed/pending steps,以同一 intent 重试;不得宣称完成或手工补写局部状态。
159
+
160
+ ```bash
161
+ ls .agents/workspace/completed/{task-id}/task.md
162
+ ```
164
163
 
165
- 如果存在有效的 `issue_number`:
166
- - 先按 `.agents/rules/issue-sync.md` 的补发规则扫描并补发未发布的 `task.md`、`analysis*.md`、`review-analysis*.md`、`plan*.md`、`review-plan*.md`、`code*.md`、`review-code*.md` 评论(`task.md` 走幂等更新路径)
167
- - 按 issue-sync.md 的需求复选框同步步骤,兜底同步 `## 需求` 中已勾选的条目到 Issue body
168
- - 不要设置 `status:` label — 平台自动化应在 Issue 关闭后清理状态标签;预完成 platform-sync gate 会验证 CLOSED Issue 不含任何 `status:` 标签,残留时失败并要求等待或修复 workflow 后重跑
169
- - 最后创建或更新 `.agents/rules/issue-sync.md` 中定义的 summary 评论标记对应的 summary 评论
170
- - 读取 `.agents/rules/issue-fields.md`,按流程 A 把 `task.md` 中所有非空的 Issue 字段(`priority`/`effort`/`start_date`/`target_date`)同步到 Issue(幂等;`has_push=false` 或取数/写入失败时跳过,不阻断)
164
+ 确认任务目录已成功移动。
171
165
 
172
- ### 7. 完成校验
166
+ ### 7. 同步终态 task 评论并完成校验
173
167
 
174
- **释放短号**(先 `mv` 目录已成功,再 release;脚本幂等,未在注册表也返回 0):
168
+ 场景 A 与场景 B `finalization-retry` 都从 completed 目录执行本步骤。若存在有效的 `issue_number`,先调用:
175
169
 
176
170
  ```bash
177
- node .agents/scripts/task-short-id.js release "$task_id" || true
171
+ agent-infra-internal platform-comment sync {task-id} --kind task --agent {agent}
178
172
  ```
179
173
 
174
+ 该调用失败时任务已归档,不能调用只接受 active 任务的 `task-warning`;保留 completed 状态并停止。修复网络或平台问题后重跑 complete-task,会由步骤 1 进入 `finalization-retry`,只重复本步骤。
175
+
180
176
  运行完成校验,确认任务产物和同步状态符合规范:
181
177
 
182
178
  ```bash
183
- node .agents/scripts/validate-artifact.js gate complete-task .agents/workspace/completed/{task-id} --format text
179
+ agent-infra-internal task-verify {task-id} complete-task.completed --format text
184
180
  ```
185
181
 
186
182
  处理结果:
187
183
  - 退出码 0(全部通过)-> 继续到「告知用户」步骤
188
184
  - 退出码 1(校验失败)-> 根据输出修复问题后重新运行校验
189
- - 退出码 2(网络中断)-> 停止执行并告知用户需要人工介入
185
+ - 退出码 2(网络中断或状态标签清理尚未收敛)-> 保留 completed 状态并停止;稍后重跑 complete-task 进入 `finalization-retry`
190
186
 
191
187
  将校验输出保留在回复中作为当次验证输出。没有当次校验输出,不得声明完成。
192
188