Repository navigation
refactor(ui)!: retire @object-ui/plugin-ai and its three node types - #26365
objectstack-fleet[bot] wants to merge 18 commits into
Conversation
…(WIP) Part of the plugin-ai retirement (ruling A on the zero-consumer card). Claude-Session: https://claude.ai/code/session_01VBDBR9oS1MNUcjBVXds5D6 Co-authored-by: Claude <noreply@anthropic.com>
…WIP) Claude-Session: https://claude.ai/code/session_01VBDBR9oS1MNUcjBVXds5D6 Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VBDBR9oS1MNUcjBVXds5D6 Co-authored-by: Claude <noreply@anthropic.com>
…puts and the types pins (WIP) Claude-Session: https://claude.ai/code/session_01VBDBR9oS1MNUcjBVXds5D6 Co-authored-by: Claude <noreply@anthropic.com>
…he new retirement pin (WIP) Claude-Session: https://claude.ai/code/session_01VBDBR9oS1MNUcjBVXds5D6 Co-authored-by: Claude <noreply@anthropic.com>
…g note (WIP) Claude-Session: https://claude.ai/code/session_01VBDBR9oS1MNUcjBVXds5D6 Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VBDBR9oS1MNUcjBVXds5D6 Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VBDBR9oS1MNUcjBVXds5D6 Co-authored-by: Claude <noreply@anthropic.com>
… ledgers after the plugin-ai retirement (WIP) Claude-Session: https://claude.ai/code/session_01VBDBR9oS1MNUcjBVXds5D6 Co-authored-by: Claude <noreply@anthropic.com>
…xed group Claude-Session: https://claude.ai/code/session_01VBDBR9oS1MNUcjBVXds5D6 Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VBDBR9oS1MNUcjBVXds5D6 Co-authored-by: Claude <noreply@anthropic.com> # Conflicts: # scripts/sdui-manifest.sources/i18n.json # scripts/sdui-manifest.sources/types.json
…plugin-ai retirement Claude-Session: https://claude.ai/code/session_01VBDBR9oS1MNUcjBVXds5D6 Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VBDBR9oS1MNUcjBVXds5D6 Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VBDBR9oS1MNUcjBVXds5D6 Co-authored-by: Claude <noreply@anthropic.com>
|
Every other step in the job passed: no major bump, the level axis reads Generated by Claude Code |
Claude-Session: https://claude.ai/code/session_01VBDBR9oS1MNUcjBVXds5D6 Co-authored-by: Claude <noreply@anthropic.com> # Conflicts: # .changeset/25831-object-ui-18-1-to-merge.md # content/docs/protocol/backward-compatibility.mdx # scripts/publish-smoke-pack.mjs # scripts/sdui-manifest.sources/i18n.json # scripts/sdui-manifest.sources/types.json # ui/packages/plugin-ai/CHANGELOG.md # ui/packages/plugin-ai/package.json # ui/scripts/__tests__/package-files-exist.test.ts
Claude-Session: https://claude.ai/code/session_01VBDBR9oS1MNUcjBVXds5D6 Co-authored-by: Claude <noreply@anthropic.com>
|
The remaining red is Generated by Claude Code |
|
Ruling: the ADR-0087 gate on a whole-package deletion · letter A (a D9 whole-package clause) · maintainer 「同意」 2026-10-27T10:07Z Recorded by the director seat (summon #51 continuation, Execution: the spec lane that holds the gate (#26220, |
Claude-Session: https://claude.ai/code/session_01VBDBR9oS1MNUcjBVXds5D6 Co-authored-by: Claude <noreply@anthropic.com> # Conflicts: # ui/QUICK_REFERENCE.md # ui/README.md # ui/packages/plugin-ai/README.md # ui/scripts/__tests__/package-files-exist.test.ts # ui/scripts/markdown-test-inputs.mjs
|
Head d81562e merges
Generated by Claude Code |
Claude-Session: https://claude.ai/code/session_01VBDBR9oS1MNUcjBVXds5D6 Co-authored-by: Claude <noreply@anthropic.com>
Requested by Steve · project thread
Part of #25921 (the plugin-ai item only; the card's other items stay open).
Clause-②: no (narrowing)
Metadata-protocol: narrowed
Ruling-ref: #26365 (comment)
维护者速读
@object-ui/plugin-ai包;十个语言包删掉它的ai.*文案块;@object-ui/types里它的类型/zod 镜像改为@deprecated的never墓碑,三个节点类型(ai-form-assist/ai-recommendations/nl-query)改为按名拒收并给出处方。18.2.0是 plugin-ai 最后一次发布。ADR-0087 门禁已绿:按 feat(adr-0087): retire a deleted published package whole (PACKAGE#*, D9 amendment) #26766 的 D9 整包条款写成@object-ui/plugin-ai#*。唯一的红是有意的:待发 changeset26080里删了'@object-ui/plugin-ai': patch那一行(不删则changeset status退出码 1,发版失败),你已在项目线程确认(「同意」,2026-10-28T03:32Z)。Check Changeset 不在合并队列的九个必需检查里。ui/packages/types/src/zod/ai.zod.ts(拒收 arm 与 never 墓碑)、.changeset/25921-retire-plugin-ai.md(处方与 ADR-0087 标记)、.changeset/26080-readme-contributing-links.md(删掉的那一行)。pnpm --dir ui exec vitest run packages/types/src/__tests__/plugin-ai-retired-25921.test.ts,预期 17 条全绿:三个旧节点各自被按名拒收、提到 plugin-ai。What changes
ui/packages/plugin-ai/**(736 LOC of source plus its tests), itspnpm-lock.yamlimporter and itsui/vitest.config.mtsalias..changeset/config.json. Its line also leaves the pending.changeset/26080-readme-contributing-links.md: with it in placepnpm exec changeset statusexits 1 (Found changeset 26080-readme-contributing-links for package @object-ui/plugin-ai which is not in the workspace), and with it removed it exits 0. That edit is a deliberate correction of somebody else's pending note, socheck-empty-changesetstays red on it by design; see Acceptance notes.ai.*block (ai.nlQuery.*,ai.formAssist.*,ai.recommendations.*) is deleted from all ten packs, with its comment inen.ts. No other reader of those keys exists (repo-wide grep: 0 hits outside the packs).ui/packages/types/src/ai.tskeeps its nine exported names as@deprecatedneveraliases with the remedy, andAnySchemaloses the three node members. Inzod/ai.zod.tsthe three arms becomeretiredNodeType()refusal arms (RetiredAIFormAssistNodeSchema,RetiredAIRecommendationsNodeSchema,RetiredNLQueryNodeSchema), listed inAnyComponentSchemaand not exported from the barrel, the shape of thecloud:plan-statusandhtmlretirements. The eight published zod names (AIFormAssistSchemaand the rest,AIComponentSchemaincluded) stay exported as@deprecatedz.never()schemas that accept nothing. When the names leave the published face is docs/adr: a sunset rule for @deprecated tombstones — 574 tags (504 in packages/types, 640 'never' members) with no rule for when a tombstone leaves the authoring face #25912's sunset rule.zod/README.mdsays so.known-schema-types.tsregenerated withnode scripts/regenerate-known-schema-types.mjs(the three keys leave).ui/content/docs/plugins/plugin-ai.mdxand itsmeta.jsonentry, and the package row in the rootCONTRIBUTING.mdtable.mainby ci(sdui): retire the per-package SDUI manifest records; CI's regeneration holds freshness (#26137 PR B) #26367.node scripts/gen-sdui-manifest-node.mjsleavessdui.manifest.jsonunchanged (plugin-ai registered no public component)..changeset/25921-retire-plugin-ai.md:@object-ui/types,@object-ui/i18n,@object-ui/climinor, BREAKING, naming18.2.0as the last published version, the ADR-0087 markernot-required (runtime-export-retired @object-ui/plugin-ai#*)(ADR-0087 D9 whole-package clause, feat(adr-0087): retire a deleted published package whole (PACKAGE#*, D9 amendment) #26766), and one FROM / TO line naming the package.Follow-up, not here (Tier H):
skills/objectui/guides/project-setup.mdandskills/objectui/guides/page-builder.mdstill name@object-ui/plugin-ai. They are governed, so they go in a separate PR after this one.Forced test edits (each follows the deletion, none relaxes a check)
ui/packages/types/src/__tests__/plugin-ai-retired-25921.test.ts: compile-time absence fromAnySchemaand thenevernames, the named refusal for each literal with its remedy, a firing control (buttonstill accepted), a generic-path control for an unknown literal, and the eight zod names accepting nothing.ai-zod-arms-10859.test.ts,ai-node-faces-agree-10874.test.ts,ai-zero-read-members-retired-8178.test.ts(they pinned the arms and member tombstones of the three nodes) and the package's own five test files.ai-insights-retired-8800.test.ts: lit controls re-pointed at what the module still carries (theneverdeclarations, the refusal arm).zod-mirror-parity.test.ts: seven pairs out ofMIRRORS; the two runtime-slotKnownDriftentries out (51 entries / 87 keys, header history sentence added);EXPECTED_MIRROR_PAIRS204 to 197; the eleven new consts inEXCLUSIONSwith reasons.arm-named-export-8784.test.ts(threeABSENT_BY_DECISIONrows),any-component-emit-headroom-11573.test.ts(three inline arms replace the category union),component-docs-retired-handler-keys-7340.test.ts(31 to 29,ai.tsleaves;onDismissbecomes unambiguously retired),content-channel-family-d-9256.test.ts(thenl-queryrow, 31 to 30),content-channel-parser-tier-clause-10928.test.ts(two message sources remain),silence-clause-parser-tier-closure-10981.test.ts(non-vacuity probe moves toviews.ts).ui/packages/cli/src/__tests__/registered-types-validate-ratchet-10859.test.ts: the "armed" case becomes a by-name refusal case with a generic-path control; the README end-to-end case left with the README.ui/scripts/markdown-test-inputs.mjsfollows (two entries).clickableNonControlCensus-13461,iconOnlyButtonCensus-12143,runner-package-test-entry-3746,doc-version-claims;percent-storage-callers-11475loses its plugin-ai exclusion set and the case that read it.console-vite-alias-closure-4925.test.ts: its named negative control was plugin-ai; it is now@object-ui/cli, a published library with anexportsmap that the console neither imports nor aliases.select-type-check-scope.test.ts: its leaf-package fixture moves toplugin-markdown(same closure shape, no fields / dashboard / grid).Tests
pnpm --dir ui exec vitest run packages/types packages/i18n packages/cli scripts packages/components/src/__tests__: 942 files, 19881 passed, 0 failed. Console and CLI closure builds 71 / 71 and 62 / 62.main(e0535a3): the retirement pin,zod-mirror-parity, the cli ratchet,package-files-existand the markdown-input tests, 5 files, 132 / 132.RetiredNLQueryNodeSchemadeleted fromAnyComponentSchemainzod/index.zod.ts(scripts/ablation-replace.mjs) turns exactly the twonl-querycases of suite 1 red (2 failed, 15 passed of 17); restored, blob equals HEAD.pnpm --filter @objectstack/dogfood test) on db6ddb4: 297 files, 2528 passed, 0 failed.Acceptance notes
check-adr-0087-registration --base origin/mainpasses in CI:verified: @object-ui/plugin-ai#* (package, ui/packages/plugin-ai/package.json), under the D9 whole-package clause (ruling 6439038287, landed by feat(adr-0087): retire a deleted published package whole (PACKAGE#*, D9 amendment) #26766)..changeset/26080-readme-contributing-links.mdloses one line,'@object-ui/plugin-ai': patch; the README edit it described left with the package.check-empty-changesetreports it as a changed changeset this PR did not add, the DELIBERATE CORRECTION class. The maintainer confirmed it (「同意」, 2026-10-28T03:32Z; recorded in comment 6460230552) and chose to land with that one red.Check Changesetis not one of the queue's nine required contexts.@object-ui/plugin-ai: NOT MEASURED; the changeset carries the FROM / TO lines.plugin-aimentions underpackages/spec,packages/metadata-protocolandscripts/check-service-providers.mjsname the platform's own AI service plugin, not this package, and are untouched.Verification
package.jsondependents of@object-ui/plugin-ai;ui/apps/console/src/register-plugins.tsandui/apps/console/vite.config.tsname it 0 times, against 2 and 4 for@object-ui/plugin-markdown.node scripts/pm/dispatch-gates.mjs --ranat d81562e: 56 derived families, 56 run, 0 NOT-MEASURED. The one red ischeck-empty-changeset --base origin/main(the confirmed 26080 correction).pnpm exec changeset status: exit 0, plugin-ai not listed;check-changeset-fixed: the fixed group is in sync (108 public + 1 private).Check Changeset, red only on the 26080 correction.ui/.changeset/still name@object-ui/plugin-ai; the root changesets config does not read that directory (ui/AGENTS.md), so they are untouched.Generated by Claude Code
🤖 Generated with Claude Code
https://claude.ai/code/session_01VBDBR9oS1MNUcjBVXds5D6