Skip to content

Investigate when fresh-fork CI delays justify restoring a macOS runner #973

Description

@shiny-code-app

Objective

Determine when the fresh upstream fork needs dedicated self-hosted macOS build capacity again, using observed delays on real work. Finish the current retirement and preserve DIRECTION.md; this investigation does not assume that either retired runner should return.

The owner reaffirmed that approach on 2026-09-24: follow the retirement through, then investigate reintroduction when repeated CI waiting makes it the next useful work.

Activation and priority

  • Working trigger: two distinct fresh-fork changes encounter CI waits that materially delay their next useful step. Repeated polls or retries of the same stalled run count as one incident. Record actual elapsed wait and why it blocked progress; ordinary short CI execution does not qualify merely because it required polling.
  • Investigate sooner if a required check cannot run and blocks current milestone work. Distinguish unavailable routing or the deliberate CI pause from exhausted runner capacity.
  • When triggered, update Current Status with the evidence and mark this investigation active. Link any genuinely blocked work through native blocked-by relationships, and place the investigation next in the relevant milestone's execution sequence. Respect DIRECTION.md's ordering; do not resurrect an old milestone to gain priority.
  • This is an agent/operator follow-up rule, not an implemented automatic wait counter. No background monitor, polling counter, or automatic runner provisioning is added by this issue.

Evidence to collect

For each incident, record the PR/run/job links, source SHA, operating system, runner routing, queue duration, execution duration, and time the next task was actually blocked. Identify duplicate/superseded runs, cache misses, workload contention, source failures, provider outages, and workflow-label/group mismatches separately.

The inherited CI entrypoints are currently paused under #971. When real fresh-fork work first needs automated checks, establish a compatible validation path; a paused workflow is not evidence that a self-hosted Mac is the best replacement. Use new-baseline evidence rather than counting the cutover's inherited failures as two capacity incidents.

Investigation

  1. Identify which required jobs actually need macOS and which can use compatible hosted runners or the retained Linux capacity under the repository's trust policy.
  2. Compare correcting routing, trimming redundant jobs, cancellation/caching changes, hosted capacity, and restoring one general macOS build/test runner. Do not assume a second listener on the same Mac creates independent CPU, disk, or lock capacity.
  3. Estimate the time saved against operating cost, host contention, and maintenance. Use representative runs and keep queue time separate from execution time.
  4. Evaluate the signing runner separately. A need for ordinary CI does not establish a need for the retired signed Lab distribution; revisit signing only when an actual planned release requires it.

Finish Line

A short evidence-backed recommendation names the smallest useful change, expected benefit, and a check that will show whether it worked. Restoring a retired runner requires the owner direction decision specified in DIRECTION.md, followed by a scoped implementation and live verification. Completing this investigation alone does not authorize restoration, workflow re-enablement, publication, or a new runner purchase.

Relationships

Current Status

State: waiting for fresh-fork evidence.
Qualifying incidents recorded: 0.
Next action: when a real change needs CI, establish compatible check routing and record any material stall here. After two distinct qualifying incidents, or one hard validation blocker, promote the investigation as described above.
Blocked by: no native issue blocker; waiting for the stated operational trigger.
Last verified: 2026-09-24. The two Mac runner installations are retired, the four Linux registrations were retained, and incompatible inherited CI remains paused. No restoration is proposed for immediate execution.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    planDurable planning issueplan:waitingDurable plan parked pending a decision, event, or non-issue condition; not for PR QA

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions