For which CNCF project are you requesting exceptions?
Prometheus
Are you an official maintainer of this project?
Yes
List of components requiring an exception
Distribution and integration model
Please explain
lru-cache is a direct dependency of the @prometheus-io/codemirror-promql package,
which provides PromQL autocompletion in the Prometheus web UI. The web UI is
compiled and the resulting JavaScript bundle (including lru-cache) is embedded
into the Prometheus server binary via Go's embed, so the library is distributed
to users as part of the released artifacts.
The library was originally ISC-licensed when first introduced (Prometheus 2.30,
Aug 2021, via #9188). Upstream relicensed it to BlueOak-1.0.0 in v11.2.3, and the
BlueOak-licensed version first shipped in Prometheus v3.10.0 (lru-cache 11.2.5).
Modification status
Please explain
Prometheus uses lru-cache exactly as published on the npm registry. The library
is pulled in as a normal npm dependency of the @prometheus-io/codemirror-promql
module and its source is not patched, forked, or altered in any way.
Structural separation
Please explain
lru-cache is a standalone third-party npm package. It is declared as a dependency
in web/ui/module/codemirror-promql/package.json and resolved into node_modules at
build time; it is not vendored into or copied alongside Prometheus source files.
Its code retains its own module boundary and is only bundled (as a discrete module)
into the compiled UI assets during the build.
Communication mechanism
Please explain
lru-cache is bundled by the UI build (Vite/esbuild): its source is inlined into the
compiled JavaScript bundle, which is then embedded into the Prometheus server binary
via Go's embed. The library is therefore combined with Prometheus code into a single
distributed artifact at build time rather than loaded as a separate module at runtime.
Data exchange
Please explain
As an in-process library, the Prometheus UI code calls lru-cache's API directly and
passes in-memory JavaScript objects (cache keys and cached values) by reference. This
is normal in-language library usage rather than serialized arms-length data exchange.
Please explain
lru-cache relicensed upstream from ISC to BlueOak-1.0.0 in v11.2.3. The BlueOak-licensed
version first shipped in Prometheus v3.10.0 (released 2026-02-24, lru-cache 11.2.5);
current main pins 11.5.1. The library has been a Prometheus UI dependency (under ISC)
since v2.30 (Aug 2021, #9188). BlueOak-1.0.0 is an OSI-approved permissive license.
For which CNCF project are you requesting exceptions?
Prometheus
Are you an official maintainer of this project?
Yes
List of components requiring an exception
codemirror-promqlmodule to cache PromQL autocomplete metadata (metric names, label names/values) in the web UI query editor, so the UI does not re-fetch metadata on every keystroke.Distribution and integration model
Please explain
lru-cache is a direct dependency of the @prometheus-io/codemirror-promql package,
which provides PromQL autocompletion in the Prometheus web UI. The web UI is
compiled and the resulting JavaScript bundle (including lru-cache) is embedded
into the Prometheus server binary via Go's embed, so the library is distributed
to users as part of the released artifacts.
The library was originally ISC-licensed when first introduced (Prometheus 2.30,
Aug 2021, via #9188). Upstream relicensed it to BlueOak-1.0.0 in v11.2.3, and the
BlueOak-licensed version first shipped in Prometheus v3.10.0 (lru-cache 11.2.5).
Modification status
Please explain
Prometheus uses lru-cache exactly as published on the npm registry. The library
is pulled in as a normal npm dependency of the @prometheus-io/codemirror-promql
module and its source is not patched, forked, or altered in any way.
Structural separation
Please explain
lru-cache is a standalone third-party npm package. It is declared as a dependency
in web/ui/module/codemirror-promql/package.json and resolved into node_modules at
build time; it is not vendored into or copied alongside Prometheus source files.
Its code retains its own module boundary and is only bundled (as a discrete module)
into the compiled UI assets during the build.
Communication mechanism
Please explain
lru-cache is bundled by the UI build (Vite/esbuild): its source is inlined into the
compiled JavaScript bundle, which is then embedded into the Prometheus server binary
via Go's embed. The library is therefore combined with Prometheus code into a single
distributed artifact at build time rather than loaded as a separate module at runtime.
Data exchange
Please explain
As an in-process library, the Prometheus UI code calls lru-cache's API directly and
passes in-memory JavaScript objects (cache keys and cached values) by reference. This
is normal in-language library usage rather than serialized arms-length data exchange.
Please explain
lru-cache relicensed upstream from ISC to BlueOak-1.0.0 in v11.2.3. The BlueOak-licensed
version first shipped in Prometheus v3.10.0 (released 2026-02-24, lru-cache 11.2.5);
current main pins 11.5.1. The library has been a Prometheus UI dependency (under ISC)
since v2.30 (Aug 2021, #9188). BlueOak-1.0.0 is an OSI-approved permissive license.