Skip to content

spec: PLATFORM_TOOLS_BY_PACKAGE['service-ai-studio'] lists delete_package, with chatbot.tool.delete_package labels in every ui locale (blocks cloud#3656) #31020

Closed

Description

@objectstack-fleet

repo:cloud#3 · hotlong · session_01Q4EjjRhUZjdy8VXs6Kkur2

Filing gate: (b) a contract gap with a named consumer. objectstack-ai/cloud#3656's PR #3686 adds the delete_package build tool, which only ever stages a person-confirmed removal. Cloud's platform-tool-names-conformance.test.ts is red on it until the framework registry lists the tool. Precedent: #27002 and eca7cd2 (cloud#3565's record-write tool). Lane: domain:cloud.

维护者速读

cloud 给 AI 和 MCP 加了一个「删除环境里搭的应用」的工具(只发起删除,由人确认)。平台有一张「平台工具名单」,cloud 的测试要求每个工具都登记在册、并且每种语言都有显示名。这张卡在名单里加上 delete_package,补上各语言的显示名。

Expected

  • packages/spec/src/system/constants/platform-tool-names.ts: add delete_package to PLATFORM_TOOLS_BY_PACKAGE['service-ai-studio'].
  • chatbot.tool.delete_package labels in every ui/packages/i18n locale pack, following the existing tool-label pattern and gates (check:i18n).
  • Whatever spec conformance tests pin the list.

Acceptance

  • Spec tests and i18n gates green. Cloud's conformance test turns green once the cloud pin moves past this card.

Suggested-grade: p1 (blocks a p1).

Dedupe (2026-11-06): PLATFORM_TOOLS_BY_PACKAGE → #27002, #16512 (closed, other tools). None for delete_package.

Activity

  1. added
    enhancementNew feature or request
    priority:p1High: required for production / M2
    pm:queueReady for the PM dispatch loop
    repo:cloudCard routed whole to the cloud PM: needs cloud code, a producer or a fact (cloud owns it to closure)
    domain:cloudTouches cloud: the whole card is the cloud PM's (repo:cloud seat); no objectstack lane claims it
    on Nov 6, 2026
  2. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    repo:cloud#3 · hotlong · session_01Q4EjjRhUZjdy8VXs6Kkur2

    Claim: PM loop round R7 · 2026-11-06T18:26Z
    Session: session_01Q4EjjRhUZjdy8VXs6Kkur2
    Account: hotlong (the seat's linked user as GET /user answers it; always the card's assignee)
    Branch: claude/issue-31020-platform-tool-delete-package
    Worktree: /home/user/w31020/objectstack-issue-31020
    Domain: domain:cloud (the cloud lane's objectstack face; precedent #27002)
    Seat: repo:cloud#3
    File surface: packages/spec/src/system/constants/platform-tool-names.ts, ui/packages/i18n/src/namespaces/** (the chatbot.tool.delete_package label in every locale), the spec tests that pin the list, and a changeset
    Container & model: S, mode:subagent, model: TIER_DEFAULT, effort: medium
    Clause-②: no — a registry constant gains one tool name and labels; re-judged on the diff
    Metadata-protocol: none
    Responsibility: the platform tool registry lists cloud's delete_package | none | objectstack-ai/cloud#3656 (PR #3686 is red on the conformance test until this lands and the pin moves)
    Thread-read: none
    Premise: holds — delete_package is absent from PLATFORM_TOOLS_BY_PACKAGE['service-ai-studio'] at objectstack origin/main 7d9f1e973e (the cloud#3656 dev's reading). Card filed by this seat; p1, maintainer: 「只处理 p1 p2 卡片」.
    Serial constraints cleared: no in-flight claim on platform-tool-names.ts or the chatbot tool labels.
    Carrier: objectstack.

  3. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 6, 2026
  4. added
    pm:blockingDerived cache from the Blocked-by reverse index: open card with open dependents — never hand-set
    on Nov 6, 2026
  5. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    repo:cloud#3 · hotlong · session_01Q4EjjRhUZjdy8VXs6Kkur2
    os-dev-report

    {
      "issue": 31020,
      "status": "done",
      "branch": "claude/issue-31020-platform-tool-delete-package",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/31037",
      "session": "session_01Q4EjjRhUZjdy8VXs6Kkur2",
      "premise_still_valid": true,
      "summary": "PLATFORM_TOOLS_BY_PACKAGE['service-ai-studio'] now lists delete_package in sorted order after delete_field, and the group docblock says the tool only stages a person-confirmed removal of an environment-built package (cloud#3656). chatbot.tool.delete_package is added to all ten ui/packages/i18n/src/locales packs, worded like the delete_field/create_package siblings (en 'Delete a package', zh '删除一个应用包', plus de/es/fr/pt/ru/ar/ja/ko translations, no English placeholders). Two patch changesets (@objectstack/spec, @object-ui/i18n) carry Clause-②: no and Metadata-protocol: none, following the eca7cd2008 precedent. The file set is the precedent's registry + locales + changesets; the existing spec pin (platform-tool-names.test.ts) and the ui label-parity/sentence suites already read the registry, so no new pin file was needed. Draft PR #31037 opened via relay, consumer objectstack-ai/cloud#3686 named.",
      "tests": "head 97f93b5503. spec: vitest platform-tool-names.test.ts Test Files 1 passed, Tests 5 passed. ui: vitest toolLabels-locale-parity-7481 + toolLabels-sentences-12724 + packages/i18n/ → Test Files 99 passed (99), Tests 1549 passed / 13 skipped, lock VERDICT command-exit 0, after rebuilding spec dist (confirmed dist chunk carries 'delete_package', so the parity suite read the new name). First ui run was 16 files red on 'Failed to resolve entry for package @objectstack/formula' (unbuilt dep in the fresh worktree), cleared by building @object-ui/i18n^... closure (VERDICT 0). Typecheck: spec typecheck exit 0, @object-ui/i18n type-check exit 0. No ablation: data-only diff (one registry entry + label strings), no tested behaviour changed.",
      "gates": "dispatch-gates --commands --repo objectstack-ai/objectstack at 97f93b5503: 77 families; all run under a runner capturing exit before any pipe; --ran reconciliation exit 0: 77 derived, 74 run, 3 NOT-MEASURED, 0 UNRUN. 73 exit 0 (incl. spec check:api-surface, check:authorable-surface, check:docs, check:export-origins, check:liveness, check:nul-bytes, check:doc-authoring, changeset gates). NOT MEASURED (exit 3 PREREQUISITE NOT MET, unbuilt dists in fresh worktree): lint check:doc-formula-expressions, check:dual-build-cjs-loads, check:lean-entry-closure. NOT MEASURED (exit 1, prerequisite): pnpm --dir ui exec vitest run scripts/ — 169/170 files pass, the one failure is unit-registry-absence-collision refusing on 37 'Failed to resolve entry for package @objectstack/client' (unbuilt). A closure build to measure those four was queued 18m+4m on the verify lock (three queue-timeout 99s, holder pid 24520 running issue-30922/chain5.sh, alive, held 1627s+) — declared narrowing, CI owns them. Beyond the derivation: ui check:i18n-keys/drift/dead-keys exit 0; check-platform-checklist --changed-from origin/main exit 0 (0 anchored files); root check:i18n and check:i18n-coverage NOT MEASURED (exit 3, CLI unbuilt; they gate server-side generated bundles not touched here). PR check-runs at report time: Governed Surface Queue Guard success; Lint/Type Check/Check Changeset/PR-body guards in_progress.",
      "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
      "mcp_calls": "0",
      "api_writes": "2 — POST /repos/objectstack-ai/objectstack/dispatches (fleet-write relay pr_create → PR #31037, read-back byte-identical; one earlier attempt refused by write-pace exit 10 before sending, nothing written); POST /repos/objectstack-ai/objectstack/issues/31020/comments (this os-dev-report via post-stamped). Plus 2 git pushes (empty-branch probe, then 97f93b5503), not REST.",
      "open_questions": [],
      "security_findings": "none",
      "out_of_scope_findings": [],
      "deviations": "1) Pushed the WIP commit before running the gates (AGENTS.md: push a WIP commit before every minutes-long step; os-dev wins over the dispatch's 'gates before first push'); the pre-push hook passed. 2) The derived ui scripts vitest family and the other gates ran outside the verify lock (gate runner), only builds/tests named by the dispatch went through the lock. 3) The claim's file surface named ui/packages/i18n/src/namespaces/**; the chatbot.tool labels actually live in ui/packages/i18n/src/locales/*.ts (as the registry docblock and precedent say), which is where the edit landed. 4) PR body carries the AGENTS.md single session-URL footer rather than the harness's extra trailer lines."
    }
  6. objectstack-fleet commented on Nov 7, 2026

    @objectstack-fleet
    ContributorAuthor

    repo:cloud#3 · hotlong · session_01Q4EjjRhUZjdy8VXs6Kkur2
    os-dev-report

    {
      "issue": 31020,
      "status": "done",
      "branch": "claude/issue-31020-platform-tool-delete-package",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/31037",
      "session": "session_01Q4EjjRhUZjdy8VXs6Kkur2",
      "premise_still_valid": true,
      "summary": "Rework round for the dirty merge state. Recreated the worktree from origin/claude/issue-31020-platform-tool-delete-package (97f93b5503) and ran git merge origin/main (3f61e4f8fb); no rebase, no force-push. Merge commit e3724bd976 completed with no textual conflict: main had renamed locales zh.ts to zh-Hans.ts and pt.ts to pt-BR.ts and added a generated zh-Hant.ts, and git carried the delete_package line through both renames. platform-tool-names.ts merged unchanged; delete_package is still in sorted order. The new zh-Hant pack is generated from zh-Hans (gen:zh-hant, pinned by zh-hant-generated.test.ts) and was missing the label, so follow-up commit dd844a9d1c regenerates it. That adds exactly one line, delete_package: '刪除一個應用包', and rewords the i18n changeset from 'all ten packs' to 'every pack'. Head is now dd844a9d1c, pushed. GitHub reports mergeable true, state blocked (checks pending).",
      "tests": "head dd844a9d1c, after rebuilding the @object-ui/i18n^... closure (lock VERDICT 0; the spec dist chunk carries delete_package). spec platform-tool-names.test.ts: Test Files 1 passed, Tests 5 passed, VERDICT command-exit 0. ui toolLabels-locale-parity-7481 + toolLabels-sentences-12724 + i18n zh-hant-generated: Test Files 3 passed (3), Tests 39 passed (39), VERDICT command-exit 0.",
      "gates": "exit codes captured before any pipe, at dd844a9d1c: ui check:i18n-keys exit 0 (en pack 4329 keys), check:i18n-drift exit 0, check:i18n-dead-keys exit 0, check:nul-bytes exit 0. The full derived union was not re-run this round; it was run in the first round at 97f93b5503. CI re-runs every family on dd844a9d1c, and those check-runs were pending at report time.",
      "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
      "mcp_calls": "0",
      "api_writes": "1 this round — POST /repos/objectstack-ai/objectstack/issues/31020/comments (this report via post-stamped). Plus 1 git push (97f93b5503..dd844a9d1c), which is not a REST write.",
      "open_questions": [],
      "security_findings": "none",
      "out_of_scope_findings": [],
      "deviations": "Auto-merge was already armed on the PR when I picked this up. I did not touch it."
    }
  7. objectstack-fleet commented on Nov 7, 2026

    @objectstack-fleet
    ContributorAuthor

    repo:cloud#3 · hotlong · session_01Q4EjjRhUZjdy8VXs6Kkur2

    LANDED · 2026-11-07T03:40Z

    reading value
    PR #31037 merged 2026-11-07T03:38Z through the merge queue, merge commit cf4b9bf768
    this card closed completed by Fixes #31020

    State: pm:dispatched removed. delete_package is in PLATFORM_TOOLS_BY_PACKAGE[service-ai-studio], with labels in all 11 locales. Unblocked:

  8. removed
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    pm:blockingDerived cache from the Blocked-by reverse index: open card with open dependents — never hand-set
    on Nov 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

domain:cloudTouches cloud: the whole card is the cloud PM's (repo:cloud seat); no objectstack lane claims itenhancementNew feature or requestpriority:p1High: required for production / M2repo:cloudCard routed whole to the cloud PM: needs cloud code, a producer or a fact (cloud owns it to closure)

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions