Repository navigation
feat(spec,i18n): register the delete_package platform tool and label it in every pack (cloud#3656) - #31037
feat(spec,i18n): register the delete_package platform tool and label it in every pack (cloud#3656)#31037objectstack-fleet[bot] wants to merge 1 commit into
Conversation
…it in every pack PLATFORM_TOOLS_BY_PACKAGE['service-ai-studio'] lists delete_package, the cloud build tool that only stages a person-confirmed removal of a package built in the environment (cloud#3656). Every ui locale pack gains its chatbot.tool.delete_package step label. Claude-Session: https://claude.ai/code/session_01Q4EjjRhUZjdy8VXs6Kkur2 Co-authored-by: Claude <noreply@anthropic.com>
📓 Docs Drift CheckThis PR changes 1 package(s): ⛔ 1 release-owned page(s) name something this change touched. These are read-only:
What this run could not see
Coarse fallback — 171 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 e4c9c98b3840f43ab212a68fe7b45f180ef39f18 && git checkout e4c9c98b3840f43ab212a68fe7b45f180ef39f18
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 90523379a149e85afa1ed49286a3abaa95075c42 97f93b5503d18dc18d5c4dc24aa443ddc7f0f68c && git checkout -B drift-repro 90523379a149e85afa1ed49286a3abaa95075c42 && git merge --no-ff 97f93b5503d18dc18d5c4dc24aa443ddc7f0f68c
node scripts/docs-audit/affected-docs.mjs --json 90523379a149e85afa1ed49286a3abaa95075c42
|
|
repo:cloud#3 · hotlong · session_01Q4EjjRhUZjdy8VXs6Kkur2 Contract-review-claim: session_01Q4EjjRhUZjdy8VXs6Kkur2 · head 97f93b5 · 2026-11-06T19:30Z Face: schema. |
|
repo:cloud#3 · hotlong · session_01Q4EjjRhUZjdy8VXs6Kkur2 Contract reviewServed-tier: Rendered 2026-11-06T19:38Z on the schema face ( ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgmentFor the one
No must-fix found. Implemented-by: VERDICT: PASS |
|
repo:cloud#3 · hotlong · session_01Q4EjjRhUZjdy8VXs6Kkur2 席位核对 · ACCEPT · 2026-11-06T19:56ZHead-sha:
|
Fixes #31020
Clause-②: no
Metadata-protocol: none
维护者速读
PLATFORM_TOOLS_BY_PACKAGE['service-ai-studio']登记了delete_package,十种界面语言都补上了这一步的显示名(中文「删除一个应用包」)。packages/spec/src/system/constants/platform-tool-names.ts(新名字的位置与注释);ui/packages/i18n/src/locales/zh.ts(中文措辞);ui/packages/i18n/src/locales/en.ts。cd ui && pnpm exec vitest run packages/plugin-chatbot/src/__tests__/toolLabels-locale-parity-7481.test.ts,预期全部通过(每种语言都有delete_package的显示名)。What changes
PLATFORM_TOOLS_BY_PACKAGE['service-ai-studio']gainsdelete_packagein its sorted place (afterdelete_field), and the group's docblock says what the tool is: it only stages the removal of a package built in the environment, and a person confirms before anything is deleted (objectstack-ai/cloud#3656).PLATFORM_PROVIDED_TOOL_NAMEStherefore carries it, so a skill whosetools[]namesdelete_packageresolves under ADR-0109 reference integrity.chatbot.tool.delete_packagein all tenui/packages/i18n/src/locales/packs, worded like the siblingdelete_field/create_packagelabels: en "Delete a package", zh 「删除一个应用包」, ar "حذف حزمة", de "Ein Paket löschen", es "Eliminar un paquete", fr "Supprimer un paquet", ja 「パッケージを削除する」, ko 「패키지 삭제하기」, pt "Excluir um pacote", ru "Удалить пакет".patchchangesets (@objectstack/spec,@object-ui/i18n), each carrying both declaration lines.Consumer: objectstack-ai/cloud#3686 (cloud#3656) — its
platform-tool-names-conformance.test.tsgoes green once a cloud pin round carries this change. Same file set as the cloud record-write precedent (eca7cd2) minus its chatbot card work, which this tool does not need.Tests
packages/spec/src/system/constants/platform-tool-names.test.ts— 5/5 (snake_case, no cross-package collision, no family-prefix shadowing, sorted groups).ui—toolLabels-locale-parity-7481,toolLabels-sentences-12724and the wholepackages/i18n/suite: Test Files 99 passed (99), Tests 1549 passed / 13 skipped, against a rebuilt specdistthat carriesdelete_package(so the parity suite read the new name from the registry, not a stale build).pnpm --filter @objectstack/spec run typecheckandpnpm --filter @object-ui/i18n run type-check: exit 0.Acceptance notes
delete_packageis not added toPLATFORM_DESTRUCTIVE_TOOL_NAMESinpackages/mcp/src/mcp-server-runtime.ts. That set is a by-name fallback for platform tools that carry norequiresConfirmation; a tool outside it gets nodestructiveHint, which MCP reads as its own defaulttrue.remove_sample_data(the precedent's destructive tool) is not in it either. No change needed for this card.Verification
All readings at head
97f93b5503, objectstack, worktree offorigin/main7d9f1e973e.Derived gate union — 77 families, reconciled with dispatch-gates --ran (exit 0)
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --ranover a record carrying every command's exit code, captured before any pipe: 77 derived, 74 run, 3 NOT-MEASURED, 0 UNRUN.packages/specchecks incl.check:api-surface,check:authorable-surface,check:docs,check:export-origins,check:liveness;check:nul-bytes,check:doc-authoring,check:issue-citations,check:published-files, the changeset gates, and the rest of the list).pnpm --filter @objectstack/lint run check:doc-formula-expressions,pnpm check:dual-build-cjs-loads,pnpm check:lean-entry-closure. They read builtdist/of packages this diff does not touch; CI'sLint & Repo Gatesruns them on a built tree.pnpm --dir ui exec vitest run scripts/: 169/170 files pass; the one failure isunit-registry-absence-collisionrefusing because@objectstack/clienthas nodist/here (37 import failures, all that one package). CI'sTest UIowns it.queue-timeout99s behind another run) and did not acquire it — a declared narrowing, not a pass.Beyond the derivation
pnpm --dir ui run check:i18n-keys,check:i18n-drift,check:i18n-dead-keys: exit 0.pnpm --filter @objectstack/spec run typecheck,pnpm --filter @object-ui/i18n run type-check: exit 0.node scripts/check-platform-checklist.mjs --changed-from origin/main: exit 0 (no anchored file in the change set).pnpm check:i18n,pnpm check:i18n-coverage: NOT MEASURED (exit 3, workspace CLI not built). Both gate the server-side*.generated.tstranslation bundles and example configs, none of which this diff touches; the ui locale packs are covered by the suites under Tests.Generated by Claude Code