文件
hyb-oa/.trellis/tasks/08-10-pwa-cross-version-cache-upgrade-validation/implement.md
T

48 行
3.2 KiB
Markdown
原始文件 Blame 文件历史

此文件含有模棱两可的 Unicode 字符
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
# PWA 跨版本缓存升级验证:执行计划
## Phase A:Harness 与旧版本前置
- [x] 在 `scripts/qa/` 增加 loopback-only wrapper:生成两个临时 production outDir,注入不同 synthetic SHA,失败/退出时清理。
- [x] 在专用 Playwright spec 中实现进程内静态/API server;同一 origin 支持 A→B 原子切换,禁止 path traversal,缓存头贴近生产。
- [x] 显式使用 `serviceWorkers: "allow"`,同一 BrowserContext 建立 synthetic session。
- [x] A 阶段断言 SHA、SW ready、controller、precache 与 A-only asset;未满足即 PAUSED,不进入 B。
## Phase B:同 profile 跨版本重访
- [x] 关闭 A page但保留 context,原位切 B,再创建 page 重访同一路由。
- [x] B 阶段不调用测试侧 reload、clear cookie/cache、unregister 或新 context。
- [x] 等待应用自身 SW 更新,断言最终 SHA=B、route/session 保持、refresh/me 成功。
- [x] 以 controllerchange/CDP worker version、B `sw.js` 指纹、B document SHA 与 B-only chunk 联合证明接管;恒定 `/sw.js` URL 只作 scope 证明。
- [x] 记录 `hyb-oa:pwa-update-ready` 触发次数与阶段;检查最终 cache、asset 请求、404、console/page error 与导航次数,旧-only chunk 不得残留。
- [ ] 加一个明确标注的 fresh-B sanity(如确有诊断价值),但不得把它计入 A→B AC。
## Phase C:结果分叉
- [x] PASS:固化最小 test-only runner/spec,写入脱敏 ledger,并复跑至少两次确认不是 worker 时序偶发。
- [ ] PRODUCT_FINDING:停止,不修改 `pwa.ts`/`vite.config.ts`;记录最短失败阶段和独立修复任务建议。
- [ ] 第一次 B 失败:立即冻结现场并停止,不追加 reload、重访或第二次升级尝试。
- [ ] PAUSED:记录环境/前置缺口和恢复条件,不声称真实用户升级正常或异常。
## Phase D:验证与收口
- [x] focused runner 单 worker、zero retry PASS;重复执行保持同结论。
- [x] 若新增 TS test:`cd client && npm run typecheck`。
- [x] task/process/governance/sensitive/`git diff --check`。
- [x] 评估是否需要扩展 frontend PWA spec;仅在真实 witness 得到稳定结论后沉淀。
- [ ] 中文 commit 引用 `08-10-pwa-cross-version-cache-upgrade-validation`;不推送、不部署。
## Risky Files / Stop Points
- `client/src/pwa.ts`、`client/vite.config.ts`:本任务验证阶段只读;如需改动,按 PRODUCT_FINDING 停止并回来批准。
- 新 QA wrapper:不得覆盖 `client/dist`,不得接受非 loopback origin,不得泄露完整临时路径。
- 新 Playwright spec:不得使用 `page.route`/`context.route`,不得 block Service Worker,不得在 B 阶段强制刷新或清缓存。
- build A 前置不成立、A/B asset 无差集、server origin 变化或 cleanup 失败:立即 PAUSED。
## Expected Evidence
- A/B build SHA、asset 差集与 SW 存在性(仅 synthetic 标签/相对路径)。
- A 阶段 controller + precache 证明。
- B 阶段同 context 重访、应用驱动更新、最终 document/controller/cache/session 证明。
- `/login` 次数、refresh/me status、静态 404、page/chunk error、导航次数的安全 ledger。
- 单一最终状态与失败分叉,不用 fresh install 替代 upgrade。