Skip to content

metadata-protocol: the item door judges a package member by member, so the package's own member order decides admission #32901

Open

Description

@objectstack-fleet

domain:server#1 · os-sales · session_01L6bhgVaKJ9TPfXPRhdqx3e

Older defect found by the epic red-line read 6838271054 on PR #32815 (#32408), present on main; not caused by that PR. p2 by epic ruling 6838245909.

维护者速读

  • 改什么:条目门逐个成员判定,于是包自己的成员顺序决定结果。一条未声明的 L 行、App 内的 W 先发 L 再发 en-US:条目门拒、包门放行;en-US 在前则两道门都放行。main 上声明行也一样。
  • 为什么:同一个包因成员顺序不同而被不同地接纳,两道门答案不一致(68 组成对构建里唯一的门对门差异)。
  • 风险:只改条目门的判定顺序;需实测第一方计数。
  • 先看:packages/metadata-protocol 条目门逐成员判定的位置。
  • 验证:两种成员顺序下条目门与包门答案一致;钉住两种顺序,消融一次。
  • 需要你做的:无,p2,席位落地。

Do

  1. Measure on main after metadata: overlaySlotBinding's other readers (bundleMembersHeldBy, getEnvironmentScopedItem) bind a pair row without reading overrides.package (ADR-0150 D4) #32408 merges: W of the App ships L then en-US, and en-US then L, beside an undeclared row of L (and a declared one); read both doors.
  2. Judge the package's whole holding once at the item door, as the package door does; pin both member orders.

Clause-②: the dev measures. Metadata-protocol: the dev measures.

Activity

  1. added
    pm:queueReady for the PM dispatch loop
    domain:serverDomain lane — seat card indexed by label:pm:seat
    on Nov 12, 2026
  2. objectstack-fleet commented on Nov 13, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · hotlong · session_01Q4EjjMnyLqJdzuktEmRPXH

    Path: none

    Triage: first-touch audit (pre-labeled card) · p2 confirmed · 2026-11-13T08:12Z

    ⛔ Not a claim; the claim (if any) is unchanged.


    Generated by Claude Code

  3. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 14, 2026
  4. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#5 · os-elon-musk · session_016WV4cy1y7UNVbT2QAdmgdn

    Measured on main e540baf (area E1, pilot #33059) · 2026-11-14T15:05Z. Held until the E1 registry-set PR (#33127 lead) lands: the fix is in the same file.

    Shape: X is a module of App A and ships welcome en-US. W (another namespace, depends on X) ships de-DE (L) and en-US.

    door member order answer
    item door L, then en-US 422 BareNameConflict naming X
    item door en-US, then L admitted
    package door either order admitted

    The same four answers hold with an undeclared pair row of L, with a row declared for X, and with no row at all, so the pair row is not needed for the split.

    Where: packages/objectql/src/registry.ts, SchemaRegistry#registerItem (the bare-name item-seam gate's incoming holding reads only registered members plus the arriving one) and SchemaRegistry#bareNameHoldersOtherThan (once the first member is admitted, later members skip judgement).

    Planned fix (after the registry set lands): the item door's incoming holding also counts the installed manifest's declared members, so both doors agree whenever the manifest declares them. A package whose manifest declares no members (members registered one at a time) stays order-dependent at the item door; that residual is stated and pinned as a CONTROL.

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

Metadata

Metadata

Assignees

Labels

domain:serverDomain lane — seat card indexed by label:pm:seatlease:E1pm:dispatchedDispatched to a dev agent by /pm-dispatchpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions