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
Migrated from objectstack-ai/objectstack#7146 under the file-at-destination ruling (objectstack-ai/objectstack#7167, maintainer 2026-08-10). Originally filed 2026-08-09T23:18:02Z. The full prior thread — including triage rulings and hold/restart conditions — remains on the source issue and MUST be read before acting on this card.
观察类(不影响当前用户:唯一已知实例已由 objectstack#7139 / objectui PR objectstack-ai/objectstack#4007 删除)。发现于 objectstack#7139 的实施过程。
事实
objectui 仓根
eslint.config.js没有配置no-console规则(全仓 grepno-console零命中)。因此 objectstack#7139 那句位于模块作用域、加载即打印的console.log('Registering object-map...')从落库到被发现,一路没有任何自动化环节报过它 ——pnpm lint对它完全沉默,是靠人工阅读发现的。修 objectstack-ai/objectstack#7139 时顺带核实过:
packages/plugin-*/src/index.tsx19 个文件里,这类会执行的遗留调试输出目前只有那一处(plugin-editor的命中是defaultProps.value示例代码字符串)。也就是说现在仓库是干净的,这条单纯粹是「拦网缺失」,不是「有 bug 待修」。为什么不在 objectstack-ai/objectstack#7139 的 PR 里顺手开
开
no-console是影响多个包的策略决定,不是 XS 单能顺带夹带的改动,至少要先答三个问题:console.warn/console.error运行时诊断,例如packages/plugin-map/src/ObjectMap.tsx三处(无效 map 配置、API provider 未实现、取 schema 失败),以及packages/core/src/registry/Registry.ts里register()按设计发的缺 namespace / 裸名 fallback 冲突告警。合理形态大概是no-console: ['error', { allow: ['warn', 'error'] }],但这需要确认「debug 噪音走 log/info/debug、诊断走 warn/error」是否就是本仓想要的约定。packages/core/src/utils/debug-collector.ts似乎已有相关设施,未细看),规则应该配合它一起定,而不是只堵不疏。error一次性清干净,还是先warn逐步收敛。示例代码、脚本(scripts/**)、测试文件通常要单独 override。建议
由 PM 分诊决定要不要做、以什么范围做。若要做,建议独立 PR:先统计全仓命中,再定 allow 列表与 overrides,附一条针对「模块作用域 debug 输出」的说明。真正想守的不变量是「import 一个包不该往使用者控制台写噪音」—— PR objectstack-ai/objectstack#4007 已用
packages/plugin-map/src/index.registration.test.tsx把这条钉在 plugin-map 上(spy log/info/debug 后vi.resetModules()再 import,断言零输出),那个测试形态可以直接复制到其他 plugin,是比 lint 规则更贴近意图的另一条路,两者不互斥。相关:objectstack#7139(缺陷本体)、objectui PR objectstack-ai/objectstack#4007(修复 + 单包钉子)。