File tree Expand file tree Collapse file tree
packages/bumpy/src/commands Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -501,10 +501,17 @@ async function runPublishFlow(
501501 }
502502
503503 // Handle tag movement: if nothing has been shipped yet, move tag to HEAD.
504- // "Shipped" includes staged targets: a staged tarball is already committed to the
505- // registry from the tagged SHA, so the tag must freeze there — moving it to HEAD on a
506- // re-run (while still awaiting approval) would point the release at a different commit
507- // than the artifact was built from.
504+ //
505+ // "Shipped" = a build reached the registry (success OR staged) — NOT merely "the run
506+ // did something". A *failed* target ships nothing, so it deliberately does NOT freeze
507+ // the tag: the fix-forward workflow (push more commits to get a failed publish through)
508+ // relies on the tag tracking HEAD until a build actually lands, so the final tag sits
509+ // on the commit that worked.
510+ //
511+ // A *staged* target does freeze it: the tarball is already committed to the registry
512+ // from the tagged SHA (you can only approve/reject it, not fix-and-repush), so moving
513+ // the tag to HEAD on a re-run while awaiting approval would point the release at a
514+ // different commit than the artifact was built from.
508515 for ( const release of toPublish ) {
509516 const info = releaseMetadataByPkg . get ( release . name ) ;
510517 if ( ! info ) continue ;
You can’t perform that action at this time.
0 commit comments