Repository navigation
Description
Ruled: 6250704607 · letter A · 2026-10-18T13:51Z
Filed by the director seat (summon #43 continuation 5, session_01QJC7i981TSs9L1CGJK59Ax) on the maintainer's words in this session's chat, verbatim: 「决裁 24298 AI 副驾 如果保存的是草稿的话,实际上不只是设计器,界面上也显示不出来。所以这个问题要综合评估。」 — the frame #24298 (per-key draft provenance for Studio's 草稿 chip; pm:dispatched, held on the maintainer's word) waits on. ⛔ Not a claim. Platform first (the maintainer's 口径 「平台相关的功能,应该尽量先改平台。」): the governing ADRs are this repository's.
维护者速读
今天的事实(源码读数,未实机走查): AI 副驾改一个已发布应用里的东西(字段、视图、页面)时,存的是草稿。草稿只有「搭建者」看得见:持有 studio.access / setup.access / manage_metadata 的人,在三个地方 —— 带 ?preview=draft 的预览模式(Live Canvas 和应用内的「草稿预览」水印条)、Studio 的「变更」抽屉、聊天里的「已存为草稿」卡片(带发布和查看变更按钮)。普通成员在应用里看到的永远是已发布的版本,一个字节都不差;这是 ADR-0033「AI 只写草稿,发布是人的闸门」定的,有测试钉住。整个应用的首次生成是例外:lint 干净就当场发布,只对非搭建者隐藏(ADR-0045)。增量修改不走这条路,所以一直是草稿。
您说的「界面上也显示不出来」成立,而且有两层。 一层是入口:聊天里的「预览」按钮只在草稿里含应用时才出现,改一个字段就没有预览入口,只能去 Studio 或者盲发布。另一层是本质:草稿字段没有存储(建表只在发布时做),/data 永远不读草稿,所以预览能看到新字段,却填不进数据。要「带数据看到」,只有发布。
要您定的: 副驾的改动在发布之前,应该让谁、在哪里看到。四个方向见下表。席位推荐 A:补齐预览入口与 Studio 标记,发布仍是人的闸门;B 是把「新增类」改动也当场发布。
What exists today (read at objectstack 3fed1eb00af6, objectui a8560b228527, cloud 837e24a4b8b4)
| Who | Where | Sees a copilot draft? | Anchor |
|---|---|---|---|
| Plain member | the running app, /meta, /data |
No — published only, byte-identical | packages/metadata-protocol/src/protocol.ts:23530–23547; packages/rest/src/rest-server.ts:1837; rest/src/meta-published-overlay.test.ts:261 |
| Builder | ?preview=draft (Live Canvas; the in-app DraftPreviewBar) |
Yes — a metadata overlay; a draft-only field or object has no storage, so no data | packages/runtime/src/domains/meta.ts:1631; objectui app-shell/src/preview/PreviewModeContext.tsx:12–33, preview/DraftPreviewBar.tsx |
| Builder | Studio | the 变更 badge counts drafts, the diff drawer shows them; properties cannot mark them per key (#24298) | objectui StudioDesignSurface.tsx:1288; preview/DraftChangesPanel.tsx |
| Builder | the chat | an amber 「drafted」 badge, Publish, Review N changes; Preview only when the draft set includes an app | objectui plugin-chatbot ChatbotEnhanced.tsx:3068–3076, :2518–2566 |
| Anyone | a whole-app build | published in-turn when lint is clean, hidden from non-builders by _unpublished (ADR-0045) |
cloud service-ai-studio/tools/blueprint-tools.ts:4912–4917; objectstack rest/src/meta-item-read-gate.ts:922 |
- Saving defaults to publish; the copilot's write tools choose
mode: 'draft'(cloudservice-ai-studio/tools/metadata-tools.ts:1523–1581);applyDraftreturnschangedKeysand the note 「NOT LIVE … ask them to publish」 (:1589–1636). autoPublishAiBuilds(cloud ADR-0012; default on unlessOS_AI_AUTOPUBLISH_DISABLED) auto-publishes package-bound, lint-clean drafts only; incremental edits are not markedautoPublishable(:5157–5170).- Drafts are environment-global with no actor or conversation tag (cloud ADR-0070);
publishPackageDraftsis one atomic, revertible commit (ADR-0067). - Governing: ADR-0033 (AI drafts, the human publishes), ADR-0037 (draft-overlay preview, accepted and implemented), ADR-0045 (additive builds publish behind
_unpublished), cloud ADR-0084 (Proposed: publish only when everything passes).
Options
| Option | What changes | Who sees what | Workload |
|---|---|---|---|
| A · Preview-first: every draft is one click from being seen; publish stays the gate (seat's recommendation) | chat: the Preview button appears for any draft and deep-links to the affected page or object in ?preview=draft; the in-app DraftPreviewBar names what is pending; Studio marks copilot drafts per key (#24298 as filed: the spec key, the engine writer, cloud's stamp, Studio's chip and 来源 line); the home banner stays |
builders see the draft wherever they look; members see nothing until publish | objectui S (chat Preview + deep link) · the #24298 chain as graded (spec S, engine S, cloud S, objectui S) |
| B · Auto-publish additive incremental edits | ADR-0045's rule extends from whole-app builds to additive edits on an existing app (a new field, view, page): lint-clean → published in-turn, revertible (ADR-0067); modifying or destructive edits stay drafts | the author and every member see a new field at once, with storage; drafts remain only for changes to existing things | cloud S–M (autoPublishable for additive edits plus the posture rule) · ADR-0045 amendment (Tier H) · A's Studio marking still wanted for the remaining drafts |
| C · Sticky author preview | a builder with pending drafts opens the app in draft mode by default (DraftPreviewBar on), without the URL flag | builders always see the overlay; members unchanged; a draft field still has no data | objectui S · A's data limit unchanged |
| D · Edit in a development environment, promote by package | copilot edits land live in a development environment; production changes only by publishing the package there | the author sees everything live, with data; production untouched until promotion | cloud M–L; the Free plan has no development environment |
Recommendation: A, with B as the one widening worth its own letter
- Long-term fit. ADR-0033, 0037 and 0045 are one coherent model: new things go live hidden, changes to live things are drafts that builders preview and a human publishes. What the maintainer hit are entrances (no Preview for a field draft; no per-key mark in Studio), not the model. A completes the ruled design; objectui#12725 item 3 and metadata-protocol / spec: a draft carries no per-field provenance (which surface changed which key, and when), so Studio cannot mark a copilot's draft change with the ruled 草稿 chip and 来源 line #24298 are A's Studio half.
- Business pull. The maintainer's own walk; the AI building loop needs 「say it, see it」 (ADR-0037's design centre). The inherent limit stays under A and C: a draft field holds no data, so seeing it with data means publishing — which is B's pull.
- AI-error surface. A keeps the human gate for every change to a live app. B publishes additive edits in-turn: safe for data (nothing existing is touched) but visible to members at once, so it needs the 「live app with data」 posture rule (objectui#12725 change card v2) to stay honest. C and D add no AI risk.
- Startup, no spread. A: one objectui card plus the metadata-protocol / spec: a draft carries no per-field provenance (which surface changed which key, and when), so Studio cannot mark a copilot's draft change with the ruled 草稿 chip and 来源 line #24298 chain already graded; B: a cloud change plus a Tier H ADR amendment; D is a capability build.
- If the maintainer wants 见即所得 without a preview step, B is the letter; metadata-protocol / spec: a draft carries no per-field provenance (which surface changed which key, and when), so Studio cannot mark a copilot's draft change with the ruled 草稿 chip and 来源 line #24298 still applies to the drafts that remain.
Execution
- A: metadata-protocol / spec: a draft carries no per-field provenance (which surface changed which key, and when), so Studio cannot mark a copilot's draft change with the ruled 草稿 chip and 来源 line #24298 resumes as filed (its seat lifts the hold); the director files objectui p2
pm:queue— the chat's Preview button for any draft, deep-linked to the affected page in?preview=draft; this card closescompleted. - B: metadata-protocol / spec: a draft carries no per-field provenance (which surface changed which key, and when), so Studio cannot mark a copilot's draft change with the ruled 草稿 chip and 来源 line #24298 resumes; the director files cloud p1
pm:queue(additive incremental editsautoPublishablebehind lint, with the posture rule) and an objectstack Tier H card (the ADR-0045 amendment; the maintainer merges); A's objectui card too. - C: metadata-protocol / spec: a draft carries no per-field provenance (which surface changed which key, and when), so Studio cannot mark a copilot's draft change with the ruled 草稿 chip and 来源 line #24298 resumes; one objectui card (sticky preview). D: a cloud capability card; metadata-protocol / spec: a draft carries no per-field provenance (which surface changed which key, and when), so Studio cannot mark a copilot's draft change with the ruled 草稿 chip and 来源 line #24298 resumes.
os-decision-facets
① 项目长远合理性:A —— ADR-0033/0037/0045 是一套自洽模型(新建即发布但隐藏;改动成草稿、搭建者预览、人来发布);您撞到的是入口缺口,不是模型错;#24298 是 A 在 Studio 的那一半。
② 实际业务拉动:您的走查;AI 搭建要「说了就看见」;「草稿字段没有数据」这层限制 A、C 都解不了,只有发布能解,这是 B 的拉动。
③ 防 AI 犯错:A 保留每个改动的人工闸门;B 把新增类改动当场发布,数据安全但成员立刻可见,需要「有数据的活应用」姿态规则;C、D 不新增风险。
④ 创业阶段不扩散:A 一张 objectui 卡加已评级的 #24298 链;B 多一处 cloud 改动和一次 Tier H ADR 修订;D 是能力建设。
Prior rulings read: ADR-0033(AI 只写草稿)· ADR-0037(草稿预览,已实现)· ADR-0045(新建即发布、_unpublished 隐藏)· ADR-0067(发布原子可回滚)· cloud ADR-0012 / 0070 / 0084 · objectui#12725 裁决(右栏二选一;草稿 chip 与来源行)· #24298 triage 6249057462 → 7 hits; thread: #24298 6249183877
Activity
objectstack-fleet commentedon Oct 18, 2026
Ruling: batch #365 item 5 · letter A · maintainer 「同意」 2026-10-18T13:50Z
Director seat, summon #43 continuation 5,
session_01QJC7i981TSs9L1CGJK59Ax, on the director's own card (A recommended), filed on the maintainer's words 「决裁 24298 AI 副驾 如果保存的是草稿的话,实际上不只是设计器,界面上也显示不出来。所以这个问题要综合评估。」 (opening marker #12708, comment 6247058702). The maintainer's words in this session's chat: 「同意」 on batch #365 items 2–5, confirmed after the seat's question 「是四张都按席位推荐吗?」.What the ruling binds (letter A — preview-first: every draft is one click from being seen; publish stays the human gate):
_unpublished). Members see nothing of a draft until publish. No auto-publish of incremental edits.?preview=draft, with the DraftPreviewBar naming what is pending — console chat: the Preview button appears for any copilot draft and deep-links to the affected page or object in?preview=draft(objectstack#24324 ruling A) objectui#12968, p2pm:queue.copilotstamp; Studio's 草稿 chip and 来源 line, objectui#12725 item 3); the hold (6249880263) is lifted by this letter; thedomain:spec#2seat re-queues and dispatches it.Not taken: B (publishes additive edits to members at once; parked on this record), C (a sticky default adds nothing the Preview button does not), D (a capability build; the Free plan has no development environment).
Workload of the letter: objectui S (Preview for any draft) + the #24298 chain as graded (spec S, engine S, cloud S, objectui S).
Execution: objectui#12968 filed in this act; pointer on #24298 (hold lifted); this card leaves
needs-user-decisionand closescompleted.objectstack-fleet commentedon Oct 18, 2026
Closed
completed· ruled A at 6250704607 (batch #365 item 5, the maintainer's 「同意」) · director seat (summon #43 continuation 5,session_01QJC7i981TSs9L1CGJK59Ax) · 2026-10-18T13:52ZPreview-first: objectstack-ai/objectui#12968 (the chat's Preview for any draft, p2
pm:queue); #24298 resumes as filed (pointer 6250719920). B (auto-publish additive incremental edits) stays on this record as the letter for the data limit, should the maintainer's next pull be 「带数据看到」.feat(plugin-chatbot,app-shell): Preview for any copilot draft kind, i…