docs(ROADMAP): 按 #3673/#3699 落地后的现实改写 P1.12.2 与 Permission Management 两段 (#3700) - #3705
Merged
Merged
Conversation
/#3699 reality (#3700) All nine [x] in "ObjectView-Driven System Pages (P1.12.2)" had gone false: the shared component was deleted (PR #3699), four URLs became redirects onto framework objects (PR #3673), /system/permissions is deliberately undeclared, the audit page is a standalone REST page, and the 22-test suite is gone. The Permission Management Page block above it drifted from the same source. Rewritten per this file's own retirement convention (an italic _(Retired — …)_ annotation on the sub-header plus rewritten [x] items carrying a bare PR ref, as at :152 ViewDesigner and :1046 tab-drag). The /system/permissions successor stays neutral and unchecked — pending the maintainer's call in #3655. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GTRjn8xBqp75dk7kFupVRt
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
yinlianghui
marked this pull request as ready for review
August 7, 2026 23:37
This was referenced Aug 7, 2026
akarma-synetal
pushed a commit
to akarma-synetal/objectui
that referenced
this pull request
Aug 10, 2026
…objectstack-ai#3704) (objectstack-ai#3714) :857 与 :871 是 objectstack-ai#3700/objectstack-ai#3705 围栏外的同源漂移:`/system/permissions` 路由 今天未声明(AppContent.tsx:191-201 注明「absent on purpose」), PermissionManagementPage 已随 apps/console 瘦身删除(commit cccdf84), 其测试亦零命中。 照 PR objectstack-ai#3705 的落地手法:条目不删、就地改写成当前形态并挂裸文本引用; permissions 空缺保持中性、只指向 objectstack-ai#3655,不预判 sys_capability / sys_permission_set;PermissionManagementPage 作纠错锚保留(判词紧跟其后); 计数不写新硬编码数字。 Claude-Session: https://claude.ai/code/session_01GTRjn8xBqp75dk7kFupVRt Co-authored-by: Claude <noreply@anthropic.com>
akarma-synetal
pushed a commit
to akarma-synetal/objectui
that referenced
this pull request
Aug 10, 2026
…jectstack-ai#3712) (objectstack-ai#3732) objectstack-ai#3704 / PR objectstack-ai#3714 的围栏之外还剩两处同源漂移: 一、MetadataManagerPage 整片(:858 / :862 / :868 / :999)。该组件在 apps/console/src/ 下零文件零引用;`/system/metadata/:metadataType` 今天的 route element 是 MetadataRedirect,一跳转到 metadata-admin 引擎自己的 metadata/:type,元素为 MetadataResourceListPage (packages/app-shell/src/views/metadata-admin/ResourceListPage.tsx),由引擎的 MetadataResourceRegistry 驱动。:999 所指的 ObjectManagerListAdapter 与 listComponent 两个载体亦均零命中 —— object 根本不需要自定义列表,由 builtinComponents.tsx 的 registerMetadataResource({ type: 'object', … }) 接入通用外壳;引擎侧对应的插槽是 MetadataResourceConfig.ListPage,今天只有 datasource 覆写它。故连紧邻的 :1000(listComponent 判词的另一半)一并改写, 否则 :999 改完与它自相矛盾 —— 这正是分诊裁定要避免的形态。 二、:872 `Total: 20 system page tests passing`。「system page tests」无固定 指称(窄读 13、宽读 18,皆非 20),照 :871 / PR objectstack-ai#3705 先例**不种新计数**, 改写为不含硬编码数字、并提示按需自行度量的表述。 手法沿用 objectstack-ai#3700 / PR objectstack-ai#3705:条目一律不删、就地按现实改写、原 [x] 保留(里程碑 确实以另一形态交付过)、错误名保留作纠错锚且判词紧跟其后、引用只挂裸文本编号、 不新增任何硬编码计数、不写版本号字面量。 围栏外另有 P1.12.3 / P1.16 的残余漂移(config/metadataTypeRegistry.ts、 listMode、MetadataGrid 等),按纪律只报不改,另立单。 Claude-Session: https://claude.ai/code/session_01GTRjn8xBqp75dk7kFupVRt Co-authored-by: Claude <noreply@anthropic.com>
akarma-synetal
pushed a commit
to akarma-synetal/objectui
that referenced
this pull request
Aug 10, 2026
…ectstack-ai#3858) objectstack-ai#3712 / PR objectstack-ai#3732 的围栏(MetadataManagerPage / listComponent 一族)之外, P1.12.3 与 P1.16 两节还剩九条失实条目。手法沿 objectstack-ai#3700 / PR objectstack-ai#3705、objectstack-ai#3704 / PR objectstack-ai#3714、objectstack-ai#3712 / PR objectstack-ai#3732:条目一律不删、就地按现实改写、原 [x] 保留、 错误名保留作纠错锚且判词紧跟其后、引用只挂裸文本编号、不种新计数。 P1.12.3 四条: - metadataTypeRegistry —— 全仓零命中。但它并非"从未存在":文件确实以 apps/console/src/config/metadataTypeRegistry.ts 落过地(d601ef6 加入), 在 ff9a0d9(移除 studio app、迁往 metadata-admin 引擎)被删。今天的等价物 是引擎自己的 MetadataResourceRegistry (packages/app-shell/src/views/metadata-admin/registry.ts),行类型 MetadataResourceConfig,由 registerMetadataResource() 填;且未注册的类型 同样可列可编,注册只是覆写默认值 —— "centralized config" 的语义也变了。 - SystemHubPage 注册表生成卡片 —— metadataTypeCards 是手写字面量 (Applications / Metadata / Datasources),其上方注释自述 per-type 卡片 在引擎开始自动列举全部类型后即被移除;dashboard / page / report 三张卡 都不存在。真正按注册表列举类型的是引擎的 MetadataDirectoryPage。 - 动态 /system/metadata/:metadataType —— 该拼法只在 console host fragment (apps/console/src/AppContent.tsx)声明,三种 arity 的 route element 都是 MetadataRedirect,并非页面。真正渲染的动态路由是引擎的 metadata/:type (packages/app-shell/src/console/AppContent.tsx);"in all route contexts" 这半句对它成立(with-app 与 zero-app 两支都声明了),故如实保留。 - app / object 专属路由 —— app 仍成立(system/apps → AppManagementPage); object 已无专属页,由引擎通用外壳承载,配置见 builtinComponents.tsx 与 views/metadata-admin/anchors.ts 的 registerMetadataResource({ type: 'object', … }),只给列/搜索字段/建单字段/锚点,无组件覆写。全仓仅 permission(EditPage)与 datasource(ListPage)替换外壳页。 P1.16 四条 + :1001: - listMode / MetadataTypeConfig / MetadataGrid 三个符号全仓零命中; MetadataResourceConfig 没有任何渲染模式键,列形状只有 listColumns (加 ListPage 整页替换)。 - "grid mode 下的表格渲染"—— 表格是真的,但不是一档模式: ResourceListPage 对所有类型无条件渲染同一个 table,无分支可切。 - report 一条须订正卡片正文的举证:report **有** registerMetadataResource 注册(anchors.ts,基线 4e93e40 上即已存在),卡片正文"零注册"的 grep 结论有误。真实判词是:注册项里没有任何东西选择渲染模式(因为无模式 可选),它配的是对象锚点组与建单种子。 - :1001 按分诊注记逐入口分别判,且前提已部分过期:卡片正文称 sidebar / QuickActions 仍指 legacy 别名,而 objectstack-ai#3739 / PR objectstack-ai#3748 已合并 —— 两个 sidebar 的 sys-objects 与 home 的 manage-objects 现均指引擎正规路由 /apps/setup/metadata/object;hub cards 本就没有 object 卡。故三个入口 今天没有一个指向该拼法,离开的原因各不相同,如实分述。 围栏内只动这九行。节标题 **Metadata Manager Grid Mode:** 依"错误名留作 纠错锚"之例不动;:865 的 MetadataService 三个方法经核实真实存在,不在改写 之列。 Fixes objectstack-ai#3738 Co-authored-by: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #3700
纯文档改动,只动
ROADMAP.md一个文件的两段(:825-839),零代码、零行为变化。无 changeset —— 根文档不是发布包,用户可见产物零 delta。先定惯例,再改字(派发单要求)
issue #3700 把取舍留给了维护者:「ROADMAP 是历史账本还是当前真相快照」。不必问 —— 这个文件自己已经答过三次,普查
ROADMAP.md其它段落对「已推翻/已退场」项的处理,惯例是一致的:**ViewDesigner:** _(Removed — replaced by ViewConfigPanel)_[x]历史项保留- [x] Removed: ViewDesigner replaced by ViewConfigPanel …[x]记账- [x] Tab-drag UX retired in favour of Manage Views dialog (commit 3371239c)[x]+ 「retired in favour of X」+ 裸引用- [x] Auto-redirect … — removed; object now uses metadata pipeline[x]+ 破折号 + 当前形态… the client-side @object-ui/tenant package was removed as dead surface, #2564即:历史账本 + 就地标注,条目不删、不打删除线,文字改写成「当前形态」并挂一个裸文本引用(
(PR #771)/(Issue #719)/(commit …)这三种,全文只有 6 处 markdown 链接,issue 链接仅 1 处)。本 PR 照此办理 —— 因此没有新增任何链接,check-doc-links 的扫描面不受影响。九项逐条核实(全部对
origin/main@b19f54f39实测)SystemObjectViewPagecomponent using ObjectViewpages/system/下已无该文件;全仓 grep 两个符号,排除 ROADMAP/CHANGELOG 后零命中(PR #3699)/system/usersdriven bysys_user… via ObjectViewAppContent.tsx:203SystemObjectRedirect objectName="sys_user"(PR #3673)/system/organizationsdriven bysys_orgsys_organization;sys_org不存在AppContent.tsx:204;grep -rlw sys_org ../objectstack/packages/= 0 个文件/system/rolesdriven bysys_rolesys_position;无sys_role对象AppContent.tsx:205;sys_role的 18 处命中全在 CHANGELOG 与改名说明里,无对象定义;packages/spec/PROTOCOL_MAP.md:104写明 ADR-0090 改名/system/permissionsdriven bysys_permissionsys_permission不是框架对象名AppContent.tsx:191-201的注释写明「absent on purpose」;grep -rlw sys_permission packages/唯一命中是sys-capability.object.ts的 docblock,内容正是「不叫 sys_permission」/system/audit-log… via ObjectView (read-only)AuditLogPage.tsx436 行::152fetch(${API_BASE}/data/sys_audit_log?…),手写$filter/$orderby/$top/$skip(:144-150)、手写 Table(:296)与 Sheet 详情;不经 ObjectViewoperationsconfigoperations/canMutate = !readOnly && isAdmin就长在被删的SystemObjectViewPage里(PR #3699)pages/system/__tests__/现只有SystemHubPage.counts.test.tsx与SystemHubPage.metadataCards.test.tsx同源漂移的 :825-828 Permission Management Page 段(
sys_permissionCRUD grid / search-filter / admin-only create-delete):该页与该路由均已不存在,对象名亦非框架真名 —— 依据同上第 5、7 条。九条无一仍然成立,issue 前提完全属实。
前后对照
改前(:830-839,九个
[x]全部失实):改后(子标题挂退场注,九条逐一改写为「当前形态 + 落地 PR」):
Permission Management Page 段同法:子标题加
_(Retired — the page was deleted; the successor surface is pending maintainer decision, see #3655)_,三条改写为「当年交付过 → 随 console 瘦身一并删除」,并就地把对象名纠正为sys_capability/sys_permission_set。两处刻意的取舍
- [ ](未勾选)。 它不是「做完了又退场」,而是一个尚未定案的缺口:框架把这个面拆成sys_capability与sys_permission_set两个 Setup 条目,PR fix(console): 把已退场的 system/{users,organizations,roles,positions} 四条 URL 声明为重定向,直达框架系统对象 (#3655) #3673 已按有界授权停手,留给 console: 系统导航 / System Hub 的 users / organizations / roles / positions / permissions 五个入口没有对应路由 —— 两个落 "Page not found",三个跳进不存在对象system的记录页 #3655 裁决。⛔ 本 PR 不预判 A/B/C —— 只陈述「未声明路由」这个事实与拆分现状,措辞为中性的 pending maintainer decision, see console: 系统导航 / System Hub 的 users / organizations / roles / positions / permissions 五个入口没有对应路由 —— 两个落 "Page not found",三个跳进不存在对象system的记录页 #3655。全文 89 处- [ ],未勾选项是本文件的常规形态。22正是烂掉的那种硬编码计数;改写成「pages/system/__tests__/now coversSystemHubPageonly」,不再种一个下周就会再次失真的数。措辞纪律(遵 #3656:不复植失真特征词)
#3656 的规矩是:承载错误机制的特征词改完要 grep 归零,而不是换个说法把它留着。本 PR 逐条量了:
driven by … metadatavia ObjectViewfrom ObjectView capabilities22 system page tests第一版草稿里
via ObjectView只降到 1(第 7 条把它留在了主语位置,读起来仍像在陈述现行机制),已改写成过去式主语「were theoperationsconfig on …」后才真正归零 —— 如实记下,因为这正是 #3656 那个carries no continue-on-error教训的同型。刻意保留的两个符号名(不是复植,而是纠错):
SystemObjectViewPage(:831)与sys_org(:833)。二者都紧跟「已删除 / 从来就不是框架对象」的判词,下一个 grep 到它们的 agent 读到的是结论而非诱饵 —— 这与 :82 保留@object-ui/tenant、:152 保留ViewDesigner的既有惯例一致。验证
改动不含代码,本仓无任何测试或脚本读取
ROADMAP.md的正文(scripts/__tests__/check-doc-links.test.ts里的 ROADMAP 是内存里合成的 fixture,见:778/:812,与真实文件无关),故没有可跑绿的单元测试 —— 如实写明,不凑数。真正管这块的是 doc-links 门禁,ROADMAP.md是它第 5 个扫描根(check-doc-links.mjs:397,rule: 'disk'):阳性对照(先预测,后运行) —— 前后同为绿,必须先证明「门禁确实看了我改的那几行」,否则绿是「没看」而不是「没问题」。预测:往第 831 行(本 PR 改写过的行)注入一个死链,门禁应转红并点名
ROADMAP.md:831。实测吻合:随后还原,门禁复绿(
EXIT=0),grep -c 9999 ROADMAP.md= 0,工作树干净。控制字符:
围栏
CHANGELOG.md:595未动 —— 它是史实记录,记的是「当时确实做了这件事」,不该被改写。content/docs/releases/未动;无 changeset。AppContent.tsx/AuditLogPage.tsx只读不写。git diff只有一个 hunk:@@ -825,15 +825,15 @@,15 增 15 删,全部落在这两段内。越界发现(只报不改)
同一个
### P1.12章节里还有两处同源漂移,落在派发单给的两段之外,按纪律不在本 PR 修改,已单独立单 #3704(观察类,finding,未认领):ROADMAP.md:857——- [x] /system/permissions → PermissionManagementPage,该路由与该页面均已不存在(依据同上第 5 条)。ROADMAP.md:871——- [x] 11 new tests (SystemHubPage, AppManagementPage, PermissionManagementPage),其中PermissionManagementPage的测试随页面一并消失。本 PR 增删各 15 行、行号不移位,故 #3704 里记的 :857 / :871 在本 PR 合并后依然成立。
🤖 Generated with Claude Code
https://claude.ai/code/session_01GTRjn8xBqp75dk7kFupVRt
Generated by Claude Code