Split out of objectstack-ai/objectstack#4717 at dispatch, per the maintainer's 2026-08-07 migration ruling that the objectui half travels as its own card rather than being carried across seats in one issue. Filed by the domain:metadata seat that landed the backend half. Unassigned — this is the objectui whole-repo seat's card, not mine.
The backend half has landed, so the field exists now
objectstack-ai/objectstack#7435 merged as 89d7b35a7 (2026-08-10). SaveMetaItemResponseSchema now carries an optional advisories array, emitted only when non-empty — a clean save's response bytes are unchanged, so nothing to render in the common case.
Element shape is the D3 finding shape, declared once in packages/spec as RuntimeAuthoringIssueSchema and re-exported by metadata-protocol:
| key |
|
rule |
the lint rule id |
path |
where in the document |
where |
context |
message |
the finding |
hint |
suggested remedy |
severity |
'warning' etc. — never 'error' on this channel |
⚠️ rulesRun is deliberately not on the response (maintainer ruling, 2026-08-10) — do not build UI that expects it.
Why this is worth rendering
The gate produces advisories and the server used to discard them: they were console.warn'd behind a process-level dedupe set and went out of scope. Measured on the real gate: a nightly_purge flow whose only defect is a delete_record node with multi: true and no filter yields errors = 0 / advisories = 1 — the save succeeds at 200, the row persists, and the author never learns anything was wrong.
That matters most for exactly the authors Studio serves: a Studio tenant or an MCP/AI author has no os lint and no CLI config for sys_metadata overlay rows, so this gate is not the weakest of four doors — it is the only one. Until something renders these, the finding is produced and thrown away on the client side instead of the server side.
Scope
Render advisory findings after a successful save as warnings — the save succeeded, so this must not read as a failure. Shape and placement are the objectui seat's call.
Deliberately not in scope
- The publish door. The gate runs on both write doors, but only the save door returns advisories today; the publish door rides behind
objectstack-ai/objectstack#7294 (that route has no spec declaration at all yet). So a draft-then-publish flow will not surface advisories until that lands — worth knowing before designing around it, since Studio's designer uses draft-then-publish on every edit.
- The
surfaces generalisation and the docs table — separate cards in the backend repo.
Dedup
Searched open objectui issues for advisory / advisories in title and body: no hits. Searched the backend repo for the same: no hits.
Split out of
objectstack-ai/objectstack#4717at dispatch, per the maintainer's 2026-08-07 migration ruling that the objectui half travels as its own card rather than being carried across seats in one issue. Filed by thedomain:metadataseat that landed the backend half. Unassigned — this is the objectui whole-repo seat's card, not mine.The backend half has landed, so the field exists now
objectstack-ai/objectstack#7435merged as89d7b35a7(2026-08-10).SaveMetaItemResponseSchemanow carries an optionaladvisoriesarray, emitted only when non-empty — a clean save's response bytes are unchanged, so nothing to render in the common case.Element shape is the D3 finding shape, declared once in
packages/specasRuntimeAuthoringIssueSchemaand re-exported bymetadata-protocol:rulepathwheremessagehintseverity'warning'etc. — never'error'on this channelrulesRunis deliberately not on the response (maintainer ruling, 2026-08-10) — do not build UI that expects it.Why this is worth rendering
The gate produces advisories and the server used to discard them: they were
console.warn'd behind a process-level dedupe set and went out of scope. Measured on the real gate: anightly_purgeflow whose only defect is adelete_recordnode withmulti: trueand no filter yieldserrors = 0 / advisories = 1— the save succeeds at 200, the row persists, and the author never learns anything was wrong.That matters most for exactly the authors Studio serves: a Studio tenant or an MCP/AI author has no
os lintand no CLI config forsys_metadataoverlay rows, so this gate is not the weakest of four doors — it is the only one. Until something renders these, the finding is produced and thrown away on the client side instead of the server side.Scope
Render advisory findings after a successful save as warnings — the save succeeded, so this must not read as a failure. Shape and placement are the objectui seat's call.
Deliberately not in scope
objectstack-ai/objectstack#7294(that route has no spec declaration at all yet). So a draft-then-publish flow will not surface advisories until that lands — worth knowing before designing around it, since Studio's designer uses draft-then-publish on every edit.surfacesgeneralisation and the docs table — separate cards in the backend repo.Dedup
Searched open objectui issues for
advisory/advisoriesin title and body: no hits. Searched the backend repo for the same: no hits.