Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
4f49f0e
ci: migrate link checks to flint
zeitlinger Apr 21, 2026
01f0350
ci: remove duplicate markdown lint wiring
zeitlinger Apr 21, 2026
9659bda
ci: rely on default lychee config location
zeitlinger Apr 21, 2026
8300c01
ci: drop dedicated link lint task
zeitlinger Apr 21, 2026
f874e8a
chore: exclude generated changelog
zeitlinger Apr 21, 2026
d2f950d
chore: update flint to 0.20.4
zeitlinger Apr 23, 2026
5e1ae56
fix: remove legacy markdownlint tool pin
zeitlinger Apr 23, 2026
f4c2f16
fix: add flint-managed linter configs
zeitlinger Apr 23, 2026
afb76d6
fix: finish rust-native formatter cutover
zeitlinger Apr 23, 2026
2df9d46
chore: keep flint config under config dir
zeitlinger Apr 23, 2026
fc35d8d
ci: preserve markdown and link linting in flint rollout
zeitlinger Apr 26, 2026
4b63151
chore: update flint to v0.21.0
zeitlinger Apr 27, 2026
5c5dee7
fix: satisfy rumdl in CI failure prompt
zeitlinger Apr 27, 2026
29c1d5d
chore: update flint to v0.21.0
zeitlinger Apr 27, 2026
7ab68de
ci: align rumdl with generated license report
zeitlinger Apr 27, 2026
c699187
chore: format license report for rumdl
zeitlinger Apr 27, 2026
9b0cb0d
chore: clarify yamllint ownership
zeitlinger Apr 27, 2026
33f1405
ci: keep lint in existing workflow
zeitlinger Apr 27, 2026
31af3cc
chore: rely on flint renovate preset
zeitlinger Apr 27, 2026
88ce729
chore: drop legacy mise file-task settings
zeitlinger Apr 27, 2026
cc77f99
chore: keep first-round otel tools minimal
zeitlinger Apr 27, 2026
a48ec9f
chore: keep first-round otel config minimal
zeitlinger Apr 27, 2026
50ec0f6
ci: pass current flint GitHub env vars
zeitlinger Apr 27, 2026
6441a7f
chore: clarify narrowed lint tasks
zeitlinger Apr 27, 2026
cf4cbb9
chore: keep generic lint task descriptions
zeitlinger Apr 27, 2026
d76d0a7
chore: rely on flint task defaults
zeitlinger Apr 27, 2026
9edeed0
chore: restore rumdl config comments
zeitlinger Apr 27, 2026
7161eff
chore: preserve source rumdl comments
zeitlinger Apr 27, 2026
3468dab
chore: preserve source config header comments
zeitlinger Apr 27, 2026
5554f63
chore: restore markdown lint excludes
zeitlinger Apr 27, 2026
cca6cbc
chore: point rumdl config docs to rumdl
zeitlinger Apr 27, 2026
e4e8703
ci: keep muzzle required on release PRs
zeitlinger Apr 28, 2026
d42717b
chore: drop unused biome config
zeitlinger Apr 28, 2026
96de05d
chore: drop unrelated prompt drift
zeitlinger Apr 28, 2026
2d0cb1a
chore: refresh release-branch lint comments
zeitlinger Apr 28, 2026
d6e94c8
chore: restore original release-branch lint comment
zeitlinger Apr 28, 2026
1a10939
Merge branch 'main' into flint-v2-lychee
zeitlinger Apr 28, 2026
99f547a
chore: fix remaining flint lint issues
zeitlinger Apr 28, 2026
2759ae2
chore: restore original licenses report
zeitlinger Apr 28, 2026
d88cabf
fix: drop unrelated editorconfig changes
zeitlinger Apr 29, 2026
8fcd071
Merge branch 'main' into flint-v2-lychee
zeitlinger Apr 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -761,3 +761,7 @@ ij_properties_spaces_around_key_value_delimiter = false
[{*.yaml, *.yml}]
ij_yaml_keep_indents_on_empty_lines = false
ij_yaml_keep_line_breaks = true

