Repository navigation
fix(ci): an unset CI_NEXT_DEV_PRODUCT_REUSE leaves DEV product reuse on - #25075
Conversation
In an expression an unset variable is null, and null == '0' is true (both coerce to the number 0), so #24964's off switch read as off on every run (source run 40163060381: "vars.CI_NEXT_DEV_PRODUCT_REUSE is 0" with the variable unset). Compare its string form, and test that the lookup step has no bare `vars.X == '<digit>'` comparison. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16fa4-6017-7cf0-a801-d0761b36e005&host=cosmic-gray
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
|
Owned by claude-sr2/incremental-build on cosmic-gray · session |
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
red: cmux-next checks (god files, concurrency, crash safety, l10n); base red: the same failure on the base 1a19cf5; does not block |
|
Found 12 test failures on Blacksmith runners: Failures
...and 2 more test failures. View all on Blacksmith
|
|
Bead |
|
Shipped in:
|
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Leo: "the incrementally, you know, tracking the latest commit or whatever, building it off the right way, building the right things, like reusing as much as you can"
What
This fixes a bug in #24964: the DEV Release product reuse never ran. Its off switch was
vars.CI_NEXT_DEV_PRODUCT_REUSE == '0'. When that variable is unset, the expression seesnull, and GitHub converts bothnulland'0'to the number 0 before comparing them. So the comparison was true on every run, and the lookup skipped itself.Evidence: the first producer after landing, DEV run 40163060381 (3f08df3), logged the notice
vars.CI_NEXT_DEV_PRODUCT_REUSE is 0, and the variable is not set (HTTP 404). That run still compiled and wrote its record (cmux-next-dev-release-product-13b521d3…), so nothing broke. Reuse just never fired.The fix compares the variable's string form instead:
format('{0}', vars.CI_NEXT_DEV_PRODUCT_REUSE) == '0'. An unset variable formats as'', which is not'0', so reuse stays on. Setting the variable to0still turns it off.A new test in
tests/test_dev_release_product_reuse.pyfails if the lookup step has any barevars.X == '<digit>'comparison. It fails on base and passes here.Success / failure
DEV Release product: hit, and its compile job takes ≤ ~60 s.0no longer turns reuse off.Risk
Low. This is a one-expression change, and it turns on the reuse path that #24964 reviewed and landed. The trust checks and the digest check behind that path are unchanged.
Agent session: cosmic-gray
🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need.