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:405-406 calls a model-registry promptTemplate.system / .user "a CEL predicate" — those keys are the template dialect ({{var}}), and the AI domain has no CEL site at all #14797
Recorded by the skills lane seat (session session_01LraLgQVGq8egUwfYZpbYt1) from the #14794 flight (PR #14795), which measured it while removing the same false claim from skills/README.md:105 ("AI tool params" as a CEL site) and could not take it — no SKILL.md edit was in that flight's scope. Unassigned, bare, for triage.
What
skills/objectstack-ai/SKILL.md:404-407 at origin/main8f9ef6f7c8 (read 2026-09-03T02:11Z), under Verify your work:
It confirms the skill / tool / model metadata conforms to the protocol and that any CEL predicate parses and resolves — in this domain that is a model-registry promptTemplate.system / .user; ToolSchema carries no expression field of any kind.
The second clause is true (packages/spec/src/ai/tool.zod.ts matches cel|formula|expression zero times). The first is false: packages/spec/src/ai/model-registry.zod.ts:121-122 types system / user as TemplateExpressionInputSchema, which packages/spec/src/shared/expression.zod.ts:117-124 defines as { dialect: 'template', source } — {{var}} interpolation for "notification subjects/bodies, titleFormat, prompt templates". Not CEL, not a predicate. predicate occurs 0 times in model-registry.zod.ts.
So the sentence tells an author that os validate CEL-checks a prompt template. It does not; a {{var}} template is validated as a template. The AI domain's other real expression-typed site is the 5-field cron at packages/spec/src/ai/knowledge-source.zod.ts:28 — also not CEL — which the sentence omits.
Why it matters
Published, customer-loaded surface; same truth class the programme has been clearing (a declared mechanism described as something it is not). An author reading it may write a CEL predicate into a prompt template expecting the gate to catch mistakes, or wonder why a template's {{var}} is never "resolved" by CEL.
Likely resolution, not a decision
One clause in place: what os validate checks in this domain is the metadata shape plus the template dialect of promptTemplate.system / .user (and the cron on knowledge sources); there is no CEL predicate in the AI domain. Shrink-or-neutral inside skills/objectstack-ai/SKILL.md (ceiling row 5,476 after the #14305 flight; re-measure at claim). Governed skills/** ⇒ draft, human merge.
Recorded by the skills lane seat (session
session_01LraLgQVGq8egUwfYZpbYt1) from the #14794 flight (PR #14795), which measured it while removing the same false claim fromskills/README.md:105("AI tool params" as a CEL site) and could not take it — noSKILL.mdedit was in that flight's scope. Unassigned, bare, for triage.What
skills/objectstack-ai/SKILL.md:404-407atorigin/main8f9ef6f7c8(read 2026-09-03T02:11Z), under Verify your work:The second clause is true (
packages/spec/src/ai/tool.zod.tsmatchescel|formula|expressionzero times). The first is false:packages/spec/src/ai/model-registry.zod.ts:121-122typessystem/userasTemplateExpressionInputSchema, whichpackages/spec/src/shared/expression.zod.ts:117-124defines as{ dialect: 'template', source }—{{var}}interpolation for "notification subjects/bodies, titleFormat, prompt templates". Not CEL, not a predicate.predicateoccurs 0 times inmodel-registry.zod.ts.So the sentence tells an author that
os validateCEL-checks a prompt template. It does not; a{{var}}template is validated as a template. The AI domain's other real expression-typed site is the 5-field cron atpackages/spec/src/ai/knowledge-source.zod.ts:28— also not CEL — which the sentence omits.Why it matters
Published, customer-loaded surface; same truth class the programme has been clearing (a declared mechanism described as something it is not). An author reading it may write a CEL predicate into a prompt template expecting the gate to catch mistakes, or wonder why a template's
{{var}}is never "resolved" by CEL.Likely resolution, not a decision
One clause in place: what
os validatechecks in this domain is the metadata shape plus thetemplatedialect ofpromptTemplate.system/.user(and the cron on knowledge sources); there is no CEL predicate in the AI domain. Shrink-or-neutral insideskills/objectstack-ai/SKILL.md(ceiling row 5,476 after the #14305 flight; re-measure at claim). Governedskills/**⇒ draft, human merge.Verified
search_issues, 13 results): [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 (open,domain:spec— the ai reference index'sSKILL_MAP, a different defect), skills/README.md truth + routing sweep:OLD/NEW"evaluate tonullsince M9.5" is anchored nowhere and contradicts the formula skill; "AI tool params" is not a CEL site; the cross-skill routing list lacks the upgrade-vs-platform and objectui inbound decision points #14794 (open — the README half, being fixed by PR docs(skills): settle two false claims in skills/README.md and add three cross-skill routing bullets #14795), validateExpression's unknown-function refusal hands the author the dialect prescription - advice that cannot succeed on a source that is already bare CEL #13821 / Gate candidate: named-identifier liveness check over skills/** — a skill row citing a schema/field that greps to zero repo-wide is a red, not a sentence #13678 / objectstack-data skill teaches deleteBehavior:'set_null' on master_detail — wrong before #9689, a parse-time rejection after it #11409 (closed, other subjects). No card carries this sentence.Refs: #14794 · PR #14795 · #14305 (the ai flight) · #14462.