@fitlab-ai/agent-infra 0.9.3 → 0.9.5
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 +3 -1
- package/README.zh-CN.md +3 -1
- package/bin/cli.ts +12 -0
- package/dist/bin/cli.js +14 -0
- package/dist/bin/internal-cli.js +144 -123
- package/dist/lib/agent-clients/adapter.js +94 -4
- package/dist/lib/{sandbox/credentials.js → agent-clients/adapters/claude-code-credentials.js} +4 -14
- package/dist/lib/agent-clients/adapters/claude-code-refresh.js +85 -0
- package/dist/lib/agent-clients/adapters/claude-code-sandbox.js +247 -0
- package/dist/lib/agent-clients/adapters/claude-code.js +17 -3
- package/dist/lib/agent-clients/adapters/codex-lifecycle/app-server.js +382 -0
- package/dist/lib/agent-clients/adapters/codex-lifecycle/evidence.js +163 -0
- package/dist/lib/agent-clients/adapters/codex-lifecycle/store.js +211 -0
- package/dist/lib/agent-clients/adapters/codex.js +2 -2
- package/dist/lib/agent-clients/adapters/opencode-sandbox.js +108 -0
- package/dist/lib/agent-clients/adapters/opencode.js +15 -3
- package/dist/lib/agent-clients/adapters/runtimes/claude-code.dockerfile +65 -0
- package/dist/lib/agent-clients/registry.js +9 -1
- package/dist/lib/git/worktree-identity.js +64 -0
- package/dist/lib/internal/codex-lifecycle.js +202 -0
- package/dist/lib/internal/sandbox-control.js +24 -0
- package/dist/lib/internal/task-activity.js +45 -13
- package/dist/lib/internal/task-create.js +48 -0
- package/dist/lib/internal/task-ledger.js +12 -3
- package/dist/lib/internal/task-lifecycle.js +19 -1
- package/dist/lib/internal/task-orchestration.js +170 -27
- package/dist/lib/platform/github-client.js +19 -2
- package/dist/lib/platform/pr-checks.js +1 -1
- package/dist/lib/platform/pull-requests.js +47 -1
- package/dist/lib/platform/releases.js +13 -5
- package/dist/lib/process-data/index.js +239 -0
- package/dist/lib/process-data/normalize.js +198 -0
- package/dist/lib/process-data/privacy.js +33 -0
- package/dist/lib/process-data/reconcile.js +95 -0
- package/dist/lib/process-data/repair.js +58 -0
- package/dist/lib/process-data/sources.js +345 -0
- package/dist/lib/process-data/store.js +282 -0
- package/dist/lib/process-data/types.js +2 -0
- package/dist/lib/run/index.js +4 -3
- package/dist/lib/run/tui.js +7 -8
- package/dist/lib/sandbox/agent-client-reconciler.js +26 -2
- package/dist/lib/sandbox/capture.js +7 -2
- package/dist/lib/sandbox/commands/create.js +110 -228
- package/dist/lib/sandbox/commands/enter.js +15 -47
- package/dist/lib/sandbox/commands/list-running.js +16 -6
- package/dist/lib/sandbox/commands/ls.js +10 -6
- package/dist/lib/sandbox/commands/rebuild.js +4 -3
- package/dist/lib/sandbox/commands/refresh.js +4 -84
- package/dist/lib/sandbox/commands/rm.js +24 -3
- package/dist/lib/sandbox/commands/show.js +12 -3
- package/dist/lib/sandbox/commands/start.js +7 -4
- package/dist/lib/sandbox/config.js +2 -0
- package/dist/lib/sandbox/constants.js +6 -0
- package/dist/lib/sandbox/control/client.js +58 -0
- package/dist/lib/sandbox/control/protocol.js +54 -0
- package/dist/lib/sandbox/control/server.js +144 -0
- package/dist/lib/sandbox/dockerfile.js +36 -13
- package/dist/lib/sandbox/mounts.js +17 -4
- package/dist/lib/sandbox/recovery.js +128 -5
- package/dist/lib/sandbox/redaction.js +12 -0
- package/dist/lib/sandbox/runtimes/base.dockerfile +24 -74
- package/dist/lib/sandbox/workspace-identity.js +95 -0
- package/dist/lib/sandbox/workspace-view.js +109 -0
- package/dist/lib/task/activity-intent.js +257 -51
- package/dist/lib/task/activity-log.js +32 -5
- package/dist/lib/task/commit-finalization.js +278 -0
- package/dist/lib/task/commit-intent.js +165 -0
- package/dist/lib/task/create-service.js +137 -0
- package/dist/lib/task/create.js +333 -0
- package/dist/lib/task/decision-intents.js +31 -17
- package/dist/lib/task/delegation-receipts.js +2 -2
- package/dist/lib/task/implementation-inputs.js +54 -7
- package/dist/lib/task/ledger-intents.js +35 -1
- package/dist/lib/task/orchestration.js +505 -34
- package/dist/lib/task/resolve-ref.js +41 -1
- package/dist/lib/task/review-fingerprint.js +4 -0
- package/dist/lib/task/workspace-snapshot.js +78 -3
- package/lib/agent-clients/adapter.ts +130 -6
- package/lib/{sandbox/credentials.ts → agent-clients/adapters/claude-code-credentials.ts} +3 -18
- package/lib/agent-clients/adapters/claude-code-refresh.ts +128 -0
- package/lib/agent-clients/adapters/claude-code-sandbox.ts +295 -0
- package/lib/agent-clients/adapters/claude-code.ts +21 -3
- package/lib/agent-clients/adapters/codex-lifecycle/app-server.ts +442 -0
- package/lib/agent-clients/adapters/codex-lifecycle/evidence.ts +307 -0
- package/lib/agent-clients/adapters/codex-lifecycle/store.ts +250 -0
- package/lib/agent-clients/adapters/codex.ts +2 -2
- package/lib/agent-clients/adapters/opencode-sandbox.ts +136 -0
- package/lib/agent-clients/adapters/opencode.ts +18 -3
- package/lib/agent-clients/adapters/runtimes/claude-code.dockerfile +65 -0
- package/lib/agent-clients/registry.ts +9 -1
- package/lib/git/worktree-identity.ts +86 -0
- package/lib/internal/codex-lifecycle.ts +204 -0
- package/lib/internal/sandbox-control.ts +24 -0
- package/lib/internal/task-activity.ts +50 -14
- package/lib/internal/task-create.ts +49 -0
- package/lib/internal/task-ledger.ts +12 -3
- package/lib/internal/task-lifecycle.ts +22 -1
- package/lib/internal/task-orchestration.ts +117 -21
- package/lib/platform/github-client.ts +20 -2
- package/lib/platform/pr-checks.ts +1 -1
- package/lib/platform/pull-requests.ts +49 -1
- package/lib/platform/releases.ts +16 -4
- package/lib/process-data/index.ts +224 -0
- package/lib/process-data/normalize.ts +202 -0
- package/lib/process-data/privacy.ts +41 -0
- package/lib/process-data/reconcile.ts +110 -0
- package/lib/process-data/repair.ts +64 -0
- package/lib/process-data/sources.ts +354 -0
- package/lib/process-data/store.ts +315 -0
- package/lib/process-data/types.ts +135 -0
- package/lib/run/index.ts +5 -3
- package/lib/run/tui.ts +11 -8
- package/lib/sandbox/agent-client-reconciler.ts +44 -2
- package/lib/sandbox/capture.ts +9 -2
- package/lib/sandbox/commands/create.ts +127 -260
- package/lib/sandbox/commands/enter.ts +13 -59
- package/lib/sandbox/commands/list-running.ts +23 -6
- package/lib/sandbox/commands/ls.ts +22 -6
- package/lib/sandbox/commands/rebuild.ts +4 -3
- package/lib/sandbox/commands/refresh.ts +4 -126
- package/lib/sandbox/commands/rm.ts +24 -3
- package/lib/sandbox/commands/show.ts +29 -3
- package/lib/sandbox/commands/start.ts +6 -4
- package/lib/sandbox/config.ts +4 -0
- package/lib/sandbox/constants.ts +8 -0
- package/lib/sandbox/control/client.ts +79 -0
- package/lib/sandbox/control/protocol.ts +110 -0
- package/lib/sandbox/control/server.ts +155 -0
- package/lib/sandbox/dockerfile.ts +66 -13
- package/lib/sandbox/mounts.ts +24 -4
- package/lib/sandbox/recovery.ts +163 -6
- package/lib/sandbox/redaction.ts +14 -0
- package/lib/sandbox/runtimes/base.dockerfile +24 -74
- package/lib/sandbox/tool-types.ts +16 -0
- package/lib/sandbox/workspace-identity.ts +123 -0
- package/lib/sandbox/workspace-view.ts +150 -0
- package/lib/task/activity-intent.ts +350 -61
- package/lib/task/activity-log.ts +46 -7
- package/lib/task/commit-finalization.ts +376 -0
- package/lib/task/commit-intent.ts +230 -0
- package/lib/task/create-service.ts +171 -0
- package/lib/task/create.ts +372 -0
- package/lib/task/decision-intents.ts +32 -12
- package/lib/task/delegation-receipts.ts +2 -2
- package/lib/task/implementation-inputs.ts +62 -8
- package/lib/task/ledger-intents.ts +43 -3
- package/lib/task/orchestration.ts +673 -41
- package/lib/task/resolve-ref.ts +46 -1
- package/lib/task/review-fingerprint.ts +9 -0
- package/lib/task/workspace-snapshot.ts +98 -4
- package/package.json +7 -7
- package/templates/.agents/hooks/lifecycle-delegation.js +47 -3
- package/templates/.agents/rules/README.en.md +1 -1
- package/templates/.agents/rules/README.zh-CN.md +1 -1
- package/templates/.agents/rules/human-decision-context.en.md +11 -2
- package/templates/.agents/rules/human-decision-context.zh-CN.md +11 -2
- package/templates/.agents/rules/pr-checks-commands.en.md +1 -1
- package/templates/.agents/rules/pr-checks-commands.github.en.md +1 -1
- package/templates/.agents/rules/pr-checks-commands.github.zh-CN.md +2 -2
- package/templates/.agents/rules/pr-checks-commands.zh-CN.md +1 -1
- package/templates/.agents/rules/review-handshake.zh-CN.md +1 -1
- package/templates/.agents/rules/task-management.en.md +3 -0
- package/templates/.agents/rules/task-management.zh-CN.md +3 -0
- package/templates/.agents/skills/code-task/SKILL.en.md +1 -1
- package/templates/.agents/skills/code-task/SKILL.zh-CN.md +1 -1
- package/templates/.agents/skills/commit/SKILL.en.md +21 -17
- package/templates/.agents/skills/commit/SKILL.zh-CN.md +28 -16
- package/templates/.agents/skills/commit/reference/commit-orchestration.en.md +50 -0
- package/templates/.agents/skills/commit/reference/commit-orchestration.zh-CN.md +56 -0
- package/templates/.agents/skills/commit/reference/task-status-update.en.md +4 -4
- package/templates/.agents/skills/commit/reference/task-status-update.zh-CN.md +4 -4
- package/templates/.agents/skills/complete-task/SKILL.en.md +1 -1
- package/templates/.agents/skills/complete-task/SKILL.zh-CN.md +1 -1
- 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 +26 -43
- package/templates/.agents/skills/create-task/SKILL.zh-CN.md +26 -43
- package/templates/.agents/skills/create-task/reference/context-capture.en.md +34 -0
- package/templates/.agents/skills/create-task/reference/context-capture.zh-CN.md +34 -0
- package/templates/.agents/skills/review-code/SKILL.en.md +2 -2
- package/templates/.agents/skills/review-code/SKILL.zh-CN.md +2 -2
- package/templates/.agents/skills/review-code/reference/output-templates.en.md +1 -1
- package/templates/.agents/skills/review-code/reference/output-templates.zh-CN.md +1 -1
- package/templates/.agents/skills/review-pr/SKILL.en.md +36 -8
- package/templates/.agents/skills/review-pr/SKILL.zh-CN.md +36 -8
- package/templates/.agents/skills/review-pr/reference/report-template.en.md +1 -1
- package/templates/.agents/skills/review-pr/reference/report-template.zh-CN.md +1 -1
- package/templates/.agents/skills/update-agent-infra/scripts/sync-templates.js +67 -50
- 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/skills/watch-pr/reference/monitor-and-heal.en.md +2 -2
- package/templates/.agents/skills/watch-pr/reference/monitor-and-heal.zh-CN.md +2 -2
- package/templates/.agents/templates/task.en.md +1 -1
- package/templates/.agents/templates/task.zh-CN.md +1 -1
- package/templates/.claude/commands/watch-pr.en.md +1 -1
- package/templates/.claude/commands/watch-pr.zh-CN.md +1 -1
- package/templates/.claude/rules/tool-preferences.en.md +20 -0
- package/templates/.claude/rules/tool-preferences.zh-CN.md +20 -0
- package/templates/.codex/hooks.json +50 -0
- package/templates/.opencode/commands/watch-pr.en.md +1 -1
- package/templates/.opencode/commands/watch-pr.zh-CN.md +1 -1
- package/templates/.gemini/commands/_project_/review-pr.en.toml +0 -10
- package/templates/.gemini/commands/_project_/review-pr.zh-CN.toml +0 -10
|
@@ -17,7 +17,7 @@ description: >
|
|
|
17
17
|
- 不要执行需求分析;分析由 `analyze-task` 独立完成
|
|
18
18
|
- 不要直接实现所描述的功能
|
|
19
19
|
- 不要跳过工作流直接进入计划/实现阶段
|
|
20
|
-
- 仅执行:解析描述 ->
|
|
20
|
+
- 仅执行:解析描述 -> 一次性生成结构化 candidate -> 调用宿主 `task-create` 入口 -> 校验结果 -> 告知用户下一步
|
|
21
21
|
- Issue 创建由 `.agents/rules/create-issue.md` 规则决定;自定义或空平台(未提供平台变体规则文件)时,规则会自然降级为 no-op
|
|
22
22
|
|
|
23
23
|
用户的描述是一个**待办事项**,而不是**立即执行的指令**。
|
|
@@ -71,7 +71,7 @@ description: >
|
|
|
71
71
|
- `bugfix` -> `bug-fix`
|
|
72
72
|
- `refactor` -> `refactoring`
|
|
73
73
|
|
|
74
|
-
### 2.
|
|
74
|
+
### 2. 生成不可变 candidate
|
|
75
75
|
|
|
76
76
|
获取当前时间戳:
|
|
77
77
|
|
|
@@ -79,14 +79,17 @@ description: >
|
|
|
79
79
|
date +%Y%m%d-%H%M%S
|
|
80
80
|
```
|
|
81
81
|
|
|
82
|
-
-
|
|
83
|
-
-
|
|
84
|
-
-
|
|
82
|
+
- 生成随机 UUID v4 作为 `idempotencyKey`,并把步骤 1 的结果写入单个 JSON 文件。
|
|
83
|
+
- candidate 必须符合宿主 `TaskCreateCandidateV1`:`version`、`idempotencyKey`、标准 `agent`、`title`、`type`、不带项目前缀的 `branchSlug`、`priority`、`effort`、`description` 和 `taskInput` 七类列表。
|
|
84
|
+
- 首次提交前只写一次 candidate;等待终态期间不得重新运行 AI 推导或改写文件。超时重试必须复用同一文件,由客户端生成新的 outer request ID。
|
|
85
85
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
-
|
|
86
|
+
调用统一入口:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
agent-infra-internal task-create --input "$candidate_file"
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
宿主负责 TASK-id/时间戳/版本戳、workflow/branch 派生、模板渲染、原子持久化、短号、Issue 与 warning。技能不得自行 `mkdir`、复制任务模板、分配短号或直接调用平台子命令。
|
|
90
93
|
|
|
91
94
|
任务元数据(task.md YAML front matter):
|
|
92
95
|
```yaml
|
|
@@ -108,7 +111,7 @@ assigned_to: {当前 AI 代理}
|
|
|
108
111
|
|
|
109
112
|
priority / effort 必填:由 AI 从任务标题与描述推断后填入(候选值见 `.agents/rules/issue-fields.md`;中文输入按本地化映射规范化)。start_date / target_date 创建时保持留空:`start_date` 由 analyze 阶段写入、`target_date` 由 complete 阶段写入;不要臆测日期。
|
|
110
113
|
|
|
111
|
-
### 3.
|
|
114
|
+
### 3. 处理结构化结果
|
|
112
115
|
|
|
113
116
|
获取当前时间:
|
|
114
117
|
|
|
@@ -116,43 +119,25 @@ priority / effort 必填:由 AI 从任务标题与描述推断后填入(候
|
|
|
116
119
|
date "+%Y-%m-%d %H:%M:%S%z" | sed 's/\([+-][0-9][0-9]\)\([0-9][0-9]\)$/\1:\2/'
|
|
117
120
|
```
|
|
118
121
|
|
|
119
|
-
|
|
120
|
-
- `
|
|
121
|
-
- `
|
|
122
|
-
- `
|
|
123
|
-
- `agent_infra_version`:按 `.agents/rules/version-stamp.md` 取值
|
|
124
|
-
- `## 上下文` 中的 `- **分支**:`:更新为生成的分支名
|
|
125
|
-
- **追加**到 `## Activity Log`(不要覆盖之前的记录):
|
|
126
|
-
```
|
|
127
|
-
- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Create Task** by {agent} — Task created from description
|
|
128
|
-
```
|
|
122
|
+
- `applied` / `no-op`:从响应读取 task ID、短号与可选 Issue 身份;不得从目录扫描推断。
|
|
123
|
+
- `degraded`:本地任务已经保留;展示响应中的 warning。
|
|
124
|
+
- `blocked`:保留 candidate 文件,修复暂态问题后用同一文件重试。
|
|
125
|
+
- `failed`:报告稳定错误码;幂等冲突时不得改写原 key 或原 candidate 后重试。
|
|
129
126
|
|
|
130
|
-
### 4.
|
|
127
|
+
### 4. 平台失败兼容说明
|
|
131
128
|
|
|
132
|
-
|
|
129
|
+
平台级联由宿主服务完成。兼容的人工恢复命令仍由宿主 warning 指引,不在沙箱内执行:
|
|
133
130
|
|
|
134
131
|
```bash
|
|
135
|
-
agent-infra-internal
|
|
136
|
-
agent-infra-internal platform-
|
|
132
|
+
agent-infra-internal task-warning {task-id} add --step create-task --severity ACTION_REQUIRED --code ISSUE_CREATE_FAILED --target issue --message "{error_code}: {error_message}" --action "修复认证/网络/模板问题后手动重试 Issue 创建,或手动创建/找到 Issue 后写入 issue_number"
|
|
133
|
+
agent-infra-internal platform-comment sync {task-id} --kind task --agent {standard-agent-token}
|
|
137
134
|
```
|
|
138
135
|
|
|
139
|
-
|
|
140
|
-
- intent 成功创建 Issue:`issue_number` 已由任务写入内核回写;调用 `agent-infra-internal platform-comment sync {task-id} --kind task --agent {standard-agent-token}`
|
|
141
|
-
- 规则失败(认证 / 网络 / 模板解析等):不回滚 task.md;不追加额外 Activity Log;先调用 `agent-infra-internal task-warning {task-id} add --step create-task --severity ACTION_REQUIRED --code ISSUE_CREATE_FAILED --target issue --message "{error_code}: {error_message}" --action "修复认证/网络/模板问题后手动重试 Issue 创建,或手动创建/找到 Issue 后写入 issue_number"` 提交结构化 warning 意图(调用方不分配编号或写表格);再按"场景 C:Issue 创建失败"输出
|
|
142
|
-
- intent 为 no-op/degraded:按结构化 operations 继续可执行部分;自定义或空平台不创建评论且不阻塞工作流
|
|
143
|
-
- task.md 已存在有效 `issue_number`:create intent 校验绑定后返回 no-op,不重复创建
|
|
136
|
+
技能只消费宿主返回的 Issue identity、operations 与 warnings;不得重复发起平台写入。
|
|
144
137
|
|
|
145
138
|
### 5. 完成校验
|
|
146
139
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
```bash
|
|
150
|
-
node .agents/scripts/task-short-id.js alloc "$task_id"
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
如失败(退出码非 0),按提示「归档若干任务」或「调高 task.shortIdLength」处理;不要继续执行后续步骤。
|
|
154
|
-
|
|
155
|
-
运行完成校验,确认任务产物和同步状态符合规范:
|
|
140
|
+
宿主 `task-create` 服务在返回前运行同一 typed 完成校验;技能从响应的 `task:verify` operation 取得当次结果。branch-only 不得尝试读取不可见的新任务。宿主直接诊断时可运行:
|
|
156
141
|
|
|
157
142
|
```bash
|
|
158
143
|
agent-infra-internal task-verify {task-id} create-task.completed --format text
|
|
@@ -243,12 +228,10 @@ Issue 创建失败:
|
|
|
243
228
|
|
|
244
229
|
## 完成检查清单
|
|
245
230
|
|
|
246
|
-
- [ ]
|
|
231
|
+
- [ ] 只生成一次结构化 candidate 并调用 `agent-infra-internal task-create`
|
|
232
|
+
- [ ] 宿主创建了任务文件 `.agents/workspace/active/{task-id}/task.md`
|
|
247
233
|
- [ ] 已按 `reference/context-capture.md` 写入并复核 `## 任务输入` 的来源与状态语义
|
|
248
|
-
- [ ]
|
|
249
|
-
- [ ] 更新了 task.md 中的 `updated_at` 为当前时间
|
|
250
|
-
- [ ] 更新了 task.md 中的 `assigned_to`
|
|
251
|
-
- [ ] 追加了 Activity Log 条目到 task.md
|
|
234
|
+
- [ ] 响应中的任务 ID 和短号已通过完成校验
|
|
252
235
|
- [ ] 已按 `.agents/rules/create-issue.md` 尝试级联创建 Issue;失败时保留 task.md 并记录原因
|
|
253
236
|
- [ ] 已通过统一 helper 渲染已选场景的下一步命令
|
|
254
237
|
- [ ] **没有修改任何业务代码或配置文件**
|
|
@@ -18,6 +18,40 @@ Faithfully condense existing information into task.md under `## Task Input`:
|
|
|
18
18
|
|
|
19
19
|
Leave missing categories empty rather than inferring content. Deduplicate repeated information without losing its source or state.
|
|
20
20
|
|
|
21
|
+
## Observable Acceptance Extraction
|
|
22
|
+
|
|
23
|
+
The following language-neutral contract is the stable boundary for capturing observable acceptance information:
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
# observable-acceptance-contract
|
|
27
|
+
sources: current-request,necessary-prior-discussion
|
|
28
|
+
scan-entire-visible-context: true
|
|
29
|
+
recognize-without-acceptance-label: true
|
|
30
|
+
components: observable-input,action,expected-result
|
|
31
|
+
combine-distributed-evidence: true
|
|
32
|
+
preserve-source-state: true
|
|
33
|
+
missing-components: preserve-as-gaps
|
|
34
|
+
agent-inference-as-confirmed: false
|
|
35
|
+
destination: task-input.acceptance-criteria
|
|
36
|
+
scenario-explicit: capture-supported-components
|
|
37
|
+
scenario-distributed: combine-supported-components
|
|
38
|
+
scenario-insufficient: preserve-supported-components-and-gaps
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Execution order:
|
|
42
|
+
|
|
43
|
+
1. Scan the complete visible context of the current request and necessary prior discussion. Recognize observable information even when the user did not label it as acceptance criteria.
|
|
44
|
+
2. Identify observable inputs, user or system actions, and expected results. These components may be distributed across turns.
|
|
45
|
+
3. Combine supported components that describe the same behavior into a self-contained item, preserving the source and confirmation state of each piece of information.
|
|
46
|
+
4. Preserve unexpressed components as gaps. Do not invent thresholds, scenarios, actions, or results, and do not mark agent inference as user-confirmed information.
|
|
47
|
+
5. Write the items under `## Task Input / ### Acceptance Criteria`. If the context provides no observable criterion, leave that category empty and retain genuine unknowns in the existing categories.
|
|
48
|
+
|
|
49
|
+
Boundary examples:
|
|
50
|
+
|
|
51
|
+
- **Single-turn explicit information**: when the current request provides an input, action, and result, capture every supported component and identify the current request as its source.
|
|
52
|
+
- **Distributed information**: when the current request describes an action and necessary prior discussion provides an input or result, combine only components for the same behavior and preserve their source states separately.
|
|
53
|
+
- **Insufficient information**: when the user only says that something "should be faster" without an observable condition or threshold, do not invent a performance target; preserve the stated concern and gaps, leaving the acceptance category empty when no criterion can be formed.
|
|
54
|
+
|
|
21
55
|
## Safety and Compression
|
|
22
56
|
|
|
23
57
|
- Exclude secrets, tokens, credentials, and unrelated personal information.
|
|
@@ -18,6 +18,40 @@
|
|
|
18
18
|
|
|
19
19
|
缺失类别保持为空,不推导补齐。相同信息去重,但不得丢失来源或状态语义。
|
|
20
20
|
|
|
21
|
+
## 可观察验收提取
|
|
22
|
+
|
|
23
|
+
以下语言无关契约是可观察验收信息的稳定捕获边界:
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
# observable-acceptance-contract
|
|
27
|
+
sources: current-request,necessary-prior-discussion
|
|
28
|
+
scan-entire-visible-context: true
|
|
29
|
+
recognize-without-acceptance-label: true
|
|
30
|
+
components: observable-input,action,expected-result
|
|
31
|
+
combine-distributed-evidence: true
|
|
32
|
+
preserve-source-state: true
|
|
33
|
+
missing-components: preserve-as-gaps
|
|
34
|
+
agent-inference-as-confirmed: false
|
|
35
|
+
destination: task-input.acceptance-criteria
|
|
36
|
+
scenario-explicit: capture-supported-components
|
|
37
|
+
scenario-distributed: combine-supported-components
|
|
38
|
+
scenario-insufficient: preserve-supported-components-and-gaps
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
执行顺序:
|
|
42
|
+
|
|
43
|
+
1. 扫描当前请求及必要前序讨论的完整可见上下文;即使用户没有使用“验收标准”标签,也要识别其中的可观察信息。
|
|
44
|
+
2. 找出可观察输入、用户或系统执行的动作以及预期结果。这些组成可以分散在不同轮次。
|
|
45
|
+
3. 将描述同一行为且有上下文证据的组成合并为自足条目,并保留每项信息的来源和确认状态。
|
|
46
|
+
4. 未表达的组成保持为缺口;不得补造阈值、场景、动作或结果,也不得把 Agent 推导标记为用户已确认。
|
|
47
|
+
5. 将条目写入 `## 任务输入 / ### 验收标准`。如果上下文没有提供可观察标准,该分类保持为空,真实的待确认信息继续保留在既有分类中。
|
|
48
|
+
|
|
49
|
+
边界样例:
|
|
50
|
+
|
|
51
|
+
- **单轮显式信息**:当前请求同时给出输入、动作和结果时,捕获全部有证据的组成并注明来自当前请求。
|
|
52
|
+
- **跨轮分散信息**:当前请求描述动作、必要前序讨论提供输入或结果时,只合并属于同一行为的组成,并分别保留来源状态。
|
|
53
|
+
- **信息不足**:用户只说“应该更快”但没有可观察条件或阈值时,不得编造性能目标;保留已表达的关注点和缺口,无法形成标准则让验收分类为空。
|
|
54
|
+
|
|
21
55
|
## 安全与压缩
|
|
22
56
|
|
|
23
57
|
- 排除密钥、Token、凭据和与任务无关的个人信息。
|
|
@@ -97,7 +97,7 @@ Create `.agents/workspace/active/{task-id}/{review-artifact}`.
|
|
|
97
97
|
### 6. Update Task Status
|
|
98
98
|
|
|
99
99
|
Update task.md:
|
|
100
|
-
- 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
|
|
100
|
+
- 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
101
|
- After all ledger writes, call `agent-infra-internal task-review {task-id} finalize-summary --stage code --artifact {review-artifact} {execution-flag}` exactly once
|
|
102
102
|
|
|
103
103
|
Bind and reuse this structured mapping from that one response:
|
|
@@ -110,7 +110,7 @@ Update task.md:
|
|
|
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. 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
|
|
112
112
|
- 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
|
-
- For an Approved exit, collect PR and
|
|
113
|
+
- 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
114
|
- 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}`
|
|
115
115
|
|
|
116
116
|
Always include the `Manual-validation: {n}` field in the done log, including when it is 0.
|
|
@@ -95,7 +95,7 @@ agent-infra-internal task-snapshot {task-id} --format text
|
|
|
95
95
|
|
|
96
96
|
### 6. 更新任务状态
|
|
97
97
|
|
|
98
|
-
- 报告完成后,新 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 {相称证据}`。不得扫描编号或手写账本行
|
|
98
|
+
- 报告完成后,新 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
99
|
- 全部账本写入完成后只调用一次 `agent-infra-internal task-review {task-id} finalize-summary --stage code --artifact {review-artifact} {execution-flag}`
|
|
100
100
|
|
|
101
101
|
从该次返回值绑定并复用以下结构化映射:
|
|
@@ -108,7 +108,7 @@ agent-infra-internal task-snapshot {task-id} --format text
|
|
|
108
108
|
|
|
109
109
|
该 intent 原子最终化报告摘要并返回同一次账本快照;不得再调用 `stage-status`、手工替换占位符或扫描问题清单。最终化失败或返回字段缺失时,停止在完成事件之前。以同一次返回的 `stageStatus.canAdvance` 决定 verdict 和下一步;仅 `canAdvance=true` 可用 Approved
|
|
110
110
|
- 仅当 `canAdvance=true`、本轮结论为 Approved 且 `T == R^{tree}` 时写入 `last_reviewed_commit: {R}`;Approved 快照包含未提交差异时清除旧值。否则保留既有值,不得推进或清空
|
|
111
|
-
- Approved 出口继续按 `reference/output-templates.md` 采集 PR
|
|
111
|
+
- 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
112
|
- 完成 `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}`
|
|
113
113
|
|
|
114
114
|
完成日志必须始终写入 `Manual-validation: {n}` 字段,0 也保留。
|
|
@@ -59,7 +59,7 @@ Next step - create a Pull Request:
|
|
|
59
59
|
{next-step-commands}
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
-
#### Branch A3: Watch
|
|
62
|
+
#### Branch A3: Watch All Checks
|
|
63
63
|
|
|
64
64
|
Populate `{next-step-commands}` for this scenario by running `agent-infra-internal agent-client next-steps --skill watch-pr --task-ref {task-ref}`.
|
|
65
65
|
|
|
@@ -55,13 +55,32 @@ agent-infra-internal pr-review-grade resolve-host --pr {pr-number} [--cwd <path>
|
|
|
55
55
|
|
|
56
56
|
`resolve-host` returns a typed `HostResolution` (`unique` / `ambiguous` / `none`). Branch as follows:
|
|
57
57
|
|
|
58
|
-
- **Unique host**: bind `{task-id}
|
|
58
|
+
- **Unique host**: bind `{task-id}`, call `task-activity pr-review-inspect` to obtain the canonical round, prepared/open state, and latest successful review identity, then start this round using the recovery rules below (go to step 2).
|
|
59
59
|
- **Ambiguous hosts**: `resolve-host` returns `ambiguous` and `decide` refuses to classify (fail closed). Stop and ask a human to pin the unique host; do not enter evidence classification.
|
|
60
60
|
- **No host**: block by default and require linking an Issue/task first (show linking guidance); never auto-create/import an Issue. Only when the user explicitly chooses a "one-shot review" do process files land in `.agents/workspace/reviews/{pr-number}/` (`recoverable: false`).
|
|
61
61
|
|
|
62
|
+
After the task-anchored path resolves the host and remote head, run:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
agent-infra-internal task-activity {task-id} pr-review-inspect
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
- `prepared`: reuse that artifact; `open` with an unchanged head: replay start for the same artifact/head (a no-op) and resume the round.
|
|
69
|
+
- `open` with a changed head: first set the old artifact Formal Review Status to `superseded`, then terminate it using the old artifact/head; continue with the next round returned by inspect.
|
|
70
|
+
- No prepared/open round: create the next artifact skeleton from `reference/report-template.md`, initially recording the state check, identity, reviewed head, and `Formal Review Status: pending`.
|
|
71
|
+
|
|
72
|
+
After this branch and before step 2 evidence grading, write started:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
agent-infra-internal task-activity {task-id} pr-review-start --agent {agent} \
|
|
76
|
+
--artifact {pr-review-artifact} --head {head-sha}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
The one-shot path never calls `task-activity`. For a controlled failure after started where the formal Review is known not to have been published, first set the artifact status to `aborted`, then call `pr-review-terminate --outcome aborted --reason <single-line>` with the same artifact/head. If publication outcome is uncertain, leave the round open rather than guessing aborted.
|
|
80
|
+
|
|
62
81
|
### 2. Single decide: evidence enumeration + classification + risk + mode
|
|
63
82
|
|
|
64
|
-
Write the host, artifact presence, head state, and the six pure-evidence risk factors to an input JSON
|
|
83
|
+
Write the host, artifact presence, head state, and the six pure-evidence risk factors to an input JSON. Use only the highest `applied` / `no-op` artifact returned by inspect as the prior review; pending/aborted/superseded/failed artifacts count only toward round continuity. Then call once:
|
|
65
84
|
|
|
66
85
|
```bash
|
|
67
86
|
agent-infra-internal pr-review-grade decide --input-file {decide-input.json} [--cwd <path>]
|
|
@@ -71,7 +90,7 @@ Returns the full `DecisionRecord` (`scenario` / `freshness` / `alignment` / `ris
|
|
|
71
90
|
|
|
72
91
|
### 3. Generate `pr-review-rN.md`
|
|
73
92
|
|
|
74
|
-
|
|
93
|
+
Complete this round's artifact per `reference/report-template.md`; the task-anchored path preserves the identity/head/pending status written in step 1 and does not reallocate the round. In `reconstruct` mode (or `audit` with insufficient evidence), write a "Reconstruction Context" section (requirement boundary / architecture choices / impact surface / validation coverage, see `reference/evidence-grading.md`) before the line-level findings. Record `recoverable: true|false` in the frontmatter or header (the one-shot path sets `false`). After finalizing the findings list, freeze `{verdict, blockers, major, minor}` once; the formal Review body and step 6 complete payload must consume that same object directly, never recounting report prose.
|
|
75
94
|
|
|
76
95
|
### 4. Sync the Issue artifact comments (task-anchored path)
|
|
77
96
|
|
|
@@ -99,18 +118,27 @@ agent-infra-internal platform-pr-review publish --pr {pr-number} --scope {taskId
|
|
|
99
118
|
--commit {head-sha} --event {COMMENT|APPROVE|REQUEST_CHANGES} --body-file {review-body.md} [--dry-run] [--cwd <path>]
|
|
100
119
|
```
|
|
101
120
|
|
|
102
|
-
`publish` generates and validates the marker (first line) in core and is idempotent per marker + commit (replay is a no-op; marker hit on a different commit fails stably). On head drift,
|
|
121
|
+
`publish` generates and validates the marker (first line) in core and is idempotent per marker + commit (replay is a no-op; marker hit on a different commit fails stably). On head drift, first set the old artifact status to `superseded`, then close the old round:
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
agent-infra-internal task-activity {task-id} pr-review-terminate --agent {agent} \
|
|
125
|
+
--artifact {pr-review-artifact} --head {head-sha} \
|
|
126
|
+
--outcome superseded --reason "head changed before publish"
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
After closure, re-run step 1 for the next canonical round; never start the new round first. If the remote outcome of `publish` is uncertain, keep the round open and recover through marker + commit idempotency on retry.
|
|
103
130
|
|
|
104
131
|
### 6. Write back the publication result and task state
|
|
105
132
|
|
|
106
|
-
- **Task-anchored path**: write the Review ID/URL into the `pr-review-rN.md` "Publication Result" section
|
|
133
|
+
- **Task-anchored path**: after publish returns `applied` / `no-op`, write the Review ID/URL and matching Formal Review Status into the `pr-review-rN.md` "Publication Result" section, then close the Activity Log with the exact verdict/counts frozen in step 3:
|
|
107
134
|
|
|
108
135
|
```bash
|
|
109
|
-
agent-infra-internal task-activity {task-id}
|
|
110
|
-
--
|
|
136
|
+
agent-infra-internal task-activity {task-id} pr-review-complete --agent {agent} \
|
|
137
|
+
--artifact {pr-review-artifact} --head {head-sha} --verdict {approved|changes-requested|commented} \
|
|
138
|
+
--blockers {blockers} --major {major} --minor {minor}
|
|
111
139
|
```
|
|
112
140
|
|
|
113
|
-
`task-activity` atomically
|
|
141
|
+
`task-activity` generates `Verdict: <result>, blockers: N, major: N, minor: N → {pr-review-artifact}` from the typed payload and atomically writes the Activity Log, `## Review Feedback` link, and version stamp through `writeTask`. It never changes `current_step` or puts receipt/head/Review URL into the NOTE.
|
|
114
142
|
|
|
115
143
|
- **One-shot path (no task)**: write the Review ID/URL only into the `pr-review-rN.md` "Publication Result" section; do not call `task-activity`.
|
|
116
144
|
|
|
@@ -55,13 +55,32 @@ agent-infra-internal pr-review-grade resolve-host --pr {pr-number} [--cwd <path>
|
|
|
55
55
|
|
|
56
56
|
`resolve-host` 输出 `HostResolution`(`unique` / `ambiguous` / `none`),按以下策略分流:
|
|
57
57
|
|
|
58
|
-
- **唯一宿主**:绑定 `{task-id}
|
|
58
|
+
- **唯一宿主**:绑定 `{task-id}`,调用 `task-activity pr-review-inspect` 取得 canonical round、prepared/open 状态和最近成功审查身份,再按下述恢复规则开始本轮(进入步骤 2)。
|
|
59
59
|
- **多宿主歧义**:`resolve-host` 返回 `ambiguous`,`decide` 会拒绝分类(fail closed)。立即停止并提示人工指定唯一宿主;不进入证据分类。
|
|
60
60
|
- **无宿主**:默认阻塞,要求先建立 Issue/task 关联(给出关联指引),不自动创建/导入 Issue。仅当用户显式选择「仅一次性检视」时,过程文件写入 `.agents/workspace/reviews/{pr-number}/`(`recoverable: false`)。
|
|
61
61
|
|
|
62
|
+
任务锚定路径在宿主与远端 head 确定后执行:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
agent-infra-internal task-activity {task-id} pr-review-inspect
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
- `prepared`:复用该 artifact;`open` 且 head 未变:对同一 artifact/head 重放 start(no-op)并恢复该轮。
|
|
69
|
+
- `open` 且 head 已变:先把旧 artifact 的正式 Review 状态写为 `superseded`,再用旧 artifact/head 执行 terminate;随后使用 inspect 返回的 next round。
|
|
70
|
+
- 无 prepared/open:按 `reference/report-template.md` 创建 next artifact 骨架,先写状态核对、身份信息、被审 head 与 `正式 Review 状态: pending`。
|
|
71
|
+
|
|
72
|
+
在上述分流完成后、步骤 2 证据分级开始前写 started:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
agent-infra-internal task-activity {task-id} pr-review-start --agent {agent} \
|
|
76
|
+
--artifact {pr-review-artifact} --head {head-sha}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
一次性路径不调用 `task-activity`。任意 started 后、正式 Review 明确尚未发布的受控失败,都先把 artifact 状态写为 `aborted`,再以同一 artifact/head 调用 `pr-review-terminate --outcome aborted --reason <single-line>`;发布结果不确定时保持 open,不臆断 aborted。
|
|
80
|
+
|
|
62
81
|
### 2. 单次 decide:证据枚举 + 场景分类 + 风险分级 + 模式选择
|
|
63
82
|
|
|
64
|
-
把宿主、artifact 存在性、head 状态与六个纯证据风险因素写入输入 JSON
|
|
83
|
+
把宿主、artifact 存在性、head 状态与六个纯证据风险因素写入输入 JSON。prior review 只使用 inspect 返回的最高 `applied` / `no-op` artifact;pending/aborted/superseded/failed 只参与 round 连续性,不作为既有结论。调用一次:
|
|
65
84
|
|
|
66
85
|
```bash
|
|
67
86
|
agent-infra-internal pr-review-grade decide --input-file {decide-input.json} [--cwd <path>]
|
|
@@ -71,7 +90,7 @@ agent-infra-internal pr-review-grade decide --input-file {decide-input.json} [--
|
|
|
71
90
|
|
|
72
91
|
### 3. 生成 `pr-review-rN.md`
|
|
73
92
|
|
|
74
|
-
按 `reference/report-template.md`
|
|
93
|
+
按 `reference/report-template.md` 完成本轮产物;任务锚定路径保留步骤 1 已写入的身份/head/pending 状态,不重新分配 round。`reconstruct`(或 `audit` 证据不足)时,在行级 finding 之前先写「重建上下文」段(需求边界 / 架构选择 / 影响面 / 验证覆盖,见 `reference/evidence-grading.md`)。frontmatter 或首部记录 `recoverable: true|false`(一次性路径为 `false`)。完成最终问题清单后,一次性冻结 `{verdict, blockers, major, minor}`;正式 Review 正文与步骤 6 的 complete payload 必须直接复用该对象,不从报告文案反向统计。
|
|
75
94
|
|
|
76
95
|
### 4. 同步 Issue artifact 评论(任务锚定路径)
|
|
77
96
|
|
|
@@ -99,18 +118,27 @@ agent-infra-internal platform-pr-review publish --pr {pr-number} --scope {taskId
|
|
|
99
118
|
--commit {head-sha} --event {COMMENT|APPROVE|REQUEST_CHANGES} --body-file {review-body.md} [--dry-run] [--cwd <path>]
|
|
100
119
|
```
|
|
101
120
|
|
|
102
|
-
`publish` 由 core 生成并校验 marker(首行),按 marker + commit 幂等(重放 no-op;marker 命中但 commit 不一致稳定失败)。head
|
|
121
|
+
`publish` 由 core 生成并校验 marker(首行),按 marker + commit 幂等(重放 no-op;marker 命中但 commit 不一致稳定失败)。head 漂移时,先把旧 artifact 状态写为 `superseded`,再闭合旧轮:
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
agent-infra-internal task-activity {task-id} pr-review-terminate --agent {agent} \
|
|
125
|
+
--artifact {pr-review-artifact} --head {head-sha} \
|
|
126
|
+
--outcome superseded --reason "head changed before publish"
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
闭合成功后重新执行步骤 1,进入下一 canonical round;不得先写新轮 started。若 publish 调用的远端结果不确定,保留 open 并在重试时依赖 marker + commit 恢复。
|
|
103
130
|
|
|
104
131
|
### 6. 回写发布结果与任务状态
|
|
105
132
|
|
|
106
|
-
-
|
|
133
|
+
- **任务锚定路径**:publish 返回 `applied` / `no-op` 后,把 Review ID/URL 与同名正式 Review 状态写入 `pr-review-rN.md`「发布结果」段,再以步骤 3 冻结的同一组 verdict/counts 闭合活动日志:
|
|
107
134
|
|
|
108
135
|
```bash
|
|
109
|
-
agent-infra-internal task-activity {task-id}
|
|
110
|
-
--
|
|
136
|
+
agent-infra-internal task-activity {task-id} pr-review-complete --agent {agent} \
|
|
137
|
+
--artifact {pr-review-artifact} --head {head-sha} --verdict {approved|changes-requested|commented} \
|
|
138
|
+
--blockers {blockers} --major {major} --minor {minor}
|
|
111
139
|
```
|
|
112
140
|
|
|
113
|
-
`task-activity`
|
|
141
|
+
`task-activity` 由 typed payload 生成 `Verdict: <结论>, blockers: N, major: N, minor: N → {pr-review-artifact}`,并经 `writeTask` 原子完成 Activity Log、`## 审查反馈` 链接与版本戳刷新;不改 `current_step`,也不把 receipt/head/Review URL 写入 NOTE。
|
|
114
142
|
|
|
115
143
|
- **一次性路径(无任务)**:Review ID/URL 只写 `pr-review-rN.md`「发布结果」段,不调用 `task-activity`。
|
|
116
144
|
|
|
@@ -69,7 +69,7 @@ Land the following in order before the line-level findings, without impersonatin
|
|
|
69
69
|
|
|
70
70
|
## Publication Result
|
|
71
71
|
|
|
72
|
-
- **Formal Review Status**: {applied / no-op / blocked / failed}
|
|
72
|
+
- **Formal Review Status**: {pending / applied / no-op / aborted / superseded / blocked / failed}
|
|
73
73
|
- **Review ID**: {review-id or N/A}
|
|
74
74
|
- **Review URL**: {review-url or N/A}
|
|
75
75
|
- **Issue Artifact Comment URL**: {comment-url or N/A}
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
|
|
70
70
|
## 发布结果
|
|
71
71
|
|
|
72
|
-
- **正式 Review 状态**:{applied / no-op / blocked / failed}
|
|
72
|
+
- **正式 Review 状态**:{pending / applied / no-op / aborted / superseded / blocked / failed}
|
|
73
73
|
- **Review ID**:{review-id 或 N/A}
|
|
74
74
|
- **Review URL**:{review-url 或 N/A}
|
|
75
75
|
- **Issue artifact 评论 URL**:{comment-url 或 N/A}
|