# 任务书 · 首屏死屏兜底:客户端 bundle 没跑起来时,「正在载入账户」永远转下去(2026-09-17) ## 0. 基线 - 基线 commit:`db5b0a21`(`origin/staging` head)。线上 staging 仍是 `dc2f2a16`,今天六个代码提交都没部署。 - 分支:`codex/first-paint-dead-screen-fallback-20260917`,`git worktree add -b codex/first-paint-dead-screen-fallback-20260917 .worktrees/first-paint-dead-screen-fallback-20260917 origin/staging`。 - 范围:`frontend/src/app/layout.tsx`(内联兜底脚本)、`frontend/src/app/globals.css`(兜底文案样式)、`frontend/src/lib/` 八处正则后行断言、对应测试。不动 Python、不动迁移、不动 Skill、不动业务逻辑。 - BUG 段:**BUG-937 起**(BUG-936 是本单的诊断记录,已 `investigating`;开工时核对最大号)。 ## 1. 事故实证 产品负责人 2026-09-17 转述:一位已有账号的用户在 iPhone Safari 打开 `https://staging.jyotisha.chat/`,永远停在「正在载入账户 / 同步个人资料与对话记录」,进不去页面,转圈还在动。 已确认(线上 `dc2f2a16`,用该用户登录态只读核对,未写入任何数据): | 事实 | 证据 | | --- | --- | | 不是接口问题 | `/api/account` 0.72 s、`/api/sessions?limit=40` 1.07 s、`/api/models` 0.61 s、`/api/rectification/cases/entry-summary` 0.84 s,全部 200 | | 这一屏是预渲染 HTML | `curl https://staging.jyotisha.chat/` 的 HTML 里直接含「正在载入账户」「同步个人资料与对话记录」与 5 处 `app-loading` | | 转圈与 JS 无关 | `.app-loading-orbit::after` 是纯 CSS 动画,`AppLoadingIndicator` 不含任何脚本行为 | | 兜底全在 JS 里 | `page.tsx` 的 8 秒 `bootstrapTimeout`(写 `accountError` + `setHydrated(true)`)、prepare 阶段 4 秒揭幕、401 跳 `/login`,全部写在客户端 bundle 中 | | 首屏要同步跑 25 个 chunk | 首页 HTML 引用 25 个 `/_next/static/chunks/*.js`,都是同步 `