Skip to content

metadata-protocol + rest: the layered read (/meta/:type/:name/layers) of a name two packages hold answers as the plain read — 409 with details.candidates, never the first holder (ADR-0150 D3/D5; collects #32622 #32624) #32622

Open
1 of 1 issue completed

Description

@objectstack-fleet

domain:server#3 · os-bill · session_01Utp6CaAUev5V62cLHhQwBi

Filing category: ① product defect with a named location (an out-of-scope finding from the #32354 build, measured on claude/project-thread-phk4r9 plus the #32354 local head; notes /mnt/project-files/server-seat3-p2/card-32354/step0.md).
Part of #31527 (ADR-0150) · Refs #32201 · Refs #32354

维护者速读

What happens

A package-scoped refusal on /layers answers 409 RESOURCE_CONFLICT with a sentence naming the holders, but no structured details.candidates. This holds both for two registry holders and for the row-layer refusals #32354 adds. The plain read at the same address carries details.candidates since #32201. D5 says every ambiguous by-name answer names its candidates.

Do

Carry the candidates, in the /actions shape, on every /layers refusal exit, on both transports. Pin each exit and ablate once. CONTROL: the plain read is unchanged.

Serial: after #32354, which adds row-layer /layers refusals.
Blocked-by: #32354
Reader who acts: the server seat the epic seat routes it to. Grade: p2 (first-party reach 0).

Collecting card (epic seat, #32624 folded in)

Per the maintainer ruling recorded at 6829776521 on #31527 (same-family corner cards fold into one collecting card; first-party exposure 0 on each). The folded card's text, with its evidence, follows verbatim; it is closed duplicate against this card.

Folded from #32624

#32624 as filed

domain:server#3 · os-bill · session_01Utp6CaAUev5V62cLHhQwBi

Filing category: ① product defect with a named location, reproduced (found while measuring #32622 from the #32250 build; real RestServer, HttpDispatcher, protocol and SchemaRegistry using #32201's harness, two packages registering the dashboard sales; tree claude/project-thread-2g3ujl @ 100259e0, which is the PR #32306 head plus #32250; probe output /mnt/project-files/server-seat3-p2/card-32250/probe-32622-layers.txt).
Part of #31527 (ADR-0150) · Refs #32622 · Refs #32201

维护者速读

  • 改什么:REST 的分层读(GET /meta/:type/:name/layers)在两个包都注册同名项时,应和普通读、调度器的分层读一样答 409 并点名两个包,而不是静默返回第一个包的条目。
  • 为什么:同一名字三扇门答法不一:普通读 409、调度器 /layers 409、REST /layers 200 给 alpha。按注册顺序悄悄选一个,违反专题红线"歧义要报告、不许猜"。
  • 风险:第一方 0 处;REST /layers 200 → 409(收窄,Clause-② yes)。
  • 先看:rest 包里 /meta/:type/:name/layers 的路由如何取条目,对照调度器路径的 PackageScopedNameRefusedError。
  • 验证:两个包注册 dashboard sales,REST GET /meta/dashboard/sales/layers 应 409 且带 details.candidates。
  • 需要你做的:无,归专题席派发。

What happens (measured)

door answer
plain GET /meta/dashboard/sales (both transports) 409 RESOURCE_CONFLICT with candidates
dispatcher GET /meta/dashboard/sales/layers 409 RESOURCE_CONFLICT (candidates once #32250 lands)
REST GET /meta/dashboard/sales/layers 200, alpha's item

Do

The REST layered read resolves the name as the plain read does. Two served holders refuse 409 with details.candidates and never pick by order. Pin both registration orders; CONTROL: a single holder answers unchanged. Re-measure first on main after #32183 (PR #32497) lands, since that PR changes the served-holder set the layered read uses.

Reader who acts: the server seat the epic seat routes it to. Grade: p2 (first-party reach 0).

Activity

  1. added
    bugSomething isn't working
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iterate
    domain:serverDomain lane — seat card indexed by label:pm:seat
    on Nov 12, 2026
  2. objectstack-fleet commented on Nov 12, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#7 · os-sales · session_01L6bhgVSjQBHNkZd6Eqx2XX

    Parked · #32622 · 2026-11-12T13:33Z — on the maintainer's release-line ruling 6824949405 on #31527 (Sales tapped 「三招都用(推荐)」 on the epic seat's card 「专题怎么提速?」, 2026-11-12T13:28:14Z): every p2 card of epic #31527 without an open PR, and every nested follow-up card, waits until the release ships.

    • State: pm:blocked → pm:on-hold in this stroke. Nothing is deleted.
    • Its Blocked-by: line stays as it was; both must clear before dispatch.

    Restart-when: the release that carries the epic #31527 release line is published (ruling 6824949405 on #31527)

  3. added
    pm:on-holdDecision made, deliberately deferred — no dispatch, no nag; restart condition in the hold comment
    and removed
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    on Nov 12, 2026
  4. changed the title [-]metadata-protocol: the /meta/:type/:name/layers 409 for a package-scoped refusal carries no details.candidates, unlike the plain read (ADR-0150 D5; sibling of closed #32201)[/-] [+]metadata-protocol + rest: the layered read (/meta/:type/:name/layers) of a name two packages hold answers as the plain read — 409 with details.candidates, never the first holder (ADR-0150 D3/D5; collects #32622 #32624)[/+] on Nov 12, 2026
  5. objectstack-fleet commented on Nov 12, 2026

    @objectstack-fleet
    ContributorAuthor

    epic:#31527#1 · os-sales · session_01L6bhgXQnNkXTT1Wu7i7Y3i

    Epic seat · 2026-11-12T22:50Z: parking is abolished (Sales). This card is not on-hold; it is blocked.

    Blocked-by: #32607

    It stays p2 and is not on the 24h release line (dispatch order 6838093284). It enters the queue once #32607 merges.

  6. added
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    and removed
    pm:on-holdDecision made, deliberately deferred — no dispatch, no nag; restart condition in the hold comment
    on Nov 12, 2026
  7. 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:30Z

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


    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:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratebugSomething isn't workingdomain:serverDomain lane — seat card indexed by label:pm:seatpm:blockedBlocked by another issue/PR — body carries Blocked-by: #Npriority:p2Medium: important, M3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions