diff --git a/.github/actions/install-node-dependencies/action.yml b/.github/actions/install-node-dependencies/action.yml index c01ae5b2ef8..1c5e11129b5 100644 --- a/.github/actions/install-node-dependencies/action.yml +++ b/.github/actions/install-node-dependencies/action.yml @@ -46,7 +46,7 @@ outputs: description: The small pnpm-owned verification record, without registry metadata. value: ${{ steps.verification-cache.outputs.path }} verification-cache-key: - description: Exact verification record key, also used by the isolated PR benchmark. + description: Exact verification record cache key. value: ${{ steps.verification-cache.outputs.key }} node-version: description: Resolved Node.js version used for the install. diff --git a/.github/workflows/ci-closed-pr-caches.yml b/.github/workflows/ci-closed-pr-caches.yml index a5a3a9f33f2..f215a6d3226 100644 --- a/.github/workflows/ci-closed-pr-caches.yml +++ b/.github/workflows/ci-closed-pr-caches.yml @@ -39,7 +39,6 @@ jobs: ['release-ref-validation', 'release-ref-validation.yml'], ['docs-pr', 'docs.yml'], ['cloud-verify-refs/pull', 'cloud-verify.yml', '/merge'], - ['pnpm-verification-pilot', 'ci-pnpm-verification-pilot.yml'], ['win-orcad-serve-switch-e2e', 'win-orcad-serve-switch-e2e.yml'], ['pi-provider-runtime', 'pi-provider-runtime.yml'], ['coding-plan-contract', 'zcode-credential-contract.yml', '-credentials'], diff --git a/.github/workflows/ci-pnpm-verification-pilot.yml b/.github/workflows/ci-pnpm-verification-pilot.yml deleted file mode 100644 index bbbc989c720..00000000000 --- a/.github/workflows/ci-pnpm-verification-pilot.yml +++ /dev/null @@ -1,67 +0,0 @@ -name: pnpm verification cache pilot - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review, converted_to_draft] - paths: ['.github/workflows/ci-pnpm-verification-pilot.yml'] - workflow_dispatch: - -permissions: - contents: read - -concurrency: - group: pnpm-verification-pilot-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -env: - ORCA_BACKGROUND_LAUNCH: '1' - -jobs: - seed: - if: github.event_name != 'pull_request' || github.event.pull_request.draft != true - strategy: - matrix: - runner: [ubuntu-latest, ubuntu-24.04-arm] - runs-on: ${{ matrix.runner }} - timeout-minutes: 15 - steps: - - uses: actions/checkout@v6 - with: - persist-credentials: false - - uses: ./.github/actions/install-node-dependencies - id: deps - # PR caches are scoped to the PR merge ref; main never restores them. - - uses: actions/cache/save@v5 - if: steps.deps.outputs.verification-cache-hit != 'true' - with: - path: ${{ steps.deps.outputs.verification-cache-path }} - key: ${{ steps.deps.outputs.verification-cache-key }} - - measure: - needs: seed - name: measure ${{ matrix.runner }} sample ${{ matrix.sample }} cache ${{ matrix.cache }} - strategy: - fail-fast: false - max-parallel: 4 - matrix: - runner: [ubuntu-latest, ubuntu-24.04-arm] - sample: [1, 2, 3] - cache: ['false', 'true'] - runs-on: ${{ matrix.runner }} - timeout-minutes: 15 - steps: - - uses: actions/checkout@v6 - with: - persist-credentials: false - - uses: ./.github/actions/install-node-dependencies - id: deps - with: - cache-pnpm-verification: ${{ matrix.cache }} - - name: Validate treatment and frozen install - env: - CACHE_ENABLED: ${{ matrix.cache }} - CACHE_HIT: ${{ steps.deps.outputs.verification-cache-hit }} - run: | - if [ "$CACHE_ENABLED" = true ]; then test "$CACHE_HIT" = true; fi - git diff --exit-code -- package.json pnpm-lock.yaml pnpm-workspace.yaml - node -e "require.resolve('vitest'); require.resolve('electron')" diff --git a/.github/workflows/daemon-relocation-spike.yml b/.github/workflows/daemon-relocation-spike.yml deleted file mode 100644 index 25a88ae949f..00000000000 --- a/.github/workflows/daemon-relocation-spike.yml +++ /dev/null @@ -1,119 +0,0 @@ -name: Daemon Relocation Spike - -# Why: Phase 1 of the Windows update-survival work relocates the terminal -# daemon's file closure out of the install dir so it survives an update. Before -# implementing it in the app, this spike finds the MINIMAL set of packaged files -# that a copied Orca.exe (run as node) needs to start the daemon and drive a -# ConPTY session from a relocated directory, holding no install-dir file locks. -# Runs from the feature branch via push (workflow_dispatch only works on the -# default branch); main is never touched. - -on: - push: - branches: - - Jinwoo-H/windows-update-survival - paths: - - 'tests/tools/daemon-relocation-spike/**' - - '.github/workflows/daemon-relocation-spike.yml' - workflow_dispatch: {} - -permissions: - contents: read - -concurrency: - group: daemon-relocation-spike-${{ github.ref }} - cancel-in-progress: true - -jobs: - spike: - name: relocation file-set spike - runs-on: windows-2022 - timeout-minutes: 40 - - steps: - - name: Checkout - uses: actions/checkout@v6 - with: - # This job only reads the repo to build/run the spike; it never pushes. - persist-credentials: false - - - name: Setup Node.js - uses: actions/setup-node@v6 - with: - node-version-file: package.json - check-latest: true - - - name: Setup pnpm - uses: pnpm/setup@v2 - with: - install: false - - - name: Install dependencies - run: pnpm install --frozen-lockfile - - # Why: cache the unpacked build keyed on the inputs that affect it, so - # spike-script-only edits skip the ~15 min electron-builder build. - - name: Cache unpacked build - id: cache-unpacked - uses: actions/cache@v4 - with: - path: dist/win-unpacked - # mobile/ is in the key because beforePack requires out/mobile-web, whose bytes are the - # page built from the mobile install and the page trees below; a mobile-only change must - # miss this cache, not reuse a stale installer. config/** already covers the builder, the - # verifier and the manifest writer. - key: >- - win-unpacked-${{ hashFiles( - 'src/**', - 'config/**', - 'package.json', - 'pnpm-lock.yaml', - 'mobile/package.json', - 'mobile/pnpm-lock.yaml', - 'mobile/app/**', - 'mobile/src/**', - 'mobile/web-entry/**' - ) }} - - # Why here: electron-builder's beforePack requires out/mobile-web, and the bundle - # build resolves React Native and Expo from mobile/node_modules. Gated with the - # build it feeds, so a cache hit does not pay for an install nothing consumes. - - uses: ./.github/actions/install-mobile-dependencies - if: steps.cache-unpacked.outputs.cache-hit != 'true' - - - name: Build unpacked app - if: steps.cache-unpacked.outputs.cache-hit != 'true' - run: pnpm run build:unpack - - - name: Run relocation spike (all tiers) - shell: pwsh - run: | - New-Item -ItemType Directory -Force artifacts | Out-Null - $log = "artifacts/spike-output.log" - $tiers = @('full', 'no-gpu', 'minimal') - $any = $false - foreach ($tier in $tiers) { - "===== TIER: $tier =====" | Tee-Object -FilePath $log -Append - $work = Join-Path $env:RUNNER_TEMP "spike-$tier" - # --keep-work-dir so the per-tier daemon stdout/stderr logs survive - # for the artifact upload (the spike otherwise removes work-dir), - # which is what diagnoses a tier that fails to reach ready. - node tests/tools/daemon-relocation-spike/spike.mjs ` - --app-dir dist/win-unpacked ` - --work-dir "$work" ` - --tier $tier ` - --keep-work-dir 2>&1 | Tee-Object -FilePath $log -Append - if ($LASTEXITCODE -eq 0) { $any = $true } - } - if (-not $any) { throw "No tier passed the relocation spike" } - - - name: Upload spike output - if: always() - uses: actions/upload-artifact@v7 - with: - name: daemon-relocation-spike-output - path: | - artifacts/spike-output.log - ${{ runner.temp }}/spike-*/**/*.log - retention-days: 7 - if-no-files-found: warn diff --git a/config/scripts/ci-closed-pr-cancellation.test.mjs b/config/scripts/ci-closed-pr-cancellation.test.mjs index bb118b5a9a8..d6881ec348f 100644 --- a/config/scripts/ci-closed-pr-cancellation.test.mjs +++ b/config/scripts/ci-closed-pr-cancellation.test.mjs @@ -92,7 +92,6 @@ it('looks up exact PR groups without branch or head-SHA inference', async () => 'release-ref-validation-123', 'docs-pr-123', 'cloud-verify-refs/pull/123/merge', - 'pnpm-verification-pilot-123', 'win-orcad-serve-switch-e2e-123', 'pi-provider-runtime-123', 'coding-plan-contract-123-credentials',