Skip to content

Quiet setup-uv warnings in publish job and no-op lockstep pins - #6965

Merged
masenf merged 2 commits into
mainfrom
claude/release-changelog-warnings-vpktwz
Aug 28, 2026
Merged

Quiet setup-uv warnings in publish job and no-op lockstep pins#6965
masenf merged 2 commits into
mainfrom
claude/release-changelog-warnings-vpktwz

Conversation

@masenf

@masenf masenf commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator

Type of change

  • Bug fix (non-breaking change which fixes an issue)

Changes To Core Features

  • Have you added an explanation of what your changes do and why you'd like us to include them?
  • Have you written new tests for your core changes, as applicable?
  • Have you successfully ran tests with your changes locally?

Description

This PR addresses two sources of unnecessary noise in release workflow runs:

  1. Quiet setup-uv in the gated publish job: The publish workflow's approval job deliberately does not check out the repository, running setup-uv in an empty working directory. This causes setup-uv to warn twice per released package:

    • Its cache key hashing finds nothing to hash
    • Its empty-workdir check warns about the empty directory

    Since this job installs no dependencies (only runs uv publish), there is nothing to cache anyway. The fix adds a second placeholder (@@UV_SETUP_NO_CHECKOUT@@) that passes enable-cache: false and ignore-empty-workdir: true to silence these warnings.

  2. Log no-op lockstep pins without annotations: When cmd_pin_lockstep runs on a package with no exact-pin siblings, it logs a message but was incorrectly using notice() (which creates a GitHub annotation). This creates one "nothing to do" line per package on every release batch summary. Changed to use echo() instead.

Similarly, cmd_post_release was using notice() for its no-op case; changed to echo() for consistency.

Changes

  • scaffold.py:

    • Modified _uv_setup_block() to accept a checkout parameter; when False, adds enable-cache: false and ignore-empty-workdir: true settings
    • Added @@UV_SETUP_NO_CHECKOUT@@ placeholder to the render substitutions
    • Updated template validation to accept either placeholder after a setup-uv step
  • publish.yml template & generated workflow:

    • Changed the approval job's setup-uv step to use @@UV_SETUP_NO_CHECKOUT@@ instead of @@UV_SETUP_WITH@@
    • Added explanatory comment about why the job runs without a checkout
  • commands.py:

    • Changed cmd_pin_lockstep() to use echo() instead of notice() for the no-op message
    • Changed cmd_post_release() to use echo() instead of notice() for the no-op message
  • tests:

    • Updated test_every_template_pins_the_uv_it_installs() to accept either placeholder
    • Added test_render_quiets_setup_uv_where_there_is_no_checkout() to verify the new settings are applied
    • Updated test_render_omits_the_block_when_nothing_is_pinned() to account for the checkout-less job keeping its settings block
    • Added test_pin_lockstep_pins_the_sibling_to_the_exact_version() and test_pin_lockstep_without_siblings_does_not_annotate_the_run() to verify the command behavior
    • Updated test_post_release_without_a_configured_workflow_does_nothing() to verify no annotation is created

Test Plan

All new and modified tests pass:

  • test_every_template_pins_the_uv_it_installs() validates both placeholders are recognized
  • test_render_quiets_setup_uv_where_there_is_no_checkout() verifies the cache and workdir settings are applied
  • test_render_omits_the_block_when_nothing_is_pinned() confirms the checkout-less job retains its settings
  • test_pin_lockstep_without_siblings_does_not_annotate_the_run() and test_post_release_without_a_configured_workflow_does_nothing() verify no annotations are created for no-op cases

https://claude.ai/code/session_01HDhLwzkKAooYz8x4AB2Ygk

Review in cubic

… noise

A release batch of ten packages posted 29 annotations, none of which
told anyone anything:

