Skip to content

docs(recovery): document transient Sigstore/Rekor 409 on checksum signing#28

Merged
CybotTM merged 2 commits into
mainfrom
docs/recovery-sigstore-409
Jun 9, 2026
Merged

docs(recovery): document transient Sigstore/Rekor 409 on checksum signing#28
CybotTM merged 2 commits into
mainfrom
docs/recovery-sigstore-409

Conversation

@CybotTM

@CybotTM CybotTM commented Jun 9, 2026

Copy link
Copy Markdown
Member

What

Adds a recovery-procedures.md entry for the release workflow failing at the cosign/sigstore step with:

[POST /api/v1/log/entries][409] createLogEntryConflict
{"message":"an equivalent entry already exists in the transparency log"}

Why

The tag-signature check and the tag-vs-version-file check run before this step and have already passed — so a 409 here is not a tag problem, it's a transient Sigstore Rekor transparency-log conflict. The safe remedy is to re-run only the failed job:

gh run rerun <run-id> --repo <owner>/<repo> --failed

No new tag, no published release to clobber. Recreating the tag would needlessly risk burning the name.

Observed on ~3 of 19 repos during a coordinated bulk skill-repo release (2026-06-09); every re-run published cleanly on the second attempt.

Changes

  • references/recovery-procedures.md: new "Sigstore/Rekor 409 on Checksum Signing" section.
  • evals/evals.json: eval #38 — asserts the model recognises the transient 409 and re-runs the failed job rather than recreating the tag.

No SKILL.md change (it is at the 497-word limit; the fix lives in an existing reference).

…ning

Add a recovery-procedures entry for the cosign/sigstore step failing with
`[POST /api/v1/log/entries][409] createLogEntryConflict`. The tag-signature
and tag-vs-version checks pass before this step, so the failure is unrelated
to the tag — recreating it would risk burning the name. The remedy is to
re-run only the failed job (`gh run rerun <run-id> --repo <repo> --failed`),
which creates no new tag and has no published release to clobber.

Observed on ~3 of 19 repos during a bulk skill-repo release; every re-run
published cleanly. Adds eval #38 asserting the model re-runs rather than
re-tags.

Signed-off-by: Sebastian Mendel <github@sebastianmendel.de>
Copilot AI review requested due to automatic review settings June 9, 2026 10:41

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request adds a new evaluation scenario and corresponding recovery documentation for handling transient Sigstore/Rekor 409 conflicts during checksum signing. The feedback suggests improving the robustness of the must_not assertion pattern in the evaluation configuration to better catch any tag deletion or force-recreation commands.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread skills/github-release/evals/evals.json

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the GitHub Release skill’s recovery documentation and evaluation suite to handle a specific release-workflow failure mode: a transient Sigstore/Rekor transparency-log 409 conflict during checksum signing.

Changes:

  • Adds a recovery-procedures entry describing how to respond to Sigstore/Rekor HTTP 409 conflicts during signing (rerun failed job; don’t retag).
  • Adds a new eval (id 38) asserting the model identifies the transient nature of the 409 and recommends gh run rerun --failed.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
skills/github-release/references/recovery-procedures.md Documents the Sigstore/Rekor 409 symptom/cause and the intended safe recovery action.
skills/github-release/evals/evals.json Adds eval #38 to test the expected guidance for transient Rekor 409 conflicts.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread skills/github-release/evals/evals.json
Comment thread skills/github-release/references/recovery-procedures.md Outdated
…ing claim

Address bot review feedback on PR #28:
- evals.json #38: replace the narrow `git tag -[sa].*` must_not with a robust
  pattern catching tag delete/force/remote-delete, and add a must_not for
  `gh release create` (matching the convention of other evals in this file).
- recovery-procedures.md: phrase the "validation gates already passed" claim
  conditionally — it holds for workflows (like the netresearch skill-repo
  release) that validate before signing, not universally; advise confirming
  via the failed-job log.

Signed-off-by: Sebastian Mendel <github@sebastianmendel.de>
@sonarqubecloud

sonarqubecloud Bot commented Jun 9, 2026

Copy link
Copy Markdown

@CybotTM CybotTM requested a review from Copilot June 9, 2026 10:54
@CybotTM CybotTM merged commit f312458 into main Jun 9, 2026
10 checks passed
@CybotTM CybotTM deleted the docs/recovery-sigstore-409 branch June 9, 2026 10:55

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

Comment on lines +1049 to +1052
{
"type": "must_not",
"pattern": "(?i)(git tag.*(-d|-f|--delete)|git push.*delete)"
},
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants