一句话
#7210 的裁定 a′ 逐字写着 「Clause-② no (no contract change; the constant is internal and the footnote is renderer copy)」,而落地的 PR #7391 在 packages/react/src/index.ts 上发布了五个符号。裁定的前提没有成立,该发布面今天已经在 main 上。⛔ 本席不裁——这是对已发布 API 的处置,且与维护者裁定的字面直接相抵。
现在做便宜,以后不便宜:审计实测,除四个渲染器与测试外今天没有任何消费者 import 这五个符号中的任何一个。这个窗口一旦有下游采纳就关上了。
发布了什么
packages/react/src/index.ts:100-113:
export{NON_GRID_ROW_CEILING,NON_GRID_ROW_CEILING_TOP,applyNonGridRowCeiling,NonGridRowCeilingNote,}from'./utils/nonGridRowCeiling.js';exporttype{NonGridCeilingResult}from'./utils/nonGridRowCeiling.js';为什么会走到这里(责任在派发席,记在明处)
不是执行车道擅自扩面。那一轮本席自己下的 barrel 围栏把出路堵死了:#7210 评论 5511301369 声明 core 归 #7349、types+components 归 #7182 当轮所有,「需要就停下回报」。四个渲染器共用一个常量,唯一没被围住的包是 react,而 react没有 subpath export ⇒ 「把常量放进 react」在物理上只能等于「发布它」。
⚠️ 车道当时应当停下回报(围栏原话如此),而不是铸出 API;但围栏的写法没有点明「若唯一剩下的家是已发布入口,停」。两边各承一半,前一半是本席的。
index.ts:100-104 的注释还把这段历史写成了一个实测为假的技术理由——「the only package all four already depend on」;四个插件的 package.json 各自同时依赖 core、components、types。该注释的订正已单独立卡 #7507(仅改注释,⛔ 不动符号)。
逐符号的可支撑性(审计读数)
| 符号 | 读数 |
|---|
applyNonGridRowCeiling / NonGridCeilingResult | 可支撑,可加性演进(可选 options 参数、可加字段)。⚠️ 但 total 非来源可信:服务端不报 total 时 data-objectstack 用 records.length 顶替(packages/data-objectstack/src/index.ts:3624-3646),这类服务端上脚注会读成「first 2000 of 2001」。ObjectStack 服务端报 total,故属边界注记。 |
NON_GRID_ROW_CEILING | 可支撑,但家不对:applyNonGridRowCeiling 是 core 自己的 extractRecords 的包装,四个插件本来就从 core import 它。 |
NON_GRID_ROW_CEILING_TOP | 实现细节被发布。它存在只因机制被劈成两半($top 在调用点、切片在 helper)。任何未来的截断探测策略(hasMore、可信 total)都会让它退化成残件。 |
NonGridRowCeilingNote | 形状是陷阱:收 drawn/total/truncated 三个散 prop,而每个调用点都硬写 drawn={NON_GRID_ROW_CEILING}。组件从不见到它本该渲染的 NonGridCeilingResult ⇒ 不自洽的脚注是可表达的。(组件出现在该入口本身有先例:SchemaRenderer、I18nProvider、ElementDataSourceGate。异议在形状,不在类别。) |
选项
A —— 迁 @object-ui/core,react 保留再导出(审计的建议)。 把 NON_GRID_ROW_CEILING、applyNonGridRowCeiling、NonGridCeilingResult 移到 core(extractRecords 旁边),react 继续 export … from '@object-ui/core'——react 早已这样再导出下层符号(export { I18nProvider, … } from '@object-ui/i18n'),先例在。零破坏。 另加性收 _TOP(导出一个 nonGridRowCeilingQuery(): { $top },调用点再不手写 +1)与重塑 Note(收 result: NonGridCeilingResult,drawn 由 result.rows.length 推得,旧散 prop 保留为 deprecated 路径)。
⇒ 修好了家与形状,但五个符号仍是公开 API,裁定 a′ 的「internal」并未回复。
B —— 回到裁定的字面:收回发布面。 五个符号全部下架,常量落在一个四个插件都能吃到而不经已发布入口的位置。⚠️ 本席读下来这可能做不到:每个包都只有唯一入口,react 无 subpath export ⇒ B 实际要求先给某个包开 subpath export(或新开一个内部包),那本身是更大的一步。若维护者要 B,请一并裁明这一步走哪条。
C —— 就地追认。 承认裁定 a′ 的「internal」前提在本仓的包形状下不可达,把五个符号作为公开 API 追认,只做 #7507 的注释订正与 _TOP 的文档降级(标注为派生/测试用)。
⇒ 最省,但把一个「因排期围栏而选中的家」永久冻进公开 API。
本席倾向:A
理由:(a) 真实需求——core 是四个插件本来就依赖并从中取 extractRecords 的包,家对了代码才读得顺;(b) 长期健全——_TOP 与 Note 的两处加性修整把「不自洽脚注可表达」和「调用点手写 +1」两个真陷阱都关掉,且都零破坏;(c) AI 不易做错——nonGridRowCeilingQuery() 让 +1 只有一处;(d) 创业期尺度——今天零外部消费者,A 是一次性的便宜迁移,B 要先开 subpath export(实现优先、无人拉动),C 则把已知错的家冻住。
⛔ 但 A 不回复裁定 a′ 的字面前提,所以它需要维护者点头而不是本席自裁。
派工状态
⛔ 本卡不可派工,needs-user-decision。不带 pm:queue 标签——本卡在裁定前不进队列,这是 #6853 点名的缺陷(卡片自己说不可派工,而标签仍在招手)。
不受本卡阻塞、已单独立卡并本轮派工的:#7507(pin 不判定上限、docblock 判别机制写错、changeset 档位与文案、calendar 陈旧 ceiling、假的依赖注释)。审计全文逐字见 #7391 评论 5527977938。
一句话
#7210 的裁定 a′ 逐字写着 「Clause-② no (no contract change; the constant is internal and the footnote is renderer copy)」,而落地的 PR #7391 在
packages/react/src/index.ts上发布了五个符号。裁定的前提没有成立,该发布面今天已经在main上。⛔ 本席不裁——这是对已发布 API 的处置,且与维护者裁定的字面直接相抵。现在做便宜,以后不便宜:审计实测,除四个渲染器与测试外今天没有任何消费者 import 这五个符号中的任何一个。这个窗口一旦有下游采纳就关上了。
发布了什么
packages/react/src/index.ts:100-113:为什么会走到这里(责任在派发席,记在明处)
不是执行车道擅自扩面。那一轮本席自己下的 barrel 围栏把出路堵死了:#7210 评论 5511301369 声明
core归 #7349、types+components归 #7182 当轮所有,「需要就停下回报」。四个渲染器共用一个常量,唯一没被围住的包是react,而react没有 subpath export ⇒ 「把常量放进 react」在物理上只能等于「发布它」。index.ts:100-104的注释还把这段历史写成了一个实测为假的技术理由——「the only package all four already depend on」;四个插件的package.json各自同时依赖core、components、types。该注释的订正已单独立卡 #7507(仅改注释,⛔ 不动符号)。逐符号的可支撑性(审计读数)
applyNonGridRowCeiling/NonGridCeilingResulttotal非来源可信:服务端不报total时data-objectstack用records.length顶替(packages/data-objectstack/src/index.ts:3624-3646),这类服务端上脚注会读成「first 2000 of 2001」。ObjectStack 服务端报total,故属边界注记。NON_GRID_ROW_CEILINGapplyNonGridRowCeiling是core自己的extractRecords的包装,四个插件本来就从coreimport 它。NON_GRID_ROW_CEILING_TOP$top在调用点、切片在 helper)。任何未来的截断探测策略(hasMore、可信total)都会让它退化成残件。NonGridRowCeilingNotedrawn/total/truncated三个散 prop,而每个调用点都硬写drawn={NON_GRID_ROW_CEILING}。组件从不见到它本该渲染的NonGridCeilingResult⇒ 不自洽的脚注是可表达的。(组件出现在该入口本身有先例:SchemaRenderer、I18nProvider、ElementDataSourceGate。异议在形状,不在类别。)选项
A —— 迁
@object-ui/core,react保留再导出(审计的建议)。 把NON_GRID_ROW_CEILING、applyNonGridRowCeiling、NonGridCeilingResult移到core(extractRecords旁边),react继续export … from '@object-ui/core'——react早已这样再导出下层符号(export { I18nProvider, … } from '@object-ui/i18n'),先例在。零破坏。 另加性收_TOP(导出一个nonGridRowCeilingQuery(): { $top },调用点再不手写+1)与重塑Note(收result: NonGridCeilingResult,drawn由result.rows.length推得,旧散 prop 保留为 deprecated 路径)。⇒ 修好了家与形状,但五个符号仍是公开 API,裁定 a′ 的「internal」并未回复。
B —— 回到裁定的字面:收回发布面。 五个符号全部下架,常量落在一个四个插件都能吃到而不经已发布入口的位置。⚠️ 本席读下来这可能做不到:每个包都只有唯一入口,
react无 subpath export ⇒ B 实际要求先给某个包开 subpath export(或新开一个内部包),那本身是更大的一步。若维护者要 B,请一并裁明这一步走哪条。C —— 就地追认。 承认裁定 a′ 的「internal」前提在本仓的包形状下不可达,把五个符号作为公开 API 追认,只做 #7507 的注释订正与
_TOP的文档降级(标注为派生/测试用)。⇒ 最省,但把一个「因排期围栏而选中的家」永久冻进公开 API。
本席倾向:A
理由:(a) 真实需求——
core是四个插件本来就依赖并从中取extractRecords的包,家对了代码才读得顺;(b) 长期健全——_TOP与Note的两处加性修整把「不自洽脚注可表达」和「调用点手写+1」两个真陷阱都关掉,且都零破坏;(c) AI 不易做错——nonGridRowCeilingQuery()让+1只有一处;(d) 创业期尺度——今天零外部消费者,A 是一次性的便宜迁移,B 要先开 subpath export(实现优先、无人拉动),C 则把已知错的家冻住。⛔ 但 A 不回复裁定 a′ 的字面前提,所以它需要维护者点头而不是本席自裁。
派工状态
⛔ 本卡不可派工,
needs-user-decision。不带pm:queue标签——本卡在裁定前不进队列,这是 #6853 点名的缺陷(卡片自己说不可派工,而标签仍在招手)。不受本卡阻塞、已单独立卡并本轮派工的:#7507(pin 不判定上限、docblock 判别机制写错、changeset 档位与文案、calendar 陈旧 ceiling、假的依赖注释)。审计全文逐字见 #7391 评论 5527977938。