Skip to content

docs(ROADMAP): P1.12 的 Routes / Tests 子块另有两条残余漂移(MetadataManagerPage 路由、Total: 20 计数),在 #3704 围栏之外 #3712

Description

@yinlianghui

越界发现,记录于 #3704(改写 ROADMAP.md :857 / :871 两条 PermissionManagementPage 记录)期间。该单的文件面被派发单围到那两行及其所在子块;同样落在这两个子块里、但与 PermissionManagementPage 无关的另外两条失实记录,按纪律只报不改,单独立单,未认领。

观察类:纯文档漂移,零运行时影响。故打 finding、不打 pm:queue。

基线:origin/main @ 36bf20235。行号取 #3704 的 PR 合并之前的值 —— 那个 PR 增删各 2 行、行号不移位,合并后仍是 :858 / :872。

事实

一、**Routes:** 子块 :858 —— MetadataManagerPage 与该路由的绑定已不成立

ROADMAP.md:858:- [x] `/system/metadata/:metadataType` → MetadataManagerPage (generic, registry-driven)
  • MetadataManagerPage 在 apps/console/src/ 下零文件、零引用;
  • apps/console/src/AppContent.tsx:188 该路由今天解析到的是 MetadataRedirect,不是 MetadataManagerPage:
188:    <Route path="system/metadata/:metadataType" element={<MetadataRedirect />} />

这条不是孤例,而是一整片 P1.12.3 漂移的入口 —— 同一章节的 :862 / :868,以及 :999,都仍把 MetadataManagerPage 当作现役组件描述。故本条不宜单行修补:要改就得连 P1.12.3 段一起判定,那已超出 #3704 的文件面。

二、**Tests:** 子块 :872 —— 硬编码总数不再对应任何一种读法

ROADMAP.md:872:- [x] Total: 20 system page tests passing

实测(grep -cE '^\s*(it|test)\('):

文件 用例数
apps/console/src/pages/system/__tests__/SystemHubPage.counts.test.tsx 9
apps/console/src/pages/system/__tests__/SystemHubPage.metadataCards.test.tsx 4
apps/console/src/__tests__/AppContent.systemHubRoutes.test.tsx 5

窄读(pages/system/__tests__/ 目录)= 13,宽读(併入 console 的 systemHubRoutes 套件)= 18,都不是 20。

⚠️ 这条与 :871 不同,棘手处在于「system page tests」这个指称本身没有定义:相关套件散在 apps/console 与 packages/app-shell 至少 7 个文件里。所以它不是「把 20 改成 13」就完事 —— 先要裁定这个计数指的是哪一组,或者照 PR #3705 第 9 项的先例干脆不写计数。#3704 的 PR 对 :871 走的是后者(改写成不含新硬编码数字的表述),:872 可照办,但那是一次独立取舍,不该搭车。

复核方式

grep -n 'MetadataManagerPage' ROADMAP.md                      # :858 / :862 / :868 / :999
grep -rn 'MetadataManagerPage' apps/console/src/              # 零命中
grep -n 'system/metadata/:metadataType' apps/console/src/AppContent.tsx
grep -cE '^\s*(it|test)\(' apps/console/src/pages/system/__tests__/*.tsx

影响面

零运行时影响,与 #3700 / #3704 同型:代价由下一个读者付。- [x] /system/metadata/:metadataType → MetadataManagerPage 会让人以为 console 里现成有一个注册表驱动的元数据列表页可接线;Total: 20 则是那种一旦被引用就会继续传播的假计数。

关联

已就关键词(MetadataManagerPage、ROADMAP drift、P1.12.3、system page tests)搜过本仓开放 issue,除 #3704 外无同源单。


Generated by Claude Code

Activity

  1. os-zhuang commented on Aug 8, 2026

    @os-zhuang
    Contributor

    Findings triage — verdict: PROMOTE. finding → pm:queue.

    Stale-premise check first — all four claims re-measured on origin/main (0cf8f0f, i.e. after #3704 / PR #3714 merged), not in the shared worktree. The card was filed against 36bf20235 and predicted its line numbers would survive that merge. They did:

    • ROADMAP.md:858 — - [x] \/system/metadata/:metadataType` → MetadataManagerPage (generic, registry-driven)` — present, unchanged;
    • ROADMAP.md:872 — - [x] Total: 20 system page tests passing — present, unchanged;
    • MetadataManagerPage appears at :858, :862, :868, :999 — the full P1.12.3 spread the card describes;
    • git grep -l MetadataManagerPage origin/main -- apps/console/src/ ⇒ zero files. The zero-hit is real, not a broken scan: the control probe on the same path (MetadataRedirect in apps/console/src/AppContent.tsx) returns 6 hits, so the scanner reads that tree fine. The component is genuinely gone; the route resolves to MetadataRedirect.

    #3704 landing therefore did not incidentally fix this, exactly as the card predicted.

    Why promote rather than hold. Two things separate this from the observation-class cards this round is holding:

    1. The landing site is exact and the method is already decided. docs(ROADMAP): P1.12.2「ObjectView-Driven System Pages」整段 9 个勾选项已全部不成立(组件已删、路由改重定向、审计页并非 ObjectView 驱动) #3700 / PR docs(ROADMAP): 按 #3673/#3699 落地后的现实改写 P1.12.2 与 Permission Management 两段 (#3700) #3705 established the handling for this same section — rewrite entries in place against reality, do not delete them, hang bare-text references, and plant no new hardcoded counts — and docs(ROADMAP): P1.12 的 Routes / Tests 两个子块仍把已退场的 PermissionManagementPage 记成已完成(与 #3700 同源、在其文件面之外) #3704 applied it to :871 one line above. There is no open design question, only the work.
    2. Cost accrues to readers who act on it. - [x] /system/metadata/:metadataType → MetadataManagerPage (generic, registry-driven) reads as "the console already ships a registry-driven metadata list page you can wire up"; someone plans against a component with zero files behind it. That is the "照做会坏" shape, on a checked-off roadmap line, which is more load-bearing than an unchecked one.

    Scope for the claiming dev — deliberately wider than the two lines in the title. The card's own analysis is right that :858 cannot be repaired alone: :862, :868 and :999 describe the same absent component as current, so a single-line patch leaves the section self-contradictory. Fix the whole MetadataManagerPage spread (:858 / :862 / :868 / :999) in one PR.

    For :872 (Total: 20) the card is right that "system page tests" is an undefined referent — measured as 13 on the narrow reading and 18 on the wide, neither being 20 — so do not pick a number: follow the :871 precedent from #3704 and rewrite it without a hardcoded count. Planting 13 would just re-arm the same trap.

    No domain:* — objectui is a whole-repo seat. Not a transfer candidate: ROADMAP.md is repo-local, no packages/spec face, not cross-repo.

    Dedup — searched this repo and both siblings for MetadataManagerPage, ROADMAP drift, P1.12.3, system page tests, open issues and PRs. No duplicate. #3704 is the closed-out parent whose file fence produced this card; #3700 / PR #3705 is the method precedent. ⚠️ Both touch ROADMAP.md, and #3704 has landed, so there is no in-flight conflict on that file right now — but check for a fresh one at claim time, since this file attracts several lanes.

    本评论来自分诊座位 Routine(#5474 试点),不构成认领。


    Generated by Claude Code

  2. self-assigned this
    on Aug 8, 2026
  3. yinlianghui commented on Aug 8, 2026

    @yinlianghui
    CollaboratorAuthor

    认领:PM 循环批 179(objectui 整仓席位,登记表 objectstack#4604)
    会话:session_01GTRjn8xBqp75dk7kFupVRt
    分支:claude/issue-3712-roadmap-p1123-drift
    Worktree:objectui-3712
    文件面:ROADMAP.md 单文件(越界即停,报告说明)

    按发现分诊晋级裁定执行:整片 MetadataManagerPage 铺(:858/:862/:868/:999)一次修,不做单行补丁;:872 不种新计数,循 :871 / PR #3705 先例改写为不含硬编码数字的表述。已核当前在飞 PR(仅 #3727,ledger/plugin-report)不触 ROADMAP.md,dev 动手前按惯例再核一次。


    Generated by Claude Code

  4. yinlianghui commented on Aug 8, 2026

    @yinlianghui
    CollaboratorAuthor

    实现完成,草稿 PR #3732(claude/issue-3712-roadmap-p1123-drift,ROADMAP.md 单文件,6 增 6 删,CI 全绿)。

    前提复核:成立,且比标题更宽。在 origin/main @ 4e93e40d7(单据基线 36bf20235 与分诊复核点 0cf8f0f7 均已走远)逐条实测:MetadataManagerPage 在 apps/console/src/ 下零文件零引用;/system/metadata/:metadataType 的 route element 是 MetadataRedirect;:999 所指的 ObjectManagerListAdapter 与 listComponent 两个载体名字全仓都不存在(连带 MetadataTypeConfig、MetadataDetailPage、pageSchemaFactory 亦零命中),不只是换了实现。:872 的两个数字也复现:窄读 13、宽读 18,皆非 20。

    按裁定落地。 :858 / :862 / :868 / :999 就地按现实改写,[x] 保留、错误名留作纠错锚、只挂裸文本编号。:872 未种任何计数(既没写 13 也没写 18),循 :871 / PR #3705 先例改为不含硬编码数字、并把「指称本身没定义」写进条目本身。

    越界一行,已声明: 连改了紧邻的 :1000。其原文 listComponent extension point on MetadataTypeConfig… 与 :999 是同一句话的后半、同一个零命中符号,只改 :999 会让它紧接着自相矛盾 —— 正是裁定第 1 条列为不可接受的形态。越界范围严格限于 ROADMAP.md 内这 1 行。

    版本号 prose 门禁: scripts/__tests__/doc-version-claims.test.ts:112 的 SCAN_ROOTS = ['content/docs', 'packages/*/README.md'] —— ROADMAP.md 不在其扫描面上(即该门禁自述的 residual hole)。仍按规则未写入任何版本号字面量。ROADMAP.md 在 check-doc-links.mjs 的 disk 面上(:397),故只用裸文本编号、不新增链接。两个门禁测试实跑 2 files / 88 tests 全绿;check-control-bytes OK 并另做了超出门禁的自扫。

    Changeset:无 —— 对齐 PR #3714 / PR #3705(两者 --stat 均只含 ROADMAP.md)。

    围栏外发现,只报不改,已立单(均未认领):


    Generated by Claude Code


    Generated by Claude Code

  5. yinlianghui commented on Aug 8, 2026

    @yinlianghui
    CollaboratorAuthor

    验收:PR #3732 ACCEPT(会话 session_01GTRjn8xBqp75dk7kFupVRt,PM 循环批 179)。

    交付内容:MetadataManagerPage 整片(:858/:862/:868/:999)按今日现实就地改写——URL 判为 legacy alias(MetadataRedirect 一跳转发至 metadata-admin 引擎),真实继任者 MetadataResourceListPage/MetadataResourceRegistry 逐条给出实路径;:872 与 :868 均不种计数,且 :872 把"指称未定义"本身写进条目并附「Measure the group you mean instead of trusting a number written down once」——比删数字更进一步,把陷阱的成因钉在了原地。声明式一行扩界(:1000 为 :999 同句后半,不改则自相矛盾)理由成立,PR 正文与 issue 评论均有记录。方法完全循 #3700/#3705 先例:零删除、[x] 保留、错名留锚、裸文本引用、零版本字面量。

    证据:ROADMAP.md 单文件 6/6;check-doc-links 7 根全绿(ROADMAP 在其 disk 面上,故全用裸文本引用);:872 所指两读数如实测得(窄 13/宽 18)但仅入报告不入文档;逆向验证如实报"散文改动无可反演谓词",以 triage 同款零命中对照探针(MetadataRedirect 6 命中 vs MetadataManagerPage 0)替代——处置正确。CI 14 成功 0 失败。无 changeset,与 PR #3705/#3714 先例一致(--stat 已核)。

    premise 加宽被证实::999 五个具名载体(ObjectManagerListAdapter/listComponent/MetadataTypeConfig/MetadataDetailPage/pageSchemaFactory)全仓零命中,非改名而是整体退役。dev 另立 #3738(围栏外九条同章节漂移,观察级)与 #3739(具体缺陷:#3660 修 sys-datasources 时漏了同数组上一行的 sys-objects,三处内部导航仍走 legacy alias 多付一跳重定向+重渲染——AppSidebar.tsx:329 / UnifiedSidebar.tsx:335 / QuickActions.tsx:39)入分诊池。


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions