Repository navigation
feat(spec): PLATFORM_TOOLS_BY_PACKAGE['service-ai'] lists read_package_doc and search_package_docs (#27002) - #27011
Conversation
…kage-doc tools (#27002) read_package_doc and search_package_docs, the service-ai tools cloud#3335 adds to the ask agent, join the registry in its alphabetical order, so a skill naming either resolves under ADR-0109 reference integrity. The lint rule's suite pins both directions: the two resolve, a third name shaped like them and registered by nobody is still reported. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QUs3BvjuoCPEwU3eTt6se6
📓 Docs Drift Check3 anchor(s) derived from 1 changed package(s); no hand-written page names any of them, so this run has nothing to list — not a clean bill of health. This check sees only pages that NAME a derived anchor: one that documents this change in prose, or enumerates it in an authoring dialect, names none and stays invisible to it on every run. What this run could not see
Coarse fallback — 147 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): Which tree this was computed onThis run read A worktree cut from an older # while this PR is open — GitHub drops the merge commit once it closes
git fetch origin afa981afe9d17aa6d4ea6571d5cf05104acb6cc4 && git checkout afa981afe9d17aa6d4ea6571d5cf05104acb6cc4
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 7eb613c39fb85cc1e4d0b658c9ecea4e45949c99 c203ef8349f6371f0b4fd79d15be3c1786e50f50 && git checkout -B drift-repro 7eb613c39fb85cc1e4d0b658c9ecea4e45949c99 && git merge --no-ff c203ef8349f6371f0b4fd79d15be3c1786e50f50
node scripts/docs-audit/affected-docs.mjs --json 7eb613c39fb85cc1e4d0b658c9ecea4e45949c99 |
Contract reviewServed-tier: ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgment
Implemented-by: VERDICT: FAIL |
…ols (#27002) The ui plugin-chatbot label-parity tests read PLATFORM_TOOLS_BY_PACKAGE from the in-tree spec, so every registry name needs a chatbot.tool.<name> label in all ten packs. Adds read_package_doc and search_package_docs as sentences in each language, and a pointer in the registry's maintenance comment. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QUs3BvjuoCPEwU3eTt6se6
Contract reviewServed-tier: Delta review: one commit after ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgment
Implemented-by: VERDICT: FAIL |
#27002) ui/.changeset is not read by the release; the root config owns the @object-ui/* fixed group. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QUs3BvjuoCPEwU3eTt6se6
Contract reviewServed-tier: Delta review: one commit after ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgment
Implemented-by: VERDICT: PASS |
|
Seat ACCEPT · The contract review at Landing: ready + auto-merge. Generated by Claude Code |
⛔ merge queue 构建失败 — 先分诊,再决定要不要重排队列构建 40619563635 红了。队列跑的是全量套件(PR 侧 CI 只跑 affected 子集), 分类: 失败的 job(日志抽取,best effort):
跨 PR 相同签名(24h,按失败测试文件聚合):
历史信号:
分诊清单:
Generated by Claude Code · merge-queue-triage workflow (#4859) |
|
Dequeue read · The queue's The timeout is already anchored on
No fix has landed yet to port. This is the one re-enqueue for this head: auto-merge is re-armed. Generated by Claude Code |
…ix for #27037) The case seeds RELATION_FILTER_ID_CAP (1,000) rows and deletes 1,001: 2.3 s alone, past the default 5 s on a loaded full-suite queue shard, which ejected #26960, #27011 and #27020 (#27037). The slowdown itself is #27004's (since #26930 a 1,001-row predicate delete is about 18x slower); this only budgets for it. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QUs3Bshfmr8srPY21BVS4u
⛔ merge queue 构建失败 — 先分诊,再决定要不要重排队列构建 40625587886 红了。队列跑的是全量套件(PR 侧 CI 只跑 affected 子集), 分类: 失败的 job(日志抽取,best effort):
跨 PR 相同签名(24h,按失败测试文件聚合):
历史信号:
分诊清单:
Generated by Claude Code · merge-queue-triage workflow (#4859) |
⛔ merge queue 构建失败 — 先分诊,再决定要不要重排队列构建 40627568790 红了。队列跑的是全量套件(PR 侧 CI 只跑 affected 子集), 分类: 失败的 job(日志抽取,best effort):
跨 PR 相同签名(24h,按失败测试文件聚合):
历史信号:
分诊清单:
Generated by Claude Code · merge-queue-triage workflow (#4859) |
…ix for #27037) The case seeds RELATION_FILTER_ID_CAP (1,000) rows and deletes 1,001: 2.3 s alone, past the default 5 s on a loaded full-suite queue shard, which ejected #26960, #27011 and #27020 (#27037). The slowdown itself is #27004's (since #26930 a 1,001-row predicate delete is about 18x slower); this only budgets for it. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QUs3Bshfmr8srPY21BVS4u (cherry picked from commit 6674ba8)
⛔ merge queue 构建失败 — 先分诊,再决定要不要重排队列构建 40641829713 红了。队列跑的是全量套件(PR 侧 CI 只跑 affected 子集), 分类: 失败的 job(日志抽取,best effort):
跨 PR 相同签名(24h,按失败测试文件聚合):
历史信号:
分诊清单:
Generated by Claude Code · merge-queue-triage workflow (#4859) |
Requested by Sam · project thread
Clause-②: yes (widening)
Metadata-protocol: added
Fixes #27002
维护者速读
PLATFORM_TOOLS_BY_PACKAGE['service-ai']加上read_package_doc和search_package_docs两个名字,按字母序插入,其余名字不动。ui 的十个语言包同时补上这两个工具的chatbot.tool.*文案(各语言的完整句子),因为 ui 的标签一致性测试直接读这张登记表。added,因为改动后 skill 的tools[]写这两个名字不再被 lint 判为虚构工具,即作者可写的取值多了两个;没有 schema 形状变化,没有导出增删。先例 fix(spec): list the five service-ai-studio tools the AI tool registry was omitting #16844 的 changeset 没有写这两行声明(当时还没有这条规则);本 PR 按现行 AGENTS.md 补上,changeset 为 minor。ui 的文案改动单独一条@object-ui/i18npatch changeset,声明为 Clause-② no / Metadata-protocol none。What changes
packages/spec/src/system/constants/platform-tool-names.ts: the two names in'service-ai', alphabetical (query_records<read_package_doc<search_knowledge<search_package_docs<visualize_data); the group's doc line names the pair.packages/lint/src/validate-ai-tool-references.test.ts: the behavioural pin, beside PLATFORM_TOOLS_BY_PACKAGE['service-ai-studio'] is missing five registered tools, so a skill naming any of them reads as fictional to validate/lint #16512's: a skill naming both resolves; a third name shaped like them (list_package_docs) and registered by nobody is still reported atskills[0].tools[2]..changeset/27002-service-ai-package-doc-tool-names.md:@objectstack/specminor, carrying both declaration lines.ui/packages/i18n/src/locales/{ar,de,en,es,fr,ja,ko,pt,ru,zh}.ts:chatbot.tool.read_package_docandchatbot.tool.search_package_docsin every pack, each a sentence in that language (en "Read the app guide" / "Search the app guides", zh 「阅读应用文档」/「在应用文档中查找」), alphabetical besidesearch_knowledge. Required byui/packages/plugin-chatbot'stoolLabels-locale-parity-7481andtoolLabels-sentences-12724, which read this registry from the in-tree spec..changeset/27002-chatbot-tool-labels-package-docs.md:@object-ui/i18npatch, Clause-② no, Metadata-protocol none (root.changeset/, which owns the@object-ui/*fixed group;ui/.changeset/is not read by the release).chatbot.tool.<name>label in every ui pack.Premise, measured
At
origin/main5e99bd936c, inplatform-tool-names.ts:package_doc0 occurrences (absence),search_knowledge1 (positive control).Verification
Head
29111be8a7(ui labels), underos-verify-lock:ui:packages/i18n/+plugin-chatbottoolLabels*tests: 91 files / 1,401 passed, 13 skipped, exit 0.ko'ssearch_package_docsline removed → both label tests red (ko is missing chatbot.tool entries: [ 'search_package_docs' ]); restored → 28 passed.Head
f70fec4289(registry), underos-verify-lock:pnpm --filter @objectstack/spec buildthencheck:generated: all 14 generated artifacts up to date (no export moved, only a const's value).pnpm --filter @objectstack/spec test: 738 files / 22,130 tests passed, exit 0.pnpm --filter @objectstack/spec typecheck: exit 0, test-layer ledger held.packages/lintvalidate-ai-tool-references.test.ts: 21 passed.HEAD~1(names absent; specdistrebuilt,search_package_docsin 0 built files) → the new lint case red (1 failed | 20 passed); restored toHEADand rebuilt (2 built files carry the name) → 21 passed.git status --porcelainclean after.node scripts/check-changeset-no-major.mjs --base 5e99bd936c: exit 0 (the level axis is PR-scoped, judged in CI).Downstream
service-aiplatform-tool-names conformance test passes at a cloud pin carrying this merge; seat 2 runs that pin round.crm_sales, notcrm_sales_opportunities. It becomes a post-deploy staging read.🤖 Generated with Claude Code
https://claude.ai/code/session_01QUs3BvjuoCPEwU3eTt6se6