Skip to content

docs(skills): the automation skill's CEL table is the bare-callable public subset - #15524

Merged
os-zhuang merged 1 commit into
mainfrom
claude/issue-15520-automation-skill-callable-wording
Sep 5, 2026
Merged

os-zhuang merged 1 commit into
mainfrom
claude/issue-15520-automation-skill-callable-wording

Conversation

@claude

@claude claude Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Fixes #15520

skills/objectstack-automation/SKILL.md repeated the completeness claim the formula skill has just had corrected, one skill over: conditions are bare CEL and "only the stdlib is callable", pointing at the formula skill for "the full table". Both halves under-promise. The CEL environment also resolves receiver methods called on a value, so the catalogue is the bare-callable public subset — the membership rule packages/formula/src/validate.ts carries as load-bearing — and not everything that resolves. Wrong in the safe direction, so no author was broken by it; corrected anyway.

The correction is one clause, in this skill's voice and much shorter than the formula skill's passage, because that skill now carries the full statement and this file keeps pointing at it. Receiver method names and the four withheld bare primitives are deliberately not enumerated here — the table's owner states them once.

⛔ No edit to skills/objectstack-formula/**, to packages/**, or to any other skill. references/_index.md is generator-owned and was not hand-edited.

Before and after

site before after
L351, the item's bold lead 4. Conditions are bare CEL — only the stdlib is callable. 4. Conditions are bare CEL — the stdlib is what you may call bare.
L354, the pointer closing the same item …plus CEL built-ins (has, size, int, string, …) — see objectstack-formula for the full table. …plus CEL built-ins (has, size, int, string, …) — see objectstack-formula for that table: it is CEL_STDLIB_FUNCTIONS, the bare-callable public subset, so receiver methods (called on a value, never bare) are not in it.

The rest of the item is unchanged and stays true: an unknown function name and a brace-wrapped field ref both fail the build.

Every occurrence — the whole skill scanned, the near misses named

Scanned skills/objectstack-automation/ entire (SKILL.md, references/, evals/) for the claim family: only the stdlib, only … callable, are callable, full table, canonical list, exhaustive, documents them all, complete list, full list, all the functions/built-ins, stdlib.

site verdict
SKILL.md L351 and L354 the two false claims — both corrected above, and they are all of them
SKILL.md L35, the intro callout points at objectstack-formula "for the CEL contract, stdlib and legacy → CEL table" — a pointer carrying no completeness word; left as it is
SKILL.md L291 {round(x)}/{abs(x)} "mirror the CEL stdlib 1:1" — a claim about the single-brace VALUE-interpolation dialect, a different surface with its own named supported set; not a member of this family
SKILL.md L645, L945, and evals/approvals/test-revise-loop.md "the full loop", "the full list of Zod schemas", "the full ADR-0044 shape" — unrelated uses of the word
references/_index.md generator-owned; carries no such claim, so nothing needed a hand-edit and none was made

Token ratchet — under the ceiling, no raise

tokens ceiling headroom
before 12269 12768 499
after 12305 12768 463

The correction costs +36 tokens and the ceiling is untouched. Measured with node scripts/check-skills-token-ratchet.mjs before and after:

  • ✓ check-skills-token-ratchet: skills/objectstack-automation/SKILL.md is 12305 tokens (ceiling 12768; headroom 463).
  • ✓ check-skills-token-ratchet: 36 authored bundle file(s) within their ceilings; 10 generator-owned file(s) measured, not ratcheted.

Gates — the derived family, run at fe35dc0f7

node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --commands derives 21 commands for this change set. All 21 ran at the final commit fe35dc0f7 with a clean working tree, each exit code captured before any pipe; all 21 exited 0.

  • ✓ dispatch-gates --ran: 21 derived famil(ies) accounted for — 21 run, 0 NOT-MEASURED.
  • ✓ check-skill-frame-sync: 2 copies of the decision frame are structurally isomorphic across 2 files
  • check-skill-identifier-liveness OK — Leg 1: 465 citation(s) over 46 published file(s) checked against 95764 implementation word tokens (3 ledgered exemption(s)); Leg 2: 8 registered exhaustive section(s), 0 ledgered gap(s). — the identifier this PR newly cites, CEL_STDLIB_FUNCTIONS, is a live implementation name rather than a stale one.
  • check-corpus-claim-drift: OK, no new claim sites beside a pinned spelling.
  • ✓ check-doc-formula-expressions: 22 record-scoped formula example(s) across 428 files / 1371 TS blocks judged clean by @objectstack/formula. — this family first exited 3, PREREQUISITE NOT MET: it imports compiled output, and an install does not build it. The @objectstack/formula and @objectstack/lint build closures were built through the shared verification lock (VERDICT command-exit 0), after which the gate ran and passed. The 3 measured nothing and was not a finding.
  • pnpm check:nul-bytes green, plus a direct control-byte scan over the edited file (grep -naP over the control ranges): no match.

Landing

node scripts/pm/check-governed-merges.mjs --test skills/objectstack-automation/SKILL.md exits 3:

  • ⛔ GOVERNED — a human merge is the review record for this PR.
  • skills/** ×1 — the published skills catalog

So this stays a draft: not flipped ready, not enqueued, no auto-merge armed, and no approving review from the authoring seat.

skip-changeset applies by the rule rather than by the example list — this PR publishes nothing from any package; no workspace package.json ships skills/, so the catalogue is not a package artifact.

Review notes

Two things a wording change like this can get wrong, both cheap to check: that the sentence agrees with the formula skill's corrected passage where it matters — bare-callability as the membership rule, receiver methods called on a value and therefore absent from that table — and that this file does not quietly become a second place where the withheld primitives are listed. It names none of them, by design; one published statement of them, in the skill that owns the table.

🤖 Generated with Claude Code

https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox


Generated by Claude Code

…ublic subset

`skills/objectstack-automation/SKILL.md` repeated the completeness claim just
corrected one skill over: conditions are bare CEL and "only the stdlib is
callable", pointing at the formula skill for "the full table". Both halves
under-promise — the CEL environment also resolves receiver methods called on a
value, and the catalogue is the advertised bare-callable public subset rather
than everything that resolves.

Corrected in one clause, in this skill's voice: the stdlib is what you may call
bare, the referenced table is `CEL_STDLIB_FUNCTIONS` — the bare-callable public
subset — and receiver methods are called on a value, never bare. The pointer to
objectstack-formula stays; that skill now carries the full statement. No method
or withheld-primitive enumeration is duplicated here.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox
@os-zhuang
os-zhuang marked this pull request as ready for review September 5, 2026 01:28
@os-zhuang
os-zhuang enabled auto-merge September 5, 2026 01:28
@os-zhuang
os-zhuang added this pull request to the merge queue Sep 5, 2026
Merged via the queue into main with commit 53edffe Sep 5, 2026
36 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-15520-automation-skill-callable-wording branch September 5, 2026 02:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/xs skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[finding] skills/objectstack-automation/SKILL.md repeats the corrected completeness claim — "only the stdlib is callable" and "the full table"

2 participants