Skip to content

carry: nightly hybrid REF capture onto current base - #28246

Closed
teamleaderleo wants to merge 10 commits into
feat-cmux-nextfrom
lane/carry-25812-hybrid
Closed

teamleaderleo wants to merge 10 commits into
feat-cmux-nextfrom
lane/carry-25812-hybrid

Conversation

@teamleaderleo

Copy link
Copy Markdown
Collaborator

HOLD: carried from #25812; paused pending the Apple SDK/tools-on-Linux decision

Carry of #25812 onto the current feat-cmux-next base (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-app coverage surface.

Validation: git diff --check f3ae1f84a25 HEAD passes. Local tests were not run per the carry request.

Agent session: agent session

teamleaderleo and others added 10 commits October 27, 2026 00:59
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
@github-actions github-actions Bot added the risk:high Risk tier (docs/ci/risk-tiers.md) label Oct 30, 2026
@blacksmith-sh

blacksmith-sh Bot commented Oct 30, 2026

Copy link
Copy Markdown

Found 7 test failures on Blacksmith runners:

Failures

Test View Logs
/tmp/tmphnmpzuuu/summary-missing.json (live):/summary-missing.json (live): View Logs
/tmp/tmpk04tkfkx/summary-fail.json (live):/summary-fail.json (live): View Logs
[new_workspaces] debug.new_workspace timed 0 of 50 new workspace rows/
[new_workspaces] debug.new_workspace timed 0 of 50 new workspace rows
View Logs
[new_workspaces] the window draws no frames/[new_workspaces] the window draws no frames View Logs
[tabs] debug.tab_switch timed 0 of 40 switches/
[tabs] debug.tab_switch timed 0 of 40 switches
View Logs
[tabs] the window draws no frames/[tabs] the window draws no frames View Logs
test_no_new_permission (main.NightlyWorkflow.test_no_new_permission)/
test_no_new_permission (main.NightlyWorkflow.test_no_new_permission)
View Logs

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

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Orphaned: no activity for 25 h, and no lane holds a lease on it. The orphan sweep could not merge feat-cmux-next in: conflicts in .github/nightly-step-coverage.json, .github/workflows/nightly.yml. Listed for a lane to resolve.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by an agent session · session

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

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.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

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.

This branch was previously deployed

1 inactive deployment
ci-routing-agent — daeb3bf1 Deployed Oct 30, 2026 by teamleaderleo via cmux-tui tree preflight #82230
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:high Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant