@fitlab-ai/agent-infra 0.9.1 → 0.9.2
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 +16 -4
- package/README.zh-CN.md +16 -4
- package/bin/cli.ts +12 -0
- package/dist/bin/cli.js +14 -0
- package/dist/bin/internal-cli.js +15 -0
- package/dist/lib/agent-client.js +163 -0
- package/dist/lib/agent-clients/adapter.js +294 -0
- package/dist/lib/agent-clients/adapters/claude-code.js +62 -0
- package/dist/lib/agent-clients/adapters/codex-sandbox.js +210 -0
- package/dist/lib/agent-clients/adapters/codex.js +54 -0
- package/dist/lib/agent-clients/adapters/gemini-cli.js +64 -0
- package/dist/lib/agent-clients/adapters/index.js +20 -0
- package/dist/lib/agent-clients/adapters/opencode.js +64 -0
- package/dist/lib/agent-clients/config.js +177 -0
- package/dist/lib/agent-clients/custom-tuis.js +99 -0
- package/dist/lib/agent-clients/invocation.js +9 -0
- package/dist/lib/agent-clients/next-steps.js +38 -0
- package/dist/lib/agent-clients/project-assets.js +45 -0
- package/dist/lib/agent-clients/reconcile.js +235 -0
- package/dist/lib/agent-clients/registry.js +72 -0
- package/dist/lib/agent-clients/schema.js +57 -0
- package/dist/lib/agent-clients/types.js +29 -0
- package/dist/lib/builtin-tuis.js +9 -14
- package/dist/lib/defaults.json +85 -73
- package/dist/lib/git/review-snapshot.js +25 -10
- package/dist/lib/git/reviewed-commit-equivalence.js +110 -0
- package/dist/lib/init.js +47 -91
- package/dist/lib/internal/agent-client.js +117 -0
- package/dist/lib/internal/git-workflow.js +1 -1
- package/dist/lib/internal/release-workflow.js +71 -16
- package/dist/lib/internal/task-orchestration.js +151 -0
- package/dist/lib/internal/task-review.js +65 -0
- package/dist/lib/merge.js +2 -1
- package/dist/lib/platform/adapters.js +38 -1
- package/dist/lib/platform/change-request-git-evidence.js +113 -0
- package/dist/lib/platform/merged-pr-equivalence.js +41 -11
- package/dist/lib/platform/pr-checks.js +38 -10
- package/dist/lib/platform/pull-requests.js +110 -6
- package/dist/lib/platform/releases.js +1 -1
- package/dist/lib/platform/verification-required.js +8 -10
- package/dist/lib/prompt.js +15 -3
- package/dist/lib/release/channels.js +4 -1
- package/dist/lib/release/workflow.js +4 -2
- package/dist/lib/remove-dir.js +25 -0
- package/dist/lib/run/tui.js +8 -2
- package/dist/lib/sandbox/agent-client-reconciler.js +234 -0
- package/dist/lib/sandbox/clipboard/linux.js +2 -1
- package/dist/lib/sandbox/commands/create.js +76 -180
- package/dist/lib/sandbox/commands/enter.js +17 -1
- package/dist/lib/sandbox/commands/prune.js +2 -2
- package/dist/lib/sandbox/commands/rm.js +3 -2
- package/dist/lib/sandbox/config.js +21 -4
- package/dist/lib/sandbox/constants.js +3 -0
- package/dist/lib/sandbox/dockerfile.js +2 -1
- package/dist/lib/sandbox/managed-fs.js +10 -5
- package/dist/lib/sandbox/recovery.js +52 -36
- package/dist/lib/sandbox/shell.js +1 -1
- package/dist/lib/sandbox/tool-types.js +8 -0
- package/dist/lib/sandbox/tools.js +2 -126
- package/dist/lib/task/artifact-lifecycle.js +1 -49
- package/dist/lib/task/commands/decisions.js +50 -20
- package/dist/lib/task/delegation-receipts.js +107 -0
- package/dist/lib/task/events.js +100 -1
- package/dist/lib/task/orchestration.js +420 -0
- package/dist/lib/task/review-artifacts.js +143 -59
- package/dist/lib/task/review-finalization.js +166 -0
- package/dist/lib/task/review-fingerprint.js +4 -0
- package/dist/lib/task/verification-checks.js +2 -1
- package/dist/lib/task/verification-engine.js +156 -28
- package/dist/lib/task/verification-review.js +1 -1
- package/dist/lib/task/verification.js +3 -1
- package/dist/lib/task/workspace-snapshot.js +34 -0
- package/dist/lib/update.js +42 -161
- package/lib/agent-client.ts +214 -0
- package/lib/agent-clients/adapter.ts +461 -0
- package/lib/agent-clients/adapters/claude-code.ts +70 -0
- package/lib/agent-clients/adapters/codex-sandbox.ts +245 -0
- package/lib/agent-clients/adapters/codex.ts +58 -0
- package/lib/agent-clients/adapters/gemini-cli.ts +65 -0
- package/lib/agent-clients/adapters/index.ts +27 -0
- package/lib/agent-clients/adapters/opencode.ts +66 -0
- package/lib/agent-clients/config.ts +278 -0
- package/lib/agent-clients/custom-tuis.ts +149 -0
- package/lib/agent-clients/invocation.ts +19 -0
- package/lib/agent-clients/next-steps.ts +72 -0
- package/lib/agent-clients/project-assets.ts +96 -0
- package/lib/agent-clients/reconcile.ts +324 -0
- package/lib/agent-clients/registry.ts +144 -0
- package/lib/agent-clients/schema.ts +62 -0
- package/lib/agent-clients/types.ts +78 -0
- package/lib/benchmark/schemas/v1.0.0/case-manifest.schema.json +120 -0
- package/lib/benchmark/schemas/v1.0.0/common.schema.json +109 -0
- package/lib/benchmark/schemas/v1.0.0/grader-result.schema.json +160 -0
- package/lib/benchmark/schemas/v1.0.0/run-manifest.schema.json +122 -0
- package/lib/benchmark/schemas/v1.0.0/subject.schema.json +227 -0
- package/lib/builtin-tuis.ts +16 -15
- package/lib/defaults.json +24 -12
- package/lib/git/review-snapshot.ts +39 -9
- package/lib/git/reviewed-commit-equivalence.ts +135 -0
- package/lib/init.ts +53 -121
- package/lib/internal/agent-client.ts +131 -0
- package/lib/internal/git-workflow.ts +1 -1
- package/lib/internal/release-workflow.ts +68 -16
- package/lib/internal/task-orchestration.ts +132 -0
- package/lib/internal/task-review.ts +65 -0
- package/lib/merge.ts +2 -1
- package/lib/platform/adapters.ts +142 -3
- package/lib/platform/change-request-git-evidence.ts +159 -0
- package/lib/platform/merged-pr-equivalence.ts +51 -14
- package/lib/platform/pr-checks.ts +50 -22
- package/lib/platform/pull-requests.ts +134 -25
- package/lib/platform/releases.ts +1 -1
- package/lib/platform/verification-required.ts +12 -10
- package/lib/prompt.ts +16 -3
- package/lib/release/channels.ts +4 -1
- package/lib/release/workflow.ts +4 -3
- package/lib/remove-dir.ts +28 -0
- package/lib/run/tui.ts +9 -1
- package/lib/sandbox/agent-client-reconciler.ts +378 -0
- package/lib/sandbox/clipboard/linux.ts +2 -1
- package/lib/sandbox/commands/create.ts +111 -192
- package/lib/sandbox/commands/enter.ts +23 -1
- package/lib/sandbox/commands/prune.ts +2 -2
- package/lib/sandbox/commands/rm.ts +3 -2
- package/lib/sandbox/config.ts +31 -4
- package/lib/sandbox/constants.ts +6 -0
- package/lib/sandbox/dockerfile.ts +2 -1
- package/lib/sandbox/managed-fs.ts +18 -5
- package/lib/sandbox/recovery.ts +98 -67
- package/lib/sandbox/shell.ts +1 -1
- package/lib/sandbox/tool-types.ts +143 -0
- package/lib/sandbox/tools.ts +5 -157
- package/lib/task/artifact-lifecycle.ts +1 -38
- package/lib/task/commands/decisions.ts +53 -20
- package/lib/task/delegation-receipts.ts +170 -0
- package/lib/task/events.ts +110 -2
- package/lib/task/orchestration.ts +543 -0
- package/lib/task/review-artifacts.ts +201 -69
- package/lib/task/review-finalization.ts +275 -0
- package/lib/task/review-fingerprint.ts +5 -0
- package/lib/task/verification-checks.ts +2 -1
- package/lib/task/verification-engine.ts +177 -28
- package/lib/task/verification-review.ts +1 -0
- package/lib/task/verification.ts +5 -2
- package/lib/task/workspace-snapshot.ts +36 -0
- package/lib/update.ts +48 -184
- package/package.json +2 -2
- package/templates/.agents/README.en.md +21 -20
- package/templates/.agents/README.zh-CN.md +21 -20
- package/templates/.agents/hooks/lifecycle-delegation.js +64 -0
- package/templates/.agents/rules/README.en.md +2 -0
- package/templates/.agents/rules/README.zh-CN.md +2 -0
- package/templates/.agents/rules/commit-and-pr.en.md +1 -0
- package/templates/.agents/rules/commit-and-pr.zh-CN.md +1 -0
- package/templates/.agents/rules/human-decision-context.en.md +14 -12
- package/templates/.agents/rules/human-decision-context.zh-CN.md +14 -12
- package/templates/.agents/rules/lifecycle-orchestration.en.md +21 -0
- package/templates/.agents/rules/lifecycle-orchestration.zh-CN.md +21 -0
- package/templates/.agents/rules/next-step-output.en.md +16 -0
- package/templates/.agents/rules/next-step-output.zh-CN.md +16 -0
- package/templates/.agents/rules/no-mid-flow-questions.en.md +2 -0
- package/templates/.agents/rules/no-mid-flow-questions.zh-CN.md +2 -0
- package/templates/.agents/rules/release-commands.github.en.md +11 -5
- package/templates/.agents/rules/release-commands.github.zh-CN.md +11 -5
- package/templates/.agents/rules/review-handshake.en.md +4 -4
- package/templates/.agents/rules/review-handshake.zh-CN.md +4 -4
- package/templates/.agents/rules/review-method.en.md +113 -0
- package/templates/.agents/rules/review-method.zh-CN.md +98 -0
- package/templates/.agents/skills/analyze-task/SKILL.en.md +5 -5
- package/templates/.agents/skills/analyze-task/SKILL.zh-CN.md +5 -5
- package/templates/.agents/skills/block-task/SKILL.en.md +4 -4
- package/templates/.agents/skills/block-task/SKILL.zh-CN.md +4 -4
- package/templates/.agents/skills/cancel-task/SKILL.en.md +4 -4
- package/templates/.agents/skills/cancel-task/SKILL.zh-CN.md +5 -5
- package/templates/.agents/skills/check-task/SKILL.en.md +16 -16
- package/templates/.agents/skills/check-task/SKILL.zh-CN.md +16 -16
- package/templates/.agents/skills/close-codescan/SKILL.en.md +4 -4
- package/templates/.agents/skills/close-codescan/SKILL.zh-CN.md +4 -4
- package/templates/.agents/skills/close-dependabot/SKILL.en.md +4 -4
- package/templates/.agents/skills/close-dependabot/SKILL.zh-CN.md +4 -4
- package/templates/.agents/skills/code-task/SKILL.en.md +1 -1
- package/templates/.agents/skills/code-task/SKILL.zh-CN.md +2 -2
- package/templates/.agents/skills/code-task/reference/fix-mode.en.md +14 -16
- package/templates/.agents/skills/code-task/reference/fix-mode.zh-CN.md +14 -16
- package/templates/.agents/skills/code-task/reference/output-template.en.md +3 -3
- package/templates/.agents/skills/code-task/reference/output-template.zh-CN.md +3 -3
- package/templates/.agents/skills/commit/SKILL.en.md +11 -1
- package/templates/.agents/skills/commit/SKILL.zh-CN.md +11 -1
- package/templates/.agents/skills/commit/reference/task-status-update.en.md +24 -28
- package/templates/.agents/skills/commit/reference/task-status-update.zh-CN.md +24 -28
- package/templates/.agents/skills/complete-task/SKILL.en.md +2 -2
- package/templates/.agents/skills/complete-task/SKILL.zh-CN.md +2 -2
- package/templates/.agents/skills/create-pr/SKILL.en.md +10 -10
- package/templates/.agents/skills/create-pr/SKILL.zh-CN.md +10 -10
- package/templates/.agents/skills/create-pr/reference/pr-body-template.en.md +3 -3
- package/templates/.agents/skills/create-pr/reference/pr-body-template.zh-CN.md +3 -3
- package/templates/.agents/skills/create-task/SKILL.en.md +11 -11
- package/templates/.agents/skills/create-task/SKILL.zh-CN.md +11 -11
- package/templates/.agents/skills/import-codescan/SKILL.en.md +5 -5
- package/templates/.agents/skills/import-codescan/SKILL.zh-CN.md +5 -5
- package/templates/.agents/skills/import-dependabot/SKILL.en.md +5 -5
- package/templates/.agents/skills/import-dependabot/SKILL.zh-CN.md +5 -5
- package/templates/.agents/skills/import-issue/SKILL.en.md +5 -5
- package/templates/.agents/skills/import-issue/SKILL.zh-CN.md +5 -5
- package/templates/.agents/skills/init-labels/SKILL.en.md +4 -4
- package/templates/.agents/skills/init-labels/SKILL.zh-CN.md +4 -4
- package/templates/.agents/skills/init-milestones/SKILL.en.md +4 -4
- package/templates/.agents/skills/init-milestones/SKILL.zh-CN.md +4 -4
- package/templates/.agents/skills/plan-task/SKILL.en.md +5 -5
- package/templates/.agents/skills/plan-task/SKILL.zh-CN.md +5 -5
- package/templates/.agents/skills/refine-title/SKILL.en.md +1 -1
- package/templates/.agents/skills/refine-title/SKILL.zh-CN.md +1 -1
- package/templates/.agents/skills/release/SKILL.en.md +1 -1
- package/templates/.agents/skills/review-analysis/SKILL.en.md +13 -2
- package/templates/.agents/skills/review-analysis/SKILL.zh-CN.md +14 -3
- package/templates/.agents/skills/review-analysis/config/verify.en.json +6 -0
- package/templates/.agents/skills/review-analysis/config/verify.zh-CN.json +6 -0
- package/templates/.agents/skills/review-analysis/reference/output-templates.en.md +13 -15
- package/templates/.agents/skills/review-analysis/reference/output-templates.zh-CN.md +13 -15
- package/templates/.agents/skills/review-analysis/reference/report-template.en.md +51 -5
- package/templates/.agents/skills/review-analysis/reference/report-template.zh-CN.md +52 -6
- package/templates/.agents/skills/review-analysis/reference/review-criteria.en.md +25 -22
- package/templates/.agents/skills/review-analysis/reference/review-criteria.zh-CN.md +25 -22
- package/templates/.agents/skills/review-code/SKILL.en.md +28 -8
- package/templates/.agents/skills/review-code/SKILL.zh-CN.md +28 -8
- package/templates/.agents/skills/review-code/config/verify.en.json +7 -0
- package/templates/.agents/skills/review-code/config/verify.zh-CN.json +7 -0
- package/templates/.agents/skills/review-code/reference/concurrency-risks.en.md +25 -0
- package/templates/.agents/skills/review-code/reference/concurrency-risks.zh-CN.md +25 -0
- package/templates/.agents/skills/review-code/reference/cross-platform-risks.en.md +27 -0
- package/templates/.agents/skills/review-code/reference/cross-platform-risks.zh-CN.md +27 -0
- package/templates/.agents/skills/review-code/reference/documentation-antipatterns.en.md +13 -0
- package/templates/.agents/skills/review-code/reference/documentation-antipatterns.zh-CN.md +13 -0
- package/templates/.agents/skills/review-code/reference/migration-risks.en.md +25 -0
- package/templates/.agents/skills/review-code/reference/migration-risks.zh-CN.md +25 -0
- package/templates/.agents/skills/review-code/reference/output-templates.en.md +22 -24
- package/templates/.agents/skills/review-code/reference/output-templates.zh-CN.md +22 -24
- package/templates/.agents/skills/review-code/reference/report-template.en.md +54 -7
- package/templates/.agents/skills/review-code/reference/report-template.zh-CN.md +54 -7
- package/templates/.agents/skills/review-code/reference/review-criteria.en.md +29 -24
- package/templates/.agents/skills/review-code/reference/review-criteria.zh-CN.md +29 -24
- package/templates/.agents/skills/review-code/reference/security-risks.en.md +25 -0
- package/templates/.agents/skills/review-code/reference/security-risks.zh-CN.md +25 -0
- package/templates/.agents/skills/review-plan/SKILL.en.md +13 -2
- package/templates/.agents/skills/review-plan/SKILL.zh-CN.md +14 -3
- package/templates/.agents/skills/review-plan/config/verify.en.json +6 -0
- package/templates/.agents/skills/review-plan/config/verify.zh-CN.json +6 -0
- package/templates/.agents/skills/review-plan/reference/output-templates.en.md +13 -15
- package/templates/.agents/skills/review-plan/reference/output-templates.zh-CN.md +13 -15
- package/templates/.agents/skills/review-plan/reference/report-template.en.md +61 -5
- package/templates/.agents/skills/review-plan/reference/report-template.zh-CN.md +61 -5
- package/templates/.agents/skills/review-plan/reference/review-criteria.en.md +21 -24
- package/templates/.agents/skills/review-plan/reference/review-criteria.zh-CN.md +21 -24
- package/templates/.agents/skills/run-task/SKILL.en.md +22 -0
- package/templates/.agents/skills/run-task/SKILL.zh-CN.md +22 -0
- package/templates/.agents/skills/run-task/config/verify.en.json +9 -0
- package/templates/.agents/skills/run-task/config/verify.zh-CN.json +9 -0
- package/templates/.agents/skills/test/SKILL.en.md +4 -4
- package/templates/.agents/skills/test/SKILL.zh-CN.md +4 -4
- package/templates/.agents/skills/test-integration/SKILL.en.md +4 -4
- package/templates/.agents/skills/test-integration/SKILL.zh-CN.md +4 -4
- package/templates/.agents/skills/update-agent-infra/SKILL.en.md +5 -5
- package/templates/.agents/skills/update-agent-infra/SKILL.zh-CN.md +5 -5
- package/templates/.agents/skills/update-agent-infra/scripts/sync-templates.js +647 -203
- package/templates/.agents/skills/upgrade-dependency/SKILL.en.md +4 -4
- package/templates/.agents/skills/upgrade-dependency/SKILL.zh-CN.md +4 -4
- package/templates/.agents/skills/watch-pr/SKILL.en.md +8 -8
- package/templates/.agents/skills/watch-pr/SKILL.zh-CN.md +8 -8
- package/templates/.claude/agents/agent-infra-lifecycle-executor.en.md +6 -0
- package/templates/.claude/agents/agent-infra-lifecycle-executor.zh-CN.md +6 -0
- package/templates/.claude/agents/agent-infra-lifecycle-reviewer.en.md +6 -0
- package/templates/.claude/agents/agent-infra-lifecycle-reviewer.zh-CN.md +6 -0
- package/templates/.claude/commands/run-task.en.md +8 -0
- package/templates/.claude/commands/run-task.zh-CN.md +8 -0
- package/templates/.claude/settings.json +24 -0
- package/templates/.codex/agents/agent-infra-lifecycle-executor.en.toml +3 -0
- package/templates/.codex/agents/agent-infra-lifecycle-executor.zh-CN.toml +3 -0
- package/templates/.codex/agents/agent-infra-lifecycle-reviewer.en.toml +3 -0
- package/templates/.codex/agents/agent-infra-lifecycle-reviewer.zh-CN.toml +3 -0
- package/templates/.gemini/commands/_project_/run-task.en.toml +8 -0
- package/templates/.gemini/commands/_project_/run-task.zh-CN.toml +8 -0
- package/templates/.opencode/commands/run-task.en.md +11 -0
- package/templates/.opencode/commands/run-task.zh-CN.md +11 -0
|
@@ -19,6 +19,9 @@
|
|
|
19
19
|
"file_pattern": "review-analysis.md|review-analysis-r{N}.md",
|
|
20
20
|
"required_sections": [
|
|
21
21
|
"审查摘要",
|
|
22
|
+
"检视覆盖声明",
|
|
23
|
+
"需求分析专项覆盖",
|
|
24
|
+
"追踪矩阵",
|
|
22
25
|
"问题清单",
|
|
23
26
|
"非阻塞建议",
|
|
24
27
|
"人工校验项",
|
|
@@ -33,6 +36,9 @@
|
|
|
33
36
|
"^\\$ "
|
|
34
37
|
]
|
|
35
38
|
},
|
|
39
|
+
"review-summary": {
|
|
40
|
+
"stage": "analysis"
|
|
41
|
+
},
|
|
36
42
|
"activity-log": {
|
|
37
43
|
"expected_action_pattern": "(Review Analysis|Analysis Review) \\(Round \\d+\\)"
|
|
38
44
|
},
|
|
@@ -15,22 +15,20 @@ Rules:
|
|
|
15
15
|
- Do not mix text from multiple scenarios
|
|
16
16
|
- If `Blocker > 0`, never use an approved template
|
|
17
17
|
- Never count manual-validation items as blocker / major / minor or use them to trigger Scenario B/C/D
|
|
18
|
-
- The selected scenario must
|
|
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
|
-
For Scenarios B/C/D, follow the revision commands with re-review commands: `/review-analysis {task-ref}`, `/{{project}}:review-analysis {task-ref}`, and `$review-analysis {task-ref}`.
|
|
22
|
-
|
|
23
21
|
### Scenario A: Approved with no findings
|
|
24
22
|
|
|
23
|
+
Populate `{next-step-commands}` for this scenario by running `agent-infra-internal agent-client next-steps --skill plan-task --task-ref {task-ref}`.
|
|
24
|
+
|
|
25
25
|
```text
|
|
26
26
|
Task {task-id} requirement analysis review completed. Verdict: approved.
|
|
27
27
|
- Blockers: 0 | Major issues: 0 | Minor issues: 0 | Human-decision: {h}
|
|
28
28
|
[- Review report: .agents/workspace/active/{task-id}/{review-artifact}]
|
|
29
29
|
|
|
30
30
|
Next step - write the technical plan:
|
|
31
|
-
|
|
32
|
-
- Gemini CLI: /{{project}}:plan-task {task-ref}
|
|
33
|
-
- Codex CLI: $plan-task {task-ref}
|
|
31
|
+
{next-step-commands}
|
|
34
32
|
|
|
35
33
|
[When manual-validation > 0, append:]
|
|
36
34
|
Reminder: manual-validation items belong in the PR description manual verification checklist and should not trigger /analyze-task.
|
|
@@ -38,15 +36,15 @@ Reminder: manual-validation items belong in the PR description manual verificati
|
|
|
38
36
|
|
|
39
37
|
### Scenario B: Changes requested (major / minor)
|
|
40
38
|
|
|
39
|
+
Populate `{next-step-commands}` for this scenario by running `agent-infra-internal agent-client next-steps --skill analyze-task --task-ref {task-ref}`.
|
|
40
|
+
|
|
41
41
|
```text
|
|
42
42
|
Task {task-id} requirement analysis review completed. Verdict: changes requested.
|
|
43
43
|
- Blockers: 0 | Major issues: {n} | Minor issues: {n} | Human-decision: {h}
|
|
44
44
|
- Review report: .agents/workspace/active/{task-id}/{review-artifact}
|
|
45
45
|
|
|
46
46
|
Next step - revise requirement analysis:
|
|
47
|
-
|
|
48
|
-
- Gemini CLI: /{{project}}:analyze-task {task-ref}
|
|
49
|
-
- Codex CLI: $analyze-task {task-ref}
|
|
47
|
+
{next-step-commands}
|
|
50
48
|
|
|
51
49
|
[When manual-validation > 0, append:]
|
|
52
50
|
Reminder: manual-validation items belong in the PR description manual verification checklist and should not trigger /analyze-task.
|
|
@@ -54,15 +52,15 @@ Reminder: manual-validation items belong in the PR description manual verificati
|
|
|
54
52
|
|
|
55
53
|
### Scenario C: Changes requested
|
|
56
54
|
|
|
55
|
+
Populate `{next-step-commands}` for this scenario by running `agent-infra-internal agent-client next-steps --skill analyze-task --task-ref {task-ref}`.
|
|
56
|
+
|
|
57
57
|
```text
|
|
58
58
|
Task {task-id} requirement analysis review completed. Verdict: changes requested.
|
|
59
59
|
- Blockers: {n} | Major issues: {n} | Minor issues: {n} | Human-decision: {h}
|
|
60
60
|
- Review report: .agents/workspace/active/{task-id}/{review-artifact}
|
|
61
61
|
|
|
62
62
|
Next step - revise requirement analysis:
|
|
63
|
-
|
|
64
|
-
- Gemini CLI: /{{project}}:analyze-task {task-ref}
|
|
65
|
-
- Codex CLI: $analyze-task {task-ref}
|
|
63
|
+
{next-step-commands}
|
|
66
64
|
|
|
67
65
|
[When manual-validation > 0, append:]
|
|
68
66
|
Reminder: manual-validation items belong in the PR description manual verification checklist and should not trigger /analyze-task.
|
|
@@ -70,15 +68,15 @@ Reminder: manual-validation items belong in the PR description manual verificati
|
|
|
70
68
|
|
|
71
69
|
### Scenario D: Rejected
|
|
72
70
|
|
|
71
|
+
Populate `{next-step-commands}` for this scenario by running `agent-infra-internal agent-client next-steps --skill analyze-task --task-ref {task-ref}`.
|
|
72
|
+
|
|
73
73
|
```text
|
|
74
74
|
Task {task-id} requirement analysis review completed. Verdict: rejected, fresh analysis or requirement clarification required.
|
|
75
75
|
- Blockers: {n} | Major issues: {n} | Minor issues: {n} | Human-decision: {h}
|
|
76
76
|
- Review report: .agents/workspace/active/{task-id}/{review-artifact}
|
|
77
77
|
|
|
78
78
|
Next step - re-analyze:
|
|
79
|
-
|
|
80
|
-
- Gemini CLI: /{{project}}:analyze-task {task-ref}
|
|
81
|
-
- Codex CLI: $analyze-task {task-ref}
|
|
79
|
+
{next-step-commands}
|
|
82
80
|
|
|
83
81
|
[When manual-validation > 0, append:]
|
|
84
82
|
Reminder: manual-validation items belong in the PR description manual verification checklist and should not trigger /analyze-task.
|
|
@@ -15,22 +15,20 @@
|
|
|
15
15
|
- 不要混用不同场景的文案
|
|
16
16
|
- 只要 `Blocker > 0`,就绝对不能输出通过模板
|
|
17
17
|
- manual-validation 项绝对不能被计入 blocker / major / minor 计数,也不能用作触发场景 B/C/D 的依据
|
|
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
|
-
场景 B/C/D 在修订命令后继续列出复审命令:`/review-analysis {task-ref}`、`/{{project}}:review-analysis {task-ref}`、`$review-analysis {task-ref}`。
|
|
22
|
-
|
|
23
21
|
### 场景 A:通过且无问题
|
|
24
22
|
|
|
23
|
+
使用 `agent-infra-internal agent-client next-steps --skill plan-task --task-ref {task-ref}` 生成本场景的 `{next-step-commands}`。
|
|
24
|
+
|
|
25
25
|
```text
|
|
26
26
|
任务 {task-id} 需求分析审查完成。结论:通过。
|
|
27
27
|
- 阻塞项:0 | 主要问题:0 | 次要问题:0 | 人工裁决:{h}
|
|
28
28
|
[- 审查报告:.agents/workspace/active/{task-id}/{review-artifact}]
|
|
29
29
|
|
|
30
30
|
下一步 - 编写技术方案:
|
|
31
|
-
|
|
32
|
-
- Gemini CLI:/{{project}}:plan-task {task-ref}
|
|
33
|
-
- Codex CLI:$plan-task {task-ref}
|
|
31
|
+
{next-step-commands}
|
|
34
32
|
|
|
35
33
|
[当 manual-validation > 0 时,在最后附加一行:]
|
|
36
34
|
提醒:manual-validation 项需在 PR description 的「待人工验证」清单中承接,不应触发 /analyze-task。
|
|
@@ -38,15 +36,15 @@
|
|
|
38
36
|
|
|
39
37
|
### 场景 B:需要修改(major / minor)
|
|
40
38
|
|
|
39
|
+
使用 `agent-infra-internal agent-client next-steps --skill analyze-task --task-ref {task-ref}` 生成本场景的 `{next-step-commands}`。
|
|
40
|
+
|
|
41
41
|
```text
|
|
42
42
|
任务 {task-id} 需求分析审查完成。结论:需要修改。
|
|
43
43
|
- 阻塞项:0 | 主要问题:{n} | 次要问题:{n} | 人工裁决:{h}
|
|
44
44
|
- 审查报告:.agents/workspace/active/{task-id}/{review-artifact}
|
|
45
45
|
|
|
46
46
|
下一步 - 修订需求分析:
|
|
47
|
-
|
|
48
|
-
- Gemini CLI:/{{project}}:analyze-task {task-ref}
|
|
49
|
-
- Codex CLI:$analyze-task {task-ref}
|
|
47
|
+
{next-step-commands}
|
|
50
48
|
|
|
51
49
|
[当 manual-validation > 0 时,在最后附加一行:]
|
|
52
50
|
提醒:manual-validation 项需在 PR description 的「待人工验证」清单中承接,不应触发 /analyze-task。
|
|
@@ -54,15 +52,15 @@
|
|
|
54
52
|
|
|
55
53
|
### 场景 C:需要修改
|
|
56
54
|
|
|
55
|
+
使用 `agent-infra-internal agent-client next-steps --skill analyze-task --task-ref {task-ref}` 生成本场景的 `{next-step-commands}`。
|
|
56
|
+
|
|
57
57
|
```text
|
|
58
58
|
任务 {task-id} 需求分析审查完成。结论:需要修改。
|
|
59
59
|
- 阻塞项:{n} | 主要问题:{n} | 次要问题:{n} | 人工裁决:{h}
|
|
60
60
|
- 审查报告:.agents/workspace/active/{task-id}/{review-artifact}
|
|
61
61
|
|
|
62
62
|
下一步 - 修订需求分析:
|
|
63
|
-
|
|
64
|
-
- Gemini CLI:/{{project}}:analyze-task {task-ref}
|
|
65
|
-
- Codex CLI:$analyze-task {task-ref}
|
|
63
|
+
{next-step-commands}
|
|
66
64
|
|
|
67
65
|
[当 manual-validation > 0 时,在最后附加一行:]
|
|
68
66
|
提醒:manual-validation 项需在 PR description 的「待人工验证」清单中承接,不应触发 /analyze-task。
|
|
@@ -70,15 +68,15 @@
|
|
|
70
68
|
|
|
71
69
|
### 场景 D:拒绝
|
|
72
70
|
|
|
71
|
+
使用 `agent-infra-internal agent-client next-steps --skill analyze-task --task-ref {task-ref}` 生成本场景的 `{next-step-commands}`。
|
|
72
|
+
|
|
73
73
|
```text
|
|
74
74
|
任务 {task-id} 需求分析审查完成。结论:拒绝,需要重新分析或补充需求澄清。
|
|
75
75
|
- 阻塞项:{n} | 主要问题:{n} | 次要问题:{n} | 人工裁决:{h}
|
|
76
76
|
- 审查报告:.agents/workspace/active/{task-id}/{review-artifact}
|
|
77
77
|
|
|
78
78
|
下一步 - 重新分析:
|
|
79
|
-
|
|
80
|
-
- Gemini CLI:/{{project}}:analyze-task {task-ref}
|
|
81
|
-
- Codex CLI:$analyze-task {task-ref}
|
|
79
|
+
{next-step-commands}
|
|
82
80
|
|
|
83
81
|
[当 manual-validation > 0 时,在最后附加一行:]
|
|
84
82
|
提醒:manual-validation 项需在 PR description 的「待人工验证」清单中承接,不应触发 /analyze-task。
|
|
@@ -22,7 +22,45 @@ Use this template when writing `review-analysis.md` or `review-analysis-r{N}.md`
|
|
|
22
22
|
- **Review Time**: {timestamp}
|
|
23
23
|
- **Scope**: {file-count and major modules}
|
|
24
24
|
- **Overall Verdict**: {Approved / Changes Requested / Rejected}
|
|
25
|
-
- **Findings (AI-actionable)**:
|
|
25
|
+
- **Findings (AI-actionable)**: {unresolved-blockers} blockers, {unresolved-major} majors, {unresolved-minor} minors / **Manual validation**: 0
|
|
26
|
+
|
|
27
|
+
## Review Coverage Declaration
|
|
28
|
+
|
|
29
|
+
| pass_id | scope | evidence | result | gaps_or_assumptions |
|
|
30
|
+
|---------|-------|----------|--------|---------------------|
|
|
31
|
+
| pass-1..5 | {scope actually reviewed} | {artifact / file:line / command} | {finding or conclusion} | {gap or assumption} |
|
|
32
|
+
|
|
33
|
+
| lens_id | trigger_evidence | loaded | result |
|
|
34
|
+
|---------|------------------|--------|--------|
|
|
35
|
+
| {registry token} | {trigger or non-trigger evidence} | {yes / no / not-applicable} | {lens result} |
|
|
36
|
+
|
|
37
|
+
## Requirement Analysis Coverage
|
|
38
|
+
|
|
39
|
+
| perspective_id | applicability | reviewed_scope | evidence | result_or_gap |
|
|
40
|
+
|----------------|---------------|----------------|----------|---------------|
|
|
41
|
+
| user | {applicable / not-applicable} | {business goals, user outcomes, non-goals, and acceptance} | {source_id / artifact / file:line} | {covered / gap} |
|
|
42
|
+
| maintainer | {applicable / not-applicable} | {maintenance boundaries, dependencies, compatibility, and ownership} | {source_id / artifact / file:line} | {covered / gap} |
|
|
43
|
+
| operations | {applicable / not-applicable} | {deployment, runtime, observability, recovery, and support constraints} | {source_id / artifact / file:line} | {covered / gap} |
|
|
44
|
+
| security | {applicable / not-applicable} | {trust boundaries, permissions, data, and abuse risks} | {source_id / artifact / file:line} | {covered / gap} |
|
|
45
|
+
| testing | {applicable / not-applicable} | {inputs, actions, results, boundaries, and verification environment} | {source_id / artifact / file:line} | {covered / gap} |
|
|
46
|
+
|
|
47
|
+
| quality_id | source | stakeholder | priority_or_tradeoff | verification | result_or_gap |
|
|
48
|
+
|------------|--------|-------------|----------------------|--------------|---------------|
|
|
49
|
+
| {stable identifier} | {source_id} | {stakeholder} | {priority or trade-off state} | {observable verification} | {covered / gap} |
|
|
50
|
+
|
|
51
|
+
| evolution_id | source | confirmation_status | classification | boundary_evidence | result_or_gap |
|
|
52
|
+
|--------------|--------|---------------------|----------------|-------------------|---------------|
|
|
53
|
+
| {stable identifier} | {source_id} | {confirmed / unconfirmed} | {design-input / assumption / open-question} | {evidence preventing current-scope expansion} | {covered / gap} |
|
|
54
|
+
|
|
55
|
+
| acceptance_id | observable_input | action | expected_result | status_or_gap |
|
|
56
|
+
|---------------|------------------|--------|-----------------|---------------|
|
|
57
|
+
| {stable identifier} | {observable input} | {review or verification action} | {expected result} | {verifiable / open / gap} |
|
|
58
|
+
|
|
59
|
+
## Traceability Matrix
|
|
60
|
+
|
|
61
|
+
| source_id | upstream | reviewed_target | verification | status_or_gap |
|
|
62
|
+
|-----------|----------|-----------------|--------------|---------------|
|
|
63
|
+
| {source identifier} | {upstream requirement or fact} | {requirement/acceptance/impact/risk} | {verification evidence} | {covered / gap} |
|
|
26
64
|
|
|
27
65
|
## Findings
|
|
28
66
|
|
|
@@ -30,15 +68,23 @@ Use this template when writing `review-analysis.md` or `review-analysis-r{N}.md`
|
|
|
30
68
|
|
|
31
69
|
#### 1. {Issue title}
|
|
32
70
|
**File**: `{file-path}:{line-number}`
|
|
33
|
-
**
|
|
34
|
-
**
|
|
71
|
+
**Scenario**: {scenario}
|
|
72
|
+
**Impact**: {impact}
|
|
73
|
+
**Evidence**: {reproducible evidence}
|
|
74
|
+
**Confidence**: {high / medium / low}
|
|
75
|
+
**Unverified Assumptions**: {assumptions or none}
|
|
76
|
+
**Fix Direction**: {fix direction}
|
|
35
77
|
|
|
36
78
|
### Major Issues (should fix)
|
|
37
79
|
|
|
38
80
|
#### 1. {Issue title}
|
|
39
81
|
**File**: `{file-path}:{line-number}`
|
|
40
|
-
**
|
|
41
|
-
**
|
|
82
|
+
**Scenario**: {scenario}
|
|
83
|
+
**Impact**: {impact}
|
|
84
|
+
**Evidence**: {reproducible evidence}
|
|
85
|
+
**Confidence**: {high / medium / low}
|
|
86
|
+
**Unverified Assumptions**: {assumptions or none}
|
|
87
|
+
**Fix Direction**: {fix direction}
|
|
42
88
|
|
|
43
89
|
### Minor Issues (low impact, closure required)
|
|
44
90
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
## 输出模板
|
|
6
6
|
|
|
7
7
|
```markdown
|
|
8
|
-
#
|
|
8
|
+
# 需求分析审查报告
|
|
9
9
|
|
|
10
10
|
- **审查轮次**:第 {review-round} 轮
|
|
11
11
|
- **产物文件**:`{review-artifact}`
|
|
@@ -22,7 +22,45 @@
|
|
|
22
22
|
- **审查时间**:{timestamp}
|
|
23
23
|
- **审查范围**:{file-count and major modules}
|
|
24
24
|
- **总体结论**:{通过 / 需要修改 / 拒绝}
|
|
25
|
-
- **发现(AI 可处理)**:
|
|
25
|
+
- **发现(AI 可处理)**:{unresolved-blockers} 阻塞项,{unresolved-major} 主要,{unresolved-minor} 次要 / **人工校验**:0
|
|
26
|
+
|
|
27
|
+
## 检视覆盖声明
|
|
28
|
+
|
|
29
|
+
| pass_id | scope | evidence | result | gaps_or_assumptions |
|
|
30
|
+
|---------|-------|----------|--------|---------------------|
|
|
31
|
+
| pass-1..5 | {本遍实际范围} | {artifact / file:line / command} | {发现或结论} | {缺口或假设} |
|
|
32
|
+
|
|
33
|
+
| lens_id | trigger_evidence | loaded | result |
|
|
34
|
+
|---------|------------------|--------|--------|
|
|
35
|
+
| {registry token} | {命中或未命中证据} | {yes / no / not-applicable} | {专项结论} |
|
|
36
|
+
|
|
37
|
+
## 需求分析专项覆盖
|
|
38
|
+
|
|
39
|
+
| perspective_id | applicability | reviewed_scope | evidence | result_or_gap |
|
|
40
|
+
|----------------|---------------|----------------|----------|---------------|
|
|
41
|
+
| user | {applicable / not-applicable} | {业务目标、使用结果、非目标与验收} | {source_id / artifact / file:line} | {covered / gap} |
|
|
42
|
+
| maintainer | {applicable / not-applicable} | {维护边界、依赖、兼容性与长期责任} | {source_id / artifact / file:line} | {covered / gap} |
|
|
43
|
+
| operations | {applicable / not-applicable} | {部署、运行、可观测性、恢复与支持约束} | {source_id / artifact / file:line} | {covered / gap} |
|
|
44
|
+
| security | {applicable / not-applicable} | {信任边界、权限、数据与滥用风险} | {source_id / artifact / file:line} | {covered / gap} |
|
|
45
|
+
| testing | {applicable / not-applicable} | {输入、动作、结果、边界与验证环境} | {source_id / artifact / file:line} | {covered / gap} |
|
|
46
|
+
|
|
47
|
+
| quality_id | source | stakeholder | priority_or_tradeoff | verification | result_or_gap |
|
|
48
|
+
|------------|--------|-------------|----------------------|--------------|---------------|
|
|
49
|
+
| {稳定标识} | {source_id} | {利益相关者} | {优先级或权衡状态} | {可观察验证方式} | {covered / gap} |
|
|
50
|
+
|
|
51
|
+
| evolution_id | source | confirmation_status | classification | boundary_evidence | result_or_gap |
|
|
52
|
+
|--------------|--------|---------------------|----------------|-------------------|---------------|
|
|
53
|
+
| {稳定标识} | {source_id} | {confirmed / unconfirmed} | {design-input / assumption / open-question} | {不扩张为当前需求的证据} | {covered / gap} |
|
|
54
|
+
|
|
55
|
+
| acceptance_id | observable_input | action | expected_result | status_or_gap |
|
|
56
|
+
|---------------|------------------|--------|-----------------|---------------|
|
|
57
|
+
| {稳定标识} | {可观察输入} | {审查或验证动作} | {预期结果} | {verifiable / open / gap} |
|
|
58
|
+
|
|
59
|
+
## 追踪矩阵
|
|
60
|
+
|
|
61
|
+
| source_id | upstream | reviewed_target | verification | status_or_gap |
|
|
62
|
+
|-----------|----------|-----------------|--------------|---------------|
|
|
63
|
+
| {来源标识} | {上游需求或事实} | {需求/验收/影响/风险} | {验证证据} | {covered / gap} |
|
|
26
64
|
|
|
27
65
|
## 问题清单
|
|
28
66
|
|
|
@@ -30,15 +68,23 @@
|
|
|
30
68
|
|
|
31
69
|
#### 1. {问题标题}
|
|
32
70
|
**文件**:`{file-path}:{line-number}`
|
|
33
|
-
|
|
34
|
-
|
|
71
|
+
**场景**:{scenario}
|
|
72
|
+
**影响**:{impact}
|
|
73
|
+
**证据**:{reproducible evidence}
|
|
74
|
+
**置信度**:{high / medium / low}
|
|
75
|
+
**未验证假设**:{assumptions or none}
|
|
76
|
+
**修复方向**:{fix direction}
|
|
35
77
|
|
|
36
78
|
### 主要问题(建议修复)
|
|
37
79
|
|
|
38
80
|
#### 1. {问题标题}
|
|
39
81
|
**文件**:`{file-path}:{line-number}`
|
|
40
|
-
|
|
41
|
-
|
|
82
|
+
**场景**:{scenario}
|
|
83
|
+
**影响**:{impact}
|
|
84
|
+
**证据**:{reproducible evidence}
|
|
85
|
+
**置信度**:{high / medium / low}
|
|
86
|
+
**未验证假设**:{assumptions or none}
|
|
87
|
+
**修复方向**:{fix direction}
|
|
42
88
|
|
|
43
89
|
### 次要问题(低影响但需闭环)
|
|
44
90
|
|
|
@@ -23,35 +23,38 @@ Follow the `analysis-review` step in `.agents/workflows/feature-development.yaml
|
|
|
23
23
|
- Presenting uncertain information as fact without marking assumptions or open questions
|
|
24
24
|
- Asserting a `file:line` or behavior from memory or impression without verifying via rg/nl
|
|
25
25
|
|
|
26
|
-
##
|
|
26
|
+
## Requirement Analysis Coverage
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
2. **Specific**: cite exact file paths and line numbers
|
|
30
|
-
3. **Actionable**: suggest a concrete fix
|
|
31
|
-
4. **Severity-based**: clearly distinguish blockers, major issues, and minor issues
|
|
28
|
+
### Perspectives
|
|
32
29
|
|
|
33
|
-
|
|
30
|
+
Every review must examine these minimum perspectives and use their stable `perspective_id` values in the report:
|
|
34
31
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
32
|
+
- `user`: business goals, user outcomes, non-goals, and acceptance
|
|
33
|
+
- `maintainer`: maintenance boundaries, dependencies, compatibility, and long-term ownership
|
|
34
|
+
- `operations`: deployment, runtime, observability, recovery, and support constraints
|
|
35
|
+
- `security`: trust boundaries, permissions, data, and abuse risks
|
|
36
|
+
- `testing`: observable inputs, actions, results, boundary conditions, and verification environments
|
|
38
37
|
|
|
39
|
-
|
|
38
|
+
For an applicable perspective, record the reviewed scope, evidence, and `covered/gap`. A `not-applicable` result requires reviewable evidence or it is a gap. Add stable tokens for other stakeholders triggered by task sources or risk evidence; do not turn every possible role into a fixed checklist.
|
|
40
39
|
|
|
41
|
-
|
|
40
|
+
### Quality Attributes
|
|
42
41
|
|
|
43
|
-
-
|
|
44
|
-
- Missing a specific OS for macOS-only behavior
|
|
45
|
-
- Missing third-party accounts / OAuth
|
|
46
|
-
- Missing privileged operations such as root, sudo, or special network access
|
|
42
|
+
Record only quality attributes triggered by sources, constraints, or perspectives; do not impose a fixed vocabulary. Each item needs a stable `quality_id`, its source and stakeholder, a priority or trade-off state, a verifiable expression, and `covered/gap`. A candidate without a source may only be an assumption, open question, or non-blocking advisory, not a confirmed requirement.
|
|
47
43
|
|
|
48
|
-
|
|
49
|
-
- Yes -> blocker / major / minor, based on risk
|
|
50
|
-
- No -> **manual-validation** (a manual-validation meta-category, not part of severity ordering)
|
|
44
|
+
### Evolution Scenarios
|
|
51
45
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
46
|
+
Each reasonable future change needs a stable `evolution_id`, source, `confirmed/unconfirmed` state, `design-input/assumption/open-question` classification, boundary evidence, and `covered/gap`. An `unconfirmed` scenario must not become a current requirement or directly drive an architecture or implementation choice.
|
|
47
|
+
|
|
48
|
+
### Acceptance Criteria
|
|
49
|
+
|
|
50
|
+
For every criterion, record a stable `acceptance_id`, observable input, review action, expected result, and `verifiable/open/gap`. A non-behavioral constraint may use an observable verification method instead of a behavioral step; anything that cannot close must become an open question or finding.
|
|
51
|
+
|
|
52
|
+
### Traceability and Boundary
|
|
53
|
+
|
|
54
|
+
The shared traceability matrix remains the only mapping from sources to analysis conclusions. Its `source_id` values should cover user requests, Issues, task facts and decisions, and acceptance criteria; stage-specific tables refer back through their source or evidence. This stage only judges whether analysis is ready for design. It does not select architecture styles, design patterns, or implementation technologies, and it does not duplicate the shared five-pass protocol or finding evidence fields.
|
|
55
|
+
|
|
56
|
+
## Shared Method and Classification Boundary
|
|
57
|
+
|
|
58
|
+
Read `.agents/rules/review-method.md` first and apply its five-pass protocol, risk lenses, and finding evidence contract. Finding, manual-validation, advisory, and `needs-human-decision` state semantics remain governed by `.agents/rules/review-handshake.md`. This file adds only analysis-stage criteria.
|
|
56
59
|
|
|
57
60
|
Also inspect the latest requirement analysis artifact and `task.md` Activity Log so the report reflects the full analysis context.
|
|
@@ -23,35 +23,38 @@
|
|
|
23
23
|
- 对无法确认的信息直接下结论,没有标记假设或开放问题
|
|
24
24
|
- 凭印象或记忆断言 `file:line`/行为,没有用 rg/nl 复核就下结论
|
|
25
25
|
|
|
26
|
-
##
|
|
26
|
+
## 需求分析专项覆盖
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
2. **具体**:引用准确的文件路径和行号
|
|
30
|
-
3. **可执行**:给出明确可落地的修复建议
|
|
31
|
-
4. **按严重程度分类**:明确区分 blocker、major 和 minor
|
|
28
|
+
### 角色视角
|
|
32
29
|
|
|
33
|
-
|
|
30
|
+
每轮必须逐项检视以下最低视角,并在报告中使用稳定的 `perspective_id`:
|
|
34
31
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
32
|
+
- `user`:业务目标、使用结果、非目标和验收
|
|
33
|
+
- `maintainer`:维护边界、依赖、兼容性和长期责任
|
|
34
|
+
- `operations`:部署、运行、可观测性、恢复和支持约束
|
|
35
|
+
- `security`:信任边界、权限、数据和滥用风险
|
|
36
|
+
- `testing`:可观察的输入、动作、结果、边界条件和验证环境
|
|
38
37
|
|
|
39
|
-
|
|
38
|
+
适用视角记录实际范围、证据和 `covered/gap`;`not-applicable` 必须附可复核依据,否则视为 gap。若任务来源或风险证据出现其他利益相关者,追加稳定 token;不要把可能角色扩张成固定全集。
|
|
40
39
|
|
|
41
|
-
|
|
40
|
+
### 质量属性
|
|
42
41
|
|
|
43
|
-
|
|
44
|
-
- 缺特定 OS(macOS-only 行为)
|
|
45
|
-
- 缺第三方账号 / OAuth
|
|
46
|
-
- 缺特权操作(root、sudo、特殊网络)
|
|
42
|
+
只记录由来源、约束或角色视角实际触发的质量属性,不使用固定名词全集。每项需有稳定 `quality_id`、来源与利益相关者、优先级或权衡状态、可验证表达及 `covered/gap`。缺少来源的候选项只能作为假设、开放问题或非阻塞建议,不能作为已确认需求。
|
|
47
43
|
|
|
48
|
-
|
|
49
|
-
- 是 -> blocker / major / minor 之一(按风险定档)
|
|
50
|
-
- 否 -> **manual-validation**(人工校验元类目,不参与严重程度排序)
|
|
44
|
+
### 演进场景
|
|
51
45
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
46
|
+
合理未来变化需有稳定 `evolution_id`、来源、`confirmed/unconfirmed` 状态、`design-input/assumption/open-question` 分类、边界证据及 `covered/gap`。`unconfirmed` 场景不得升级为当前需求,也不得直接驱动架构或实现选择。
|
|
47
|
+
|
|
48
|
+
### 验收标准
|
|
49
|
+
|
|
50
|
+
逐项记录稳定 `acceptance_id`、可观察输入、审查动作、预期结果和 `verifiable/open/gap`。非行为型约束可用可观察验证方式替代行为步骤;无法闭环时必须进入开放问题或 finding。
|
|
51
|
+
|
|
52
|
+
### 追踪与边界
|
|
53
|
+
|
|
54
|
+
共享追踪矩阵仍是来源到分析结论的唯一映射。其 `source_id` 应覆盖用户请求、Issue、任务事实/决策和验收标准;专项表通过来源或证据回指这些稳定标识。本阶段只判断分析是否足以进入设计,不选择架构风格、设计模式或实现技术,也不复制共享五遍协议和 finding 证据字段。
|
|
55
|
+
|
|
56
|
+
## 共享方法与分类边界
|
|
57
|
+
|
|
58
|
+
先读取 `.agents/rules/review-method.md`,按其五遍协议、风险镜头和 finding 证据契约执行;finding、manual-validation、advisory 与 `needs-human-decision` 的状态语义以 `.agents/rules/review-handshake.md` 为准。本文件只补充需求分析阶段的专项判断。
|
|
56
59
|
|
|
57
60
|
同时检查最新需求分析产物和 `task.md` Activity Log,确保报告反映完整的分析上下文。
|
|
@@ -67,13 +67,23 @@ Read the highest-round code artifact and, if present, the highest-round fix arti
|
|
|
67
67
|
### 4. Perform the Review
|
|
68
68
|
|
|
69
69
|
Follow `.agents/workflows/feature-development.yaml` and inspect the full change context:
|
|
70
|
-
- Capture `R=$(git rev-parse HEAD)` exactly once; reuse
|
|
71
|
-
- `
|
|
70
|
+
- Capture the reviewed commit `R=$(git rev-parse HEAD)` exactly once; reuse R for this round's report, snapshot tree, and task review fact, and do not re-read HEAD later as a substitute
|
|
71
|
+
- Call `agent-infra-internal platform-pr inspect {task-id}`. When a bound PR provides a base SHA, set the diff base to `D=$(git merge-base "$R" "{base-sha}")`. Without a PR, set `D=$R` only when tracked or untracked worktree changes exist. A clean worktree without a bound PR has no reliable complete committed range: stop and require a bound PR instead of reviewing an empty diff
|
|
72
|
+
- `git diff --binary "$D" -- <post-review-globs>` covers committed and uncommitted tracked changes from D to the current worktree
|
|
72
73
|
- `git ls-files -o --exclude-standard -z -- <post-review-globs>` for untracked new files
|
|
73
|
-
- Write `mode=worktree` and
|
|
74
|
+
- 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
|
|
74
75
|
|
|
76
|
+
> 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.
|
|
75
77
|
> Detailed review criteria, severity rules, and reviewer expectations live in `reference/review-criteria.md`. Read `reference/review-criteria.md` before reviewing.
|
|
76
|
-
|
|
78
|
+
|
|
79
|
+
Apply the shared five-pass protocol to code in this order:
|
|
80
|
+
- Pass 1 reads the complete diff, untracked files, latest code artifact, approved plan/review-plan, task source, and raw test results.
|
|
81
|
+
- Pass 2 maps acceptance/plan → implementation → verification and records changed lines, necessary callers/callees, state/data flow, and uncovered areas per file.
|
|
82
|
+
- Pass 3 reviews overall design before per-file semantics, evaluates every shared registry trigger, and reads every matched reference in full. Test changes load `.agents/rules/testing-discipline.md` through the registry's `testing-discipline` lens; do not maintain a second trigger list.
|
|
83
|
+
- Pass 4 checks guards, call constraints, test coverage, and narrower impact boundaries as counterevidence.
|
|
84
|
+
- Pass 5 reconciles findings, manual-validation, advisories, evidence types, unverified assumptions, ledger state, and verdict.
|
|
85
|
+
|
|
86
|
+
Complete the code implementation coverage in `reference/report-template.md`. Approval is forbidden when a matched reference is missing or unloaded, or when a risk gap remains unclassified.
|
|
77
87
|
|
|
78
88
|
### 5. Write the Review Report
|
|
79
89
|
|
|
@@ -85,10 +95,20 @@ Create `.agents/workspace/active/{task-id}/{review-artifact}`.
|
|
|
85
95
|
|
|
86
96
|
Update task.md:
|
|
87
97
|
- 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}`. Do not scan ids or edit ledger rows
|
|
88
|
-
- After all ledger writes, call `agent-infra-internal task-
|
|
98
|
+
- After all ledger writes, call `agent-infra-internal task-review {task-id} finalize-summary --stage code --artifact {review-artifact}` exactly once
|
|
99
|
+
|
|
100
|
+
Bind and reuse this structured mapping from that one response:
|
|
101
|
+
|
|
102
|
+
```text
|
|
103
|
+
{unresolved-blockers} = stageStatus.unresolvedFindingCounts.blocker
|
|
104
|
+
{unresolved-major} = stageStatus.unresolvedFindingCounts.major
|
|
105
|
+
{unresolved-minor} = stageStatus.unresolvedFindingCounts.minor
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
The intent atomically finalizes the report summary and returns the same ledger snapshot. Do not call `stage-status`, replace placeholders manually, or rescan the finding list. If finalization fails or a response field is missing, stop before the completion event. Derive the verdict and next-step branch from the same response's `stageStatus.canAdvance`; only `canAdvance=true` permits Approved
|
|
89
109
|
- 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
|
|
90
110
|
- For an Approved exit, collect PR and required-checks 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
|
|
91
|
-
- After handling `last_reviewed_commit`, run `agent-infra-internal task-event {task-id} review-code.completed --agent {agent} --artifact {review-artifact} --verdict {approved|changes-requested|rejected} --blockers {
|
|
111
|
+
- After handling `last_reviewed_commit`, run `agent-infra-internal task-event {task-id} review-code.completed --agent {agent} --artifact {review-artifact} --verdict {approved|changes-requested|rejected} --blockers {unresolved-blockers} --major {unresolved-major} --minor {unresolved-minor} --manual-validation {n}`
|
|
92
112
|
|
|
93
113
|
Always include the `Manual-validation: {n}` field in the done log, including when it is 0.
|
|
94
114
|
`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.
|
|
@@ -130,7 +150,7 @@ manual-validation counts do not influence branch selection; they are displayed o
|
|
|
130
150
|
|
|
131
151
|
> Before rendering the final output, read `.agents/rules/next-step-output.md` and apply both of its rules: (1) render `{task-ref}` in the "Next steps" commands as the current task's short id `NN` (see that file for lookup and fallback), while other `{task-id}` placeholders (report titles, paths) keep the full TASK-id form; (2) append the `Completed at` line as the very last line of the user-facing output (this applies to every user-facing output — success, error, and early-return paths alike, not only the success path).
|
|
132
152
|
|
|
133
|
-
|
|
153
|
+
render the selected next-step commands through the shared helper. If `.agents/.airc.json` configures custom TUIs (via `customTUIs`), read each tool's `name` and `invoke`, then add the matching command line in the same format (`${skillName}` becomes the skill name and `${projectName}` becomes the project name).
|
|
134
154
|
|
|
135
155
|
## Completion Checklist
|
|
136
156
|
|
|
@@ -138,7 +158,7 @@ Include all TUI command formats in the next-step output. If `.agents/.airc.json`
|
|
|
138
158
|
- [ ] Created `{review-artifact}`
|
|
139
159
|
- [ ] Updated task.md and appended the Activity Log entry
|
|
140
160
|
- [ ] Chose exactly one verdict branch in the user output
|
|
141
|
-
- [ ]
|
|
161
|
+
- [ ] Rendered the selected next-step commands through the shared helper
|
|
142
162
|
|
|
143
163
|
## Notes
|
|
144
164
|
|
|
@@ -66,13 +66,23 @@ agent-infra-internal task-snapshot {task-id} --format text
|
|
|
66
66
|
### 4. 执行审查
|
|
67
67
|
|
|
68
68
|
遵循 `.agents/workflows/feature-development.yaml`,并同时检查完整变更上下文:
|
|
69
|
-
-
|
|
70
|
-
- `git
|
|
69
|
+
- 一次性记录审查提交 `R=$(git rev-parse HEAD)`;本轮报告、快照树和任务审查事实都复用该 R,禁止稍后重新读取 HEAD 代替
|
|
70
|
+
- 调用 `agent-infra-internal platform-pr inspect {task-id}`:已绑定 PR 且返回 base SHA 时,令差异基线 `D=$(git merge-base "$R" "{base-sha}")`;无 PR 时仅在存在已跟踪或未跟踪工作区变化的前提下令 `D=$R`。无 PR 且工作区干净时无法可靠确定完整提交范围,必须停止并要求先绑定 PR,不得用空 diff 继续审查
|
|
71
|
+
- `git diff --binary "$D" -- <post-review-globs>` 覆盖 `D` 到当前工作区的已提交与未提交跟踪变更
|
|
71
72
|
- `git ls-files -o --exclude-standard -z -- <post-review-globs>` 覆盖未跟踪新文件
|
|
72
|
-
- 把 `mode=worktree
|
|
73
|
+
- 把 `mode=worktree`、`baseline=R`、`diffBase=D` 写入临时 JSON,调用 `agent-infra-internal git-workflow snapshot --input {file}` 一次生成覆盖完整提交范围的审查差异指纹 `F` 与当前工作区审查快照树 `T`;把 `R`、`D`、`F`、`T` 全部写入报告
|
|
73
74
|
|
|
75
|
+
> 上述事实采集完成后,先读取 `.agents/rules/review-method.md`,以其作为 readiness 证据并按 Pass 2–5 完成追踪、风险镜头、反证和归类;报告必须记录全部五遍覆盖。
|
|
74
76
|
> 详细审查标准、严重程度划分和 reviewer 关注点见 `reference/review-criteria.md`。执行此步骤前先读取 `reference/review-criteria.md`。
|
|
75
|
-
|
|
77
|
+
|
|
78
|
+
代码阶段按以下顺序落实共享五遍协议:
|
|
79
|
+
- Pass 1 读取完整 diff、未跟踪文件、最新 code artifact、已批准 plan/review-plan、任务来源和测试原始结果。
|
|
80
|
+
- Pass 2 建立验收/方案—实现—验证映射,并逐文件记录 changed lines、必要调用方/被调用方、状态/数据流和未覆盖区域。
|
|
81
|
+
- Pass 3 先检查整体设计,再检查逐文件语义;逐行判断共享风险镜头注册表,完整读取所有命中 reference。测试变更由注册表中的 `testing-discipline` 镜头加载 `.agents/rules/testing-discipline.md`,不得维护另一份触发清单。
|
|
82
|
+
- Pass 4 检查保护条件、调用约束、测试覆盖和更窄影响范围等反证。
|
|
83
|
+
- Pass 5 核对 finding、manual-validation、advisory、证据类型、未验证假设、账本和 verdict。
|
|
84
|
+
|
|
85
|
+
报告必须填写 `reference/report-template.md` 中的代码实现专项覆盖;镜头命中但 reference 缺失/未加载,或风险缺口未分类时不得给出通过结论。
|
|
76
86
|
|
|
77
87
|
### 5. 编写审查报告
|
|
78
88
|
|
|
@@ -83,10 +93,20 @@ agent-infra-internal task-snapshot {task-id} --format text
|
|
|
83
93
|
### 6. 更新任务状态
|
|
84
94
|
|
|
85
95
|
- 报告完成后,新 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 {相称证据}`。不得扫描编号或手写账本行
|
|
86
|
-
- 全部账本写入完成后只调用一次 `agent-infra-internal task-
|
|
96
|
+
- 全部账本写入完成后只调用一次 `agent-infra-internal task-review {task-id} finalize-summary --stage code --artifact {review-artifact}`
|
|
97
|
+
|
|
98
|
+
从该次返回值绑定并复用以下结构化映射:
|
|
99
|
+
|
|
100
|
+
```text
|
|
101
|
+
{unresolved-blockers} = stageStatus.unresolvedFindingCounts.blocker
|
|
102
|
+
{unresolved-major} = stageStatus.unresolvedFindingCounts.major
|
|
103
|
+
{unresolved-minor} = stageStatus.unresolvedFindingCounts.minor
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
该 intent 原子最终化报告摘要并返回同一次账本快照;不得再调用 `stage-status`、手工替换占位符或扫描问题清单。最终化失败或返回字段缺失时,停止在完成事件之前。以同一次返回的 `stageStatus.canAdvance` 决定 verdict 和下一步;仅 `canAdvance=true` 可用 Approved
|
|
87
107
|
- 仅当 `canAdvance=true`、本轮结论为 Approved 且 `T == R^{tree}` 时写入 `last_reviewed_commit: {R}`;Approved 快照包含未提交差异时清除旧值。否则保留既有值,不得推进或清空
|
|
88
108
|
- Approved 出口继续按 `reference/output-templates.md` 采集 PR 与 required-checks 事实:未提交/未推送走 `commit`,无 PR 走 `create-pr`(无 PR 流程除外),checks 未终态走 `watch-pr`,仅 `HEAD == last_reviewed_commit == PR head` 且 checks 为 `passed|no-required` 时走 `complete-task`;不得仅按审查轮次分流
|
|
89
|
-
- 完成 `last_reviewed_commit` 处理后执行 `agent-infra-internal task-event {task-id} review-code.completed --agent {agent} --artifact {review-artifact} --verdict {approved|changes-requested|rejected} --blockers {
|
|
109
|
+
- 完成 `last_reviewed_commit` 处理后执行 `agent-infra-internal task-event {task-id} review-code.completed --agent {agent} --artifact {review-artifact} --verdict {approved|changes-requested|rejected} --blockers {unresolved-blockers} --major {unresolved-major} --minor {unresolved-minor} --manual-validation {n}`
|
|
90
110
|
|
|
91
111
|
完成日志必须始终写入 `Manual-validation: {n}` 字段,0 也保留。
|
|
92
112
|
`manual-validation` 是 `ai task log` 中 review 行「人工校验点」(EN `Manual-validation`)计数的数据源;不要新增并行人工验证字段。
|
|
@@ -128,7 +148,7 @@ manual-validation 的数量不参与分支选择,只作为人工校验计数
|
|
|
128
148
|
|
|
129
149
|
> 渲染最终输出前先读取 `.agents/rules/next-step-output.md` 并落实其两类规则:(1) 「下一步」命令的 `{task-ref}` 渲染为当前任务短号 `NN`(取值与回退见该文件),其他 `{task-id}` 占位(报告标题、路径)保持完整 TASK-id 形式;(2) 在面向用户输出的绝对最后一行追加 `Completed at` 收尾行(成功、错误、早退等任何面向用户输出都适用,不限于校验通过的成功态)。
|
|
130
150
|
|
|
131
|
-
|
|
151
|
+
向用户通过统一 helper 渲染已选场景的下一步命令。如果 `.agents/.airc.json` 中配置了自定义 TUI(`customTUIs`),读取每个工具的 `name` 和 `invoke`,按同样格式补充对应命令行(`${skillName}` 替换为技能名,`${projectName}` 替换为项目名)。
|
|
132
152
|
|
|
133
153
|
## 完成检查清单
|
|
134
154
|
|
|
@@ -136,7 +156,7 @@ manual-validation 的数量不参与分支选择,只作为人工校验计数
|
|
|
136
156
|
- [ ] 已创建 `{review-artifact}`
|
|
137
157
|
- [ ] 已更新 task.md 并追加 Activity Log
|
|
138
158
|
- [ ] 用户输出中只选择了一个审查结论分支
|
|
139
|
-
- [ ]
|
|
159
|
+
- [ ] 已通过统一 helper 渲染已选场景的下一步命令
|
|
140
160
|
|
|
141
161
|
## 注意事项
|
|
142
162
|
|