Skip to content

Comments

chore: bump versions to 1.0.0 and fix release creation conflict#14

Merged
AndrewAltimit merged 5 commits intomainfrom
release/v1.0.0
Feb 21, 2026
Merged

chore: bump versions to 1.0.0 and fix release creation conflict#14
AndrewAltimit merged 5 commits intomainfrom
release/v1.0.0

Conversation

@AndrewAltimit
Copy link
Owner

Summary

  • Bump workspace version (psp crate) from 0.4.0 to 1.0.0 and cargo-psp from 0.3.0 to 1.0.0 for the first official release
  • Fix CI release creation conflict by adding a step that deletes any pre-existing GitHub release before softprops/action-gh-release runs -- prevents the "Too many retries" error when a release already exists for the tag
  • Cleaned up the broken draft release and stale v1.0.0 tag from the failed attempt

Test plan

  • CI passes (fmt, clippy, build, tests)
  • After merge, push v1.0.0 tag: git tag v1.0.0 && git push origin v1.0.0
  • Verify CI creates the GitHub release with binaries successfully

Generated with Claude Code

Update workspace version (psp crate) from 0.4.0 to 1.0.0 and cargo-psp
from 0.3.0 to 1.0.0 for our first official release.

Add a pre-cleanup step in CI that deletes any pre-existing GitHub release
before creating a new one, preventing the "Too many retries" error that
occurs when a release is created via the GitHub UI and CI then tries to
create a duplicate for the same tag.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions
Copy link

Gemini AI Code Review

Issues (if any)

(none)

Previous Issues (for incremental reviews)

(none)

Suggestions (if any)

  • .github/workflows/main-ci.yml:300 - Consider adding a conditional check to ensure gh release delete only runs if a release actually exists to avoid cluttering logs with 2>/dev/null errors, though the current implementation is functional.

Notes

  • 1 claim(s) were automatically filtered as potential hallucinations (file:line content didn't match claims)

  • Version bumps to 1.0.0 for both the psp crate and cargo-psp are consistent across Cargo.toml and Cargo.lock files.

  • The addition of the gh release delete step in main-ci.yml is a valid fix for preventing release creation conflicts during the CD process.

  • Significant changes in Cargo.lock (downgrades and removals like zerocopy) appear to be the result of a cargo update or dependency tree resolution during the version bump process, which is expected for a major release cleanup.

Reaction


Generated by Gemini AI (gemini-3-flash-preview). Supplementary to human reviews.

@github-actions
Copy link

Codex AI Code Review

Issues (if any)

  • [WARNING] .github/workflows/main-ci.yml:301 - Release cleanup step masks real failures.
  • What's wrong: gh release delete ... 2>/dev/null || true suppresses all errors, not just “release not found”. Permission/rate-limit/API failures become invisible and the job can continue in a bad state.
  • How to fix (if obvious): Query first (gh release view "$TAG"), delete only when present, and only ignore the explicit not-found case; let other errors fail the job.

Previous Issues (for incremental reviews)

(none)

Suggestions (if any)

(none)

Notes

  • 1 claim(s) were automatically filtered as potential hallucinations (file:line content didn't match claims)

  • Verified the referenced line exists in the current diff.

  • No actionable manifest/version inconsistency found in the 1.0.0 [UNVERIFIED - File does not exist and is not in PR] bumps (Cargo.toml, cargo-psp/Cargo.toml, and corresponding lockfile package entries).

Reaction


Generated by Codex AI (gpt-5.3-codex). Supplementary to human reviews.

Automated fix by Claude in response to Gemini/Codex review.

Iteration: 1/5

Co-Authored-By: AI Review Agent <noreply@anthropic.com>
@AndrewAltimit
Copy link
Owner Author

Review Response Agent (Iteration 1)

Status: Changes committed, pushing...

Commit: 8c38319

Fixed Issues

  • [Codex WARNING] .github/workflows/main-ci.yml:301 - Release cleanup step masked real failures. Replaced gh release delete ... 2>/dev/null || true with a check-then-delete pattern: gh release view first confirms the release exists, then gh release delete runs only if present. Real API/permission errors now properly fail the job.

Ignored Issues

  • [Gemini suggestion] - Same issue as Codex but framed as a minor suggestion. Addressed by the fix above.

Deferred to Human

  • (none)

Notes

  • Both reviewers flagged the same line with the same concern (error suppression). The fix uses gh release view as a guard so that only the "not found" case is silently skipped, while permission, rate-limit, or other API errors during deletion will surface as job failures.

Automated summary of agent fixes.

@github-actions
Copy link

Gemini AI Incremental Review

This is an incremental review focusing on changes since the last review.

Issues (if any)

(none)

Previous Issues (for incremental reviews)

  • [RESOLVED] .github/workflows/main-ci.yml:301 - Release cleanup step masks real failures.

Suggestions (if any)

(none)

Notes

  • 1 claim(s) were automatically filtered as potential hallucinations (file:line content didn't match claims)

  • The fix for the CI release cleanup is correctly implemented using a gh release view guard, ensuring that the workflow only attempts deletion if the release exists, while still allowing other API errors to fail the job.

  • Version bumps to 1.0.0 for the psp crate and cargo-psp tool are consistent and ready for a major release.

  • Dependency changes in Cargo.lock (including the removal of zerocopy and various version adjustments) align with a standard cargo update performed during a release cycle.

Reaction


Generated by Gemini AI (gemini-3-flash-preview). Supplementary to human reviews.

@github-actions
Copy link

Codex AI Incremental Review

This is an incremental review focusing on changes since the last review.

Issues (if any)

  • [WARNING] .github/workflows/main-ci.yml:303 - Release-existence probe still suppresses real failures.
    • What's wrong: if gh release view "$TAG" > /dev/null 2>&1; then ... fi treats all probe failures as “not found” (including auth/API/rate-limit errors), so cleanup can silently skip and leave release-conflict failures to the next step.
    • How to fix (if obvious): Only ignore the explicit “release not found” case; surface any other gh error and fail the job.

Previous Issues (for incremental reviews)

  • [STILL UNRESOLVED] .github/workflows/main-ci.yml:301 - Release cleanup step masks real failures.

Suggestions (if any)

  • (none)

Notes

  • Version bumps are consistent in Cargo.toml:13 and cargo-psp/Cargo.toml:3.
  • No additional actionable issues were identified in the provided lockfile/version changes.

Reaction


Generated by Codex AI (gpt-5.3-codex). Supplementary to human reviews.

The gh release view probe now captures stderr and only skips deletion
when the error is exactly "release not found". Auth, rate-limit, and
other API failures are surfaced as job errors instead of being silently
swallowed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@AndrewAltimit
Copy link
Owner Author

Review Response Agent (Iteration 2)

Status: No changes needed

Fixed Issues

  • [Codex WARNING] .github/workflows/main-ci.yml:303 - Release-existence probe still suppressed real failures. The gh release view check now captures stderr and only treats the exact "release not found" message as a skip condition. Auth errors, rate-limit errors, and other API failures are surfaced via ::error:: and exit 1 instead of being silently ignored.

Ignored Issues

  • [Gemini incremental review] - No issues reported; previous issue marked RESOLVED.

Deferred to Human

  • (none)

Notes

  • This builds on iteration 1's fix (commit 8c38319) which replaced 2>/dev/null || true with a gh release view guard. The remaining gap was that the guard treated all probe failures as "not found." The new implementation uses stderr string matching ("release not found") to distinguish the expected case from real errors, as gh returns exit code 1 for all failure types.

The agent reviewed feedback but determined no code changes were required.

@github-actions
Copy link

Gemini AI Incremental Review

This is an incremental review focusing on changes since the last review.

Issues (if any)

(none)

Previous Issues (for incremental reviews)

  • [RESOLVED] .github/workflows/main-ci.yml:301 - Release cleanup step masks real failures.
  • [RESOLVED] .github/workflows/main-ci.yml:303 - Release-existence probe still suppresses real failures.

Suggestions (if any)

(none)

Notes

  • 1 claim(s) were automatically filtered as potential hallucinations (file:line content didn't match claims)

  • Version bumps to 1.0.0 for the psp crate and cargo-psp tool are correctly synchronized across all manifests and lockfiles.

  • The CI release cleanup implementation successfully addresses previous concerns by using a gh release view guard that specifically matches the "release not found" error string, allowing legitimate API or permission failures to correctly fail the job.

  • The removal of the zerocopy dependency and corresponding downgrades of az, fixed, and half in Cargo.lock appear to be intentional architectural simplifications for the 1.0.0 release.

Reaction


Generated by Gemini AI (gemini-3-flash-preview). Supplementary to human reviews.

@github-actions
Copy link

Codex AI Incremental Review

This is an incremental review focusing on changes since the last review.

Issues (if any)

(none)

Previous Issues (for incremental reviews)

  • [RESOLVED] .github/workflows/main-ci.yml:301 - Release cleanup step masks real failures.
  • [RESOLVED] .github/workflows/main-ci.yml:303 - Release-existence probe still suppresses real failures.

Suggestions (if any)

  • .github/workflows/main-ci.yml:306 - Consider separating probe and delete into distinct if blocks so delete failures are reported as delete failures (the current && ... || ... chain can misattribute errors to gh release view).

Notes

  • Verified the new workflow logic at the referenced lines in the diff.
  • No additional actionable bugs were identified in the shown version/lockfile changes.

Reaction


Generated by Codex AI (gpt-5.3-codex). Supplementary to human reviews.

The `&& { ... } || { ... }` pattern misattributes errors: if
`gh release delete` fails, execution falls through to the `||` block
which reports it as a "gh release view" failure. Restructured to a
proper if/elif/else so delete failures propagate correctly and probe
errors are reported accurately.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@AndrewAltimit
Copy link
Owner Author

Review Response Agent (Iteration 3)

Status: No changes needed

Fixed Issues

  • [Codex suggestion] .github/workflows/main-ci.yml:306 - Replaced && { ... } || { ... } chain with proper if/elif/else structure. The old pattern had a real bug: if gh release delete failed, execution fell through to the || block which would misattribute the error as "gh release view failed" with empty stderr. The new structure captures the probe exit code explicitly and only enters the delete branch on success, letting delete failures propagate naturally.

Ignored Issues

  • [Gemini incremental review] - No issues reported; all previous issues marked RESOLVED.

Deferred to Human

  • (none)

Notes

  • Both reviewers marked all previous issues as RESOLVED. The only new feedback was Codex's suggestion about the &&/|| chain, which was a legitimate error-attribution bug worth fixing.

The agent reviewed feedback but determined no code changes were required.

@github-actions
Copy link

Gemini AI Incremental Review

This is an incremental review focusing on changes since the last review.

Issues (if any)

(none)

Previous Issues (for incremental reviews)

  • [RESOLVED] .github/workflows/main-ci.yml:301 - Release cleanup step masks real failures.
  • [RESOLVED] .github/workflows/main-ci.yml:303 - Release-existence probe still suppresses real failures.

Suggestions (if any)

  • .github/workflows/main-ci.yml:306 - The use of if/elif/else correctly separates the probe and delete logic, ensuring that any failures during the gh release delete operation are properly reported as job failures rather than being misattributed to the probe step.

Notes

  • 1 claim(s) were automatically filtered as potential hallucinations (file:line content didn't match claims)

  • Version bumps to 1.0.0 for both the psp crate and the cargo-psp host tool are consistent across all Cargo.toml and Cargo.lock files.

  • The Cargo.lock changes show a significant cleanup of the dependency tree, notably removing zerocopy and downgrading az, fixed, and half, which aligns with the PR's goal of preparing a stable 1.0.0 release.

  • The CI workflow now robustly handles pre-existing releases by explicitly checking for the "release not found" error string and allowing other gh API errors to surface.

Reaction


Generated by Gemini AI (gemini-3-flash-preview). Supplementary to human reviews.

@github-actions
Copy link

Codex AI Incremental Review

This is an incremental review focusing on changes since the last review.

Issues (if any)

  • [BUG] .github/workflows/main-ci.yml:303 - gh release view probe can terminate the step before the fallback logic runs.
    • What's wrong: GitHub Actions uses bash -e; when no release exists, gh release view exits non-zero inside PROBE_STDERR=$(...), so the step exits immediately before PROBE_EXIT/elif "release not found" is evaluated.
    • How to fix (if obvious): Run the probe in an if test (if PROBE_STDERR=$(gh release view ...); then ...) or temporarily disable errexit around that command, then branch on exit code/stderr.

Previous Issues (for incremental reviews)

  • [RESOLVED] .github/workflows/main-ci.yml:301 - Release cleanup step masks real failures.
  • [RESOLVED] .github/workflows/main-ci.yml:303 - Release-existence probe still suppresses real failures.

Suggestions (if any)

  • (none)

Notes

  • Incremental scope applied: full check on the newly changed workflow block; no additional actionable issues identified in the shown version/lockfile updates.
  • The reported bug is separate from prior suppression concerns: errors are no longer hidden, but -e currently prevents the intended “release not found => skip” path.

Generated by Codex AI (gpt-5.3-codex). Supplementary to human reviews.

GitHub Actions runs bash with -e (errexit). The previous pattern:
  PROBE_STDERR=$(gh release view ... )
  PROBE_EXIT=$?
would terminate the step on the first line when the release doesn't
exist (non-zero exit), before PROBE_EXIT could be captured.

Moving the command substitution into an `if` condition inhibits
errexit, allowing the elif/else branches to handle the "not found"
case and real API errors correctly.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@AndrewAltimit
Copy link
Owner Author

Review Response Agent (Iteration 4)

Status: No changes needed

Fixed Issues

  • [Codex BUG] .github/workflows/main-ci.yml:303 - gh release view probe terminated the step before fallback logic could run due to bash -e (errexit). GitHub Actions defaults to bash --noprofile --norc -e -o pipefail, so PROBE_STDERR=$(gh release view ...) on a non-existent release exited the step immediately, making PROBE_EXIT=$? unreachable. Fixed by moving the command substitution into an if condition, which inhibits errexit per POSIX/bash spec, allowing the elif/else branches to handle "release not found" vs real API errors.

Ignored Issues

  • [Gemini incremental review] - No issues reported. All previous issues marked RESOLVED. Positive notes about version bumps and dependency cleanup.

Deferred to Human

  • (none)

Notes

  • This was a real bug that would cause the release cleanup step to fail on every run where no pre-existing release existed, rather than gracefully skipping. The fix is minimal (3 lines changed) and preserves the existing error-discrimination logic.

The agent reviewed feedback but determined no code changes were required.

@github-actions
Copy link

Gemini AI Incremental Review

This is an incremental review focusing on changes since the last review.

Issues (if any)

(none)

Previous Issues (for incremental reviews)

  • [RESOLVED] .github/workflows/main-ci.yml:301 - Release cleanup step masks real failures.
  • [RESOLVED] .github/workflows/main-ci.yml:303 - Release-existence probe still suppresses real failures.
  • [RESOLVED] .github/workflows/main-ci.yml:303 - gh release view probe can terminate the step before the fallback logic runs.

Suggestions (if any)

(none)

Notes

  • 1 claim(s) were automatically filtered as potential hallucinations (file:line content didn't match claims)

  • The fix at .github/workflows/main-ci.yml:305 correctly addresses the bash -e termination issue by wrapping the gh release view call in an if condition, allowing precise string matching of the "release not found" error while ensuring legitimate API/auth failures still fail the job.

  • Version bumps to 1.0.0 are correctly applied across Cargo.toml, cargo-psp/Cargo.toml, and both Cargo.lock files.

  • Cargo.lock changes show a reduction in dependency complexity, including removal of zerocopy and version downgrades for az and fixed.

Reaction


Generated by Gemini AI (gemini-3-flash-preview). Supplementary to human reviews.

@github-actions
Copy link

Codex AI Incremental Review

This is an incremental review focusing on changes since the last review.

Issues (if any)

(none)

Previous Issues (for incremental reviews)

  • [RESOLVED] .github/workflows/main-ci.yml:301 - Release cleanup step masks real failures.
  • [RESOLVED] .github/workflows/main-ci.yml:303 - Release-existence probe still suppresses real failures.
  • [RESOLVED] .github/workflows/main-ci.yml:303 - gh release view probe can terminate the step before the fallback logic runs.

Suggestions (if any)

  • .github/workflows/main-ci.yml:308 - Consider matching "release not found" as a substring (instead of exact equality) to reduce brittleness across gh message formatting changes.

Notes

  • Incremental review scope checked: new workflow block plus verification of all previously reported workflow issues.
  • No additional actionable bugs were identified in the version bump and lockfile updates shown in this diff.
  • mcp__reaction-search__search_reactions was unavailable in this environment, so fallback image URL is used.

Reaction


Generated by Codex AI (gpt-5.3-codex). Supplementary to human reviews.

@AndrewAltimit
Copy link
Owner Author

Review Response Agent (Iteration 5)

Status: No changes needed

Fixed Issues

  • (none needed)

Ignored Issues

  • [Codex suggestion] .github/workflows/main-ci.yml:308 - Suggests substring matching instead of exact equality for "release not found". This is a minor robustness suggestion, not a bug or high-severity issue. The current exact match works correctly with the current gh CLI.

Deferred to Human

  • (none)

Notes

  • Both Gemini and Codex mark all previous issues as RESOLVED with no new bugs. The codebase is clean after 4 iterations of review fixes. No changes needed.

The agent reviewed feedback but determined no code changes were required.

@AndrewAltimit AndrewAltimit merged commit ad479fd into main Feb 21, 2026
7 checks passed
@AndrewAltimit AndrewAltimit deleted the release/v1.0.0 branch February 21, 2026 22:30
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.

1 participant