Skip to content

Studio 变更 drawer: on publish, offer 补默认值 per new field that carries a default, through the protocol's opt-in backfill (ruling A on cloud#2924) #12929

Closed

Description

@objectstack-fleet

Unblocked: #12971 closed completed when PR #13043 merged as 8aa8e3e1e5 (objectui's pin is now objectstack main f4755a68a797); re-derived with no new blocker (unlock comment below).

Filed by the director seat (summon #43 continuation 4, session_01QJC7i981TSs9L1CGJK59Ax) on the maintainer's ruling A on objectstack-ai/cloud#2924 (batch #362 item 1, 「其他同意」; the ruling record is that card's Ruled: line), under the maintainer's standing 口径 「平台相关的功能,应该尽量先改平台」: the protocol half is objectstack-ai/objectstack#24253 and lands first. ⛔ Not a claim. Filing gate ①: a ruled design element with a named consumer.

What is measured

  • The ruled StudioCopilot design (cloud#2924, the maintainer's 「同意」): a copilot change to a live app with records is saved as a Studio draft; the applied card says 「已有 N 条记录的 X 为空,发布时可选补 0」. The console's 变更 drawer publishes through publishPackageDrafts, which today takes no backfill; the card's 「可选补 0」 therefore stays off until this lands.

Scope

  1. In the 变更 drawer, each pending field addition that carries a defaultValue shows an unchecked 「补默认值(N 条已有记录)」 option; publishing passes the checked fields to the protocol's opt-in backfill and shows the per-field count the response returns.
  2. No option for a field without a default; nothing is backfilled unless checked.
  3. Clause-②: no (a drawer control over an existing publish action; no new @object-ui export).

Done when

  • A test: a draft adding a boolean with a default over N rows publishes with the option checked and the response count N is shown; unchecked, nothing is written.
  • cloud's applied-card copy may then say 「发布时可选补 0」 (cloud#2924's follow-up, one line).

Related: objectstack-ai/cloud#2924, objectstack-ai/objectstack#24253, #12894 (the card rendering half).

Activity

  1. added
    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution 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

    Blocked-by: re-pointed to the release · pm:blocked stays · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-18T09:22Z

    Triage seat (objectstack-wide, seat post objectstack-ai/objectstack#6015). ⛔ Not a claim, ⛔ not a dispatch.


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    Unlock: pm:blocked → pm:queue · domain:ui seat 1 · session_0188TsgPV8kQXfuRuKmkj2ks · 2026-10-19T14:31Z

    ⛔ Not a claim.


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 (priority:p2)
    Session: session_014MXhk1yjWh37d634hLy3p7
    Account: huangyiirene (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/issue-12929-publish-backfill
    Worktree: objectui-issue-12929
    Domain: domain:ui
    Seat: domain:ui#1
    File surface: packages/data-objectstack/src/metadata-client.ts (MetadataClient.publishPackageDrafts(packageId) gains the protocol's opt-in backfill, about :1527 of objectui main bc98626; it sends body: '{}' today), the Studio 变更 drawer and the publish path it calls (packages/app-shell/src/preview/DraftChangesPanel.tsx, and views/studio-design/StudioDesignSurface.tsx about :1448 or preview/usePublishAllDrafts.ts, whichever the drawer's Publish runs), the user-facing strings it adds (@object-ui/i18n packs or the app-shell table, as the drawer already does), tests beside them, and one .changeset/12929-publish-backfill.md. Stop on breach; explain in the report.
    Container & model: M, mode:subagent, model: opus (default tier; dispatch-gates --tier --repo objectstack-ai/objectui over this surface reads no path-derived mandate)
    Clause-②: yes
    Responsibility: n/a — not a defect card (a ruled design element: ruling A on objectstack-ai/cloud#2924, protocol half objectstack-ai/objectstack#24253)
    Thread-read: 6269724388
    Serial constraints cleared: no open objectui PR touches metadata-client.ts, DraftChangesPanel.tsx, StudioDesignSurface.tsx, usePublishAllDrafts.ts or PackagesPage.tsx (open PRs #13087, #13086, #13085, #13084, file lists read at this claim). Prerequisite re-verified: objectstack 1e001c7df (PR objectstack-ai/objectstack#24269, publishPackageDrafts takes backfill) is an ancestor of objectui's pin f4755a68a797 (git merge-base --is-ancestor, exit 0; control leg ca426cb65d, exit 0). PublishPackageDraftsResponse.backfillApplied is declared at the pin (packages/spec/src/api/protocol.zod.ts:1582).

    Why Clause-②: yes, correcting the card body's Clause-②: no: MetadataClient is exported from @object-ui/data-objectstack (src/index.ts:7273), and its publishPackageDrafts takes only packageId today. Passing the protocol's backfill through it adds an option to a published method's accepted input. That widens a published face, whatever the drawer itself adds. The card's line was written before that client existed on the path (it reasoned from "no new @object-ui export").

    Claimed at: 2026-10-19T20:49Z

  5. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report
    {
    "issue": 12929,
    "status": "done",
    "branch": "claude/issue-12929-publish-backfill",
    "pr": "#13090",
    "session": "session_014MXhk1yjWh37d634hLy3p7 — the harness-stamped Claude-Session id of this run (subagent = the PM's)",
    "premise_still_valid": true,
    "summary": "MetadataClient.publishPackageDrafts(packageId, options?) (@object-ui/data-objectstack) sends the protocol's opt-in backfill only when given (type picked off @objectstack/client packages.publishDrafts); without it the body stays '{}' byte for byte. The Studio 变更 drawer (DraftChangesPanel) offers an unchecked 「补默认值(N 条已有记录)」 under each field a draft adds to an already-published object whose draft fields map declares a literal defaultValue (spec discriminateDefaultValueShape, the door's own function); N is the console footer probe adapter.find(object, {$top: 0}).total as the caller, shown only when numeric. Publish all passes the checked fields; StudioDesignSurface.doPublish forwards them only when given (an unchecked publish is the exact prior call) and the toast reports backfillApplied per field (updated count, or a warning with the server's error for a field that stopped short). Strings: preview.changes.backfillOption (count family, all ten packs) + backfillOptionNoCount; engine.studio.backfillWritten / backfillStopped (en, zh). Published faces widened: data-objectstack publishPackageDrafts gains an optional 2nd param (type not re-exported from the entry; dist d.ts now type-references ObjectStackClient from @objectstack/client, an existing dependency); app-shell no exported name changes type (DraftChangesPanel is not on the entry, StudioDesignSurface props unchanged); i18n two new key families. H1 holds (only Studio passes onPublish; usePublishAllDrafts/PackagesPage/AiChatPage/PendingDraftsBar unchanged, still '{}'); H2 holds (installed spec declares backfillApplied, client pin parses its fixture against it; R = 18.0.0-next.5); H3 holds; H4: an honest count source exists (protocol counts the zero-row page with the caller's context).",
    "tests": "Final union at head ca83ad0, repo-root vitest under os-verify-lock: pnpm --filter @object-ui/data-objectstack test exit 0 — Test Files 97 passed (97), Tests 1179 passed (1179); 26 app-shell files (12 DraftChangesPanel.* + DraftPreviewBar, 12 Studio publish-path files incl. heldPublish-11786 / heldWidgetPublish-11910 / itemDraftLine-12725 that pin the exact publishPackageDrafts(PKG) call, + the new Studio pin) exit 0 — Test Files 26 passed (26), Tests 126 passed (126); packages/i18n/ exit 0 — Test Files 84 passed (84), Tests 1319 passed | 13 skipped. New pins: metadata-client.publishBackfill-12929.test.ts (3), DraftChangesPanel.backfill-12929.test.tsx (10), StudioDesignSurface.publishBackfill-12929.test.tsx (3: checked -> body {"backfill":[{"object":"b2r4_ticket","field":"done"}]} and toast description carries N=12; stopped -> warning with rows + reason; unchecked -> body '{}' and no backfill line). First regression run at 6348eef was red on those three existing pins (call arity publishPackageDrafts(PKG, undefined)); fixed in ca83ad0 by passing options only when given, then green. Ablation at 6348eef via ablation-replace.mjs (anchor x1 -> x0, landed on disk, restore proven blob == HEAD and git diff HEAD empty; suites resolve @object-ui/data-objectstack through the vitest src alias, so no build between mutate and run): (1) client body -> '{}': 3 failed | 3 passed; (2) delete the literal-shape check in backfillCandidates: 6 failed | 4 passed; (3) footer -> void onPublish(): 3 failed | 10 passed. All red in the expected direction.",
    "gates": "Local, exit captured to files before any pipe. data-objectstack lint exit 0 (0 errors), type-check exit 0 (at 6348eef; --listFilesOnly includes the new test; package unchanged since). app-shell lint exit 0 (0 errors; one new react-refresh/only-export-components warning on exported backfillCandidates, same kind as existing computeChangeDetail; no warning ratchet in lint.yml), type-check exit 0 (both programs, at ca83ad0; --listFilesOnly lists both new tests). At ca83ad0, exit 0 each: check:i18n-keys, check:i18n-drift (4 pack keys + 2 table keys added, 0 en values changed), check:i18n-designer-parity, check:new-line-citations (0 new), check:control-bytes, check:spec-symbols, check:metadata-write-doors, check:phantom-deps, check:esm-specifiers, check-changeset-{presence,no-major,fixed,claims,overwrite}, check-vi-mock-{inherit,override-shape,specifiers}, check-test-path-roots, check-type-check-coverage. check:i18n-dead-keys exit 0 (report; new keys not listed). check-governed-queue-guard --test over the 18 paths: NOT GOVERNED. dispatch-gates.mjs refuses objectui, so this list is hand-derived from objectui's workflows and manifests (no --ran reconciliation exists for this repo). Not run locally (CI's): full app-shell suite, repo-wide lint, check:eager-closure (needs a console build; NOT MEASURED locally — the diff adds a runtime @objectstack/spec/data import to an eager-graph module, already a runtime import of @object-ui/core and claimed whole by the vendor-objectstack chunk), check:published-dist, check:spec-floors (no floor moves). PR check-runs at ca83ad0 when this report was written: 35 total, 29 in_progress, 3 success, 3 skipped, 0 failed — in_progress.",
    "mcp_calls": "0 — no MCP GitHub tool called",
    "api_writes": "2 relay strokes, each one POST /repos/objectstack-ai/objectstack/dispatches executed as objectstack-fleet[bot]: (1) pr_create = POST /repos/objectstack-ai/objectui/pulls (draft) + POST /repos//issues/13090/assignees (huangyiirene), read back 14020 bytes sent = stored; (2) comment = POST /repos//issues/12929/comments (this report). Plus git push x2 (empty-branch probe, then ca83ad0), not REST. Labels: none written (the PR's path labels are labeler.yml's).",
    "deviations": [
    "Floor clause not applied: the @objectstack/spec ranges of @object-ui/data-objectstack (^18.0.0-next.1) and @object-ui/app-shell (^18.0.0-next.3) are unchanged. objectui AGENTS.md §9 「依赖与锁文件」 says those ranges act only at objectui's own release and must not be edited to align with the pin; scripts/objectstack-floor.mjs computes every floor at publish from .objectstack-sha as the earliest spec release whose tag contains the pin. R = 18.0.0-next.5 (is-ancestor 1e001c7df vs the next.5 tag commit exit 0; vs next.3 exit 1, control leg next.2-in-next.3 exit 0; next.4 never tagged; npm next = 18.0.0-next.5). The pin f4755a68a797 is after next.5 (next.5 is-ancestor of pin exit 0; pin in next.5 exit 1), so the computed floor will be a release after next.5 and publishing waits for it (that script's exit 2): either way nothing older than R is admitted. Named here as a dispatch-vs-landing-repo conflict rather than picked silently.",
    "No new helper module: the receipt formatter lives in StudioDesignSurface.tsx to stay inside the claimed file surface.",
    "Design judgement: the choice is offered only for added fields of an already-published object (a never-published object has no existing records); the drawer places it in the drill-in under the + field row, so in the review posture it shows once the row is expanded (the confirm posture expands every row)."
    ],
    "diff": "18 files changed, 949 insertions(+), 24 deletions(-) vs BASE b3007fd: .changeset/12929-publish-backfill.md; packages/data-objectstack/src/metadata-client.ts (+ metadata-client.publishBackfill-12929.test.ts); packages/app-shell/src/preview/DraftChangesPanel.tsx (+ tests/DraftChangesPanel.backfill-12929.test.tsx); packages/app-shell/src/views/studio-design/StudioDesignSurface.tsx (+ StudioDesignSurface.publishBackfill-12929.test.tsx); packages/app-shell/src/views/metadata-admin/i18n.ts; packages/i18n/src/locales/{ar,de,en,es,fr,ja,ko,pt,ru,zh}.ts",
    "open_questions": [],
    "out_of_scope_findings": [
    "carrier: 承接者:无 · noted, not filed (read-only inference, no public-door reproduction) — ObjectStackAdapter.normalizeQueryResult answers total as total ?? count ?? records.length, and find returns {data: [], total: 0} for a resource memoised as missing (404): a $top: 0 count read could show a confident 0 if a server omitted total ($count=false, which the console does not send) or for a resource that 404ed earlier in the session. In PR Acceptance notes.",
    "carrier: 承接者:无 · noted, not filed (behaviour as specified) — on the SQL driver the column DEFAULT fills existing rows at ADD COLUMN, so backfillApplied.updated truthfully reads 0 while the drawer named N existing records; the spec calls that 0 a complete answer. In PR Acceptance notes."
    ]
    }


    Generated by Claude Code

  6. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report
    {
    "issue": 12929,
    "status": "done",
    "branch": "claude/issue-12929-publish-backfill",
    "pr": "#13090",
    "session": "session_014MXhk1yjWh37d634hLy3p7 — the harness-stamped Claude-Session id of this run (subagent = the PM's)",
    "premise_still_valid": true,
    "summary": "PATCH ROUND 1 (REWORK, one item): .changeset/12929-publish-backfill.md now declares '@object-ui/i18n': minor (was patch). The en pack's new preview.changes.backfillOption family and backfillOptionNoCount widen the published TranslationKeys, which is an additive public-type change. Only that frontmatter line changed (1 insertion, 1 deletion), committed as fe229b7 and pushed; no code change and no merge of main (PR mergeable, state behind, no conflict). Round 0, unchanged: MetadataClient.publishPackageDrafts(packageId, options?) (@object-ui/data-objectstack) sends the protocol's opt-in backfill only when given (type picked off @objectstack/client packages.publishDrafts); without it the body stays '{}' byte for byte. The Studio 变更 drawer (DraftChangesPanel) offers an unchecked 「补默认值(N 条已有记录)」 under each field a draft adds to an already-published object whose draft fields map declares a literal defaultValue (spec discriminateDefaultValueShape, the door's own function); N is the console footer probe adapter.find(object, {$top: 0}).total as the caller, shown only when numeric. Publish all passes the checked fields; StudioDesignSurface.doPublish forwards them only when given (an unchecked publish is the exact prior call) and the toast reports backfillApplied per field (updated count, or a warning with the server's error for a field that stopped short). Strings: preview.changes.backfillOption (count family, all ten packs) + backfillOptionNoCount; engine.studio.backfillWritten / backfillStopped (en, zh). Published faces widened: data-objectstack publishPackageDrafts gains an optional 2nd param (type not re-exported from the entry; dist d.ts now type-references ObjectStackClient from @objectstack/client, an existing dependency); app-shell no exported name changes type (DraftChangesPanel is not on the entry, StudioDesignSurface props unchanged); i18n two new key families. H1 holds (only Studio passes onPublish; usePublishAllDrafts/PackagesPage/AiChatPage/PendingDraftsBar unchanged, still '{}'); H2 holds (installed spec declares backfillApplied, client pin parses its fixture against it; R = 18.0.0-next.5); H3 holds; H4: an honest count source exists (protocol counts the zero-row page with the caller's context).",
    "tests": "Patch round 1 changes one changeset frontmatter line, so no test reruns are owed (no code moved). Round 0 readings, which stand for the code at fe229b7: Final union at head ca83ad0, repo-root vitest under os-verify-lock: pnpm --filter @object-ui/data-objectstack test exit 0 — Test Files 97 passed (97), Tests 1179 passed (1179); 26 app-shell files (12 DraftChangesPanel.* + DraftPreviewBar, 12 Studio publish-path files incl. heldPublish-11786 / heldWidgetPublish-11910 / itemDraftLine-12725 that pin the exact publishPackageDrafts(PKG) call, + the new Studio pin) exit 0 — Test Files 26 passed (26), Tests 126 passed (126); packages/i18n/ exit 0 — Test Files 84 passed (84), Tests 1319 passed | 13 skipped. New pins: metadata-client.publishBackfill-12929.test.ts (3), DraftChangesPanel.backfill-12929.test.tsx (10), StudioDesignSurface.publishBackfill-12929.test.tsx (3: checked -> body {"backfill":[{"object":"b2r4_ticket","field":"done"}]} and toast description carries N=12; stopped -> warning with rows + reason; unchecked -> body '{}' and no backfill line). First regression run at 6348eef was red on those three existing pins (call arity publishPackageDrafts(PKG, undefined)); fixed in ca83ad0 by passing options only when given, then green. Ablation at 6348eef via ablation-replace.mjs (anchor x1 -> x0, landed on disk, restore proven blob == HEAD and git diff HEAD empty; suites resolve @object-ui/data-objectstack through the vitest src alias, so no build between mutate and run): (1) client body -> '{}': 3 failed | 3 passed; (2) delete the literal-shape check in backfillCandidates: 6 failed | 4 passed; (3) footer -> void onPublish(): 3 failed | 10 passed. All red in the expected direction.",
    "gates": "Patch round 1, at fe229b7, exit captured before any pipe: node scripts/check-changeset-presence.mjs exit 0 ('17 source file(s) of 3 released package(s) changed, and this change declares 1 changeset(s)'); node scripts/check-changeset-no-major.mjs exit 0; node scripts/check-changeset-fixed.mjs exit 0; pnpm check:changeset-claims exit 0 ('No pending changeset names a file this change touches'). PR check-runs at fe229b7 when written: 10 so far, 5 queued, 4 in_progress, 1 skipped — in_progress. At ca83ad0 (prior head): 35 total, 12 success, 3 skipped, 20 in_progress, 0 failed. Round 0 gates, unchanged for the code: Local, exit captured to files before any pipe. data-objectstack lint exit 0 (0 errors), type-check exit 0 (at 6348eef; --listFilesOnly includes the new test; package unchanged since). app-shell lint exit 0 (0 errors; one new react-refresh/only-export-components warning on exported backfillCandidates, same kind as existing computeChangeDetail; no warning ratchet in lint.yml), type-check exit 0 (both programs, at ca83ad0; --listFilesOnly lists both new tests). At ca83ad0, exit 0 each: check:i18n-keys, check:i18n-drift (4 pack keys + 2 table keys added, 0 en values changed), check:i18n-designer-parity, check:new-line-citations (0 new), check:control-bytes, check:spec-symbols, check:metadata-write-doors, check:phantom-deps, check:esm-specifiers, check-changeset-{presence,no-major,fixed,claims,overwrite}, check-vi-mock-{inherit,override-shape,specifiers}, check-test-path-roots, check-type-check-coverage. check:i18n-dead-keys exit 0 (report; new keys not listed). check-governed-queue-guard --test over the 18 paths: NOT GOVERNED. dispatch-gates.mjs refuses objectui, so this list is hand-derived from objectui's workflows and manifests (no --ran reconciliation exists for this repo). Not run locally (CI's): full app-shell suite, repo-wide lint, check:eager-closure (needs a console build; NOT MEASURED locally — the diff adds a runtime @objectstack/spec/data import to an eager-graph module, already a runtime import of @object-ui/core and claimed whole by the vendor-objectstack chunk), check:published-dist, check:spec-floors (no floor moves). PR check-runs at ca83ad0 when this report was written: 35 total, 29 in_progress, 3 success, 3 skipped, 0 failed — in_progress.",
    "mcp_calls": "0 — no MCP GitHub tool called",
    "api_writes": "Patch round 1: 1 relay stroke (POST /repos/objectstack-ai/objectstack/dispatches -> comment = POST /repos//issues/12929/comments, this report) + git push x1 (ca83ad0..fe229b7, not REST). Round 0: 2 relay strokes, each one POST /repos/objectstack-ai/objectstack/dispatches executed as objectstack-fleet[bot]: (1) pr_create = POST /repos/objectstack-ai/objectui/pulls (draft) + POST /repos//issues/13090/assignees (huangyiirene), read back 14020 bytes sent = stored; (2) comment = POST /repos//issues/12929/comments (this report). Plus git push x2 (empty-branch probe, then ca83ad0), not REST. Labels: none written (the PR's path labels are labeler.yml's).",
    "deviations": [
    "Floor clause not applied: the @objectstack/spec ranges of @object-ui/data-objectstack (^18.0.0-next.1) and @object-ui/app-shell (^18.0.0-next.3) are unchanged. objectui AGENTS.md §9 「依赖与锁文件」 says those ranges act only at objectui's own release and must not be edited to align with the pin; scripts/objectstack-floor.mjs computes every floor at publish from .objectstack-sha as the earliest spec release whose tag contains the pin. R = 18.0.0-next.5 (is-ancestor 1e001c7df vs the next.5 tag commit exit 0; vs next.3 exit 1, control leg next.2-in-next.3 exit 0; next.4 never tagged; npm next = 18.0.0-next.5). The pin f4755a68a797 is after next.5 (next.5 is-ancestor of pin exit 0; pin in next.5 exit 1), so the computed floor will be a release after next.5 and publishing waits for it (that script's exit 2): either way nothing older than R is admitted. Named here as a dispatch-vs-landing-repo conflict rather than picked silently.",
    "No new helper module: the receipt formatter lives in StudioDesignSurface.tsx to stay inside the claimed file surface.",
    "Design judgement: the choice is offered only for added fields of an already-published object (a never-published object has no existing records); the drawer places it in the drill-in under the + field row, so in the review posture it shows once the row is expanded (the confirm posture expands every row).",
    "Patch round 1: the worktree was removed after round 0, so it was re-created from origin/claude/issue-12929-publish-backfill at ca83ad0 (no install needed for the four changeset scripts) and removed again after the push.",
    "Stale PR-body line, for the seat to amend (a dev writes the PR body once and does not PATCH it): in PR #13090's What changes list, the bullet reading '.changeset/12929-publish-backfill.md: data-objectstack minor, app-shell minor, i18n patch.' should end 'i18n minor.'"
    ],
    "diff": "Round 1 adds 1 file changed, 1 insertion(+), 1 deletion(-) (.changeset/12929-publish-backfill.md). Branch total vs BASE b3007fd stays 18 files changed, 949 insertions(+), 24 deletions(-): .changeset/12929-publish-backfill.md; packages/data-objectstack/src/metadata-client.ts (+ metadata-client.publishBackfill-12929.test.ts); packages/app-shell/src/preview/DraftChangesPanel.tsx (+ tests/DraftChangesPanel.backfill-12929.test.tsx); packages/app-shell/src/views/studio-design/StudioDesignSurface.tsx (+ StudioDesignSurface.publishBackfill-12929.test.tsx); packages/app-shell/src/views/metadata-admin/i18n.ts; packages/i18n/src/locales/{ar,de,en,es,fr,ja,ko,pt,ru,zh}.ts",
    "open_questions": [],
    "out_of_scope_findings": [
    "carrier: 承接者:无 · noted, not filed (read-only inference, no public-door reproduction) — ObjectStackAdapter.normalizeQueryResult answers total as total ?? count ?? records.length, and find returns {data: [], total: 0} for a resource memoised as missing (404): a $top: 0 count read could show a confident 0 if a server omitted total ($count=false, which the console does not send) or for a resource that 404ed earlier in the session. In PR Acceptance notes.",
    "carrier: 承接者:无 · noted, not filed (behaviour as specified) — on the SQL driver the column DEFAULT fills existing rows at ADD COLUMN, so backfillApplied.updated truthfully reads 0 while the drawer named N existing records; the spec calls that 0 a complete answer. In PR Acceptance notes."
    ],
    "head": "fe229b72f187a7032406e3c1d04a066b81d471f1"
    }


    Generated by Claude Code

  7. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT → PR #13090 comment 6278072404 · contract review 6278057016 (TIER_DEFAULT, declaration face, PASS, head fe229b7) · domain:ui#1 · session_014MXhk1yjWh37d634hLy3p7 · 2026-10-19T21:44Z. The flip to ready and auto-merge wait for green check-runs on this head.

  8. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    LANDED · domain:ui seat 1 · session_014MXhk1yjWh37d634hLy3p7 · 2026-10-19T22:10Z · pm:dispatched cleared

    reading value
    PR #13090 merged through the merge queue at 2026-10-19T22:09Z; merge commit 6058bf8, which git merge-base --is-ancestor places on origin/main (exit 0)
    queue no gh-readonly-queue/main/pr-13090-* branch remains
    landed content on origin/main: metadata-client.ts sends backfill only when given (options.backfill !== undefined, 1 hit); DraftChangesPanel.tsx carries export function backfillCandidates (1 hit). Positive control: async publishPackageDrafts is still the one door (1 hit)
    records claim 6277021967 (Clause-②: yes, correcting this card's body line), dev reports (round 0 and patch round 1), contract review 6278057016 (TIER_DEFAULT, PASS), ACCEPT 6278072404
    closing closed completed at 2026-10-19T22:09Z through the PR's Fixes #12929, the only card closed since the merge; pm:dispatched is removed in this act

    Follow-up named by this card's body: objectstack-ai/cloud#2924's applied-card copy may now say 「发布时可选补 0」 (cloud's one-line follow-up). It reaches users when cloud's objectui pin moves past 6058bf8.

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

Metadata

Metadata

Assignees

Labels

area:studioChanging a running app without code — authoring, publish, docs and the portaldomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpriority:p2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions