428 Commits

Author SHA1 Message Date
Stephan Renatus cb54e9c14f runtime: rule labels metadata processing follow-ups (#8613)
 We now parse rego metadata annotations by default.

Rule annotations now support a `labels` field. During policy eval,
labels from all successfully evaluated rules are collected and included
in each decision log entry as a top-level `rule_labels` array. Each
element preserves the label map from one evaluated rule. Exact
duplicates are omitted.

```rego
# METADATA
# labels:
#   severity: low
#   team: platform
allow if input.role == "admin"
```

The resulting decision log entry will contain:

```json
{"rule_labels": [{"severity": "low", "team": "platform"}]}
```

---------

Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
2026-05-08 15:00:26 +00:00
Stephan Renatus 6f113ba009 ci: golangci-lint bump to v2.12.2 (#8623)
https://github.com/golangci/golangci-lint/releases/tag/v2.12.2

Mostly because I couldn't make sense of the failures in
https://github.com/open-policy-agent/opa/pull/8622

---------

Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
2026-05-08 13:15:11 +02:00
Johan Fylling 40024cebd6 ast: not-body marshaling (#8614)
JSON- and pretty format marshaling of `ast.Not`

Signed-off-by: Johan Fylling <johan.dev@fylling.se>
2026-05-07 14:43:08 +02:00
Johan Fylling b6c3ac1860 ast: Enable future.keywords.not in default capabilities (#8609)
Signed-off-by: Johan Fylling <johan.dev@fylling.se>
2026-05-06 14:32:33 +02:00
Stephan Renatus 2cf57ca6d3 introduce rule IDs, include in decision logs and response payloads (#8606)
Rules can now be annotated with a metadata `id` field. When any
metadata `id` annotations are present in the rego (scope: rule), the IDs
of successfully evaluated rules are included in decision log events.
Additionally, the Data API supports a `?id` query parameter to
include evaluated rule IDs directly in the response payload.

```rego
# METADATA
# id: allow-admin
allow if input.role == "admin"
```

Modules containing `id` annotations will have metadata parsing enabled
automatically.

Fixes #2089

Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
2026-05-06 09:38:34 +02:00
Johan Fylling 4c741cb109 not-body PE (#8541)
Fixes: #8394

Adding handling of `ast.Not` nodes (`future.keywords.not` import) to Partial Eval.

Signed-off-by: Johan Fylling <johan.dev@fylling.se>
2026-05-05 19:59:10 +02:00
Stephan Renatus a7b87cd127 cli: enable file_logger plugin
The plugin registration step was missing before, so the code, while in
the tree, was not active and the plugin couldn't be used.

Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
2026-05-05 11:35:43 +02:00
Stephan Renatus dce01172d7 ast+rego+topdown: external rule source support (#8600)
External rule sources let wrapping projects inject rules at evaluation
time instead of compile time. The compiler marks external packages in
the rule tree but doesn't index them. When topdown hits an external
node, it calls Lookup to get rules, compiles them on the fly with a
scoped compiler, grafts the result into the tree, and caches it for the
duration of the evaluation.

Sources can be isolated (default, no access to surrounding policy) or
non-isolated (can reference static rules and other external sources).
The ExternalRuleIndexCloser interface handles cleanup after evaluation.
Precompiled rules can skip compiler stages via SkippedStages to avoid
redundant work.

This includes:
* hooks: add BundlePreActivate hook This one is handy when registering
external sources.

* topdown: catch `ir == nil` rule index result
This wouldn't ordinarily happen: the compiler is checking refs before.
But in our use case, the SP rules may be configured to be able to reach
into the surrounding Rego (non-isolated mode). If that happens, the IR
lookup may indeed end up as `nil, nil`.

Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
2026-05-05 09:48:50 +02:00
Stephan Renatus 543fa38e6c topdown: pin down RNG seed for benchmark
These had been bimodal, and thus not a good benchmark at all: running it
two times might give you two different inputs that mess up all
comparability.

Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
2026-05-04 14:51:34 +02:00
Johan Fylling f91d2076df plugins: Ensure plugin status functions don't hang after manager is stopped (#8590)
As noticed in opa-envoy-plugin when bumping its OPA dep to v1.16.0.

Signed-off-by: Johan Fylling <johan.dev@fylling.se>
2026-04-30 17:16:23 -04:00
Johan Fylling 61d68db6c4 Prepare v1.17.0 development
Signed-off-by: Johan Fylling <johan.dev@fylling.se>
2026-04-30 20:44:45 +02:00
Johan Fylling f3adf61f72 Release v1.16.0 (#8581)
Signed-off-by: Johan Fylling <johan.dev@fylling.se>
2026-04-30 16:29:23 +02:00
Sebastian Spaink c5a446f09d Add regression test for comparing objects with array keys
Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>
2026-04-30 15:24:12 +02:00
dependabot[bot] 882d5a7117 build(deps): bump the dependencies group across 2 directories with 9 updates (#8575)
Bumps the dependencies group with 4 updates in the / directory:
[github.com/containerd/containerd/v2](https://github.com/containerd/containerd),
[github.com/huandu/go-sqlbuilder](https://github.com/huandu/go-sqlbuilder),
[github.com/lestrrat-go/jwx/v3](https://github.com/lestrrat-go/jwx) and
[golang.org/x/net](https://github.com/golang/net).
Bumps the dependencies group with 4 updates in the /e2e directory:
[github.com/docker/go-connections](https://github.com/docker/go-connections),
[github.com/lib/pq](https://github.com/lib/pq),
[github.com/testcontainers/testcontainers-go](https://github.com/testcontainers/testcontainers-go)
and [modernc.org/sqlite](https://gitlab.com/cznic/sqlite).

Updates `github.com/containerd/containerd/v2` from 2.2.2 to 2.2.3
Updates `github.com/huandu/go-sqlbuilder` from 1.40.0 to 1.40.2
Updates `github.com/lestrrat-go/jwx/v3` from 3.0.13 to 3.1.0
Updates `golang.org/x/net` from 0.52.0 to 0.53.0
Updates `golang.org/x/text` from 0.35.0 to 0.36.0
Updates `github.com/docker/go-connections` from 0.6.0 to 0.7.0
Updates `github.com/lib/pq` from 1.12.0 to 1.12.3
Updates `github.com/testcontainers/testcontainers-go` from 0.41.0 to 0.42.0
Updates `modernc.org/sqlite` from 1.47.0 to 1.49.1

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Sebastian Spaink <sebastianspaink@gmail.com>
2026-04-30 10:49:52 +02:00
alex60217101990 3d602ca6a3 perf: Add CopyNonGround() methods for Array, Set, and Object (#8323)
Based on approved proposal:
https://github.com/orgs/open-policy-agent/discussions/741

Micro-optimization with measurable performance gains. Minimal code
changes, measurable value in production workloads.

### Problem

`Copy()` deep-copies all elements including immutable ground terms,
causing excessive allocations during policy evaluation.

### Solution

Add `CopyNonGround()` methods that shallow-copy ground terms
(constants), deep-copy only non-ground terms (variables).

### Benchmark Results

#### Fully ground terms (typical case):

Before (Copy):
- Array: 373 ns/op, 280 B/op, 8 allocs/op
- Set: 572 ns/op, 424 B/op, 9 allocs/op
- Object: 1087 ns/op, 664 B/op, 19 allocs/op

After (CopyNonGround):
- Array: 2.2 ns/op, 0 B/op, 0 allocs/op
- Set: 2.9 ns/op, 0 B/op, 0 allocs/op
- Object: 2.6 ns/op, 0 B/op, 0 allocs/op

#### Mixed ground/non-ground terms:

Before (Copy):
- Array: 391 ns/op, 280 B/op, 8 allocs/op
- Set: 822 ns/op, 424 B/op, 9 allocs/op
- Object: 1168 ns/op, 664 B/op, 19 allocs/op

After (CopyNonGround):
- Array: 187 ns/op, 160 B/op, 4 allocs/op
- Set: 473 ns/op, 352 B/op, 6 allocs/op
- Object: 789 ns/op, 496 B/op, 12 allocs/op

---------

Signed-off-by: alex60217101990 <alex6021710@gmail.com>
2026-04-29 11:44:34 -05:00
Charlie Egan 343ddf583f builtins: Add uri.parse and uri.is_valid built in functions (#8578)
Examples of things this is useful for:
- Implementing policy around AI coding tool calls (permitted domains
etc)
- Validating SPIFFE IDs

Fixes https://github.com/open-policy-agent/opa/issues/8263

---------

Signed-off-by: Charlie Egan <charlie_egan@apple.com>
2026-04-29 13:08:15 +00:00
Sebastian Spaink 6b558d3046 Handle nil in comprehension
Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>
2026-04-29 14:54:40 +02:00
Sebastian Spaink 947bcf92be Fix out-of-order plugin status notifications (#8563)
resolve: https://github.com/open-policy-agent/opa/issues/8009

Replace the mutex protected status maps with a single goroutine that
owns all plugin status state.

---------

Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>
2026-04-28 14:02:43 -05:00
Stephan Renatus 13e9488921 server+topdown+logs: feed arbitrary extra info from Data API to topdown and back (#8570)
Wrapping projects can now attach custom metadata to Data API requests
and have evaluation produce response metadata.

Introduce two distinct metadata paths:

  - Request (incoming) metadata: parsed from extra top-level keys in the request
body, made available to builtins via `BuiltinContext.RequestMetadata`.
    Logged in the decision log under `Custom["request_metadata"]`.

- Response (outgoing) metadata: a separate map (`BuiltinContext.ResponseMetadata`)
    that builtins can populate during evaluation. Only included in the
    API response and decision log (`Custom["response_metadata"]`)
    if non-empty.

In vanilla OPA, no builtins write response metadata, so responses are
unchanged. The request metadata map is only allocated when the request
carries extra fields; the outgoing map is one empty map per request.

To avoid conflicts with future OPA top-level keys, callers should use a
namespaced key: `{"input": {...}, "com.example.opa/md": {...}}`.

```mermaid
flowchart LR
    req["POST /v1/data\n{input, com.example.opa/md}"]
    parse["readInputPostV1"]
    eval["topdown eval"]
    resp["API response"]
    dl["decision log"]

    req --> parse
    parse -- "reqMetadata" --> eval
    parse -- "reqMetadata" --> dl
    eval -- "respMetadata\n(if non-empty)" --> resp
    eval -- "respMetadata\n(if non-empty)" --> dl
    eval -. "BuiltinContext\n.RequestMetadata\n.ResponseMetadata" .-> eval
```

---------

Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
2026-04-28 12:58:18 +00:00
Stephan Renatus 0eae12540d storage/inmem: avoid allocations from Read() in MakeDir() (#8561)
* storage/inmem: add benchmark

Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>

* storage/inmem: avoid allocations in MakeDir

Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>

* storage/inmem: backfill some tests

Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>

---------

Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
2026-04-24 16:50:04 +00:00
Johan Fylling 9b330379f7 ast,format,planner: Add not block syntax (#8562)
Expanding the Rego syntax to support not-bodies (not blocks?): `not {...}`

For a not block to successfully evaluate, its body must not successfully evaluate. If evaluation causes iteration, all evaluation paths must fail.

Fixes: #8402

Signed-off-by: Johan Fylling <johan.dev@fylling.se>
2026-04-24 16:35:39 +00:00
Johan Fylling 7ecc1fd121 format: Preserve location of trailing comments inside every body (#8559)
Use location text of outer expression to calculate closing location of `every` body (the term itself doesn't capture the full text).

Fixes: #8558

Signed-off-by: Johan Fylling <johan.dev@fylling.se>
2026-04-23 18:00:19 +00:00
Isaiah Vita 271c6cd99a Limit exponent size in parse_bytes/parse_units to prevent timeout bypass (#8524)
Timeouts passed via context are not honored because builtins that
parse exponents dont include context and will run with unrestricted
size on the exponents. Added an exponent limit checker based
on rough benchmakrking data of whats a reasonabile limit.

Fixes: #8326

Signed-off-by: Isaiah Vita <vita.isaiah@gmail.com>
2026-04-23 13:41:16 +00:00
Anders Eknert 5668e0c707 fmt: don't indent until first with on new line (#8555)
This worked before but got lost in my `with` indentation change.
Now it works again!

Signed-off-by: Anders Eknert <anders.eknert@apple.com>
2026-04-23 11:16:54 +00:00
Sebastian Spaink f60893275c Fix dropping comments after handling unexpectedCommentError (#8553)
Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>
2026-04-23 09:47:05 +00:00
Anders Eknert 8f7a0d8495 Add method to match tests by ref prefixes (#8550)
Labeled as experimental as we'll want some time to adjust this
based on real editor integrations. Initial testing looks very
good though, and dramatically reduces the time taken to test
e.g. a package compared to the whole workspace and filtering
the result afterwards.

Fixes #6696

Signed-off-by: Anders Eknert <anders.eknert@apple.com>
2026-04-22 16:25:26 +00:00
Manuela Züger 8981bb7d45 ast: Fix parsing of unary - in front of a ref (#8551)
* add a test to reproduce the issue and demonstrate that it is resolved
* adapt `parseTerm` to support parsing a `-` in front of a ref correctly

Fixes: #5014

Signed-off-by: Manuela Züger <manuela.zueger@ipt.ch>
2026-04-22 16:22:29 +00:00
Sebastian Spaink 56ad17a5c8 Fix logBuffer eviction loop only dropping one element (#8543)
Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>
2026-04-22 14:25:02 +00:00
Sebastian Spaink 4209e6a133 Support recursive JSON Schemas (#8542)
* Support recursive JSON Schemas

Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>

* refactor tests to table-driven

Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>

---------

Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>
2026-04-22 13:32:30 +00:00
Stephan Renatus a61146254a server: only avoid chmod on linux (macos/win don't have abstract sockets) (#8549)
Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
2026-04-22 10:38:47 +00:00
Stephan Renatus bc8e23a174 logging: keep forwarding from BufferedLogger after Flush() (#8544)
The BufferedLogger introduced for logger plugins is created at startup
and passed to the `*plugins.Manager`. Plugins (bundle, discovery,
status, logs) cache `manager.Logger()` in a field at construction time.
After `Manager.Start()`, `ResolveBufferedLogger` flushes the buffer and
swaps the `Manager'`s logger to a `StandardLogger` — but the plugins
still hold the old `BufferedLogger`. Since bundle loading is async, the
"Bundle loaded and activated successfully" message (and similar) gets
written to the already-flushed buffer where nobody reads it.

Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
2026-04-22 07:42:51 +00:00
bakayolo 6e1e935a45 server: Skip chmod for abstract Unix domain sockets (#8536)
Abstract Unix sockets (paths prefixed with @) exist only in the
kernel socket namespace and have no filesystem representation.
Calling os.Chmod on them fails with "no such file or directory".

The --unix-socket-perm flag (added in v0.53.0 via PR #5888) defaults
to "755" and always triggers a chmod on the socket path after the
listener is created. This makes it impossible to use abstract Unix
sockets with OPA >= v0.53.0.

The fix adds a guard to skip chmod when the socket path starts with
"@", matching the existing guard that already skips os.Remove for
abstract sockets a few lines above.





Amp-Thread-ID: https://ampcode.com/threads/T-019d9906-2625-774e-8f1c-a0c288630be4

Signed-off-by: Ben Abderrazak <babderrazak@squareup.com>
Signed-off-by: Ben Apprederisse <bena@squareup.com>
Co-authored-by: Amp <amp@ampcode.com>
2026-04-20 19:36:49 +00:00
Sebastian Spaink 22f8e8d0cd fmt: restore indention level when handling unexpected comments (#8534)
* fmt: restore indention level when handling unexpected comments

Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>

* add another test

Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>

* support "rego-check-pr" in merge group

Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>

---------

Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>
2026-04-20 14:57:40 +00:00
Sebastian Spaink edab2a5f3c Update opa test to stream test case results (#8517)
Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>
2026-04-16 08:25:24 -05:00
Sebastian Spaink e123cdb007 Fix type checker to recognize numeric index in generated map (#8518)
Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>
2026-04-16 07:16:16 -05:00
Johan Fylling 4e104b0c94 server: Drop HTML index page (#8478)
Fixes: #8477

Signed-off-by: Johan Fylling <johan.dev@fylling.se>
2026-04-16 12:59:28 +02:00
Sebastian Spaink a7bd374b00 Prevent fmt from formatting single attribute objects with comments (#8519)
Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>
2026-04-16 10:09:50 +02:00
Sebastian Spaink 27f34789f5 Fix type checker match error for objects with set keys
Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>
2026-04-15 08:40:27 +02:00
davidmarne-wf 55a9eb6ffa fix: reachable_paths does not return all reachable paths (#8510)
* topdown: add failing tests for graph.reachable_paths with shared ancestors

Adds a regression test (shared_ancestor) reproducing the bug reported in
#5871: given a graph where node 4 has edges to both 3 and 2, and 3 also
has an edge to 2, graph.reachable_paths from 5 drops the path [5,4,2,1].

Also corrects the expected result for the existing cycle_1022_3 test, which
was asserting the buggy output ([one,five,six] truncated) rather than the
correct complete path [one,five,six,seven,eight,three].

Signed-off-by: David Marne <david.marne@workiva.com>

* topdown: fix graph.reachable_paths dropping paths with shared ancestors

graph.reachable_paths had two bugs that caused paths to be silently dropped
when a node is reachable via multiple routes (diamond-shaped graphs).

Bug 1: the `reached` set was mutated and shared across sibling recursive
calls. After branch A finished traversal and added nodes to `reached`,
branch B would see those nodes as already visited and terminate early,
emitting a truncated path instead of continuing.

Fix: copy `reached` once per pathBuilder invocation and pass the copy to
all recursive calls. Each branch now has its own ancestor-only visited set.

Bug 2: ast.NewArray stores the slice it receives directly (elems: a)
without copying. When sibling calls appended to a shared backing array,
the in-place write by one sibling corrupted the already-committed path
term of a previous sibling.

Fix: pass append([]*ast.Term(nil), path...) to each recursive call,
giving each branch its own independent backing array.

Signed-off-by: David Marne <david.marne@workiva.com>

---------

Signed-off-by: David Marne <david.marne@workiva.com>
2026-04-14 10:45:43 -05:00
Stephan Renatus 42baad2bc4 ast: fix parenthesis in String() of {obj,arr,set} comprehensions
This should fix the issue underlying

https://github.com/open-policy-agent/opa-control-plane/issues/321

Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
2026-04-14 09:29:39 +02:00
Sebastian Spaink 1de861f2d6 Add support for days, weeks and years in parse_duration_ns (#8463)
Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>
2026-04-13 20:20:51 +00:00
Stephan Renatus 04ee2c86ad ast: catch functions in dynamic extent of ref head rule
These currently fail, as laid out in #8461.

With this change, we'll return a controlled error, and don't let the
user run into an NPE or a cryptic error.

Fixes #8461.

Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
2026-04-13 09:28:45 +02:00
Anders Eknert 4b47732f77 fmt: Allow indenting all withs in expression (#8508)
```rego
test_something if {
    something
        with input.foo as 1
        with input.bar as 2
}
```
Would previously be formatted as:
```rego
test_something if {
    something with input.foo as 1
        with input.bar as 2
}
```
Now the formatter allows also the first `with` to be indented
as the rest if the first `with` is found below the line where
the expression begins.

Existing Rego files that have been formatted before should remain
the same when reformatted, and none of the existing formatter tests
have required changes. Only users who actively place the first `with`
in a group on a line below will now see that the formatter respects
their wish, and will indent it the same way as the following `with`s.

Signed-off-by: Anders Eknert <anders.eknert@apple.com>
2026-04-09 18:05:37 +00:00
Dominik Schulz e5427d5adb resolver/wasm: Add NewWithContext to allow passing context (#8499)
Previously, initializing a new WASM resolver always used a background
context. This prevented callers from passing down an existing context
for timeouts, cancellation, or tracing.

This change introduces `NewWithContext` in `v1/resolver/wasm` which accepts
a context and propagates it to `Entrypoints()`. The existing `New`
function has been updated to wrap `NewWithContext` using a background
context to preserve backwards compatibility. `LoadWasmResolversFromStore`
has been updated to pass the provided context appropriately.

Signed-off-by: Dominik Schulz <dschulz@google.com>
2026-04-09 19:10:19 +02:00
Sebastian Spaink 261a4f6c04 type checker: identify compatible type from reference (#8485)
* type checker: identify compatible type from reference
* Update unifiesObjectsStatic to allow static keys with dynamic properties to be optional, similar to unify1Object

Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>
2026-04-08 19:55:49 +00:00
Stephan Renatus dc3313b189 plugins/rest: carry over all of *tls.Config (#8476)
- The tokenTLSConfig is cloned from DefaultTLSConfig(c) (which
includes RootCAs) and then InsecureSkipVerify is set explicitly from
c.AllowInsecureTLS, since DefaultTLSConfig only sets it when the service
URL is https, but the token URL is always https regardless.

- New test configures a service with tls.ca_cert pointing to the token
server's CA cert, without allow_insecure_tls. This directly reproduces
the bug report — before the fix, this would fail with x509: certificate
signed by unknown authority. Also removes some duplication we had
before.

Fixes #8473.

Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
2026-04-08 15:46:50 +00:00
Michael Munch 12b7290697 distributedtracing: export Prometheus metrics via OTLP (#8450)
* distributedtracing: export Prometheus metrics via OTLP

Add support for pushing OPA's existing Prometheus metrics to an
OpenTelemetry collector via OTLP, eliminating the need for a dedicated
scraper sidecar. Uses the OTel Prometheus bridge to read from OPA's
prometheus.Registry and export through an OTLP metric exporter (gRPC
or HTTP), reusing the same address and TLS configuration as traces.

New config fields: distributed_tracing.metrics (bool, default false)
and distributed_tracing.metrics_export_interval_ms (int, default 60000).

Fixes #7591

Signed-off-by: Michael Munch <mm.munk@gmail.com>

* metricsexport: decouple metrics export into top-level config section

Extract metrics export from distributed_tracing into its own
metrics_export config section with independent type (otlp/grpc,
otlp/http), address, and TLS settings. This allows exporting
Prometheus metrics via OTLP without enabling tracing, and to a
different endpoint than traces.

- Extract shared TLS helpers into internal/tlsutil
- Add MetricsExport field to top-level Config
- Create internal/metricsexport package with Init, config parsing
- Remove metrics fields from distributedtracing
- Update runtime to call metricsexport.Init separately
- Move e2e tests to v1/test/e2e/metricsexport
- Add Metrics Export section to configuration docs

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Michael Munch <mm.munk@gmail.com>

* ci: retrigger checks

Signed-off-by: Michael Munch <mm.munk@gmail.com>

* go.mod: upgrade dependencies downgraded during rebase

Modules like containerd, go-sqlbuilder, OpenTelemetry, and golang.org/x/*
were at older versions than main after a rebase. Upgrade them to match or
exceed main.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Michael Munch <mm.munk@gmail.com>

* Update internal/distributedtracing/distributedtracing_test.go

Signed-off-by: Michael Munch <mm.munk@gmail.com>

---------

Signed-off-by: Michael Munch <mm.munk@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 14:09:51 +00:00
Sebastian Spaink 918b8cc969 fmt: add new line between METADATA blocks (#8483)
Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>
2026-04-03 06:53:36 -05:00
Sebastian Spaink 7d266cb687 Allow Back-to-back metadata blocks (#8482)
Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>
2026-04-02 20:14:02 +00:00
Johan Fylling 670d2e2556 ast, topdown: Add not AST node type (#8427)
Disabled by default. To enable, `not` future keyword must be present in capabilities and imported into Rego module.

Implements: #8391

Signed-off-by: Johan Fylling <johan.dev@fylling.se>
2026-03-30 18:12:57 +02:00