Skip to content

decision: #21980 merge condition — a no-package by-name read of a shared view name now answers the stored copy, not the owner's shipped item (before the change it depended on registry order): land PR #22023, or hold it? #22027

Description

@objectstack-fleet

Ruled: 6028832449 · letter A · 2026-10-07T01:26Z

Filing gate: ② a decision only the maintainer can make. Filed by the triage seat (objectstack-wide, seat post #6015, session_01AavokzJ5DndAwitDXvKy4U) on the maintainer's instruction 「需要我决裁的问题,立决策卡」. ⛔ Not a claim. Once ruled, the ruling is recorded on this card and on the parent, and this card closes.

Parent: #21980 (p2 security, in flight; the claim stands). The ruling being read is 6020103367 (batch #282 item 1, decision card #22004, pointer 6020226416). The seat's question is 6021658627; the dev's report is 6021602255. Classes, positions and functions only.

维护者速读

上次你裁 A 时附了一个合入条件:在"不分环境"的运行方式下,不指定包、按名称读取两个包共用的名字,改动后必须和改动前一样,返回属主包发布的那一份,绝不能返回空。

开发在两种内核、两种注册顺序下各读了三次,加起来测了 72 次读取:

推荐 A。回一个字母:A / B。

四棱(os-decision-facets)

  • ① 项目长远合理性:A 让答案由一条成文的读取顺序决定(ADR-0005:存储层优先于代码层),不再取决于注册顺序,比改动前更确定。B 要在"不指定包"的读取上另立一条"属主优先"规则,与 ADR-0005 的层叠顺序方向相反,需要另一次裁决。
  • ② 实际业务拉动:公开表单撤回的安全修复(p2)等着这次合入,并且在最后一个 17.x 的清单上(decision: before the v18 line opens, does main publish one last 17.x release to npm? #22009 的裁决)。
  • ③ 防 AI 犯错:A 下的答案有 pin (h) 钉住:有答案、两种内核返回同一份、与环境级列表一致。B 会扩大范围,并推迟一个安全修复。
  • ④ 创业阶段不扩散:A 不新增键、不新增规则;B 新增一条读取规则。

Prior rulings read: view container, by-name read, overlay order. Read: ruling 6020103367 (#22004); ADR-0005 (environment → code layered resolution: a stored layer of a name wins); #21967's no-package "any expansion" reading. Thread: #21980 6021602255, 6021658627. ⛔ No prior ruling answers the wording question; it is about the ruling's own text.

一句话问题

裁决附带的合入条件写的是"返回属主包发布的那一份",但它要防的是"返回空"。实测从不返回空,但也不总是返回属主那一份,而且改动前同样不是。条件算不算满足?

选项 × 代价

选项 做什么 代价
A 条件视为满足,合入 PR #22023(Clause-②: no (narrowing),minor changeset 加 BREAKING 行) 改动前属主先注册的那些格子里,答案从属主发布的那份变成存储副本(ADR-0005 顺序);返回内容里的包标识错位由 #22024 单独修
B PR 暂不合入,先让不指定包的按名读取改为属主优先 新范围,要另立裁决;安全修复和最后一个 17.x 一起推迟;与 ADR-0005 层叠顺序相反

推荐 + 回退 + 置信缺口

裁后执行

Activity

  1. objectstack-fleet commented on Oct 6, 2026

    @objectstack-fleet
    ContributorAuthor

    needs-user-decision added. This amends my filing (R207): I copied the labels from #22004 as it reads after its ruling, and a ruling swaps needs-user-decision out for a working state. So this card went into the box without the label that the box reads (#22006 and #22007, filed the same day, carry it). The question, the options and the recommendation (A) are unchanged. The parent #21980's PR #22023 is still a draft at this write, waiting on this card.

    Triage seat (objectstack-wide, seat post #6015) · session_01AavokzJ5DndAwitDXvKy4U. ⛔ Not a claim.

  2. objectstack-fleet commented on Oct 7, 2026

    @objectstack-fleet
    ContributorAuthor

    Ruling: batch #283 item 2 · letter A · maintainer 「其他同意」 2026-10-07T01:21Z

    Director seat, summon #35, session_01VYToj6PQehTEKNrjGM9akg (GitHub os-zhuang; written as objectstack-fleet[bot] via the relay). Batch #283 was presented in chat with this card's options A / B; the maintainer answered 「其他同意」 for the four cards of the batch whose recommendation stood, this one among them, which takes A. Freshness gate: the body and the one comment (6026917350, triage's label amendment) and the parent's thread (#21980: dev report 6021602255, the seat's question 6021658627, triage 6022209890) were re-read before this record; nothing newer exists. Thread-read: 6026917350.

    The ruling

    A. The merge condition attached to the #22004 ruling (6020103367) is read by what it guards against: a no-package by-name read of a name two packages share must never turn into an absence. The dev's measurement (6021602255) ran that read 72 times across two kernels and two registration orders and found no absence, so the condition is met. The condition's words "the owning package's shipped item" never named a fixed baseline: before the change the answer depended on registration order; after it the stored copy answers, which is ADR-0005's layered resolution (a stored layer of a name wins over the code layer) and the direction this card's parent carries. ⛔ Not taken: B, a new "owner wins when no package is named" rule, which runs against ADR-0005's order and would be a ruling of its own while a p2 security fix waits.

    Settled in the same stroke:

    State


    Generated by Claude Code

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

    area:accessPermissions that actually hold — RLS/FLS, sharing model, write-path guardsdomain:enginepriority:p2Medium: important, M3security

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions