Skip to content

fix(release): classify App-token 404s when creating nightly tags - #128

Merged
jatmn merged 1 commit into
mainfrom
fix/nightly-immutable-tag-404
Sep 13, 2026
Merged

fix(release): classify App-token 404s when creating nightly tags#128
jatmn merged 1 commit into
mainfrom
fix/nightly-immutable-tag-404

Conversation

@jatmn

@jatmn jatmn commented Sep 13, 2026

Copy link
Copy Markdown
Owner

Summary

  • Nightly publish job https://github.com/jatmn/Codex-warp/actions/runs/34762668596/job/103739052394 failed at Create immutable nightly tag and receipt with gh: Not Found (HTTP 404) after GitHub CLI 2.100.0 omitted an HTTP/2.0 404 status line. The tag POST had already succeeded, so nightly-20260913-653a113ca227 exists at 653a113ca22799837c4fe6739903b72850e0cbb5 with no receipt and no release.
  • The publish step now runs scripts/create-nightly-tag.sh, which classifies 404s from --include status lines or gh: Not Found (HTTP NNN), captures POST, retries the post-create peel, then writes nightly-tag-receipt.json. Existing-tag and 422 paths stay fail-closed.
  • This does not recover the live 2026-09-13 orphan. recover-orphan-tag still requires a successful tag step plus nightly-tag-creation-receipt; clearing nightly-20260913-653a113ca227 remains documented maintainer break-glass.

Reviewed SHA: 778a1973149ae74c69603708d1221f499f63cbaf

Contribution checklist

  • I checked for duplicate or overlapping existing pull requests.
  • This PR does not introduce a new implementation language.
  • This PR does not add Python for any reason.
  • I can respond to review feedback within one week.
  • My PR title follows the Conventional Commit templates in AGENTS.md.

Validation

  • bash scripts/ci-preflight.sh (use --base origin/<base-branch> for a non-main base)
  • Durable preflight hooks are installed with bash scripts/install-git-hooks.sh

Focused: bash scripts/create-nightly-tag-harness.sh and bash scripts/source-checks.sh passed on this SHA. Pre-push re-ran bash scripts/ci-preflight.sh on the same tree.

Maintainer checklist

  • This PR is ready for review by @jatmn.
  • Security-sensitive changes are called out in the summary.
  • The PR should only be merged by @jatmn.

Summary by Sourcery

Harden nightly tag creation so successful tag posts remain recoverable when GitHub CLI omits HTTP status headers, while only issuing receipts after the tag is verified.

Bug Fixes:

  • Classify GitHub App-token 404 responses in both HTTP header and GitHub CLI error formats when creating nightly tags.
  • Retry post-creation tag lookup before generating the nightly tag receipt while preserving fail-closed handling for existing tags and creation races.

Enhancements:

  • Move nightly tag creation and receipt generation into a dedicated reusable script with validation and explicit API response handling.

Tests:

  • Add a harness covering CLI and header-based 404s, delayed tag visibility, existing-tag protection, 422 races, and unclassifiable failures.

The nightly publish step treated header-less gh 404s and an uncaptured
post-create peel as hard failures after the tag POST, so the receipt was
never retained. Classify 404s from either HTTP status lines or gh's error
text, retry the peel, and cover the path with a harness.
@jatmn
jatmn marked this pull request as ready for review September 13, 2026 16:13

@sourcery-ai sourcery-ai 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.

Hey - I've reviewed your changes and they look great!

Sourcery assessment

Needs a human reviewer. If the helper is wrong, it could create a nightly tag pointing at an unintended commit, and that tag remains after reverting the change. The tag can generally be removed and recreated, so the damage is bounded, but downstream consumers may observe the incorrect tag before repair.


Sourcery is free for open source - if you like our reviews please consider sharing them ✨

@jatmn
jatmn merged commit 478d974 into main Sep 13, 2026
17 checks passed
@jatmn
jatmn deleted the fix/nightly-immutable-tag-404 branch September 13, 2026 16:38
jatmn pushed a commit that referenced this pull request Sep 13, 2026
🤖 I have created a release *beep* *boop*
---


## [0.1.1](v0.1.0...v0.1.1)
(2026-09-13)


### Bug Fixes

* **continue_guard:** keep long multi-agent sessions auto-continuing
([#118](#118))
([1a39847](1a39847))
* **models:** honor WebUI disable for colliding cross-provider slugs
([#117](#117))
([7f149d4](7f149d4))
* **provider:** identify OpenCode Go sessions
([#121](#121))
([d81deaa](d81deaa))
* **release:** classify App-token 404s when creating nightly tags
([#128](#128))
([478d974](478d974))
* **release:** include maintenance notes without triggering releases
([#125](#125))
([e837600](e837600))
* **security:** confine docs checker path.resolve to the repo base
([#120](#120))
([12de5b1](12de5b1))
* **security:** harden documentation path confinement
([#115](#115))
([26431ce](26431ce))


### Documentation

* document live releases and commit title templates
([#114](#114))
([9a0794c](9a0794c))


### Build System

* **deps:** Bump crate-ci/typos from 1.49.0 to 1.50.1
([#124](#124))
([fdef744](fdef744))
* **deps:** Bump reqwest from 0.13.4 to 0.13.5
([#126](#126))
([1ca3cdb](1ca3cdb))
* **deps:** Bump taiki-e/install-action from 2.86.8 to 2.87.4
([#123](#123))
([010133c](010133c))
* **deps:** Bump taiki-e/install-action from 2.87.4 to 2.87.9
([#127](#127))
([653a113](653a113))
* **deps:** Bump toml from 1.1.4+spec-1.1.0 to 1.1.5+spec-1.1.0
([#122](#122))
([f539391](f539391))


### Continuous Integration

* stop scanners treating the GitHub App action pin as a secret
([#119](#119))
([783bbda](783bbda))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: codex-warp-release-bot[bot] <323806225+codex-warp-release-bot[bot]@users.noreply.github.com>
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