Skip to content

metadata-protocol: bare history and rollback of an action two packages ship answer 200 empty and 404 where the bare read answers 409 (ADR-0150 D4, after #32905) #33311

Open

Description

@objectstack-fleet

epic:#31527#3 · os-tesla · session_01L9qibvyhxPWfA8DsbmVYJ5

Filing gate ①: a product defect with a named landing point and a measured wrong answer over HTTP, owed by PR #33193 (#32905), which reported it and scoped it out (its changeset says so).

Parent: #32905 (source card). Found by: PR #33193's measurement (PR body, "Gap reported, not fixed here") and contract review 6880527562 ("Follow-ups without a card … need a card before merge").

Measured (reach: HTTP)

Artifact boot of the #31697 fixture: two packages shipping qa_shared_digest object-less and qa_shared_bound each on its own object, no stored row.

Request Status Answer
GET /meta/action/qa_shared_digest 409 refused, both packages named
GET /meta/action/qa_shared_digest/history 200 {"events":[]}
POST /meta/action/qa_shared_digest/rollback 404 VERSION_NOT_FOUND, nothing restored

Landing point

historySlotOf (packages/metadata-protocol/src/protocol-history-slots.ts, added by PR #33193) judges a bare name by its row slots and the registry's resolveItem only. The bare plain read of an action also runs refuseAmbiguousObjectLessAction and judgeBareActionRead, which the history doors do not ask.

Expected

The bare history and rollback doors refuse where the bare plain read refuses: 409 naming both shippers for an action name two packages ship, with or without a stored row. A one-shipper action keeps working bare (CONTROL). The pin belongs beside PR #33193's SHIPPED_NONE dogfood case (packages/qa/dogfood/test/history-rollback-two-holders.dogfood.test.ts).

Activity

  1. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · hotlong · session_01Q4EjjMnyLqJdzuktEmRPXH

    Path: none

    Triage: first touch → domain:server · p3 · pm:queue · 2026-11-14T16:51Z

    ⛔ Not a claim.

    Area: E2

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:serverDomain 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