From c2fb9eeecae07dbddeb2d615e5a1c6539e5eff07 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 28 Oct 2026 15:35:03 +0000 Subject: [PATCH 1/2] =?UTF-8?q?skills(objectstack-ui):=20pages.md=20states?= =?UTF-8?q?=20the=20embed=20scope=20os=20build=20enforces=20=E2=80=94=20th?= =?UTF-8?q?is=20package=20or=20a=20declared=20dependency?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The 〈Inline metadata views〉 build-lint sentence said a metadata fence's referenced item "must exist in this package". docs/metadata-embed-ref judges an embed against the package that ships the doc plus the packages it declares in manifest.dependencies (direct only, one-way); the sentence now states that closed rule. Patch changeset for @objectstack/skills, which ships skills/**. Co-authored-by: Claude Claude-Session: https://claude.ai/code/session_017xRBcUi2qhP1eKRbZJ1Ze1 --- .changeset/27209-pages-embed-scope.md | 10 ++++++++++ skills/objectstack-ui/rules/pages.md | 7 ++++--- 2 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 .changeset/27209-pages-embed-scope.md diff --git a/.changeset/27209-pages-embed-scope.md b/.changeset/27209-pages-embed-scope.md new file mode 100644 index 00000000000..37ee0cd7224 --- /dev/null +++ b/.changeset/27209-pages-embed-scope.md @@ -0,0 +1,10 @@ +--- +'@objectstack/skills': patch +--- + +docs(skills/objectstack-ui): `pages.md` 〈Inline metadata views〉 states the embed scope `os build` enforces — this package or one it declares in `manifest.dependencies` + +Clause-②: no +Metadata-protocol: none + +The build-lint sentence said a `metadata` fence's referenced object-rule / flow / permission set "must exist in this package". `docs/metadata-embed-ref` judges an embed against the package that ships the doc plus the packages it declares in `manifest.dependencies` (direct dependencies only; the declaration is one-way), so the rule the skill teaches now matches: an embed may name a declared dependency's item, anything else fails the build, and the refusal names the scope it judged. No platform behaviour changes. diff --git a/skills/objectstack-ui/rules/pages.md b/skills/objectstack-ui/rules/pages.md index 82e48a3347a..b597aaf37ee 100644 --- a/skills/objectstack-ui/rules/pages.md +++ b/skills/objectstack-ui/rules/pages.md @@ -395,9 +395,10 @@ name: crm_task_status_flow `os build` lints every fence: `type` must be one of the three (typo → did-you-mean), `name` is required, `state_machine` also needs `object`, and the referenced object-rule / flow / permission set **must exist in this -package** — a dead same-package reference fails the build (same posture as -a broken link). At render time a missing or forbidden reference degrades to -a placeholder, never a crash. +package or one it declares in `manifest.dependencies`** (direct dependencies +only; one-way) — anything else fails the build, naming the scope it judged +(same posture as a broken link). At render time a missing or forbidden +reference degrades to a placeholder, never a crash. Embedding an `object` (data model) or an arbitrary SDUI component is **not** supported. **`permission` caveat:** the matrix is not From 60b713f64a2844b1dc6fa59a7a33a1ec5fc94caa Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 28 Oct 2026 16:06:44 +0000 Subject: [PATCH 2/2] =?UTF-8?q?skills(objectstack-ui):=20pages.md=20embed?= =?UTF-8?q?=20scope=20=E2=80=94=20a=20package=20of=20the=20same=20artifact?= =?UTF-8?q?=20it=20declares;=20drop=20the=20scope-naming=20clause?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Contract review must-fix: embedScope resolves declaredDependencyIds through the artifact's own packages (bodyById), and a stack with no packages[] never reads manifest.dependencies, so a separately installed dependency is never searched; the rule-name miss carries no scope text. The sentence and the changeset prose now say "a package of the same artifact that it declares in manifest.dependencies (direct only; one-way)" and no longer claim the refusal names the scope. Co-authored-by: Claude Claude-Session: https://claude.ai/code/session_017xRBcUi2qhP1eKRbZJ1Ze1 --- .changeset/27209-pages-embed-scope.md | 4 ++-- skills/objectstack-ui/rules/pages.md | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.changeset/27209-pages-embed-scope.md b/.changeset/27209-pages-embed-scope.md index 37ee0cd7224..4eeaed829bd 100644 --- a/.changeset/27209-pages-embed-scope.md +++ b/.changeset/27209-pages-embed-scope.md @@ -2,9 +2,9 @@ '@objectstack/skills': patch --- -docs(skills/objectstack-ui): `pages.md` 〈Inline metadata views〉 states the embed scope `os build` enforces — this package or one it declares in `manifest.dependencies` +docs(skills/objectstack-ui): `pages.md` 〈Inline metadata views〉 states the embed scope `os build` enforces — this package or a package of the same artifact it declares in `manifest.dependencies` Clause-②: no Metadata-protocol: none -The build-lint sentence said a `metadata` fence's referenced object-rule / flow / permission set "must exist in this package". `docs/metadata-embed-ref` judges an embed against the package that ships the doc plus the packages it declares in `manifest.dependencies` (direct dependencies only; the declaration is one-way), so the rule the skill teaches now matches: an embed may name a declared dependency's item, anything else fails the build, and the refusal names the scope it judged. No platform behaviour changes. +The build-lint sentence said a `metadata` fence's referenced object-rule / flow / permission set "must exist in this package". `docs/metadata-embed-ref` judges an embed against the package that ships the doc plus the packages of the same artifact that it declares in `manifest.dependencies` (direct only; one-way), so the rule the skill teaches now matches: an embed may name such a declared package's item, and anything else fails the build. No platform behaviour changes. diff --git a/skills/objectstack-ui/rules/pages.md b/skills/objectstack-ui/rules/pages.md index b597aaf37ee..e5f2f9a7469 100644 --- a/skills/objectstack-ui/rules/pages.md +++ b/skills/objectstack-ui/rules/pages.md @@ -395,9 +395,9 @@ name: crm_task_status_flow `os build` lints every fence: `type` must be one of the three (typo → did-you-mean), `name` is required, `state_machine` also needs `object`, and the referenced object-rule / flow / permission set **must exist in this -package or one it declares in `manifest.dependencies`** (direct dependencies -only; one-way) — anything else fails the build, naming the scope it judged -(same posture as a broken link). At render time a missing or forbidden +package or in a package of the same artifact that it declares in +`manifest.dependencies`** (direct only; one-way) — anything else fails the +build (same posture as a broken link). At render time a missing or forbidden reference degrades to a placeholder, never a crash. Embedding an `object` (data model) or an arbitrary SDUI