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