fix(frontend): isolate sidebar registration to unblock navigation
Separate shell subscriptions from Home session data and cover effect convergence, transition cleanup, current callbacks and signed-out fallback with real React lifecycle tests. Record baseline-equivalent local failures and outstanding browser/build verification. Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
# 侧栏修复 · 同环境全量失败逐项对照
|
||||
|
||||
基线 `507ef959`:3481 tests / 3403 pass / 78 fail。修复:3486 tests / 3408 pass / 78 fail。按测试名及出现次数比较,新增/消失失败均为 0;下列 78 项在两边均失败,不作为通过。未收录原始输出或任何凭据。
|
||||
|
||||
| 测试名 | 基线 | 修复 |
|
||||
| --- | --- | --- |
|
||||
| `admin code functions reject immutable codes, revoked redemption, and roll back on audit failure` | fail | fail |
|
||||
| `operation-level admin email reauthentication is removed from routes and UI` | fail | fail |
|
||||
| `rectification agent maps setup failures without calling the rest of the handler` | fail | fail |
|
||||
| `renders the persisted Beam avatar in the sidebar, account menu, and profile editor` | fail | fail |
|
||||
| `public code never imports the internal dynamic choice contract` | fail | fail |
|
||||
| `tests\\birth-time-guide-agent.test.ts` | fail | fail |
|
||||
| `candidate scores stay out of the specified client ownership boundary` | fail | fail |
|
||||
| `personal Agent exposes the Jyotish Skill and named server tool` | fail | fail |
|
||||
| `general agent runtime has no Jyotish skill package and no personal chart tool` | fail | fail |
|
||||
| `the route's own strict checklist reaches the answer, not just the package listing` | fail | fail |
|
||||
| `a route the skill declares no checklist for is reported, not filled in with another route's` | fail | fail |
|
||||
| `health uses the skill's health-timing-strict checklist` | fail | fail |
|
||||
| `wealth uses finance-timing-strict as the live checklist, with the wealth alias in the heading` | fail | fail |
|
||||
| `a multi-domain plan carries every executed route's checklist once` | fail | fail |
|
||||
| `no plan can spend the answer's context on method` | fail | fail |
|
||||
| `the widest legal plan still fits the budget` | fail | fail |
|
||||
| `further reading offers the references the skill names, and only ones that exist` | fail | fail |
|
||||
| `the delivered method is quoted from the live skill tree` | fail | fail |
|
||||
| `tests\\consultation-workflow-request.test.ts` | fail | fail |
|
||||
| `admin customer reset clears only rebuildable application state` | fail | fail |
|
||||
| `service and restricted admin database identities stay separated` | fail | fail |
|
||||
| `Owner recovery grants only one currently loginable synced identity admin` | fail | fail |
|
||||
| `staging backups are encrypted, atomic, private, and retain the newest three` | fail | fail |
|
||||
| `rejects destructive backup directory aliases and symlink components before mutation` | fail | fail |
|
||||
| `rejects unsafe writable backup parents before creating the target` | fail | fail |
|
||||
| `rejects a direct canonical sticky shared backup directory before chmod` | fail | fail |
|
||||
| `creates every absent backup path component privately despite a permissive caller umask` | fail | fail |
|
||||
| `same-second backups publish once without overwriting the completed archive` | fail | fail |
|
||||
| `find enumeration failures preserve existing backups and do not report completion` | fail | fail |
|
||||
| `refuses full disks and removes a failed-pipeline partial file` | fail | fail |
|
||||
| `billing order adjustments and redemption reasons are atomic and audited` | fail | fail |
|
||||
| `billing, subscriptions, usage authorization, RBAC, and model publication remain transactional` | fail | fail |
|
||||
| `saving a published product forks a draft and delete retires or removes it` | fail | fail |
|
||||
| `append_consultation_question ignores thinking fields and enforces the physical JSON cap` | fail | fail |
|
||||
| `database env validator accepts punctuated literal required secrets` | fail | fail |
|
||||
| `database env validator rejects symlinks and unsafe modes` | fail | fail |
|
||||
| `database env validator enforces an explicit staging owner uid without printing values` | fail | fail |
|
||||
| `database env validator accepts a private valid file without printing values` | fail | fail |
|
||||
| `local PostgreSQL applies the reviewed business schema and serves authenticated business calls` | fail | fail |
|
||||
| `personal_reports.card_summary is nullable, owner-read, service-written, and length-capped` | fail | fail |
|
||||
| `personal report job migration is atomic, lease-bound, recoverable, and owner read-only` | fail | fail |
|
||||
| `longform appendices are owner-read, service-written, and never change report status` | fail | fail |
|
||||
| `personal report sections enforce owner-read RLS and service-owned durable transitions` | fail | fail |
|
||||
| `block_scan RPCs are service_role-only and advance a declared period` | fail | fail |
|
||||
| `redeem security: case-sensitive hashing, rate limiting, idempotency and order ownership` | fail | fail |
|
||||
| `read_report_candidate_range is service_role-only, returns only the window, and stays empty without rows` | fail | fail |
|
||||
| `self-hosted identity migration creates Better Auth tables with least privilege` | fail | fail |
|
||||
| `every color token used as a Tailwind utility is exposed through @theme` | fail | fail |
|
||||
| `staging model provider env preparation removes legacy settings and keeps one stable key` | fail | fail |
|
||||
| `staging env validator rejects selector drift, duplicates, and unsafe permissions` | fail | fail |
|
||||
| `production env validators accept only self-hosted production selectors and role URLs` | fail | fail |
|
||||
| `Better Auth supports shared user OTP/password sessions for admins` | fail | fail |
|
||||
| `job migration mirror is exact and preserves personal_reports as the document projection` | fail | fail |
|
||||
| `document v2 and durable job migrations are exact db/supabase mirrors` | fail | fail |
|
||||
| `document v2 migration preserves v1 reads and adds explicit product depth` | fail | fail |
|
||||
| `durable job migration defines the complete state, lease, retry, and identity contract` | fail | fail |
|
||||
| `durable job migration atomically enqueues reports and exposes lease RPCs only to service_role` | fail | fail |
|
||||
| `ingest P0: education kinds, batch confirm, opening focus reuse, precision lock` | fail | fail |
|
||||
| `PR-4 candidate decisions use server UUIDs, receipt-derived gates and separate acceptance/confirmation` | fail | fail |
|
||||
| `tests\\rectification-v9-agent.test.ts` | fail | fail |
|
||||
| `v9 migration applies on a fresh database and re-applies idempotently` | fail | fail |
|
||||
| `v9 open is atomic, idempotent and allows separate homepage cases` | fail | fail |
|
||||
| `v9 enforces profile gating, ownership and terminal read-only` | fail | fail |
|
||||
| `v9 evidence lifecycle: quote grounding, idempotency, confirm and revision lineage` | fail | fail |
|
||||
| `v9 legacy backfill maps statuses, keeps one resumable per user and is idempotent` | fail | fail |
|
||||
| `v9 agent api migration applies, seeds the runtime flag and guards consent` | fail | fail |
|
||||
| `v9 ignores a historical active minute and allows reselection within the live result` | fail | fail |
|
||||
| `tests\\skill-binding.test.ts` | fail | fail |
|
||||
| `immutable Skill migration enforces RPC-only identity, legacy adoption, and cascade-safe receipts` | fail | fail |
|
||||
| `checked-in registry verifies hashed product packages and leaves consult on the live skill` | fail | fail |
|
||||
| `path traversal and symlink escape fail closed` | fail | fail |
|
||||
| `symbolic links are rejected even when their target stays inside the project root` | fail | fail |
|
||||
| `live consult skill reads a hand-updated tree without a registry hash` | fail | fail |
|
||||
| `changed staging workflows are syntactically valid YAML` | fail | fail |
|
||||
| `live staging sync preserves env, state, incoming files, and encrypted backups` | fail | fail |
|
||||
| `live staging sync repairs nested deploy-tree drift without preserving foreign ownership` | fail | fail |
|
||||
| `first immutable deployment rolls back to validated local image IDs` | fail | fail |
|
||||
| `is-docs-only-range.sh decides from local history and refuses non-ancestor ranges` | fail | fail |
|
||||
@@ -0,0 +1,25 @@
|
||||
# 侧栏导航循环 · 测试站真人验收(2026-09-19)
|
||||
|
||||
关联 BUG-971;自动化/交付结果见 [进度记录](../tasks/PROGRESS-sidebar-navigation-loop-20260919.md)。以下项目尚未真人验收,不以匿名 HTTP 200 或最小 React host 测试替代。
|
||||
|
||||
## 前置
|
||||
|
||||
- 仅测试站 `https://staging.jyotisha.chat`;先核对 `/api/health` 的 `deployment.gitCommit` 为本轮代码提交。
|
||||
- 使用本人受控测试账号,不转交 Cookie、JWT、出生资料、会话内容或完整 HAR/curl;曾外发的会话凭据先退出登录并重新登录。
|
||||
- 开 Console 与 Network,清空已有记录。截图只保留脱敏错误、请求路径/状态码、部署 SHA。
|
||||
|
||||
## 核心复现与回归
|
||||
|
||||
1. 刷新首页,静置后点击「星盘」;地址应变 `/chart`,正文与高亮同时切换。回首页后分别点「星历」「我的报告」,验证 `/ephemeris`、`/reports`。
|
||||
2. 三个次级页互跳、浏览器前进/后退、回首页再点三入口,不能停在旧页或必须二次点击。
|
||||
3. Console 不应持续刷 `Maximum update depth exceeded`;静置时 Network 不应持续发送同类请求。
|
||||
4. `/api/ephemeris` 可能在指针进入/按下时预取,**不代表导航完成**。以 URL、目的页正文和路由响应共同判断;按需记录 `_rsc` 请求状态,不记录敏感查询参数。
|
||||
5. 切换受控测试会话、创建空会话、改名/置顶/归档/删除测试会话,确认高亮、列表和操作结果仍同步,不出现旧回调操作错误对象。不要操作真实重要内容。
|
||||
6. 有下一页会话时将列表滚至底部,验证分页可见、加载一次后稳定,没有 observer 重挂导致请求风暴;来回切页不重新拉全列表。
|
||||
7. 打开并关闭账户菜单及设置弹窗,验证正文 inert/恢复、Escape 和导航恢复正常;次级页侧栏保持只读且返回首页后恢复操作。
|
||||
8. 桌面展开/折叠侧栏、移动端抽屉各试三入口;点击后抽屉关闭、正文切换。若登录失效,应正常到登录页/只读回退,不持续刷新。
|
||||
|
||||
## 回报格式
|
||||
|
||||
- 部署 SHA、浏览器/视口、通过/失败的步骤编号。
|
||||
- 失败时仅提供脱敏 Console 错误和请求路径/状态码、URL 是否变化;不贴凭据或原始用户内容。
|
||||
Reference in New Issue
Block a user