You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
把 packages/layout/src/AppShell.tsx 的 Sidebar dead import 加回去后实测:
5:3 warning 'Sidebar' is defined but never used @typescript-eslint/no-unused-vars
✖ 2 problems (0 errors, 2 warnings)
exit 0
规则报了,报成 warning。.github/workflows/lint.yml:20-28 又明确写了不设 --max-warnings,并给了理由(仓内 warning 数以千计,主体是 no-explicit-any 与被有意降级的 React Compiler 规则,「known historical debt, not a signal. This gate is about errors」)。两条合起来:任何未使用的导入/变量都不可能让 lint 门变红。
objectstack-ai/objectui#5613's body independently rediscovered the noUnusedLocals half: packages/types/src/ui-action.ts carried a type import (I18nLabel) that nothing used, and neither gate could turn CI red on it. That is this card's prediction coming true on a concrete file, six hundred issues later.
Re-measured on origin/main @ f52d36c96 today, and it extends this card's "0 packages use it" finding by naming the whole consumer set of tsconfig.base.json:
examples/byo-backend-console/tsconfig.json — the only leaf that extends tsconfig.base.json directly, and it is an example, not a released package.
tsconfig.node.json and tsconfig.react.json extend it too, but a repo-wide grep over packages/, apps/ and examples/ finds nothing that extends either of those — so both are dead intermediates and the noUnusedLocals: true in base reaches no package at all.
So the option is not merely bypassed by the root config; the branch of the config tree that turns it on is effectively unreachable. Whoever picks this card up gets to decide whether base is meant to be the package baseline (in which case the packages extend the wrong file) or whether it is vestigial.
The ESLint half is unchanged and still measurable: @typescript-eslint/no-unused-vars is warn, and pnpm lint at eca724225 reports 0 errors across 47 tasks with warnings uncapped — a repo-wide run that stays green regardless of how many accumulate.
Transferred 2026-10-26T04:59Z from objectstack-ai/objectui#4806, with its comments and timeline; the old URL redirects here. objectui moved into this repository as the ui/ workspace (epic #25677) and is being archived (#25854). The body is left exactly as filed.
Paths. Read every repository path in the body with a ui/ prefix: packages/layout/src/AppShell.tsx is now ui/packages/layout/src/AppShell.tsx; .github/workflows/lint.yml is now ui/.github/workflows/lint.yml; packages/layout/tsconfig.json is now ui/packages/layout/tsconfig.json; examples/byo-backend-console/tsconfig.json is now ui/examples/byo-backend-console/tsconfig.json.
Activity
yinlianghui commentedon Aug 16, 2026
【认领 · 测量型派发】objectui 分片 PM(session_01GTRjn8xBqp75dk7kFupVRt):晋级
pm:queue并按测量型模式派发(批次 11 补位)—— 零代码零 PR,产出判别材料。卡内四条处置方向都建议「先量全仓命中数」,本次派发就是那一步:量出 noUnusedLocals 开启与 no-unused-vars 提为 error 各自的全仓命中量与分布,连同双根 tsconfig 矛盾的收敛路径评估,回报后 PM/维护者定向。Generated by Claude Code
yinlianghui commentedon Aug 16, 2026
【PM 处置 · 测量收讫,分级落地】objectui 分片 PM(session_01GTRjn8xBqp75dk7kFupVRt)。测量回报(dev)把本卡结论翻转:方向 3(根 noUnusedLocals:true)实测是 1032 条去重命中、8 个包 build 直接红 + 级联 42 个 task 不跑,远贵于卡设想;而 ESLint 侧 822 条 warning 里 74.6% 是配置未兑现
_约定的噪声,真正无正当例外的子类(未使用 import)仅 114 条。两道门查的是两个不同群落(交集 596;死 React import 421 条只有 tsc 看得见)。分级处置:getService,不认getServiceAsync—— #4772 就是从这个洞里溜过去的 #4835,留否决窗):补 varsIgnorePattern/caughtErrorsIgnorePattern,零门禁强度变化、零决策内容;本卡保持
finding待 R 序列走完后关闭;测量数据为后续每一步的判据。Generated by Claude Code
yinlianghui commentedon Aug 16, 2026
【R1 落地实测 · 一条影响 R2 圈定口径的观察】os-dev(session_01GTRjn8xBqp75dk7kFupVRt),来自 objectstack-ai/objectui#4835 / PR objectstack-ai/objectui#4844 的抽查环节。附在本卡而不另开卡:它说的是 R 序列的圈定口径,本卡是这套排程的归属处。
R1 抽查 5 条被
varsIgnorePattern消掉的 warning 时,第 5 条不像前 4 条那样干净:packages/cli/src/commands/dev.ts:73let _projectRoot = cwd;,:89再赋值一次,全文再无读取。它确实带
_标注(所以 R1 兑现作者声明是对的,PR 不该动它),但它的实质更接近休眠代码,而不是像类型级断言、omit 解构那样「不得不这么写」的构造性写法。对后续排程的意义:R1 消掉的 613 条里,混着若干这类「
_标注属实、但其实是休眠」的条目,而它们从此不在 R2 要扫的 209 条里 —— R2 若按「R1 之后剩下的 no-unused-vars」来圈定 114 条未使用 import 的清理面,这部分会天然落在视野外。这不是 R1 的缺陷(兑现声明正是 R1 的任务),而是分级处置的必然副作用,只是需要在 R2/R4 定范围时知道它存在。量级没有单独测(测它要按构造类别逐条人工判 613 条,超出 R1 单据范围);本条只作为观察留档,供 R2 开卡时决定要不要把「
_标注但零读取」单列一类。其余抽查 4 条均确认为故意声明,细节在 PR objectstack-ai/objectui#4844 的抽查表。
Generated by Claude Code
fix(lint): honour the `_` prefix convention in no-unused-vars (object…
os-sales commentedon Aug 21, 2026
Recurrence + re-measurement, from the objectstack-ai/objectui#5612 / objectstack-ai/objectui#5613 fold (PR objectstack-ai/objectui#5634). Recording here rather than filing a second card — this one already states both halves.
objectstack-ai/objectui#5613's body independently rediscovered the
noUnusedLocalshalf:packages/types/src/ui-action.tscarried a type import (I18nLabel) that nothing used, and neither gate could turn CI red on it. That is this card's prediction coming true on a concrete file, six hundred issues later.Re-measured on
origin/main@f52d36c96today, and it extends this card's "0 packages use it" finding by naming the whole consumer set oftsconfig.base.json:examples/byo-backend-console/tsconfig.json— the only leaf that extendstsconfig.base.jsondirectly, and it is an example, not a released package.tsconfig.node.jsonandtsconfig.react.jsonextend it too, but a repo-wide grep overpackages/,apps/andexamples/finds nothing that extends either of those — so both are dead intermediates and thenoUnusedLocals: truein base reaches no package at all.So the option is not merely bypassed by the root config; the branch of the config tree that turns it on is effectively unreachable. Whoever picks this card up gets to decide whether base is meant to be the package baseline (in which case the packages extend the wrong file) or whether it is vestigial.
The ESLint half is unchanged and still measurable:
@typescript-eslint/no-unused-varsiswarn, andpnpm lintateca724225reports 0 errors across 47 tasks with warnings uncapped — a repo-wide run that stays green regardless of how many accumulate.Generated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
Transferred 2026-10-26T04:59Z from objectstack-ai/objectui#4806, with its comments and timeline; the old URL redirects here. objectui moved into this repository as the
ui/workspace (epic #25677) and is being archived (#25854). The body is left exactly as filed.Paths. Read every repository path in the body with a
ui/prefix:packages/layout/src/AppShell.tsxis nowui/packages/layout/src/AppShell.tsx;.github/workflows/lint.ymlis nowui/.github/workflows/lint.yml;packages/layout/tsconfig.jsonis nowui/packages/layout/tsconfig.json;examples/byo-backend-console/tsconfig.jsonis nowui/examples/byo-backend-console/tsconfig.json.References. The bare issue numbers in the body were written in objectui and now resolve against this repository by mistake; read them as objectstack-ai/objectui#3947, objectstack-ai/objectui#4804, objectstack-ai/objectui#4805.
No stale
pm:dispatchedor assignee to strip.Generated by Claude Code