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
[finding] skills/objectstack-ai/SKILL.md:396 tells the author to run os validate after "a model-registry entry" — a record os validate cannot see, which :332 in the same file already says (agents / tools / skills are the only AI stack collections) #14836
Recorded by the skills lane seat (session session_01LraLgQVGq8egUwfYZpbYt1) from the #14797 flight (PR #14819), whose dev measured it while fixing the false CEL clause one sentence below and left it alone because the triage's scope there was terminal on that one clause. Unassigned, bare, for triage; the landing file is the published skills/objectstack-ai/SKILL.md (governed skills/**).
What
skills/objectstack-ai/SKILL.md at origin/main2d40f91468 (read 2026-09-03T04:40Z):
:396-397 — under Verify your work: "After authoring a *.skill.ts / *.tool.ts or a model-registry entry, run the author-time gate before reporting done:" followed by the os validate fence. :404 then opens with "It confirms the skill / tool / model metadata conforms to the protocol" — the same "model" claim, kept verbatim by PR docs(skills): the AI domain has no CEL site — correct the os validate clause in objectstack-ai #14819 because it was outside that card's scope.
:332 — the central-registration row of the same file: "agents / tools / skills are the only AI stack collections — knowledge sources have none, agents are platform-supplied, and tools is not the default path".
The two lines contradict each other today: :332 says a model-registry entry is not a stack collection; :396 and :404 tell the author that os validate checks one.
What the tree does
packages/spec/src/stack.zod.ts:561-563 — the AI collections of ObjectStackDefinitionSchema are exactly agents, tools, skills (the doc block at :533-557 explains why). A grep of that file for modelRegist, knowledge or promptTemplate returns nothing.
ModelRegistrySchema (packages/spec/src/ai/model-registry.zod.ts) is referenced in its own file (3) and its test (5) and nowhere else under packages/**/*.ts — no stack key, no lint rule, no CLI command reaches it.
os validate parses ObjectStackDefinitionSchema and runs the authoring rules (packages/cli/src/commands/validate.ts:7-16, :39-41). A model-registry entry is therefore not an input os validate can validate at all: the sentence promises a check that has no path to run.
Why it matters
Same truth class as #14797, one sentence above its fix: an AI author reads "run os validate after a model-registry entry", runs it, sees green, and concludes the entry was checked. Nothing checked it. ADR-0049 enforce-or-remove shape on a published instruction rather than on a schema.
Likely resolution, not a decision
Drop "or a model-registry entry" from :396 and "/ model" from :404 (shrink, two short deletions, no re-wrap needed), so the section names only the two surfaces os validate can see. If a model-registry entry is meant to be author-validated by something, that something should be named from a measured path — and none was found. ⛔ Not a re-open of #14797's scope; ⛔ skills/README.md untouched; #14462 (the generated reference index's SKILL_MAP) is a different defect in a different lane's file.
Recorded by the skills lane seat (session
session_01LraLgQVGq8egUwfYZpbYt1) from the #14797 flight (PR #14819), whose dev measured it while fixing the false CEL clause one sentence below and left it alone because the triage's scope there was terminal on that one clause. Unassigned, bare, for triage; the landing file is the publishedskills/objectstack-ai/SKILL.md(governedskills/**).What
skills/objectstack-ai/SKILL.mdatorigin/main2d40f91468(read 2026-09-03T04:40Z)::396-397— under Verify your work: "After authoring a*.skill.ts/*.tool.tsor a model-registry entry, run the author-time gate before reporting done:" followed by theos validatefence.:404then opens with "It confirms the skill / tool / model metadata conforms to the protocol" — the same "model" claim, kept verbatim by PR docs(skills): the AI domain has no CEL site — correct the os validate clause in objectstack-ai #14819 because it was outside that card's scope.:332— the central-registration row of the same file: "agents/tools/skillsare the only AI stack collections — knowledge sources have none, agents are platform-supplied, andtoolsis not the default path".The two lines contradict each other today:
:332says a model-registry entry is not a stack collection;:396and:404tell the author thatos validatechecks one.What the tree does
packages/spec/src/stack.zod.ts:561-563— the AI collections ofObjectStackDefinitionSchemaare exactlyagents,tools,skills(the doc block at:533-557explains why). A grep of that file formodelRegist,knowledgeorpromptTemplatereturns nothing.ModelRegistrySchema(packages/spec/src/ai/model-registry.zod.ts) is referenced in its own file (3) and its test (5) and nowhere else underpackages/**/*.ts— no stack key, no lint rule, no CLI command reaches it.os validateparsesObjectStackDefinitionSchemaand runs the authoring rules (packages/cli/src/commands/validate.ts:7-16,:39-41). A model-registry entry is therefore not an inputos validatecan validate at all: the sentence promises a check that has no path to run.Why it matters
Same truth class as #14797, one sentence above its fix: an AI author reads "run
os validateafter a model-registry entry", runs it, sees green, and concludes the entry was checked. Nothing checked it. ADR-0049 enforce-or-remove shape on a published instruction rather than on a schema.Likely resolution, not a decision
Drop "or a model-registry entry" from
:396and "/ model" from:404(shrink, two short deletions, no re-wrap needed), so the section names only the two surfacesos validatecan see. If a model-registry entry is meant to be author-validated by something, that something should be named from a measured path — and none was found. ⛔ Not a re-open of #14797's scope; ⛔skills/README.mduntouched; #14462 (the generated reference index'sSKILL_MAP) is a different defect in a different lane's file.Verified
search_issues, 15 results read): [finding]skills/objectstack-ai/SKILL.md:405-406calls a model-registrypromptTemplate.system/.user"a CEL predicate" — those keys are thetemplatedialect ({{var}}), and the AI domain has no CEL site at all #14797 (the CEL clause, this finding's neighbour — fixed by PR docs(skills): the AI domain has no CEL site — correct the os validate clause in objectstack-ai #14819), [finding] Theobjectstack-aigenerated reference index advertises 6 schemas the SKILL.md never teaches and omits the one it names —SKILL_MAPinbuild-skill-references.tsis unreconciled with the body #14462 / [finding] Theobjectstack-automationreference index routes to the ADR-0020-retiredstate-machine.zod.tsand omits both per-nodeconfigschemas —SKILL_MAPinbuild-skill-references.ts#14466 / [finding] Theobjectstack-i18nreference index routes 5 of its 7 transitive pointers at schemas unreachable from a translation bundle — the closure step inbuild-skill-references.ts#14565 (build-skill-references.tsreference indexes — different file), [finding]skills/objectstack-aitells authorsmetadata_assistantis "not vocabulary" while the platform's own Studio app pinsdefaultAgent: 'metadata_assistant'#14461 (metadata_assistant— different claim), Skills optimization flight — skills/objectstack-ai: RESTRUCTURE (≈ −2,300 tok, −29%) — 26% of the file teaches the agent surface it forbids its readers, the flagshipdefineSkillexample declares four tools that resolve to nothing, and the open-edition MCP path (the only AI path without a cloud licence) is taught nowhere #14305 (closed — the restructure flight that produced the current section). No open card carries the:396/:332contradiction.['skills/objectstack-ai/SKILL.md', 6806]atscripts/check-skills-token-ratchet.mjs:286; the file is 5,475 tokens after PR docs(skills): the AI domain has no CEL site — correct the os validate clause in objectstack-ai #14819 — the deletion is shrink-only under the lane rule.Refs: #14797 · PR #14819 · #14305 · ADR-0049.