Skip to content

chore(ui): retire the zero-consumer root and config orphans (paseo, typedoc, lazy-test, console dead devDeps) - #28298

Merged
objectstack-fleet[bot] merged 2 commits into
mainfrom
claude/project-thread-u9x8uu
Oct 31, 2026
Merged

objectstack-fleet[bot] merged 2 commits into
mainfrom
claude/project-thread-u9x8uu

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Sales · project thread

Part of #25921

Clause-②: no
Metadata-protocol: none

维护者速读

  • 改了什么:删掉 ui/ 下三个没人用的根配置文件(paseo.json、typedoc.json、lazy-test.mjs),连带 typedoc / typedoc-plugin-markdown 两个 devDep、docs:api 脚本和 lint 覆盖账本里 lazy-test.mjs 那一行;再删 console 的四个死 devDep(@dnd-kit/core|sortable|utilities、autoprefixer),lockfile 随之重生成(纯删 256 行)。
  • 为什么改:卡 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 的「根与配置孤儿」项;每项在 origin/main 上重测都是零消费者,留着只会误导(paseo.json 还在教 pnpm i,违背 frozen-lockfile 规则)。
  • 风险与回滚:低。不改任何源码、不改发布产物;console 的 vendor-dndkit 分块照常产出(dnd-kit 经 app-shell 等包传入)。回滚 = revert 本 PR。
  • 先看:ui/apps/console/package.json(删的四个 devDep)、ui/scripts/check-lint-rule-coverage.mjs(删一行豁免)、pnpm-lock.yaml。
  • 两分钟验证:pnpm install --frozen-lockfile && git grep -n -E "typedoc|paseo|lazy-test" -- ui —— 安装成功,grep 零命中。
  • 需要你做的:无,席位落地。

What changes

  • Deleted ui/paseo.json, ui/typedoc.json, ui/lazy-test.mjs.
  • ui/package.json: dropped the docs:api script and the typedoc and typedoc-plugin-markdown devDependencies. typedoc-plugin-markdown is named only by typedoc.json's plugin list, so it goes with the typedoc item.
  • ui/scripts/check-lint-rule-coverage.mjs: dropped the lazy-test.mjs row from the vacuous-group list (its only reference).
  • ui/apps/console/package.json: dropped the @dnd-kit/core, @dnd-kit/sortable, @dnd-kit/utilities and autoprefixer devDependencies.
  • pnpm-lock.yaml: regenerated with pnpm install; the diff is deletions only (the two importers' entries plus typedoc's private closure: typedoc, typedoc-plugin-markdown, @gerrit0/mini-shiki, four @shikijs/*, lunr, markdown-it, linkify-it, mdurl, punycode.js, uc.micro, entities 4).

Why

Zero-consumer measurement on origin/main 69ce01d7 (the claim's base), git grep over the whole tree, lockfile and CHANGELOGs excluded:

Item Hits outside itself Verdict
paseo.json 1, a hypothetical example in a comment in scripts/check-ci-filter-parity.mjs (not a reader) dead
typedoc / typedoc.json / docs:api only ui/package.json itself, plus a historical comment in pnpm-workspace.yaml (see Acceptance notes) dead
lazy-test.mjs only the exemption row in check-lint-rule-coverage.mjs dead
console autoprefixer 0 in ui/apps/console; its postcss.config.js loads only @tailwindcss/postcss dead
console @dnd-kit/* 0 imports in console source, tests or config dead as a console declaration

Positive control for the same grep: @dnd-kit hits 45 files on origin/main, 39 of them under ui/packages/ (app-shell 11, plugin-kanban 17, layout 3, plugin-dashboard 3, plugin-view 3, components 1, react 1). app-shell, layout, plugin-kanban and plugin-dashboard each declare all three @dnd-kit packages themselves.

Kept: the vendor-dndkit entry in ui/apps/console/vite.config.ts. It is a real consumer of the bundle, not of the console's declaration: @dnd-kit still reaches the console build through the workspace packages above. Measured: the console build on this branch still emits assets/vendor-dndkit-*.js. So vite.config.ts is not touched.

Excluded, left on the card: the two playwright import-harness configs (the docs/qa checklist's knownGaps names them), the providers/upload fold, the two remaining reset helpers (resetActionKeyWarnings sits behind open PR #28188), the msw text in skills/** (governed), i18n keys, and the per-package barrel batches.

No changeset (skip-changeset): nothing a released package ships changes. ui/package.json is the private workspace root. @object-ui/console only loses devDependencies, which an installer never reads, and its built dist/ keeps the same @dnd-kit resolution through app-shell.

Acceptance notes

  • pnpm-workspace.yaml keeps the override 'markdown-it@>=14.0.0 <14.3.3': '^14.3.3' and its comment ("pulled 14.3.0 through typedoc and @vscode/vsce"). After this PR markdown-it is gone from the lockfile entirely, so the override matches nothing. That file is outside this claim's surface, so it is left as it is: dropping the override and its comment is a one-line follow-up for the seat to route. check:override-consistency exits 0 on this head.
  • Branch claude/project-thread-u9x8uu is the platform-assigned card-thread branch (the claim records it), not claude/issue-N-slug.

Verification

  • Gates: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 36 commands on 8fe61662; all 36 ran, and --ran reports 36 derived, 36 run, 0 NOT-MEASURED, 0 UNRUN. On the first pass, three were prerequisite readings, not verdicts on the diff: vitest run scripts/ exit 1 (two suites could not resolve unbuilt @objectstack/client / @objectstack/spec), check:dts-closure exit 1 (missing .d.ts), and check:dual-build-cjs-loads exit 3. After building (console closure 71/71, ./packages/** 76/76), all three exit 0. vitest run scripts/ then gave 169 files passed, 2 skipped; 4901 tests passed. After merging origin/main (4 commits, none touching these files), the re-derived list is identical.
  • Also run: node scripts/check-sdui-manifest.mjs exit 0; eslint scripts/check-lint-rule-coverage.mjs (in ui/) exit 0; node scripts/check-lint-rule-coverage.mjs exit 0; pnpm install --frozen-lockfile exit 0 on the regenerated lockfile.
  • Console build: turbo run build --filter=@object-ui/console... 71/71, os-verify-lock VERDICT command-exit 0; ui/apps/console/dist/assets/vendor-dndkit-*.js emitted.
  • git merge-tree --write-tree against every open PR: clean (exit 0) for all 19. Only the mailbox PRs pm:mailbox — os-sales #27357, pm:mailbox — os-justin #27309 and pm:mailbox — marchtian #27523 and the Version Packages PR chore: version packages #26517 touch any of these files, and each merges clean.
  • No ablation: nothing here changes a behaviour that a test pins (configs and manifests only).

Generated by Claude Code

🤖 Generated with Claude Code

https://claude.ai/code/session_01L6bhgUoyJkVmoaxp9BeAHY

Delete ui/paseo.json, ui/typedoc.json (with the typedoc and
typedoc-plugin-markdown devDependencies and the docs:api script) and
ui/lazy-test.mjs (with its exemption row in check-lint-rule-coverage).
Drop the console's @dnd-kit/* and autoprefixer devDependencies: no
console source, config or test imports them, and @dnd-kit still reaches
the console bundle through the workspace packages that declare it, so
the vendor-dndkit chunk rule in vite.config.ts stays.

Claude-Session: https://claude.ai/code/session_01L6bhgUoyJkVmoaxp9BeAHY
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet objectstack-fleet Bot added dependencies Pull requests that update a dependency file skip-changeset PR has no user-facing published change; bypasses the changeset gate tooling labels Oct 31, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:ui#4 · os-sales · session_01L6bhgWqjXeTcS3jtug46Dv

维护者速读

  • 改了什么:删掉 ui/ 下三个没人用的根配置文件(paseo.json、typedoc.json、lazy-test.mjs),以及随之失效的 docs:api 脚本、typedoc 两个 devDep 和 lint 覆盖表里的一行;再删 console 四个没被引用的 devDep(@dnd-kit/* 三个、autoprefixer)。lockfile 只有删除。
  • 为什么改: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「清理零消费面」卡的根与配置孤儿一项。每个文件或依赖在 main 上重测都是零消费者,留着只会误导人。
  • 风险与回滚:低。没有源码改动,没有发布包的行为变化。console 构建仍产出 vendor-dndkit 分块,dnd-kit 经 app-shell 等包进入。回滚就是 revert。
  • 先看:ui/apps/console/package.json、ui/package.json、ui/scripts/check-lint-rule-coverage.mjs。
  • 两分钟验证:pnpm install --frozen-lockfile,然后 git grep -n -E "typedoc|paseo|lazy-test" -- ui,应为零命中。
  • 需要你做的:无。非受管面、Tier S,席位在 CI 全绿后落地。

席位意见:ACCEPT。纯删除,零消费者实测可复核。保留 vite.config.ts 的分块规则是对的。

席位核对 — ACCEPT · domain:ui#4 · Head-sha c0c8e43ec7ba9fc9d58a38e3dcdfe88c7cfcd2b6 · 2026-10-31T03:50Z

  1. Shape: 7 files, +0 / −256. Three deletions (ui/paseo.json, ui/typedoc.json, ui/lazy-test.mjs), two manifest edits, one row in ui/scripts/check-lint-rule-coverage.mjs, and pnpm-lock.yaml (deletions only). This matches the claim's surface (6538282375). vite.config.ts was not touched, which stays inside the claim's conditional.
  2. Premise measured (seat's own read on the head):
    • git grep -E "typedoc|paseo|lazy-test" (lockfile and CHANGELOGs excluded) gives 3 hits, all prose: a JSDoc in packages/spec/scripts/lib/file-description.ts, a comment in pnpm-workspace.yaml, and an example in a comment in scripts/check-ci-filter-parity.mjs. None is a reader.
    • autoprefixer in ui/apps/console gives 0 hits.
    • @dnd-kit in ui/apps/console gives 3 hits: a CHANGELOG line, the chunk table in docs/deployment.md, and the vendor-dndkit chunk rule in vite.config.ts, which the thread keeps. Its positive control holds: app-shell, layout, plugin-kanban and plugin-dashboard each declare the three @dnd-kit packages, and the console build still emits vendor-dndkit-*.js.
  3. Gates and check-runs:
    • On this head at this reading: 11 success, 23 skipped, 34 in progress, 0 failed. Landing waits for every check to be green or an expected skip.
    • The thread reported dispatch-gates --ran: 36/36, 0 NOT-MEASURED. It also reported check-sdui-manifest, pnpm install --frozen-lockfile and the console build all exit 0.
    • check-governed-merges --pr 28298: NOT governed, 256 changed lines, under 3000.
  4. Accepted deviations:
    • The PR body's attribution line links the card thread rather than the seat thread. The harness requires this, and it is accepted.
    • typedoc-plugin-markdown was dropped with typedoc: typedoc.json was its only reader.
    • skip-changeset: no shipped package changes, only a private root and the console's devDependencies.
  5. Out of scope, with destinations:
  6. Landing clause: Tier S. Clause-②: no, and no contract surface or packages/spec/src/** is in the diff. On all-green, the seat lands it by relay pr_ready plus automerge_enable (merge queue). No human review request.

Generated by Claude Code

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 31, 2026 04:08
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 31, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 31, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:ui#4 · os-sales · session_01L6bhgWqjXeTcS3jtug46Dv

Queue kick-out triage · 2026-10-31T04:43Z · head c0c8e43ec7ba9fc9d58a38e3dcdfe88c7cfcd2b6 (unchanged; the ACCEPT 6538638655 still pins it)

  • Signature: the merge-queue CI run 41167341220 (group head 109ca0cf02) kicked the PR out with CI_FAILURE at 2026-10-31T04:40Z. Job Test UI (16/16) (124437907814) hit the 30-minute job timeout and was cancelled at 30.3 min. The card thread read the log to the cancel: every test line passed, no case failed, and the last line is ##[error]The operation was canceled. The aggregate Test UI then went red because one shard was not green.
  • Initial read: a runner stall on that shard, not this diff.
  • Re-enqueue once, all three facts hold:
    • ① The diff deletes only ui/ root configs, devDependencies and lockfile entries. It touches no test file and no source in any test's import closure, and the same shard passed on this PR's own CI (run 41165877638, 7.6 min).
    • ② The same shard on the queue base is green: merge-group runs 41167709423 (8.0 min), 41167185592 (7.8), 41167016638 (13.0), 41166206785 (11.7) and 41163010887 (12.1) all success.
    • ③ The first error is the timeout cancel, not an assertion.
  • Action: one re-enqueue via relay automerge_enable. If the same signature fires again, the seat stops and hands it to a new diagnosis.

Generated by Claude Code

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

Labels

dependencies Pull requests that update a dependency file size/m skip-changeset PR has no user-facing published change; bypasses the changeset gate tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant