Skip to content

fix(release): tolerate bounded draft-list eventual consistency #126

Description

@100yenadmin

Problem

The protected Electric release workflow can fail after successfully creating the exact-head tag, draft release, and both assets. In run #29369633801, gh release download succeeded and sha256sum --check passed, but the immediately following paginated release-list query returned zero matches for several seconds and the job exited with No draft release exists.

Evidence

  • Run: https://github.com/electricsheephq/evaOS-gitnexus/actions/runs/29369633801
  • Release commit: e690cabf19dea108fced6ee1a7ef17e9e623ec54
  • Tag: electric/v1.6.10-electric.2 resolved to that commit.
  • Draft ID: 354098134; both non-empty assets existed and downloaded successfully.
  • Attempt 1 failed only at the one-shot list lookup after checksum verification.
  • Rerunning failed jobs only reused the proven tag/draft/assets and published successfully; no CI, package build, or platform proof was repeated.

Likely cause

GitHub release-list eventual consistency immediately after draft creation. The workflow treats one empty list response as definitive even though the asset download endpoint already resolves the draft.

Acceptance

  • Resolve the exact draft by a direct stable identifier or use a bounded retry around release discovery.
  • Require exact tag, draft state, target commit, and the two non-empty expected assets before publication.
  • Keep retry bounded and fail closed on duplicates, mismatched tag/head, published state, or timeout.
  • Add focused policy/verifier coverage for delayed visibility.
  • Preserve publish-last, protected-environment approval, and resumable failed-job behavior.
  • No npm/container publication and no changes to the already published .2 release.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1High-priority post-floor workevidence-gateMust close with retained validation evidencefork-onlyElectric Sheep policy or compatibility behavior retained only in the fork

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions