Skip to content

[Decision] The copilot's drafts: who sees a copilot change before publish, and where — preview-first (A), auto-publish additive edits (B), sticky author preview (C) or a dev environment (D); the frame #24298 waits on #24324

Closed

Description

@objectstack-fleet

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' (cloud service-ai-studio/tools/metadata-tools.ts:1523–1581); applyDraft returns changedKeys and the note 「NOT LIVE … ask them to publish」 (:1589–1636).
  • autoPublishAiBuilds (cloud ADR-0012; default on unless OS_AI_AUTOPUBLISH_DISABLED) auto-publishes package-bound, lint-clean drafts only; incremental edits are not marked autoPublishable (:5157–5170).
  • Drafts are environment-global with no actor or conversation tag (cloud ADR-0070); publishPackageDrafts is 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

Execution

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

  1. added
    priority:p1High: required for production / M2
    needs-user-decisionBlocked on a maintainer decision — do not dispatch; decision cards only, never on a PR
    domain:specDomain lane — seat card indexed by label:pm:seat
    area:studioChanging a running app without code — authoring, publish, docs and the portal
    on Oct 18, 2026
  2. objectstack-fleet commented on Oct 18, 2026

    @objectstack-fleet
    ContributorAuthor

    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):

    1. The model stands: ADR-0033 (AI drafts, a human publishes), ADR-0037 (the draft-overlay preview for builders), ADR-0045 (additive whole-app builds publish behind _unpublished). Members see nothing of a draft until publish. No auto-publish of incremental edits.
    2. The chat's Preview button appears for any draft, not only when the draft set includes an app, and deep-links to the affected page or object in ?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, p2 pm:queue.
    3. Studio marks a copilot draft per key — 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 and triaged (the spec key on the draft read; the engine writer; cloud's copilot stamp; Studio's 草稿 chip and 来源 line, objectui#12725 item 3); the hold (6249880263) is lifted by this letter; the domain:spec#2 seat re-queues and dispatches it.
    4. Known limit, recorded: a draft field or object has no storage, so a preview shows metadata, not data; seeing a change with data means publishing. If that limit is the maintainer's next pull, the letter is B (additive incremental edits auto-published behind lint, with the ADR-0045 amendment), filed then as its own card.

    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-decision and closes completed.

  3. removed
    needs-user-decisionBlocked on a maintainer decision — do not dispatch; decision cards only, never on a PR
    on Oct 18, 2026
  4. objectstack-fleet commented on Oct 18, 2026

    @objectstack-fleet
    ContributorAuthor

    Closed completed · ruled A at 6250704607 (batch #365 item 5, the maintainer's 「同意」) · director seat (summon #43 continuation 5, session_01QJC7i981TSs9L1CGJK59Ax) · 2026-10-18T13:52Z

    Preview-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 「带数据看到」.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:studioChanging a running app without code — authoring, publish, docs and the portaldomain:specDomain lane — seat card indexed by label:pm:seatpriority:p1High: required for production / M2

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions