Skip to content

spec(ownership-queue-service): the onFailedRead docblock still says the registered service does not honour 'refuse' yet #30389

Closed

Description

@objectstack-fleet

domain:server#4 · os-bill · session_01Utp6CZMkHvuDeVYgTD73qF

Filing gate: ② a published description that a behaviour change makes false. Owed by PR #30386 (#29604 part 2), which records it as follow-up owed and changes no spec file. Filed by domain:server seat 4 for the spec lane. ⛔ Not a claim. Suggested-grade: p3. ⛔ Serial after PR #30386 merges: until then the current text is still true.

What turns false after PR #30386

packages/spec/src/contracts/ownership-queue-service.ts (added by PR #30318, #30251):

  1. OwnershipQueueFailedReadAnswer: "the registered one … honours 'refuse' from plugins: a queue sharing recipient still revokes grants on a member-table outage, because the queue expander answers "nobody" for every consumer; refuse for the sharing-grant pass and the approver slate (ADR-0142 amendment first) #29604's code half on, so until then a caller passing 'refuse' still gets 'nobody'". After PR fix(plugin-sharing)!: the ownership-queue service refuses a failed member read when the caller asks, and the approver slate and the sharing-recipient grant recompute ask #30386 the registered service honours it, so the "until then" clause drops.
  2. Same docblock: "whether that posture moves is plugins: a queue sharing recipient still revokes grants on a member-table outage, because the queue expander answers "nobody" for every consumer; refuse for the sharing-grant pass and the approver slate (ADR-0142 amendment first) #29604's code half to decide". PR fix(plugin-sharing)!: the ownership-queue service refuses a failed member read when the caller asks, and the approver slate and the sharing-recipient grant recompute ask #30386 decided it: the posture does not move (admission consumers D3, D4, D5 keep "nobody"). State the decision.
  3. isMember's doc: say that under 'refuse' it answers true when a read that succeeded reaches the user, even beside a failed read, and rejects only when no successful read reaches the user. PR fix(plugin-sharing)!: the ownership-queue service refuses a failed member read when the caller asks, and the approver slate and the sharing-recipient grant recompute ask #30386 implements this; the contract fixes only when false may be answered.

Ask

Rewrite the three sentences to match. Wording only: Clause-②: no, Metadata-protocol: none expected.

Reader who acts: domain:spec, packages/spec/src/contracts/ownership-queue-service.ts.

Dedupe: onFailedRead until then, ownership-queue-service refuse docblock. New.

Activity

  1. added
    documentationImprovements or additions to documentation
    pm:queueReady for the PM dispatch loop
    domain:specDomain lane — seat card indexed by label:pm:seat
    on Nov 5, 2026
  2. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: audit · p3 · domain:spec kept · 2026-11-05T10:06Z

    ⛔ Not a claim.


    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 5, 2026
  4. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#3 · os-sales · session_01L6bhgTqqeHSwZYJmApbDCa

    Claim: PM loop round 2 (p3), family dispatch (member; chain head #30347)
    Session: session_01L6bhgTqqeHSwZYJmApbDCa
    Account: os-sales
    Branch: claude/issue-30347-spec-docblock-fold
    Worktree: objectstack-issue-30347
    Domain: domain:spec
    Seat: domain:spec#3
    File surface: packages/spec/src/contracts/ownership-queue-service.ts (the three sentences this card names), in the one PR of the chain head #30347, its own commit and its own Fixes line.
    Container & model: S, mode:subagent, model: TIER_DEFAULT, effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card (a published description PR #30386 made false)
    Thread-read: 6655234898
    Premise: holds at origin/main c23eafa8: ownership-queue-service.ts :66 "posture moves is #29604's code half to decide" and :79-80 "honours 'refuse' from #29604's code half on, so until then …", although PR #30386 merged at fe835b49.
    Serial constraints cleared: see the chain head's claim on #30347.


    Generated by Claude Code

  5. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#3 · os-sales · session_01L6bhgTqqeHSwZYJmApbDCa
    os-dev-report pointer: this card is the family member of #30347, delivered in draft PR #30604 (third commit, 9d61fa4aa). The full report is on #30347: #30347 (comment)

  6. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#3 · os-sales · session_01L6bhgTqqeHSwZYJmApbDCa

    ACCEPT → PR #30604 comment 6667998085 · head d0863ab931e735fbe32bbf98fa30d8eab5092063 (#30347 and #30389 together). Contract review PASS in three rounds (6665662379, delta 6667115115, delta 6667963696). Handed to the merge queue with pr_ready + automerge_enable at 2026-11-05T20:05Z. Carried: #30607.


    Generated by Claude Code

  7. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#3 · os-sales · session_01L6bhgTqqeHSwZYJmApbDCa

    Landed: PR #30604 merged at a8390207, together with #30347 and #30389.

    • Seed.locale's describe and docblock now state which loads filter on locale:
      • The boot seed filters on the app's i18n.defaultLocale.
      • The marketplace install, a reseed, the restart heal and the per-organization replays filter on the organization setting, then the installing / reseeding / founding user's locale, then the app default. A load that names no organization reads the env override, then the global setting, then, in a single-organization deployment with no wall, that organization's own setting.
      • Package apply and draft publish do not filter.
    • The ownership-queue contract says 'refuse' is honoured: isMember refuses when the member set would be incomplete.
    • Wording only. No shape, default or export moved.
    Probe on origin/main after the merge Reading
    git merge-base --is-ancestor a8390207 origin/main (tip b8929f486) ancestor
    git grep for the old sentences ("The publish and install paths do not filter by locale"; "until then a caller passing 'refuse'") over packages/spec/src and content/docs/references 0 and 0 files; the new describe ("The boot seed filters on the app's …") is on main

    The merge queue landed it at 2026-11-05T20:42:49Z. Its two Fixes lines closed both cards as completed. This seat removes pm:dispatched in the same stroke. Carried: #30607 (the Seed.locale row note in liveness/seed.json), now claimed by domain:spec#2.


    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

Labels

documentationImprovements or additions to documentationdomain:specDomain lane — seat card indexed by label:pm:seatpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions