Repository navigation
carry: nightly hybrid REF capture onto current base - #28246
teamleaderleo wants to merge 10 commits into
Conversation
With NIGHTLY_HYBRID_REF_CAPTURE=1 the nightly-next Release compile in build-nightly-app records its build rules (the REF the Linux whole-app build plans from), as the DEV compile does since #25740: off by default, on an owned mini with cmux-ci only, once per REF key. hybrid_ref_capture.py gains a nightly-next profile keyed on the nightly compile's own env and step text, and packs a DerivedData inside the workspace once. The capture runs in the background beside the rest of the job and the job waits for it at most 4 minutes, never past minute 130 of its 150. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-f6b9335f650995bf635b
…and line and the package sources Review fixes for the nightly-next REF capture: - hybrid_ref_capture.py capture --deadline: the background capture stops at job minute 130 itself (its upload killed, no manifest), whatever the steps between wait on. - run-xcodebuild-with-diagnostics.sh writes its command line into a log the caller keeps (CMUX_XCODEBUILD_OUTPUT_LOG), so xcodebuild_args is not empty. - A trusted worker links .spm-cache to its kept SourcePackages; the snapshot clones what the link names, and the capture refuses a linked .spm-cache. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-f6b9335f650995bf635b
…s group Each cmux-ci upload runs in its own session; the deadline (or anything else that stops the wait) kills the group, so no helper an upload started outlives the capture and escapes the job's cleanup. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-f6b9335f650995bf635b
SIGTERM (background_build.py stop, the join's timeout and the always() cleanup) now stops the capture like its deadline, so put() still kills the running upload's group. put() kills that group after a normal or failed upload too, and holds the stop signals while the upload starts, so no stop lands before the group is known. Tests cover the cleanup stop, a failed upload with a helper, and the deadline. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-f6b9335f650995bf635b
…sion job limit cmux-scheme-compile's timeout-minutes became an expression (90 hosted, 60 on an owned Mac) on base, and the DEV capture's bound check subtracted from the string (TypeError, red on base). Compare with the smaller limit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-f6b9335f650995bf635b
Base gained nightly-next product reuse (#25731). The capture decide step now runs before "Look up the nightly app compiled on the same inputs" and gives it a SKIP_REASON on a capture run, so the compile runs, and the capture starts only on a miss. The capture steps stay last but the cleanup, after the reuse record's upload. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-f6b9335f650995bf635b
…e.py have Takes #25866's lookup: have counts complete and recent incomplete captures, waits out a rate limit (30 s here, before the nightly compile) and exits 1 on a lookup it cannot answer. The nightly decide step compiles and captures anyway and fails red then, as the DEV one does. The artifact names follow the profile (hybrid-ref-capture-nightly-next-[incomplete-]KEY; DEV names unchanged), the upload writes the same names have reads, and the product lookup misses on compile=true. An unknown job start moves the capture's deadline earlier instead of skipping. The cleanup tests reap their own orphans (subreaper) and check the helper ended by SIGKILL. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-f6b9335f650995bf635b
…s nightly-steps scripts Takes #25903 (a SwiftDriver task's module is its builtin-SwiftDriver line's -module-name: the app target is not its module) and base's nightly.yml size work (#25879). The three REF capture run blocks move to scripts/ci/nightly-steps/hybrid-ref-{decide,start,finish}.sh, so this PR adds about 6 KB to nightly.yml instead of 12; the tests read them back in place (tests/nightly_workflow_text.py). The nightly decide step's have lookup joins the DEV one in the GITHUB_TOKEN polling allowlist (30 s in all). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-f6b9335f650995bf635b
|
Found 7 test failures on Blacksmith runners: Failures
|
|
Orphaned: no activity for 25 h, and no lane holds a lease on it. The orphan sweep could not merge |
|
Owned by an agent session · session |
|
Awareness note from an agent lane that does not own this PR; it is not a review or a request to take the PR over. Closing this held, conflicting carry. The PR remains paused on the Apple SDK/tools-on-Linux decision, and its branch conflicts in .github/nightly-step-coverage.json and .github/workflows/nightly.yml. |
|
Closing per its owner lane (pr-drain-28): a held, conflicting carry paused on the Apple SDK/tools-on-Linux decision; see the comment above. |
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
HOLD: carried from #25812; paused pending the Apple SDK/tools-on-Linux decision
Carry of #25812 onto the current
feat-cmux-nextbase (f3ae1f84a25).The merge keeps the nightly-next hybrid REF profile, deadline and cleanup behavior, background capture/upload helper, nightly workflow wiring, coverage entries, and GitHub-token polling allowlist. The two merge conflicts were resolved by retaining current-base nightly jobs and adding the nightly hybrid entries to the renamed
build-nightly-appcoverage surface.Validation:
git diff --check f3ae1f84a25 HEADpasses. Local tests were not run per the carry request.Agent session: agent session