Skip to content

chore(release): harden cascade-publish.sh (v0.60.0 cascade lessons)#2308

Open
noahgift wants to merge 1 commit into
mainfrom
chore/cascade-publish-hardening
Open

chore(release): harden cascade-publish.sh (v0.60.0 cascade lessons)#2308
noahgift wants to merge 1 commit into
mainfrom
chore/cascade-publish-hardening

Conversation

@noahgift

@noahgift noahgift commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Follow-up to the v0.60.0 crates.io cascade. Three fixes that cost ~2h of debugging tonight, so the next release doesn't repeat them:

  1. check_version sent no User-Agent → crates.io rejected every request → always returned none. This silently broke both the --check STATUS report and the FINAL VERIFICATION gate (every crate looked unpublished, so the run reported failure even when all 69 published successfully).

  2. Tier coverage gaps: apr-format (a leaf dep of aprender-core) was missing from TIER 1, and aprender-rag-cli missing from TIER 13 → neither was ever published by the cascade. Added → 69/69 coverage.

  3. DEFER swallowed two FATAL non-ordering errors behind a Caused by: truncation:

    • a stale $CARGO_REGISTRY_TOKEN403 authentication failed (the env var overrides a valid ~/.cargo/credentials.toml; dry-runs pass because they skip upload)
    • a dev-only [patch.crates-io] in .cargo/config.toml pointing at ../<repo> paths that don't exist in a git worktree → failed to load source

    Both are now classified as FATAL-AUTH / FATAL-CONFIG with the fix inline, plus prerequisite notes in the header.

Happy path unchanged; purely diagnostics + tier coverage. Verified: bash -n clean; the fixed script is the one that successfully published the v0.60.0 cascade.

🤖 Generated with Claude Code

Three fixes surfaced during the v0.60.0 crates.io cascade (~2h of debugging):

1. check_version() sent no User-Agent → crates.io rejected every request and it
   always returned "none". This silently broke both --check STATUS and the FINAL
   VERIFICATION gate (every crate looked unpublished, so the run reported failure
   even when all 69 published). Now sends a UA.

2. Tier coverage gaps: apr-format (a leaf dep of aprender-core) was absent from
   TIER 1, and aprender-rag-cli absent from TIER 13 → both were never published
   by the cascade. Added to their tiers (69/69 coverage).

3. DEFER swallowed two FATAL non-ordering errors behind a "Caused by:"
   truncation: a stale $CARGO_REGISTRY_TOKEN 403 (it overrides a valid
   ~/.cargo/credentials.toml) and a dev [patch.crates-io] in .cargo/config.toml
   pointing at ../<repo> paths missing in a worktree. Now classified as
   FATAL-AUTH / FATAL-CONFIG with the fix inline, plus prerequisite notes.

Happy path unchanged; purely diagnostics + tier coverage.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@noahgift noahgift enabled auto-merge July 6, 2026 15:14
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