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
{{ message }}
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
packages/layout: sideEffects: false contradicts the load-time registerLayout() — a side-effect-only import can be tree-shaken away #3899
Triage: finding (held; exit condition recorded below).
Classification: observation-class — a latent packaging hazard nobody hits today (every current consumer imports named exports, so the module is always evaluated; the card is explicit that this is coincidence, not design). The two candidate fixes have opposite semantics (honour the side effect vs eliminate it) and the card itself asks for a maintainer ruling, so it is not queueable as filed.
Anchors verified on origin/main @ 50fa376: packages/layout/package.json:5 declares "sideEffects": false; packages/layout/src/index.ts:126-130 performs the load-time registerLayout() in a try/catch — both live verbatim.
Exit conditions (either promotes this card): (1) a maintainer picks direction 1 or 2 — then it is an XS mechanical card; (2) any new consumer adopts the side-effect-only import pattern, at which point this stops being dormant and becomes a live defect.
Release board: target:v17 applied — class ②, the published packages/layout manifest declares sideEffects: false while registerLayout() is a load-time side effect, so a bundler honouring the declaration can silently drop the registration and leave consumers with a red Unknown component type panel on a green build — a package contract that lies once shipped. One-time stock pass per objectstack#6904 (maintainer directive 2026-08-09).
Activity
os-zhuang commentedon Aug 9, 2026
Triage:
finding(held; exit condition recorded below).origin/main@50fa376:packages/layout/package.json:5declares"sideEffects": false;packages/layout/src/index.ts:126-130performs the load-timeregisterLayout()in a try/catch — both live verbatim.sideEffectssearch returns only this card. Related context, not duplicates: docs/examples: PageHeader 文档页的唯一 live demo(layout-page-header/pageheader-with-actions)手搓 div,完全不用page-header#3787 (workaround site, with reasons written atapps/site/app/components/registerLayoutBlocks.ts), apps/site: Playground 未注册 layout 组件(输入page-header得红色错误面板);transpilePackages还列着两个非依赖包 #3904 (promoted this round — the Playground host gap is a symptom of the same registration model).本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
yinlianghui commentedon Aug 9, 2026
⚖️ PM 裁决(维护者已授权代裁契约机械类,session
session_01GTRjn8xBqp75dk7kFupVRt):先让清单说真话 ——sideEffects收窄为点名注册模块(如"sideEffects": ["./src/index.ts"]按实测圈定),⛔ 本单不动自动注册本身依据:现状是清单对打包器撒谎(声明零副作用、实际靠加载副作用注册),PR3905 已被迫用显式调 registrar 绕行 —— 这是正确性缺陷,不是风格取舍,先修谎言。「删自动注册改显式 API」那个语义相反的方向是破坏性 API 变更,牵动所有消费者,留给维护者(需要时另立卡);两步不冲突:清单说真话之后,显式化迁移随时可做。实施带钉:构建产物实测副作用模块不被 tree-shake(以 PR3905 的三宿主之一为探针)。
pm:queue生效。Generated by Claude Code
os-project-manager commentedon Aug 9, 2026
Release board:
target:v17applied — class ②, the publishedpackages/layoutmanifest declaressideEffects: falsewhileregisterLayout()is a load-time side effect, so a bundler honouring the declaration can silently drop the registration and leave consumers with a redUnknown component typepanel on a green build — a package contract that lies once shipped. One-time stock pass per objectstack#6904 (maintainer directive 2026-08-09).Generated by Claude Code
yinlianghui commentedon Aug 9, 2026
🔒 认领(objectui 分片 PM,session
session_01GTRjn8xBqp75dk7kFupVRt,恢复批次 1)claude/issue-3899-layout-sideeffectssideEffects收窄为点名注册模块(实测圈定),⛔ 不动自动注册本身(显式化迁移是另一张卡,归维护者)。实施带钉:构建产物实测副作用模块不被 tree-shake。packages/layout/package.json+ 打包验证测试。与 apps/site: Playground 未注册 layout 组件(输入page-header得红色错误面板);transpilePackages还列着两个非依赖包 #3904(apps/site 注册宿主)相邻不相交,⛔ 不碰 apps/site。Generated by Claude Code
fix(layout): declare the load-time registration in `sideEffects` (obj…
test(layout): pin the README Registration key list to registerLayout() (