diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 29101e7d..9e9b7a29 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,12 +7,44 @@ name: CI # The deploy workflows build but never test, so this is the only place the suites # actually run. It does not gate anything — main is deliberately unprotected, so a # red run reports rather than blocks. Read the result and follow up. - +# +# Path filters: commits that only bump a private submodule gitlink (internal/, infra/, +# .claude/commands) or touch prose cannot change anything the suites cover, so they are +# skipped instead of burning ~15 runner-minutes each. A gitlink bump reports the bare +# path ('internal', no trailing slash), which 'internal/**' does NOT match — both forms +# are listed. GitHub skips only when EVERY changed path matches; a commit that touches +# docs AND code still runs. on: push: branches: [main] + paths-ignore: + - 'internal' + - 'internal/**' + - 'infra' + - 'infra/**' + - '.claude/**' + - '.gitmodules' + - '**/*.md' + - 'LICENSE' + - '.github/ISSUE_TEMPLATE/**' + - '.github/FUNDING.yml' + - '.github/dependabot.yml' + - '.github/assets/**' pull_request: branches: [main] + paths-ignore: + - 'internal' + - 'internal/**' + - 'infra' + - 'infra/**' + - '.claude/**' + - '.gitmodules' + - '**/*.md' + - 'LICENSE' + - '.github/ISSUE_TEMPLATE/**' + - '.github/FUNDING.yml' + - '.github/dependabot.yml' + - '.github/assets/**' workflow_dispatch: permissions: diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 7768bbf1..295a8d7a 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -1,22 +1,43 @@ name: CodeQL -# Documentation-only changes cannot affect what CodeQL analyzes (C# and -# TypeScript), so they are filtered out rather than spending ~10 minutes to -# re-report an unchanged result. A commit that touches docs AND code still runs: -# GitHub skips only when EVERY changed path matches the filter. +# Documentation-only changes and private-submodule gitlink bumps (internal/, infra/, +# .claude/commands) cannot affect what CodeQL analyzes (C# and TypeScript), so they +# are filtered out rather than spending ~10 minutes to re-report an unchanged result. +# A gitlink bump reports the bare path ('internal', no trailing slash), which +# 'internal/**' does NOT match — both forms are listed. A commit that touches docs +# AND code still runs: GitHub skips only when EVERY changed path matches the filter. +# Same list as ci.yml; keep them in step. on: push: branches: [main] paths-ignore: + - 'internal' - 'internal/**' + - 'infra' + - 'infra/**' + - '.claude/**' + - '.gitmodules' - '**/*.md' - 'LICENSE' + - '.github/ISSUE_TEMPLATE/**' + - '.github/FUNDING.yml' + - '.github/dependabot.yml' + - '.github/assets/**' pull_request: branches: [main] paths-ignore: + - 'internal' - 'internal/**' + - 'infra' + - 'infra/**' + - '.claude/**' + - '.gitmodules' - '**/*.md' - 'LICENSE' + - '.github/ISSUE_TEMPLATE/**' + - '.github/FUNDING.yml' + - '.github/dependabot.yml' + - '.github/assets/**' schedule: # Weekly, so advisories published after a merge still surface. Deliberately # unfiltered — it re-analyzes the whole tree regardless of what changed, which