TASK:Google fcop_minimal live e2e 验证
背景
Issue #2 已完成 Google FCoP Adapter 补全,专项单测 48/48 PASS。验收报告中第 8 条说明:
无有效 REPORT 不让 TASK 静默停 active:Adapter 侧 PASS;真实 Google API + FCoP MCP live e2e 未跑。
因此需要单独补一个真实环境 e2e,不再混入 Issue #2。
目标
在真实或 staging 环境中,用:
CODEFLOW_GOOGLE_TOOL_MODE=fcop_minimal
跑通 Google Agent 的最小 FCoP 闭环:
TASK
→ GoogleGenAiAdapter
→ fcop_minimal tools
→ write_report
→ submit_task
→ ReportSettlement
→ active/review 状态正确
→ audit 日志可查
验证范围
场景 A:正常完成
- 创建一个简单 TASK,recipient 指向 Google 执行 agent,例如 DEV/OPS。
- Google Agent 读取已注入 TASK 或使用最小工具。
- 调用
write_report(status=done)。
- 调用
submit_task。
ReportSettlement 判定 ok。
- TASK 不静默停留 active。
- REPORT 引用当前 TASK。
- Audit log 中可看到工具调用链。
场景 B:无有效 REPORT 自动 blocked
- 构造 Google run 无有效
write_report,或让其只输出普通文本。
ReportSettlement 自动写 blocked REPORT。
- blocked REPORT 包含:
status: blocked
blocker_type: google_fcop_contract_failure
agent_provider: google
auto_generated: true
admin_action_required: true
reason: no_valid_report
- TASK 不静默卡在 active。
场景 C:MODEL_NOT_FOUND
- 临时设置错误模型名。
- 触发
MODEL_NOT_FOUND。
- 不重试 429/503 退避逻辑。
- 写 RuntimeAlert。
- 写 blocked REPORT 或 failed settlement 证据。
场景 D:PM 非 dispatch 场景不能派单
- 使用
pm_self_report_only 或 hot path 自包含任务。
- 确认工具列表中没有
write_task/create_task。
- 普通文本“请 DEV 做”不被 Runtime 猜成派单。
必须收集证据
最终报告必须附:
1. 环境变量
2. 使用模型名
3. TASK 文件路径
4. REPORT 文件路径
5. lifecycle 前后状态
6. GoogleToolAudit 日志片段
7. RuntimeAlert 片段(如有)
8. npm test 或专项 e2e 命令输出
建议命令
根据实际项目启动方式执行,例如:
$env:CODEFLOW_GOOGLE_TOOL_MODE="fcop_minimal"
$env:GEMINI_MODEL="<有效模型名>"
npm start
或使用项目已有 e2e runner。
如果真实 GEMINI_API_KEY 不可用,必须说明:
live e2e 未能执行原因:无 API KEY / 网络 / quota / model 不可用
已完成替代验证:...
验收标准
CODEFLOW_GOOGLE_TOOL_MODE=fcop_minimal 在真实 run 中生效。
- 正常任务能
write_report → submit_task。
ReportSettlement 被实际调用。
- 无有效 REPORT 时自动 blocked。
- MODEL_NOT_FOUND 不重试。
- PM 非 dispatch 场景不能派单。
- Audit log 能证明工具调用链。
- 最终报告有完整证据链。
禁止项
最终报告格式
# REPORT:Google fcop_minimal live e2e 验证
## 环境
- CODEFLOW_GOOGLE_TOOL_MODE=...
- GEMINI_MODEL=...
- API key 状态:可用/不可用
## 场景结果
### A 正常完成
PASS/FAIL
证据:...
### B no_valid_report blocked
PASS/FAIL
证据:...
### C MODEL_NOT_FOUND
PASS/FAIL
证据:...
### D PM 非 dispatch 不派单
PASS/FAIL
证据:...
## 总结
- ...
## 残留风险
- ...
优先级
P1。该任务是 Issue #2 的 live 验证补充,不阻塞 Issue #2 关闭。
TASK:Google fcop_minimal live e2e 验证
背景
Issue #2 已完成 Google FCoP Adapter 补全,专项单测 48/48 PASS。验收报告中第 8 条说明:
因此需要单独补一个真实环境 e2e,不再混入 Issue #2。
目标
在真实或 staging 环境中,用:
跑通 Google Agent 的最小 FCoP 闭环:
验证范围
场景 A:正常完成
write_report(status=done)。submit_task。ReportSettlement判定 ok。场景 B:无有效 REPORT 自动 blocked
write_report,或让其只输出普通文本。ReportSettlement自动写 blocked REPORT。场景 C:MODEL_NOT_FOUND
MODEL_NOT_FOUND。场景 D:PM 非 dispatch 场景不能派单
pm_self_report_only或 hot path 自包含任务。write_task/create_task。必须收集证据
最终报告必须附:
建议命令
根据实际项目启动方式执行,例如:
或使用项目已有 e2e runner。
如果真实
GEMINI_API_KEY不可用,必须说明:验收标准
CODEFLOW_GOOGLE_TOOL_MODE=fcop_minimal在真实 run 中生效。write_report → submit_task。ReportSettlement被实际调用。禁止项
最终报告格式
优先级
P1。该任务是 Issue #2 的 live 验证补充,不阻塞 Issue #2 关闭。