Repository navigation
fix(skills): four objectstack-platform eval cases agree with their own must_not_contain assertions - #27529
Conversation
…n must_not_contain assertions Evals 1, 2, 4 and 7 of skills/objectstack-platform/evals/config-plugins-ops.json refused a string their own expected_output spelled, so the reference answer graded as wrong. Eval 1 narrows its assertion to the key spelling `tableName:`; evals 2, 4 and 7 rephrase the warning without the refused literal. No assertion deleted; the file shrinks 1689 -> 1676 tokens under its unchanged 1690 ceiling. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017ihL2dPRZXfgE1A2Vct3FU
|
domain:skills#1 · marchtian · session_017ihL2dPRZXfgE1A2Vct3FU Contract reviewServed-tier: Reviewer: an independent agent at ① Derived judgments
② Semver level
③ Boundary flagsDev report = card comment 6494906404.
④ Design judgment
Must-fix: none. Should-fix: none in the Implemented-by: VERDICT: PASS |
|
domain:skills#1 · marchtian · session_017ihL2dPRZXfgE1A2Vct3FU 席位核对 — ACCEPT · #27455 · head
|
Requested by 田騏 · project thread
Fixes #27455
Clause-②: no
Metadata-protocol: none
维护者速读
skills/objectstack-platform/evals/config-plugins-ops.json四个用例(1、2、4、7)的标准答案与自身的must_not_contain断言不再互斥——用例 1 的断言收窄为键拼法tableName:;用例 2、4、7 的标准答案改写警句,不再逐字拼出被拒字串。另加一张@objectstack/skills的 patch changeset。skills/objectstack-platform/evals/config-plugins-ops.json用例 7 的expected_output(两处改写:role去冒号、具名平台集改为「no platform set」),其次用例 1 的tableName:收窄,再次用例 2。python3 -c 'import json;d=json.load(open("skills/objectstack-platform/evals/config-plugins-ops.json"));[print(e["id"],[s for s in e["assertions"].get("must_not_contain",[]) if s in e["expected_output"]]) for e in d["evals"]]',预期九行、每行的列表都是空的[](main 上第 1、2、4、7 行非空)。skills/**)——GOVERNED_APPROVERS账号一次 APPROVED review,其后由席位落地。What changes
One shipped fixture,
skills/objectstack-platform/evals/config-plugins-ops.json(ships in@objectstack/skills), and one patch changeset. Each of the four cases was judged from the skill text, per the card's Wanted: drop the refused literal from the reference answer when the answer only names it to warn, or narrow the assertion to the wrong form it was meant to catch.tableNameSKILL.mdline 116 ("never settableName"; also AGENTS.md Prime Directive 6) — the skill's own warning uses the bare word; the wrong form is the object keytableName:, the form its siblingsworkflows:/approvals:already use; reference answer unchangeddata:beforeInsert,onInstallreferences/plugin-hooks.mdlines 73–76 (a'data:beforeInsert'handler on the kernel bus registers and silently never fires); AGENTS.md Plugin pattern (the contract isinit/start/destroy; no install / enable / disable hooks) — both named only to warn, and the wrong forms have several spellings (method, property, call site), so no single narrowing holdsdata:*kernel hook registers and never fires", "No install / enable / disable hooks."; assertions unchanged@objectstack/adapter-SKILL.mdline 275 ("There are no@objectstack/adapter-*packages") — named only to warn; narrowing to a single-quoted import would miss the double-quotedpackage.jsondependency formadapter-*packages exist"; assertion unchangedrole:,admin_full_accessDemoStaffSchemarefusesroleas an alias ofposition(packages/spec/src/system/demo-staff.zod.tsline 71);SKILL.mdlines 438–440 ("a platform set such asadmin_full_accessis refused") —role:is already the key spelling;admin_full_accessis a value with the same quote-style leak as eval 4role(no colon) and says "no platform set" (the skill's own term); assertions unchanged501bfc69) eval 9, are unchanged byte for byte..changeset/27455-platform-eval-self-agreement.md:@objectstack/skillspatch, carrying the two declaration lines above.scripts/check-skills-token-ratchet.mjsis not lowered either: that script is outside this card's declared file surface, so the new headroom (14 tokens) is reported here, not spent or banked.Tests
No test file changes: nothing in the repo executes this fixture; its consumer is the skills eval grader that applies
must_contain/must_not_containas substrings to an answer (the card's repro models that). The diff touches no workspace package, so no package build or test is owed (local verification scope ① and ② are empty).The card's repro, before (origin/main ded67bf) and after (6f2257a)
Per-case cross-check after (no must_not_contain string in its own answer, every must_contain string present, JSON parses)
Acceptance notes
Tier H (
skills/**) readings, both required:scripts/check-skills-token-ratchet.mjs, ceiling 1690 unchanged, headroom 1 → 14).skills/objectstack-platform/**88041 → 87988 bytes; the sum of everyskills/*/SKILL.md4610 → 4610 lines (no SKILL.md touched); the whole authored bundle 207870 → 207857 tokens (ceiling sum 217474).Observations, noted and not filed:
must_not_containstring against the same case'sexpected_output(ui/scripts/check-skill-eval-tokens.mjsdeliberately shape-checksmust_not_containonly). Triage ruled that lint a separate card; the seat carries it.@objectstack/adapter-; its answer never spelled the string, so it is untouched.Verification
Readings taken on the final head
6f2257ad(git rev-parse --short HEAD), in the worktree, afterpnpm install --frozen-lockfile.node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderived 42 commands from the diff against the merge baseded67bfb. Each ran with its exit code captured before any pipe: 37 exit 0; 5 exit 3 (PREREQUISITE NOT MET — no packagedist/in the tree; the diff touches no package, so the closure build is not owed locally and CI runs these):pnpm --filter @objectstack/lint run check:doc-formula-expressions,pnpm check:dts-closure,pnpm check:dual-build-cjs-loads,pnpm check:lean-entry-closure,pnpm check:sourcemap-no-sources-content. Reconciliationnode scripts/pm/dispatch-gates.mjs --ran FILE --repo objectstack-ai/objectstack: "42 derived famil(ies) accounted for — 37 run, 5 NOT-MEASURED (5 DERIVED from a recorded exit 3)", exit 0.node scripts/check-skills-token-ratchet.mjs: exit 0 — "skills/objectstack-platform/evals/config-plugins-ops.json is 1676 tokens (ceiling 1690; headroom 14)";--self-test: exit 0, "79 cases pass".pnpm check:nul-bytesexit 0.!in the title and no(narrowing)arm.Gate ledger (exit code, command) on 6f2257a
Generated by Claude Code