Repository navigation
retire the zero-consumer surface: nine dead modules (2,211 LOC), plugin-ai, runner's publish flag, test-only reset helpers on public barrels, the providers trio, 122 dead i18n keys, root orphans #25921
Description
Ruled (plugin-ai): 6398569691 · letter A · 2026-10-25T13:58:53Z (retire @object-ui/plugin-ai: package, locale ai.* block, fixed-group entry, types/zod mirrors tombstoned; minor changeset with a breaking note)
维护者速读
一批每项都是 S、合起来可观的退役:9 个整文件模块共 2,211 行只有自己的 barrel 引用;@object-ui/plugin-ai 发布着却没有任何加载者(console 的 register-plugins.ts 不含它);runner 是无入口的 Vite 应用却 private: false 且在 fixed 发版组;公共 barrel 上有 9 个 reset*ForTesting 类助手;@object-ui/providers 与 @object-ui/react 同名的 provider 三件套只有一个示例在用;check-i18n-dead-keys 报告 122 个 CONFIRMED 死键(×10 语种);根目录若干孤儿。按 objectui#11608→#11616(PartialSchema)先例逐包一个 ! changeset。不加新门禁。
Measured (2026-10-24, HEAD 7981384; every absence claim ran with a positive control, SchemaRenderer 1,030 hits / plugin-map 144 files)
- Whole modules with zero consumers outside the package AND zero in-package importers (only the barrel line):
core/src/builder/schema-builder.ts451 LOC,core/src/protocols/DndProtocol.ts237,KeyboardProtocol.ts222,SharingProtocol.ts212 (their names appear only inside comments intypes/src/index.ts),react/src/hooks/useFocusManagement.ts248,useFocusTrap.ts138,usePageTransition.ts187,useSchemaPersistence.ts373,collaboration/src/LiveCursors.tsx143 — total 2,211 LOC. Repo-wide barrel census: 1,422 of 3,578 exported names have zero non-test code consumers outside their package (636 value exports, 402 of those also undocumented); worst ratios plugin-gantt 22/35, plugin-designer 16/38, collaboration 19/40, mobile 18/51. @object-ui/plugin-ai(736 LOC; registersai-form-assist,ai-recommendations,nl-query): 0 source importers; absent fromapps/console/src/register-plugins.tsandapps/console/vite.config.ts; owns anai.*block in every locale pack (26 lines inen.ts); listed in.changeset/config.json's fixed group.packages/runner: a Vite app (main.tsx,App.tsx, no barrel),private: false, nomain/exports, in the fixed release group;packages/cli/src/__tests__/workspace-vite.test.tsasserts it is not aliased.- Test-only helpers on public barrels with 0 non-test consumers:
resetColumnIdentityWarnings,resetRetiredSortSpellingReports,resetActionKeyWarnings,resetDashboardFilterWarnings,resetReferenceKeyWarnings(core),resetRuntimeConfigForTesting(app-shell),resetInflightGetsForTesting(types),__clearRecordEditableCache(plugin-detail),clearSharedDiscoveryCache(data-objectstack). @object-ui/providersexportsDataSourceProvider,MetadataProvider,ThemeProvider(+hooks), the same six names@object-ui/reactexports with different implementations; the providers trio's only non-test importer isexamples/byo-backend-console/src/App.tsx(react's: 21 files);one-authority-per-exported-name-6273.test.tscarries hand-written exemptions for the collision. Its real content isUploadProvider(450 of 617 LOC; fields 11 sites) andcreateObjectStackUploadAdapter— fetch logic outsidedata-*, against AGENTS §3.node scripts/check-i18n-dead-keys.mjsprints "391 candidate(s) … 122 CONFIRMED (no textual footprint anywhere else in the repo either), 269 NEEDS-REVIEW" (e.g.appDesigner.*20 keys,preview.changes.typeCount.*22); the script is wired to no workflow.- Root / config orphans:
scripts/eval-console.mjs(hard-coded/Users/zhuangjianguo/.copilot/...output path) andscripts/release-bump.cjsreferenced by nothing;paseo.json(0 references; itssetupteachespnpm iagainst the frozen-lockfile rule);typedoc.json+typedocdevDep +docs:api(no workflow);lazy-test.mjs(only an exemption glob incheck-lint-rule-coverage.mjs);playwright.import-harness.config.tsandplaywright.import-console.config.ts(1 spec each, no workflow);mswdeclared in root, plugin-form, plugin-grid with 0 imports pluspublic/mockServiceWorker.js;apps/consoledevDeps@dnd-kit/core|sortable|utilitiesandautoprefixerwith 0 references;docs/CONSOLE-STREAMLINING-SUMMARY.mdnames two packages that do not exist (@object-ui/routing,@object-ui/console-components).
Recommendation (each S; one PR per package or group)
- Delete the nine modules and their barrel lines (one
!changeset per package); then the per-package zero-reference batches starting with gantt, designer, collaboration, mobile. -
plugin-ai:maintainer decision — retire (package, locale block, fixed-group entry) or wire it inRuled A (6398569691): retire the package, the locale block and the fixed-group entry; tombstone the types/zod mirrors.register-plugins.tslikeplugin-markdown. -
runner:private: true, move underapps/orexamples/, drop from the fixed group. - Move the nine
reset*helpers into@object-ui/test-supportor tag them@internaland strip in the dts build. -
providers: delete the trio and the test exemptions; point the byo example at@object-ui/react; foldUploadProviderinto fields and the upload adapter into data-objectstack, then retire the package. - One PR deleting the 122 CONFIRMED dead keys from all ten packs (read each key's screen first, as the tool asks; CONFIRMED only).
- Delete the root orphans and the unused declarations listed above; update
skills/objectui/guides/testing.md, which still teaches msw.
Benefit: at least 2,200 source lines, about 1,220 translated strings, two packages out of the release group, nine public symbols, four root files and two Playwright configs. External npm consumers are 未实测; rollback is a revert per item.
Refs: objectui#11608, objectui#11616, objectui#12083, objectui#12058, objectui#12428, objectui#3530, objectui#3650.
Filed by the read-only whole-repo review session https://claude.ai/code/session_01BDtwYUWhLGyWLzYQjZ95Cf on 2026-10-24; the maintainer approved filing (「同意,创建任务」). Full evidence files sit in that session's scratchpad (objectui-review-report.md, findings-*.md). ⛔ Not a claim; for triage to grade and route. Graded; the plugin-ai bullet is ruled (see the first line).
Activity
objectstack-fleet commentedon Oct 24, 2026
Triage: first grade —
tech-debt·priority:p3·domain:ui·area:devpath·pm:queue· triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-24T15:00Z⛔ Not a claim, ⛔ not a dispatch.
findingcomes off.PartialSchemaexport, which had no reader; a census pin keeps it gone (objectui#11608) objectui#11616 precedent:runnerset toprivate: trueand out of the fixed group;reset*ForTestinghelpers off the public barrels;providerstrio;plugin-ai's fate (retire it, or wire it inregister-plugins.ts) cuts or keeps a product surface. It goes to the maintainer, and it stays out of these PRs until ruled.Generated by Claude Code
objectstack-fleet commentedon Oct 25, 2026
Claim: PM loop round 4 · 2026-10-25T04:45Z
Session:
session_011yfYeuX2ptMSCcYZiq61tS(card thread 「清理无人使用的导出与模块」, dispatched by thedomain:uiseat 4 sessionsession_01XWGTsmqrtrt1Zqh1ioWqsT)Account:
os-elon-muskBranch:
claude/project-thread-u9kgfd(platform-assigned)Worktree:
objectui-issue-13453Domain:
domain:uiSeat:
domain:ui#4File surface (triage
6385727878's in-scope list only; one PR per package or group is fine, all on this branch in sequence):core/src/builder/schema-builder.ts,core/src/protocols/{Dnd,Keyboard,Sharing}Protocol.ts,react/src/hooks/{useFocusManagement,useFocusTrap,usePageTransition,useSchemaPersistence}.ts,collaboration/src/LiveCursors.tsx(plus the comment mentions intypes/src/index.ts);packages/runner/package.json→private: true, and its entry out of.changeset/config.json's fixed group;reset*ForTesting-style helpers off the public barrels (core ×5, app-shell, types, plugin-detail), moved to@object-ui/test-supportor tagged@internal, whichever the repo's existing pattern is;@object-ui/providerstrio (DataSourceProvider,MetadataProvider,ThemeProvider+ hooks), the hand-written exemptions inone-authority-per-exported-name-6273.test.ts, andexamples/byo-backend-console/src/App.tsxrepointed at@object-ui/react;(Stop on breach; explain in the report.)
⛔ Not in this claim:
@object-ui/plugin-ai: retire or wire it is the maintainer's call;UploadProvider/ upload-adapter folding and retiring the providers package;clearSharedDiscoveryCacheindata-objectstack: seat 1's objectui#13442 holdspackages/data-objectstack/src/**, so it waits for that card;Container & model:
M, card thread,model: default tier (no path-derived mandate),effort: highClause-②: no (nothing added a consumer or author can target)
Metadata-protocol: none (code exports, not metadata). Removing a published export is still breaking for an npm consumer: per objectui's version policy, each changeset is
minorwith the removal named, nevermajor. Measure external consumers where you can (npm dependents); otherwise record them NOT MEASURED.Responsibility:
published barrels carry dead modules, test-only helpers and a duplicate provider trio; runner is published with no entry | delete or internalise them | every consumer reading the public API, and the release groupThread-read: 6385727878
Premise: holds as filed on HEAD
7981384. Re-measure every zero-consumer claim onmainbefore deleting, with a positive control, as the filing did.Serial constraints cleared: seat 1's objectui#13442 (
data-objectstack/src/**,core/src/actions/**, list/view/grid), security(components): the ui 'html' renderer injects schema.html unsanitised — the spec declares no html component; retire the type objectui#13449 (components/src/renderers/basic/**,types/src/data-display*) and security(core): WidgetRegistry loads a widget from source.url through new Function('url', 'return import(url)') — the runtime dynamic import AGENTS.md #6 forbids; retire the module source objectui#13450 (core/src/registry/WidgetRegistry.ts,types/src/widget.ts, cli, create-plugin) are not touched by the surface above; checktypes/src/index.tsagainst security(core): WidgetRegistry loads a widget from source.url through new Function('url', 'return import(url)') — the runtime dynamic import AGENTS.md #6 forbids; retire the module source objectui#13450 before editing it. Seat 4's console: four routed developer/system pages import no i18n at all (ApiConsolePage, PublicFormsPage, IntegrationsPage, AiPendingActionsPage) and DatasourceResourcePage has 17 English literals — 233 hard-coded strings #25916 pass 2 owns the locale packs for now.Writes: all PR, comment and label writes go only through objectstack's relay (
scripts/pm/fleet-write); never write with GitHub MCP.objectstack-fleet commentedon Oct 25, 2026
Claim amendment ·
domain:ui#4· 2026-10-25T04:58Z · amends claim6393574403resetActionKeyWarningsstays out. It lives incore/src/actions/actionKeys.tsand reaches the core barrel throughcore/src/actions/index.ts(export *), and seat 1's objectui#13442 holdscore/src/actions/**. It waits for that card, asclearSharedDiscoveryCachedoes. The other four core helpers sit incore/src/utilsand come offcore/src/index.ts.skills/objectui/guides/project-setup.mdteachesDataSourceProvider/MetadataProvider/ThemeProviderfrom@object-ui/providers, and calls@object-ui/runnera "universal runtime";skills/objectui/guides/architecture.mddoes the same.skills/**is governed, so this PR is Tier H (it waits for GOVERNED_APPROVERS). It opens from this card's branch, restarted onmain, after the code PR merges. The code PR stays Tier S and names both files under a follow-up line. An objectui merge publishes nothing until a human runs the release, so the gap between the two merges ships nothing stale.Generated by Claude Code
objectstack-fleet commentedon Oct 25, 2026
Claim amendment 2 ·
domain:ui#4· 2026-10-25T05:27Z · amends claim6393574403and amendment6393680911The two PRs are re-cut along the governed line. The dev measured that deleting the providers trio turns
scripts/__tests__/check-skills-paths.test.tsred. The cause is.claude/skills/objectui-contributor/guides/console-development.md, which namespackages/providers/src/MetadataProvider.tsx. So whichever PR deletes the trio must also edit a governed.claude/**file.PR 1, Tier S, lands under the maintainer's standing word: the nine modules,
runnersetprivate: trueand taken out of the fixed group, and the reset helpers off the public barrels. It contains no providers change and no.claude/**orskills/**edit.PR 2, Tier H, waits for GOVERNED_APPROVERS:
.claude/skills/objectui-contributor/guides/console-development.mdsentence;skills/objectui/guides/project-setup.mdandarchitecture.md, which still teach the trio and therunner"universal runtime".It opens from this card's branch, restarted on
main, after PR 1 merges.This keeps everything that needs no governed approval from waiting on one that does. Clause-② and Metadata-protocol are unchanged (no / none).
Generated by Claude Code
docs(quick-reference): count runner among the private packages (#13453)
14 remaining items
objectstack-fleet commentedon Oct 26, 2026
Claim amendment (seat
domain:ui#1, 2026-10-26T14:36Z): this amends the claim6416579691and the amendment6418068972. It is append-only, and their other lines stand.Clause-②, replaced: yes. The exported type
TranslationKeysnarrows: it istypeof en(ui/packages/i18n/src/locales/en.ts), re-exported from@object-ui/i18n, and it loses the 92 deleted members. Nothing in this repository reads them (dev's report 6418700724), but a published type gets narrower, so this is not "no exported type change". Precedent: objectui#4730 and its successors retired message keys from the same packs aspatch(theRETIRED_OBJECT_VIEW_KEYSledger). The seat records a TIER_DEFAULT contract review on the PR before landing. The changeset's and the PR body'sClause-②lines are corrected toyes (…)in the go-round, when the PR takes its turn on i18n.objectstack-fleet commentedon Oct 26, 2026
Claim amendment (seat
domain:ui#1, 2026-10-26T14:43Z): this amends the claim6416579691and its amendments. It is append-only.The PR becomes the i18n batch. At the maintainer's word in the project (scheduling optimisations are the seat's call), PR #26158 on
claude/project-thread-tfdip1takes in three already-reviewed PRs on the same locale packs, as merges in this order: #26040 (Fixes #25874, components + i18n), #26044 (Part of #25886, app-shell + i18n) and #26048 (Part of #25889, i18n + plugin-map). It then mergesorigin/mainonce, after #26045 (merged at 2026-10-26T14:42Z), regenerates once, and enters the queue once. The queue squash-merges, so separate PRs, stacked or not, would each conflict onscripts/sdui-manifest.sources/i18n.jsonand need four serial rounds.File surface, widened: the union of the four PRs' files, plus
scripts/sdui-manifest.sources/{i18n,components,plugin-map}.json. Each source PR keeps its own changeset file. The batch PR body lists the four source PRs, all asPart of. The seat closes #25874 and #26040 when the batch lands. Seat 2 closes #26044 and #26048 and keeps its cards. #26055 is not in the batch.objectstack-fleet commentedon Oct 26, 2026
席位核对 · Landed partial + release · seat
domain:ui#1· 2026-10-26T21:14ZThe dead i18n keys item landed in #26158 (merged 2026-10-26T16:46Z, Part of #25921). It deleted 92 of the 122 CONFIRMED keys from all ten locale packs. 30 are kept on purpose: 28
_one/_otherplural forms that i18next reads, plusconsole.ai.agentLabels.dataChatandmetadataAssistant. The seat's patrol half-state sweep found that this note was never posted.Still open on this card:
plugin-ai;None of these is in flight, so the claim
6416579691and its amendments are released, and the card returns topm:queueat its p3 grade. The next dispatch takes one item per PR, with a fresh zero-consumer measurement at claim.objectstack-fleet commentedon Oct 26, 2026
Claim: PM loop round 1
Session:
session_017iXjUm1rujwDk7f3KT1Pkk(seat); implementing card threadsession_01VBDBR9oS1MNUcjBVXds5D6Account:
os-steveBranch:
claude/project-thread-vl2c07(platform-assigned card-thread branch; a card thread can push only its assigned branch, and the name carries no issue number, so this claim is the identity record)Worktree: the card thread's own container
Domain:
domain:uiSeat:
domain:ui#1File surface: partial,
Part of #25921, the plugin-ai item only: deleteui/packages/plugin-ai/**; theai.*block in the tenui/packages/i18n/src/locales/*packs; the package's entry in the changeset fixed group (.changeset/config.jsonorui/.changeset/config.json, wherever it lives); tombstones for the types/zod mirrors inui/packages/types/**; tests and allowlists that name the package or its keys (forced edits, listed in the body);pnpm-lock.yaml(workspace member removed); re-recordedscripts/sdui-manifest.sources/*.json(i18n, and plugin-ai if it has a record); a root.changeset/minor entry with a BREAKING note. ⛔ No other #25921 item (stop on breach; explain in the report). ⛔ui/.github/**and the root.github/workflows/ci.ymlare out of bounds (maintainer's word, ui-merge epic in flight). Changeset in the root.changeset/.Container & model:
medium,mode:thread,model: TIER_DEFAULT (dispatch-gates --tier: no path-derived mandate),effort: highClause-②: no (narrowing) — provisional: a published package and its locale keys retire; re-declared at hand-back with the ADR-0087 gate verdict
Metadata-protocol: none
Responsibility:
n/a: renderer defect in ui/, the producing code is the cited ui file; no platform path covers it; reached through the public ConsoleThread-read: 6427488036
Premise: holds (ruling A 6398569691 retires
@object-ui/plugin-ai; the card measured 0 source importers and no entry inapps/console/src/register-plugins.ts/vite.config.ts, re-measured by the dev at claim with a positive control; 2026-10-26T22:14Z)Serial constraints cleared: i18n record: after seat 2's #26055; draft until it merges, then merge main and re-record. pnpm-lock: no other open PR of this lane edits it at claim time
Dispatch order handed to the card thread by the project coordinator (three partitions: ruling / mechanism hypotheses / suggested route); the dev does not claim, and starts only once this claim names its branch.
objectstack-fleet commentedon Oct 26, 2026
Claim amendment (seat
domain:ui#1, 2026-10-26T22:15Z): amends the claim6428606072at the card thread's request, after its read-only re-measure onorigin/mainb9cd9809. Append-only; the claim's other lines stand.File surface (replaces the claim's line): partial,
Part of #25921, the plugin-ai item only, as measured in/mnt/project-files/ui-25921/plugin-ai-surface.md:ui/packages/plugin-ai/**, itspnpm-lock.yamlimporter and theui/vitest.config.mtsalias line..changeset/config.jsonfixed-group entry, and the plugin-ai line in the pending.changeset/25831-object-ui-18-1-to-merge.md.ai.*block in the ten locale packs; re-recordi18n.json.ui/packages/types/src/ai.ts(the three schemas become@deprecatedneverwith a remedy;AnySchemaloses the three members),zod/ai.zod.tsandzod/index.zod.ts(refusal arms on theretiredNodeTypeprecedent),zod/README.md, the types tests that pin those arms; re-recordtypes.json.ui/packages/cli/src/utils/known-schema-types.ts(three keys) and its ratchet test.console-vite-alias-closure-4925gets a replacement negative control, named in the body.ui/content/docs/plugins/plugin-ai.mdx+meta.json, theui/README.mdrow..changeset/25921-retire-plugin-ai.md, minor with a BREAKING note and the ADR-0087 disposition the gate accepts.⛔ Out:
skills/objectui/guides/*(governed, Tier H) — a follow-up PR after this one, named in the body. ⛔ No other retire the zero-consumer surface: nine dead modules (2,211 LOC), plugin-ai, runner's publish flag, test-only reset helpers on public barrels, the providers trio, 122 dead i18n keys, root orphans #25921 item.Clause-②: no (narrowing) — three node types and a package retire; nothing widens
Metadata-protocol: narrowed — three ui node types become refused arms (release: minor)
Serial constraints (replaces the claim's line): i18n record after seat 2's #26055; types record shared with #26274 (
domain:spec#2) — whichever lands first, the other mergesmainand re-records. Draft until both lines clear.objectstack-fleet commentedon Oct 27, 2026
席位核对 · Blocked-by · seat
domain:ui#1· 2026-10-27T00:10ZBlocked-by: #26220
The plugin-ai item is built: draft PR #26365, head
db6ddb4d,Part of #25921,Clause-②: no (narrowing),Metadata-protocol: narrowed. It is held on two things the maintainer owns:runtime-export-retiredoperands, because plugin-ai's entry issrc/index.tsx(vite-plugin-dts), which D9's tsup-only mapping cannot map. check-adr-0087-registration: PACKAGE_ROOTS omits ui/packages, ui/apps and ui/examples, so no @object-ui package can use the runtime-export-retired disposition #26220 part 4 carries the fix, and the D8 + D9 amendment is on one decision card with the maintainer.check-empty-changesetis red on purpose. The PR deletes the plugin-ai line from the pending.changeset/25831-object-ui-18-1-to-merge.md, because a pending changeset that names a deleted package breakschangeset version. The gate keeps that correction red until a maintainer confirms it on the PR.The card stays
pm:dispatchedwith its thread parked. When #26220's parts 3–4 land, the PR mergesmain, re-recordsi18n.json/types.json, re-runs the gate and dogfood, and asks for the changeset confirmation in the same breath. Follow-up (governed, Tier H):skills/objectui/guides/{project-setup,page-builder}.mdstill name plugin-ai.objectstack-fleet commentedon Oct 27, 2026
os-dev-report
{ "issue": 25921, "status": "done", "branch": "claude/project-thread-vl2c07", "pr": "https://github.com/objectstack-ai/objectstack/pull/26365", "session": "session_01VBDBR9oS1MNUcjBVXds5D6", "premise_still_valid": true, "summary": "Retired @object-ui/plugin-ai per ruling A (comment 6398569691): package deleted with its lockfile importer, vitest alias, docs page and README row; its ai.* block deleted from all ten locale packs; its entry dropped from the changeset fixed group and from the pending 25831 note (deliberate correction, confirmation owed by a maintainer). The types/zod mirrors are @deprecated never / z.never() tombstones with remedy text, and the three node literals are refused by name through retiredNodeType() arms in AnyComponentSchema; sunset waits for #25912. Draft, Part of #25921, Blocked-by: #26220 (ADR-0087 predicate 1 cannot read a src/index.tsx entry). Premise re-measured: 0 dependents, 0 mentions in console register-plugins.ts / vite.config.ts against 2 / 4 for the plugin-markdown control.", "tests": "Post-merge head db6ddb4d: `vitest run packages/types packages/i18n packages/cli scripts packages/components/src/__tests__` 935 files, 19817 passed, 3 failed -> two owed counts fixed (package-files-exist license floor, QUICK_REFERENCE published count), one 15 s timeout (check-vi-mock-inherit); the three rerun alone 111/111. New pin plugin-ai-retired-25921.test.ts 17/17; ablation (RetiredNLQueryNodeSchema removed from AnyComponentSchema via scripts/ablation-replace.mjs) -> 2 failed / 15 passed, exactly the two nl-query cases; restored, blob == HEAD. tsc for types, i18n, cli exit 0. Build `turbo run build --filter=@object-ui/console... --filter=@object-ui/cli...` 72/72 before and after the merge of main.", "gates": "dispatch-gates --ran: 105 derived, 105 run, 0 NOT-MEASURED (DERIVED zero). Exit 1 by design: check-adr-0087-registration --base origin/main (3 predicate-1 refusals, Blocked-by #26220) and check-empty-changeset --base origin/main (the 25831 one-line correction). Fixed in this PR: check:lockstep-package-count (111 -> 110 via --fix). check:dual-build-cjs-loads exit 0 after a full packages/** build (112 entries / 69 packages). check-platform-checklist --changed-from origin/main: 0 anchored files. check-nul-bytes OK. Family run recorded at 4bef30fa; post-merge the two red gates, lockstep, Console build and tests were repeated. CI: get_check_runs on head db6ddb4d returned 0 check runs at reading time (relay-opened draft), so no CI conclusion to cite yet.", "dogfood_battery": "db6ddb4d · os-verify-lock: VERDICT command-exit 0 · held the lock 1858s · Test Files 297 passed | 3 skipped (300) · Tests 2528 passed | 18 skipped (2546) · no failures", "mcp_calls": "6 — mcp__github__issue_read x4 (get / get_comments on #25921), mcp__github__pull_request_read x1 (get_check_runs #26365), subscribe_pr_activity x1 (harness, not a GitHub write)", "api_writes": "3 — git push (claude/project-thread-vl2c07), relay pr_create (objectstack#26365 via fleet-write dispatch run 40424373701, body read back identical, assignee os-steve), this os-dev-report comment on #25921 via scripts/pm/post-stamped.mjs", "open_questions": [ { "question": "Confirm the one-line edit of pending .changeset/25831-object-ui-18-1-to-merge.md (drop \"@object-ui/plugin-ai\": minor)?", "options": [ "A confirm: the package no longer exists, changeset version would refuse it", "B restore it: release fails at changeset version" ], "recommendation": "A, because a pending note naming a deleted package breaks the release run; seat 1 is carrying it to Steve with the #26220 D9 answer" } ], "out_of_scope_findings": [ "follow-up, not a finding: skills/objectui/guides/project-setup.md and page-builder.md still name @object-ui/plugin-ai; Tier H governed, separate PR after this one · carrier: PR body · noted, not filed", "info: ui/.changeset/ (not read by the root config, ui/AGENTS.md) still holds three pre-merge notes naming @object-ui/plugin-ai (13464, 13465, 25685); untouched · noted, not filed", "info: if #26274 lands on scripts/sdui-manifest.sources/types.json first, merge main and re-record before ready" ] }Generated by Claude Code
objectstack-fleet commentedon Oct 27, 2026
Seat note · claim released (lane standing down) · seat
domain:ui#1· 2026-10-27T12:03ZThe maintainer stood the ui lane down after current work (2026-10-27 09:10Z).
The plugin-ai retirement is PR #26365 (draft, head
bde1e722). It is merged withmainafter 18.2.0 shipped, and its body is current.changeset statusexits 0.Waiting on the maintainer (asked 2026-10-27 05:15Z):
@object-ui/plugin-aiand its three node types #26365 switches to aregistereddisposition.The seat recommended A. Whoever picks this up: apply the answer, then land #26365. If #26576 has merged, #26365 also merges
mainto read the shared population constant.The card returns to
pm:queue. #26220's four parts have all landed; under A, the D9 limb is its follow-up.