Repository navigation
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)
115 remaining items
objectstack-fleet commentedon Nov 2, 2026
domain:ui#5 · zhuangjianguo · session_01QsR2jRTYHhqj3r6SiMnrkT
os-dev-report addendum
{ "issue": 25921, "pr": "https://github.com/objectstack-ai/objectstack/pull/29616", "head": "9502086d", "addendum_to": 6589301972, "fixes": "contract review record 6589388719 must-fix: the changeset now bumps '@object-ui/plugin-designer': patch beside '@object-ui/i18n': patch (DESIGNER_DEFAULT_TRANSLATIONS is exported from src/index.tsx L51), its title reads refactor(i18n, plugin-designer)!, and one sentence says the exported map loses its designer.versionHistory row (a read now yields undefined; type Record<string, string> unchanged), naming #29529 as the predecessor. Seat 3's pending changeset untouched.", "files_changed": [".changeset/25921-designer-version-history-key.md"], "gates": "on 9502086d with the corrected title and body: check-adr-0087-registration exit 0, check-changeset-no-major exit 0, check-empty-changeset exit 0, check-closing-keyword-parity exit 0, check:pm-changeset-deadline-census exit 0, check-partof-closing-keyword exit 0. The first adr-0087 and closing-keyword runs in a fresh worktree refused (no node_modules, exit 1 / 3, nothing measured); re-run after pnpm install.", "pr_title_and_body": "not written by the dev. New title: refactor(i18n, plugin-designer)!: retire the unread designer.versionHistory key. Seat-signed corrected body: /mnt/project-files/issue-25921-b4/pr-body-v2.md (signature line, blank line, then the body).", "deviations": ["The first report's claim that the map is not exported was wrong: the export grep looked at src/index.ts, but the entry is src/index.tsx."], "mcp_calls": "0", "api_writes": "1 (this addendum) plus 1 git push" }objectstack-fleet commentedon Nov 2, 2026
domain:ui#5 · zhuangjianguo · session_01QsR2jQjvWkZ7is6GXbC6DB
Landed (partial, one batch) · 2026-11-02T22:36Z
4d8095ba,Part of #25921). The seat's ACCEPT is 6589798777. The director's contract review was a FAIL (6589388719) and then a PASS on the fixed head (6589480821).designer.versionHistoryleaves all ten@object-ui/i18npacks and plugin-designer's exportedDESIGNER_DEFAULT_TRANSLATIONS. That key went unread when refactor(ui)!: retire plugin-designer's dead collaboration code, VersionHistory and the useConfirmDialog entry export #29529 deleted theVersionHistorymodule. One patch changeset covers both packages.@object-ui/plugin-designer's entry issrc/index.tsx, notindex.ts. A grep of the wrong file misreads what the package exports. That is what the review's FAIL caught.CommentSearchResult;clearSharedDiscoveryCache;pm:queuewith no assignee. A narrowing batch owes a director contract review again.objectstack-fleet commentedon Nov 3, 2026
domain:ui#5 · zhuangjianguo · session_01QsR2jQjvWkZ7is6GXbC6DB
Claim: PM loop round 6 · 2026-11-03T01:42Z
Session:
session_01QsR2jSoUd7Uhw6ei5FFLD1(card thread, os-dev); dispatched by seat sessionsession_01QsR2jQjvWkZ7is6GXbC6DBAccount:
zhuangjianguoBranch:
claude/project-thread-un6127(platform-assigned to the card thread; it can push only this branch)Worktree:
objectstack-issue-25921Domain:
domain:uiSeat:
domain:ui#5Batch: retire the zero-consumer
useMentionNotificationshook (withMentionNotificationsConfigandMentionNotificationsResult) from@object-ui/collaboration, and theMentionNotificationinterface from@object-ui/types, which only that hook reads.Part of #25921; the umbrella stays open.File surface:
ui/packages/collaboration/src/useMentionNotifications.ts(delete),ui/packages/collaboration/src/index.ts,ui/packages/types/src/views.ts,ui/packages/types/src/index.ts,ui/packages/types/src/__tests__/record-id-string-survivors-10078.test.ts(comment only, if needed), and one new changeset (stop on breach)Container & model: S,
mode:thread,model: default tier (no Fable per the maintainer's standing rule),effort: mediumClause-②: no (narrowing)
Metadata-protocol: none
Responsibility:
a host importing useMentionNotifications or MentionNotification from the published packages | a hook no console surface reads (the bell reads the server inbox via useInboxBell) stays exported with its type | readers of the barrels and the zero-consumer census, which keeps counting itThread-read: none
Premise: to prove first on current main. The seat's census at a2f77f7 found 0 files outside the collaboration package for the hook and its two types, and the module as the type's only reader. The dev repeats it with a positive control and stops if any reader exists.
Serial constraints cleared: the dev reports any open PR on these files before editing and merges main right before pr_create.
objectstack-fleet commentedon Nov 3, 2026
domain:ui#5 · zhuangjianguo · session_01QsR2jSoUd7Uhw6ei5FFLD1
os-dev-report
{ "issue": 25921, "status": "done", "branch": "claude/project-thread-un6127", "pr": "https://github.com/objectstack-ai/objectstack/pull/29732", "head": "9be84e1e", "session": "session_01QsR2jSoUd7Uhw6ei5FFLD1", "premise_still_valid": true, "summary": "Retired useMentionNotifications (with MentionNotificationsConfig and MentionNotificationsResult) from @object-ui/collaboration and the MentionNotification interface from @object-ui/types. Premise census on origin/main 1c1a5d40: the hook and its types have 0 files outside the package except QA checklist prose; MentionNotification was read only by the hook plus a doc comment in the 10078 test; control useRealtimeSubscription 72 files; hotcrm and docs.objectos.ai 0. One patch changeset with BREAKING paragraph, four FROM/TO lines and a runtime-export-retired ADR-0087 marker naming all four operands. Part of #25921, no closing keyword.", "files_changed": [ "ui/packages/collaboration/src/useMentionNotifications.ts (deleted, 97 lines)", "ui/packages/collaboration/src/index.ts (-6)", "ui/packages/types/src/views.ts (-28)", "ui/packages/types/src/index.ts (-1)", "ui/packages/types/src/__tests__/record-id-string-survivors-10078.test.ts (doc comment, +2 -1)", ".changeset/25921-collab-mention-notifications.md (new)" ], "line_budget": "+20 / -133 across 6 files, under the 3000 human-merge threshold", "tests": "turbo type-check types+collaboration+app-shell+console with ^build: 74/74 successful (VERDICT command-exit 0). vitest packages/collaboration/ packages/types/: Test Files 394 passed, Tests 10545 passed. Reverse probe in app-shell against rebuilt d.ts: TS2305 for MentionNotification (@object-ui/types) and useMentionNotifications (@object-ui/collaboration); control CommentEntry resolved; probe deleted. check:readme-exports census: 0 fabricated, 0 stale omission(s); exit 1 only on the unbuilt packages/cli prerequisite. No ablation: no tested behaviour changed (a pure export removal).", "gates": "dispatch-gates --commands at 4d64f54c: 35 commands; 33 in loop all exit 0; vitest run scripts/ (ui) exit 0 (170 passed, 2 skipped files); check:type-check-debt exit 0. dispatch-gates --ran: 35 derived, 35 run, 0 NOT-MEASURED, 0 UNRUN. PR-body gates: check-changeset-no-major 0, check-adr-0087-registration 0 (4 operands verified), check-closing-keyword-parity 0, check-partof-closing-keyword 0. check-platform-checklist --changed-from origin/main: 0 anchored files. CI check-runs: in_progress at report time.", "dogfood_battery": "d6bab300 · VERDICT command-exit 0 (held 34m19s, shared box) · Test Files 401 passed, 3 skipped (404) · Tests 3310 passed, 28 skipped (3338) · no failures", "mcp_calls": "2 — mcp__github__issue_read (get, get_comments) on #25921; no write tools", "api_writes": "2 — fleet-write pr_create (PR 29732, read back byte-identical, no assignees), this post-stamped comment on #25921; plus 3 git pushes", "deviations": [ "Worktree path is objectstack-issue-25921-b6, not objectstack-issue-25921 as the claim spells it (another batch's worktree name); branch matches the claim.", "Dogfood ran at d6bab300; final head 9be84e1e adds only a main merge touching ui/packages/fields (lookup cell) plus non-ui files, no collaboration or types file; census re-read on 9be84e1e with identical counts.", "Pending precedent changeset 25921-types-comment-search-result.md says MentionNotification stays exported unchanged; now untrue for the release consuming both. Not edited (pending 25921 changesets are off-limits); named in PR Acceptance notes for the seat." ], "open_questions": [], "security_findings": "none", "out_of_scope_findings": [ "carrier: seat 5 · docs/qa/platform-checklist/areas/records-forms.json L3265 source line now stale (says the hook is exported); left untouched per claim, named in PR Acceptance notes; L3299 history row unchanged" ] }objectstack-fleet commentedon Nov 3, 2026
domain:ui#5 · zhuangjianguo · session_01QsR2jSoUd7Uhw6ei5FFLD1
os-dev-report
Addendum 1 to report 6594357327: the director's must-fix from review 6594389562.
{ "issue": 25921, "status": "done", "branch": "claude/project-thread-un6127", "pr": "https://github.com/objectstack-ai/objectstack/pull/29732", "head": "d92625f8", "previous_head": "9be84e1e", "session": "session_01QsR2jSoUd7Uhw6ei5FFLD1", "summary": "The BREAKING paragraph of .changeset/25921-collab-mention-notifications.md gains one sentence: The `CommentSearchResult` entry of this release said `MentionNotification` stays exported; it leaves here. 25921-types-comment-search-result.md is untouched. After that commit, main was merged. Delta 9be84e1e..d92625f8: this one changeset line, plus main's own files (none under ui/packages/collaboration or ui/packages/types).", "files_changed": [".changeset/25921-collab-mention-notifications.md (+1 -1, one sentence)"], "gates": "PR-body event file, on d92625f8: check-changeset-no-major --base origin/main exit 0; check-adr-0087-registration --base origin/main exit 0 (4 operands verified); check-empty-changeset --base origin/main exit 0 (no changeset from the merge base modified). Census on d92625f8: MentionNotificationsConfig 0, MentionNotificationsResult 0, MentionNotification 0, useMentionNotifications 1 (QA prose), control useRealtimeSubscription 73.", "tests": "not re-run: the delta touches no source file of either package. Readings in report 6594357327 stand at 4d64f54c and d6bab300.", "dogfood_battery": "unchanged: d6bab300 · VERDICT command-exit 0 · 401 passed, 3 skipped (404) files", "mcp_calls": "0 this round", "api_writes": "1 — this post-stamped comment; plus 1 git push", "deviations": ["The PR body is not amended. Its Acceptance notes still say the precedent sentence is untrue for the release; the changeset now says so itself. The seat applies a body change if it wants one."] }objectstack-fleet commentedon Nov 3, 2026
domain:ui#5 · zhuangjianguo · session_01QsR2jQjvWkZ7is6GXbC6DB
Landed (partial, one batch) · 2026-11-03T03:44Z
3eeb81d1,Part of #25921). The seat's ACCEPT is 6594661024. The director's contract review was a FAIL (6594389562) and then a PASS on the fixed head (6594433248).useMentionNotificationswithMentionNotificationsConfigandMentionNotificationsResultleaves@object-ui/collaboration. TheMentionNotificationinterface, which only that hook read, leaves@object-ui/types. The console bell reads the server inbox throughuseInboxBell. One patch changeset covers both packages.25921-*changeset can go stale when a later batch retires a name it said "stays exported". Do not edit the pending entry, because that redscheck-empty-changeset's DELIBERATE CORRECTION. Correct it in the new batch's own BREAKING paragraph instead (director ruling on 6594389562).clearSharedDiscoveryCache, which needs a test-support home first because tests in other packages import it;pm:queuewith no assignee. A narrowing batch owes a director contract review again.