Skip to content

Commit a489ca2

Browse files
felickzCopilot
andauthored
Fix #206: use fully unconstrained extensionTargets ('*') for all languages (#212)
* fix: use open-ended extensionTargets floors instead of exact pins (#206) Root cause of #206: extensionTargets is exact-pinned to whatever codeql/<lang>-all version this repo's CI happens to test against, and re-pinned on every CLI bump. Unlike a normal dependencies: mismatch (which fails loudly at install time), an unsatisfied extensionTargets constraint makes the CLI silently drop the entire extension pack - zero data-extension rows applied, only a low-visibility WARNING: ... is unused, job stays green. Any drift between this repo's tested CLI version and a consumer's actual CLI version turns into silent, undetected loss of coverage. Confirmed via local CLI testing, a genuine GHCR registry install, and a real hosted GitHub Actions default-setup run. By contrast, a genuinely unsatisfiable dependencies: constraint fails hard (ERROR: No valid pack solution found...), and even a stale/incompatible dependencies pin on the CLI-bundled codeql/<lang>-all itself is harmless - the CLI always resolves that dependency to whatever -all it actually bundles regardless of the declared range, and any real incompatibility then surfaces as an ordinary QL compile error. So extensionTargets is the only mechanism with this silent failure mode - confirmed empirically with isolated dependency-resolution tests. Changes (piloting on Java first): - java/ext and java/ext-library-sources: extensionTargets changed from an exact pin (9.2.2) to an open-ended floor (>=9.2.2, no upper bound). Verified this resolves correctly against CLI 2.26.2's bundled java-all 9.2.2, and continues to work as the CLI/bundle moves forward. - pin-codeql-library-versions.sh: excludes */ext and */ext-library-sources from its auto-repin loop entirely, so a routine CLI bump can never silently re-tighten an extensionTargets floor back to an exact version. Query/library pack dependencies: pinning is unchanged - that serves a different purpose (preventing codeql pack upgrade from resolving unconstrained '*' deps to registry-latest). - update-codeql-version.yml: updated comments/PR body text to reflect the narrower scope of the auto-repin step. - CONTRIBUTING.md: documents the new extensionTargets floor policy in a new warning box, cross-referenced from the existing ext-packs-no-install note. Other languages (csharp, go, python) still use an exact extensionTargets pin pending the same conversion in follow-up work. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: f02ef23b-e35d-4536-bd58-f2fbc2976ba9 * fix: use unconstrained extensionTargets ('*') for all languages, not a version floor Supersedes the earlier Java-only, version-floor approach with the correct fix, based on further investigation: - Extends the fix to all 4 languages that have ext/ext-library-sources packs (java, csharp, go, python), not just java. - Uses fully unconstrained extensionTargets: '*' instead of a version floor ('>=X.Y.Z'). A floor only protects consumers on newer CLIs; consumers on older CLIs below the floor would still be silently dropped - the same bug, just shifted. - Git archaeology on java/ext/qlpack.yml shows '*' was the original, intentional design for ~2.9 years (Sept 2023-July 2026) until PR #166's CLI-bump automation blindly regex-replaced every codeql/<pkg>: version line - dependencies: and extensionTargets: alike - across all 4 languages, with no distinction between the two. This was an unintentional regression, not a deliberate compatibility fix. - extensionTargets never participates in codeql pack install/upgrade's registry dependency resolution (confirmed empirically: no lock-file entry is ever generated for it), so '*' here cannot 'fetch latest' the way an unconstrained dependencies: entry would - it only means 'apply regardless of which <lang>-all version is in play'. - Dedicated research across all 4 languages' ExternalFlowExtensions.qll history in github/codeql found exactly one genuine breaking change, ever: neutralModel gained a kind column in both Java and C# (codeql/java-all and codeql/csharp-all 0.6.2, CodeQL CLI v2.13.3, May 2023). Go and Python have never had a breaking change. Even that one break fails loudly (QL compile error), never silently - so this repo's own CI is a sufficient tripwire for any future break, without needing a preemptive floor. Also: - pin-codeql-library-versions.sh and update-codeql-version.yml comments updated to describe the '*' decision (was previously written to describe a version-floor approach that was never actually correct). - Added a short protective comment above extensionTargets: in all 6 qlpack.yml files explaining what happens if it's ever pinned/floored again, so a future manual edit doesn't reintroduce #206. Fixes #206 --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: f02ef23b-e35d-4536-bd58-f2fbc2976ba9
1 parent a68fd6d commit a489ca2

9 files changed

Lines changed: 191 additions & 39 deletions

File tree

‎.github/scripts/pin-codeql-library-versions.sh‎

Lines changed: 51 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,40 @@
11
#!/usr/bin/env bash
2-
# Pins every `codeql/<name>` dependency in this repo's qlpack.yml files to the
3-
# exact library version shipped in the official CodeQL Bundle for a given CLI
2+
# Pins every `codeql/<name>` `dependencies:` entry in this repo's query/library
3+
# pack qlpack.yml files (`<language>/src`, `<language>/lib`, etc.) to the exact
4+
# library version shipped in the official CodeQL Bundle for a given CLI
45
# release - overwriting whatever value is currently there (an unconstrained
56
# `'*'`, or an exact version pinned by a previous run of this script against
67
# an older CLI).
78
#
8-
# Why this exists: `codeql pack upgrade` resolves an unconstrained `'*'`
9-
# dependency to the *latest-ever-published* version in the configured
10-
# registry (GHCR) - completely independent of whatever CodeQL CLI version is
11-
# pinned in `.codeqlversion`. That mismatch can jump `codeql/<lang>-all`
12-
# several major versions ahead of what the pinned CLI actually ships/tests
13-
# against, which can silently break analyses (see CONTRIBUTING.md's
14-
# "Updating the pinned CodeQL CLI/library version" section for a worked
15-
# example). Pinning these `codeql/*` deps to the exact bundle-paired version
16-
# before running `codeql pack upgrade` makes that resolution deterministic
17-
# and keeps every pack's declared library dependency in lockstep with the
18-
# CLI version this repo says it supports.
9+
# Deliberately does NOT touch `<language>/ext` or `<language>/ext-library-sources`
10+
# - those are model/extension packs that declare `extensionTargets:`, not
11+
# `dependencies:`, and are excluded from this script's file list entirely. See
12+
# CONTRIBUTING.md's "Supported CodeQL versions" section ("Why `extensionTargets`
13+
# is always `'*'`, never pinned") for why: unlike `dependencies:`, an unsatisfied
14+
# `extensionTargets` constraint doesn't fail loudly, it silently drops the whole
15+
# extension pack, so re-pinning it - to an exact version OR a version floor -
16+
# on every CLI bump (the way this script handles `dependencies:`) turns routine
17+
# consumer CLI drift into silent, undetected loss of coverage
18+
# (GitHubSecurityLab/CodeQL-Community-Packs#206). `extensionTargets` is left as
19+
# the fully unconstrained `'*'` instead, and this script must never touch it -
20+
# see the comment above `extensionTargets:` in each `<language>/ext*/qlpack.yml`.
21+
#
22+
# Why this exists (for `dependencies:`): `codeql pack upgrade` resolves an
23+
# unconstrained `'*'` dependency to the *latest-ever-published* version in the
24+
# configured registry (GHCR) - completely independent of whatever CodeQL CLI
25+
# version is pinned in `.codeqlversion`. That mismatch can jump
26+
# `codeql/<lang>-all` several major versions ahead of what the pinned CLI
27+
# actually ships/tests against, which can silently break analyses (see
28+
# CONTRIBUTING.md's "Updating the pinned CodeQL CLI/library version" section
29+
# for a worked example). Pinning these `codeql/*` deps to the exact
30+
# bundle-paired version before running `codeql pack upgrade` makes that
31+
# resolution deterministic and keeps every pack's declared library dependency
32+
# in lockstep with the CLI version this repo says it supports. This is safe
33+
# for `dependencies:` (unlike `extensionTargets:`) because a genuinely
34+
# unsatisfiable `dependencies:` constraint fails loudly at `codeql pack
35+
# install`/`resolve-dependencies` time (`ERROR: No valid pack solution
36+
# found...`), and any incompatibility in the CLI-bundled `codeql/<lang>-all`
37+
# itself surfaces as an ordinary QL compile error - never a silent drop.
1938
#
2039
# This script is idempotent and must be re-run (with a new target version)
2140
# on every subsequent CLI bump: once a dependency is pinned to an exact
@@ -67,8 +86,25 @@ echo "Discovered $(wc -l < "$VERSIONS_FILE") bundled codeql/* packages for CLI $
6786
# artifacts (.codeql/ pack caches, the /codeql cloned-repo checkout dir, and
6887
# /codeql_home, where .github/actions/install-codeql downloads/extracts the
6988
# CodeQL CLI - which ships its own small vendored qlpack.yml packs, e.g.
70-
# codeql/<lang>/downgrades, that have nothing to do with this repo).
71-
mapfile -t QLPACK_FILES < <(find . -name qlpack.yml -not -path "*/.codeql/*" -not -path "./codeql/*" -not -path "./codeql_home/*")
89+
# codeql/<lang>/downgrades, that have nothing to do with this repo) - and
90+
# excluding every `<language>/ext` and `<language>/ext-library-sources`
91+
# model/extension pack. Those use `extensionTargets:` instead of
92+
# `dependencies:`, and deliberately do NOT get re-pinned on every CLI bump the
93+
# way `dependencies:` does here (see CONTRIBUTING.md's "Supported CodeQL
94+
# versions" section, "Why `extensionTargets` is always `'*'`, never pinned or
95+
# floored"). Unlike `dependencies:`, an unsatisfied `extensionTargets`
96+
# constraint doesn't fail loudly - the CLI just silently drops the whole
97+
# extension pack (zero data-extension rows applied, only a low-visibility
98+
# `WARNING: ... is unused`) - so re-pinning it to whatever this repo's own CI
99+
# happens to test against, on every routine CLI bump, turns every consumer
100+
# CLI/version mismatch into silent, undetected loss of coverage (see
101+
# GitHubSecurityLab/CodeQL-Community-Packs#206). Instead, `extensionTargets`
102+
# is left as the fully unconstrained `codeql/<lang>-all: '*'` and only ever
103+
# changed by hand if a maintainer confirms an actual breaking change to the
104+
# models-as-data schema (e.g. an extensible predicate's arity/column set
105+
# changed) - our own test suite failing is the trigger to look for that, not
106+
# a routine CLI bump.
107+
mapfile -t QLPACK_FILES < <(find . -name qlpack.yml -not -path "*/.codeql/*" -not -path "./codeql/*" -not -path "./codeql_home/*" -not -path "*/ext/*" -not -path "*/ext-library-sources/*")
72108

73109
declare -A PINNED_COUNT=()
74110
while read -r pkg ver; do

‎.github/workflows/update-codeql-version.yml‎

Lines changed: 31 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -84,17 +84,24 @@ jobs:
8484
env:
8585
GH_TOKEN: ${{ github.token }}
8686
run: |
87+
# NOTE: this only re-pins `dependencies:` in query/library packs
88+
# (<language>/src, <language>/lib, etc.) - it deliberately skips
89+
# <language>/ext and <language>/ext-library-sources, whose
90+
# `extensionTargets:` is intentionally left as an unconstrained
91+
# `'*'` and must never be auto-rewritten (see
92+
# pin-codeql-library-versions.sh's header comment and
93+
# CONTRIBUTING.md's "Supported CodeQL versions" section).
8794
.github/scripts/pin-codeql-library-versions.sh "${{ steps.version.outputs.version }}"
8895
8996
- name: Upgrade every pack's dependencies
9097
env:
9198
GITHUB_TOKEN: ${{ github.token }}
9299
run: |
93100
set -euo pipefail
94-
# Exclusions (the first three below are also excluded in
95-
# .github/scripts/pin-codeql-library-versions.sh; the last one is
96-
# NOT - ext/ext-library-sources still need their extensionTargets
97-
# versions pinned, but must be skipped here to avoid lock-file churn):
101+
# Exclusions (all four are also excluded in
102+
# .github/scripts/pin-codeql-library-versions.sh, though ext/
103+
# ext-library-sources are excluded there for a different reason -
104+
# see that script's header comment):
98105
# - ./ql/hotspots is a standalone local dev tool (see
99106
# ql/hotspots/README.md and .github/workflows/hotspots.yml), not
100107
# one of the per-language src/lib/ext/ext-library-sources packs
@@ -109,14 +116,16 @@ jobs:
109116
# checkout (used by ql/hotspots) and CodeQL's own per-pack build
110117
# caches, respectively - neither is a repo pack either.
111118
# - <lang>/ext and <lang>/ext-library-sources are CodeQL model/extension packs
112-
# (`extensionTargets`, no `dependencies`) - NOT excluded from
113-
# pin-codeql-library-versions.sh (their extensionTargets versions still need
114-
# pinning), but excluded here: `codeql pack upgrade` (re)writes their
115-
# codeql-pack.lock.yml with an empty `dependencies: {}` map, and a checked-in
116-
# lock file in that state makes a later `codeql pack create`/`publish` emit a
117-
# bogus `addsTo.pack '...' is not an extension target of '...'` warning for
118-
# every data extension in the pack (a known CodeQL CLI bug, see
119-
# https://github.com/github/codeql/issues/20211). See CONTRIBUTING.md.
119+
# (`extensionTargets`, no `dependencies`) - excluded here for TWO independent
120+
# reasons, either of which alone would be enough: (1) `codeql pack upgrade`
121+
# (re)writes their codeql-pack.lock.yml with an empty `dependencies: {}` map,
122+
# and a checked-in lock file in that state makes a later `codeql pack
123+
# create`/`publish` emit a bogus `addsTo.pack '...' is not an extension target
124+
# of '...'` warning for every data extension in the pack (a known CodeQL CLI
125+
# bug, see https://github.com/github/codeql/issues/20211); (2) `extensionTargets`
126+
# is intentionally left as an unconstrained `'*'` (see qlpack.yml's own comment
127+
# and CONTRIBUTING.md) and must never be auto-rewritten by tooling - see
128+
# GitHubSecurityLab/CodeQL-Community-Packs#206.
120129
for dir in $(find . -name qlpack.yml -not -path "./ql/hotspots/*" -not -path "./codeql_home/*" -not -path "./codeql/*" -not -path "*/.codeql/*" -not -path "*/ext/*" -not -path "*/ext-library-sources/*" -exec dirname {} \;); do
121130
echo "::group::codeql pack upgrade $dir"
122131
codeql pack upgrade "$dir"
@@ -234,12 +243,16 @@ jobs:
234243
echo
235244
echo "This PR:"
236245
echo '- Updates `.codeqlversion` to `'"${{ steps.version.outputs.version }}"'`.'
237-
echo '- Pins every `codeql/<lang>-all` / `codeql/<lang>-queries` dependency across all'
238-
echo ' `qlpack.yml` files to the exact version shipped in the official CodeQL Bundle'
239-
echo ' for this CLI release (see `.github/scripts/pin-codeql-library-versions.sh`) -'
240-
echo ' this keeps `codeql pack upgrade` from jumping those libraries to'
241-
echo ' registry-latest instead of the version this CLI actually ships/tests against.'
242-
echo '- Runs `codeql pack upgrade <dir>` for every pack directory to refresh its'
246+
echo '- Pins every `codeql/<lang>-all` / `codeql/<lang>-queries` `dependencies:`'
247+
echo ' entry across query/library `qlpack.yml` files (not `*/ext` or'
248+
echo ' `*/ext-library-sources`, whose `extensionTargets` is intentionally left'
249+
echo ' unconstrained and must never be auto-rewritten) to the exact version'
250+
echo ' shipped in the official CodeQL Bundle for this CLI release (see'
251+
echo ' `.github/scripts/pin-codeql-library-versions.sh`) - this keeps'
252+
echo ' `codeql pack upgrade` from jumping those libraries to registry-latest instead'
253+
echo ' of the version this CLI actually ships/tests against.'
254+
echo '- Runs `codeql pack upgrade <dir>` for every query/library pack directory (again'
255+
echo ' excluding `*/ext` and `*/ext-library-sources`) to refresh its'
243256
echo ' `codeql-pack.lock.yml` against the new CLI and pinned library versions.'
244257
echo
245258
if [[ -n "${{ steps.release_bump.outputs.bump }}" ]]; then

‎CONTRIBUTING.md‎

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,68 @@ The pinning is codified per language across:
118118
> this shortly after this pinning behavior was introduced and a pack's `qlpack.yml` still shows
119119
> `codeql/<pkg>: '*'`, that just means its dependencies haven't been re-resolved since, not that the
120120
> convention doesn't apply to it.
121+
>
122+
> **This exact-pin treatment applies to `dependencies:` only** (query/library packs: `src`, `lib`,
123+
> etc.) - `<language>/ext` and `<language>/ext-library-sources` model/extension packs use
124+
> `extensionTargets:` instead, and are handled completely differently; see the next warning box.
125+
126+
> [!WARNING]
127+
> <a id="extensiontargets-floor"></a>**Why `extensionTargets` is always `'*'` (fully unconstrained),
128+
> never pinned or floored (unlike `dependencies:` above):** `extensionTargets` and `dependencies:`
129+
> look similar but fail very differently when a consumer's CodeQL CLI doesn't bundle the exact
130+
> version this repo pinned against. An unsatisfiable `dependencies:` constraint fails **loudly** -
131+
> `codeql pack install`/`resolve-dependencies` refuses with `ERROR: No valid pack solution
132+
> found...` - and even a stale/incompatible pin on the CLI-bundled `codeql/<lang>-all` itself is
133+
> harmless in practice, because the CLI always resolves that specific dependency to whatever `-all`
134+
> version it actually bundles regardless of the declared range, and any genuine incompatibility then
135+
> surfaces as an ordinary QL compile error. An unsatisfiable `extensionTargets` constraint does
136+
> neither: the CLI just **silently drops the entire extension pack** - zero data-extension rows
137+
> applied, no compile error, no SARIF-level signal, job stays green - and surfaces only a
138+
> low-visibility `WARNING: Extension pack '<name>' is unused.` that's easy to miss in CI logs.
139+
> Pinning or flooring `extensionTargets` to whatever this repo's own CI happens to test against on
140+
> every routine CLI bump (the way [`pin-codeql-library-versions.sh`][pin-codeql-library-versions-script]
141+
> handles `dependencies:`) therefore turns *any* drift between this repo's tested CLI version and a
142+
> consumer's actual CLI version into silent, undetected loss of coverage - this is exactly what
143+
> happened in [#206][issue-206], reproduced and confirmed there across a local CLI, a genuine GHCR
144+
> registry install, and a real hosted GitHub Actions run.
145+
>
146+
> The fix: `extensionTargets` is set to the fully unconstrained `codeql/<lang>-all: '*'` for every
147+
> language, and [`pin-codeql-library-versions.sh`][pin-codeql-library-versions-script] explicitly
148+
> excludes `*/ext` and `*/ext-library-sources` from its rewrite loop so a routine CLI bump can never
149+
> silently tighten it to an exact version or floor again. This is not a new/unproven approach: `'*'`
150+
> was the **original design** for these packs - `java/ext/qlpack.yml`, for example, used
151+
> `extensionTargets: codeql/java-all: '*'` continuously for roughly two and a half years (September
152+
> 2023 to July 2026, spanning many `codeql/java-all` major version bumps) with no reported issues,
153+
> until an unrelated CLI-bump automation PR
154+
> ([#166](https://github.com/GitHubSecurityLab/CodeQL-Community-Packs/pull/166)) blindly regex-replaced
155+
> every `codeql/<pkg>:` version line - `dependencies:` and `extensionTargets:` alike, with no
156+
> distinction between the two - across all four languages, unintentionally introducing the exact-pin
157+
> that later caused #206. Reverting to `'*'` restores the long-standing, empirically-proven-safe
158+
> status quo rather than adopting something new.
159+
>
160+
> `'*'` works safely here because (a) `extensionTargets` never participates in `codeql pack
161+
> install`/`upgrade`'s registry dependency resolution at all - it's purely a compatibility check
162+
> against whatever `codeql/<lang>-all` the *query* pack itself already resolved via its own
163+
> `dependencies:`, so `'*'` cannot "fetch latest" the way an unconstrained `dependencies:` entry
164+
> would - and (b) the models-as-data extensible predicates (`sinkModel`, `sourceModel`,
165+
> `summaryModel`, `neutralModel`, etc.) these packs contribute rows to are a very stable schema.
166+
> A dedicated investigation across all four supported languages, tracing every commit to each
167+
> language's `ExternalFlowExtensions.qll` in [github/codeql](https://github.com/github/codeql) from
168+
> the predicates' original introduction (late 2022) to today, found exactly **one** genuine
169+
> breaking change, ever: `neutralModel` gained a `kind` column (5 → 6 positional values) in both
170+
> Java and C#, shipped in `codeql/java-all`/`codeql/csharp-all` **0.6.2** (CodeQL CLI **v2.13.3**,
171+
> May 2023) - documented in each language's own `CHANGELOG.md`. Go and Python have never had a
172+
> breaking change to any of these predicates. Critically, even that one historical break is not a
173+
> silent-drop scenario: an old 5-column `neutralModel` row loaded against the newer 6-column schema
174+
> fails with an ordinary QL compile error (wrong arity) - loud, and caught immediately by this
175+
> repo's own CI - exactly the kind of failure `dependencies:` constraints are designed to guard
176+
> against, and exactly why an `extensionTargets` floor/pin isn't needed to protect against it either.
177+
> **No evidence exists of a floor ever having been required historically; a genuine future breaking
178+
> change would fail this repo's own CI loudly, which is the correct and sufficient signal** - only
179+
> raise an `extensionTargets` floor by hand if that ever actually happens (upstream `github/codeql`
180+
> CHANGELOG entries for the relevant `ExternalFlowExtensions.qll`/`ModelsAsData.qll` predicates are
181+
> the place to check), never preemptively.
182+
121183

122184
**This section no longer hand-maintains a version table** - it used to, but that table went stale
123185
across multiple CLI bumps in a row (nobody remembered to update it, and there was no CI check
@@ -313,6 +375,10 @@ coding agent) in the loop for the hard part — fixing whatever the new CLI brea
313375
> If you run `codeql pack install`/`upgrade` against one of these directories locally while
314376
> developing (e.g. to sanity-check a new data extension), delete the resulting
315377
> `codeql-pack.lock.yml` before committing.
378+
>
379+
> This is a separate concern from how `extensionTargets`' *version value* itself is chosen and
380+
> maintained — see the ["Why `extensionTargets` is always `'*'`, never pinned or
381+
> floored"](#extensiontargets-floor) warning box above.
316382
317383
> [!WARNING]
318384
> The `.codeqlversion` bump and the pack version bumps don't have to land in the same PR, but
@@ -463,3 +529,4 @@ Please do get in touch (privacy@github.com) if you have any questions about this
463529
[pr-155]: https://github.com/GitHubSecurityLab/CodeQL-Community-Packs/pull/155
464530
[pr-158]: https://github.com/GitHubSecurityLab/CodeQL-Community-Packs/pull/158
465531
[pr-159]: https://github.com/GitHubSecurityLab/CodeQL-Community-Packs/pull/159
532+
[issue-206]: https://github.com/GitHubSecurityLab/CodeQL-Community-Packs/issues/206

‎csharp/ext-library-sources/qlpack.yml‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
library: true
22
name: githubsecuritylab/codeql-csharp-library-sources
33
version: 0.7.3
4+
# Keep this '*' (unconstrained) - never pin/floor it to a specific
5+
# codeql/csharp-all version. Unlike `dependencies:`, an unsatisfied
6+
# extensionTargets constraint doesn't fail loudly: it silently drops this
7+
# whole extension pack (zero models applied) with only a low-visibility
8+
# "is unused" warning, no CI signal for downstream consumers. See
9+
# GitHubSecurityLab/CodeQL-Community-Packs#206 and CONTRIBUTING.md.
410
extensionTargets:
5-
codeql/csharp-all: '7.1.1'
11+
codeql/csharp-all: '*'
612
dataExtensions:
713
- 'manual/*.yml'
814
- 'manual/**/*.yml'

‎csharp/ext/qlpack.yml‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
library: true
22
name: githubsecuritylab/codeql-csharp-extensions
33
version: 0.7.3
4+
# Keep this '*' (unconstrained) - never pin/floor it to a specific
5+
# codeql/csharp-all version. Unlike `dependencies:`, an unsatisfied
6+
# extensionTargets constraint doesn't fail loudly: it silently drops this
7+
# whole extension pack (zero models applied) with only a low-visibility
8+
# "is unused" warning, no CI signal for downstream consumers. See
9+
# GitHubSecurityLab/CodeQL-Community-Packs#206 and CONTRIBUTING.md.
410
extensionTargets:
5-
codeql/csharp-all: '7.1.1'
11+
codeql/csharp-all: '*'
612
dataExtensions:
713
- 'manual/*.yml'
814
- 'manual/**/*.yml'

‎go/ext/qlpack.yml‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
library: true
22
name: githubsecuritylab/codeql-go-extensions
33
version: 0.7.3
4+
# Keep this '*' (unconstrained) - never pin/floor it to a specific
5+
# codeql/go-all version. Unlike `dependencies:`, an unsatisfied
6+
# extensionTargets constraint doesn't fail loudly: it silently drops this
7+
# whole extension pack (zero models applied) with only a low-visibility
8+
# "is unused" warning, no CI signal for downstream consumers. See
9+
# GitHubSecurityLab/CodeQL-Community-Packs#206 and CONTRIBUTING.md.
410
extensionTargets:
5-
codeql/go-all: '7.2.2'
11+
codeql/go-all: '*'
612
dataExtensions:
713
- 'manual/*.yml'
814
- 'manual/**/*.yml'

0 commit comments

Comments
 (0)