3.0 KiB
3.0 KiB
PROGRESS · 出生时间旅程合同跟着外壳搬家(2026-09-18)
工作树:.worktrees/birth-time-journey-page-path-20260918
分支:codex/birth-time-journey-page-path-20260918
基线:origin/staging @ 5a1dcbd2
合入提交:39a0d7a9(BUG-939)、0378d9e0(BUG-940)
任务状态
| 任务 | 状态 | 说明 |
|---|---|---|
| 路径搬家 BUG-939 | 完成 | _home_surface 必读 (app)/page.tsx;hooks 仍可选。合入 39a0d7a9,门禁 run 2764 已过 Python |
| 路径锁 | 完成 | PAGE.parts[-2:] == ("(app)", "page.tsx");旧路径不得存在 |
| 五条前端合同 BUG-940 | 完成 | run 2764 暴露:校正守卫后源码正则未搬家 |
| 记录 | 完成 | BUG-939 / BUG-940(均复发自 BUG-933) |
未改 page.tsx、产品行为、Skill、workflow。
断言三栏
| 位置 | 原值 | 新值 | 原因 |
|---|---|---|---|
_home_surface 首页文件 |
frontend/src/app/page.tsx,缺失则 exists() 跳过 |
必读 frontend/src/app/(app)/page.tsx |
e4e73f56 已搬家;静默跳过把失败伪装成「找不到 <BirthTimeRectification」 |
新增 test_home_surface_requires_the_app_route_group_page |
无 | 锁定 (app)/page.tsx 存在、旧路径不存在 |
防复发:下一次再搬文件会 FileNotFound,而不是子串断言 |
chat-composer-queue inputDisabled |
sessionMessagesLoading || rectificationSurfaceOpen || (!profileComplete && …) |
中间加 activeRectificationSession |
BUG-924/935 校正占位必须禁用普通输入框 |
chat-session-url 删/归档写 URL |
函数体内 writeSessionUrl(fallbackId || null, "replace") |
activateFallbackSession,由它 writeSessionUrl(null|fallbackId, "replace") |
回退优先非校正,落到校正走 selectSession |
consultation-entrypoint rectificationSurfaceOpen |
activeRectificationSession && activeSession.id === … |
Boolean(activeRectificationSession && activeSession && activeSession.id === …) |
无活跃会话时不能读 .id |
consultation-entrypoint 校正类型 |
activeSession?.sessionType === "birth_time_rectification" |
composerLocksAsRectification + 守卫里的 session?.sessionType |
类型判断收到守卫 |
consultation-recovery 清 pending |
if (!storedPending && sessionStorage.getItem(…)) { removeItem } |
dropRectificationStoredPending 后 if (!storedPending) removeItem |
校正 pending 不得进普通咨询恢复 |
测试
| 项 | 结果 |
|---|---|
pytest tests/test_birth_time_journey_contract.py tests/test_session_management_entrypoints.py tests/test_supabase_user_data_contract.py tests/test_daily_and_rectification_entrypoints.py |
25 passed |
tsx --test 上述四份前端合同 |
58 passed / 0 failed(含门禁原先 5 红) |
全量 npm test / tsc / lint / next build |
本机 worktree 无独立 node_modules,以门禁为准 |
| 门禁 run 2764 | Python 已过;npm test 5 红即本轮这五条 |
环境缺口
无登录态、无 Chrome、无 Docker。本单只修合同路径,不需要浏览器验收。