ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes H1,R5 本机凭据包确认,"确认本轮 credentialed live smoke 只从仓库外本机安全凭据包读取环境变量,不提交账号、密码、OCR 样票、截图敏感信息或真实路径。","1) 当前基线为 8bd93aa;2) 凭据包位置为仓库外 ~/.hyb-oa/live-smoke.env;3) 文件存在且权限为 600 才可进入 H2 source;4) 文件不存在时停止后续业务验证。","流程级验证:git status --short;stat -c '%a %n' /home/shunli/.hyb-oa/live-smoke.env;不得 cat、grep、打印或提交凭据内容。","git|stat|manual",DONE,DONE,DONE,"issues/2026-05-10_16-39-17-r5-credentialed-live-smoke.csv|external","[]","H1 阻断确认:执行前工作区干净;/home/shunli/.hyb-oa/live-smoke.env 不存在,无法 source 凭据包;本轮未创建、读取或提交任何真实账号、密码、OCR 样票或 secret。" H2,R5 凭据准入 strict 重跑,"在 H1 凭据包存在时 source 本机环境变量并重跑 live smoke 准入;若 strict 失败或凭据包不存在,停止 H3/H4。","1) node scripts/qa/check-live-smoke-env.mjs 输出 publicReady=true 且 wecom=ready;2) node scripts/qa/check-live-smoke-env.mjs --strict 通过才可进入 H3;3) 缺凭据或样票时记录缺项,不执行公网业务 smoke。","流程级验证:若凭据包存在,执行 set -a && source ~/.hyb-oa/live-smoke.env && set +a 后运行 node scripts/qa/check-live-smoke-env.mjs 和 --strict;凭据包不存在时只记录阻断。","node|manual",DONE,DONE,DONE,"scripts/qa/check-live-smoke-env.mjs|docs/trialrun/live-smoke-readiness.md","[""H1""]","H2 阻断确认:因 ~/.hyb-oa/live-smoke.env 不存在,未执行 source;沿用无凭据准入结论 publicReady=true、wecom=ready、liveSmokeReady=false、liveOcrReady=false,H3/H4 不执行。" H3,公网自动化 credentialed live smoke,"在 H2 strict 通过后执行公网自动化 R5,覆盖 /ready、公网资源扫描、网页登录 smoke 和真实 OCR 样票上传。","1) LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash scripts/qa/run-live-smoke-readiness.sh 不再出现 live smoke 或真实 OCR SKIP;2) public bundle findings=0;3) live OCR 进入可解释终态。","流程级验证:LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash scripts/qa/run-live-smoke-readiness.sh;检查 artifacts/qa-flow/live-smoke-readiness-* 中 live-smoke.txt、live-ocr.txt、public-bundle-copy.txt。","bash|node|playwright",TODO,TODO,TODO,"scripts/qa/run-live-smoke-readiness.sh|artifacts/qa-flow","[""H2""]","未执行:H1/H2 阻断,缺本机凭据包。" H4,企业微信真机人工验收,"在 H3 通过后使用真实手机企业微信和移动浏览器验证工作台入口、绑定或登录回退、移动审批、报销上传、通知、布局和 deeplink。","1) 真机企业微信可进入海音达工作台;2) 移动页面无 PC 壳、横向溢出或内部码值主展示;3) 审批 deeplink 回 OA;4) 失败项有证据位置。","流程级验证:按 docs/trialrun/real-device-public-checklist.md 执行;记录测试日期、设备、企业微信版本、账号角色、失败步骤和证据位置,摘要不得含隐私或密钥。","manual|playwright",TODO,TODO,TODO,"docs/trialrun/real-device-public-checklist.md|docs/trialrun/release-readiness-checklist.md","[""H3""]","未执行:H3 未执行,企业微信真机验收仍缺人工记录。" H5,R5 credentialed 结果回填与 R6 Gate,"根据 H1-H4 结果回填主 R5;只有 H2-H4 全部通过才允许启动 R6。","1) 若 H2-H4 全部通过,主 R5 置为 DONE/DONE/DONE;2) 若凭据包缺失或验证失败,主 R5 保持 DOING/TODO/TODO 并记录阻断;3) R6 保持 TODO。","流程级验证:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-10_16-39-17-r5-credentialed-live-smoke.csv;python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv;git diff --check。","python3|git|manual",DONE,DONE,DONE,"issues/2026-05-10_16-39-17-r5-credentialed-live-smoke.csv|issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv|docs/trialrun/release-readiness-checklist.md","[""H2""]","H5 完成:因 H1/H2 阻断,主 R5 保持 DOING/TODO/TODO,R6 保持 TODO;提交类型为 R5 记录 credentialed live smoke 仍阻断。"