Skip to content

metadata-protocol: the history diff door compares two package holders' versions of one name as if they were one item's (ADR-0150 D4, after #32905) #33308

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 scoped it out.

Parent: #32905 (source card). Found by: the measurement on #32905 (step 1, section A) and contract review 6880527562 on PR #33193 ("Follow-ups without a card … need a card before merge").

Measured (reach: HTTP)

Showcase boot (bootShowcase, packages/qa/dogfood) at 47f6c939, two packages com.qa.hist.alpha and com.qa.hist.beta each shipping flow qa_hist_shared, each edited twice in its writable pair (versions 1 and 3 alpha's, 2 and 4 beta's):

Request Status Answer
GET /meta/flow/qa_hist_shared/diff?from=1&to=2 200 alpha's v1 diffed against beta's v2, as if one item's versions

It writes nothing, so it is not a data-loss defect, but the answer is wrong.

Landing point

diffMetaItem (packages/metadata-protocol/src/protocol-diff-delete-load.ts) reads sys_metadata_history by (type, name). The door (GET /meta/:type/:name/diff, packages/rest/src/meta-item-history-routes.ts) takes no package.

Expected

The same rule PR #33193 gives history and rollback (historySlotOf, packages/metadata-protocol/src/protocol-history-slots.ts): ?package=P diffs only the addressed slot's versions and refuses a version another holder owns; a bare request for a name two slots hold answers 409 naming both; a one-holder name keeps working bare; ?package= on a type not stored per package answers 400. The console's diff view (if it calls the door) names the package where it names it for history.

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:50Z

    ⛔ 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