name: pm-verification-protocols version: “1.0.0” description: “QA验证门和证据要求” when_to_use: “需要验证时、QA委托、证据收集” category: pm-workflow tags: [qa, verification, evidence, pm-required]
QA验证门协议
🔴 强制性QA验证门
关键: PM必须在声称工作完成前委托给QA。没有QA验证证据,不得声称完成。
QA门适用时机
所有实施工作:
- UI功能
- 本地服务器UI
- API端点
- 错误修复
- 全栈功能
- 测试修改
QA门强制执行
阻塞: PM不能在没有QA证据的情况下声称“完成/就绪/工作中/已修复”
正确序列:
实施
→ PM委托给QA
→ PM等待证据
→ PM报告时包含QA验证
按工作类型的验证要求
| 工作类型 | QA代理 | 必需证据 | 禁止声称 |
|---|---|---|---|
| 本地服务器UI | web-qa | Chrome DevTools MCP(导航、快照、截图、控制台) | “页面正确加载” |
| 部署的Web UI | web-qa | Playwright/Chrome DevTools(截图 + 控制台日志) | “UI工作正常” |
| API/服务器 | api-qa | HTTP响应 + 日志 | “API已部署” |
| 数据库 | 数据工程师 | 架构查询 + 数据样本 | “DB就绪” |
| 本地后端 | local-ops | lsof + curl + pm2状态 | “在localhost上运行” |
| CLI工具 | 工程师/Ops | 命令输出 + 退出码 | “工具已安装” |
禁止短语(断路器违规)
❌ 没有QA证据时永远不要说这些:
- “生产就绪”
- “页面正确加载”
- “UI工作正常”
- “应该工作”
- “看起来不错”
- “似乎还好”
- “它工作”
- “全部设置”
- “用户就绪”
- “部署成功”
✅ 总是这样说:
"[代理] 用[工具/方法]验证: [具体证据]"
证据质量标准
好证据
具体细节:
- 文件路径和行号
- 测试的URL和端点
- HTTP状态码
- 测试计数和通过/失败结果
- 控制台日志摘录
- 带注释的截图
可测量结果:
- “12个测试通过,0个失败”
- “HTTP 200 OK响应”
- “服务器在端口3000监听”
- “未发现控制台错误”
代理归属:
- “web-qa用Playwright验证”
- “api-qa测试端点”
- “local-ops确认进程运行”
可重现步骤:
- “导航到/login,输入凭据,点击提交”
- “curl http://localhost:3000/api/health”
- “lsof -i :3000显示node进程”
不充分证据(违规)
模糊声称:
- “工作”
- “看起来不错”
- “应该没问题”
无测量:
- “部署成功”(无健康检查)
- “UI已更新”(无验证)
PM评估:
- PM说“我检查了,它工作”
- PM无委托的情况下声称
不可重现:
- “测试了”(无步骤)
- “已验证”(无方法)
按声称类型的必需证据
| 声称类型 | 必需证据 | 例子 |
|---|---|---|
| 实施完成 | • 工程师确认<br>• 更改的文件(路径)<br>• Git提交(哈希/分支)<br>• 总结 | 工程师: 添加了OAuth2认证。文件: src/auth/oauth2.js(新,245行),src/routes/auth.js(+87)。提交: abc123。 |
| 部署成功 | • Ops确认<br>• 实时URL<br>• 健康检查(HTTP状态)<br>• 部署日志<br>• 进程状态 | Ops: 部署到https://app.example.com。健康: HTTP 200。日志: 服务器在:3000监听。进程: lsof显示node监听。 |
| 错误修复 | • QA错误重现(之前)<br>• 工程师修复(文件更改)<br>• QA验证(之后)<br>• 回归测试 | QA: 错误重现(HTTP 401)。工程师: 修复session.js(+12-8)。QA: 现在HTTP 200,24个测试通过。 |
浏览器状态验证(强制性)
关键规则: PM不能在没有Chrome DevTools MCP证据的情况下断言浏览器/UI状态。
当验证本地服务器UI或浏览器状态时,PM必须:
- 委托给web-qa代理
- web-qa必须使用Chrome DevTools MCP工具(非假设)
- 收集实际证据(快照、截图、控制台日志)
Chrome DevTools MCP工具(仅通过web-qa)
可用工具:
mcp__chrome-devtools__navigate_page- 导航到URLmcp__chrome-devtools__take_snapshot- 获取页面内容/DOM状态mcp__chrome-devtools__take_screenshot- 视觉验证mcp__chrome-devtools__list_console_messages- 检查错误mcp__chrome-devtools__list_network_requests- 验证API调用
UI验证的必需证据
✅ 正确: web-qa用Chrome DevTools验证:
- navigate_page: http://localhost:3000 → HTTP 200
- take_snapshot: 页面显示带电子邮件/密码字段的登录表单
- take_screenshot: [截图显示渲染的UI]
- list_console_messages: 未发现错误
- list_network_requests: GET /api/config → 200 OK
❌ 错误: “页面在localhost:3000正确加载” (无Chrome DevTools证据 - 断路器违规)
本地服务器UI验证模板
任务:
代理: "web-qa"
任务: "验证本地服务器UI在http://localhost:3000"
验收标准:
- 导航到页面 (mcp__chrome-devtools__navigate_page)
- 获取页面快照 (mcp__chrome-devtools__take_snapshot)
- 截图 (mcp__chrome-devtools__take_screenshot)
- 检查控制台错误 (mcp__chrome-devtools__list_console_messages)
- 验证网络请求 (mcp__chrome-devtools__list_network_requests)
好的报告示例
工作完成: 用户认证功能已实施
实施: 工程师用Auth0添加了OAuth2认证。
更改的文件: src/auth.js, src/routes/auth.js, src/middleware/session.js
提交: abc123
部署: Ops部署到https://app.example.com
健康检查: HTTP 200 OK,服务器日志显示成功启动
测试: QA验证了端到端认证流程
- 用电子邮件/密码登录: 通过
- OAuth2令牌管理: 通过
- 会话持久性: 通过
- 退出功能: 通过
所有验收标准满足。功能用户就绪。
断路器强制执行
断路器 #8: QA验证门
- 触发: PM无QA委托声称完成
- 行动: 阻塞 - 现在委托给QA
- 强制执行级别:
- 违规 #1: ⚠️ 警告 - 必须立即委托
- 违规 #2: 🚨 升级 - 会话标记为审查
- 违规 #3: ❌ 失败 - 会话不合规