- 20 warnings, two per package, from the gated `publish` job. That job
  deliberately never checks the repository out — it holds the only OIDC
  privilege and runs nothing but `uv publish` on the artifact the
  approval covered — so setup-uv finds an empty working directory: its
  cache-dependency glob matches nothing ("The cache will never get
  invalidated") and its empty-workdir check warns. Neither is a problem
  to fix: the job installs no dependencies, so there is nothing to
  cache. Pass `enable-cache: false` and `ignore-empty-workdir: true`
  there, via a second render of the uv pin block for jobs without a
  checkout, so the pins stay in one place.

- 9 notices, one per package, from `pin-lockstep` reporting that a
  package has no exact-pin lockstep siblings. That is the normal case
  for every package outside a lockstep group; a step that no-ops has
  nothing an approver needs shown at the top of the run. Log it. Same
  for `post-release` with no workflow configured.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HDhLwzkKAooYz8x4AB2Ygk
@masenf
masenf requested a review from a team as a code owner August 28, 2026 07:05
@greptile-apps

greptile-apps Bot commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR reduces release-workflow noise by disabling unnecessary setup-uv caching in the checkout-less publish job and replacing no-op annotations with ordinary log output.

  • Adds a dedicated setup-uv rendering block for jobs without repository checkout.
  • Verifies that only checkout-less jobs receive the cache-disabling settings.
  • Changes no-op lockstep and post-release messages from annotations to regular output.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

Filename Overview
packages/reflex-release/src/reflex_release/scaffold.py Adds a checkout-aware setup-uv rendering block that preserves normal settings for checked-out jobs.
packages/reflex-release/src/reflex_release/templates/workflows/publish.yml Uses the checkout-less setup-uv placeholder only in the gated publish job.
packages/reflex-release/src/reflex_release/commands.py Changes two no-op status messages from GitHub annotations to ordinary log output.
tests/units/reflex_release/test_scaffold.py Adds bidirectional rendered-workflow coverage that rejects checkout-less settings on checked-out jobs and requires them on bare jobs.
tests/units/reflex_release/test_commands.py Verifies no-op command paths remain visible without producing workflow annotations.
.github/workflows/publish.yml Applies the generated cache and empty-workdir settings to the checkout-less publish job.

Reviews (2): Last reviewed commit: "test(reflex-release): assert which uv pi..." | Re-trigger Greptile

Comment thread tests/units/reflex_release/test_scaffold.py
@codspeed-hq

codspeed-hq Bot commented Aug 28, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 27 untouched benchmarks
⏩ 8 skipped benchmarks1


Comparing claude/release-changelog-warnings-vpktwz (49b481a) with main (f7c848f)2

Open in CodSpeed

Footnotes

  1. 8 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

  2. No successful run was found on main (45b8ed5) during the generation of this report, so f7c848f was used instead as the comparison base. There might be some changes unrelated to this pull request in this report.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

All reported issues were addressed across 7 files

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread tests/units/reflex_release/test_scaffold.py
The broadened placeholder guard accepts either placeholder after any
setup-uv step, and the semantic test only looked at jobs without a
checkout — so a template change that put the quieting block on a
checked-out job would turn that job's dependency cache off and no test
would notice.

Split the rendered setup-uv steps by whether their job checks out and
assert both directions: a job with no checkout carries enable-cache
false and ignore-empty-workdir true, a job that checked out carries
neither. Cover every generated workflow rather than only the core ones,
so the internal auto-release workflow is checked too.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HDhLwzkKAooYz8x4AB2Ygk
@masenf
masenf merged commit adefa11 into main Aug 28, 2026
111 checks passed
@masenf
masenf deleted the claude/release-changelog-warnings-vpktwz branch August 28, 2026 23:06
masenf pushed a commit that referenced this pull request Aug 28, 2026
…-context-refactor-jv3pig

Picks up the reflex@0.9.9 release train (#6998, #6999, #7000) plus #6965 and
#6927. Clean auto-merge; this branch's five news fragments are untouched by
the release's changelog materialization.
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.

3 participants