From 0e2d4f49a68e54eab98919f87de50df0a5c522c4 Mon Sep 17 00:00:00 2001 From: Kevin Turcios Date: Wed, 18 Feb 2026 23:22:25 -0500 Subject: [PATCH 1/3] ci: add path-based filtering to skip irrelevant workflows on PRs JS E2E workflows only trigger on JS-related file changes, Python E2E and unit test workflows skip when only JS/npm files change. Push to main and workflow_dispatch remain unfiltered. --- .github/workflows/e2e-async.yaml | 9 ++++++++- .github/workflows/e2e-bubblesort-benchmark.yaml | 9 ++++++++- .github/workflows/e2e-bubblesort-pytest-nogit.yaml | 9 ++++++++- .github/workflows/e2e-bubblesort-unittest.yaml | 9 ++++++++- .github/workflows/e2e-coverage-optimization.yaml | 9 ++++++++- .github/workflows/e2e-futurehouse-structure.yaml | 9 ++++++++- .github/workflows/e2e-init-optimization.yaml | 9 ++++++++- .github/workflows/e2e-js-cjs-function.yaml | 11 ++++++++++- .github/workflows/e2e-js-esm-async.yaml | 11 ++++++++++- .github/workflows/e2e-js-ts-class.yaml | 11 ++++++++++- .github/workflows/e2e-topological-sort.yaml | 9 ++++++++- .github/workflows/e2e-tracer-replay.yaml | 9 ++++++++- .github/workflows/mypy.yml | 7 +++++++ .github/workflows/prek.yaml | 10 +++++++++- .github/workflows/unit-tests.yaml | 7 +++++++ .github/workflows/windows-unit-tests.yml | 7 +++++++ 16 files changed, 132 insertions(+), 13 deletions(-) diff --git a/.github/workflows/e2e-async.yaml b/.github/workflows/e2e-async.yaml index 9eb408298..2c4233547 100644 --- a/.github/workflows/e2e-async.yaml +++ b/.github/workflows/e2e-async.yaml @@ -3,7 +3,14 @@ name: E2E - Async on: pull_request: paths: - - '**' # Trigger for all paths + - 'codeflash/**' + - 'code_to_optimize/**' + - '!code_to_optimize/js/**' + - 'tests/**' + - 'pyproject.toml' + - 'uv.lock' + - '.github/workflows/e2e-*' + - '!.github/workflows/e2e-js-*' workflow_dispatch: diff --git a/.github/workflows/e2e-bubblesort-benchmark.yaml b/.github/workflows/e2e-bubblesort-benchmark.yaml index 2a9f413c0..a1ac30f10 100644 --- a/.github/workflows/e2e-bubblesort-benchmark.yaml +++ b/.github/workflows/e2e-bubblesort-benchmark.yaml @@ -3,7 +3,14 @@ name: E2E - Bubble Sort Benchmark on: pull_request: paths: - - '**' # Trigger for all paths + - 'codeflash/**' + - 'code_to_optimize/**' + - '!code_to_optimize/js/**' + - 'tests/**' + - 'pyproject.toml' + - 'uv.lock' + - '.github/workflows/e2e-*' + - '!.github/workflows/e2e-js-*' workflow_dispatch: diff --git a/.github/workflows/e2e-bubblesort-pytest-nogit.yaml b/.github/workflows/e2e-bubblesort-pytest-nogit.yaml index ac63b7cec..adfb1e029 100644 --- a/.github/workflows/e2e-bubblesort-pytest-nogit.yaml +++ b/.github/workflows/e2e-bubblesort-pytest-nogit.yaml @@ -3,7 +3,14 @@ name: E2E - Bubble Sort Pytest (No Git) on: pull_request: paths: - - '**' # Trigger for all paths + - 'codeflash/**' + - 'code_to_optimize/**' + - '!code_to_optimize/js/**' + - 'tests/**' + - 'pyproject.toml' + - 'uv.lock' + - '.github/workflows/e2e-*' + - '!.github/workflows/e2e-js-*' workflow_dispatch: diff --git a/.github/workflows/e2e-bubblesort-unittest.yaml b/.github/workflows/e2e-bubblesort-unittest.yaml index af0634ba3..77fc255fa 100644 --- a/.github/workflows/e2e-bubblesort-unittest.yaml +++ b/.github/workflows/e2e-bubblesort-unittest.yaml @@ -3,7 +3,14 @@ name: E2E - Bubble Sort Unittest on: pull_request: paths: - - '**' # Trigger for all paths + - 'codeflash/**' + - 'code_to_optimize/**' + - '!code_to_optimize/js/**' + - 'tests/**' + - 'pyproject.toml' + - 'uv.lock' + - '.github/workflows/e2e-*' + - '!.github/workflows/e2e-js-*' workflow_dispatch: diff --git a/.github/workflows/e2e-coverage-optimization.yaml b/.github/workflows/e2e-coverage-optimization.yaml index cd5a16e6a..aabe65901 100644 --- a/.github/workflows/e2e-coverage-optimization.yaml +++ b/.github/workflows/e2e-coverage-optimization.yaml @@ -3,7 +3,14 @@ name: Coverage E2E on: pull_request: paths: - - '**' # Trigger for all paths + - 'codeflash/**' + - 'code_to_optimize/**' + - '!code_to_optimize/js/**' + - 'tests/**' + - 'pyproject.toml' + - 'uv.lock' + - '.github/workflows/e2e-*' + - '!.github/workflows/e2e-js-*' workflow_dispatch: diff --git a/.github/workflows/e2e-futurehouse-structure.yaml b/.github/workflows/e2e-futurehouse-structure.yaml index 72631dc9a..a54c7c1a4 100644 --- a/.github/workflows/e2e-futurehouse-structure.yaml +++ b/.github/workflows/e2e-futurehouse-structure.yaml @@ -3,7 +3,14 @@ name: E2E - Futurehouse Structure on: pull_request: paths: - - '**' # Trigger for all paths + - 'codeflash/**' + - 'code_to_optimize/**' + - '!code_to_optimize/js/**' + - 'tests/**' + - 'pyproject.toml' + - 'uv.lock' + - '.github/workflows/e2e-*' + - '!.github/workflows/e2e-js-*' workflow_dispatch: diff --git a/.github/workflows/e2e-init-optimization.yaml b/.github/workflows/e2e-init-optimization.yaml index 5bb6d2c02..e64511e47 100644 --- a/.github/workflows/e2e-init-optimization.yaml +++ b/.github/workflows/e2e-init-optimization.yaml @@ -3,7 +3,14 @@ name: E2E - Init Optimization on: pull_request: paths: - - '**' # Trigger for all paths + - 'codeflash/**' + - 'code_to_optimize/**' + - '!code_to_optimize/js/**' + - 'tests/**' + - 'pyproject.toml' + - 'uv.lock' + - '.github/workflows/e2e-*' + - '!.github/workflows/e2e-js-*' workflow_dispatch: concurrency: diff --git a/.github/workflows/e2e-js-cjs-function.yaml b/.github/workflows/e2e-js-cjs-function.yaml index 9191d18f2..d02a01d4c 100644 --- a/.github/workflows/e2e-js-cjs-function.yaml +++ b/.github/workflows/e2e-js-cjs-function.yaml @@ -3,7 +3,16 @@ name: E2E - JS CommonJS Function on: pull_request: paths: - - '**' # Trigger for all paths + - 'codeflash/languages/javascript/**' + - 'packages/**' + - 'code_to_optimize/js/**' + - 'tests/test_languages/test_javascript*' + - 'tests/test_languages/test_js_*' + - 'tests/test_languages/test_import_resolver*' + - 'tests/test_languages/test_typescript*' + - 'tests/test_languages/test_vitest*' + - 'tests/scripts/end_to_end_test_js*' + - '.github/workflows/e2e-js-*' workflow_dispatch: diff --git a/.github/workflows/e2e-js-esm-async.yaml b/.github/workflows/e2e-js-esm-async.yaml index e1fdbb1f7..de1daf1b5 100644 --- a/.github/workflows/e2e-js-esm-async.yaml +++ b/.github/workflows/e2e-js-esm-async.yaml @@ -3,7 +3,16 @@ name: E2E - JS ESM Async on: pull_request: paths: - - '**' # Trigger for all paths + - 'codeflash/languages/javascript/**' + - 'packages/**' + - 'code_to_optimize/js/**' + - 'tests/test_languages/test_javascript*' + - 'tests/test_languages/test_js_*' + - 'tests/test_languages/test_import_resolver*' + - 'tests/test_languages/test_typescript*' + - 'tests/test_languages/test_vitest*' + - 'tests/scripts/end_to_end_test_js*' + - '.github/workflows/e2e-js-*' workflow_dispatch: diff --git a/.github/workflows/e2e-js-ts-class.yaml b/.github/workflows/e2e-js-ts-class.yaml index 4287468ac..0847eec9a 100644 --- a/.github/workflows/e2e-js-ts-class.yaml +++ b/.github/workflows/e2e-js-ts-class.yaml @@ -3,7 +3,16 @@ name: E2E - JS TypeScript Class on: pull_request: paths: - - '**' # Trigger for all paths + - 'codeflash/languages/javascript/**' + - 'packages/**' + - 'code_to_optimize/js/**' + - 'tests/test_languages/test_javascript*' + - 'tests/test_languages/test_js_*' + - 'tests/test_languages/test_import_resolver*' + - 'tests/test_languages/test_typescript*' + - 'tests/test_languages/test_vitest*' + - 'tests/scripts/end_to_end_test_js*' + - '.github/workflows/e2e-js-*' workflow_dispatch: diff --git a/.github/workflows/e2e-topological-sort.yaml b/.github/workflows/e2e-topological-sort.yaml index dc40df845..ae75e4d38 100644 --- a/.github/workflows/e2e-topological-sort.yaml +++ b/.github/workflows/e2e-topological-sort.yaml @@ -3,7 +3,14 @@ name: E2E - Topological Sort (Worktree) on: pull_request: paths: - - '**' # Trigger for all paths + - 'codeflash/**' + - 'code_to_optimize/**' + - '!code_to_optimize/js/**' + - 'tests/**' + - 'pyproject.toml' + - 'uv.lock' + - '.github/workflows/e2e-*' + - '!.github/workflows/e2e-js-*' workflow_dispatch: diff --git a/.github/workflows/e2e-tracer-replay.yaml b/.github/workflows/e2e-tracer-replay.yaml index dd64af9b2..f06871c6c 100644 --- a/.github/workflows/e2e-tracer-replay.yaml +++ b/.github/workflows/e2e-tracer-replay.yaml @@ -3,7 +3,14 @@ name: E2E - Tracer Replay on: pull_request: paths: - - '**' # Trigger for all paths + - 'codeflash/**' + - 'code_to_optimize/**' + - '!code_to_optimize/js/**' + - 'tests/**' + - 'pyproject.toml' + - 'uv.lock' + - '.github/workflows/e2e-*' + - '!.github/workflows/e2e-js-*' workflow_dispatch: concurrency: diff --git a/.github/workflows/mypy.yml b/.github/workflows/mypy.yml index 34fc2fe9e..33269f33b 100644 --- a/.github/workflows/mypy.yml +++ b/.github/workflows/mypy.yml @@ -5,6 +5,13 @@ on: branches: - main pull_request: + paths: + - 'codeflash/**' + - 'tests/**' + - 'code_to_optimize/**' + - '!code_to_optimize/js/**' + - 'pyproject.toml' + - 'uv.lock' concurrency: group: ${{ github.workflow }}-${{ github.ref_name }} diff --git a/.github/workflows/prek.yaml b/.github/workflows/prek.yaml index af48e9330..85f8aabf9 100644 --- a/.github/workflows/prek.yaml +++ b/.github/workflows/prek.yaml @@ -1,5 +1,13 @@ name: Lint -on: [pull_request] +on: + pull_request: + paths: + - 'codeflash/**' + - 'tests/**' + - 'code_to_optimize/**' + - '!code_to_optimize/js/**' + - 'pyproject.toml' + - 'uv.lock' concurrency: group: ${{ github.workflow }}-${{ github.ref_name }} diff --git a/.github/workflows/unit-tests.yaml b/.github/workflows/unit-tests.yaml index 88130cd03..7206f51c0 100644 --- a/.github/workflows/unit-tests.yaml +++ b/.github/workflows/unit-tests.yaml @@ -4,6 +4,13 @@ on: push: branches: [main] pull_request: + paths: + - 'codeflash/**' + - 'tests/**' + - 'code_to_optimize/**' + - '!code_to_optimize/js/**' + - 'pyproject.toml' + - 'uv.lock' workflow_dispatch: concurrency: diff --git a/.github/workflows/windows-unit-tests.yml b/.github/workflows/windows-unit-tests.yml index 20b2da52e..e67ea8a62 100644 --- a/.github/workflows/windows-unit-tests.yml +++ b/.github/workflows/windows-unit-tests.yml @@ -4,6 +4,13 @@ on: push: branches: [main] pull_request: + paths: + - 'codeflash/**' + - 'tests/**' + - 'code_to_optimize/**' + - '!code_to_optimize/js/**' + - 'pyproject.toml' + - 'uv.lock' workflow_dispatch: concurrency: From b802013e02fbc50a7c0a80b1e48f7109a14126b1 Mon Sep 17 00:00:00 2001 From: Kevin Turcios Date: Wed, 18 Feb 2026 23:28:30 -0500 Subject: [PATCH 2/3] fix: remove JS exclusion from unit test workflows test_multi_file_code_replacer.py depends on code_to_optimize/js/ fixtures, so unit tests need to trigger on JS fixture changes. --- .github/workflows/unit-tests.yaml | 1 - .github/workflows/windows-unit-tests.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/.github/workflows/unit-tests.yaml b/.github/workflows/unit-tests.yaml index 7206f51c0..f34653639 100644 --- a/.github/workflows/unit-tests.yaml +++ b/.github/workflows/unit-tests.yaml @@ -8,7 +8,6 @@ on: - 'codeflash/**' - 'tests/**' - 'code_to_optimize/**' - - '!code_to_optimize/js/**' - 'pyproject.toml' - 'uv.lock' workflow_dispatch: diff --git a/.github/workflows/windows-unit-tests.yml b/.github/workflows/windows-unit-tests.yml index e67ea8a62..2776cda9a 100644 --- a/.github/workflows/windows-unit-tests.yml +++ b/.github/workflows/windows-unit-tests.yml @@ -8,7 +8,6 @@ on: - 'codeflash/**' - 'tests/**' - 'code_to_optimize/**' - - '!code_to_optimize/js/**' - 'pyproject.toml' - 'uv.lock' workflow_dispatch: From f5257f71f8b0297c764733efb414e97132af1736 Mon Sep 17 00:00:00 2001 From: Kevin Turcios Date: Wed, 18 Feb 2026 23:45:39 -0500 Subject: [PATCH 3/3] fix: add self-trigger paths to required workflow filters Without these, workflow-only PRs never trigger the required checks, leaving them stuck at "Waiting for status to be reported". --- .github/workflows/mypy.yml | 1 + .github/workflows/prek.yaml | 1 + .github/workflows/unit-tests.yaml | 1 + .github/workflows/windows-unit-tests.yml | 1 + 4 files changed, 4 insertions(+) diff --git a/.github/workflows/mypy.yml b/.github/workflows/mypy.yml index 33269f33b..9322d75c8 100644 --- a/.github/workflows/mypy.yml +++ b/.github/workflows/mypy.yml @@ -12,6 +12,7 @@ on: - '!code_to_optimize/js/**' - 'pyproject.toml' - 'uv.lock' + - '.github/workflows/mypy.yml' concurrency: group: ${{ github.workflow }}-${{ github.ref_name }} diff --git a/.github/workflows/prek.yaml b/.github/workflows/prek.yaml index 85f8aabf9..e9b44858b 100644 --- a/.github/workflows/prek.yaml +++ b/.github/workflows/prek.yaml @@ -8,6 +8,7 @@ on: - '!code_to_optimize/js/**' - 'pyproject.toml' - 'uv.lock' + - '.github/workflows/prek.yaml' concurrency: group: ${{ github.workflow }}-${{ github.ref_name }} diff --git a/.github/workflows/unit-tests.yaml b/.github/workflows/unit-tests.yaml index f34653639..4a6c620f5 100644 --- a/.github/workflows/unit-tests.yaml +++ b/.github/workflows/unit-tests.yaml @@ -10,6 +10,7 @@ on: - 'code_to_optimize/**' - 'pyproject.toml' - 'uv.lock' + - '.github/workflows/unit-tests.yaml' workflow_dispatch: concurrency: diff --git a/.github/workflows/windows-unit-tests.yml b/.github/workflows/windows-unit-tests.yml index 2776cda9a..19b602f6a 100644 --- a/.github/workflows/windows-unit-tests.yml +++ b/.github/workflows/windows-unit-tests.yml @@ -10,6 +10,7 @@ on: - 'code_to_optimize/**' - 'pyproject.toml' - 'uv.lock' + - '.github/workflows/windows-unit-tests.yml' workflow_dispatch: concurrency: