Skip to content

ci: default the seed adoption kill switch to on - #14150

Merged
teamleaderleo merged 2 commits into
mainfrom
claude/seed-kill-switch-null
Sep 24, 2026
Merged

teamleaderleo merged 2 commits into
mainfrom
claude/seed-kill-switch-null

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Sep 24, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

No pull request has adopted the DerivedData seed since #14081. The Adopt the nightly DerivedData seed step in compile admission was skipped on every run. That includes #14081's own three PR runs on Blacksmith 15, Blacksmith 26 and hosted 26, and PR runs from 2026-09-24 such as jobs 107499745573 and 107500740029. So every PR compile has been a full cold build.

The cause is the kill switch vars.CI_ADMISSION_SEED_DERIVED_DATA != '0'. An unset repository variable evaluates to null, not '', and Actions compares null with '0' as the numbers 0 and 0. That makes the term false while the variable is unset, which inverts the intended "unset means on".

A throwaway probe workflow, run on exp/seed-if-probe (job 107503109056), printed:

V_SEED: null
V_T_SEED: false      # vars.CI_ADMISSION_SEED_DERIVED_DATA != '0'
V_T_BACKEND: true    # the cache-backend term

It also showed that a step gated on that term alone is skipped, while one gated on the backend term runs.

The step now uses (vars.CI_ADMISSION_SEED_DERIVED_DATA || '1') != '0'. That is on while the variable is unset and off only when it is 0. This is the only variable compared with '0' in .github/workflows.

Adoption still needs a seed to exist. #14146 fixes the seeder's save step, and #14142 fixes the compile failure that broke the seed builds on Blacksmith macOS 15.

Testing

  • The first commit only changes tests, and both fail on main:
    • test_adoption_is_optional_and_limited_to_pull_requests asserted the buggy expression and now requires the default.
    • The new test_no_workflow_compares_a_bare_variable_with_zero rejects any vars.X ==/!= '0' in a workflow.
  • The second commit adds the fix. tests/test_seed_derived_data.py passes (10 tests).
  • actionlint is clean, tests/test_ci_self_hosted_guard.sh passes, and every Python test that reads ci-macos.yml passes, except test_check_ghostty_zig_workflows.py, which can't import bashlex in this environment.

Checklist

  • I added or updated tests for behavior changes
  • I updated docs/changelog if needed

🤖 Generated with Claude Code

https://claude.ai/code/session_01EduXdN9PKnGsMQztJK7WeE


Generated by Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.


Summary by cubic

Defaults the seed adoption kill switch to on so pull request compiles no longer skip the nightly DerivedData seed.

An unset repository variable is null, and Actions compares null with '0' as the numbers 0 and 0, so the old vars.CI_ADMISSION_SEED_DERIVED_DATA != '0' was false while unset — every PR compile was a full cold build. The step now uses (vars.CI_ADMISSION_SEED_DERIVED_DATA || '1') != '0', which is on while unset and off only when the variable is 0.

  • Updates the adoption test to require the fixed expression and adds a test that rejects any workflow comparing a bare vars.X with '0'.
  • Seed adoption still needs a seed to exist; the seeder save fix and the compile failure fix are separate PRs.

Written for commit f026e8c. Summary will update on new commits.

Review in cubic

teamleaderleo and others added 2 commits September 24, 2026 05:13
An unset repository variable evaluates to null, and Actions compares
null with '0' as the numbers 0 and 0. The adoption step's
`vars.CI_ADMISSION_SEED_DERIVED_DATA != '0'` is therefore false while
the variable is unset, so no pull request has ever adopted the seed
since #14081. A probe run on 2026-09-24 printed the variable as null and
the term as false. The test asserted the buggy expression; it now
requires a non-zero default, and a new test rejects any workflow that
compares a bare variable with '0'.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EduXdN9PKnGsMQztJK7WeE
`(vars.CI_ADMISSION_SEED_DERIVED_DATA || '1') != '0'` is true while the
variable is unset and false only when it is set to 0, which is what
#14081 meant. The bare comparison was false while unset, so pull request
compile admission skipped the seed on every run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EduXdN9PKnGsMQztJK7WeE
@github-actions

Copy link
Copy Markdown
Contributor

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@coderabbitai

coderabbitai Bot commented Sep 24, 2026

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration

Configuration used: Repository: manaflow-ai/cmux/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 49d3637e-a9ca-46f0-82a2-9a376b99c6b5

📥 Commits

Reviewing files that changed from the base of the PR and between 34d33d2 and f026e8c.

📒 Files selected for processing (2)
  • .github/workflows/ci-macos.yml
  • tests/test_seed_derived_data.py
 ____________________________________________
< `undefined` is not a business requirement. >
 --------------------------------------------
  \
   \   \
        \ /\
        ( )
      .( o ).
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@teamleaderleo
teamleaderleo enabled auto-merge (squash) September 24, 2026 05:18
@teamleaderleo
teamleaderleo merged commit e2fd37e into main Sep 24, 2026
49 of 51 checks passed
rustybret pushed a commit to rustybret/bmux that referenced this pull request Sep 24, 2026
82543c5 ci: stop restoring the test compilation cache in compile admission (manaflow-ai#14161)
5da27d6 ci: route the persistent compile fleet command as control plane only (manaflow-ai#14157)
b2ec91b ci: bring a Mac mini onto the compile fleet with one command (manaflow-ai#14148)
1f39b14 ci: cancel orphaned runs from the queue janitor (manaflow-ai#14156)
455179c ci: register new Python tests automatically at commit time (manaflow-ai#14153)
e6ca0a2 fix(ios): mirror the signed-in account so pushes decrypt after launch (manaflow-ai#14110)
fd028fe ci: run forks' own macOS CI on GitHub-hosted macos-26 (manaflow-ai#14151)
f70a62b ci: cancel stale pull request runs on every janitor sweep (manaflow-ai#14144)
e2fd37e ci: default the seed adoption kill switch to on (manaflow-ai#14150)
4926f0f fix: split the SSH session-list merge so it type-checks on slow runners (manaflow-ai#14142)
34d33d2 ci: run R2 cache writers in a main-only ci-cache-writer environment (manaflow-ai#14147)
4b7f66a ci: skip the Mac wrapper and remote-daemon lanes for ci.yml routing edits (manaflow-ai#14145)
4ca24a2 ci: give the DerivedData seeder the R2 public URL (manaflow-ai#14146)

# Conflicts:
#	.github/workflows/app-host-test-rerun.yml
#	.github/workflows/auth-refresh-tests.yml
#	.github/workflows/ci-guards.yml
#	.github/workflows/ci-macos.yml
#	.github/workflows/ci-queue-janitor.yml
#	.github/workflows/ci.yml
#	.github/workflows/cli-pipe-regressions.yml
#	.github/workflows/cloud-command-deadlines.yml
#	.github/workflows/cloud-machine-tests.yml
#	.github/workflows/cloud-task-local-tests.yml
#	.github/workflows/iroh-v2.yml
#	.github/workflows/nightly.yml
#	.github/workflows/relay-tls.yml
#	.github/workflows/remote-daemon.yml
#	.github/workflows/seed-derived-data.yml
#	.github/workflows/terminal-hang-diagnostics.yml
#	.github/workflows/test-ios.yml
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