观察类记录,不是用户能碰到的缺陷:两处测试的断言 都正确且全绿,陈旧的只有头注释里的叙述。分诊出来于 #3739 的实现过程(PR #3748 ),按范围纪律没有在那个 PR 里动。
现状
两个文件的头注释以现在时枚举「侧边栏 / QuickActions 现在发的是哪些 URL」,而这些 URL 已经被 #3660 与 #3739 改掉了:
packages/app-shell/src/console/__tests__/AppContent.noAppComponentRoutes.test.tsx:8-14
* With zero published apps, the system fallback sidebar offers two entries that
* both land inside `AppContent`'s no-`activeApp` branch:
*
* sys-datasources -> /apps/setup/component/metadata/resource?type=datasource
* sys-objects -> /apps/setup/system/metadata/object
sys-datasources 那一行自 导航仍有 4 处生产端在生成已废弃的 component/metadata 别名(SystemHub 两张卡片 + 两个 sidebar),各多绕一跳 #3660 (d2fd044b7)起不再成立;sys-objects 那一行自 console: #3660 把 sys-datasources 改指规范路由,却漏了紧挨一行的 sys-objects 与 QuickActions —— 三个调用点仍走 legacy 别名,每次点击多绕一跳 #3739 (PR fix(app-shell): sys-objects 的三个生产端直发规范 metadata 路由,不再绕 system/metadata 别名 (#3739) #3748 )起不再成立。两个 it(...) 标题也仍以生产端命名('sys-datasources: …'、'sys-objects: …'),而它们实际量的是别名路由 的行为 —— 别名保留,所以测试本身没问题,只是名字指错了主体。
packages/app-shell/src/console/__tests__/AppContent.pseudoRouteSegments.test.tsx:41-46 的生产端表格同理:
* navigation AppSidebar / UnifiedSidebar `/apps/setup/system{,/apps,/marketplace,
* /metadata/object,/users,…}`
* `/apps/setup/component/metadata/resource?type=`
* QuickActions / HomePage / `/apps/setup/system/{metadata/object,marketplace,
packages/app-shell/src/console/AppContent.tsx:645-661(console: 零应用下 sys-objects / sys-datasources 落到 /apps/setup/component/... 渲染空白屏——无-activeApp 分支既无 component/* 路由也无 catch-all #3610 那段)结尾一句只提到「导航仍有 4 处生产端在生成已废弃的 component/metadata 别名(SystemHub 两张卡片 + 两个 sidebar),各多绕一跳 #3660 re-pointed it anyway」,现在该补上 sys-objects 也已重指(console: #3660 把 sys-datasources 改指规范路由,却漏了紧挨一行的 sys-objects 与 QuickActions —— 三个调用点仍走 legacy 别名,每次点击多绕一跳 #3739 )。这一段前半是过去时叙述,依然准确;不准确的是这句收尾。
为什么值得记一笔
这一族的注释是跨 project 转写的指针 :app-shell 不能 import apps/ 的路由片段,所以 MetadataRedirect 是逐字抄进测试的,靠注释指回原件。同一族的转写已经陈旧过一次,代价是真实的 —— #3661 / #3669 就是「#3658 把 host 改指规范路由、测试里的副本继续发废弃别名,于是两个 case 一直在量生产早已不产生的两跳链,而什么都没红」。现在陈旧的是「谁在发这个 URL」这一层叙述,下一个按 grep 找生产端的 agent 会把它读成现状。
建议范围
纯注释改写,零行为改动:把三处叙述改成「历史 + 现状」两段(#3610 当时是这样、#3660 /#3739 之后是这样),并把两个 it 标题从生产端名改成它们真正量的东西(别名路由仍能解析且只跳一次)。参照 #3666 —— #3660 把同类「被自己证伪的 docblock」单独立为一个 issue 并在同一 PR 里以独立 commit 修掉。
复核脚本:
sed -n '1,20p' packages/app-shell/src/console/__tests__/AppContent.noAppComponentRoutes.test.tsx
sed -n '35,50p' packages/app-shell/src/console/__tests__/AppContent.pseudoRouteSegments.test.tsx
sed -n '645,662p' packages/app-shell/src/console/AppContent.tsx
git grep -n "system/metadata/object\|component/metadata/resource?type=datasource" -- packages/app-shell/src packages/app-shell/src/layout
Generated by Claude Code
观察类记录,不是用户能碰到的缺陷:两处测试的断言都正确且全绿,陈旧的只有头注释里的叙述。分诊出来于 #3739 的实现过程(PR #3748),按范围纪律没有在那个 PR 里动。
现状
两个文件的头注释以现在时枚举「侧边栏 / QuickActions 现在发的是哪些 URL」,而这些 URL 已经被 #3660 与 #3739 改掉了:
packages/app-shell/src/console/__tests__/AppContent.noAppComponentRoutes.test.tsx:8-14sys-datasources那一行自 导航仍有 4 处生产端在生成已废弃的 component/metadata 别名(SystemHub 两张卡片 + 两个 sidebar),各多绕一跳 #3660(d2fd044b7)起不再成立;sys-objects那一行自 console: #3660 把 sys-datasources 改指规范路由,却漏了紧挨一行的 sys-objects 与 QuickActions —— 三个调用点仍走 legacy 别名,每次点击多绕一跳 #3739(PR fix(app-shell): sys-objects 的三个生产端直发规范 metadata 路由,不再绕 system/metadata 别名 (#3739) #3748)起不再成立。两个it(...)标题也仍以生产端命名('sys-datasources: …'、'sys-objects: …'),而它们实际量的是别名路由的行为 —— 别名保留,所以测试本身没问题,只是名字指错了主体。packages/app-shell/src/console/__tests__/AppContent.pseudoRouteSegments.test.tsx:41-46的生产端表格同理:packages/app-shell/src/console/AppContent.tsx:645-661(console: 零应用下 sys-objects / sys-datasources 落到 /apps/setup/component/... 渲染空白屏——无-activeApp 分支既无 component/* 路由也无 catch-all #3610 那段)结尾一句只提到「导航仍有 4 处生产端在生成已废弃的 component/metadata 别名(SystemHub 两张卡片 + 两个 sidebar),各多绕一跳 #3660 re-pointed it anyway」,现在该补上sys-objects也已重指(console: #3660 把 sys-datasources 改指规范路由,却漏了紧挨一行的 sys-objects 与 QuickActions —— 三个调用点仍走 legacy 别名,每次点击多绕一跳 #3739)。这一段前半是过去时叙述,依然准确;不准确的是这句收尾。为什么值得记一笔
这一族的注释是跨 project 转写的指针:app-shell 不能 import
apps/的路由片段,所以MetadataRedirect是逐字抄进测试的,靠注释指回原件。同一族的转写已经陈旧过一次,代价是真实的 —— #3661 / #3669 就是「#3658 把 host 改指规范路由、测试里的副本继续发废弃别名,于是两个 case 一直在量生产早已不产生的两跳链,而什么都没红」。现在陈旧的是「谁在发这个 URL」这一层叙述,下一个按 grep 找生产端的 agent 会把它读成现状。建议范围
纯注释改写,零行为改动:把三处叙述改成「历史 + 现状」两段(#3610 当时是这样、#3660/#3739 之后是这样),并把两个
it标题从生产端名改成它们真正量的东西(别名路由仍能解析且只跳一次)。参照 #3666 —— #3660 把同类「被自己证伪的 docblock」单独立为一个 issue 并在同一 PR 里以独立 commit 修掉。复核脚本:
Generated by Claude Code