5.3 KiB
5.3 KiB
PROGRESS · TASK-staging-gate-fix-20260924 · 2026-09-24
基线与范围
- 基线:
origin/staging = 6dc6510c1b789399f9bc6c94b999b63d4e8bb381(任务书记录的代码提交f125fae0已在该历史中)。工作树开工前已执行git status -sb与git fetch origin --prune,随后以当前origin/staging重置到干净基线。 - 本轮只执行非破坏性 T1–T3 与允许写入记录;未删除、清空、替换任何 raw-appendix 文件或其测试。T4 保留为用户批准/权限 blocked。
- 不改 workflow、数据库、依赖、main、DNS、其它 worktree;未 push。
T1:5 条新增红合同测试
| 断言 | 原值 | 新值 | 原因 |
|---|---|---|---|
chat-navigation-a11y-contract.test.ts bootstrap retry |
window.location.reload() 硬刷新 |
断言 retryHomeBootstrap(...),并断言 helper 清空错误、回到账户阶段、调用 provider reload;同时保留 window.location.reload() 禁止断言 |
D2 已批准局部重试;不能把已验收行为改回整页刷新 |
new-chat-recovery.test.ts activation slice |
以已删除的 if (modelCatalogResult.unavailable) 作终点 |
以稳定的 if (parsedSessions.fallbackSessionIds.length > 0) 作终点 |
模型失败现走 fatal screen,源码合同不得依赖删除语句 |
consultation-recovery.test.ts bootstrap start |
以 let reservedConsultation ... = null 作起点 |
以 const storedPending = dropRectificationStoredPending( 作稳定起点 |
并行预取改变初始化右值,恢复逻辑行为未变 |
consultation-recovery.test.ts pending/global ordering |
要求 stored pending 分支源码先于 fetchActiveConsultationStatus |
仅要求 pending 分支存在并检查其 request/session 参数 | T1/D2 将全局状态与模型目录并行预取;源码顺序不再代表优先级,避免锁错误实现形状 |
new-chat-recovery.test.ts / consultation-recovery.test.ts shared boundaries |
依赖易变语句/初始化形状 | 使用稳定、行为相关锚点并保留真实函数执行 | 同型源码脆弱合同再次触发(BUG-933/934/939/992);不删除测试、不弱化行为断言 |
modelCatalogResult.unavailable 在 frontend/tests 中应为 0 命中;T4 raw-appendix 测试不触碰。
T2:page.tsx 行数
- 原值:
frontend/src/app/(app)/page.tsx1858 行(本轮工作树初始 staging);任务书要求回到任务书基线edc9c22c的 1849 行。 - 新值:将错误屏重试的 5 行状态清理抽到
frontend/src/lib/home-bootstrap.ts的retryHomeBootstrap,并合并不改变语义的 import 空白/相邻声明行;page 当前 1847 行,低于任务书要求的 ≤1849。 - 原因:保持错误屏与局部重试行为不变;仅删除空白并合并 import 声明,不删除业务逻辑或 hook。
T3:支付成功无条件广播余额
- 原值:仅在
typeof payload.credits === "number"时调用notifyBalanceChanged;订阅订单credits缺失时不广播。 - 新值:支付状态
paid后无条件调用notifyBalanceChanged(typeof payload.credits === "number" ? payload.credits : 0)。 - 原因:
page.tsx余额监听只触发refreshAccount(),支付成功不能因订阅响应缺失点数而静默不刷新;未知余额使用 0 仅作为事件载荷,服务端刷新仍是权威值。既有点数订单行为保持。 - 回归断言:
frontend/tests/billing-panel.test.ts已从仅检查credits类型改为锁定 paid 分支无条件调用,并记录订阅响应缺少credits时使用 0 载荷的原值/新值/原因。
T4 与记录边界
- raw-appendix 三件套及
frontend/tests/personal-report-raw-appendix.test.ts原样保留;没有删除、清空、替换或借其它工具绕过权限。 docs/testing/report-reader-actions-20260924.md、docs/tasks/PROGRESS-report-reader-actions-20260924.md当前未由本轮创建;若权限允许,待用户批准后由协调主会话补齐。T4 删除及其全仓零命中验收均 blocked。
验证
- 已执行静态 diff、源代码切片检查、行数检查:page 从 1858 降至 1847;
git status -sb干净起步,当前仅本轮列出的代码/测试/记录有修改。frontend/tests中modelCatalogResult.unavailable命中为 0;raw-appendix 三件套仍各有源码命中并保留。 - 本环境是 Windows,工作树无
frontend/node_modules;tsx、tsc、eslint、next均不可用,故定向测试、tsc、lint、build 和全量测试未执行,未声称通过。 - 未找到可用 Linux runner 或 Linux 日志。任务书提供的 Linux 基线:
edc9c22c3807 条、56 条失败;当前f125fae03809 条、61 条失败,新增 5 条名称已列于任务书。本轮无法实际重跑 Linux 全量并逐条 diff,Linux 当前失败名单/新增必须为 0 验收 blocked。 - tsc、lint、定向测试、build、Linux 全量测试和失败名单逐条比较均待具备 Node 依赖的 Linux 环境后运行;不得将环境缺口写成通过。
下一步
- 在 Linux/Node 20 环境安装或使用现有依赖,运行全量前端测试并与
edc9c22c失败名单逐条比较,新增必须为 0。 - 同环境运行
./node_modules/.bin/tsc --noEmit、npm run lint、5 条定向测试、npm run build。 - 用户批准并解除权限后再处理 T4;当前不 push、不部署。