@fitlab-ai/agent-infra 0.9.11 → 0.9.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/README.zh-CN.md +6 -6
- package/dist/bin/internal-cli.js +5 -0
- package/dist/lib/agent-clients/adapters/codex-lifecycle/build-identity.js +71 -10
- package/dist/lib/defaults.json +4 -0
- package/dist/lib/git/workflow.js +43 -1
- package/dist/lib/init.js +1 -0
- package/dist/lib/internal/git-workflow.js +8 -1
- package/dist/lib/internal/platform-pr.js +8 -2
- package/dist/lib/internal/task-delivery.js +59 -0
- package/dist/lib/platform/github-client.js +7 -1
- package/dist/lib/platform/pr-checks.js +8 -5
- package/dist/lib/platform/pr-summary.js +12 -8
- package/dist/lib/platform/pull-requests.js +393 -91
- package/dist/lib/platform/verification-required.js +13 -2
- package/dist/lib/platform/verification-sync.js +9 -4
- package/dist/lib/pr-review/evidence-grading.js +12 -4
- package/dist/lib/sandbox/config.js +5 -0
- package/dist/lib/sandbox/control/lifecycle.js +29 -7
- package/dist/lib/server/process-state.js +2 -2
- package/dist/lib/task/artifact-lifecycle.js +2 -2
- package/dist/lib/task/commit-intent.js +100 -0
- package/dist/lib/task/commit-operation.js +195 -101
- package/dist/lib/task/create.js +33 -7
- package/dist/lib/task/decision-details.js +3 -48
- package/dist/lib/task/delivery-target.js +97 -0
- package/dist/lib/task/delivery.js +153 -0
- package/dist/lib/task/human-override.js +5 -2
- package/dist/lib/task/lifecycle.js +106 -9
- package/dist/lib/task/orchestration.js +55 -62
- package/dist/lib/task/pr-delivery-fact.js +182 -0
- package/dist/lib/task/review-finalization.js +4 -8
- package/dist/lib/task/review-fingerprint.js +8 -0
- package/dist/lib/task/verification-engine.js +48 -24
- package/dist/lib/task/verification-review.js +1 -1
- package/dist/lib/update.js +9 -0
- package/dist/lifecycle-build-manifest.json +3 -3
- package/lib/agent-clients/adapters/codex-lifecycle/build-identity.ts +105 -10
- package/lib/agent-clients/adapters/codex-lifecycle/manifest-files.json +12 -1
- package/lib/defaults.json +4 -0
- package/lib/git/workflow.ts +38 -1
- package/lib/init.ts +3 -0
- package/lib/internal/git-workflow.ts +7 -1
- package/lib/internal/platform-pr.ts +8 -1
- package/lib/internal/task-delivery.ts +53 -0
- package/lib/platform/github-client.ts +8 -1
- package/lib/platform/pr-checks.ts +7 -5
- package/lib/platform/pr-summary.ts +10 -7
- package/lib/platform/pull-requests.ts +425 -87
- package/lib/platform/verification-required.ts +12 -2
- package/lib/platform/verification-sync.ts +9 -4
- package/lib/pr-review/evidence-grading.ts +7 -4
- package/lib/sandbox/config.ts +7 -0
- package/lib/sandbox/control/lifecycle.ts +30 -8
- package/lib/server/process-state.ts +2 -2
- package/lib/task/artifact-lifecycle.ts +2 -2
- package/lib/task/commit-intent.ts +137 -0
- package/lib/task/commit-operation.ts +174 -87
- package/lib/task/create.ts +34 -9
- package/lib/task/decision-details.ts +2 -62
- package/lib/task/delivery-target.ts +130 -0
- package/lib/task/delivery.ts +160 -0
- package/lib/task/human-override.ts +5 -2
- package/lib/task/lifecycle.ts +93 -4
- package/lib/task/orchestration.ts +62 -65
- package/lib/task/pr-delivery-fact.ts +254 -0
- package/lib/task/review-finalization.ts +4 -14
- package/lib/task/review-fingerprint.ts +10 -0
- package/lib/task/verification-engine.ts +45 -28
- package/lib/task/verification-review.ts +2 -0
- package/lib/update.ts +10 -0
- package/package.json +1 -1
- package/templates/.agents/rules/README.en.md +4 -2
- package/templates/.agents/rules/README.zh-CN.md +4 -2
- package/templates/.agents/rules/create-issue.en.md +11 -2
- package/templates/.agents/rules/create-issue.zh-CN.md +24 -2
- package/templates/.agents/rules/issue-pr-commands.en.md +4 -17
- package/templates/.agents/rules/issue-sync.en.md +26 -5
- package/templates/.agents/rules/issue-sync.zh-CN.md +62 -5
- package/templates/.agents/rules/label-milestone-setup.en.md +15 -2
- package/templates/.agents/rules/label-milestone-setup.zh-CN.md +15 -2
- package/templates/.agents/rules/local-artifact-repair.en.md +46 -0
- package/templates/.agents/rules/local-artifact-repair.zh-CN.md +46 -0
- package/templates/.agents/rules/milestone-inference.en.md +12 -2
- package/templates/.agents/rules/milestone-inference.zh-CN.md +25 -3
- package/templates/.agents/rules/pr-sync.en.md +22 -13
- package/templates/.agents/rules/pr-sync.zh-CN.md +22 -1
- package/templates/.agents/rules/release-commands.en.md +42 -3
- package/templates/.agents/rules/release-commands.zh-CN.md +42 -3
- package/templates/.agents/rules/security-alerts.en.md +17 -2
- package/templates/.agents/rules/security-alerts.zh-CN.md +17 -2
- package/templates/.agents/rules/sync-content-generation.en.md +8 -0
- package/templates/.agents/rules/sync-content-generation.zh-CN.md +8 -0
- package/templates/.agents/rules/task-management.en.md +1 -1
- package/templates/.agents/rules/task-management.zh-CN.md +1 -1
- package/templates/.agents/scripts/security-alerts.github.sh +151 -0
- package/templates/.agents/scripts/security-alerts.sh +31 -0
- package/templates/.agents/skills/analyze-task/SKILL.en.md +1 -0
- package/templates/.agents/skills/analyze-task/SKILL.zh-CN.md +1 -0
- package/templates/.agents/skills/close-codescan/SKILL.en.md +2 -2
- package/templates/.agents/skills/close-codescan/SKILL.zh-CN.md +2 -2
- package/templates/.agents/skills/close-dependabot/SKILL.en.md +2 -2
- package/templates/.agents/skills/close-dependabot/SKILL.zh-CN.md +2 -2
- package/templates/.agents/skills/code-task/SKILL.en.md +5 -2
- package/templates/.agents/skills/code-task/SKILL.zh-CN.md +6 -3
- package/templates/.agents/skills/commit/SKILL.en.md +3 -3
- package/templates/.agents/skills/commit/SKILL.zh-CN.md +3 -3
- package/templates/.agents/skills/commit/config/verify.json +1 -1
- package/templates/.agents/skills/commit/reference/commit-orchestration.en.md +3 -3
- package/templates/.agents/skills/commit/reference/commit-orchestration.zh-CN.md +3 -3
- package/templates/.agents/skills/commit/reference/pr-summary-sync.en.md +1 -1
- package/templates/.agents/skills/commit/reference/pr-summary-sync.zh-CN.md +1 -1
- package/templates/.agents/skills/commit/reference/task-status-update.en.md +2 -2
- package/templates/.agents/skills/commit/reference/task-status-update.zh-CN.md +2 -2
- package/templates/.agents/skills/complete-manual-validation/SKILL.en.md +2 -1
- package/templates/.agents/skills/complete-manual-validation/SKILL.zh-CN.md +2 -1
- package/templates/.agents/skills/complete-manual-validation/config/verify.en.json +1 -1
- package/templates/.agents/skills/complete-manual-validation/config/verify.zh-CN.json +1 -1
- package/templates/.agents/skills/complete-manual-validation/reference/summary-update.en.md +1 -1
- package/templates/.agents/skills/complete-manual-validation/reference/summary-update.zh-CN.md +1 -1
- package/templates/.agents/skills/complete-task/SKILL.en.md +10 -10
- package/templates/.agents/skills/complete-task/SKILL.zh-CN.md +10 -10
- package/templates/.agents/skills/complete-task/reference/external-delivery.en.md +2 -2
- package/templates/.agents/skills/complete-task/reference/external-delivery.zh-CN.md +2 -2
- package/templates/.agents/skills/create-pr/SKILL.en.md +4 -4
- package/templates/.agents/skills/create-pr/SKILL.zh-CN.md +4 -4
- package/templates/.agents/skills/create-task/SKILL.en.md +1 -0
- package/templates/.agents/skills/create-task/SKILL.zh-CN.md +1 -0
- package/templates/.agents/skills/import-codescan/SKILL.en.md +1 -1
- package/templates/.agents/skills/import-codescan/SKILL.zh-CN.md +1 -1
- package/templates/.agents/skills/import-dependabot/SKILL.en.md +1 -1
- package/templates/.agents/skills/import-dependabot/SKILL.zh-CN.md +1 -1
- package/templates/.agents/skills/init-labels/SKILL.en.md +9 -10
- package/templates/.agents/skills/init-labels/SKILL.zh-CN.md +9 -10
- package/templates/.agents/skills/init-labels/scripts/init-labels.github.sh +57 -1
- package/templates/.agents/skills/init-labels/scripts/init-labels.sh +27 -1
- package/templates/.agents/skills/init-milestones/SKILL.en.md +3 -5
- package/templates/.agents/skills/init-milestones/SKILL.zh-CN.md +3 -5
- package/templates/.agents/skills/plan-task/SKILL.en.md +1 -0
- package/templates/.agents/skills/plan-task/SKILL.zh-CN.md +1 -0
- package/templates/.agents/skills/review-analysis/SKILL.en.md +4 -3
- package/templates/.agents/skills/review-analysis/SKILL.zh-CN.md +4 -3
- package/templates/.agents/skills/review-analysis/reference/output-templates.en.md +18 -0
- package/templates/.agents/skills/review-analysis/reference/output-templates.zh-CN.md +18 -0
- package/templates/.agents/skills/review-code/SKILL.en.md +7 -6
- package/templates/.agents/skills/review-code/SKILL.zh-CN.md +7 -6
- package/templates/.agents/skills/review-code/reference/output-templates.en.md +19 -1
- package/templates/.agents/skills/review-code/reference/output-templates.zh-CN.md +19 -1
- package/templates/.agents/skills/review-code/reference/report-template.en.md +4 -2
- package/templates/.agents/skills/review-code/reference/report-template.zh-CN.md +4 -2
- package/templates/.agents/skills/review-plan/SKILL.en.md +4 -3
- package/templates/.agents/skills/review-plan/SKILL.zh-CN.md +4 -3
- package/templates/.agents/skills/review-plan/reference/output-templates.en.md +18 -0
- package/templates/.agents/skills/review-plan/reference/output-templates.zh-CN.md +18 -0
- package/templates/.agents/skills/review-pr/SKILL.en.md +1 -0
- package/templates/.agents/skills/review-pr/SKILL.zh-CN.md +1 -0
- package/templates/.agents/skills/review-pr/reference/evidence-grading.en.md +2 -2
- package/templates/.agents/skills/review-pr/reference/evidence-grading.zh-CN.md +2 -2
- package/templates/.agents/skills/run-manual-validation/SKILL.en.md +1 -0
- package/templates/.agents/skills/run-manual-validation/SKILL.zh-CN.md +1 -0
- package/templates/.agents/skills/run-task/SKILL.en.md +1 -1
- package/templates/.agents/skills/run-task/SKILL.zh-CN.md +1 -1
- package/templates/.agents/skills/update-agent-infra/scripts/sync-templates.js +4 -0
- package/templates/.agents/skills/watch-pr/SKILL.en.md +4 -4
- package/templates/.agents/skills/watch-pr/SKILL.zh-CN.md +4 -4
- package/templates/.agents/templates/task.en.md +5 -1
- package/templates/.agents/templates/task.zh-CN.md +5 -1
- package/templates/.agents/workflows/bug-fix.en.yaml +9 -8
- package/templates/.agents/workflows/bug-fix.zh-CN.yaml +9 -8
- package/templates/.agents/workflows/feature-development.en.yaml +9 -8
- package/templates/.agents/workflows/feature-development.zh-CN.yaml +9 -8
- package/templates/.agents/workflows/refactoring.en.yaml +9 -8
- package/templates/.agents/workflows/refactoring.zh-CN.yaml +9 -8
- package/templates/.agents/rules/create-issue.github.en.md +0 -14
- package/templates/.agents/rules/create-issue.github.zh-CN.md +0 -27
- package/templates/.agents/rules/issue-pr-commands.github.en.md +0 -34
- package/templates/.agents/rules/issue-pr-commands.github.zh-CN.md +0 -49
- package/templates/.agents/rules/issue-sync.github.en.md +0 -40
- package/templates/.agents/rules/issue-sync.github.zh-CN.md +0 -76
- package/templates/.agents/rules/label-milestone-setup.github.en.md +0 -60
- package/templates/.agents/rules/label-milestone-setup.github.zh-CN.md +0 -60
- package/templates/.agents/rules/milestone-inference.github.en.md +0 -15
- package/templates/.agents/rules/milestone-inference.github.zh-CN.md +0 -27
- package/templates/.agents/rules/pr-checks-commands.github.en.md +0 -18
- package/templates/.agents/rules/pr-checks-commands.github.zh-CN.md +0 -34
- package/templates/.agents/rules/pr-sync.github.en.md +0 -43
- package/templates/.agents/rules/pr-sync.github.zh-CN.md +0 -69
- package/templates/.agents/rules/release-commands.github.en.md +0 -44
- package/templates/.agents/rules/release-commands.github.zh-CN.md +0 -44
- package/templates/.agents/rules/security-alerts.github.en.md +0 -43
- package/templates/.agents/rules/security-alerts.github.zh-CN.md +0 -43
- /package/templates/.agents/rules/{issue-fields.github.en.md → issue-fields.en.md} +0 -0
- /package/templates/.agents/rules/{issue-fields.github.zh-CN.md → issue-fields.zh-CN.md} +0 -0
|
@@ -15,7 +15,7 @@ Initialize the repository's standard labels taxonomy.
|
|
|
15
15
|
|
|
16
16
|
Confirm that:
|
|
17
17
|
- read `.agents/rules/label-milestone-setup.md` first
|
|
18
|
-
-
|
|
18
|
+
- the repository configuration and requested mapping are ready
|
|
19
19
|
|
|
20
20
|
If any prerequisite fails, stop and report the matching error.
|
|
21
21
|
|
|
@@ -28,9 +28,9 @@ bash .agents/skills/init-labels/scripts/init-labels.sh
|
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
The script and `.agents/rules/label-milestone-setup.md` are responsible for:
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
31
|
+
- Reading the configured `labels.in` mapping and preserving unrelated labels
|
|
32
|
+
- Selecting the provider leaf or returning a clear no-op/degraded result
|
|
33
|
+
- Creating or updating the standard label set and reporting the final summary
|
|
34
34
|
- Printing the final execution summary
|
|
35
35
|
|
|
36
36
|
### 3. Standard taxonomy
|
|
@@ -69,8 +69,8 @@ Show the current mapping and ask whether it should be updated.
|
|
|
69
69
|
#### 4.3 Write the mapping and create labels
|
|
70
70
|
|
|
71
71
|
1. Write the final mapping to `.agents/.airc.json` under `labels.in`.
|
|
72
|
-
2.
|
|
73
|
-
3. After user confirmation, delete stale `in:` labels that are no longer present in the final mapping.
|
|
72
|
+
2. Run `bash .agents/skills/init-labels/scripts/init-labels.sh` to create or update one `in: {key}` label for each mapping key.
|
|
73
|
+
3. After user confirmation, rerun the script with `--cleanup-stale-in` to delete stale `in:` labels that are no longer present in the final mapping.
|
|
74
74
|
|
|
75
75
|
### 5. Output and behavior guarantees
|
|
76
76
|
|
|
@@ -82,7 +82,7 @@ The summary must include:
|
|
|
82
82
|
- Any unmatched platform-default labels still present
|
|
83
83
|
|
|
84
84
|
Operational notes:
|
|
85
|
-
- The operation is idempotent because the
|
|
85
|
+
- The operation is idempotent because the provider leaf updates or overwrites existing labels in place.
|
|
86
86
|
- `in:` labels are managed by the AI-guided step together with the `.airc.json` mapping.
|
|
87
87
|
|
|
88
88
|
### 6. Inform User
|
|
@@ -100,8 +100,7 @@ Next step - initialize milestones (optional):
|
|
|
100
100
|
|
|
101
101
|
## Error Handling
|
|
102
102
|
|
|
103
|
-
-
|
|
104
|
-
-
|
|
105
|
-
- Repository access failed: prompt "Unable to access the current repository with the platform CLI"
|
|
103
|
+
- Provider capability unavailable: report the script's `degraded` or `no-op` result without claiming remote changes.
|
|
104
|
+
- Provider authentication or repository access failure: report the script's non-zero exit status and diagnostic output; do not claim remote changes.
|
|
106
105
|
- Permission error: prompt "No permission to manage labels in this repository"
|
|
107
106
|
- API rate limit: prompt "platform API rate limit reached, please retry later"
|
|
@@ -15,7 +15,7 @@ description: >
|
|
|
15
15
|
|
|
16
16
|
确认以下条件成立:
|
|
17
17
|
- 执行前先读取 `.agents/rules/label-milestone-setup.md`
|
|
18
|
-
-
|
|
18
|
+
- 仓库配置和请求的映射已准备完成
|
|
19
19
|
|
|
20
20
|
如果任一条件失败,停止并输出对应错误。
|
|
21
21
|
|
|
@@ -28,9 +28,9 @@ bash .agents/skills/init-labels/scripts/init-labels.sh
|
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
脚本与 `.agents/rules/label-milestone-setup.md` 共同负责:
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
31
|
+
- 读取配置的 `labels.in` 映射并保留无关 label
|
|
32
|
+
- 选择 provider 叶子,或返回明确的 no-op/degraded 结果
|
|
33
|
+
- 创建或更新标准 label 集合并输出最终摘要
|
|
34
34
|
- 输出最终执行摘要
|
|
35
35
|
|
|
36
36
|
### 3. 标准分类体系
|
|
@@ -69,8 +69,8 @@ bash .agents/skills/init-labels/scripts/init-labels.sh
|
|
|
69
69
|
#### 4.3 写入配置并创建 label
|
|
70
70
|
|
|
71
71
|
1. 将最终映射写入 `.agents/.airc.json` 的 `labels.in` 字段。
|
|
72
|
-
2.
|
|
73
|
-
3.
|
|
72
|
+
2. 执行 `bash .agents/skills/init-labels/scripts/init-labels.sh`,为每个映射 key 创建或更新 `in: {key}` label。
|
|
73
|
+
3. 询问用户确认后,再使用 `--cleanup-stale-in` 重新执行脚本,清理不在最终映射中的旧 `in:` label。
|
|
74
74
|
|
|
75
75
|
### 5. 输出与行为保证
|
|
76
76
|
|
|
@@ -82,7 +82,7 @@ bash .agents/skills/init-labels/scripts/init-labels.sh
|
|
|
82
82
|
- 仍然存在的未匹配平台预置 labels
|
|
83
83
|
|
|
84
84
|
执行说明:
|
|
85
|
-
-
|
|
85
|
+
- 整个操作具备幂等性,因为 provider 叶子会按覆盖或更新方式处理已有 label。
|
|
86
86
|
- `in:` labels 由 AI 引导步骤和 `.airc.json` 映射统一管理。
|
|
87
87
|
|
|
88
88
|
### 6. 告知用户
|
|
@@ -100,8 +100,7 @@ bash .agents/skills/init-labels/scripts/init-labels.sh
|
|
|
100
100
|
|
|
101
101
|
## 错误处理
|
|
102
102
|
|
|
103
|
-
-
|
|
104
|
-
-
|
|
105
|
-
- 仓库访问失败:提示 "Unable to access the current repository with the platform CLI"
|
|
103
|
+
- provider 能力不可用:如实报告脚本的 `degraded` 或 `no-op` 结果,不得声称远端已变更。
|
|
104
|
+
- provider 认证或仓库访问失败:如实报告脚本的非零退出状态和诊断输出;不得声称远端已变更。
|
|
106
105
|
- 权限不足:提示 "No permission to manage labels in this repository"
|
|
107
106
|
- API 限流:提示 "platform API rate limit reached, please retry later"
|
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
set -e
|
|
4
4
|
|
|
5
|
+
cleanup_stale_in=false
|
|
6
|
+
while [ "$#" -gt 0 ]; do
|
|
7
|
+
case "$1" in
|
|
8
|
+
--cleanup-stale-in)
|
|
9
|
+
cleanup_stale_in=true
|
|
10
|
+
;;
|
|
11
|
+
*)
|
|
12
|
+
echo "Unknown option: $1" >&2
|
|
13
|
+
exit 2
|
|
14
|
+
;;
|
|
15
|
+
esac
|
|
16
|
+
shift
|
|
17
|
+
done
|
|
18
|
+
|
|
5
19
|
if ! command -v gh >/dev/null 2>&1; then
|
|
6
20
|
echo "GitHub CLI (\`gh\`) is not installed"
|
|
7
21
|
exit 1
|
|
@@ -53,11 +67,46 @@ help wanted 008672 Extra attention is needed
|
|
|
53
67
|
dependencies 0366d6 Pull requests that update a dependency file
|
|
54
68
|
EOF
|
|
55
69
|
|
|
70
|
+
node - ".agents/.airc.json" > "$tmpdir/in.tsv" <<'NODE'
|
|
71
|
+
const fs = require("node:fs");
|
|
72
|
+
|
|
73
|
+
const configPath = process.argv[2];
|
|
74
|
+
const config = JSON.parse(fs.readFileSync(configPath, "utf8"));
|
|
75
|
+
const mapping = config.labels?.in;
|
|
76
|
+
if (mapping === undefined) process.exit(0);
|
|
77
|
+
if (!mapping || typeof mapping !== "object" || Array.isArray(mapping)) {
|
|
78
|
+
throw new Error("labels.in must be an object");
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
for (const key of Object.keys(mapping).sort()) {
|
|
82
|
+
if (!key || key.includes("\n") || key.includes("\r") || key.includes("\t")) {
|
|
83
|
+
throw new Error("labels.in keys must be non-empty single-line values");
|
|
84
|
+
}
|
|
85
|
+
process.stdout.write(`in: ${key}\tBFD4F2\tModule label for ${key}\n`);
|
|
86
|
+
}
|
|
87
|
+
NODE
|
|
88
|
+
|
|
89
|
+
cut -f1 "$tmpdir/in.tsv" > "$tmpdir/in-names.txt"
|
|
90
|
+
|
|
91
|
+
cat "$tmpdir/in.tsv" >> "$tmpdir/common.tsv"
|
|
92
|
+
|
|
56
93
|
while IFS="$(printf '\t')" read -r name color description; do
|
|
57
94
|
[ -n "$name" ] || continue
|
|
58
95
|
gh label create "$name" --color "$color" --description "$description" --force
|
|
59
96
|
done < "$tmpdir/common.tsv"
|
|
60
97
|
|
|
98
|
+
if [ "$cleanup_stale_in" = true ]; then
|
|
99
|
+
while IFS= read -r name; do
|
|
100
|
+
case "$name" in
|
|
101
|
+
in:*)
|
|
102
|
+
if ! grep -Fqx "$name" "$tmpdir/in-names.txt"; then
|
|
103
|
+
gh label delete "$name" --yes
|
|
104
|
+
fi
|
|
105
|
+
;;
|
|
106
|
+
esac
|
|
107
|
+
done < "$tmpdir/existing-names.txt"
|
|
108
|
+
fi
|
|
109
|
+
|
|
61
110
|
gh label list --limit 200 --json name --jq '.[].name' > "$tmpdir/final-names.txt"
|
|
62
111
|
cp "$tmpdir/final-names.txt" "$tmpdir/final.txt"
|
|
63
112
|
|
|
@@ -69,11 +118,13 @@ for label in bug documentation duplicate enhancement invalid question wontfix; d
|
|
|
69
118
|
done
|
|
70
119
|
|
|
71
120
|
common_count="$(wc -l < "$tmpdir/common.tsv" | tr -d ' ')"
|
|
121
|
+
dynamic_count="$(wc -l < "$tmpdir/in.tsv" | tr -d ' ')"
|
|
72
122
|
|
|
73
123
|
echo "GitHub Labels initialized."
|
|
74
124
|
echo
|
|
75
125
|
echo "Summary:"
|
|
76
126
|
echo "- Common labels created or updated: $common_count"
|
|
127
|
+
echo "- in: labels created or updated: $dynamic_count"
|
|
77
128
|
echo "- Exact-match GitHub defaults overwritten: good first issue, help wanted"
|
|
78
129
|
|
|
79
130
|
if [ -s "$tmpdir/unmatched-defaults.txt" ]; then
|
|
@@ -87,4 +138,9 @@ echo
|
|
|
87
138
|
echo "Notes:"
|
|
88
139
|
echo "- theme: labels were intentionally not created."
|
|
89
140
|
echo "- The operation is idempotent because every label uses gh label create --force."
|
|
90
|
-
echo "- in: labels are
|
|
141
|
+
echo "- in: labels are derived from .agents/.airc.json labels.in."
|
|
142
|
+
if [ "$cleanup_stale_in" = true ]; then
|
|
143
|
+
echo "- Stale in: labels were removed only for labels absent from the confirmed mapping."
|
|
144
|
+
else
|
|
145
|
+
echo "- Stale in: labels were preserved; pass --cleanup-stale-in after mapping confirmation to remove them."
|
|
146
|
+
fi
|
|
@@ -2,5 +2,31 @@
|
|
|
2
2
|
|
|
3
3
|
set -e
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
cleanup_stale_in=false
|
|
6
|
+
while [ "$#" -gt 0 ]; do
|
|
7
|
+
case "$1" in
|
|
8
|
+
--cleanup-stale-in)
|
|
9
|
+
cleanup_stale_in=true
|
|
10
|
+
;;
|
|
11
|
+
*)
|
|
12
|
+
echo "Unknown option: $1" >&2
|
|
13
|
+
exit 2
|
|
14
|
+
;;
|
|
15
|
+
esac
|
|
16
|
+
shift
|
|
17
|
+
done
|
|
18
|
+
|
|
19
|
+
node - "$cleanup_stale_in" <<'NODE'
|
|
20
|
+
const cleanupStaleIn = process.argv[2] === "true";
|
|
21
|
+
process.stdout.write(`${JSON.stringify({
|
|
22
|
+
status: "degraded",
|
|
23
|
+
operation: "init-labels",
|
|
24
|
+
error: {
|
|
25
|
+
code: "PLATFORM_LABELS_UNSUPPORTED",
|
|
26
|
+
message: cleanupStaleIn
|
|
27
|
+
? "The current platform does not provide a label adapter; stale labels were not removed."
|
|
28
|
+
: "The current platform does not provide a label adapter."
|
|
29
|
+
}
|
|
30
|
+
})}\n`);
|
|
31
|
+
NODE
|
|
6
32
|
exit 0
|
|
@@ -15,7 +15,7 @@ Initialize the repository's standard milestones taxonomy.
|
|
|
15
15
|
|
|
16
16
|
Confirm that:
|
|
17
17
|
- read `.agents/rules/label-milestone-setup.md` first
|
|
18
|
-
-
|
|
18
|
+
- the requested milestone arguments are ready
|
|
19
19
|
|
|
20
20
|
If any prerequisite fails, stop and report the matching error.
|
|
21
21
|
|
|
@@ -31,7 +31,7 @@ The script and `.agents/rules/label-milestone-setup.md` are responsible for:
|
|
|
31
31
|
- Creating and cleaning up a temporary workspace
|
|
32
32
|
- Detecting whether `--history` was requested
|
|
33
33
|
- Scanning all `v*` Git tags, selecting the highest valid version by SemVer precedence, and using compatibility default `0.1.0` when none is valid, without reading ecosystem manifests
|
|
34
|
-
-
|
|
34
|
+
- Letting the provider leaf list and write current milestones
|
|
35
35
|
- Building the desired milestone set and creating only the missing titles
|
|
36
36
|
- Printing the final execution summary
|
|
37
37
|
|
|
@@ -78,9 +78,7 @@ Next step - initialize labels (optional):
|
|
|
78
78
|
|
|
79
79
|
## Error Handling
|
|
80
80
|
|
|
81
|
-
-
|
|
82
|
-
- Authentication failed: prompt "the platform CLI is not authenticated"
|
|
83
|
-
- Repository access failed: prompt "Unable to access the current repository with the platform CLI"
|
|
81
|
+
- Provider capability, authentication, or repository access failure: report the script's non-zero exit status and diagnostic output; do not claim remote changes.
|
|
84
82
|
- Version detection failed: prompt "Unable to determine current version baseline"
|
|
85
83
|
- No valid SemVer `v*` tags found in `--history` mode: prompt "No valid SemVer history tags found matching v*; only standard milestones will be created"
|
|
86
84
|
- Permission error: prompt "No permission to manage milestones in this repository"
|
|
@@ -15,7 +15,7 @@ description: >
|
|
|
15
15
|
|
|
16
16
|
确认以下条件成立:
|
|
17
17
|
- 执行前先读取 `.agents/rules/label-milestone-setup.md`
|
|
18
|
-
-
|
|
18
|
+
- 请求的 milestone 参数已准备完成
|
|
19
19
|
|
|
20
20
|
如果任一条件失败,停止并输出对应错误。
|
|
21
21
|
|
|
@@ -31,7 +31,7 @@ bash .agents/skills/init-milestones/scripts/init-milestones.sh "$ARGUMENTS"
|
|
|
31
31
|
- 创建并清理临时工作目录
|
|
32
32
|
- 检测是否传入 `--history`
|
|
33
33
|
- 扫描所有 `v*` Git tag,按 SemVer precedence 选择最高合法版本;没有合法版本时使用兼容默认值 `0.1.0`,且不读取任何生态 manifest
|
|
34
|
-
-
|
|
34
|
+
- 由 provider 叶子读取并写入当前里程碑
|
|
35
35
|
- 构建目标里程碑集合,并且只创建缺失标题
|
|
36
36
|
- 输出最终执行摘要
|
|
37
37
|
|
|
@@ -78,9 +78,7 @@ bash .agents/skills/init-milestones/scripts/init-milestones.sh "$ARGUMENTS"
|
|
|
78
78
|
|
|
79
79
|
## 错误处理
|
|
80
80
|
|
|
81
|
-
-
|
|
82
|
-
- 认证失败:提示 "the platform CLI is not authenticated"
|
|
83
|
-
- 仓库访问失败:提示 "Unable to access the current repository with the platform CLI"
|
|
81
|
+
- provider 能力、认证或仓库访问失败:如实报告脚本的非零退出状态和诊断输出;不得声称远端已变更。
|
|
84
82
|
- 版本解析失败:提示 "Unable to determine current version baseline"
|
|
85
83
|
- `--history` 模式下未找到合法 SemVer `v*` git tags:提示 "No valid SemVer history tags found matching v*; only standard milestones will be created"
|
|
86
84
|
- 权限不足:提示 "No permission to manage milestones in this repository"
|
|
@@ -15,6 +15,7 @@ If the entry operands contain `--orchestrated`, bind `{execution-flag}` to `--or
|
|
|
15
15
|
|
|
16
16
|
- This skill only outputs a technical plan document (`plan.md` or `plan-r{N}.md`) and does not modify any business code
|
|
17
17
|
- This is a **mandatory human review checkpoint**; do not automatically proceed to implementation
|
|
18
|
+
- 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
|
|
18
19
|
- When the plan touches compatibility, migration, old formats, or old entry points, read `.agents/rules/compatibility-policy.md` first. Do not design adapters, shims, dual writes, or parallel state machines without passing its admission gate
|
|
19
20
|
- After executing this skill, you **must** immediately update task status in task.md
|
|
20
21
|
|
|
@@ -14,6 +14,7 @@ description: >
|
|
|
14
14
|
## 行为边界 / 关键规则
|
|
15
15
|
|
|
16
16
|
- 本技能仅产出技术方案文档(`plan.md` 或 `plan-r{N}.md`)—— 不修改任何业务代码
|
|
17
|
+
- 生成会同步到 Issue 的任务或生命周期 Markdown 前,先读取 `.agents/rules/sync-content-generation.md` 并遵循其中的生成端约束;同步端不解析或改写正文
|
|
17
18
|
- 这是一个**强制性的人工审查检查点** —— 不要自动进入实现阶段
|
|
18
19
|
- 方案涉及兼容、迁移、旧格式或旧入口时,先读取 `.agents/rules/compatibility-policy.md`;未通过准入门槛时不得设计 adapter、shim、双写或并行状态机
|
|
19
20
|
- 执行本技能后,你**必须**立即更新 task.md 中的任务状态
|
|
@@ -16,6 +16,7 @@ Review the latest analysis artifact and produce `review-analysis.md` or `review-
|
|
|
16
16
|
## Boundary / Critical Rules
|
|
17
17
|
|
|
18
18
|
- This skill only reviews analysis 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 analysis --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 analysis --artifact {review-artifact} {execution-flag}`
|
|
73
|
+
After the report, submit each new finding with `agent-infra-internal task-ledger {task-id} finding-upsert --stage analysis --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 analysis --artifact {review-artifact} {execution-flag}`; after a failure, follow `.agents/rules/local-artifact-repair.md` to decide whether to edit and rerun, and never treat an error type or `changed=false` as automatic authorization.
|
|
73
74
|
|
|
74
75
|
Bind and reuse this structured mapping from that one response:
|
|
75
76
|
|
|
@@ -79,13 +80,13 @@ Bind and reuse this structured mapping from that one response:
|
|
|
79
80
|
{unresolved-minor} = stageStatus.unresolvedFindingCounts.minor
|
|
80
81
|
```
|
|
81
82
|
|
|
82
|
-
The intent atomically finalizes the report summary and returns the same ledger snapshot. Do not call `stage-status`, replace placeholders manually, or rescan the finding list.
|
|
83
|
+
The intent atomically finalizes the report summary and returns the same ledger snapshot. Do not call `stage-status`, replace placeholders manually, or rescan the finding list. After a failure, the model may edit the same controlled artifact and rerun the same intent only when the shared rule's mechanical gates pass; reassess convergence after every failure. The final complete result determines the verdict and counts from that same snapshot: `stageStatus.canAdvance=true` with an Approved conclusion permits cross-stage advancement; `stageStatus.canAdvance=false` still requires `agent-infra-internal task-event {task-id} review-analysis.completed --agent {standard-agent-token} --artifact {review-artifact} --verdict {approved|changes-requested|rejected} --blockers {unresolved-blockers} --major {unresolved-major} --minor {unresolved-minor} --manual-validation {n} {execution-flag}`, using `changes-requested` and routing to same-stage revision/review (use `rejected` when the report explicitly rejects). On failure, model stop, lack of progress, or the emergency cap, do not publish a completion event or cross-stage command; use the `repair-stop` scenario in `reference/output-templates.md` to show existing summary/findings, the artifact, actual repair attempts, the last diagnostic, and the stop reason.
|
|
83
84
|
|
|
84
85
|
`manual-validation` is the data source for the `Manual-validation` count folded into review rows in `ai task log`; do not add a parallel manual-verification field.
|
|
85
86
|
|
|
86
87
|
If task.md has a valid `issue_number`, run `agent-infra-internal platform-comment sync {task-id} --kind task --agent {standard-agent-token}`, then `agent-infra-internal platform-comment sync {task-id} --kind artifact --artifact {review-artifact} --agent {standard-agent-token}`.
|
|
87
88
|
|
|
88
|
-
Before writing the summary, the finalization intent checks decision-detail ids;
|
|
89
|
+
Before writing the summary, the finalization intent checks decision-detail ids; any visible duplicate returns a structured failure and preserves the artifact bytes, while the model decides whether a minimal edit is safe under the shared rule. If the safety gates fail, diagnostics repeat, no byte-level progress occurs, or the emergency cap is reached, stop before the completion event; the stop path must still show the existing review result instead of hiding the artifact.
|
|
89
90
|
|
|
90
91
|
### 7. Run Completion Gate
|
|
91
92
|
|
|
@@ -16,6 +16,7 @@ description: >
|
|
|
16
16
|
## 行为边界 / 关键规则
|
|
17
17
|
|
|
18
18
|
- 本技能只审查分析产物并写报告,不修改业务代码
|
|
19
|
+
- 生成会同步到 Issue 的任务或生命周期 Markdown 前,先读取 `.agents/rules/sync-content-generation.md` 并遵循其中的生成端约束;同步端不解析或改写正文
|
|
19
20
|
- 执行本技能后,你**必须**立即更新 task.md
|
|
20
21
|
|
|
21
22
|
版本戳规则:创建或更新 `task.md` frontmatter 时,先读取 `.agents/rules/version-stamp.md`,并写入或刷新 `agent_infra_version`。
|
|
@@ -72,7 +73,7 @@ agent-infra-internal task-snapshot {task-id} --format text
|
|
|
72
73
|
|
|
73
74
|
### 6. 更新任务状态
|
|
74
75
|
|
|
75
|
-
报告完成后,新 finding 逐条调用 `agent-infra-internal task-ledger {task-id} finding-upsert --stage analysis --review-artifact {review-artifact} --ordinal {n} --severity {blocker|major|minor} --evidence {review-artifact}#{anchor}`;复核上一轮响应时调用 `finding-review --id {ledger-id} --status {confirmed|closed|open|needs-human-decision} --evidence {相称证据}
|
|
76
|
+
报告完成后,新 finding 逐条调用 `agent-infra-internal task-ledger {task-id} finding-upsert --stage analysis --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 analysis --artifact {review-artifact} {execution-flag}`;失败后是否继续编辑并重跑,必须遵循 `.agents/rules/local-artifact-repair.md`,不能把失败类型或 `changed=false` 当作自动授权。
|
|
76
77
|
|
|
77
78
|
从该次返回值绑定并复用以下结构化映射:
|
|
78
79
|
|
|
@@ -82,13 +83,13 @@ agent-infra-internal task-snapshot {task-id} --format text
|
|
|
82
83
|
{unresolved-minor} = stageStatus.unresolvedFindingCounts.minor
|
|
83
84
|
```
|
|
84
85
|
|
|
85
|
-
该 intent 原子最终化报告摘要并返回同一次账本快照;不得再调用 `stage-status
|
|
86
|
+
该 intent 原子最终化报告摘要并返回同一次账本快照;不得再调用 `stage-status`、手工替换占位符或扫描问题清单。失败后,模型只能在共享规则的机械安全门通过时修改同一个受控 artifact,并完整重跑相同 intent;每次失败都重新判断是否收敛。最终一次完整成功返回决定同一快照的 verdict 和计数:`stageStatus.canAdvance=true` 且结论为 Approved 时允许跨阶段推进;`stageStatus.canAdvance=false` 时仍须执行 `agent-infra-internal task-event {task-id} review-analysis.completed --agent {standard-agent-token} --artifact {review-artifact} --verdict {approved|changes-requested|rejected} --blockers {unresolved-blockers} --major {unresolved-major} --minor {unresolved-minor} --manual-validation {n} {execution-flag}`,使用 `changes-requested` 并路由到同阶段修订/复审(报告明确拒绝时使用 `rejected`)。失败、模型停止、无进展或紧急熔断时,不发布完成事件或跨阶段命令,但必须按 `reference/output-templates.md` 的 `repair-stop` 场景展示已有 summary/findings、artifact、实际修复次数、最后诊断和停止原因。
|
|
86
87
|
|
|
87
88
|
`manual-validation` 是 `ai task log` 中 review 行「人工校验点」(EN `Manual-validation`)计数的数据源;不要新增并行人工验证字段。
|
|
88
89
|
|
|
89
90
|
如果 task.md 中存在有效的 `issue_number`,调用 `agent-infra-internal platform-comment sync {task-id} --kind task --agent {standard-agent-token}`,再调用 `agent-infra-internal platform-comment sync {task-id} --kind artifact --artifact {review-artifact} --agent {standard-agent-token}`;失败按 `.agents/rules/issue-sync.md` 记录 warning。
|
|
90
91
|
|
|
91
|
-
最终化 intent 会在写入摘要前检查详情块 ID
|
|
92
|
+
最终化 intent 会在写入摘要前检查详情块 ID;任何可见重复都返回结构化失败并保持 artifact 字节不变,由模型按共享规则判断是否进行最小编辑。无法通过安全门、诊断重复、没有实际字节变化或达到紧急熔断时,停止在完成事件之前;停止路径仍必须展示已有审查结果,不得吞掉 artifact 内容。
|
|
92
93
|
|
|
93
94
|
### 7. 完成校验
|
|
94
95
|
|
|
@@ -18,6 +18,24 @@ Rules:
|
|
|
18
18
|
- The selected scenario must generate `{next-step-commands}` through the shared helper
|
|
19
19
|
- The count line shows 4 numbers. `Human-decision` (`{h}`) counts this stage's `needs-human-decision` rows; because those rows are unresolved, `{h} > 0` means `canAdvance=false`. Expand the "Pending human-decision pre-block" from `.agents/rules/next-step-output.md` and show revision and re-review paths only.
|
|
20
20
|
|
|
21
|
+
### Scenario R: Finalization stopped with results visible
|
|
22
|
+
|
|
23
|
+
When the finalizer fails, or the model stops because of a safety gate, lack of progress, repeated diagnostics, or the emergency cap, use this scenario. Do not call the shared helper or output cross-stage commands.
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
Task {task-id} review results were generated, but lifecycle advancement stopped.
|
|
27
|
+
- Review artifact: .agents/workspace/active/{task-id}/{review-artifact}
|
|
28
|
+
- Last valid summary/findings: {last-readable-review-result}
|
|
29
|
+
- Local repair attempts: {repairAttempts}
|
|
30
|
+
- Last diagnostic: {last-structured-diagnostic}
|
|
31
|
+
- Stop reason: {stop-reason}
|
|
32
|
+
- Completion event: not published | Cross-stage commands: not generated
|
|
33
|
+
|
|
34
|
+
Note: only lifecycle advancement stopped; the existing review result remains available. Handle it manually or rerun the current review skill.
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
If the summary cannot be parsed safely, set `{last-readable-review-result}` to "summary could not be parsed safely" and retain the artifact path and raw structured diagnostic; do not infer counts or add a conclusion.
|
|
38
|
+
|
|
21
39
|
### Scenario A: Approved with no findings
|
|
22
40
|
|
|
23
41
|
Populate `{next-step-commands}` for this scenario by running `agent-infra-internal agent-client next-steps --skill plan-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 plan-task --task-ref {task-ref}` 生成本场景的 `{next-step-commands}`。
|
|
@@ -16,6 +16,7 @@ Review the latest code round and produce `review-code.md` or `review-code-r{N}.m
|
|
|
16
16
|
## Boundary / Critical Rules
|
|
17
17
|
|
|
18
18
|
- This skill reviews code 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`.
|
|
@@ -70,11 +71,11 @@ Read the highest-round code artifact and, if present, the highest-round fix arti
|
|
|
70
71
|
### 4. Perform the Review
|
|
71
72
|
|
|
72
73
|
Follow `.agents/workflows/feature-development.yaml` and inspect the full change context:
|
|
73
|
-
-
|
|
74
|
-
-
|
|
74
|
+
- Resolve the task's bound delivery remote/base and read the target SHA once at review start, `M=$(git ls-remote --refs {remote} refs/heads/{baseRef})`; then capture the reviewed commit `R=$(git rev-parse HEAD)` once and compute `D=$(git merge-base "$R" "$M")`. Save M/D/R as historical evidence and never overwrite them with a later live target value
|
|
75
|
+
- If the delivery target cannot be resolved or its target commit is unavailable, stop and record the target error; M/D/R must come from one fact-collection round and must not be replaced by PR-existence evidence
|
|
75
76
|
- `git diff --binary "$D" -- <post-review-globs>` covers committed and uncommitted tracked changes from D to the current worktree
|
|
76
77
|
- `git ls-files -o --exclude-standard -z -- <post-review-globs>` for untracked new files
|
|
77
|
-
- Write `mode=worktree`, `baseline=R`, and `diffBase=D` to a temporary JSON file, then call `agent-infra-internal git-workflow snapshot --input {file}` to generate a reviewed diff fingerprint `F` for the complete committed range and a reviewed snapshot tree `T` for the current worktree; write R, D, F, and T into the report
|
|
78
|
+
- Write `mode=worktree`, `baseline=R`, and `diffBase=D` to a temporary JSON file, then call `agent-infra-internal git-workflow snapshot --input {file}` to generate a reviewed diff fingerprint `F` for the complete committed range and a reviewed snapshot tree `T` for the current worktree; write M, R, D, F, and T into the report
|
|
78
79
|
|
|
79
80
|
> After collecting those facts, read `.agents/rules/review-method.md`, use them as readiness evidence, and run Passes 2–5 for traceability, risk lenses, counterevidence, and classification; the report must record all five passes.
|
|
80
81
|
> Detailed review criteria, severity rules, and reviewer expectations live in `reference/review-criteria.md`. Read `reference/review-criteria.md` before reviewing.
|
|
@@ -98,7 +99,7 @@ Create `.agents/workspace/active/{task-id}/{review-artifact}`.
|
|
|
98
99
|
|
|
99
100
|
Update task.md:
|
|
100
101
|
- After the report, submit each new finding with `agent-infra-internal task-ledger {task-id} finding-upsert --stage code --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}`. When escalating to `needs-human-decision`, append `--needs-implementation true|false` using the judgment recorded in the detail block. Do not scan ids or edit ledger rows
|
|
101
|
-
- After all ledger writes, call `agent-infra-internal task-review {task-id} finalize-summary --stage code --artifact {review-artifact} {execution-flag}`
|
|
102
|
+
- After all ledger writes, make the initial call to `agent-infra-internal task-review {task-id} finalize-summary --stage code --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
|
|
102
103
|
|
|
103
104
|
Bind and reuse this structured mapping from that one response:
|
|
104
105
|
|
|
@@ -108,7 +109,7 @@ Update task.md:
|
|
|
108
109
|
{unresolved-minor} = stageStatus.unresolvedFindingCounts.minor
|
|
109
110
|
```
|
|
110
111
|
|
|
111
|
-
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.
|
|
112
|
+
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-code.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
|
|
112
113
|
- Only when `canAdvance=true`, the verdict is Approved, and `T == R^{tree}`, write `last_reviewed_commit: {R}`. Clear an old value for an Approved snapshot with uncommitted differences; otherwise preserve the existing value and do not advance it
|
|
113
114
|
- For an Approved exit, collect PR and all-check facts as defined in `reference/output-templates.md`: route uncommitted/unpushed code to `commit`, no PR to `create-pr` (except no-PR flow), non-terminal checks to `watch-pr`, and route to `complete-task` only when `HEAD == last_reviewed_commit == PR head` with checks `passed|no-required`; never route by review round alone
|
|
114
115
|
- After handling `last_reviewed_commit`, run `agent-infra-internal task-event {task-id} review-code.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}`
|
|
@@ -121,7 +122,7 @@ If task.md contains a valid `issue_number`, perform these sync actions (skip and
|
|
|
121
122
|
- Run `agent-infra-internal platform-comment sync {task-id} --kind task --agent {standard-agent-token}`
|
|
122
123
|
- Run `agent-infra-internal platform-comment sync {task-id} --kind artifact --artifact {review-artifact} --agent {standard-agent-token}`
|
|
123
124
|
|
|
124
|
-
Before writing the summary, the finalization intent checks decision-detail ids;
|
|
125
|
+
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.
|
|
125
126
|
|
|
126
127
|
### 7. Verification Gate
|
|
127
128
|
|
|
@@ -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`。
|
|
@@ -69,11 +70,11 @@ agent-infra-internal task-snapshot {task-id} --format text
|
|
|
69
70
|
### 4. 执行审查
|
|
70
71
|
|
|
71
72
|
遵循 `.agents/workflows/feature-development.yaml`,并同时检查完整变更上下文:
|
|
72
|
-
-
|
|
73
|
-
-
|
|
73
|
+
- 在审查开始时解析任务绑定的 delivery remote/base,并一次性读取目标分支 SHA `M=$(git ls-remote --refs {remote} refs/heads/{baseRef})`;随后一次性记录审查提交 `R=$(git rev-parse HEAD)`,计算 `D=$(git merge-base "$R" "$M")`。报告保存 M/D/R,不能用后续实时目标值覆盖本轮历史证据
|
|
74
|
+
- 若 delivery target 无法解析或目标 commit 不可用,停止并记录 target 错误;M/D/R 必须来自同一轮事实采集,不以 PR 是否存在替代 delivery target 证据
|
|
74
75
|
- `git diff --binary "$D" -- <post-review-globs>` 覆盖 `D` 到当前工作区的已提交与未提交跟踪变更
|
|
75
76
|
- `git ls-files -o --exclude-standard -z -- <post-review-globs>` 覆盖未跟踪新文件
|
|
76
|
-
- 把 `mode=worktree`、`baseline=R`、`diffBase=D` 写入临时 JSON,调用 `agent-infra-internal git-workflow snapshot --input {file}` 一次生成覆盖完整提交范围的审查差异指纹 `F` 与当前工作区审查快照树 `T`;把
|
|
77
|
+
- 把 `mode=worktree`、`baseline=R`、`diffBase=D` 写入临时 JSON,调用 `agent-infra-internal git-workflow snapshot --input {file}` 一次生成覆盖完整提交范围的审查差异指纹 `F` 与当前工作区审查快照树 `T`;把 M、R、D、F、T 全部写入报告
|
|
77
78
|
|
|
78
79
|
> 上述事实采集完成后,先读取 `.agents/rules/review-method.md`,以其作为 readiness 证据并按 Pass 2–5 完成追踪、风险镜头、反证和归类;报告必须记录全部五遍覆盖。
|
|
79
80
|
> 详细审查标准、严重程度划分和 reviewer 关注点见 `reference/review-criteria.md`。执行此步骤前先读取 `reference/review-criteria.md`。
|
|
@@ -96,7 +97,7 @@ agent-infra-internal task-snapshot {task-id} --format text
|
|
|
96
97
|
### 6. 更新任务状态
|
|
97
98
|
|
|
98
99
|
- 报告完成后,新 finding 逐条调用 `agent-infra-internal task-ledger {task-id} finding-upsert --stage code --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 {相称证据}`。升级为 `needs-human-decision` 时,按详情块中的判断追加 `--needs-implementation true|false`。不得扫描编号或手写账本行
|
|
99
|
-
-
|
|
100
|
+
- 全部账本写入完成后首次调用 `agent-infra-internal task-review {task-id} finalize-summary --stage code --artifact {review-artifact} {execution-flag}`;失败后是否继续编辑并重跑,必须遵循 `.agents/rules/local-artifact-repair.md`,不能把失败类型或 `changed=false` 当作自动授权
|
|
100
101
|
|
|
101
102
|
从该次返回值绑定并复用以下结构化映射:
|
|
102
103
|
|
|
@@ -106,7 +107,7 @@ agent-infra-internal task-snapshot {task-id} --format text
|
|
|
106
107
|
{unresolved-minor} = stageStatus.unresolvedFindingCounts.minor
|
|
107
108
|
```
|
|
108
109
|
|
|
109
|
-
该 intent 原子最终化报告摘要并返回同一次账本快照;不得再调用 `stage-status
|
|
110
|
+
该 intent 原子最终化报告摘要并返回同一次账本快照;不得再调用 `stage-status`、手工替换占位符或扫描问题清单。失败后,模型只能在共享规则的机械安全门通过时修改同一个受控 artifact,并完整重跑相同 intent;每次失败都重新判断是否收敛。最终一次完整成功返回决定同一快照的 verdict 和计数:`stageStatus.canAdvance=true` 且结论为 Approved 时允许跨阶段推进;`stageStatus.canAdvance=false` 时仍须执行 `agent-infra-internal task-event {task-id} review-code.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、实际修复次数、最后诊断和停止原因
|
|
110
111
|
- 仅当 `canAdvance=true`、本轮结论为 Approved 且 `T == R^{tree}` 时写入 `last_reviewed_commit: {R}`;Approved 快照包含未提交差异时清除旧值。否则保留既有值,不得推进或清空
|
|
111
112
|
- Approved 出口继续按 `reference/output-templates.md` 采集 PR 与全部 checks 事实:未提交/未推送走 `commit`,无 PR 走 `create-pr`(无 PR 流程除外),checks 未终态走 `watch-pr`,仅 `HEAD == last_reviewed_commit == PR head` 且 checks 为 `passed|no-required` 时走 `complete-task`;不得仅按审查轮次分流
|
|
112
113
|
- 完成 `last_reviewed_commit` 处理后执行 `agent-infra-internal task-event {task-id} review-code.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}`
|
|
@@ -119,7 +120,7 @@ agent-infra-internal task-snapshot {task-id} --format text
|
|
|
119
120
|
- 调用 `agent-infra-internal platform-comment sync {task-id} --kind task --agent {standard-agent-token}`
|
|
120
121
|
- 调用 `agent-infra-internal platform-comment sync {task-id} --kind artifact --artifact {review-artifact} --agent {standard-agent-token}`
|
|
121
122
|
|
|
122
|
-
最终化 intent 会在写入摘要前检查详情块 ID
|
|
123
|
+
最终化 intent 会在写入摘要前检查详情块 ID;任何可见重复都返回结构化失败并保持 artifact 字节不变,由模型按共享规则判断是否进行最小编辑。无法通过安全门、诊断重复、没有实际字节变化或达到紧急熔断时,停止在完成事件之前;停止路径仍必须展示已有审查结果,不得吞掉 artifact 内容。
|
|
123
124
|
|
|
124
125
|
### 7. 完成校验
|
|
125
126
|
|
|
@@ -20,9 +20,27 @@ Prohibitions:
|
|
|
20
20
|
- generate `{next-step-commands}` for the selected branch through the shared helper
|
|
21
21
|
- The count line shows 5 numbers. Manual-validation (`{e}`) does not affect selection. `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.
|
|
22
22
|
|
|
23
|
+
### Branch R: Finalization stopped with results visible
|
|
24
|
+
|
|
25
|
+
When the finalizer fails, or the model stops because of a safety gate, lack of progress, repeated diagnostics, or the emergency cap, use this branch. Do not call the shared helper or output cross-stage commands.
|
|
26
|
+
|
|
27
|
+
```text
|
|
28
|
+
Task {task-id} review results were generated, but lifecycle advancement stopped.
|
|
29
|
+
- Review artifact: .agents/workspace/active/{task-id}/{review-artifact}
|
|
30
|
+
- Last valid summary/findings: {last-readable-review-result}
|
|
31
|
+
- Local repair attempts: {repairAttempts}
|
|
32
|
+
- Last diagnostic: {last-structured-diagnostic}
|
|
33
|
+
- Stop reason: {stop-reason}
|
|
34
|
+
- Completion event: not published | Cross-stage commands: not generated
|
|
35
|
+
|
|
36
|
+
Note: only lifecycle advancement stopped; the existing review result remains available. Handle it manually or rerun the current review skill.
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
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.
|
|
40
|
+
|
|
23
41
|
### Branch A: Approved with No Findings
|
|
24
42
|
|
|
25
|
-
Do not route by review round. Compare reviewed snapshot tree `T` with the tree of baseline `R`, then read `prFlow` / `
|
|
43
|
+
Do not route by review round. Compare reviewed snapshot tree `T` with the tree of baseline `R`, then read `prFlow` / verified `pr_delivery_fact`; when a PR exists, call `agent-infra-internal platform-checks inspect {task-id}`. Select exactly one mutually exclusive exit:
|
|
26
44
|
|
|
27
45
|
- `T != R^{tree}`: Branch A1 (commit).
|
|
28
46
|
- `T == R^{tree}` without a PR: Branch A4 for `prFlow=disabled`, otherwise Branch A2 (create PR).
|