Repository navigation
docs(skills): objectstack-i18n teaches the books translation group, with an eval for a two-language doc book - #27024
Conversation
… with an eval for a two-language doc book The top-level group list names `books` with its three keys, by `Book.name` and the group's stable `key`; eval 9 expects the book label plus a group label by key for a two-language manual and never a `pages.*` key. Five eval sentences that restated a rule the skill already teaches pay for most of the case; the eval's ratchet row is raised by the measured remainder (1642 -> 1790) under the standing ruling recorded beside it. Claude-Session: https://claude.ai/code/session_01ADHkmPLgCH4kXgfdFGF4Z2 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 |
⛔ merge queue 构建失败 — 先分诊,再决定要不要重排队列构建 40623576592 红了。队列跑的是全量套件(PR 侧 CI 只跑 affected 子集), 分类: 失败的 job(日志抽取,best effort):
跨 PR 相同签名(24h,按失败测试文件聚合):
历史信号:
分诊清单:
Generated by Claude Code · merge-queue-triage workflow (#4859) |
|
Queue build 40623576592 red, dequeued on
Generated by Claude Code |
Requested by Steve · project thread
Fixes #26820
Clause-②: no
Metadata-protocol: none
维护者速读
objectstack-i18n技能的顶层分组清单补上books(文档手册的书名、简介和各章节标题按读者语言显示),给出键的拼法;评测文件新增第 9 题(双语手册),并删去 5 句与技能正文重复的评测句子来付 token 账,余额按实测把该评测文件的上限从 1642 提到 1790。books翻译分组,但技能不教它,照技能写 zh-CN 包的 agent 会让文档侧栏停在英文,或把键错放到pages下。skills/objectstack-i18n/SKILL.md(第 169–181 行那一段)、skills/objectstack-i18n/evals/bundles-locales-coverage.json(第 9 题与 5 处删句)、scripts/check-skills-token-ratchet.mjs(该评测行的算式注释)。node scripts/check-skills-token-ratchet.mjs,预期打印 82 个文件均在上限内、退出 0。skills/**为 Tier H,席位不会 ready、入队或开自动合并)。What changes
skills/objectstack-i18n/SKILL.md: the "Top-level groups alongsideobjects" paragraph now namesbooks, the group the spec added so a doc book's title and section titles follow the reader's locale. The entry spells the three keys the spec declares, read offpackages/spec/src/system/translation.zod.ts(thebooksrecord) andsystem/book.zod.tsonorigin/main:books.{book}.label/.descriptionbyBook.name, andbooks.{book}.groups.{group_key}.labelby each group's stablekey, never its position, with one spelled example (books.crm_manual.groups.getting_started.label). It says the pages themselves localize throughdoc.translationsand that the inlinetranslationsmap a book once carried stays retired (theBOOK_TRANSLATIONS_RETIREDprescription). The existing sentence "os i18n extract --no-objects-onlyscaffolds every group above butmessagesandsettingsCommon" now coversbookstoo, which is whatwalkBooksinpackages/cli/src/utils/i18n-extract.tsdoes.skills/objectstack-i18n/evals/bundles-locales-coverage.json: case 9, a two-languagecrm_manualbook whose sidebar is still English. The ideal answer spells the book label and thegetting_startedgroup label by key and saysos i18n extract --no-objects-onlyseeds them;must_containpinsbooks,groups,getting_started,doc.translations;must_not_containpinspages.crm_manual(a key invented underpages) andsections.getting_started(thesectionsalias the spec points atgroups).SKILL.md"No ICU MessageFormat" section; the case's own{count, pluralpin stays.o.*dialect is rejected on this door too" (56 B) →SKILL.md"The Retiredo.*Shape" section; the case's owno: {pin stays.extract --checkis the separate freshness gate" (50 B) →SKILL.md"os i18n extract --check— freshness, not coverage" section.SKILL.md'spicklistsentry in the top-level group list ("every field referencing the picklist inherits them").pages.*.componentskey." (39 B) → the case's owncomponents.open_blockpin.ceil(7157 / 4) = 1790, zero headroom; the row comment inscripts/check-skills-token-ratchet.mjscarries the same arithmetic.SKILL.mdhad headroom: 5485 → 5571 tokens against its ceiling of 6333 (stamp line excluded), so its row is unchanged..changeset/26820-i18n-skill-books-group.md:@objectstack/skillspatch (the package's dist is built fromskills/**).No forced test edits: nothing but the eval JSON and the ratchet row changed outside
SKILL.md.Tests
must_containstring present in its ownexpected_output, nomust_not_containstring inside it — 0 violations.JSON.parseof the file succeeds.node scripts/check-skills-token-ratchet.mjs:✓ check-skills-token-ratchet: 82 authored bundle file(s) within their ceilings; 10 generator-owned file(s) measured, not ratcheted.(exit 0);--self-test:✓ check-skills-token-ratchet self-test: 79 cases pass.(exit 0).skills/**, one ratchet row, one changeset), and no behaviour a test pins changed, so no ablation.Acceptance notes
ceil(utf8 bytes / 4), the sibling gate's convention):SKILL.md521 → 524 lines, 5485 → 5571 tokens (ceiling 6333);evals/bundles-locales-coverage.json85 → 95 lines, 1642 → 1790 tokens (ceiling 1642 → 1790); whole package, all 11SKILL.mdfiles: 4610 → 4613 lines, 56462 → 56549 tokens; wholeskills/tree 19271 → 19284 lines.app-crm,app-showcase) declares abooksgroup yet, so theSKILL.mdexample is a spelled key rather than a line quoted from a shipped bundle, as theinlineTitleand report-block lines are.check:skill-docsandcheck:skill-refsare@objectstack/specscripts (pnpm --filter @objectstack/spec run check:skill-docs), not root scripts; the derived list names the former.Verification
All at head
cd559297, onorigin/main7eb613c3(the branch base; main had not moved when the list was derived).node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackprinted 63 commands for this change set (4 paths, 63 changed lines, under the 3000 human-merge threshold). Every one ran locally (the 8 dist-reading ones afterturbo run build --filter='./packages/**'underos-verify-lock, VERDICT command-exit 0, 7m26s), each exit code captured before any pipe: 63 of 63 exit 0.node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --ran FILE→✓ dispatch-gates --ran: 63 derived famil(ies) accounted for — 63 run, 0 NOT-MEASURED (a DERIVED zero — all 63 recorded an exit code and none of them is 3).✓ check-skills-token-ratchet: 82 authored bundle file(s) within their ceilings;✓ check-skills-token-ratchet self-test: 79 cases pass.;✓ check-skill-id-lint: 104 file(s) clean;check-nul-bytes: OK (scanned 21762 text file(s) …);✓ dispatch-gates self-test (fast tier): 1935 cases pass; 7 slow section(s) deferred.dispatch-gates --tier: bothskills/**paths hit clause ① (MANDATORY CONTRACT_REVIEW_TIER, no one-line exit), as the claim records.The 63 commands and their exit codes (the `--ran` ledger)
🤖 Generated with Claude Code
https://claude.ai/code/session_01ADHkmPLgCH4kXgfdFGF4Z2
Generated by Claude Code