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
{{ message }}
Repository navigation
Studio/Setup: show the "storage not synced" warning a save or publish now returns (object-storage-sync-refused) #30723
Filing gate: ① the ui half #30635 named as its own card "once the server field exists" (#30635 body, Expected, third bullet); the server half landed in PR #30691 (merge commit 55a00ba200). ⛔ Not a claim. Suggested grade: p3.
Dedupe: object-storage-sync-refused, advisories warning after save — no open card. New.
Reader: the ui/** lane (Studio / Setup object editor).
What happens
Since PR #30691, PUT /api/v1/meta/object/NAME (publish mode) and POST /api/v1/meta/object/NAME/publish answer a refused storage sync with 200 plus one warning on advisories (rule object-storage-sync-refused, path empty, a message naming the object, and a hint). The console's object save does not show it, so the admin still sees plain success and learns that the table was not created only when reads or writes fail.
Expected
After a save or publish whose answer carries an object-storage-sync-refused advisory, the editor shows a warning with the advisory's message and hint (the save itself stays a success).
If the console already renders advisories generically, this card is a check that it does so on the object save, plus a pin.
Claim: PM loop round 7 · 2026-11-06T00:43Z
Session: session_01L6bhgWn6zhNa4LL7VB1rtL
Account: os-sales (the seat's linked user as GET /user answers it; the card's assignee)
Branch: claude/issue-30723-storage-sync-advisory-pin
Worktree: objectstack-issue-30723
Domain: domain:ui
Seat: domain:ui#1 (the card's digit 3 is domain:ui#6's; that seat yielded it in its thread at 00:43Z)
File surface: tests only, beside the advisory channel the console already has: ui/packages/data-objectstack/src/*.test.ts (the MetadataClient save and publish doors and the adapter's meta.saveItem interceptor) and ui/packages/app-shell/src/{services,providers,views/metadata-admin}/*.test.ts(x) (the console's two subscribers, useMetadataClient and AdapterProvider, rendering through emitSaveAdvisories). ⛔ packages/** (the producer is the server half, PR #30691; #30693 is the batch door's server drop and stays server work), ⛔ the renderer's wording and i18n keys, ⛔ any package.json (no new dependency for a fixture). If the check finds a door that does NOT reach the toast, the fix stays inside ui/packages/{data-objectstack,app-shell}/src/ and the dev stops and states it in the report before widening anything. Stop on breach and explain in the report.
Container & model: S, mode:subagent, model: default (opus) (dispatch-gates --tier on 40a9265ff: no path-derived mandate; floor sonnet · default opus · ceiling fable), effort: medium
Clause-②: no (tests pin an existing internal channel; no export, no wire change. Re-read at ACCEPT)
Metadata-protocol: none
Responsibility: after an object save or publish whose storage sync was refused, the admin sees a warning with the server's message and hint while the save stays a success | the console's generic advisory toast is believed to cover it, but no test drives this rule's real shape (empty path) through the object doors | a Setup or Studio admin whose datasource refuses an object's schema sync; reach: the single-item doors today, the batch door once #30693 lands
Thread-read: 6672661245
Premise: holds on origin/main40a9265ff. The producer objectStorageSyncRefusedNotice (packages/metadata-protocol/src/protocol-registry-hydration.ts:1696) returns all six string keys (rule, severity: 'warning', where: 'object "NAME"', path: '', message, hint), so readSaveAdvisories (ui/packages/data-objectstack/src/metadata-client.ts:200, which drops a finding missing any of the six) keeps it. Every console object write reaches a sink: useMetadataClient wires onSaveAdvisory into each MetadataClient (useMetadata.ts:158, used by StudioDesignSurface.tsx:6290, DatasourceResourcePage.tsx:736, PackageOwdOverviewPanel.tsx:415), the adapter wraps meta.saveItem for MetadataService (index.ts:4487, subscribed in AdapterProvider.tsx:93), and emitSaveAdvisories prints message and hint (saveAdvisoryToast.ts:95). The two new MetadataClient( in plugin-designer (MetadataObjectsPage.tsx:166, MetadataFieldsPage.tsx:901) take no sink but have no console consumer. So the card is its Expected bullet 2: a check plus a pin. The dev re-reads these positions before the first edit.
Scope of the pin: one finding in the producer's exact shape (copied verbatim from :1696 with a comment naming it), driven through (a) MetadataClient.save in publish mode, (b) MetadataClient.publish / publishDraft, (c) one publishPackageDraftspublished[] element, (d) the adapter's meta.saveItem; each asserts the toast is the warning tier with "Saved" / "Published" and that its description carries the message and the hint, and that the write still resolves.
Out of scope, observed: the frame says "the authoring check raised N advisory finding(s)" although this finding comes from the storage sync, not the authoring gate. Wording, not behaviour; not changed here.
Serial constraints: the file lists of the 64 open PRs read at claim time: none touches saveAdvisoryToast*, onSaveAdvisory*, AdapterProvider*, metadata-client.ts, useMetadata.ts, metadataClientFactory* or MetadataService*.
ACCEPT → PR #30761 comment 6674263361 · head da4bf805 · 2026-11-06T01:31Z — tests only: the producer's object-storage-sync-refused finding (empty path) driven through save, publish, publishDraft, one publishPackageDrafts element and MetadataService.saveObject; each shows the warning with the server's message and hint, and the write stays a success. pr_ready + automerge_enable relayed. Fixes: the card closes on the merge.
Landed 2026-11-06T01:52Z: PR #30761 merged as b3098661cd (seat ACCEPT 6674263361 on head da4bf805), 2026-11-06T01:44:33Z on the PR.
probe
reading
git grep -n "a refused object storage sync is shown on every object door" origin/main -- ui/packages/app-shell/src/views/metadata-admin/useMetadataClient.advisorySink.test.tsx
:220 (save, publish, publishDraft and one publishPackageDrafts element each show the warning with the server's message and hint)
git grep -n "MetadataService object save shows a refused storage sync" origin/main -- ui/packages/app-shell/src/services/MetadataService.saveAdvisories.test.ts
:202 (the Setup object save through the adapter's meta.saveItem)
State: the card closed on the merge (Fixes), and pm:dispatched is removed in the same stroke. The console already rendered the advisory generically; this card was its Expected bullet 2, a check plus pins. Studio publishes objects through the batch door, whose server side still drops the advisory: that is #30693 (server). Not changed here: the toast frame says "the authoring check raised N advisory finding(s)" for a finding the storage sync raised.
Activity
objectstack-fleet commentedon Nov 5, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: audit · p2 ·
domain:ui· 2026-11-05T23:52Z⛔ Not a claim.
Generated by Claude Code
objectstack-fleet commentedon Nov 6, 2026
domain:ui#1 · os-sales · session_01L6bhgWn6zhNa4LL7VB1rtL
Claim: PM loop round 7 · 2026-11-06T00:43Z
Session:
session_01L6bhgWn6zhNa4LL7VB1rtLAccount:
os-sales(the seat's linked user asGET /useranswers it; the card's assignee)Branch:
claude/issue-30723-storage-sync-advisory-pinWorktree:
objectstack-issue-30723Domain:
domain:uiSeat:
domain:ui#1(the card's digit 3 isdomain:ui#6's; that seat yielded it in its thread at 00:43Z)File surface: tests only, beside the advisory channel the console already has:
ui/packages/data-objectstack/src/*.test.ts(theMetadataClientsave and publish doors and the adapter'smeta.saveIteminterceptor) andui/packages/app-shell/src/{services,providers,views/metadata-admin}/*.test.ts(x)(the console's two subscribers,useMetadataClientandAdapterProvider, rendering throughemitSaveAdvisories). ⛔packages/**(the producer is the server half, PR #30691; #30693 is the batch door's server drop and stays server work), ⛔ the renderer's wording and i18n keys, ⛔ anypackage.json(no new dependency for a fixture). If the check finds a door that does NOT reach the toast, the fix stays insideui/packages/{data-objectstack,app-shell}/src/and the dev stops and states it in the report before widening anything. Stop on breach and explain in the report.Container & model:
S,mode:subagent,model: default (opus)(dispatch-gates --tieron40a9265ff: no path-derived mandate; floor sonnet · default opus · ceiling fable),effort: mediumClause-②: no (tests pin an existing internal channel; no export, no wire change. Re-read at ACCEPT)
Metadata-protocol: none
Responsibility: after an object save or publish whose storage sync was refused, the admin sees a warning with the server's message and hint while the save stays a success | the console's generic advisory toast is believed to cover it, but no test drives this rule's real shape (empty
path) through the object doors | a Setup or Studio admin whose datasource refuses an object's schema sync; reach: the single-item doors today, the batch door once #30693 landsThread-read: 6672661245
Premise: holds on
origin/main40a9265ff. The producerobjectStorageSyncRefusedNotice(packages/metadata-protocol/src/protocol-registry-hydration.ts:1696) returns all six string keys (rule,severity: 'warning',where: 'object "NAME"',path: '',message,hint), soreadSaveAdvisories(ui/packages/data-objectstack/src/metadata-client.ts:200, which drops a finding missing any of the six) keeps it. Every console object write reaches a sink:useMetadataClientwiresonSaveAdvisoryinto eachMetadataClient(useMetadata.ts:158, used byStudioDesignSurface.tsx:6290,DatasourceResourcePage.tsx:736,PackageOwdOverviewPanel.tsx:415), the adapter wrapsmeta.saveItemforMetadataService(index.ts:4487, subscribed inAdapterProvider.tsx:93), andemitSaveAdvisoriesprintsmessageandhint(saveAdvisoryToast.ts:95). The twonew MetadataClient(inplugin-designer(MetadataObjectsPage.tsx:166,MetadataFieldsPage.tsx:901) take no sink but have no console consumer. So the card is its Expected bullet 2: a check plus a pin. The dev re-reads these positions before the first edit.Scope of the pin: one finding in the producer's exact shape (copied verbatim from
:1696with a comment naming it), driven through (a)MetadataClient.savein publish mode, (b)MetadataClient.publish/publishDraft, (c) onepublishPackageDraftspublished[]element, (d) the adapter'smeta.saveItem; each asserts the toast is the warning tier with "Saved" / "Published" and that its description carries themessageand thehint, and that the write still resolves.Out of scope, observed: the frame says "the authoring check raised N advisory finding(s)" although this finding comes from the storage sync, not the authoring gate. Wording, not behaviour; not changed here.
Serial constraints: the file lists of the 64 open PRs read at claim time: none touches
saveAdvisoryToast*,onSaveAdvisory*,AdapterProvider*,metadata-client.ts,useMetadata.ts,metadataClientFactory*orMetadataService*.objectstack-fleet commentedon Nov 6, 2026
domain:ui#1 · os-sales · session_01L6bhgWn6zhNa4LL7VB1rtL
ACCEPT → PR #30761 comment 6674263361 · head
da4bf805· 2026-11-06T01:31Z — tests only: the producer'sobject-storage-sync-refusedfinding (emptypath) driven throughsave,publish,publishDraft, onepublishPackageDraftselement andMetadataService.saveObject; each shows the warning with the server's message and hint, and the write stays a success.pr_ready+automerge_enablerelayed.Fixes: the card closes on the merge.objectstack-fleet commentedon Nov 6, 2026
domain:ui#1 · os-sales · session_01L6bhgWn6zhNa4LL7VB1rtL
Landed 2026-11-06T01:52Z: PR #30761 merged as
b3098661cd(seat ACCEPT 6674263361 on headda4bf805), 2026-11-06T01:44:33Z on the PR.git grep -n "a refused object storage sync is shown on every object door" origin/main -- ui/packages/app-shell/src/views/metadata-admin/useMetadataClient.advisorySink.test.tsx:220(save, publish, publishDraft and one publishPackageDrafts element each show the warning with the server's message and hint)git grep -n "MetadataService object save shows a refused storage sync" origin/main -- ui/packages/app-shell/src/services/MetadataService.saveAdvisories.test.ts:202(the Setup object save through the adapter'smeta.saveItem)State: the card closed on the merge (
Fixes), andpm:dispatchedis removed in the same stroke. The console already rendered the advisory generically; this card was its Expected bullet 2, a check plus pins. Studio publishes objects through the batch door, whose server side still drops the advisory: that is #30693 (server). Not changed here: the toast frame says "the authoring check raised N advisory finding(s)" for a finding the storage sync raised.