[*.md]
# Markdown line length is handled by rumdl
max_line_length = off
42 changes: 21 additions & 21 deletions .github/agents/code-review-and-fix.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -178,27 +178,27 @@ Auto-fix boundaries:
but absent from the current module's check (or vice versa) reveal a version boundary —
the class was likely added or removed between versions.
Then determine the comment form for each class:
**Positive floor class** (proves "at least version X"): look up when the class was
**introduced** → comment `// added in X.Y`.
**Positive ceiling class** (proves "not yet version Y"): look up when the class was
**removed** → comment `// removed in Y.Z` (meaning: its presence here ensures we
don't match version Y.Z+ where a different module takes over).
**Negated exclusion class** in `not(hasClassesNamed(...))`: look up when the class was
**introduced** → comment `// added in Y.Z`, because that first appearance begins the
excluded version range.
**Single positive class that provides both bounds**: include both facts in one comment,
e.g. `// added in X.Y, removed in Y.Z`.
A ceiling class might have been *introduced* much earlier than the module's target version.
Do not use `// added in` for a positive ceiling class — that is misleading. The relevant
fact is when it was **removed**. But for a negated exclusion class, `// added in` is the
correct form because the class's introduction is exactly what starts excluding newer versions.
Validate the version in the comment before adding or requesting it. Do not guess the
version from the module name alone; confirm it with repository or upstream evidence.
Sources: muzzle `versions.set(...)` ranges, sibling module `classLoaderMatcher()` checks,
module directory names, existing code comments, Javadoc/release notes.
Do NOT add a `classLoaderMatcher()` override where one does not already exist —
this method is only for version-boundary detection when muzzle is insufficient,
not for optimization (use `TypeInstrumentation.classLoaderOptimization()` instead)
**Positive floor class** (proves "at least version X"): look up when the class was
**introduced** → comment `// added in X.Y`.
**Positive ceiling class** (proves "not yet version Y"): look up when the class was
**removed** → comment `// removed in Y.Z` (meaning: its presence here ensures we
don't match version Y.Z+ where a different module takes over).
**Negated exclusion class** in `not(hasClassesNamed(...))`: look up when the class was
**introduced** → comment `// added in Y.Z`, because that first appearance begins the
excluded version range.
**Single positive class that provides both bounds**: include both facts in one comment,
e.g. `// added in X.Y, removed in Y.Z`.
A ceiling class might have been *introduced* much earlier than the module's target version.
Do not use `// added in` for a positive ceiling class — that is misleading. The relevant
fact is when it was **removed**. But for a negated exclusion class, `// added in` is the
correct form because the class's introduction is exactly what starts excluding newer versions.
Validate the version in the comment before adding or requesting it. Do not guess the
version from the module name alone; confirm it with repository or upstream evidence.
Sources: muzzle `versions.set(...)` ranges, sibling module `classLoaderMatcher()` checks,
module directory names, existing code comments, Javadoc/release notes.
Do NOT add a `classLoaderMatcher()` override where one does not already exist —
this method is only for version-boundary detection when muzzle is insufficient,
not for optimization (use `TypeInstrumentation.classLoaderOptimization()` instead)
- redundant `isMethod()` in method matchers inside `transform()` when the matcher already
names a specific, non-empty method (e.g., `isMethod().and(named("execute"))` →
`named("execute")`). Do not remove `isMethod()` when the name could be empty —
Expand Down
15 changes: 15 additions & 0 deletions .github/config/.rumdl.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# See https://rumdl.dev/
# and https://rumdl.dev/rules/
[global]
# disable link text should be descriptive check
disable = ["MD059", "line-length", "no-inline-html", "MD041", "MD022", "ul-style", "fenced-code-language"]

[no-duplicate-heading]
siblings-only = true

[no-trailing-punctuation]
# allowing exclamation points and question marks at end of sentences
punctuation = ".,;:"

[ol-prefix]
style = "ordered"
6 changes: 6 additions & 0 deletions .github/config/flint.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[settings]
exclude = ["CHANGELOG.md", "licenses/licenses.md"]
setup_migration_version = 2

[checks.lychee]
check_all_local = true
2 changes: 2 additions & 0 deletions .github/prompts/fix-pr-ci-failures.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ Create `/tmp/ci-plan.md` (outside the repo — no risk of accidental commit):
# CI Failure Analysis Plan

## Failed Jobs Summary

- Job 1: <job-name> (job ID: <id>)
...

Expand All @@ -74,6 +75,7 @@ Create `/tmp/ci-plan.md` (outside the repo — no risk of accidental commit):
- Log files: /tmp/<file1>.log, ...

## Suspected Flaky / Infra Failures (skipped)

- <job-name>: <reason>

## Notes
Expand Down
12 changes: 1 addition & 11 deletions .github/renovate.json5
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
$schema: 'https://docs.renovatebot.com/renovate-schema.json',
extends: [
"github>grafana/flint#v0.21.0",
'config:best-practices',
'helpers:pinGitHubActionDigestsToSemver',
':semanticCommits',
Expand Down Expand Up @@ -385,17 +386,6 @@
},
],
customManagers: [
{
// keep SHA-pinned raw.githubusercontent.com URLs in mise.toml up to date
customType: 'regex',
datasourceTemplate: 'github-tags',
managerFilePatterns: [
'/^mise\\.toml$/',
],
matchStrings: [
'https://raw\\.githubusercontent\\.com/(?<depName>[^/]+/[^/]+)/(?<currentDigest>[a-f0-9]{40})/.*#\\s*(?<currentValue>v\\S+)',
],
},
// commented out to see whether weekly update passes without this block
// {
// customType: 'regex',
Expand Down
11 changes: 4 additions & 7 deletions .github/workflows/build-daily.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,8 @@ jobs:
muzzle:
uses: ./.github/workflows/reusable-muzzle.yml

link-check:
uses: ./.github/workflows/reusable-link-check.yml

markdown-lint-check:
uses: ./.github/workflows/reusable-markdown-lint-check.yml
lint:
uses: ./.github/workflows/reusable-lint-check.yml

publish-snapshots:
environment: protected
Expand Down Expand Up @@ -76,7 +73,7 @@ jobs:
- common
- test-latest-deps
- muzzle
- link-check
- lint
- publish-snapshots
if: always()
uses: ./.github/workflows/reusable-workflow-notification.yml
Expand All @@ -86,6 +83,6 @@ jobs:
needs.common.result == 'success' &&
needs.test-latest-deps.result == 'success' &&
needs.muzzle.result == 'success' &&
needs.link-check.result == 'success' &&
needs.lint.result == 'success' &&
needs.publish-snapshots.result == 'success'
}}
14 changes: 4 additions & 10 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,8 @@ jobs:
if: "!startsWith(github.ref_name, 'release/')"
uses: ./.github/workflows/reusable-muzzle.yml

link-check:
# release branches are excluded to avoid unnecessary maintenance if external links break
# (and also because the README.md javaagent download link has to be updated on release branches
# before the release download has been published)
lint:
# release branches are excluded because the README.md javaagent download link has to be updated
# on release branches before the release download has been published
if: "!startsWith(github.ref_name, 'release/')"
uses: ./.github/workflows/reusable-link-check.yml

markdown-lint-check:
# release branches are excluded
if: "!startsWith(github.ref_name, 'release/')"
uses: ./.github/workflows/reusable-markdown-lint-check.yml
uses: ./.github/workflows/reusable-lint-check.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Reusable - Link check
name: Reusable - Lint check

on:
workflow_call:
Expand All @@ -7,7 +7,7 @@ permissions:
contents: read

jobs:
link-check:
lint-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
Expand All @@ -16,16 +16,18 @@ jobs:

- uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4.0.1

- name: Link check for pull requests
- name: Lint for pull requests
if: github.event_name == 'pull_request'
env:
GITHUB_TOKEN: ${{ github.token }}
GITHUB_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
GITHUB_REPOSITORY: ${{ github.repository }}
GITHUB_BASE_REF: ${{ github.base_ref }}
GITHUB_HEAD_REF: ${{ github.head_ref }}
PR_HEAD_REPO: ${{ github.event.pull_request.head.repo.full_name }}
run: mise run lint:links
run: mise run lint

- name: Link check for pushes and scheduled workflows
- name: Lint for pushes and scheduled workflows
if: github.event_name != 'pull_request'
env:
GITHUB_TOKEN: ${{ github.token }}
run: mise run lint:links --full
run: mise run lint
23 changes: 0 additions & 23 deletions .github/workflows/reusable-markdown-lint-check.yml

This file was deleted.

15 changes: 7 additions & 8 deletions .github/workflows/reusable-pr-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,28 +41,27 @@ jobs:
with:
cache-read-only: true

# this is not a required check to avoid blocking pull requests if external links break
markdown-check:
lint:
# release branches are excluded because the README.md javaagent download link has to be updated
# on release branches before the release download has been published
if: "!startsWith(github.ref_name, 'release/') && !startsWith(github.base_ref, 'release/')"
uses: ./.github/workflows/reusable-link-check.yml

markdown-lint-check:
uses: ./.github/workflows/reusable-markdown-lint-check.yml
uses: ./.github/workflows/reusable-lint-check.yml

required-status-check:
needs:
- common
- test-latest-deps
- muzzle
- markdown-lint-check
- lint
runs-on: ubuntu-latest
if: ${{ always() }}
steps:
- if: |
needs.common.result != 'success' ||
needs.test-latest-deps.result != 'success' ||
needs.muzzle.result != 'success' ||
needs.markdown-lint-check.result != 'success'
(
!startsWith(github.base_ref, 'release/') &&
needs.lint.result != 'success'
)
run: exit 1 # fail
15 changes: 0 additions & 15 deletions .markdownlint.yaml

This file was deleted.

11 changes: 0 additions & 11 deletions .mise/tasks/lint/markdown.sh

This file was deleted.

1 change: 1 addition & 0 deletions docs/contributing/documenting-instrumentation.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ Every javaagent instrumentation module should have a README.md file in the javaa
[Brief description of what the instrumentation does and what versions it applies to]

## Settings

| System property | Type | Default | Description |
|-----------------|------|---------|-------------|
| `property.name` | Type | Default | Description |
Expand Down
2 changes: 1 addition & 1 deletion instrumentation-docs/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ We parse gradle files in order to determine several pieces of metadata:
### Scope

For now, the scope name is the only value that is implemented in our instrumentations. The scope
name is determined by the instrumentation module name: `io.opentelemetry.{instrumentation name}`
name is determined by the instrumentation module name: `io.opentelemetry.{instrumentation name}`

We will implement gatherers for the schemaUrl and scope attributes when instrumentations start
implementing them.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Provides OpenTelemetry instrumentation for [Apache Http Client 5.2](https://hc.a
### Add these dependencies to your project

Replace `OPENTELEMETRY_VERSION` with the [latest
release]( https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-apache-httpclient-5.2).
release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-apache-httpclient-5.2).

For Maven, add to your `pom.xml` dependencies:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ link to tracing information provided by Lambda itself. To do so, add a dependenc
`io.opentelemetry.contrib:opentelemetry-aws-xray-propagator`.

Replace `OPENTELEMETRY_VERSION` with the [latest
release]( https://central.sonatype.com/artifact/io.opentelemetry.contrib/opentelemetry-aws-xray-propagator).
release](https://central.sonatype.com/artifact/io.opentelemetry.contrib/opentelemetry-aws-xray-propagator).

Gradle:

Expand Down
2 changes: 1 addition & 1 deletion instrumentation/c3p0-0.9/library/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Provides OpenTelemetry instrumentation for [C3P0](https://www.mchange.com/projec
### Add these dependencies to your project

Replace `OPENTELEMETRY_VERSION` with the [latest
release]( https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-c3p0-0.9).
release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-c3p0-0.9).

For Maven, add to your `pom.xml` dependencies:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Provides OpenTelemetry instrumentation for [GraphQL Java](https://www.graphql-ja
### Add these dependencies to your project

Replace `OPENTELEMETRY_VERSION` with the [latest
release]( https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-graphql-java-12.0).
release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-graphql-java-12.0).

For Maven, add to your `pom.xml` dependencies:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Provides OpenTelemetry instrumentation for [GraphQL Java](https://www.graphql-ja
### Add these dependencies to your project

Replace `OPENTELEMETRY_VERSION` with the [latest
release]( https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-graphql-java-12.0).
release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-graphql-java-12.0).

For Maven, add to your `pom.xml` dependencies:

Expand Down
2 changes: 1 addition & 1 deletion instrumentation/grpc-1.6/library/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Provides OpenTelemetry instrumentation for [gRPC](https://grpc.io/).

### Add the following dependencies to your project

Replace `OPENTELEMETRY_VERSION` with the [latest release]( https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-grpc-1.6).
Replace `OPENTELEMETRY_VERSION` with the [latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-grpc-1.6).

For Maven, add the following to your `pom.xml` dependencies:

Expand Down
2 changes: 1 addition & 1 deletion instrumentation/hikaricp-3.0/library/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Provides OpenTelemetry instrumentation for [HikariCP](https://github.com/brettwo
### Add these dependencies to your project

Replace `OPENTELEMETRY_VERSION` with the [latest
release]( https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-hikaricp-3.0).
release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-hikaricp-3.0).

For Maven, add to your `pom.xml` dependencies:

Expand Down
2 changes: 1 addition & 1 deletion instrumentation/java-http-client/library/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Provides OpenTelemetry instrumentation for [Java HTTP Client](https://openjdk.or
### Add these dependencies to your project

Replace `OPENTELEMETRY_VERSION` with the [latest
release]( https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-java-http-client).
release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-java-http-client).

For Maven, add to your `pom.xml` dependencies:

Expand Down
2 changes: 1 addition & 1 deletion instrumentation/java-http-server/library/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Provides OpenTelemetry instrumentation for [Java HTTP Server](https://docs.oracl
### Add these dependencies to your project

Replace `OPENTELEMETRY_VERSION` with the [latest
release]( https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-java-http-server).
release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-java-http-server).

For Maven, add to your `pom.xml` dependencies:

Expand Down
Loading
Loading