Measured on branch claude/issue-9176-publish-door-advisories (base origin/main @ e4e5c6e3c) while implementing #9176. Filed unassigned, not a claim.
What was measured
#9176 wired the #4463 gate's advisory half onto the single-item publish door: promoteDraftForPublish now RETURNS the findings and publishMetaItem attaches them to its response (PublishMetaItemResponseSchema.advisories, optional, omitted-when-empty).
promoteDraftForPublish has a second caller: publishPackageDrafts (Studio's "publish whole app", POST /packages/:id/publish-drafts). That caller destructures only { singularType, result } from the helper's return — the advisories key rides out of the helper and is dropped on the floor, per draft, for every draft in the batch. The gate's gating half runs on that door (an error finding aborts the batch); the advisory half is computed and discarded — the same shape #9176 closed one door over.
Why this is not a mechanical mirror
The single-item response carries one advisories array for one body. The batch response reports many items (published[] / failed[]), so the findings need a per-item mapping on the batch response face — a contract design decision (key placement, whether findings ride each published[] element or a parallel top-level map), not a copy of the #9176 shape. That decision is why this was scoped out of #9176 rather than fixed in it (the card's file surface named PublishMetaItemResponseSchema only).
Related
#9176 (the single-item door, where the helper now hands the findings out), #4463 D1/D3 (the gate on both doors; advisories ride the 2xx), #4717 (the save door), #8400 (precedent that this batch door's receipts diverge from the single-item door's and get their own decisions).
Measured on branch
claude/issue-9176-publish-door-advisories(baseorigin/main@e4e5c6e3c) while implementing #9176. Filed unassigned, not a claim.What was measured
#9176 wired the #4463 gate's advisory half onto the single-item publish door:
promoteDraftForPublishnow RETURNS the findings andpublishMetaItemattaches them to its response (PublishMetaItemResponseSchema.advisories, optional, omitted-when-empty).promoteDraftForPublishhas a second caller:publishPackageDrafts(Studio's "publish whole app",POST /packages/:id/publish-drafts). That caller destructures only{ singularType, result }from the helper's return — theadvisorieskey rides out of the helper and is dropped on the floor, per draft, for every draft in the batch. The gate's gating half runs on that door (anerrorfinding aborts the batch); the advisory half is computed and discarded — the same shape #9176 closed one door over.Why this is not a mechanical mirror
The single-item response carries one
advisoriesarray for one body. The batch response reports many items (published[]/failed[]), so the findings need a per-item mapping on the batch response face — a contract design decision (key placement, whether findings ride eachpublished[]element or a parallel top-level map), not a copy of the #9176 shape. That decision is why this was scoped out of #9176 rather than fixed in it (the card's file surface namedPublishMetaItemResponseSchemaonly).Related
#9176 (the single-item door, where the helper now hands the findings out), #4463 D1/D3 (the gate on both doors; advisories ride the 2xx), #4717 (the save door), #8400 (precedent that this batch door's receipts diverge from the single-item door's and get their own decisions).