Skip to content

[Decision] after objectui#6771 converges ten readers onto children, the containment diagnostic puts a FALSE not-a-container on the one key they do read — fix the flag, or fix the tier that reads it #9910

Description

@os-sales

Ruled: 5814512168 · letter A (declare-and-pin), Q2 A, Q3 A — port objectstack#19969 · 2026-09-24T12:58Z

Dedupe words: isContainer · container-declaration-baseline · not-a-container · validateTree containment · converged children readers

Filed by the domain:ui execution seat 3 (session session_01Xm4WFhEe5mwcgyqHjxR2hn) out of a CONTRARY FACT the os-dev measured while implementing objectui#6771's ruled step 2 (report 5731521453, PR objectui#9895). ⚠️ The measurements below are the dev's; this seat re-read the ruling texts and routed it, and ⛔ did not re-run the probes — the claiming seat re-derives before acting.

Blocked-by: #6771

维护者速读

objectui#6771 正在执行你裁过的退役:十个组件过去读 body,现在改读 children。改完之后出现一件没人预见的事 —— 那条"这个组件不接受子节点"的告警,从一个它们根本不读的键,搬到了它们唯一真正读的键上。

业务上的含义:作者在 Studio 里写出一个能正常渲染的侧边栏,平台却在旁边告诉他「这里不能放子节点」。⇒ 这正是 objectui#6771 这张 p1 卡本来要消灭的那类缺陷 —— 一个假告警,压在唯一能用的拼法上 —— 只是换了个位置,没被消灭。

⚠️ 它今天还没发生:#6771 合入的那一刻才发生。dev 已按裁决字面执行、⛔ 未自行修复,并把代价钉成会变红的断言,所以它不会悄悄溜走。要你裁的是修哪一层。

os-decision-facets

  • ① 项目长远合理性 —— 告警该由「这个注册实际读不读子节点列表」推导出来,还是继续由一个手写的 isContainer 旗标决定?旗标要和代码并行维护,而它们已经在这张卡上第一次分叉了:代码改了读法,旗标没跟上。声明与实现分家,正是本项目反复付账的那个形状。
  • ② 实际业务拉动 —— 实测的拉动是:#6771 一落地,十个注册会在它们唯一能用的键上收到假告警。⛔ 不是投机面,是这张 p1 自己制造的下游。
  • ③ 防 AI 犯错 —— 这一层的告警就是给 AI 作者的契约(finding(sdui-parser/components): the manifest tier reports unknown-prop on body — the one child-list key 10+ registrations actually honour #6771 卡面原话)。一个从代码推导出来的读数不可能对一个真的渲染出来的注册说谎;一个旗标可以,而且已经说了。
  • ④ 创业阶段不扩散 —— 改旗标要动 8 处注册 + 8 条基线条目,并把旗标机制原样留下来等下一次分叉;改推导只动这一层的一个谓词。永久面更小的是后者,哪怕这一刀切得更深。

Prior rulings read: iscontainer,container-declaration,not-a-container → 0 hits; none

⭐ 该零命中带活仪器证据:同一脚本以 enforce-or-remove 作正控,同一趟扫出 2 条 ADR 命中、106 条 packages/spec/src 命中、2 个 ADR decision candidate。仪器是亮的,上面的零是真的零。

选项 × 真实代价

字母 做什么 作者/宿主可感知的后果 代价
A 只给 8 个 sidebar-* 注册声明 isContainer: true,badge / alert / tooltip / button 按「标签回退而非布局容纳」的理由继续排除 侧边栏家族的假告警消失,另外两个仍按原理由排除 ⚠️ 它改的是 objectui#6804 已裁的population,而那条裁决明写要的是「带理由的普查豁免、⛔ 不是 isContainer」;旗标机制原样留下
B 十个全部按已裁的样子排除,接受侧边栏家族唯一子节点键上的假告警 作者继续看到那条假告警 已由 dev 钉成会红的断言与十条 reason,⛔ 不会淡出;但缺陷仍在
C 改这一层:容纳诊断读注册实际的子节点读法,而不是 isContainer 旗标 十个全部修好,且以后新增的注册不会再分叉 ⚠️ 影响面本席未测:今天还有谁在读这个旗标、那个位置拿不拿得到"实际读法"

推荐

荐 C,回退 B;⛔ 不荐 A。

  • 只看① 选 C:①问的是"声明与实现会不会再次分家",而 A 和 B 都把会分家的那个旗标原样留着 —— 它已经分家过一次了,就在这张卡上。
  • ②③④ 是否翻转:否。② 的拉动是十个注册而不是八个;③ 明确反对"可以说谎的旗标";④ 比的是永久面而不是本次改动行数,C 更小。
  • ⛔ 为什么不是 A(它是 dev 的推荐,本席不沿用):A 去改一条已裁的 population,而 C 落地后那条改动本身又要回退 —— 一个键被改两次,正是 2026-08-27「短期不考虑渐进」拒过的形状。若你要 #6771 先落地,诚实的过渡是 B(代价已钉住、会变红),⛔ 不是 A。
  • 置信缺口(明说看不见的):① C 的影响面未测 —— 本席不知道这一层之外还有谁读 isContainer;② 「8 个 sidebar-* 不在 PUBLIC_BLOCKS、所以不付 react-page 标识符代价」是 dev 的读数,本席未重取;③ objectui#6804 的裁决原文本席只读了 dev 引述的那半句 ground,⛔ 未通读全文。

裁后执行段(你只裁方向)

  • 裁 C ⇒ 本席立一张执行卡改这一层的谓词,本卡挂 Blocked-by: 指向它;#6771 照常落地,代价钉住到 C 合入为止。
  • 裁 B ⇒ 本卡转 pm:on-hold,Restart-when: 写成"当有人再次碰这一层的容纳判据时重验",⛔ 不留一张无机制唤醒的卡。
  • 裁 A ⇒ 需要你同时确认它对 objectui#6804 已裁 population 的偏离;本席会在那张卡上记一笔,⛔ 不默默改。
  • 无论哪条:#6771 的 PR 不因本卡停下,它已按裁决字面执行并钉住代价。

Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpriority:p1

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions