You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Migrated from objectstack-ai/objectstack#5768 under the file-at-destination ruling (objectstack-ai/objectstack#7167, maintainer 2026-08-10). Originally filed 2026-08-06T04:31:30Z. The full prior thread — including triage rulings and hold/restart conditions — remains on the source issue and MUST be read before acting on this card.
Studio dogfood 时发现(最新 main 5e3c83bd0 + objectui 5a24ad9cb89c,showcase 实例,/_console/studio/com.example.showcase/*)。
先说清楚:「代码定义的包不给在 Studio 里改」很可能是有意的产品策略(提示语「请切换或新建可写软件包后再编辑」读起来就是一条策略)。本条真正想请判定的是:这条策略与运行时的实际能力、以及 Studio 自己在同一屏上的其它显示,三者对不上。
三处证据
1)运行时明确接受其中 15 类的 overlay 写入
对同一个包 com.example.showcase:
PUT /api/v1/meta/object/showcase_account → 403
{"error":"[NOT_OVERRIDABLE] 'object' is not allowOrgOverride in the registry.
Overlay-allowed: view, page, dashboard, app, action, report, dataset, flow,
translation, email_template, book, permission, position, tool, skill. ...",
"code":"NOT_OVERRIDABLE"}
A. 代码定义的包里,overlay-allowed 的那 15 类到底该不该在 Studio 里可编辑?
若该:interfaces / access 的禁用是过度保守 —— Studio 藏起了运行时真的提供的能力(AGENTS.md Prime Directive [WIP] Enhance every detail of the designer #10 反过来的那一面:declared ≠ enforced 的镜像,这里是 delivered ≠ offered)。禁用应当按类型判定,而不是按包一刀切。
Studio dogfood 时发现(最新 main
5e3c83bd0+ objectui5a24ad9cb89c,showcase 实例,/_console/studio/com.example.showcase/*)。先说清楚:「代码定义的包不给在 Studio 里改」很可能是有意的产品策略(提示语「请切换或新建可写软件包后再编辑」读起来就是一条策略)。本条真正想请判定的是:这条策略与运行时的实际能力、以及 Studio 自己在同一屏上的其它显示,三者对不上。
三处证据
1)运行时明确接受其中 15 类的 overlay 写入
对同一个包
com.example.showcase:object被正确挡住了 —— 服务端闸门是真的,不是只在 UI 上禁用(这点值得肯定,我专门验了)。但同一条报错里,服务端自己列出了 15 个 overlay-allowed 类型。挑其中一个实测:写进去了。 (我已把 label 改回
进行中还原。)2)Studio 对这 15 类一律禁用
/_console/studio/com.example.showcase/interfaces(视图 / 页面 / 看板 / 应用 —— 全是 overlay-allowed 类型):{"保存草稿": {"disabled": true, "title": "只读软件包 — 请切换或新建可写软件包后再编辑。"}, "发布": {"disabled": true, "title": "只读软件包 — 请切换或新建可写软件包后再编辑。"}}也就是:运行时接受的写入,Studio 不让你发起。
3)同一屏上并存「可写」徽标与全部禁用的控件
/_console/studio/com.example.showcase/access,权限集showcase_contributor的标题行渲染成:而同一个屏幕上:207 个权限勾选框全部 disabled,
发布也 disabled,理由写着「只读软件包」。一个贴着「可写」的对象,它的每一个控件都是灰的。顺带同类的一处:
数据 → 表单标签页在这个只读包里显示—— 在一个什么都改不了、
保存草稿是灰的包里,声称「含未保存改动」。(该处[draggable=true]数量为 0,拖拽本身确实被正确禁用了,所以这纯粹是文案与实际状态不符。)请判定的问题
A. 代码定义的包里,overlay-allowed 的那 15 类到底该不该在 Studio 里可编辑?
interfaces/access的禁用是过度保守 —— Studio 藏起了运行时真的提供的能力(AGENTS.md Prime Directive [WIP] Enhance every detail of the designer #10 反过来的那一面:declared ≠ enforced 的镜像,这里是 delivered ≠ offered)。禁用应当按类型判定,而不是按包一刀切。B. 无论 A 怎么判,3 都是要改的:「可写」徽标和「含未保存改动」在全禁用的界面上是误导性 affordance。
复现
本轮一并验过、确认没问题的(避免后续重复排查)
数据的内层页签(记录 / 表单 / 验证 / 钩子 / 操作 / API / 设置)可切换;表单设计器正确渲染 12 个字段及其类型(TEXT/SELECT/CURRENCY/URL/LOCATION/DATE/JSON)。GET /api/v1/meta/<type>/<name>?state=draft→ 404{"code":"NO_DRAFT"}是有意设计(错误码明确、UI 正确降级),不是缺陷。唯一可议的是不存在的条目也返回同一个NO_DRAFT,无法区分「没有草稿」与「这个条目根本不存在」—— 单独提一句,不作为本条主张。object的NOT_OVERRIDABLE拦截是真闸门,报错信息给了可执行的下一步(OS_METADATA_WRITABLE)。影响面
Studio 编辑面。不影响已发布应用的运行时行为,也不影响数据。属于「能力可达性 + 界面自洽性」问题。