Skip to content

[Decision] 你要的 17.1 升级把 console 首屏推高 126.7 KiB,超过今天刚裁定「不动」的天花板 41.7 KB —— 抬线、先减重,还是限期豁免? #5531

Description

@os-support-ai

升级本身已经做完了(PR #5529,除这一项外全绿)。卡住的不是代码,是一条只有你能做的门禁强度决定

一句话问题

你今天要求的 @objectstack/spec 17.1 升级,会让每个打开 console 的用户首屏多下载 126.7 KiB(gzip 后),而这恰好撞破了你今天早些时候刚裁定「保持不动」的那条总量天花板 —— 超出 41.7 KB。先接受这笔体重,还是先减重再升级?

为什么这张卡必须给你

这是门禁强度变更(抬阈值),按规矩是人工地板 —— 而且 #5490 记录你今天的裁定时用的原话就是:「Gate-strength policy is the maintainer's. ⛔ No seat should pick this.」 dev 测出红灯后没有抬阈值、没有绕过、如实报告,这是对的做法。

还有一层:抬阈值是「把 CI 弄绿」最省事、最不显眼的一招。第一次撞线就抬,等于教会整个舰队「撞线就抬」。

选项 × 真实代价

做什么用户实际感受到的代价
A把天花板抬到新实测值,永久每次打开 console 多下 126.7 KiB(实测)。今天立的「天花板不动」当天被推翻,而且要顺手改掉那条守护它的断言 —— 天花板以后不再是承诺
B先做拆分(#5325 / #5359),再落 17.1用户不增重,可能还减重。代价:17.1 和它已解锁的 5 张卡(#5074#5042#4935#5057#5126)全部再等一轮重构 —— 工期未估,拆分本身有回归风险
C17.1 现在落地,但走具名、带到期条件的一次性豁免,天花板数字不动,拆分卡提优先级用户代价与 A 完全相同(126.7 KiB 现在就付)。差别全在治理:天花板对后续每个 PR 仍是原线,这次放宽有名字、有期限、可审计

业务上 =

  • A = 「体重上限跟着实际体重走」。像健身房把体重秤的上限调到你现在的体重 —— 秤永远不会再报警。
  • B = 「先减肥再吃这顿」。健康,但这顿饭要等,而且减肥要花时间。
  • C = 「这顿记账,下个月必须减回来」。账单可见、有人负责,秤还是原来那台。

四轴论证(业务立场)

① 实际业务拉动 —— 两边都是真需求,不是投机能力面。17.1 是你今天点名要的,而且它已经实测解锁 5 张卡;但「首屏多 126.7 KiB」落在每一个终端用户身上,不是内部效率问题。这条轴不偏向任何一方,它只说明:这不是「小事按默认办」的场景。

② 项目长远合理性 —— 天花板存在的唯一意义就是拦住这种增长。今天刚裁「不动」,当天为第一个撞上它的变更抬高,那这条线以后就只是个会自动让路的数字。A 的长期代价不是 126 KiB,是这条承诺的可信度。

③ 防 AI 犯错(这条最重) —— 出错时谁看到什么:如果抬阈值成为惯例,下一次增长就没有任何人看到 —— 它会安静地落进新抬出来的余量里,直到某天用户抱怨首屏慢。这正是这道门当初为 #5266 那次 89 KiB 事故建起来的原因,而这次的 126.7 KiB 比它还大。门没坏,门正在按设计工作。C 让放宽这件事必须留名、留期限,而不是改个常量就消失。

④ 创业阶段不扩散 —— 反直觉的一点:这 126.7 KiB 大部分不是我们自己加的功能,是 spec 自己的 dist 长了 8%。为一次依赖升级先做一轮拆分重构,是把有限的工程预算花在减重上而不是做功能上 —— B 的隐性成本比它看起来高,除非拆分本来就快做完了。

推荐

荐 C,回退 A

理由:用户代价 A 和 C 一模一样,但 C 不用付「天花板失去可信度」这笔长期账;而 B 只有在拆分已经接近可落地时才划算 —— 而这一点我看不见(见下)。

如果你觉得治理开销不值这个事,A 是诚实的选择,只是请连带确认「天花板可以为依赖升级让路」这条先例。

本分析看不见什么

裁后我会怎么执行(你不用管)

回一个字母即可;或「C,但 X」—— 若 X 使豁免机制不成立,自动落到 A。

① 项目长远合理性:天花板今天刚裁「不动」,当天为第一个撞线的变更抬高,它以后就不再是承诺(缩小特例:C > B > A)。
② 实际业务拉动:17.1 是今天点名要的升级且已解锁 5 张卡,但 126.7 KiB 落在每个终端用户首屏上 —— 两侧都是真拉动,不适用「无拉动默认 defer」。
③ 防 AI 犯错:抬阈值是「把 CI 弄绿」最不显眼的一招;抬了之后下一次增长没有任何人看到,静默落进新余量,而这次的量比这道门当初要拦的 89 KiB 事故还大(响亮拒绝 > 静默容忍:C/B > A)。
④ 创业阶段不扩散:这 126.7 KiB 主要是 spec dist 自己长了 8%,不是我们新增的能力;为一次依赖升级先做整轮拆分,是把工程预算从做功能挪到减重(B 的隐性成本被低估)。
推荐:C(具名限期豁免,天花板不动),回退 A(永久抬线并确认先例);B 仅在拆分接近可落地时更优。
本分析看不见什么:126.7 KiB 对真实用户的加载时间(只有字节数,没有网络实测)、拆分卡的工期与风险、这 126 KiB 里可拆比例、以及 CI Bundle Analysis 的独立确认(数字来自 dev 本地实测,已对 origin/main 反查)。


出处:PR #5529(Fixes #5328)· 天花板裁定 #5468 / 执行卡 #5490(原话「其他接受」= A now + C next, B rejected)· 量具 #5324 / PR #5463#5466 · 拆分方向 #5325 / #5359 · 历史事故 #5266(89 KiB)

⛔ 定级、typedomain:* 归分诊席;本卡按跨座位升级规则落 needs-user-decision,不自定级。

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-reponeeds-user-decision

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions