Repository navigation
Fix macOS daemon worker stalls in the packaged terminal runtime - #29133
Conversation
78cf612 to
b137e3d
Compare
04bb770 to
6f006d8
Compare
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review.
|
There was a problem hiding this comment.
Actionable comments posted: 3
ℹ️ Review info
⚙️ Run configuration
- Source mode: Auto
- Repository: Unavailable
- Branch: Unavailable
- File: No configuration file from this repository applied
- Commit: Unavailable
- Layers: Repository UI
- Review profile: CHILL
- Plan: Advanced
- Run ID:
64ccfc92-b007-4eae-b028-8af9b1b61edb
📒 Files selected for processing: 22
.github/workflows/adhoc-mac-build.yml.github/workflows/daily-mac-build.yml.github/workflows/hourly-mac-build.yml.github/workflows/pr.yml.github/workflows/release-mac-build.ymlconfig/node-runtime-patches/darwin-worker-wait.jsonconfig/node-runtime-patches/darwin-worker-wait.patchconfig/reliability-gates.jsoncconfig/scripts/__fixtures__/darwin-terminal-worker-wait.cconfig/scripts/__fixtures__/darwin-threadpool-wait.hconfig/scripts/build-darwin-terminal-node.mjsconfig/scripts/build-darwin-terminal-node.test.mjsconfig/scripts/darwin-terminal-node-probe.cjsconfig/scripts/darwin-terminal-node-workflow.test.mjsconfig/scripts/darwin-terminal-worker-stress.cjsconfig/scripts/macos-terminal-host-bundle.cjsconfig/scripts/pr-code-change-scope.mjsconfig/scripts/pr-darwin-terminal-node-route.mjsconfig/scripts/verify-darwin-terminal-node.mjsconfig/scripts/win32-test-lane-registration.test.mjsdocs/bug-reproductions/darwin-worker-wakeup.mddocs/reference/macos-daemon-tcc-attribution.md
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 0 remain after this review.
| - name: Build the patched terminal runtimes | ||
| timeout-minutes: 180 | ||
| run: | | ||
| node --disable-warning=MODULE_TYPELESS_PACKAGE_JSON config/scripts/build-darwin-terminal-node.mjs arm64 | ||
| node --disable-warning=MODULE_TYPELESS_PACKAGE_JSON config/scripts/build-darwin-terminal-node.mjs x64 |
There was a problem hiding this comment.
🩺 Stability & Availability | 🟠 Major | ⚡ Quick win
🔎 Supported by static analysis
-
🏁 Script executed:
set -eu printf '%s\n' '--- hourly workflow relevant references ---' rg -n -F -e 'app_token' -e 'Compute hourly version' -e 'gh release list' -e 'Build the patched terminal runtimes' -e 'create-github-app-token' .github/workflows/hourly-mac-build.yml || test "$?" -eq 1 printf '%s\n' '--- daily workflow relevant references ---' rg -n -F -e 'app_token' -e 'Compute daily version' -e 'Compute version' -e 'gh release list' -e 'Build the patched terminal runtimes' -e 'create-github-app-token' .github/workflows/daily-mac-build.yml || test "$?" -eq 1 printf '%s\n' '--- hourly workflow block ---' sed -n '145,245p' .github/workflows/hourly-mac-build.yml printf '%s\n' '--- daily workflow token/build/version block ---' sed -n '135,255p' .github/workflows/daily-mac-build.yml printf '%s\n' '--- token action/script references in workflow files ---' rg -n -F -e 'actions/create-github-app-token' -e 'github-app-token' -e 'GITHUB_TOKEN' .github/workflows config/scripts | head -120
Repository: stablyai/orca
Length of output: 19155
🌐 Web query:
official actions/create-github-app-token v2 documentation token expiration lifetime💡 Result:
<source_evidence> <source kind="open_page"> <title>create-github-app-token/README.md at v2 · actions/create-github-app-token · GitHub</title> <location>https://github.com/actions/create-github-app-token/blob/v2/README.md</location> <excerpt>citeturn1view0 [wordlim: 200] Crawled: today; Content type: text/html; Source: open({"ref_id":"https://github.com/actions/create-github-app-token/blob/v2/README.md","lineno":null}); Total lines: 533 L0: 【0†Skip to content】 L1: ## Navigation Menu L2: L3: 【1†Sign in】 L4: L5: Appearance settings L6: L7: * Platform L8: L9: * AI CODE CREATION L10: * 【2†GitHub CopilotWrite better code with AI】 L11: * 【3†GitHub Copilot appDirect agents from issue to merge】 L12: * 【4†MCP RegistryIntegrate external tools】 L13: L14: * DEVELOPER WORKFLOWS L15: * 【5†ActionsAutomate any workflow】 L16: * 【6†CodespacesInstant dev environments】 L17: * 【7†IssuesPlan and track work】 L18: * 【8†Code ReviewManage code changes】 L19: * 【9†Code QualityEnforce quality at merge】 L20: * APPLICATION SECURITY L21: * 【10†GitHub Advanced SecurityFind and fix vulnerabilities】 L22: * 【11†Code securitySecure your code as you build】 L23: * 【12†Secret protectionStop leaks before they start】 L24: L25: * EXPLORE L26: * 【13†Why GitHub】 L27: * 【14†Documentation†docs.github.com】 L28: * 【15†Blog†github.blog】 L29: * 【16†Changelog†github.blog】 L30: * 【17†Marketplace】 L31: L32: 【18†View all features】 L33: L34: * Solutions L35: * BY COMPANY SIZE L36: * 【19†Enterprises】 L37: * 【20†Small and medium teams】 L38: * 【21†Startups】 L39: * 【22†Nonprofits】 L40: L41: * BY USE CASE L42: * 【23†App Modernization】 L43: * 【24†DevSecOps】 L44: * 【25†DevOps】 L45: * 【26†CI/CD】 L46: * 【27†View all use cases】 L47: L48: * BY INDUSTRY L49: * 【28†Healthcare】 L50: * 【29†Financial services】 L51: * 【30†Manufacturing】 L52: * 【31†Government】 L53: * 【32†View all industries】 L54: L55: 【33†View all solutions】 L56: L57: * Resources L58: * EXPLORE BY TOPIC L59: * 【34†AI】 L60: * 【35†Software Development】 L61: * 【36†DevOps】 L62: * 【37†Security】 L63: * 【38†View all topics】 L64: L65: * EXPLORE BY TYPE L66: * 【39†Customer stories】 L67: * 【40†Events & webinars】 L68: * 【41†Ebooks & reports】 L69: * 【42†Business insights】 L70: * 【43†GitHub Skills†skills.github.com】 L71: * SUPPORT & SERVICES L72: * 【14†Documentation†docs.github.com】 L73: * 【44†Customer support†support.github.com】 L74: * 【45†Community forum】 L75: * 【46†Trust center】 L76: * 【47†Partners】 L77: L78: 【48†View all resources】 L79: L80: * Open Source L81: L82: * COMMUNITY L83: * 【49†GitHub SponsorsFund open source developers】 L84: * PROGRAMS L85: * 【50†Security Lab†securitylab.github.com】 L86: * 【51†Maintainer Community†maintainers.github.com】 L87: * 【52†GitHub Stars†stars.github.com】 L88: * 【53†Archive Program†archiveprogram.github.com】 L89: L90: * REPOSITORIES L91: * 【54†Topics】 L92: * 【55†Trending】 L93: * 【56†Collections】 L94: L95: * Enterprise L96: L97: * ENTERPRISE SOLUTIONS L98: * 【19†Enterprise platformAI-powered developer platform】 L99: * AVAILABLE ADD-ONS L100: * 【10†GitHub Advanced SecurityEnterprise-grade security features】 L101: * 【57†Copilot for BusinessEnterprise-grade AI features】 L102: * 【58†Premium SupportEnterprise-grade 24/7 support】 L103: L104: * 【59†Pricing】 L105: L106: Search`/` L107: L108: 【1†Sign in】 L109: L110: 【60†Sign up】 L111: L112: Appearance settings L113: You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert L114: L115: 1. 【61†actions】 L116: 2. 【62†create-github-app-token】 L117: ## Repository navigation L118: L119: * * 【62†Code】 L120: * 【63†Issues7 (7)】 L121: *…[truncated]</excerpt> </source> <source kind="search"> <title>create-github-app-token/README.md at main · actions/create-github-app-token · GitHub</title> <location>https://github.com/actions/create-github-app-token/blob/main/README.md</location> <excerpt>citeturn0search0 [wordlim: 200] Crawled: last month; - uses: actions/create-github-app-token@v3 ... - uses: actions/create-github-app-token@v3 # Create GitHub App Token GitHub Action for creating a GitHub App installation access token. ## Usage In order to use this action, you need to: 1. Register new GitHub App. 2. Store the App's Client ID in your repository variables (example: `APP_CLIENT_ID`). 3. Store the App's private key in your repository secrets (example: `APP_PRIVATE_KEY`). Important An installation access token expires after 1 hour. Please see this comment for alternative approaches if you have long-running processes. ### Create a token for the current repository name: Run tests on staging on: push: branches: - main jobs: hello-world: runs-on: ubuntu-latest steps: - uses: actions/create-github-app-token@v3 id: app-token with: client-id: ${{ vars.APP_CLIENT_ID }} private-key: ${{ secrets.APP_PRIVATE_KEY }} - uses: ./actions/staging-tests with: token: ${{ steps.app-token.outputs.token }} ### Use app token with `actions/checkout` on: [pull_request] jobs: auto-format: runs-on: ubuntu-latest steps: - uses: actions/create-github-app-token@v3 id: app-token with: # required client-id: ${{ vars.APP_CLIENT_ID }} private-key: ${{ secrets.APP_PRIVATE_KEY }} - uses: actions/checkout@v6 with: token: ${{ steps.app-token.outputs.token }} ref: ${{ github.head_ref }} # Make sure the value of GITHUB_TOKEN will not be persisted in repo's config persist-credentials: false - uses: creyD/prettier_action@v6 with: github_token: ${{ steps.app-token.outputs.token }} ### Create a Git committer string for an app installation on: [pull_request] jobs: auto-format: runs-on: ubuntu-latest steps: - uses: actions/create-github-app-token@v3 id: app-token with: # required client-id: ${{ vars.APP_CLIENT_ID }} private-key: ${{ secrets.APP_PRIVATE_KEY }} - name: Get GitHub App User ID id: get-user-id run: echo "user-id=$(gh api "/users/${{ steps.app-token.outputs.app-slug }}[bot]" --jq .id)" >> "$GITHUB_OUTPUT" env: GH_TOKEN: ${{ steps.app-token.outputs.token }} - id: committer run: echo "string=${{ steps.app-token.outputs.app-slug }}[bot] <${{ steps.get-user-id.outputs.user-id }}+${{ steps.app-token.outputs.app-slug }}[bot]@users.noreply.github.com>" >> "$GITHUB_OUTPUT" - run: echo "committer string is ${{ steps.committer.outputs.string }}" </excerpt> </source> <source kind="search"> <title>create-github-app-token/README.md at main · actions/create-github-app-token · GitHub</title> <location>https://github.com/actions/create-github-app-token/blob/main/README.md?plain=1</location> <excerpt>citeturn0search1 [wordlim: 200] Crawled: today; - uses: actions/create-github-app-token@v3 ... The action creates an installation access token using [the `POST /app/installations/{installation_id}/access_tokens` endpoint](https://docs.github.com/rest/apps/apps? # Create GitHub App Token [](https://github.com/actions/create-github-app-token/actions/workflows/test.yml) GitHub Action for creating a GitHub App installation access token. ## Usage In order to use this action, you need to: 1. [Register new GitHub App](https://docs.github.com/apps/creating-github-apps/setting-up-a-github-app/creating-a-github-app). 2. [Store the App's Client ID in your repository variables](https://docs.github.com/actions/how-tos/write-workflows/choose-what-workflows-do/use-variables#defining-configuration-variables-for-multiple-workflows) (example: `APP_CLIENT_ID`). 3. [Store the App's private key in your repository secrets](https://docs.github.com/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets?tool=webui#creating-secrets-for-a-repository) (example: `APP_PRIVATE_KEY`). > [!IMPORTANT] > An installation access token expires after 1 hour. Please see this comment (GitHub issue 121 in actions/create-github-app-token (link omitted to avoid creating a cross-reference)) for alternative approaches if you have long-running processes. ### Create a token for the current repository ```yaml name: Run tests on staging on: push: branches: - main jobs: hello-world: runs-on: ubuntu-latest steps: - uses: actions/create-github-app-token@v3 id: app-token with: client-id: ${{ vars.APP_CLIENT_ID }} private-key: ${{ secrets.APP_PRIVATE_KEY }} - uses: ./actions/staging-tests with: token: ${{ steps.app-token.outputs.token }} ``` ### Use app token with `actions/checkout` ```yaml on: [pull_request] jobs: auto-format: runs-on: ubuntu-latest steps: - uses: actions/create-github-app-token@v3 id: app-token with: # required client-id: ${{ vars.APP_CLIENT_ID }} private-key: ${{ secrets.APP_PRIVATE_KEY }} - uses: actions/checkout@v6 with: token: ${{ steps.app-token.outputs.token }} ref: ${{ github.head_ref }} # Make sure the value of GITHUB_TOKEN will not be persisted in repo's config persist-credentials: false - uses: creyD/prettier_action@v6 with: github_token: ${{ steps.app-token.outputs.token }} ``` ### Create a Git committer string for an app installation ```yaml on: [pull_request] jobs: auto-format: runs-on: ubuntu-latest steps: - uses: actions/create-github-app-token@v3 id: app-token with: </excerpt> </source> <source kind="search"> <title>Releases · actions/create-github-app-token · GitHub</title> <location>https://github.com/actions/create-github-app-token/releases</location> <excerpt>citeturn0search2 [wordlim: 200] Crawled: 3 weeks ago; # Releases: actions/create-github-app-token ... Releases · actions/create-github-app-token ... * Requires Actions Runner v2.327.1 or later if you are using a self-hosted runner. actions / create-github-app-token Public * Notifications You must be signed in to change notification settings * Fork 175 * Star * Code * Issues 9 * Pull requests 9 * Discussions * Actions * Security and quality 0 * Insights # Releases: actions/create-github-app-token Releases Tags [Input: Find a release] [Input] Releases · actions/create-github-app-token ## Release list * v3.2.0 * v3.1.1 * v3.1.0 * v3.0.0 * v3.0.0-beta.6 * v3.0.0-beta.5 * v3.0.0-beta.4 * v3.0.0-beta.3 * v2.2.2 * v2.2.1 ## v3.2.0 v3.2.0 Latest Compare # Choose a tag to compare ## Sorry, something went wrong. Filter Loading [Input] ## Sorry, something went wrong. ### Uh oh! There was an error while loading. Please reload this page. ## No results found View all tags Image: @create-app-token-action-releaser create-app-token-action-releaser released this 12 May 23:31 Immutable release. Only release title and notes can be modified. v3.2.0 `bcd2ba4` This commit was created on GitHub.com and signed with GitHub’s verified signature. GPG key ID: B5690EEEBB952194 Verified Learn about vigilant mode. ## 3.2.0 (2026-05-12) ### Features * add support for enterprise-level GitHub Apps (#263) (952a2a7) * support full repository names in `repositories` input (#372) (85eb8dd) ### Bug Fixes * deps: bump @actions/core from 3.0.0 to 3.0.1 in the production-dependencies group (#364) (43e5c34) * validate private-key input (#376) (f24bbd8) Assets 3 ## v3.1.1 v3.1.1 Compare </excerpt> </source> <source kind="search"> <title>GITHUB_TOKEN - GitHub Docs</title> <location>https://docs.github.com/en/actions/concepts/security/github_token</location> <excerpt>citeturn0search3 [wordlim: 200] Crawled: today; When you enable GitHub Actions, GitHub installs a GitHub App on your repository.The `GITHUB_TOKEN` secret is a GitHub App installation access token. ... The `GITHUB_TOKEN` expires when the job finishes or after its effective maximum lifetime. # GITHUB_TOKEN Learn what `GITHUB_TOKEN` is, how it works, and why it matters for secure automation in GitHub Actions workflows. ## About the `GITHUB_TOKEN` At the start of each workflow job, GitHub automatically creates a unique `GITHUB_TOKEN` secret to use in your workflow. You can use the `GITHUB_TOKEN` to authenticate in the workflow job. When you enable GitHub Actions, GitHub installs a GitHub App on your repository. The `GITHUB_TOKEN` secret is a GitHub App installation access token. You can use the installation access token to authenticate on behalf of the GitHub App installed on your repository. The token's permissions are limited to the repository that contains your workflow. For more information, see Workflow syntax for GitHub Actions. Before each job begins, GitHub fetches an installation access token for the job. The `GITHUB_TOKEN` expires when the job finishes or after its effective maximum lifetime. The effective maximum lifetime of the token depends on the type of runner: </excerpt> </source> <omitted_sources count="11">Additional source records were omitted from this bounded result.</omitted_sources> </source_evidence> Citations: - 1: https://github.com/actions/create-github-app-token/blob/v2/README.md
Renew the release token after the long runtime build.
The actions/create-github-app-token@v2 token expires after one hour. If installation and a cold build exceed one hour, the existing app_token can expire before Compute hourly version or Compute daily version runs gh release list. Mint a new token after the build steps in both workflows, before the version queries.
| const included = Array.isArray(matrix.include) | ||
| ? matrix.include.flatMap((entry) => (entry[axis] === undefined ? [] : [entry[axis]])) | ||
| : [] | ||
| return [...values, ...included].some((value) => couldRunOnWindows(value)) |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Keep OS-neutral self-hosted values conservative.
If runs-on is ${{ matrix.os }} and matrix.os contains self-hosted, this call returns false. A Windows self-hosted runner can match that label, so readWindowsWorkflow() can omit a Windows-capable job. Treat a resolved value without an OS restriction as potentially Windows, and add a regression case for self-hosted. (docs.github.com)
There was a problem hiding this comment.
Actionable comments posted: 1
ℹ️ Review info
-
⚙️ Run configuration
-
- Source mode: Auto
- Repository: Unavailable
- Branch: Unavailable
- File: No configuration file from this repository applied
- Commit: Unavailable
- Layers: Repository UI
- Review profile: CHILL
- Plan: Advanced
- Run ID:
ee65b00a-caf6-4732-a119-8b3d85a53f73
📒 Files selected for processing: 14
-
.github/workflows/adhoc-mac-build.yml.github/workflows/daily-mac-build.yml.github/workflows/hourly-mac-build.yml.github/workflows/release-mac-build.ymlconfig/scripts/darwin-terminal-node-workflow.test.mjssrc/main/daemon/daemon-adoption-telemetry-event.tssrc/main/daemon/daemon-async-io-telemetry-event.test.tssrc/main/daemon/daemon-async-io-telemetry-event.tssrc/main/daemon/daemon-pty-adapter-async-io-health.test.tssrc/main/daemon/daemon-pty-adapter.tssrc/main/ipc/telemetry.tssrc/shared/daemon-adoption-telemetry.tssrc/shared/telemetry-daemon-event-schemas.tssrc/shared/telemetry-event-registry.ts
🚧 Files skipped from review as they are similar to previous changes: 2
-
- config/scripts/darwin-terminal-node-workflow.test.mjs
- .github/workflows/release-mac-build.yml
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 7 remain after this review.
-
| } | ||
| return | ||
| } | ||
| seen.recovered = true |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Record recovery only after track accepts the event.
If track returns false, Line 46 still marks the stall recovered. Later healthy polls then cannot emit the recovery event. Set seen.recovered only when track returns true, as the stalled branch does.
Proposed fix
-
--- "a/src/main/daemon/daemon-async-io-telemetry-event.ts" +++ "b/src/main/daemon/daemon-async-io-telemetry-event.ts" @@ -43,12 +43,13 @@ } return } - seen.recovered = true - track('daemon_async_io_health', { + if (track('daemon_async_io_health', { transition: 'recovered', ...base, stalled_for_bucket: bucketStallDuration(nowMs - seen.stalledAtMs) - }) + })) { + seen.recovered = true + } } catch { // Telemetry is best-effort; a dropped event must not fail a health read. }
|
Field recurrence on October 24: a second terminal in the same preserved v50 daemon (PID 55321) stopped accepting input. The daemon still runs the unpatched Node 24.21.0 / libuv 1.52.1 binary from October 19; updating the GUI had preserved it and its running sessions. Before recovery, all four libuv workers were in This is additional field evidence for the same failure signature and for the importance of the existing-daemon rollout limitation. It does not establish the exact Orca job-producer sequence, nor indicate a regression in the patched runtime: this daemon has never loaded the patch. The ordinary sequential-native-job reproduction documented in the PR remains the controlled workload evidence. |
# Conflicts: # .github/workflows/adhoc-mac-build.yml # .github/workflows/daily-mac-build.yml # .github/workflows/hourly-mac-build.yml # .github/workflows/release-mac-build.yml # config/scripts/win32-test-lane-registration.test.mjs # src/shared/telemetry-daemon-event-schemas.ts
…patched runtime Daemons survive app updates, so without a bump every user's new terminals keep landing on the already-running v51 daemon, which runs unpatched Node, until it restarts. v52 starts new terminals on a fresh daemon; v51 stays attachable.
…keep stall telemetry Reverts #29133 except its daemon async-I/O stall telemetry, so we can measure how often stalls happen on official Node before committing to a patched runtime. Protocol returns to v51: no release or hourly build published v52.
…keep stall telemetry (#33688) Reverts #29133 except its daemon async-I/O stall telemetry, so we can measure how often stalls happen on official Node before committing to a patched runtime. The macOS terminal host goes back to the official Node 24.22.1 download and the daemon protocol back to v51; no release or hourly build published v52.
ELI5
A long-running macOS terminal service can keep answering requests while its worker pool stops delivering typing and filesystem work. Build its private Node runtime with bounded worker waits so stale Darwin waits refresh and queued work can recover.
What Changed
Build hash-pinned Node 24.22.1 source with the reviewed private Darwin worker-wait patch. Workers retain the existing queue predicate and Darwin error workaround, wake immediately on normal signals, and refresh idle waits every 30 seconds. The default four-worker pool adds at most eight idle timeout wakes per minute.
The build verifies the archive, exact patched worker source, target architecture, macOS floor and executable receipt. Cache identity includes the builder and dependent build scripts. Source extraction is asynchronous so it cannot starve the cache lease heartbeat; cleanup releases the lease first.
All four Mac packaging workflows now verify both target runtimes before packaging. Each verifier rebuilds patched node-pty in disposable scratch under the exact target Node; it does not mutate Electron's native addon installation. Target architecture is checked explicitly. The optional 30-million-job stress requires resumed native work, four fresh stats and fresh PTY echo after any progress stall, allowing the native 30-second recovery bound plus margin.
Two missing routing-module fixture copies are fixed. Release orchestration carries one 390-minute deadline across two bounded observation jobs; verified Mac success precedes Windows/Linux artifact jobs, preserving Windows signing approval time. Adhoc Windows publication also waits through job dependencies rather than consuming its runner timeout during a cold Mac build.
Why
The October 15/23 incidents had queued work and four sleeping workers. Native witnesses and an ordinary sequential-job workload reproduce the Darwin condition-generation half-range failure. Detailed evidence and remaining limits are in
docs/bug-reproductions/darwin-worker-wakeup.mdand upstream libuv PR 5351.Linked Issue
Related preserved-owner detection/recovery: #32220.
Visual Proof
N/A — runtime and packaging changes have no new visual surface.
Testing
f8a8eeda0403is now pushed after both native lanes completed successfully; final-head main workflow and aggregate gate pass. The separate LoC retry also passes. Runtime/cache inputs are unchanged.6f006d865193in run 39922624279.499bfa2ecf6f48a116392088284979157887395b37c10177c171802cee519da7.3e57861d5df4: job 120361922731 built and exercised x64 Node24.22.1/libuv1.52.1 on physical Intel; filesystem/DNS/crypto, PTY input and idle-worker refresh passed. Entire run39937445491 succeeded. Both native caches saved.f8a8eeda0403pass; native ARM/Intel, all five Node shards, both packaging jobs, relay, wire compatibility, static/type and security checks pass. The mobile preview job failed one Chromium navigation-readiness test (485 passed); relevant product/harness/dependency sources are unchanged against the tested base, and all 30 baseline-identical preview tests pass locally on different browser/OS versions. No PR-specific cause identified; exact CI reproduction unproven. Both Electron/orcad mode-switch and changed-E2E layout jobs pass. After the whole workflow settled, the failed-only mobile retry passed (job120444909753), preserving all successful jobs. This establishes intermittency on unchanged source, not a proven browser-race cause. The main workflow39953914956 and its explicit aggregate gate both succeeded. The separate LoC workflow retry failed HTTP403 while listing PR files, before counting; its table was refreshed separately with the canonical formatter and current API data, and the failed workflow status remains explicit.3e57861d5df4bf55f2a9eb25c8f9943ce109b66a. Both Mac architecture jobs passed both target runtime oracles, helper architecture/macOS floor checks, strict signing and stapled notarization. Isolated adhoc release. Both downloaded untouched signed helpers also passed isolated launchd/authenticated PTY round trips locally (ARM native, x64 via Rosetta); both FDA RPCs reported granted. ZIP SHA512 checks matched published metadata, and local strict signing/stapler validation passed.The initial full stress run exceeded its five-minute total deadline while still progressing (about 3.9 million jobs); it did not prove a stranded worker. The revised run permits an hour on a busy host while retaining bounded no-progress recovery checks. On the final cold ARM runtime, all 30,000,000 jobs completed in about 272 seconds, with final filesystem access and fresh PTY echo; the wrapper exited 0.
An additional isolated stable-copy upgrade-pattern exercise passed on this host: the older signed protocol50 helper served a PTY from its CDHash path and retained FDA access after its disposable source location was replaced; the candidate protocol51 helper published to its distinct verified CDHash path and passed PTY/FDA. Both outer app designated requirements match. Exact test labels/processes/copies were cleaned up. This mirrors stable-copy publication; it does not execute production signed-main materialization or the real updater lifecycle.
Review
Reliability gate
terminal-runtime.darwin-worker-wakeupremains experimental. Public condition variables, Linux, Windows and WSL are unchanged. The existing signed helper layout and stable host copy remain in use. Already-running daemons keep their executable until deliberate restart; no automatic destructive recovery or queued-input replay is added.Agent skill upstream boundary
Notes
Standalone/SSH macOS servers and development Electron fallback remain unpatched. Mobile/relay benefit through a patched execution host. Installed-copy upgrade/TCC attribution, exact minimum macOS 13.5, battery and extended soak remain qualification gaps. macOS 14.8.9 signed-package qualification passes on ARM hardware for both architectures (x64 through Rosetta). Physical Intel native qualification now passes at
3e57861d5df4; orchestration-only final-head main workflow and aggregate gate pass; separate LoC retry also passes. The exact Orca producer sequence remains unknown.Earlier dependency-audit failures at merge
c5e7ff6c3f59reported existing critical/high dompurify and Next advisories. The final JavaScript audit now passes at integrationeaffa020d672against newer based10626876ea0(the job installs dompurify3.4.17); this PR did not change dependency manifests/lockfiles in its final follow-up. Current audit output retains a moderate ip-address finding and recognizes repository-patched advisories. Do not treat the earlier audit failure as a current failed check. The signed canary remains pinned to its explicitly stated earlier source.Checklist