4.2 KiB
4.2 KiB
会话回落失败定性:执行计划
Phase A:原样复现与逐条账本
- 记录 HEAD、工作区、Node/Playwright 版本、runner base origin 与 worker/retry 参数;不输出 secret 或完整连接信息。
- 原样运行两份目标 spec(单 worker、无 retry),逐条对账历史 8 条。
- 选择最短 global-search witness 与一个 R103 witness,必要时
--repeat-each验证稳定性和顺序依赖。— Vite dev 历史 8 标题重复三次为 24/24;production preview 聚焦 R103 再次失败并保留 trace。 - 在修改任何 fixture 前冻结基线结论与失败阶段。— 见
research/execution-evidence.md。
Phase B:三面证据与分类检查点
- 以 test-side 安全 ledger 记录 cookie 名称/存在性、login/refresh/me 计数与状态、pathname 转移。— trace 白名单账本证明 hint 存在并触发 refresh,未记录值/header/body。
- 做单变量控制;不得改业务断言、导航次数或认证产品代码。— session hint 已由 trace 反证,改用 production build 唯一新增变量 Service Worker;仅设置
serviceWorkers: "block"后历史 8 条为 8/8 PASS。 - 运行已有前端 bootstrap refresh 对照和后端 refresh rotation focused tests。— 前端 1/1、后端 route 30/30 PASS。
- 如仍不能排除真实集成问题,先确认 loopback/local-regression target,再运行最小真实本地 session 完整导航 witness。— 仓库现成
auth-security-local强制 loopback/临时库,真实 PostgreSQL/HTTP 认证回归 9/9 PASS,refresh/reset race 通过,临时库已清理;前端完整导航由独立 bootstrap Playwright 覆盖。 - 按 PRD R3 写出 FIXTURE / PRODUCT / MIXED / INCONCLUSIVE-PAUSED 唯一分类、支持证据和反证。— 分类检查点为
FIXTURE,见执行证据。
Phase C:分类后的分叉
- FIXTURE:先写分类检查点;可选实施最小 test-only 修复并复跑 8 条,测试变绿仅作支持证据,不替代分类。— 检查点已先写入,再将两处 context 设置认定为永久 test-only 修复。
- PRODUCT/MIXED:停止,不修改认证产品代码;提出独立认证缺陷 task、风险和 reviewer 要求。
- INCONCLUSIVE/PAUSED:记录缺失证据和恢复条件,不把未复现写成 PASS。
- 所有分支均保留“不得以删除断言作为默认修法”,核对目标测试数和关键完整导航没有减少。— 两份 spec 仍为 15 tests;历史 8 标题及导航未删减,retry 仍为 0。
Phase D:验证与收口
- 若有 test code diff:
cd client && npm run typecheck。— PASS。 - 两份目标 spec 和相关 auth 对照按最终分类复跑;不使用 retry 掩盖结果。— production-built preview 两份目标 15/15,前端 bootstrap 1/1,后端 route 30/30,真实本地 PostgreSQL/HTTP 9/9;均零 retry。
- task/process/governance/sensitive/
git diff --check。— 全部 PASS;敏感扫描 0 finding。 - 评估是否需要更新前端/认证 spec;仅沉淀经实验确认的稳定合同。— 已在前端 spec 增加 production PWA build 下 route mock 必须阻断 Service Worker 的可执行合同、反例与测试要求。
- 中文 commit 引用
08-10-session-fallback-failure-classification;不推送、不部署。— 用户已确认 commit 计划。
Risky Files / Stop Points
client/tests/e2e/r103-cross-page-ui-consistency.spec.ts、global-search.spec.ts:可以加安全 ledger/fixture 控制,但禁止删除业务断言或完整导航。client/src/auth/AuthContext.tsx、client/src/auth/authService.ts、client/src/api/http.ts、server/src/routes/auth.js:本任务中只读;一旦需要修改即按 PRODUCT/MIXED 停止。- Vite proxy/config:只读核对;若发现 Host/Origin 漂移,不在本任务顺手修。
- 本地真实 session witness:必须先通过 loopback/local-regression target gate;门禁失败即停止。
Expected Evidence
- 历史 8 条逐项映射表。
- 至少一个失败的安全 request/cookie/navigation ledger。
- session-hint 单变量控制结果。
- 前端 bootstrap、后端 rotation、必要时真实本地集成对照。
- 唯一分类与后续分叉,不以“8 条是否全绿”代替。