Repository navigation
docs(skills): objectstack-formula eval case 4 names the refused date forms without spelling its own must_not_contain strings - #26978
Conversation
…forms without spelling its own must_not_contain strings Case 4's expected_output carried both strings its own must_not_contain refuses (`new Date(` and `today() + `), so a reference-grade answer was graded wrong. The reference now says "never a JS `Date` / `Date.now()`" and "never date arithmetic on `today()` (it faults)"; every assertion and fact stays, the file keeps its 5407 bytes, and a per-case cross-check of all seven cases reports 0 failures. Patch changeset for @objectstack/skills. Claude-Session: https://claude.ai/code/session_01ADHkmPQ8p3cVKear7Mchi2 Co-authored-by: Claude <noreply@anthropic.com>
席位核对ACCEPT ·
|
Contract reviewServed-tier: Director seat (summon #52, ledger objectstack#12708), summoned by the ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgment
Implemented-by: VERDICT: PASS Generated by Claude Code |
Requested by Steve · project thread
Fixes #26814
Clause-②: no
Metadata-protocol: none
维护者速读
skills/objectstack-formula/evals/cel-predicates-formulas.json第 4 例的参考答案改写——不再把自己must_not_contain要拒的两个字符串(JS 的 Date 构造、today()加数字)原样拼出来,改为点名其形态;七个断言、全部事实一字不少,文件字节数不变(5407 B),token 棘轮行不动;附@objectstack/skillspatch changeset。skills/objectstack-formula/evals/cel-predicates-formulas.json(第 4 例expected_output一行)。node scripts/check-skills-token-ratchet.mjs,预期看到该文件1352 tokens (ceiling 1352; headroom 0)且总判定 ✓。skills/**受管面,Tier H,保持 draft 等 GOVERNED_APPROVERS 批准;席位不 ready/不入队)。What changes
expected_outputofskills/objectstack-formula/evals/cel-predicates-formulas.jsonno longer spells its ownmust_not_containstrings. The two phrases that carried them are reworded; everything else in the case is byte-identical:new Date()/Date.now()" → "never a JSDate/Date.now()"today() + 45(date arithmetic faults)" → "never date arithmetic ontoday()(it faults)"close_date: celdaysFromNow(45)``, the determinism gate (twoos buildruns byte-identical), `daysBetween(today(), record.close_date)`, the `record.close_date - today()` duration-stored-as-`{}` trap, and the date-arithmetic fault. `must_contain` / `must_not_contain` are untouched..changeset/26814-formula-eval-case4-self-consistent.md,@objectstack/skillspatch (the evals ship in the published catalog).Why
Case 4 refused
new Date(andtoday() +in an answer while its own reference answer contained both, so an answer that matched the reference was graded wrong. Found by the contract review of PR #26810 (card #26814).Tests
Per-case cross-check over the file (each case: no
must_not_containstring inside its ownexpected_output, everymust_containstring present), atorigin/main912076f and at this head:JSON.parseof the file succeeds at this head.Skills readings (
skills/**diff — whole-file and whole-package, before → after)evals/cel-predicates-formulas.jsonlines / bytes / tokensskills/*/SKILL.mdlines / bytesskills/*/evals/*.jsonlines / bytesToken =
ceil(bytes / 4), the conventionscripts/check-skills-token-ratchet.mjsdeclares. Ceiling row for the file stays at 1352 (headroom 0, unchanged).Acceptance notes
Verification
Local gate subset at head f853185 (
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack, no paths; 42 derived commands run serially, each exit code captured before any pipe):42 / 42 exit 0 · `--ran` reconciliation: 42 derived, 42 run, 0 NOT-MEASURED, 0 UNRUN
Build closure first:
bash scripts/pm/os-verify-lock.sh -c 'pnpm build --concurrency=2'→VERDICT command-exit 0 · held the lock 841s (14m01s).Every family CI runs on the PR (
Lint & Repo Gates,TypeScript Type Check,Check Changeset,Governed Surface Queue Guard, …) is read from this PR's check-runs, not re-run locally.test:repois not in the local subset (it is CI's; this diff edits no test). Dogfood battery: n/a (no!in the title, no(narrowing)arm).Generated by Claude Code