Skip to content

Backport durable switchover dispatch claim reader to release-1.0 #10670

Description

@weicao

Problem

The main-line Switchover writer tracked in #10649 must persist a durable dispatch claim before invoking a non-idempotent lifecycle action. A release-1.0 controller taking over or receiving a rollback must recognize that claim and refuse to redispatch the action.

ProgressStatusDetail.message is human-readable display text and cannot carry protocol version, request identity, token, or dispatch state. Main and release readers need one explicit, optional, versioned status API.

Scope

Backport the reader-side v1 contract to release-1.0:

  • add and document the optional structured dispatch status and regenerate API artifacts;
  • validate the exact OpsRequest UID, logical component/sharding key, source instance, optional candidate, and writer token;
  • continue observation only for Resolved;
  • fail closed for Claimed, OutcomeUnknown, unknown versions/states, and identity mismatches;
  • keep message display-only;
  • keep the pre-protocol legacy path only when structured dispatch state is absent;
  • do not create or mutate dispatch claims.

This issue covers only the release-1.0 reader. The main writer remains blocked until supported reader backports and their CRDs are merged and released, and the writer uses the same v1 field.

Implementation: #10680

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions