From b7893ae396d20badeeb56ba36019edfa69e6d0e0 Mon Sep 17 00:00:00 2001 From: Alexander Mills Date: Mon, 3 Aug 2026 11:56:39 -0500 Subject: [PATCH 1/5] ci: satisfy fail-closed workflow concurrency policy --- .github/workflows/recursive-install-windows.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/recursive-install-windows.yml b/.github/workflows/recursive-install-windows.yml index db568532..8fdb860c 100644 --- a/.github/workflows/recursive-install-windows.yml +++ b/.github/workflows/recursive-install-windows.yml @@ -25,7 +25,7 @@ permissions: concurrency: group: recursive-install-windows-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: ${{ github.event_name == 'pull_request' }} + cancel-in-progress: true env: CARGO_TERM_COLOR: always From e16fe93fc8eb7d8d8434cc57dd79bfe3ac5d0fc8 Mon Sep 17 00:00:00 2001 From: Alexander Mills Date: Mon, 3 Aug 2026 13:05:37 -0500 Subject: [PATCH 2/5] ci: synchronize final cross-platform lock ancestry --- .github/workflows/sync-lock-stack.yml | 68 +++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 .github/workflows/sync-lock-stack.yml diff --git a/.github/workflows/sync-lock-stack.yml b/.github/workflows/sync-lock-stack.yml new file mode 100644 index 00000000..05fcbce9 --- /dev/null +++ b/.github/workflows/sync-lock-stack.yml @@ -0,0 +1,68 @@ +name: synchronize blocking-lock stack + +on: + push: + branches: + - agent/blocking-store-process-locks + paths: + - .github/workflows/sync-lock-stack.yml + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: synchronize-blocking-lock-stack + cancel-in-progress: true + +jobs: + merge-final-cross-platform-base: + if: github.actor != 'github-actions[bot]' + runs-on: ubuntu-24.04 + timeout-minutes: 10 + permissions: + contents: write + steps: + - name: Check out the blocking-lock branch + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + ref: agent/blocking-store-process-locks + fetch-depth: 0 + persist-credentials: false + show-progress: false + + - name: Merge the final cross-platform base semantically + env: + GH_TOKEN: ${{ github.token }} + BASE_SHA: b7893ae396d20badeeb56ba36019edfa69e6d0e0 + run: | + set -euo pipefail + if git merge-base --is-ancestor "$BASE_SHA" HEAD; then + echo "cross-platform lock base already present" + exit 0 + fi + + git fetch --no-tags origin agent/recursive-lock-cross-platform + git config user.name 'github-actions[bot]' + git config user.email '41898282+github-actions[bot]@users.noreply.github.com' + + set +e + git merge --no-ff --no-commit FETCH_HEAD + merge_status=$? + set -e + + if [ "$merge_status" -ne 0 ]; then + conflicts="$(git diff --name-only --diff-filter=U)" + test "$conflicts" = '.github/workflows/recursive-install-windows.yml' + git checkout --ours -- .github/workflows/recursive-install-windows.yml + grep -F 'cancel-in-progress: true' .github/workflows/recursive-install-windows.yml + grep -F 'owner termination releases the lower-level store lock' .github/workflows/recursive-install-windows.yml + git add .github/workflows/recursive-install-windows.yml + fi + + test -z "$(git diff --name-only --diff-filter=U)" + git diff --check + git commit -m 'merge: synchronize cross-platform lock base' + git push \ + "https://x-access-token:${GH_TOKEN}@github.com/${GITHUB_REPOSITORY}.git" \ + HEAD:agent/blocking-store-process-locks From a1009fbafff377c5f460a8330c3cf5cd7090fb0d Mon Sep 17 00:00:00 2001 From: Alexander Mills Date: Mon, 3 Aug 2026 13:07:40 -0500 Subject: [PATCH 3/5] merge: align conflicted workflow with final cross-platform base --- .github/workflows/recursive-install-windows.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/recursive-install-windows.yml b/.github/workflows/recursive-install-windows.yml index eda09e0f..8fdb860c 100644 --- a/.github/workflows/recursive-install-windows.yml +++ b/.github/workflows/recursive-install-windows.yml @@ -79,9 +79,3 @@ jobs: - name: Prove failed downloads leave no cache publication run: cargo test --locked --manifest-path zed-cli/Cargo.toml --lib install_graph::tests::failed_downloads_remove_staging_files_and_never_publish_cache_entries -- --exact --nocapture - - - name: Prove the lower-level store lock blocks across processes - run: cargo test --locked --manifest-path zed-cli/Cargo.toml --lib store::tests::install_process_lock_blocks_without_polling_until_owner_release -- --exact --nocapture - - - name: Prove owner termination releases the lower-level store lock - run: cargo test --locked --manifest-path zed-cli/Cargo.toml --lib store::tests::install_process_lock_is_released_when_owner_process_is_terminated -- --exact --nocapture From 19c962ec82b77ec6387cf0123959789cd0c7488b Mon Sep 17 00:00:00 2001 From: Alexander Mills Date: Mon, 3 Aug 2026 13:08:17 -0500 Subject: [PATCH 4/5] ci: remove completed lock-stack synchronization workflow --- .github/workflows/sync-lock-stack.yml | 68 --------------------------- 1 file changed, 68 deletions(-) delete mode 100644 .github/workflows/sync-lock-stack.yml diff --git a/.github/workflows/sync-lock-stack.yml b/.github/workflows/sync-lock-stack.yml deleted file mode 100644 index 05fcbce9..00000000 --- a/.github/workflows/sync-lock-stack.yml +++ /dev/null @@ -1,68 +0,0 @@ -name: synchronize blocking-lock stack - -on: - push: - branches: - - agent/blocking-store-process-locks - paths: - - .github/workflows/sync-lock-stack.yml - workflow_dispatch: - -permissions: - contents: read - -concurrency: - group: synchronize-blocking-lock-stack - cancel-in-progress: true - -jobs: - merge-final-cross-platform-base: - if: github.actor != 'github-actions[bot]' - runs-on: ubuntu-24.04 - timeout-minutes: 10 - permissions: - contents: write - steps: - - name: Check out the blocking-lock branch - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - ref: agent/blocking-store-process-locks - fetch-depth: 0 - persist-credentials: false - show-progress: false - - - name: Merge the final cross-platform base semantically - env: - GH_TOKEN: ${{ github.token }} - BASE_SHA: b7893ae396d20badeeb56ba36019edfa69e6d0e0 - run: | - set -euo pipefail - if git merge-base --is-ancestor "$BASE_SHA" HEAD; then - echo "cross-platform lock base already present" - exit 0 - fi - - git fetch --no-tags origin agent/recursive-lock-cross-platform - git config user.name 'github-actions[bot]' - git config user.email '41898282+github-actions[bot]@users.noreply.github.com' - - set +e - git merge --no-ff --no-commit FETCH_HEAD - merge_status=$? - set -e - - if [ "$merge_status" -ne 0 ]; then - conflicts="$(git diff --name-only --diff-filter=U)" - test "$conflicts" = '.github/workflows/recursive-install-windows.yml' - git checkout --ours -- .github/workflows/recursive-install-windows.yml - grep -F 'cancel-in-progress: true' .github/workflows/recursive-install-windows.yml - grep -F 'owner termination releases the lower-level store lock' .github/workflows/recursive-install-windows.yml - git add .github/workflows/recursive-install-windows.yml - fi - - test -z "$(git diff --name-only --diff-filter=U)" - git diff --check - git commit -m 'merge: synchronize cross-platform lock base' - git push \ - "https://x-access-token:${GH_TOKEN}@github.com/${GITHUB_REPOSITORY}.git" \ - HEAD:agent/blocking-store-process-locks From 1232fc19126b96f8e8cfa8585e92b247a1ce693c Mon Sep 17 00:00:00 2001 From: Alexander Mills Date: Mon, 3 Aug 2026 13:08:38 -0500 Subject: [PATCH 5/5] test: restore expanded Windows store-lock regressions after base sync --- .github/workflows/recursive-install-windows.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/recursive-install-windows.yml b/.github/workflows/recursive-install-windows.yml index 8fdb860c..eda09e0f 100644 --- a/.github/workflows/recursive-install-windows.yml +++ b/.github/workflows/recursive-install-windows.yml @@ -79,3 +79,9 @@ jobs: - name: Prove failed downloads leave no cache publication run: cargo test --locked --manifest-path zed-cli/Cargo.toml --lib install_graph::tests::failed_downloads_remove_staging_files_and_never_publish_cache_entries -- --exact --nocapture + + - name: Prove the lower-level store lock blocks across processes + run: cargo test --locked --manifest-path zed-cli/Cargo.toml --lib store::tests::install_process_lock_blocks_without_polling_until_owner_release -- --exact --nocapture + + - name: Prove owner termination releases the lower-level store lock + run: cargo test --locked --manifest-path zed-cli/Cargo.toml --lib store::tests::install_process_lock_is_released_when_owner_process_is_terminated -- --exact --nocapture