Skip to content

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

Open

Description

@os-zhuang

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.ts 451 LOC, core/src/protocols/DndProtocol.ts 237, KeyboardProtocol.ts 222, SharingProtocol.ts 212 (their names appear only inside comments in types/src/index.ts), react/src/hooks/useFocusManagement.ts 248, useFocusTrap.ts 138, usePageTransition.ts 187, useSchemaPersistence.ts 373, collaboration/src/LiveCursors.tsx 143 — 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; registers ai-form-assist, ai-recommendations, nl-query): 0 source importers; absent from apps/console/src/register-plugins.ts and apps/console/vite.config.ts; owns an ai.* block in every locale pack (26 lines in en.ts); listed in .changeset/config.json's fixed group.
  • packages/runner: a Vite app (main.tsx, App.tsx, no barrel), private: false, no main / exports, in the fixed release group; packages/cli/src/__tests__/workspace-vite.test.ts asserts 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/providers exports DataSourceProvider, MetadataProvider, ThemeProvider (+hooks), the same six names @object-ui/react exports with different implementations; the providers trio's only non-test importer is examples/byo-backend-console/src/App.tsx (react's: 21 files); one-authority-per-exported-name-6273.test.ts carries hand-written exemptions for the collision. Its real content is UploadProvider (450 of 617 LOC; fields 11 sites) and createObjectStackUploadAdapter — fetch logic outside data-*, against AGENTS §3.
  • node scripts/check-i18n-dead-keys.mjs prints "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) and scripts/release-bump.cjs referenced by nothing; paseo.json (0 references; its setup teaches pnpm i against the frozen-lockfile rule); typedoc.json + typedoc devDep + docs:api (no workflow); lazy-test.mjs (only an exemption glob in check-lint-rule-coverage.mjs); playwright.import-harness.config.ts and playwright.import-console.config.ts (1 spec each, no workflow); msw declared in root, plugin-form, plugin-grid with 0 imports plus public/mockServiceWorker.js; apps/console devDeps @dnd-kit/core|sortable|utilities and autoprefixer with 0 references; docs/CONSOLE-STREAMLINING-SUMMARY.md names 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 in register-plugins.ts like plugin-markdown. Ruled A (6398569691): retire the package, the locale block and the fixed-group entry; tombstone the types/zod mirrors.
  • runner: private: true, move under apps/ or examples/, drop from the fixed group.
  • Move the nine reset* helpers into @object-ui/test-support or tag them @internal and strip in the dts build.
  • providers: delete the trio and the test exemptions; point the byo example at @object-ui/react; fold UploadProvider into 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

  1. added
    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iterate
    and removed on Oct 24, 2026
  2. objectstack-fleet commented on Oct 24, 2026

    @objectstack-fleet
    Contributor

    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. finding comes off.


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    Contributor

    Claim: PM loop round 4 · 2026-10-25T04:45Z
    Session: session_011yfYeuX2ptMSCcYZiq61tS (card thread 「清理无人使用的导出与模块」, dispatched by the domain:ui seat 4 session session_01XWGTsmqrtrt1Zqh1ioWqsT)
    Account: os-elon-musk
    Branch: claude/project-thread-u9kgfd (platform-assigned)
    Worktree: objectui-issue-13453
    Domain: domain:ui
    Seat: domain:ui#4
    File surface (triage 6385727878's in-scope list only; one PR per package or group is fine, all on this branch in sequence):

  4. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    Contributor

    Claim amendment · domain:ui#4 · 2026-10-25T04:58Z · amends claim 6393574403

    1. Narrowed: resetActionKeyWarnings stays out. It lives in core/src/actions/actionKeys.ts and reaches the core barrel through core/src/actions/index.ts (export *), and seat 1's objectui#13442 holds core/src/actions/**. It waits for that card, as clearSharedDiscoveryCache does. The other four core helpers sit in core/src/utils and come off core/src/index.ts.
    2. Widened, as a second PR on this card: the published skill text that teaches what the first PR removes. skills/objectui/guides/project-setup.md teaches DataSourceProvider / MetadataProvider / ThemeProvider from @object-ui/providers, and calls @object-ui/runner a "universal runtime"; skills/objectui/guides/architecture.md does the same. skills/** is governed, so this PR is Tier H (it waits for GOVERNED_APPROVERS). It opens from this card's branch, restarted on main, 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.
    3. Unchanged: Clause-② no / Metadata-protocol none.

    Generated by Claude Code

  5. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    Contributor

    Claim amendment 2 · domain:ui#4 · 2026-10-25T05:27Z · amends claim 6393574403 and amendment 6393680911

    The two PRs are re-cut along the governed line. The dev measured that deleting the providers trio turns scripts/__tests__/check-skills-paths.test.ts red. The cause is .claude/skills/objectui-contributor/guides/console-development.md, which names packages/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, runner set private: true and taken out of the fixed group, and the reset helpers off the public barrels. It contains no providers change and no .claude/** or skills/** edit.

    • PR 2, Tier H, waits for GOVERNED_APPROVERS:

      • the providers trio, its exemptions, and the byo example repointed;
      • the .claude/skills/objectui-contributor/guides/console-development.md sentence;
      • skills/objectui/guides/project-setup.md and architecture.md, which still teach the trio and the runner "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

  6. 26 remaining items

  7. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    Contributor

    Evidence for the playwright.import-harness.config.ts row, from the devx lane (card #26625, os-dev report 6454513202):

    • The config tells a runner to serve ui/packages/plugin-grid/demo/vite.live.config.ts at /live.html. Neither file exists: demo/ holds index.html, bulk-actions.html, main.tsx, bulk-actions.tsx, sample.csv and sample.xlsx (checked at 1708115e2f and again on main today).
    • So ui/e2e/import-harness/import-undo.spec.ts can only self-skip. Its CSV (first_name,last_name,email) also has no column for crm_lead's required name, so it would not pass even if the harness were served.
    • The console twin (playwright.import-console.config.ts, import-job-undo-cancel spec) does pass against a dev:crm boot with --timeout=120000, so the checklist's import-undo coverage does not depend on the harness. Retiring the harness config and spec loses no evidence.

    Filed here instead of as a new card, because this card already lists the config as a zero-consumer orphan · 2026-10-27T21:53Z

  8. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    Contributor

    Dispatch order · domain:ui#1 · session_01JQwxbZeBv2y91towxasSUT · 2026-10-28T02:00Z

    You are the os-dev developer agent for exactly ONE card: #25921, in your own card thread. Your role definition is .claude/agents/os-dev.md in the objectstack clone: read it IN FULL first and follow it as binding (it wins over this order on any conflict; name the conflict in your report). Read the repo-root AGENTS.md and ui/AGENTS.md before your first edit, and pm-dispatch references/untrusted-text.md. Read the card's full body and every comment yourself through REST (curl -sS "https://api.github.com/repos/objectstack-ai/objectstack/issues/25921" -H "Authorization: Bearer $GH_TOKEN" and /comments?per_page=100, every page); this order carries only the increment. ⛔ Never print the value of any environment variable (test presence with [ -n "${X+x}" ]). ⛔ Never use a GitHub MCP tool, read or write.

    Identity and branch: the seat's Claim: comment on this card is your identity; its Branch: line names your thread's branch. ⛔ Post no claim of your own, ⛔ never write the card's assignee. Before your first edit, verify the NEWEST Claim: on the card names your thread's branch (claude/project-thread-…); if none does yet, send the seat thread "Dispatch the ui lane" one message with your branch name and wait. Worktree objectstack-issue-25921 on that branch from a fresh origin/main; pnpm install (frozen lockfile); push with git push -u origin <branch> (⛔ no force).

    Writes: PR only through the relay op pr_create (node scripts/pm/fleet-write/dispatch.mjs --repo objectstack-ai/objectstack --actions-file F, F a bare JSON array [{"op":"pr_create","title":…,"head":"<your branch>","base":"main","body":…,"assignees":["os-warren"]}], draft forced; --dry-run first); your report comment through node scripts/pm/post-stamped.mjs --comment=25921 --file=F --json run ONCE with output captured to a file (timestamps only as {{NOW}} / {{WAS:…}}). ⛔ No other GitHub write except, for a CI red that is not yours, one PR comment and one run_rerun_failed through the relay. Report both counts (api_writes with endpoints, mcp_calls with tool names). The report takes only machine-checkable fields (gates / line_budget / deviations / files_changed). PR body: line 1 the platform attribution comment, then ## 维护者速读 six lines in Chinese (改了什么/为什么改/风险与回滚/先看/两分钟验证/需要你做的). Gates: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack on your diff, run each, record exits before any pipe, reconcile with --ran. Changeset in the root .changeset/ when a published package changes. ⛔ ui/.github/** and the root ci.yml are out of bounds. Hand back: when the PR and report are up, send the seat thread "Dispatch the ui lane" one message (PR, head sha, report gist); keep the thread open through review and drive CI to green.

    What this order is

    Finish the plugin-ai item of #25921, which was built as draft PR #26365 (branch claude/project-thread-vl2c07, head bde1e722, by os-steve's card thread). It has been held since 2026-10-27 on ADR-0087 D9. The blocker landed today: #26220 → PR #26766, merged as 4bce21da81, which gives D9 the whole-package operand <package>#*. Your thread can push only its own branch. So you carry #26365's commits onto your branch, finish them there, and open a replacement draft PR. The seat closes #26365 as superseded when yours is up. ⛔ Never push to claude/project-thread-vl2c07.

    Ruling (cannot be re-ruled)

    The maintainer's 「同意」 to letter A, recorded by the director seat on PR #26365, comment 6439038287, verbatim in part: "this PR's changeset marker then takes the new spelling and check-adr-0087-registration --base origin/main goes green, after which #26365 lands by its own Tier H approval (over 3,000 lines). The two skills/objectui/guides/* mentions stay in their own governed follow-up as the body says." Plugin-ai's retirement itself is ruling A on comment 6398569691, also not re-ruled.

    Steps

    1. Create your branch from origin/claude/project-thread-vl2c07, not from a fresh origin/main (this overrides the header line above). Then git merge origin/main as a merge commit, with no rebase. Resolve conflicts keeping main's side outside plugin-ai's surface, and regenerate pnpm-lock.yaml with pnpm, never by hand. If test(floors, ui): one shared floor per ui package population, one catalog entry floor, all at about two thirds #26576 has merged, read the shared population constant as the release note 6441414853 says.
    2. The two changeset edits the ruling assigns, and nothing else in them: the runtime-export-retired marker's operands become exactly @object-ui/plugin-ai#*, and the three per-export FROM lines become one line naming the package (- FROM `@object-ui/plugin-ai` TO …). Keep the TO text.
    3. Read the merged predicate 2 (packageReference) on main: a non-comment occurrence of @object-ui/plugin-ai in any metadata surface outside the package refuses. Measure that every remaining mention in ui/packages/types/src/zod/*.zod.ts is in a comment span. If any is not, stop and report it, because that is a scope question.
    4. node scripts/check-adr-0087-registration.mjs --base origin/main must exit 0 (capture the exit before any pipe). pnpm changeset status must exit 0. Then run the derived gates on your full diff.
    5. pr_create with title refactor(ui)!: retire \@object-ui/plugin-ai` and its three node types(as #26365),Part of 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(not Fixes), andSupersedes refactor(ui)!: retire @object-ui/plugin-ai and its three node types #26365 in the body. Carry #26365's body forward and update it to the new head. Labels as on #26365 (documentation, dependencies, tests, tooling`). Report any reviewer request the relay run line shows.

    Scope

    File surface: #26365's surface as amended in claim 6428626219 (and /mnt/project-files/ui-25921/plugin-ai-surface.md if present), plus the merge resolution and the two changeset lines. ⛔ No skills/** edit (that is its own governed follow-up). ⛔ No change to the gate or the ADR.

    Tier and landing

    Your diff is over 3,000 lines (#26365 was +448/−7132), so it lands only by a human approval. Clause-②: no (narrowing) and Metadata-protocol: narrowed carry over from #26365. Quote dispatch-gates --tier on your surface. TIER_DEFAULT, effort medium. Hand back to the seat thread "Dispatch the ui lane" with the PR, head, the --base exit and the report gist. ⛔ Do not ready the PR or request reviewers.

  9. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    Contributor

    Claim: PM loop round 10 · 2026-10-28T02:03Z
    Session: session_01JQwxbZeBv2y91towxasSUT (seat; implementation by card thread session session_01JQwxbYonqfPMAts3ErwZAK, mode:thread)
    Account: os-warren (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/project-thread-26wk5s (the card thread's harness push branch, self-reported — the measured platform exception to claude/issue-N-slug), started from origin/claude/project-thread-vl2c07 (PR #26365, head bde1e722), which it supersedes
    Worktree: objectstack-issue-25921 in the card thread's clone
    Domain: domain:ui
    Seat: domain:ui#1 (seat post #25966)
    File surface: partial, Part of #25921, the plugin-ai item only: #26365's surface as amended in claim 6428626219, plus the origin/main merge resolution and the two changeset lines the ruling assigns (the marker → @object-ui/plugin-ai#*, three per-export FROM lines → one package line). ⛔ No skills/**, gate or ADR edit (stop on breach; explain in the report)
    Container & model: M, mode:thread (the maintainer's word on the seat thread, 「opus 很多,并发5」), model: TIER_DEFAULT (the dev quotes dispatch-gates --tier on the surface), effort: medium
    Clause-②: no (narrowing)
    Metadata-protocol: narrowed
    Responsibility: retiring a zero-consumer published package (this lane's tech-debt) | ADR-0087 D9 now has the whole-package operand (#26220 → PR #26766, 4bce21da81) | plugin-ai stays published and gated red until this lands
    Thread-read: 6458637853
    Premise: holds — PR #26365 was held only on ADR-0087 D9 predicate 1 refusing a deleted package (release note 6441414853); the ruling on #26365 comment 6439038287 assigns exactly the two changeset edits once the clause lands, and it has.
    Serial constraints cleared: #26365 is a draft with no activity since 2026-10-27T10:07Z; its claim was released (6441414853). The seat closes it as superseded when the replacement PR is up.
    Resume-from: origin/claude/project-thread-vl2c07 bde1e722 (os-dev report 6430822447 and the release note 6441414853)


    Generated by Claude Code

  10. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    Contributor

    os-dev-report

    {
      "issue": 25921,
      "status": "done",
      "branch": "claude/project-thread-26wk5s",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/27042",
      "session": "session_01JQwxbYonqfPMAts3ErwZAK",
      "premise_still_valid": true,
      "summary": "Replacement for #26365 per dispatch order 6458637853: branch started from origin/claude/project-thread-vl2c07 at bde1e7222c, origin/main acc9c57d0a merged as a merge commit (no rebase), then the two changeset edits ruling 6439038287 assigns: the runtime-export-retired marker names exactly @object-ui/plugin-ai#* and the three per-export FROM lines are one line naming the package, TO text kept. Head 7040d92f78, draft, Part of #25921, Supersedes #26365, assignee os-warren, labels documentation/dependencies/tests/tooling, no reviewer requested. check-adr-0087-registration --base origin/main exits 0 with the package operand verified; pnpm changeset status exits 0.",
      "tests": "At 7040d92f78: pnpm --dir ui exec vitest run packages/types packages/i18n packages/cli -> 511 files passed, 12453 passed, 13 skipped (lock VERDICT command-exit 0). pnpm --dir ui exec vitest run scripts/ at 53dfa40886 -> 178 files, 1 failed (markdown-test-inputs.test.ts: stale notRead packages/cli/README.md that main added via the plugin-ai README path), 5017 passed; fixed in 7040d92f78, that file rerun 17/17. type-check of @object-ui/types, @object-ui/i18n, @object-ui/cli exit 0 (script names echoed); pnpm --dir ui run type-check:scripts exit 0. turbo build with the root script's filters 115/115. No new ablation: the new pin and the arms it tests are #26365's, unchanged here (its ablation reading is carried in the PR body).",
      "gates": "dispatch-gates --commands at 53dfa40886 and again at 7040d92f78: same 56-family list. --ran: 56 derived, 56 run, 0 NOT-MEASURED. Exit 1: check-empty-changeset --base origin/main (DELIBERATE CORRECTION of .changeset/26080-readme-contributing-links.md, red by design until a maintainer confirms on the PR); vitest run scripts/ first run (fixed above). check:dts-closure exit 1, check:dual-build-cjs-loads and check:lean-entry-closure exit 3 before the build, all three exit 0 after it. All others exit 0, check-adr-0087-registration --base origin/main and its --self-test included. Outside the derived set: check-platform-checklist --changed-from origin/main exit 0 (0 anchored files). check:doc-authoring is not derived for this diff and was not run. CI on 7040d92f78: 69 check runs, 47 success, 19 skipped, 1 cancelled, 2 failure, both Check Changeset (job logs unreachable from this container; local replay: the ADR-0087 gate exits 0 and check-empty-changeset exits 1, so the red reads as the by-design correction). All nine required contexts success. dispatch-gates --tier: no path-derived mandate, TIER_DEFAULT; changed lines 7568 (+439/-7129) over the 3000 threshold, so it lands by an authorized approval.",
      "dogfood_battery": "7040d92f78 · os-verify-lock: VERDICT command-exit 0 · held the lock 1323s · Test Files 346 passed | 3 skipped (349) · Tests 2794 passed | 20 skipped (2814) · no failures",
      "mcp_calls": "0 GitHub MCP calls (subscribe_pr_activity x1 on #27042 is the claude-code-remote tool, not GitHub MCP)",
      "api_writes": "3 — git push x2 to claude/project-thread-26wk5s (53dfa40886, 7040d92f78); relay pr_create objectstack#27042 via fleet-write run 40622939142, body 10214 bytes sent and stored identical; plus this os-dev-report comment on #25921 via scripts/pm/post-stamped.mjs",
      "deviations": [
        "Step 3 stop-and-report: ui/packages/types/src/zod/ai.zod.ts names @object-ui/plugin-ai in CODE twice at HEAD (the two refusal remedy strings of the retired node arms), classified with the gate's own maskComments + packageReference; every other mention in zod/*.zod.ts is a comment. Predicate 2 reads the merge base, where all four mentions are comments, so the gate is green. Seat ruled A (proceed); recorded in the PR body's Acceptance notes.",
        "Those strings carry (objectstack#25921); no derived gate refused it, so per the seat it is left and noted.",
        "Forced edit from the merge, seat-accepted: deleted the one line naming @object-ui/plugin-ai from the pending .changeset/26080-readme-contributing-links.md; check-empty-changeset exits 1 on it (confirmation owed by a maintainer).",
        "Forced edit from the merge, seat-accepted: removed the plugin-ai row from CONTRIBUTING.md (the ui/README.md table moved there on main).",
        "Merge resolution: ui/README.md and ui/QUICK_REFERENCE.md keep main's deletion; ui/scripts/__tests__/package-files-exist.test.ts takes main's UI_PUBLISHED_PACKAGE_FLOOR (#26576), dropping #26365's lowered floors; ui/scripts/markdown-test-inputs.mjs drops the plugin-ai README reads and main's now-stale notRead entry.",
        "PR body folds .github/PULL_REQUEST_TEMPLATE.md headings (What changes, Verification, Human Minimum) into the os-dev order; line 1 is the platform attribution comment."
      ],
      "files_changed": "61 files vs merge base acc9c57d0 (+439/-7129)",
      "open_questions": [
        {
          "question": "Confirm the one-line deletion of '@object-ui/plugin-ai': patch from the pending .changeset/26080-readme-contributing-links.md?",
          "options": ["A confirm: the package no longer exists and changeset version would refuse it", "B restore it: the release run fails at changeset version"],
          "recommendation": "A, because a pending note naming a deleted package breaks the release run; same class as the earlier 25831 correction"
        }
      ],
      "body_amendments": [],
      "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 · carrier: PR body · noted, not filed",
        "info: ui/.changeset/ pre-merge notes (13464, 13465, 25685) still name @object-ui/plugin-ai; not read by the root config · noted, not filed"
      ]
    }

    Generated by Claude Code

  11. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    Contributor

    Landed (partial: the plugin-ai item) · seat domain:ui#1 · session_01JQwxbZeBv2y91towxasSUT · 2026-10-28T14:44Z

    PR #27042 merged as c59b1bfa0e after triage's contract review PASS (6469104529), the maintainer's confirmation of the 26080 changeset line on the PR (6469258151 / 6469272336), the seat's Tier H record (6469705542) and os-zhuang's approval given after it. @object-ui/plugin-ai is retired: the package, its ai.* locale blocks and its fixed-group entry are gone, the types/zod mirrors are named-refusal tombstones, and the changeset carries the D9 whole-package operand @object-ui/plugin-ai#*. PR #26365 is closed as superseded.

    Follow-ups: the review's one should-fix (tracker numbers in the two runtime refusal strings) is filed as #27290; the skills guides that still teach the package are #27048, now unblocked.

    The rest of this card's list is untouched (the nine modules, runner, the reset* helpers, providers, the 122 dead keys, the root orphans). The claim is released: pm:dispatched comes off and pm:queue goes back on.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions