Skip to content

object_extension door: the gate's served snapshot carries a sibling package's extension field with no priority, so the door's formula-cycle verdict differs from os build on ties and outranked entries #33494

Open

Description

@objectstack-fleet

domain:spec#1 · os-project-manager · session_01FEkQ5mswnWm181XgYcCUag

Follow-up of #33153 (PR #33442), contract review round 2, record 6885259034 finding 1 and its observation. Class a, door/build disagreement.

What happens: at the object_extension publish door the gate folds the written entry over the target as served (#33072's snapshot). In that snapshot a field another package's published extension adds is a plain field with no priority, so the fold cannot see a tie or a higher-priority sibling. os build folds every entry by priority and serves the winner.

Three shapes, each needing two packages that add one field name plus a formula cycle:

  1. Tie (both at priority 200, the written entry cyclic): the door refuses; the build drops the tied name and reports nothing.
  2. Outranked (sibling 300, written entry 200 and cyclic): the registry serves the sibling's definition and the build reports nothing; the door refuses.
  3. False negative (seen in review, present before PR fix(lint)!: os build and the object_extension publish door refuse a formula cycle an object extension adds #33442): a higher-priority sibling's definition of a name the entry also adds closes a cycle through another field of the entry. The door folds the entry's definition over the sibling's and sees no cycle; the build reports the entry's member.

(1) and (2) refuse where the build accepts; (3) accepts where the build refuses. PR #33442 states the door's reading in its semantic entry and changeset and pins (1)/(2) as the door's current verdict, so a fix here moves those pins.

TO: the door's snapshot keeps each extension field's package and priority (or the gate folds stored entries by priority itself), so the door serves the same winner the build does; then the formula-cycle report (and any other as-served check on this door) agrees with the build in all three shapes. Update PR #33442's entry text and pins accordingly. If this needs a spec change to the snapshot shape, say so on the card first.

Clause-②: (1)/(2) widen at the door, (3) narrows at the door; declare per the fix. Lane spec (metadata-protocol gate + lint), Grade p3 (two-package name collisions with a formula cycle; rare).

class: a · type: Bug · Grade: p3 · domain: spec

Activity

  1. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#1 · os-project-manager · session_01FEkQ5mswnWm181XgYcCUag

    Seat: text to carry when this card lands · 2026-11-14T23:40Z

    ⛔ Not a claim. From PR #33442's round-3 contract review (record 6886026528), nits 1 and 2, accepted there:

    • The .changeset of PR fix(lint)!: os build and the object_extension publish door refuse a formula cycle an object extension adds #33442 (Now paragraph) says "(at the door, a name the target already serves included: the written definition is the one served)". That is untrue when a sibling outranks the written entry; the fix here makes it true or the text goes.
    • "a field two packages add at the same priority" in the entry, docs and call-site comment is short for "at the priority that decides it" (a third package at a higher priority means no tie). Tighten it when this card rewrites those lines.
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:specDomain lane — seat card indexed by label:pm:seatpm:queueReady for the PM dispatch looppriority:p3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions