公开记录
软件健康报告模式 0.29.0 · 指标 2.3.1 · 2026-08-02 22:15 UTC

ysh-bot / jaeger

CNCF Jaeger, a Distributed Tracing Platform

GoApache-2.0★ 0 星标⑂ 0 复刻始于 2026年7月复刻在 GitHub 上查看 ↗
类型命令行工具如何判定

ysh-bot/jaeger 的健康指数为 100 分中的 53 分,处于「中等」区间。 其得分最高的类别是AI Readiness(92/100),最低的是Community & Adoption(12/100)。 最近一次更新在 2 天前。 近期的大部分工作由 3 位贡献者完成。

53
总分 / 100
中等

软件健康指数

指标归入加权类别,统一采用 1–100 量表。总体分先取类别加权平均,再依据公开记录的分布进行校准,使各等级具有百分位含义;当公开证据触发高风险司法辖区政策时,评级会按政策调整,并设置 34(存在风险)的上限。

53
卓越93-100公开记录中的最高层级(约前 5%);基本满足所有检验标准
优秀80-92各方面均表现强劲;仅有少量不足
良好65-79健康;不足之处有限且可控
中等50-64可接受,但存在明显不足;建议进行审查
薄弱35-49多个领域存在实质性薄弱环节
存在风险20-34存在重大薄弱环节;采用时应保持审慎
危急1-19问题严重(项目被弃置、仅有单一维护者、缺乏基本工程规范)
活力社区与采用可持续性与治理工程质量安全AI 就绪度

评分画像

每条轴代表一个类别。形状比平均值更重要——健康的对象会填满整个图形,而“一峰一谷”式画像意味着某一维度的优势正掩盖另一维度的风险。

加权总体分 52 经校准后在公布的指数量表上为 53(记录校准 2026-08-02)。

所有权

0 关注者4 个公开仓库始于 2026年2月

该仓库由个人账户拥有。相较于组织支持的项目,单一所有者项目的延续性风险更高。

软件包生态系统

注册表软件包版本月下载量版本数最近发布
Gogithub.com/jaegertracing/jaeger指向其他仓库——不计分v1.76.0-99242 天前

按类别列示的指标

活力

项目是否仍有生命——是否仍在编写代码,是否仍在发布版本?

88优秀 · 占总体的 21%
评分方式
36/36推送新近度 — 最近一次推送于 2 天前
33.9/36提交节奏 — 52 周中有 49 周有提交
18/18提交量 — 最近一年 776 次提交
0/10OpenSSF Scorecard:Maintained — project was created within the last 90 days. Please review its contents carefully
所用输入
commits_last_year776
human_commit_share1
days_since_last_push2
active_weeks_last_year49

发布纪律

88优秀
评分方式
16.2/27有发布版本 — 99 个版本标签(无 GitHub 发布版本)
36/36发布时效 — 最近一次发布版本于 60 天前
27/27发布节奏 — 约每 22.4 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — 无数据
所用输入
releases_count99
latest_release_tagv2.19.0
releases_from_tags
days_since_latest_release60
mean_days_between_releases22.4
已排除计分(无数据或不适用):OpenSSF Scorecard:Signed-Releases。 其余权重已重新归一化。

社区与采用

项目是否拥有用户、下载量与关注度,并具备欢迎贡献者参与的配置?

12危急 · 占总体的 17%
评分方式
0/60星标 — 0 个星标
0/25复刻 — 0 个复刻
0/15关注者 — 0 位关注者
所用输入
forks0
stars0
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

25存在风险
评分方式
0/22.5README
22.5/22.5许可证 — 可识别的许可证(Apache-2.0)
0/18CONTRIBUTING 指南
0/13.5行为准则
0/7.2议题模板
0/6.3PR 模板
所用输入
has_readme
has_license
readme_badges0
has_contributing
has_issue_template
has_code_of_conduct
readme_badge_services
has_pull_request_template

可持续性与治理

项目能否在其成员之外延续——巴士系数、响应能力、由谁支持,以及软件包的维护状况?

35薄弱 · 占总体的 23%
评分方式
36/54巴士系数 — 3 位贡献者贡献了半数提交
16.2/22.5提交分布 — 头号贡献者编写了 28% 的提交
13.5/13.5贡献者广度 — 97 位贡献者
10/10OpenSSF Scorecard:Contributors — project has 33 contributing companies or organizations
所用输入
bus_factor3
contributors_sampled97
top_contributor_share0.281
评分方式
0/42议题解决 — 没有议题或无数据
0/30PR 接受 — 没有已裁定的拉取请求或无数据
0/13Newcomer PR acceptance — 30 天内没有首次贡献者的 PR 得到裁决
0/15OpenSSF Scorecard:Code-Review — Found 0/30 approved changesets -- score normalized to 0
所用输入
merged_prs0
open_issues0
closed_issues0
prs_merged_7d0
prs_decided_7d0
prs_merged_30d0
prs_decided_30d0
issue_closed_ratio
closed_unmerged_prs0
first_time_authors_30d0
first_time_prs_merged_30d0
first_time_prs_decided_30d0
已排除计分(无数据或不适用):议题解决, PR 接受, newcomer_pr_acceptance。 其余权重已重新归一化。
评分方式
10/30所有权背书 — 个人(用户)账户
0/20已验证域名 — 不适用于个人账户
0/25所有者影响力 — ysh-bot 有 0 位关注者
6/25既往记录 — 4 个公开仓库,账户约 0 年
所用输入
followers0
owner_typeUser
is_verified
owner_loginysh-bot
public_repos4
account_age_days166
已排除计分(无数据或不适用):已验证域名。 其余权重已重新归一化。

工程质量

基础的工程与文档实践是否到位?

64中等 · 占总体的 19%

工程实践

80优秀
评分方式
24/24CI 工作流 — 39 个工作流
24/24存在测试
16/16Linter 配置 — .golangci.yml
0/9.6Pre-commit 钩子
0/6.4.editorconfig
0/20OpenSSF Scorecard:CI-Tests — 无数据
所用输入
has_ci
has_tests
has_editorconfig
has_linter_config
has_precommit_config
已排除计分(无数据或不适用):OpenSSF Scorecard:CI-Tests。 其余权重已重新归一化。

文档

40薄弱
评分方式
0/30README
25/25文档目录
15/15文档 / 主页站点 — https://www.jaegertracing.io/
0/10仓库描述
0/10主题标签
0/10Wiki
所用输入
topics
has_wiki
homepagehttps://www.jaegertracing.io/
has_readme
has_docs_dir
has_description

安全

可见的安全与供应链实践是否稳固,且不存在未解决的高风险司法辖区暴露?

49薄弱 · 占总体的 16%

安全态势

49薄弱
评分方式
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — 无数据
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 33 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5许可证 — license file detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
0/5Packaging — 无数据
4.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 9
5/5SAST — SAST tool detected: CodeQL
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — 无数据
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 13 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate4.9
已排除计分(无数据或不适用):ci_tests, packaging, signed_releases。 其余权重已重新归一化。

AI 就绪度

该仓库在多大程度上具备与 AI 编码代理协同开发与维护的条件?权重刻意设小(4%):代理工具链是一项真实的维护信号,但完全不具备的仓库仍可达到 100/100。

92优秀 · 占总体的 4%
评分方式
45/45代理指令 — .github/copilot-instructions.md, AGENTS.md, CLAUDE.md
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 100 次人类提交中有 100 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share1
agent_instruction_files.github/copilot-instructions.md, AGENTS.md, CLAUDE.md
agent_instruction_max_bytes3,968
评分方式
18/18一条命令的引导启动 — Makefile, docker-compose/monitor/Makefile, docker-compose/tail-sampling/Makefile
22/22自动化测试
11/11Lint / 格式化配置 — .golangci.yml
11/11静态类型检查 — Go(静态类型)
10/10可复现环境 — Dockerfile, lockfile
10/10已体现的代理实践 — 最近 100 次提交中有 44 次由代理编写或署名代理
0/8自动化维护 — 未观察到自动依赖更新
9/10OpenSSF Scorecard:Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 9
所用输入
has_nix
has_tests
lockfilesgo.sum, package-lock.json, uv.lock
has_dockerfile
typed_language
bootstrap_filesMakefile, docker-compose/monitor/Makefile, docker-compose/tail-sampling/Makefile
has_devcontainer
has_linter_config
typecheck_configs
agent_commit_share0.44
toolchain_manifestsgo.mod, internal/tools/go.mod, monitoring/jaeger-mixin/generate/go.mod, scripts/build/docker/debug/go.mod
dependency_bot_commit_share0
评分方式
45/45可类型检查的代码 — Go(静态类型)
54.8/55可控的文件大小 — 采样的 1,131 个源文件中有 5 个超过 60KB
所用输入
primary_languageGo
largest_source_bytes185,252
source_files_sampled1,131
oversized_source_files5
评分方式
40/40API 模式(OpenAPI/GraphQL/proto) — examples/hotrod/services/driver/driver.proto, internal/proto/metrics/openmetrics.proto, internal/proto/metrics/otelspankind.proto
20/20MCP 服务器
40/40可运行示例 — examples
所用输入
example_dirsexamples
has_mcp_signal
api_schema_filesexamples/hotrod/services/driver/driver.proto, internal/proto/metrics/openmetrics.proto, internal/proto/metrics/otelspankind.proto

关键数据

0GitHub 星标
97贡献者
776最近 12 个月提交数
2距最近推送天数
99发布版本数
3巴士系数(bus factor)
0开放议题
Go软件包生态系统数

数据采集警告

  • Community profile unavailable
  • go package 'github.com/jaegertracing/jaeger' points at a different repository (https://github.com/jaegertracing/jaeger); excluded from ecosystem scoring
  • Could not fetch go package 'github.com/jaegertracing/jaeger/internal/tools' from its registry
  • Could not fetch npm package 'jaeger-ci-scripts' from its registry
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

更多细节

OpenSSF Scorecard 4.9 / 10
4.9综合

来自开源项目 OpenSSF Scorecard 的独立、工具无关的安全评估。每项检查奖励的是安全实践本身,而非特定供应商的工具。Scorecard 无法判定的检查项标记为 不适用,并从安全评分中剔除(绝不按零分计)。Scorecard v5.5.0 · 2026-08-02 22:14 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
不适用CI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
10Contributorsproject has 33 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
不适用Packagingpackaging workflow not detected
9Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 9
10SASTSAST tool detected: CodeQL
10Security-Policysecurity policy file detected
不适用Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities13 existing vulnerabilities detected
直接依赖 130
注册表软件包版本约束清单文件
Gogithub.com/ClickHouse/ch-gov0.73.0go.mod
Gogithub.com/ClickHouse/clickhouse-go/v2v2.47.0go.mod
Gogithub.com/ag-ui-protocol/ag-ui/sdks/community/gov0.0.0-20260605151526-e2c717d2194dgo.mod
Gogithub.com/apache/cassandra-gocql-driver/v2v2.1.2go.mod
Gogithub.com/asaskevich/govalidatorv0.0.0-20230301143203-a9d515a09cc2go.mod
Gogithub.com/cenkalti/backoff/v6v6.0.1go.mod
Gogithub.com/coder/acp-go-sdkv0.13.0go.mod
Gogithub.com/davecgh/go-spewv1.1.2-0.20180830191138-d8f796af33ccgo.mod
Gogithub.com/dgraph-io/badger/v4v4.9.2go.mod
Gogithub.com/elastic/elastic-transport-go/v8v8.9.0go.mod
Gogithub.com/elastic/go-elasticsearch/v9v9.4.2go.mod
Gogithub.com/go-logr/zaprv1.3.0go.mod
Gogithub.com/gogo/googleapisv1.4.1go.mod
Gogithub.com/gogo/protobufv1.3.2go.mod
Gogithub.com/google/gnostic-modelsv0.7.1go.mod
Gogithub.com/google/uuidv1.6.0go.mod
Gogithub.com/gorilla/handlersv1.5.2go.mod
Gogithub.com/gorilla/websocketv1.5.4-0.20250319132907-e064f32e3674go.mod
Gogithub.com/jaegertracing/jaeger-idlv0.9.0go.mod
Gogithub.com/kr/prettyv0.3.1go.mod
Gogithub.com/modelcontextprotocol/go-sdkv1.6.1go.mod
Gogithub.com/olivere/elastic/v7v7.0.32go.mod
Gogithub.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnectorv0.155.0go.mod
Gogithub.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporterv0.155.0go.mod
Gogithub.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporterv0.155.0go.mod
Gogithub.com/open-telemetry/opentelemetry-collector-contrib/extension/basicauthextensionv0.155.0go.mod
Gogithub.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckv2extensionv0.155.0go.mod
Gogithub.com/open-telemetry/opentelemetry-collector-contrib/extension/pprofextensionv0.155.0go.mod
Gogithub.com/open-telemetry/opentelemetry-collector-contrib/extension/sigv4authextensionv0.155.0go.mod
Gogithub.com/open-telemetry/opentelemetry-collector-contrib/extension/storagev0.155.0go.mod
Gogithub.com/open-telemetry/opentelemetry-collector-contrib/pkg/core/xidutilsv0.155.0go.mod
Gogithub.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatestv0.155.0go.mod
Gogithub.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautilv0.155.0go.mod
Gogithub.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaegerv0.155.0go.mod
Gogithub.com/open-telemetry/opentelemetry-collector-contrib/processor/attributesprocessorv0.155.0go.mod
Gogithub.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessorv0.155.0go.mod
Gogithub.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessorv0.155.0go.mod
Gogithub.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiverv0.155.0go.mod
Gogithub.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiverv0.155.0go.mod
Gogithub.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiverv0.155.0go.mod
Gogithub.com/pmezard/go-difflibv1.0.1-0.20181226105442-5d4384ee4fb2go.mod
Gogithub.com/prometheus/client_golangv1.23.2go.mod
Gogithub.com/prometheus/client_modelv0.6.2go.mod
Gogithub.com/prometheus/commonv0.69.0go.mod
Gogithub.com/spf13/cobrav1.10.2go.mod
Gogithub.com/spf13/pflagv1.0.10go.mod
Gogithub.com/spf13/viperv1.21.0go.mod
Gogithub.com/stretchr/testifyv1.11.1go.mod
Gogo.opentelemetry.io/collector/clientv1.61.0go.mod
Gogo.opentelemetry.io/collector/componentv1.61.0go.mod
Gogo.opentelemetry.io/collector/component/componentstatusv0.155.0go.mod
Gogo.opentelemetry.io/collector/component/componenttestv0.155.0go.mod
Gogo.opentelemetry.io/collector/config/configauthv1.61.0go.mod
Gogo.opentelemetry.io/collector/config/configgrpcv0.155.0go.mod
Gogo.opentelemetry.io/collector/config/confighttpv0.155.0go.mod
Gogo.opentelemetry.io/collector/config/confighttp/xconfighttpv0.155.0go.mod
Gogo.opentelemetry.io/collector/config/configmiddlewarev1.61.0go.mod
Gogo.opentelemetry.io/collector/config/confignetv1.61.0go.mod
Gogo.opentelemetry.io/collector/config/configoptionalv1.61.0go.mod
Gogo.opentelemetry.io/collector/config/configretryv1.61.0go.mod
Gogo.opentelemetry.io/collector/config/configtelemetryv0.155.0go.mod
Gogo.opentelemetry.io/collector/config/configtlsv1.61.0go.mod
Gogo.opentelemetry.io/collector/confmapv1.61.0go.mod
Gogo.opentelemetry.io/collector/confmap/provider/envproviderv1.61.0go.mod
Gogo.opentelemetry.io/collector/confmap/provider/fileproviderv1.61.0go.mod
Gogo.opentelemetry.io/collector/confmap/provider/httpproviderv1.61.0go.mod
Gogo.opentelemetry.io/collector/confmap/provider/httpsproviderv1.61.0go.mod
Gogo.opentelemetry.io/collector/confmap/provider/yamlproviderv1.61.0go.mod
Gogo.opentelemetry.io/collector/confmap/xconfmapv0.155.0go.mod
Gogo.opentelemetry.io/collector/connectorv0.155.0go.mod
Gogo.opentelemetry.io/collector/connector/forwardconnectorv0.155.0go.mod
Gogo.opentelemetry.io/collector/consumerv1.61.0go.mod
Gogo.opentelemetry.io/collector/consumer/consumertestv0.155.0go.mod
Gogo.opentelemetry.io/collector/exporterv1.61.0go.mod
Gogo.opentelemetry.io/collector/exporter/debugexporterv0.155.0go.mod
Gogo.opentelemetry.io/collector/exporter/exporterhelperv0.155.0go.mod
Gogo.opentelemetry.io/collector/exporter/exportertestv0.155.0go.mod
Gogo.opentelemetry.io/collector/exporter/nopexporterv0.155.0go.mod
Gogo.opentelemetry.io/collector/exporter/otlpexporterv0.155.0go.mod
Gogo.opentelemetry.io/collector/exporter/otlphttpexporterv0.155.0go.mod
Gogo.opentelemetry.io/collector/extensionv1.61.0go.mod
Gogo.opentelemetry.io/collector/extension/extensionauthv1.61.0go.mod
Gogo.opentelemetry.io/collector/extension/extensioncapabilitiesv0.155.0go.mod
Gogo.opentelemetry.io/collector/extension/zpagesextensionv0.155.0go.mod
Gogo.opentelemetry.io/collector/featuregatev1.61.0go.mod
Gogo.opentelemetry.io/collector/otelcolv0.155.0go.mod
Gogo.opentelemetry.io/collector/pdatav1.61.0go.mod
Gogo.opentelemetry.io/collector/pdata/xpdatav0.155.0go.mod
Gogo.opentelemetry.io/collector/pipelinev1.61.0go.mod
Gogo.opentelemetry.io/collector/processorv1.61.0go.mod
Gogo.opentelemetry.io/collector/processor/batchprocessorv0.155.0go.mod
Gogo.opentelemetry.io/collector/processor/memorylimiterprocessorv0.155.0go.mod
Gogo.opentelemetry.io/collector/processor/processorhelperv0.155.0go.mod
Gogo.opentelemetry.io/collector/processor/processortestv0.155.0go.mod
Gogo.opentelemetry.io/collector/receiverv1.61.0go.mod
Gogo.opentelemetry.io/collector/receiver/nopreceiverv0.155.0go.mod
Gogo.opentelemetry.io/collector/receiver/otlpreceiverv0.155.0go.mod
Gogo.opentelemetry.io/collector/servicev0.155.0go.mod
Gogo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpcv0.69.0go.mod
Gogo.opentelemetry.io/contrib/instrumentation/net/http/otelhttpv0.69.0go.mod
Gogo.opentelemetry.io/contrib/samplers/jaegerremotev0.37.1go.mod
Gogo.opentelemetry.io/otelv1.44.0go.mod
Gogo.opentelemetry.io/otel/exporters/otlp/otlptracev1.44.0go.mod
Gogo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpcv1.44.0go.mod
Gogo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttpv1.44.0go.mod
Gogo.opentelemetry.io/otel/exporters/prometheusv0.66.0go.mod
Gogo.opentelemetry.io/otel/exporters/stdout/stdouttracev1.44.0go.mod
Gogo.opentelemetry.io/otel/metricv1.44.0go.mod
Gogo.opentelemetry.io/otel/sdkv1.44.0go.mod
Gogo.opentelemetry.io/otel/sdk/metricv1.44.0go.mod
Gogo.opentelemetry.io/otel/tracev1.44.0go.mod
Gogo.uber.org/automaxprocsv1.6.0go.mod
Gogo.uber.org/goleakv1.3.0go.mod
Gogo.uber.org/zapv1.28.0go.mod
Gogo.yaml.in/yaml/v3v3.0.4go.mod
Gogolang.org/x/expv0.0.0-20260611194520-c48552f49976go.mod
Gogolang.org/x/sysv0.46.0go.mod
Gogoogle.golang.org/genproto/googleapis/apiv0.0.0-20260526163538-3dc84a4a5aaago.mod
Gogoogle.golang.org/grpcv1.81.1go.mod
Gogoogle.golang.org/protobufv1.36.11go.mod
npm@octokit/rest^22.0.0.github/scripts/package.json
Gogithub.com/golangci/golangci-lint/v2v2.12.2internal/tools/go.mod
Gogithub.com/josephspurrier/goversioninfov1.7.0internal/tools/go.mod
Gogithub.com/open-telemetry/opentelemetry-collector-contrib/cmd/schemagenv0.154.0internal/tools/go.mod
Gogithub.com/vektra/mockery/v3v3.7.0internal/tools/go.mod
Gogithub.com/wadey/gocovmergev0.0.0-20160331181800-b5bfa59ec0adinternal/tools/go.mod
Gogo.opentelemetry.io/collector/cmd/builderv0.155.0internal/tools/go.mod
Gogolang.org/x/vulnv1.5.0internal/tools/go.mod
Gogotest.tools/gotestsumv1.13.0internal/tools/go.mod
Gomvdan.cc/gofumptv0.10.0internal/tools/go.mod
全部依赖 未采集

本报告未能采集到解析后的依赖集合:GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": true,
      "size_kb": 41129,
      "has_wiki": false,
      "homepage": "https://www.jaegertracing.io/",
      "languages": {
        "Go": 3829115,
        "sed": 534,
        "HTML": 1821,
        "Shell": 128585,
        "Python": 176152,
        "Makefile": 36193,
        "Dockerfile": 4617,
        "JavaScript": 586,
        "Go Template": 40834
      },
      "pushed_at": "2026-07-31T22:07:15Z",
      "created_at": "2026-07-07T04:39:22Z",
      "owner_type": "User",
      "updated_at": "2026-07-07T04:39:22Z",
      "description": "CNCF Jaeger, a Distributed Tracing Platform",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "Apache-2.0",
      "default_branch": "main",
      "license_spdx_raw": "Apache-2.0",
      "primary_language": "Go",
      "significant_languages": [
        "Go"
      ]
    },
    "owner": {
      "blog": null,
      "name": "yurishkuro's AI bot",
      "type": "User",
      "login": "ysh-bot",
      "company": null,
      "location": null,
      "followers": 0,
      "avatar_url": "https://avatars.githubusercontent.com/u/262046922?v=4",
      "created_at": "2026-02-17T04:12:56Z",
      "is_verified": null,
      "public_repos": 4,
      "account_age_days": 166
    },
    "license": {
      "state": "standard",
      "spdx_id": "Apache-2.0",
      "raw_spdx": "Apache-2.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": false
    },
    "activity": {
      "releases": [
        {
          "tag": "v2.19.0",
          "kind": "minor",
          "published_at": "2026-06-03T13:17:07Z"
        },
        {
          "tag": "v2.18.0",
          "kind": "minor",
          "published_at": "2026-05-13T15:47:08Z"
        },
        {
          "tag": "v2.17.0",
          "kind": "minor",
          "published_at": "2026-03-30T15:11:26Z"
        },
        {
          "tag": "v2.16.0",
          "kind": "minor",
          "published_at": "2026-03-06T20:29:18Z"
        },
        {
          "tag": "v2.15.1",
          "kind": "patch",
          "published_at": "2026-02-09T00:16:14Z"
        },
        {
          "tag": "v2.15.0",
          "kind": "minor",
          "published_at": "2026-02-06T18:52:45Z"
        },
        {
          "tag": "v2.14.1",
          "kind": "patch",
          "published_at": "2026-01-02T18:34:55Z"
        },
        {
          "tag": "v2.14.0",
          "kind": "minor",
          "published_at": "2026-01-02T02:25:29Z"
        },
        {
          "tag": "v2.13.0",
          "kind": "minor",
          "published_at": "2025-12-03T16:07:08Z"
        },
        {
          "tag": "v2.12.0",
          "kind": "minor",
          "published_at": "2025-11-13T16:44:30Z"
        },
        {
          "tag": "v2.11.0",
          "kind": "minor",
          "published_at": "2025-10-02T11:57:56Z"
        },
        {
          "tag": "v2.10.0",
          "kind": "minor",
          "published_at": "2025-09-03T18:28:19Z"
        },
        {
          "tag": "v2.9.0",
          "kind": "minor",
          "published_at": "2025-08-06T18:10:13Z"
        },
        {
          "tag": "v2.8.0",
          "kind": "minor",
          "published_at": "2025-07-04T16:53:12Z"
        },
        {
          "tag": "v2.7.0",
          "kind": "minor",
          "published_at": "2025-06-10T18:29:07Z"
        },
        {
          "tag": "v2.6.0",
          "kind": "minor",
          "published_at": "2025-05-09T19:30:14Z"
        },
        {
          "tag": "v2.5.0",
          "kind": "minor",
          "published_at": "2025-04-05T08:41:40Z"
        },
        {
          "tag": "v2.4.0",
          "kind": "minor",
          "published_at": "2025-03-08T05:34:31Z"
        },
        {
          "tag": "v2.3.0",
          "kind": "minor",
          "published_at": "2025-02-06T18:08:09Z"
        },
        {
          "tag": "v2.2.0",
          "kind": "minor",
          "published_at": "2025-01-08T00:08:50Z"
        },
        {
          "tag": "v2.1.0",
          "kind": "minor",
          "published_at": "2024-12-06T21:17:15Z"
        },
        {
          "tag": "v2.0.0",
          "kind": "major",
          "published_at": "2024-11-10T18:53:12Z"
        },
        {
          "tag": "v2.0.0-rc2",
          "kind": "prerelease",
          "published_at": "2024-10-07T09:16:33Z"
        },
        {
          "tag": "v2.0.0-rc1",
          "kind": "prerelease",
          "published_at": "2024-09-15T00:15:41Z"
        },
        {
          "tag": "v2.0.0-rc0",
          "kind": "prerelease",
          "published_at": "2024-08-06T15:39:43Z"
        },
        {
          "tag": "v1.76.0",
          "kind": "minor",
          "published_at": "2025-12-03T16:07:08Z"
        },
        {
          "tag": "v1.75.0",
          "kind": "minor",
          "published_at": "2025-11-13T16:44:30Z"
        },
        {
          "tag": "v1.74.0",
          "kind": "minor",
          "published_at": "2025-10-02T11:57:56Z"
        },
        {
          "tag": "v1.73.0",
          "kind": "minor",
          "published_at": "2025-09-03T18:28:19Z"
        },
        {
          "tag": "v1.72.0",
          "kind": "minor",
          "published_at": "2025-08-06T18:10:13Z"
        },
        {
          "tag": "v1.71.0",
          "kind": "minor",
          "published_at": "2025-07-04T16:53:12Z"
        },
        {
          "tag": "v1.70.0",
          "kind": "minor",
          "published_at": "2025-06-10T18:29:07Z"
        },
        {
          "tag": "v1.69.0",
          "kind": "minor",
          "published_at": "2025-05-09T19:30:14Z"
        },
        {
          "tag": "v1.68.0",
          "kind": "minor",
          "published_at": "2025-04-05T08:41:40Z"
        },
        {
          "tag": "v1.67.0",
          "kind": "minor",
          "published_at": "2025-03-08T05:34:31Z"
        },
        {
          "tag": "v1.66.0",
          "kind": "minor",
          "published_at": "2025-02-06T18:08:09Z"
        },
        {
          "tag": "v1.65.0",
          "kind": "minor",
          "published_at": "2025-01-08T00:08:50Z"
        },
        {
          "tag": "v1.64.0",
          "kind": "minor",
          "published_at": "2024-12-06T21:17:15Z"
        },
        {
          "tag": "v1.63.0",
          "kind": "minor",
          "published_at": "2024-11-10T18:53:12Z"
        },
        {
          "tag": "v1.62.0",
          "kind": "minor",
          "published_at": "2024-10-07T09:16:33Z"
        },
        {
          "tag": "v1.61.0",
          "kind": "minor",
          "published_at": "2024-09-15T00:15:41Z"
        },
        {
          "tag": "v1.60.0",
          "kind": "minor",
          "published_at": "2024-08-06T15:39:43Z"
        },
        {
          "tag": "v1.59.0",
          "kind": "minor",
          "published_at": "2024-07-10T15:12:40Z"
        },
        {
          "tag": "v1.58.1",
          "kind": "patch",
          "published_at": "2024-06-22T20:08:51Z"
        },
        {
          "tag": "v1.58.0",
          "kind": "minor",
          "published_at": "2024-06-11T16:04:17Z"
        },
        {
          "tag": "v1.57.0",
          "kind": "minor",
          "published_at": "2024-05-01T23:19:12Z"
        },
        {
          "tag": "v1.56.0",
          "kind": "minor",
          "published_at": "2024-04-03T19:57:40Z"
        },
        {
          "tag": "v1.55.0",
          "kind": "minor",
          "published_at": "2024-03-07T05:21:42Z"
        },
        {
          "tag": "v1.54.0",
          "kind": "minor",
          "published_at": "2024-02-06T23:10:30Z"
        },
        {
          "tag": "v1.53.0",
          "kind": "minor",
          "published_at": "2024-01-08T18:05:40Z"
        },
        {
          "tag": "v1.52.0",
          "kind": "minor",
          "published_at": "2023-12-06T09:43:23Z"
        },
        {
          "tag": "v1.51.0",
          "kind": "minor",
          "published_at": "2023-11-02T23:57:12Z"
        },
        {
          "tag": "v1.50.0",
          "kind": "minor",
          "published_at": "2023-10-06T14:47:06Z"
        },
        {
          "tag": "v1.49.0",
          "kind": "minor",
          "published_at": "2023-09-07T13:13:08Z"
        },
        {
          "tag": "v1.48.0",
          "kind": "minor",
          "published_at": "2023-08-15T11:35:43Z"
        },
        {
          "tag": "v1.47.0",
          "kind": "minor",
          "published_at": "2023-07-06T20:38:11Z"
        },
        {
          "tag": "v1.46.0",
          "kind": "minor",
          "published_at": "2023-06-05T02:45:00Z"
        },
        {
          "tag": "v1.45.0",
          "kind": "minor",
          "published_at": "2023-05-05T20:59:36Z"
        },
        {
          "tag": "v1.44.0",
          "kind": "minor",
          "published_at": "2023-04-10T19:06:14Z"
        },
        {
          "tag": "v1.43.0",
          "kind": "minor",
          "published_at": "2023-03-15T18:08:08Z"
        },
        {
          "tag": "v1.42.0",
          "kind": "minor",
          "published_at": "2023-02-05T21:04:16Z"
        },
        {
          "tag": "v1.41.0",
          "kind": "minor",
          "published_at": "2023-01-03T22:41:26Z"
        },
        {
          "tag": "v1.40.0",
          "kind": "minor",
          "published_at": "2022-12-09T01:21:25Z"
        },
        {
          "tag": "v1.39.0",
          "kind": "minor",
          "published_at": "2022-11-01T12:30:46Z"
        },
        {
          "tag": "v1.38.1",
          "kind": "patch",
          "published_at": "2022-10-05T00:25:31Z"
        },
        {
          "tag": "v1.38.0",
          "kind": "minor",
          "published_at": "2022-09-16T14:25:43Z"
        },
        {
          "tag": "v1.37.0",
          "kind": "minor",
          "published_at": "2022-08-03T17:29:32Z"
        },
        {
          "tag": "v1.36.0",
          "kind": "minor",
          "published_at": "2022-07-05T10:37:57Z"
        },
        {
          "tag": "v1.35.2",
          "kind": "patch",
          "published_at": "2022-05-31T17:21:11Z"
        },
        {
          "tag": "v1.35.1",
          "kind": "patch",
          "published_at": "2022-05-31T17:21:11Z"
        },
        {
          "tag": "v1.35.0",
          "kind": "minor",
          "published_at": "2022-05-30T20:07:14Z"
        },
        {
          "tag": "v1.34.1",
          "kind": "patch",
          "published_at": "2022-05-16T15:23:24Z"
        },
        {
          "tag": "v1.34.0",
          "kind": "minor",
          "published_at": "2022-05-11T22:13:38Z"
        },
        {
          "tag": "v1.33.0",
          "kind": "minor",
          "published_at": "2022-04-11T21:18:11Z"
        },
        {
          "tag": "v1.32.0",
          "kind": "minor",
          "published_at": "2022-03-06T02:03:16Z"
        },
        {
          "tag": "v1.31.0",
          "kind": "minor",
          "published_at": "2022-02-04T20:35:55Z"
        },
        {
          "tag": "v1.30.0",
          "kind": "minor",
          "published_at": "2022-01-11T16:26:25Z"
        },
        {
          "tag": "v1.29.0",
          "kind": "minor",
          "published_at": "2021-12-01T10:52:24Z"
        },
        {
          "tag": "v1.28.0",
          "kind": "minor",
          "published_at": "2021-11-06T04:08:24Z"
        },
        {
          "tag": "v1.27.0",
          "kind": "minor",
          "published_at": "2021-10-06T18:07:56Z"
        },
        {
          "tag": "v1.26.0",
          "kind": "minor",
          "published_at": "2021-09-06T03:44:35Z"
        },
        {
          "tag": "v1.25.0",
          "kind": "minor",
          "published_at": "2021-08-05T01:35:33Z"
        },
        {
          "tag": "v1.24.0",
          "kind": "minor",
          "published_at": "2021-07-07T11:58:07Z"
        },
        {
          "tag": "v1.23.0",
          "kind": "minor",
          "published_at": "2021-06-04T19:13:43Z"
        },
        {
          "tag": "v1.22.0",
          "kind": "minor",
          "published_at": "2021-02-23T21:30:42Z"
        },
        {
          "tag": "v1.21.0",
          "kind": "minor",
          "published_at": "2020-11-16T14:47:57Z"
        },
        {
          "tag": "v1.20.0",
          "kind": "minor",
          "published_at": "2020-09-29T18:21:58Z"
        },
        {
          "tag": "v1.19.2",
          "kind": "patch",
          "published_at": "2020-08-27T07:17:27Z"
        },
        {
          "tag": "v1.19.1",
          "kind": "patch",
          "published_at": "2020-08-26T22:30:20Z"
        },
        {
          "tag": "v1.19.0",
          "kind": "minor",
          "published_at": "2020-08-26T15:03:45Z"
        },
        {
          "tag": "v1.18.1",
          "kind": "patch",
          "published_at": "2020-06-19T09:25:29Z"
        },
        {
          "tag": "v1.18.0",
          "kind": "minor",
          "published_at": "2020-05-14T10:29:31Z"
        },
        {
          "tag": "v1.17.1",
          "kind": "patch",
          "published_at": "2020-03-13T08:02:54Z"
        },
        {
          "tag": "v1.17.0",
          "kind": "minor",
          "published_at": "2020-02-24T18:17:19Z"
        },
        {
          "tag": "v1.16.0",
          "kind": "minor",
          "published_at": "2019-12-17T11:29:57Z"
        },
        {
          "tag": "v1.15.1",
          "kind": "patch",
          "published_at": "2019-11-07T23:45:29Z"
        },
        {
          "tag": "v1.15.0",
          "kind": "minor",
          "published_at": "2019-11-07T19:28:20Z"
        },
        {
          "tag": "v1.14.0",
          "kind": "minor",
          "published_at": "2019-09-02T15:21:42Z"
        },
        {
          "tag": "v1.13.1",
          "kind": "patch",
          "published_at": "2019-06-28T07:48:52Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "382273edfeef8fcbf267eb5e3fd81d2fe9795efb",
          "body": "… (#8954)\n\n## Which problem is this PR solving?\n- Part of #7612 (RFC 0006). Milestone **M9** — migrates the\nadaptive-sampling store off `olivere/elastic` onto the shared `esclient`\ntransport pool, following the M5 (reads) and M6 (writes) pattern.\n\n## Description of the changes\n**Scaffolding:**\n- `es\n[…]\nfmt`/`make lint` clean.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(es): Migrate sampling store reads and writes onto owned esclient…",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-07-07T04:34:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "444a551ed9eb09dd36ce08c7e7627286e894536a",
          "body": "… (#8884)\n\n## Which problem is this PR solving?\n- Resolves #8883\n\n## Description of the changes\n- `Binary.Start` in `cmd/jaeger/internal/integration/binary.go` opens\ntwo log files, `output_logs.txt` and `error_logs.txt`, via\n`os.OpenFile`, but never closes them. On Windows, `t.TempDir()`'s\ncleanup i\n[…]\n this PR (choose one)\n- [ ] **None**\n- [x] **Light**\n- [ ] **Moderate**: AI helped with code generation or debugging specific\nparts\n- [ ] **Heavy**\n\nSigned-off-by: shayannab <shayannabehera@gmail.com>",
          "is_bot": false,
          "headline": "Fix Windows test cleanup failure: close output/error log file handles…",
          "author_name": "shayanna",
          "author_login": "shayannab",
          "committed_at": "2026-07-07T04:17:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bcfbd5a045ddca255fda851759f47a6b567a720a",
          "body": "…ock (#8955)\n\n## Which problem is this PR solving?\n- Part of #7612 (RFC 0006). The M1 request-snapshot baseline froze every\nES/OS data-plane and admin request **except one**: the adaptive-sampling\nwrites. `InsertThroughput` / `InsertProbabilitiesAndQPS` stamp the\ndocument body with `time.Now()` and \n[…]\nlint`\nclean.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(es): Snapshot sampling store write requests via an injectable cl…",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-07-07T03:29:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b7ad60e8f8cae21f79c4381e8349429db8ea3098",
          "body": "## Which problem is this PR solving?\n- Part of #7612 (RFC 0006), milestone **M6** — the first Stage-B *write*\nslice. Migrates the Elasticsearch/OpenSearch span write path off\n`olivere/elastic`'s `BulkProcessor` onto a bounded bulk indexer over the\nshared `esclient` transport pool.\n- Resolves #2192 (\n[…]\nfor the new functionality\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(es): Migrate span writes onto an owned bounded bulk indexer (#8944)",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-07-07T01:48:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7ff0898bfc1dea452c289acc8fa70927c159c2cd",
          "body": "…e (#8952)\n\n## Which problem is this PR solving?\n\nCloses #8951\n\n`internal/auth.TokenProviderWithTime` returns a `func() string` closure\nthat\nread and wrote a captured `currentToken` string **without\nsynchronization**.\nThe auth `RoundTripper` invokes that closure on **every HTTP request**,\nso any\ncon\n[…]\nuth/` passes\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(auth): Synchronize fallback token in TokenProviderWithTime closur…",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-07-06T23:43:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5f870a088564afcadc084a1b16f833576de73d34",
          "body": "## Which problem is this PR solving?\n- Closes #8947.\n\nRemoves support for **Elasticsearch 6.x**. It reached EOL (Elastic, Nov\n2020), and the vendor that kept it alive for Jaeger — Red Hat's\nOpenShift distributed tracing platform, which used ES6 as its backend —\nreached [end of support on Nov 3,\n2025\n[…]\nfor the new functionality\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(es): Remove support for Elasticsearch v6 (#8948)",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-07-06T21:13:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d417316e7805f8cdc29d87b33635fb69a175ab30",
          "body": "…registry (#8910)\n\n## Which problem is this PR solving?\n- Part of #8890 (and #8874): unify AI agent tool dispatch through a\ngateway-side MCP server. #8894 added the session-free telemetry endpoint\n  (`/api/ai/mcp/`); this PR adds the **session-scoped** endpoint\n(`/api/ai/mcp/<sessionId>/`) and the s\n[…]\n**Moderate**: AI helped with code generation or debugging specific\nparts\n- [ ] **Heavy**: AI generated most or all of the code changes\n\n---------\n\nSigned-off-by: Nabil-Salah <nabil.salah203@gmail.com>",
          "is_bot": false,
          "headline": "feat(ai-gateway): Add session-scoped MCP endpoint and session-stream …",
          "author_name": "Nabil Salah",
          "author_login": "Nabil-Salah",
          "committed_at": "2026-07-06T19:27:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1b4ed9dea64aa5d241b07d27e01761b511d6a311",
          "body": "…ry AST (#8943)\n\n## Which problem is this PR solving?\n- Part of #7612 (RFC 0006). Milestone **M5** — the first Stage-B read\nslice: it introduces the owned, driver-neutral query AST + response type\n+ `Searcher`, and migrates the simplest ES/OS read path\n(service/operation names) off `olivere/elastic`\n[…]\nfor the new functionality\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(es): Migrate service/operation reads onto owned Searcher and que…",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-07-06T05:32:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9823a8b932dddb57492b5956bfe17231e171defa",
          "body": "…(RFC 0006 M4) (#8938)\n\n## Which problem is this PR solving?\n\n- Part of #7612 (replace `olivere/elastic`). RFC 0006 M4 (Stage A). \n- Previously, operations whose endpoints depended on the backend flavor,\nsuch as template creation or ILM/ISM, issued a redundant `GET /` network\nping on every call to d\n[…]\nidalam <161572905+iammdzaidalam@users.noreply.github.com>\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Unify Elasticsearch backend version detection at client construction …",
          "author_name": "Zaid",
          "author_login": "iammdzaidalam",
          "committed_at": "2026-07-06T03:32:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b7529bec3b5e002c4844cb6ac3e6f9caa7e3f80b",
          "body": "## Which problem is this PR solving?\n- Part of #7612 (RFC 0006). Documentation clarifications to the RFC,\nplus a small non-functional cleanup in the `esclient` package.\n- The RFC described the client architecture only in prose, and its M4\nmilestone stated the *mechanism* (\"one version-detection path\n[…]\nI have signed all commits\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[es] RFC 0006: client-layering diagrams + sharpen M4 criteria (#8941)",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-07-06T00:23:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "73e078f54b8b52ccb81750a520c73e2606de7e5d",
          "body": "…06 M3.5c) (#8939)\n\n## Which problem is this PR solving?\n- Part of #7612 (RFC 0006, milestone M3.5c).\n- `es-rollover` and `es-index-cleaner` could only authenticate with\nbasic auth (username/password). M3.5b routed the admin plane through the\nshared auth stack, but nothing populated bearer-token / A\n[…]\nfor the new functionality\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[es] Add bearer-token and API-key CLI flags to es admin tools (RFC 00…",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-07-05T21:11:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5fc31a0428e533f63392c4e0d11136bad19b74c9",
          "body": "… (#8937)\n\n## Which problem is this PR solving?\n- Part of #7612 (RFC 0006, milestone M3.5b).\n- The admin plane (`es-rollover` / `es-index-cleaner`, via\n`esclient.Client`) hand-rolled a single-endpoint HTTP client with only\nTLS + static Basic auth, bypassing the shared RoundTripper stack that\nthe dat\n[…]\nfor the new functionality\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[es] Route admin plane through the shared auth stack (RFC 0006 M3.5b)…",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-07-05T20:25:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "30d99f976aef7d3bd66f6d16348a2bbd75181d8c",
          "body": "…nic on corrupted rows (#8935)\n\n## Which problem is this PR solving?\n\n- Resolves #8933.\n- A malformed or truncated trace/span ID stored in ClickHouse can\ntrigger a slice-to-array conversion panic while decoding spans.\n- This allows a single corrupted row to act as a \"poison pill\", crashing\n`jaeger-q\n[…]\nt`\n\n## AI Usage in this PR (choose one)\n\n- [x] **Light**: AI provided minor assistance (formatting, simple\nsuggestions)\n\nSigned-off-by: iammdzaidalam <161572905+iammdzaidalam@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix(clickhouse): Validate decoded trace/span ID lengths to prevent pa…",
          "author_name": "Zaid",
          "author_login": "iammdzaidalam",
          "committed_at": "2026-07-05T20:14:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d26f8a0ab986df45ac9974e752aca853886e8e39",
          "body": "…#8936)\n\n## Which problem is this PR solving?\n\n- Part of #7612 (replace `olivere/elastic`). RFC 0006 **M3.5a** — the\nfirst step toward the admin plane inheriting the full auth stack: move\nthe shared RoundTripper stack into `esclient` so `esclient` (not\n`clientbuilder`, which pulls in olivere) owns i\n[…]\nat they did.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Relocate the shared ES RoundTripper stack into the esclient package (…",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-07-05T17:57:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "cc01403bb7bad00f4b16a0221acfbfd94ffeaf1d",
          "body": "…rt-go pool (#8932)\n\n## Which problem is this PR solving?\n\n- Part of #7612 (replace `olivere/elastic`). RFC 0006 **M3** foundation:\nintroduce the shared connection **pool** and route the admin plane\nthrough it.\n\n## Description of the changes\n\n**`rawClient` over the connection pool** — new\n`internal/\n[…]\n/...`\nclean.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Route the Elasticsearch admin client through a shared elastic-transpo…",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-07-05T17:04:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ce1a0cb8e9246179507226f50b8928a1f4a0ebb8",
          "body": "…Host override (#8917)\n\n## Which problem is this PR solving?\n\n- Resolves #8916. The `custom_headers` configuration is currently\nignored by the v7 `olivere` client, causing required static headers\n(such as `Host` for proxies) to be silently dropped on almost all\ndata-path storage requests.\n- This PR \n[…]\n2905+iammdzaidalam@users.noreply.github.com>\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(es): Apply custom_headers to all Elasticsearch clients and honor …",
          "author_name": "Zaid",
          "author_login": "iammdzaidalam",
          "committed_at": "2026-07-05T05:14:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0afd9fce40d34f53f24587048b75a997e25e42a9",
          "body": "…8768)\n\n## Which problem is this PR solving?\n\n- Fixes #8760\n\nWith `sigv4auth` against AWS-managed OpenSearch (FGAC enabled), startup\nfails on the index-template PUT with HTTP 403, while bodyless GETs\nsucceed. The request is signed over an empty payload hash.\n\n## Description of the changes\n\n#8308 int\n[…]\nGUIDELINES.md\n- [x] I have signed all commits\n- [x] I have added unit tests for the new functionality\n- [x] I have run lint and test steps successfully\n\nSigned-off-by: truffle <truffleagent@gmail.com>",
          "is_bot": false,
          "headline": "fix(storage): Populate req.GetBody before SigV4 signing, not after (#…",
          "author_name": "Truffle",
          "author_login": "truffle-dev",
          "committed_at": "2026-07-05T04:39:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "34a27eb3ed41eedd1da7fff90c84972bac423ac3",
          "body": "…930)\n\n## Which problem is this PR solving?\n\nPart of #7612 (replace `olivere/elastic`). Implements **M2** of RFC 0006\nStage A: rename the control-plane client package so it can become the\nfoundation of Jaeger's own ES/OpenSearch client (RFC 0006 §6.4), rather\nthan a second client bolted alongside th\n[…]\neaner/app`).\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Rename the Elasticsearch control-plane client package to esclient (#8…",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-07-05T03:53:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a8cb621dd38a89926c97ee14ada777374a74b425",
          "body": "## Which problem is this PR solving?\n\nPart of #7612 (replace `olivere/elastic`). Completes the **data-plane**\nhalf of the RFC 0006 Stage-A snapshot baseline (M1). #8922 landed the\nharness, the full admin/control-plane snapshots, and one data-plane\nslice (service/operation); this PR extends the reque\n[…]\nlint` clean.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Snapshot the Elasticsearch data-plane request wire format (#8929)",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-07-05T02:55:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d719125e7551599cdf5b4c5780e018b1d5c984ca",
          "body": "…es (#8922)\n\n## Which problem is this PR solving?\n\nPart of #7612 (replace `olivere/elastic`). This lands the **Stage-A\nfoundation of RFC 0006**: a request-wire-format snapshot (\"golden\")\nsuite over the *current* Elasticsearch/OpenSearch clients, so the\nupcoming migration to a Jaeger-owned client can\n[…]\nunctionality\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add ES/OS request-snapshot suite baseline and converge mapping fixtur…",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-07-04T21:39:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "694afdec5c9de60f4b760b151993b0a955467381",
          "body": "… (#8919)\n\n## Which problem is this PR solving?\n- Part of #7612 — Investigate the path to replace the `olivere/elastic`\ndriver.\n\nJaeger talks to Elasticsearch/OpenSearch through **two unrelated client\nabstractions**: the deprecated `olivere`-based data-plane `es.Client`\nand a raw-HTTP control-plane \n[…]\nommits (DCO)\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(rfc): Add RFC 0006 for a unified Elasticsearch/OpenSearch client…",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-07-04T18:00:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fe5ed89359f8cc3bc2e644791b153e6146406cda",
          "body": "…921)\n\n## Which problem is this PR solving?\n\nResolves #8920\n\nThe Elasticsearch/OpenSearch index-mapping golden tests in\n`internal/storage/v1/elasticsearch/mappings/` did not assert the full\n`{mapping type × backend × version}` matrix. As a result, two defects\nhad slipped through:\n\n1. **Unreachable `\n[…]\nr the new functionality\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Assert full mapping golden matrix and fix orphaned/stale fixtures (#8…",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-07-04T04:45:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "563555ffb5728a67ffcec63352b3d1d7ceb9c7ab",
          "body": "Wait at least one week before proposing a dependency upgrade, avoiding\nbroken or low-confidence releases. Security alerts bypass this delay via\ntheir own minimumReleaseAge override.\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>",
          "is_bot": false,
          "headline": "chore(renovate): Add 7-day minimum release age (#8915)",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-07-02T21:24:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0d98a5056596f6ca389f47c5e3ce5cab696e9d86",
          "body": "## Summary\n\n- Adds RFC 0004 proposing qualified attribute queries — allowing users\nto optionally scope tag/attribute searches to specific OTLP levels\n(span, resource, scope, event, link)\n- Evaluates 4 options against 12 criteria with a traffic-light\ncomparison matrix\n- Recommends phased approach: ba\n[…]\n/claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nSigned-off-by: Yuri Shkuro <yurishkuro@users.noreply.github.com>\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(rfc): Qualified attribute queries (#8810)",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-07-02T19:36:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7b2b26b2cec88abbb87226b0347aa1a6e6637c00",
          "body": "## 🛑 Breaking change\n\nThe `jaegermcp` extension that used to run on an MCP server on a\nseparate port has been merged into the `jaegerquery` extension and the\nMCP tools are not available from the main query port under `/api/ai/mcp`\n\n## Which problem is this PR solving?\n- Resolves the first phase of #\n[…]\nf-by: Nabil-Salah <nabil.salah203@gmail.com>\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(mcp): Merge jaegermcp extention into jaegerquery extension (#8894)",
          "author_name": "Nabil Salah",
          "author_login": "Nabil-Salah",
          "committed_at": "2026-07-01T17:23:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "45f2999b2fdae0c70abe475ce572a8dd99a889b2",
          "body": "## Summary\n\n- upgrade the Gemini AI sidecar lockfile from pydantic-settings 2.14.1\nto 2.14.2\n- address Dependabot security alert 64 / GHSA-4xgf-cpjx-pc3j\n- keep the change scoped to the generated uv lock entry for the affected\ntransitive dependency\n\n## Why\n\nDependabot reports pydantic-settings 2.14.\n[…]\n.\n\n## Validation\n\n- /tmp/codex-uv-venv-jaeger-dependabot-64/bin/uv run --locked pytest -q\ntest_sidecar_workflow.py\n- make fmt\n- make lint\n- make test\n\nSigned-off-by: Jonah Kowall <jonahk@spacelift.io>",
          "is_bot": false,
          "headline": "fix(deps): Upgrade pydantic-settings in AI sidecar lockfile (#8886)",
          "author_name": "Jonah Kowall",
          "author_login": "jkowall",
          "committed_at": "2026-07-01T17:14:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7974ba5d8406826b4072e4372eb33cd614c4ab4c",
          "body": "…an_names (#8902)\n\n## Which problem is this PR solving?\n\nFixes #8901. `get_services` and `get_span_names` cap their results at\n100 (`defaultServiceLimit` / `defaultSpanNameLimit`) and return the\ntrimmed slice with no indication anything was cut, so a caller cannot\ntell whether it got everything.\n\n##\n[…]\nfollow-up.\n\n---\n*Disclosure: this change was authored with AI assistance (Claude Code);\nI have reviewed it and will shepherd it through review.*\n\nSigned-off-by: Cedric Conday <neumann.alpha@gmail.com>",
          "is_bot": false,
          "headline": "fix(mcp): Report total_count and truncated on get_services and get_sp…",
          "author_name": "Cedric Conday",
          "author_login": "CedricConday",
          "committed_at": "2026-07-01T03:21:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5c3a19badbaa53578ec7001024ff766cdb39f226",
          "body": "## Which problem is this PR solving?\n- Resolves #8824 \n\n## Description of the changes\n\n`DistributedElectionParticipant.Close()` now calls\n`lock.Forfeit(resourceName)`\nwhen the instance is the leader, immediately releasing the distributed\nlock\ninstead of waiting for TTL expiry (~60s default).\n\nThe fi\n[…]\nstand and can explain every line of the change.\n\n---------\n\nSigned-off-by: Sarva Dubey <sarvadubey@gmail.com>\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix(sampling): Forfeit leader lock on graceful shutdown (#8825)",
          "author_name": "Sarva Dubey",
          "author_login": "HESleagacy",
          "committed_at": "2026-06-30T22:58:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "29ac1fbd288ba9fb812d27af91c713ca9ed882fc",
          "body": "## Which problem is this PR solving?\n- Part of #8811\n\n## Description of the changes\n- Implements `tracestore.SummaryReader` natively for the v2\nElasticsearch backend (ADR-010 Milestone 5). Until now ES opted out and\nsummaries were produced by the `computeSummaries` fallback, which loads\nevery span o\n[…]\n-----\n\nSigned-off-by: Me Priyank <pvonlyone29@gmail.com>\nSigned-off-by: Priyank Verma <pvonlyone29@gmail.com>\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat(es): Native trace summaries (SummaryReader) (#8812)",
          "author_name": "Priyank Verma",
          "author_login": "Me-Priyank",
          "committed_at": "2026-06-30T17:05:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4ce96677d66107f6804f8e4850da81119b9ec6cd",
          "body": "## Which problem is this PR solving?\n\nPart of #8440\n\nAI agents connected to Jaeger via MCP have no way to discover or load\nreusable analysis playbooks (skills). This PR adds a single `read_skill`\nMCP tool that lets any connected agent read skill files through\nprogressive disclosure — start with the \n[…]\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>\nCo-authored-by: Yuri Shkuro <yurishkuro@users.noreply.github.com>\nCo-authored-by: Yuri Shkuro <github@ysh.us>",
          "is_bot": false,
          "headline": "feat(jaegermcp): Add `read_skill` tool for agent skill discovery (#8849)",
          "author_name": "Soumya Raikwar",
          "author_login": "SoumyaRaikwar",
          "committed_at": "2026-06-29T22:58:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d4752b758617b7a06edf6bf2ca5efa5e476bb49f",
          "body": "… supports it (#8895)\n\n## Summary\n\n- `NewReaderDecorator` now returns a `ReadMetricsDecoratorWithSummary`\n(embedding `ReadMetricsDecorator` by value + implementing\n`tracestore.SummaryReader`) when the wrapped reader implements that\noptional interface; otherwise it returns a plain `*ReadMetricsDecora\n[…]\nnt` and `make fmt` clean\n\n🤖 Generated with [Claude Code](https://claude.ai/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(tracestoremetrics): Forward SummaryReader when underlying reader…",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-06-29T20:06:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6610d1dbacf2bdd24f16a9f25cabcb295f74cb90",
          "body": "… (#8893)\n\nAdd db.system.name, db.operation.name, and db.query.text attributes to\nthe simulated Redis and MySQL client spans in the HotROD example, and\nexpose a DBOperationNameAttribute helper in the otelsemconv package.\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>",
          "is_bot": false,
          "headline": "feat(hotrod): Add standard OTEL DB semconv attributes to HotRod spans…",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-06-29T18:37:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2bd332e9154f6443a108d93e9c9258d0fcf47b6c",
          "body": "…to v2.1.2 (#8861)\n\nThis PR contains the following updates:\n\n| Package | Change |\n[Age](https://docs.renovatebot.com/merge-confidence/) |\n[Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n|\n[github.com/apache/cassandra-gocql-driver/v2](https://redirect.github.com/apach\n[…]\njcmVhdGVkSW5WZXIiOiI0My4yNDIuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI0Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2c6ZGVwZW5kZW5jaWVzIl19-->\n\nSigned-off-by: Mend Renovate <bot@renovateapp.com>",
          "is_bot": false,
          "headline": "fix(deps): update module github.com/apache/cassandra-gocql-driver/v2 …",
          "author_name": "Mend Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2026-06-29T05:48:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5f7c179a4501b2ab54484ccc548a05308362ebc7",
          "body": "Fixes #8773\n\nFixes a few spelling typos in README files:\n- `cmd/jaeger/README.md`: \"verions\" → \"versions\"\n- `cmd/jaeger/internal/extension/remotesampling/README.md`: \"Exension\" →\n\"Extension\"\n- `cmd/jaeger/internal/integration/README.md`: \"Exension\" → \"Extension\"\n- `cmd/jaeger/internal/extension/expvar/README.md`: \"implementaion\" →\n\"implementation\"\n\nDocumentation-only change; no code or behavior affected.\n\n---------\n\nSigned-off-by: DonaldRaph <62525712+donaldraph@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Fix typos in README files (#8774)",
          "author_name": "Donald Anyamba",
          "author_login": "donaldraph",
          "committed_at": "2026-06-29T05:38:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3e2f63946ec2c1c8c6222ca8438501b2e83a30b5",
          "body": "This PR contains the following updates:\n\n| Package | Type | Update | Change |\n|---|---|---|---|\n| [actions/cache](https://redirect.github.com/actions/cache) | action |\nmajor | `v5.1.0` → `v6.1.0` |\n| [actions/checkout](https://redirect.github.com/actions/checkout) |\naction | major | `v6` → `v7` |\n| \n[…]\njcmVhdGVkSW5WZXIiOiI0My4yNDIuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI0Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2c6ZGVwZW5kZW5jaWVzIl19-->\n\nSigned-off-by: Mend Renovate <bot@renovateapp.com>",
          "is_bot": false,
          "headline": "chore(deps): update github-actions deps (major) (#8865)",
          "author_name": "Mend Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2026-06-29T05:33:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "89dd8f016a74e6d98b280299c218d0ddf8496ad1",
          "body": "…862)\n\nThis PR contains the following updates:\n\n| Package | Change |\n[Age](https://docs.renovatebot.com/merge-confidence/) |\n[Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n|\n[github.com/dgraph-io/badger/v4](https://redirect.github.com/dgraph-io/badger)\n| `v4.9.1` → \n[…]\njcmVhdGVkSW5WZXIiOiI0My4yNDIuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI0Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2c6ZGVwZW5kZW5jaWVzIl19-->\n\nSigned-off-by: Mend Renovate <bot@renovateapp.com>",
          "is_bot": false,
          "headline": "fix(deps): update module github.com/dgraph-io/badger/v4 to v4.9.2 (#8…",
          "author_name": "Mend Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2026-06-29T05:32:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f14c8e008bfcafbd6c9929a8162a86328b877702",
          "body": "## Which problem is this PR solving?\n- Partial fix for #5506\n\n## Description of the changes\n- Enabled the `argument-limit` revive linter rule\n- No code changes required - the codebase already complies with this\nrule\n- The `argument-limit` rule enforces a maximum number of function\nparameters, promot\n[…]\nommits\n- [x] I have added unit tests for the new functionality\n- [x] I have run lint and test steps successfully\n  - for `jaeger`: `make lint test`\n\nSigned-off-by: SamyakBorkar <2022bit037@sggs.ac.in>",
          "is_bot": false,
          "headline": "Enable argument-limit linter rule (#7969)",
          "author_name": "Samyak Borkar",
          "author_login": "SamyakBorkar",
          "committed_at": "2026-06-29T05:31:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "32db9b3256fbaf09e37140cd5898f7ee250b30b7",
          "body": "….4.2 (#8863)\n\nThis PR contains the following updates:\n\n| Package | Change |\n[Age](https://docs.renovatebot.com/merge-confidence/) |\n[Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n|\n[github.com/elastic/go-elasticsearch/v9](https://redirect.github.com/elastic/go-elas\n[…]\njcmVhdGVkSW5WZXIiOiI0My4yNDIuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI0Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2c6ZGVwZW5kZW5jaWVzIl19-->\n\nSigned-off-by: Mend Renovate <bot@renovateapp.com>",
          "is_bot": false,
          "headline": "fix(deps): update module github.com/elastic/go-elasticsearch/v9 to v9…",
          "author_name": "Mend Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2026-06-29T00:32:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f6cfd7fc5adb5aaf45f3039f2bd8ac5d80ed1683",
          "body": "This PR contains the following updates:\n\n| Package | Change |\n[Age](https://docs.renovatebot.com/merge-confidence/) |\n[Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n|\n[github.com/ClickHouse/ch-go](https://redirect.github.com/ClickHouse/ch-go)\n| `v0.71.0` → `v0.73.0`\n[…]\njcmVhdGVkSW5WZXIiOiI0My4yMDkuNCIsInVwZGF0ZWRJblZlciI6IjQzLjI0Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2c6ZGVwZW5kZW5jaWVzIl19-->\n\nSigned-off-by: Mend Renovate <bot@renovateapp.com>",
          "is_bot": false,
          "headline": "fix(deps): update all clickhouse packages (#8723)",
          "author_name": "Mend Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2026-06-28T16:14:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3bcd98984260119e4662334bb5608f6b770a9cc7",
          "body": "## Which problem is this PR solving?\n- Part of #4708 (RFC 0004 Phase 2). Carved out per @yurishkuro's\nsuggestion that the `request`/ctx change land as a standalone\nrefactoring PR before the data stream client work.\n\n## Description of the changes\n- The direct-HTTP Elasticsearch client hardcoded `cont\n[…]\ns successfully: `make lint test`\n\n## AI Usage in this PR (choose one)\n\n- [x] **Moderate**: AI helped with code generation or debugging specific\nparts\n\nSigned-off-by: Me Priyank <pvonlyone29@gmail.com>",
          "is_bot": false,
          "headline": "refactor(es): Thread context.Context through the ES REST client (#8873)",
          "author_name": "Priyank Verma",
          "author_login": "Me-Priyank",
          "committed_at": "2026-06-27T14:52:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "093d9bce5a47da3f9cdc8b679f20d426e3f72e3d",
          "body": "…write path (#8833)\n\n## Which problem is this PR solving?\n- Part of #4708 (RFC 0004 Phase 2, PR 1 of 2)\n\n## Description of the changes\n- Introduces the `DataStreamRotation` index-rotation strategy\n(`WriteTarget` → data stream name, `ReadTargets` → data stream name /\noptional read alias, `WriteOpType\n[…]\n----\n\nSigned-off-by: Me Priyank <pvonlyone29@gmail.com>\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(es): Add DataStreamRotation strategy and data-stream-aware span …",
          "author_name": "Priyank Verma",
          "author_login": "Me-Priyank",
          "committed_at": "2026-06-27T02:22:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6028fb57942412f80ac6a428170e6c3c7a3191a0",
          "body": "…#8870)\n\nCloses #8869\n\nFollows up on #8868.\n\n## Summary\n\n- Rename `IndexPrefixSeparator` → `IndexSeparator`\n- Rename `Span/Service/Dependency/SamplingTemplateName` → `*IndexName` —\ntemplate creation is a marginal use case; index naming is the primary\none\n- Delete the four `*IndexBaseName` constants \n[…]\n`make fmt` — no changes\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(es): Rename index name constants, eliminate *IndexBaseName (…",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-06-26T23:33:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9fdf8c3f2d87376adca4151c9c121b0ff5895492",
          "body": "…855)\n\nThis PR contains the following updates:\n\n| Package | Change |\n[Age](https://docs.renovatebot.com/merge-confidence/) |\n[Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n|\n[github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnector](h\n[…]\njcmVhdGVkSW5WZXIiOiI0My4yNDIuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI0Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2c6ZGVwZW5kZW5jaWVzIl19-->\n\nSigned-off-by: Mend Renovate <bot@renovateapp.com>",
          "is_bot": false,
          "headline": "fix(deps): update all otel collector contrib packages to v0.155.0 (#8…",
          "author_name": "Mend Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2026-06-26T22:16:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "05a31dcffb7eec460019446c46a3428653d5459a",
          "body": "This PR contains the following updates:\n\n| Package | Change |\n[Age](https://docs.renovatebot.com/merge-confidence/) |\n[Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n|\n[github.com/cenkalti/backoff/v5](https://redirect.github.com/cenkalti/backoff)\n| `v5.0.3` → `v6.0.1\n[…]\njcmVhdGVkSW5WZXIiOiI0My4yNDIuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI0Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2c6ZGVwZW5kZW5jaWVzIl19-->\n\nSigned-off-by: Mend Renovate <bot@renovateapp.com>",
          "is_bot": false,
          "headline": "fix(deps): update module github.com/cenkalti/backoff/v5 to v6 (#8866)",
          "author_name": "Mend Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2026-06-26T22:08:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6bb6bb143c3414b7176f8b1b1d64cdfe4d87440d",
          "body": "This PR contains the following updates:\n\n| Package | Type | Update | Change |\n|---|---|---|---|\n| [actions/cache](https://redirect.github.com/actions/cache) | action |\nminor | `v5.0.1` → `v5.1.0` |\n| [actions/setup-go](https://redirect.github.com/actions/setup-go) |\naction | minor | `v6.4.0` → `v6.5\n[…]\njcmVhdGVkSW5WZXIiOiI0My4yNDIuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI0Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2c6ZGVwZW5kZW5jaWVzIl19-->\n\nSigned-off-by: Mend Renovate <bot@renovateapp.com>",
          "is_bot": false,
          "headline": "chore(deps): update github-actions deps (#8864)",
          "author_name": "Mend Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2026-06-26T22:06:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6a26499b7d4dd4522daa71e785d3a9a8b48afa2d",
          "body": "…x param from Resolved*Rotation (#8868)\n\nCloses #8867\n\n## Summary\n\n- Moves `SpanTemplateName`, `ServiceTemplateName`,\n`DependencyTemplateName`, `SamplingTemplateName` and the four\n`*IndexBaseName` constants from `internal/storage/elasticsearch/indices`\ninto `internal/storage/elasticsearch/config`.\n-\n[…]\n`make fmt` — no changes\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(es): Move index name constants to config package, drop prefi…",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-06-26T21:15:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "632d9df29c1c406dac3aefdba61319a87e0b0022",
          "body": "This PR contains the following updates:\n\n| Package | Change |\n[Age](https://docs.renovatebot.com/merge-confidence/) |\n[Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n|\n[go.opentelemetry.io/collector/client](https://redirect.github.com/open-telemetry/opentelemetry-col\n[…]\njcmVhdGVkSW5WZXIiOiI0My4yNDIuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI0Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2c6ZGVwZW5kZW5jaWVzIl19-->\n\nSigned-off-by: Mend Renovate <bot@renovateapp.com>",
          "is_bot": false,
          "headline": "fix(deps): update all otel collector packages (#8860)",
          "author_name": "Mend Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2026-06-26T18:54:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "515d8055d39a00eb5f094ca990c74277c5c16f67",
          "body": "## Which problem is this PR solving?\n\nThe ES v2 write path computes `parentSpanID` from the OTEL span but\nnever writes it to the `parentSpanID` field in the ES document (the\nfield was marked \"deprecated\"). This forces read-side code (e.g. the\nnative trace summaries in #8812) to use expensive `top_hi\n[…]\nssfully: `make lint test`\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(es): Populate parentSpanID field on write path (#8859)",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-06-26T16:09:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fdb5760d8fa1daab8d8c97401a519ff59ba3e313",
          "body": "## Which problem is this PR solving?\n- Resolves #8805\n\n## Description of the changes\n- `ComputeCriticalPathFromTraces`\n(`cmd/jaeger/internal/extension/jaegermcp/internal/criticalpath`)\ntreated an empty result slice as a failure. A valid trace can\nlegitimately produce an empty critical path (e.g. a s\n[…]\n-----\n\nSigned-off-by: Me Priyank <pvonlyone29@gmail.com>\nSigned-off-by: Priyank Verma <pvonlyone29@gmail.com>\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix(mcp): Don't error on empty critical path (#8806)",
          "author_name": "Priyank Verma",
          "author_login": "Me-Priyank",
          "committed_at": "2026-06-26T15:03:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "05cf5508bdc5998f0460295c18b35e1b8aff9955",
          "body": "…(#8815)\n\n## Which problem is this PR solving?\n- Towards: #8691 \n\n## Description of the changes\n- When jaeger is stopped in between the test, http clients for\nwriting/reading phase still remain and so as their go routines causing\nleaks. To fix them, idle connections are closed on cleanup.\n\n## How wa\n[…]\ntions)\n- [ ] **Moderate**: AI helped with code generation or debugging specific\nparts\n- [ ] **Heavy**: AI generated most or all of the code changes\n\nSigned-off-by: Manik Mehta <mehtamanik96@gmail.com>",
          "is_bot": false,
          "headline": "[chore] Close idle connections for http clients in integration tests …",
          "author_name": "Manik Mehta",
          "author_login": "Manik2708",
          "committed_at": "2026-06-26T14:09:21Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7caca72f45ef3c8057d22bb24b6bdbcaa572e931",
          "body": "…(#8842)\n\n## Summary\n\n- Extracts `NewClient()` and all client-construction helpers from\n`internal/storage/elasticsearch/config` into a new\n`internal/storage/elasticsearch/clientbuilder` package\n- Makes the `config` package a pure data package with no imports of\n`olivere/elastic`, `go-elasticsearch/v\n[…]\nw structure\n\nCloses #8841\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(es): Extract client construction into clientbuilder package …",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-06-26T00:53:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7019bbcc9c4a5bab89c38e687cb1ca7b749624ff",
          "body": "This PR contains the following updates:\n\n| Package | Type | Update | Change |\n[Age](https://docs.renovatebot.com/merge-confidence/) |\n[Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|---|---|\n| [golang.org/x/exp](https://pkg.go.dev/golang.org/x/exp) | require |\ndigest \n[…]\njcmVhdGVkSW5WZXIiOiI0My4yMDYuMSIsInVwZGF0ZWRJblZlciI6IjQzLjI0Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2c6ZGVwZW5kZW5jaWVzIl19-->\n\nSigned-off-by: Mend Renovate <bot@renovateapp.com>",
          "is_bot": false,
          "headline": "fix(deps): update all golang.org/x packages (#8682)",
          "author_name": "Mend Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2026-06-25T22:21:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "54c6d6dfcc15aca71a9f4d132cae5d749e2712fd",
          "body": "…ns (#8835)\n\n## Which problem is this PR solving?\n- Towards #8831 \n\nOCB's generated `main.go` calls vanilla `otelcol.NewCommand`, skipping\n`cmd/jaeger/main.go` entirely, so custom distributions lose all\nJaeger-specific subcommands and the embedded all-in-one default config.\nThis PR exports the CLI b\n[…]\nest`\n\n## AI Usage in this PR \n- [x] **Moderate**: AI helped with code generation or debugging specific\nparts\n\n---------\n\nSigned-off-by: iammdzaidalam <161572905+iammdzaidalam@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat: Export reusable jaegercli.NewCommand for custom OCB distributio…",
          "author_name": "Zaid",
          "author_login": "iammdzaidalam",
          "committed_at": "2026-06-25T14:56:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dd5381f8ec7a298095670324122fdcdbe0b7474c",
          "body": "## Description\nThe `jaegermcp` extension started an HTTP server goroutine in `Start()` \nwith no lifecycle synchronization. `Shutdown()` called \n`httpServer.Shutdown(ctx)` but returned immediately without waiting for \nthe goroutine to finish, creating a race condition where the process \ncould exit wh\n[…]\n\n## Checklist\n- [x] I have read CONTRIBUTING.md\n- [x] Commit is signed off (DCO)\n- [x] Change is consistent with existing patterns in the codebase\n\nSigned-off-by: g-k-s-03 <govindsingh97704@gmail.com>",
          "is_bot": false,
          "headline": "fix(jaegermcp): wait for server goroutine to exit on Shutdown (#8852)",
          "author_name": "govind singh",
          "author_login": "g-k-s-03",
          "committed_at": "2026-06-25T14:48:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "458909045711cc379f0ca507a489aa1cd3aa2cca",
          "body": "## Which problem is this PR solving?\n\n- Fixes #8843\n\nThe `get_span_details` MCP tool validates `trace_id` via `parseTraceID`\nbut passes the `span_ids` array through unchecked. A malformed `span_id`\n(wrong length or non-hex, e.g. `\"abc\"`) is never caught at the boundary,\nso `buildQuery` builds and ru\n[…]\nmd\n- [x] I have signed all commits\n- [x] I have added unit tests for the new functionality\n- [x] I have run lint and test steps successfully\n\n---------\n\nSigned-off-by: truffle <truffleagent@gmail.com>",
          "is_bot": false,
          "headline": "fix(mcp): Validate span_id format before querying backend (#8845)",
          "author_name": "Truffle",
          "author_login": "truffle-dev",
          "committed_at": "2026-06-25T02:41:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "10a149c2325171a6988ad1a4d392de2192d66a77",
          "body": "…design (#8840)\n\n## Summary\n\nIntroduces a new `max_trace_duration` configuration option (default:\n**24h**) that controls how far beyond the requested time window the\nES/OS reader looks for spans belonging to a trace.\n\n### 🛑 Breaking change\n\nPreviously, `FindTraces` used a hardcoded **±1h** padding o\n[…]\n && make test` — all pass\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(es): Add configurable max_trace_duration and improve time-range …",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-06-24T04:28:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "51ae927fd83ca45cfbe4cb0657f7f45d73efc888",
          "body": "….go (#8839)\n\n## Summary\n- Renames rotation implementation files in\n`internal/storage/elasticsearch/indices/` for better discoverability\n- Concrete implementations: `aliased.go` → `rotation_aliased.go`,\n`periodic.go` → `rotation_periodic.go`\n- Decorator implementations: `logging.go` →\n`rotation_deco\n[…]\n renames, no code changes\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(es): Rename rotation implementation files to rotation_{name}…",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-06-24T03:39:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "73ac0e6d903d246fa6e571dc8d6d67428682be05",
          "body": "…l (#8822)\n\n## Which problem is this PR solving?\n\n- The integration test harness has no way to stop a binary mid-test and\nstart a different one, which is needed for backward compatibility\ntesting (start old binary, write data, stop it, start new binary, verify\nreads). This PR adds that capability as\n[…]\nIDELINES.md#ai-usage-policy).\n- [x] **Light**: AI provided minor assistance (formatting, simple\nsuggestions)\n\n---------\n\nSigned-off-by: iammdzaidalam <161572905+iammdzaidalam@users.noreply.github.com>",
          "is_bot": false,
          "headline": "[chore]: Add Binary.Stop() and BinaryPath for mid-test process contro…",
          "author_name": "Zaid",
          "author_login": "iammdzaidalam",
          "committed_at": "2026-06-24T03:16:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d17b353ec767e6f9e834d85ee678ab61c7da4cca",
          "body": "## Summary\n\n- Add e2e tests for `manual_rollover` and `auto_rollover` rotation\nstrategies on both ES and OpenSearch\n- Create config YAML variants with unique `index_prefix` values to avoid\ncollision with existing tests\n- Add setup helpers that use `go run ./cmd/es-rollover init` to create\ninitial in\n[…]\n ES 8.x, 9.x, OS 2.x, 3.x\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(es): Add e2e integration tests for all rotation strategies (#8838)",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-06-23T22:01:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "06e2a7cf1708daaac418651937fb7f7cc5687a28",
          "body": "… tests (#8756)\n\n## Which problem is this PR solving?\n- Resolves #8741\n\n## Description of the changes\n- Refactored `TestDependencyReader_GetDependencies` and\n`TestDowngradedDependencyReader_GetDependencies` in\n[depreader_test.go](file:///d:/OpenSource/jaeger/internal/storage/v2/v1adapter/depreader_t\n[…]\ntion or debugging specific\nparts\n- [ ] **Heavy**: AI generated most or all of the code changes\n\nSigned-off-by: kavyarathod05 <kavya.rathod@vwo.com>\nCo-authored-by: kavyarathod05 <kavya.rathod@vwo.com>",
          "is_bot": false,
          "headline": "test(v1adapter): fix mock expectation validation in dependency reader…",
          "author_name": "kavya",
          "author_login": "kavyarathod05",
          "committed_at": "2026-06-23T21:12:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d5e3be86da0560d6fa14c9bfda860270ef600715",
          "body": "…(#8836)\n\n## Summary\n\n- Add OpenSearch 3.x and Elasticsearch 9.x `direct` mode to CI matrix\n- Fix ISM (Index State Management) rollover support for OpenSearch:\n  - Route ILM client to `_plugins/_ism/policies/` endpoint on OpenSearch\n  - Fix version parsing to handle multi-digit major versions\n  - Ad\n[…]\ndirect\npass\n\nCloses #8829\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(es): Improve ES/OS integration test CI coverage and reduce noise …",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-06-23T17:03:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3084f6a4c085b480f80dffae5250ece7107f5d49",
          "body": "…rsion (#8830)\n\n## Summary\n\nFixes #8829 — OpenSearch index templates were emitting the\nElasticsearch-specific `lifecycle` block (which OpenSearch silently\nignores), causing ISM rollover to fail with \"Missing rollover_alias\nindex setting\".\n\n- When `UseILM` is enabled and the backend is OpenSearch, in\n[…]\npenSearch 3.7.0\ncontainer\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(es): Emit OpenSearch ISM rollover_alias and consolidate BackendVe…",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-06-23T15:08:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d5c3dd6393b9f87a12b11330eed135cdcdbcb550",
          "body": "…8828)\n\n## Summary\n\n- Add base64 trace ID parsing to `/api/traces/{traceID}` (v1) and\n`/api/v3/traces/{trace_id}` (v3) HTTP endpoints\n- Parser tries hex first (backward compatible), then falls back to\nbase64 (standard, URL-safe, with/without padding)\n- Enables Jaeger UI to pass base64 trace IDs dire\n[…]\nses for affected packages\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(query): Accept base64-encoded trace IDs in HTTP API endpoints (#…",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-06-23T02:08:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d5e2ccd4705e1ae200baf7438c09a64ded5dd78e",
          "body": "Fixes several spelling typos in README files as identified in #8773:\n'verions' → 'versions', 'Exension' → 'Extension' (two files), and\n'implementaion' → 'implementation'.\n\n---\n\n_This contribution was AI-assisted (Claude). It's a small targeted fix —\nhappy to revise, or just close if it's not a direction you want. No\noffense taken._\n\nSigned-off-by: Maxwellm34 <maxwellmcinnis123@gmail.com>",
          "is_bot": false,
          "headline": "docs: fix typos in README files (#8786)",
          "author_name": "Maxwell McInnis",
          "author_login": "MaxwellM34",
          "committed_at": "2026-06-22T05:23:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dff3fef7e1711192fc3078577b5a22e135212ab6",
          "body": "… deprecation (#8823)\n\n## Summary\n\nPhase 1b of [RFC\n0004](https://github.com/jaegertracing/jaeger/blob/main/docs/rfc/0004-elasticsearch-data-streams.md)\n— introduces the new `rotation` config structure for ES/OpenSearch index\nmanagement while preserving full backward compatibility with existing\nflag\n[…]\nnt`, `make test` all pass\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(es): Introduce index rotation config schema with legacy flag…",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-06-22T04:49:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "abd8b22e04ea8022263cc8f8468e49f1050adcbf",
          "body": "## Which problem is this PR solving?\n- Resolves #8748\n\n## Description of the changes\n- Removed `fswatcher` from `FactoryBase` — it was watching the ES\npassword file for changes and swapping the entire client on each update,\nwhich required a background goroutine\n- The existing `auth.TokenProvider` ca\n[…]\n-by: iammdzaidalam <161572905+iammdzaidalam@users.noreply.github.com>\nSigned-off-by: Yuri Shkuro <yurishkuro@users.noreply.github.com>\nCo-authored-by: Yuri Shkuro <yurishkuro@users.noreply.github.com>",
          "is_bot": false,
          "headline": "chore(storage): remove fswatcher from Elasticsearch factory (#8750)",
          "author_name": "Zaid",
          "author_login": "iammdzaidalam",
          "committed_at": "2026-06-22T02:37:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "353795611f820ef9de70a7f2e2d9018a82d66ea4",
          "body": "## Summary\n\n- Adds RFC 0004 proposing Data Streams as a fourth index management\nstrategy for Jaeger's ES/OpenSearch span storage\n- Covers naming conventions, composable index templates, write/read path\nchanges, lifecycle policy management, configuration (single\n`index_management` enum replacing bool\n[…]\nW]` items in the document\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "RFC 0004: Elasticsearch/OpenSearch Data Streams for span storage (#8804)",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-06-22T02:30:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "daaf2f4c2f39bb082038d96e27814427c2892b95",
          "body": "…ace (#8826)\n\n## Summary\n- Migrates the dependency store, metric store, and sampling store to use\nthe `Rotation` interface introduced in #8808\n- Removes legacy `TimeRangeIndexFn`-based index computation and\n`useReadWriteAliases` boolean branching from these stores\n- All ES storage components now use\n[…]\nby: Yuri Shkuro <yurishkuro@users.noreply.github.com>\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "refactor(es): Migrate depstore and metricstore to use Rotation interf…",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-06-22T01:51:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "126e568c9701c2f2325b918800932d37f9fce515",
          "body": "…` in integration tests (#8814)\n\n## Which problem is this PR solving?\n- Towards: #8691 \n\n## Description of the changes\n- The trace id of `default.json` is clashing with `example.json` which\nneeds to fixed before introducing backward compatibility tests\n\n## How was this change tested?\n- Integration t\n[…]\ntions)\n- [ ] **Moderate**: AI helped with code generation or debugging specific\nparts\n- [ ] **Heavy**: AI generated most or all of the code changes\n\nSigned-off-by: Manik Mehta <mehtamanik96@gmail.com>",
          "is_bot": false,
          "headline": "[chore] Update trace id  in `defaul.json` clashing with `example.json…",
          "author_name": "Manik Mehta",
          "author_login": "Manik2708",
          "committed_at": "2026-06-21T19:22:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "788465472aef7b45488d56eb8d855189fa6a68b6",
          "body": "## Summary\n\n- Introduces a `Rotation` interface in\n`internal/storage/elasticsearch/indices/` with `WriteTarget(time.Time)\nstring`, `ReadTargets(start, end time.Time) []string`, and\n`WriteOpType() WriteOpType` methods\n- Implements `PeriodicRotation` (time-based indices), `AliasedRotation`\n(rollover a\n[…]\ntest` passes (3594 tests)\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(es): Introduce Rotation interface for index management (#8808)",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-06-20T15:51:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ced2c1c984a3ba18d39ba3f06e81427de315f44f",
          "body": "Fixes #8798\n\n## Summary\n- Add a `wait_for_daemonset` helper to the OTel demo deploy script.\n- Wait for `DaemonSet/otel-collector-agent` instead of\n`Deployment/otel-collector` after the OTel Helm release upgrades.\n\n## Why\nPost-merge manual deploy from `main` failed after Helm successfully\nupgraded Op\n[…]\nr-agent` exists and\n`Deployment/otel-collector` does not.\n- `make fmt`\n- `make lint`\n- `make test`\n\nSigned-off-by: Jonah Kowall <jonahk@spacelift.io>\nCo-authored-by: Jonah Kowall <jonahk@spacelift.io>",
          "is_bot": false,
          "headline": "Fix OTel demo collector rollout and receiver bind (#8803)",
          "author_name": "Jonah Kowall",
          "author_login": "jkowall",
          "committed_at": "2026-06-18T21:46:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "594df00b1181228f16d5578142fc08b76dcf07be",
          "body": "Fixes #8798\n\n## Summary\n- Remove `--force` from OKE demo Helm upgrades so Helm v4 can roll the\ndemo forward.\n- Keep normal upgrade mode as `helm upgrade --install --wait` for Jaeger\nimage/tag roll-forward.\n- Add workflow controls for selecting the original OCI demo, the OTel\ndemo, or both demo stack\n[…]\n`, `health_check`, and no rendered\n`hostPort`.\n- `make fmt`\n- `make lint`\n- `make test`\n\n---------\n\nSigned-off-by: Jonah Kowall <jonahk@spacelift.io>\nCo-authored-by: Jonah Kowall <jonahk@spacelift.io>",
          "is_bot": false,
          "headline": "Fix OKE demo upgrades and OTel stack rollout (#8799)",
          "author_name": "Jonah Kowall",
          "author_login": "jkowall",
          "committed_at": "2026-06-18T18:37:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8528286209b3bc6b57c2e8b64172038828272ab8",
          "body": "This PR contains the following updates:\n\n| Package | Change |\n[Age](https://docs.renovatebot.com/merge-confidence/) |\n[Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n|\n[go.opentelemetry.io/collector/config/confighttp/xconfighttp](https://redirect.github.com/open-tele\n[…]\njcmVhdGVkSW5WZXIiOiI0My4yMTkuMCIsInVwZGF0ZWRJblZlciI6IjQzLjIzMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2c6ZGVwZW5kZW5jaWVzIl19-->\n\nSigned-off-by: Mend Renovate <bot@renovateapp.com>",
          "is_bot": false,
          "headline": "fix(deps): update all otel collector packages (#8793)",
          "author_name": "Mend Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2026-06-18T14:54:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "595759a0ac5ba8eae3ae59d120bfb4d24880f602",
          "body": "## Summary\n\n- Adds public facade packages (`components/`) that expose component\n`NewFactory` functions, enabling users to build custom Jaeger\ndistributions using\n[ocb](https://github.com/open-telemetry/opentelemetry-collector/tree/main/cmd/builder)\n(OpenTelemetry Collector Builder)\n- Includes a refe\n[…]\ncises all facade packages\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Support custom Jaeger distributions via ocb (#8800)",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-06-18T04:21:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "11b08c08b216d03e52f1d8df04f071ddf57091c3",
          "body": "Fixes #8796\n\n## Summary\n- Read the Node.js version from the active Jaeger UI checkout,\nrespecting `JAEGER_UI_DIR` for snapshot builds.\n- Enable Corepack after `actions/setup-node` so the UI rebuild uses the\nnpm version declared by the checked-out UI package metadata.\n\n## Why\nMain currently fails to \n[…]\n/storage/v2/grpc`; the package passed when rerun\ndirectly, and the second full `make test` passed.\n\nSigned-off-by: Jonah Kowall <jonahk@spacelift.io>\nCo-authored-by: Jonah Kowall <jonahk@spacelift.io>",
          "is_bot": false,
          "headline": "Enable Corepack for snapshot UI builds (#8797)",
          "author_name": "Jonah Kowall",
          "author_login": "jkowall",
          "committed_at": "2026-06-17T14:39:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7c9b2f6ef08a0cae61aa64f67ffb7618798e4d9d",
          "body": "This PR contains the following updates:\n\n| Package | Update | Change |\n|---|---|---|\n|\n[opensearchproject/opensearch](https://redirect.github.com/opensearch-project/OpenSearch)\n| minor | `3.6.0` → `3.7.0` |\n\n---\n\n### Release Notes\n\n<details>\n<summary>opensearch-project/OpenSearch\n(opensearchproject/\n[…]\njcmVhdGVkSW5WZXIiOiI0My4yMTkuMCIsInVwZGF0ZWRJblZlciI6IjQzLjIxOS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2c6ZGVwZW5kZW5jaWVzIl19-->\n\nSigned-off-by: Mend Renovate <bot@renovateapp.com>",
          "is_bot": false,
          "headline": "chore(deps): update opensearch 3.x docker images to v3.7.0 (#8795)",
          "author_name": "Mend Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2026-06-17T03:18:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "da8e9650ad8a1e4f3396d38f1756c0faf87be4ea",
          "body": "This PR contains the following updates:\n\n| Package | Type | Update | Change |\n|---|---|---|---|\n| alpine | final | minor | `3.23.4` → `3.24.1` |\n| alpine | stage | minor | `3.23.4` → `3.24.1` |\n\n---\n\n### Configuration\n\n📅 **Schedule**: (UTC)\n\n- Branch creation\n  - \"on the first day of the month\"\n- Au\n[…]\njcmVhdGVkSW5WZXIiOiI0My4yMTkuMCIsInVwZGF0ZWRJblZlciI6IjQzLjIxOS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2c6ZGVwZW5kZW5jaWVzIl19-->\n\nSigned-off-by: Mend Renovate <bot@renovateapp.com>",
          "is_bot": false,
          "headline": "chore(deps): update alpine docker tag to v3.24.1 (#8794)",
          "author_name": "Mend Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2026-06-17T03:18:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6e1bc4d640abad590bb7b696bb8e28564744335e",
          "body": "This PR contains the following updates:\n\n| Package | Update | Change |\n|---|---|---|\n| [prom/prometheus](https://redirect.github.com/prometheus/prometheus) |\nminor | `v3.11.1` → `v3.12.0` |\n\n---\n\n> [!WARNING]\n> Some dependencies could not be looked up. Check the [Dependency\nDashboard](../issues/5586\n[…]\njcmVhdGVkSW5WZXIiOiI0My4yMDkuNCIsInVwZGF0ZWRJblZlciI6IjQzLjIxOS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2c6ZGVwZW5kZW5jaWVzIl19-->\n\nSigned-off-by: Mend Renovate <bot@renovateapp.com>",
          "is_bot": false,
          "headline": "chore(deps): update prom/prometheus docker tag to v3.12.0 (#8722)",
          "author_name": "Mend Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2026-06-17T03:01:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "50341526b781fa111ad1e78ce826acde49a8c346",
          "body": "…759)\n\nThis PR contains the following updates:\n\n| Package | Change |\n[Age](https://docs.renovatebot.com/merge-confidence/) |\n[Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n|\n[github.com/open-telemetry/opentelemetry-collector-contrib/cmd/schemagen](https://redirect.g\n[…]\njcmVhdGVkSW5WZXIiOiI0My4yMTkuMCIsInVwZGF0ZWRJblZlciI6IjQzLjIxOS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2c6ZGVwZW5kZW5jaWVzIl19-->\n\nSigned-off-by: Mend Renovate <bot@renovateapp.com>",
          "is_bot": false,
          "headline": "fix(deps): update all otel collector contrib packages to v0.154.0 (#8…",
          "author_name": "Mend Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2026-06-17T01:55:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0c157fe366c53118b69e02e1986ac5fd2272da75",
          "body": "## Summary\n\n- make manual OKE demo workflow dispatch use upgrade mode by default\n- add an explicit `deploy_mode` input so clean reinstalls are opt-in\n- replace the unbounded clean-mode Helm deletion loop with `helm\nuninstall --wait --timeout` and release diagnostics on failure\n\n## Root cause\n\nThe ma\n[…]\nopriate\nscript`. The public demo endpoints were still returning 200 after\ncancellation.\n\n---------\n\nSigned-off-by: Jonah Kowall <jonahk@spacelift.io>\nCo-authored-by: Jonah Kowall <jonahk@spacelift.io>",
          "is_bot": false,
          "headline": "[codex] Bound OKE demo clean deploys (#8791)",
          "author_name": "Jonah Kowall",
          "author_login": "jkowall",
          "committed_at": "2026-06-17T01:50:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "288a4b4799b5a2e8eaf6d14d0abdafe64d54f192",
          "body": "## Summary\n\n- deploy the OKE demo from `jaeger-snapshot` and\n`example-hotrod-snapshot` images instead of release image repositories\n- default the deployed snapshot tag to the workflow SHA, with a manual\noverride for workflow dispatch\n- make the deploy job wait for Helm releases, verify Kubernetes\nro\n[…]\ngithub/workflows/ci-deploy-demo.yml`\n- `git diff --check`\n- `make fmt`\n- `make lint`\n- `make test`\n\nSigned-off-by: Jonah Kowall <jonahk@spacelift.io>\nCo-authored-by: Jonah Kowall <jonahk@spacelift.io>",
          "is_bot": false,
          "headline": "[codex] Deploy OKE demo from snapshot images (#8789)",
          "author_name": "Jonah Kowall",
          "author_login": "jkowall",
          "committed_at": "2026-06-16T15:43:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "18f6e25e04da8ccd7a9322731ae76b59563f4bd4",
          "body": "## Summary\n- Skip release-check (git fetch/describe) when `JAEGER_UI_DIR` is a\ncustom path, since the intent is to force a source build from that tree.\n- Have `rebuild-ui` automatically invoke `build-ui` to copy gzipped\nassets into the Go source tree, eliminating the need for a separate\nstep.\n\n## Te\n[…]\n release-check\nstill works as before\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(build): Fix rebuild-ui with custom JAEGER_UI_DIR (#8787)",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-06-16T02:02:47Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6e10b96a759c0240e76e5ec21a3b48275f130e13",
          "body": "## Which problem is this PR solving?\n- Part of #7595 (Part 1 of 2: gRPC Handler)\n- The API v3 QueryService protobuf definition includes a\n`GetDependencies` RPC, but it was never actually implemented in the V3\n`Handler`. As a result, any client attempting to query service\ndependencies via the V3 gRPC\n[…]\nith code generation or debugging specific\nparts\n\n---------\n\nSigned-off-by: harsh6921 <pachorihimanshu0@gmail.com>\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Yuri Shkuro <github@ysh.us>",
          "is_bot": false,
          "headline": "feat(apiv3): Implement GetDependencies gRPC RPC handler (#8745)",
          "author_name": "Harsh-6291",
          "author_login": "Harsh-6291",
          "committed_at": "2026-06-15T16:28:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a1691354a80130013d017792463a06c880018fc3",
          "body": "Resolves #5888\nContributes to #8669\n\nAdded SLSA Level 3 provenance generation to the release pipeline to\nsatisfy OpenSSF Scorecard requirements and improve artifact\nverification.\n\n- Hooked into `ci-release.yml` to generate a SHA256 checksum of all\n`.tar.gz` and `.zip` artifacts in the `deploy/` dire\n[…]\nbugging specific\nparts\n- [ ] **Heavy**: AI generated most or all of the code changes\n\nSigned-off-by: Victor Chidera Obiezue <obiezuechidera@gmail.com>\nCo-authored-by: Jonah Kowall <jkowall@kowall.net>",
          "is_bot": false,
          "headline": "chore(ci): add SLSA provenance to release workflow (#8686)",
          "author_name": "victor   obi",
          "author_login": "vic-comm",
          "committed_at": "2026-06-15T15:46:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "592490ed4d838134ada961cab7b8f2149364a0cd",
          "body": "## Summary\n\nFixes #8777.\n\n- Adds `scripts/utils/retry.sh` — a generic exponential-backoff retry\nwrapper (default 3 attempts, 15s → 30s → 60s; `ATTEMPTS` and `BACKOFF`\nenv-overridable).\n- Migrates every CI docker pull site (12 files) to wrap its pull with\nthe new helper. For compose-based sites, the \n[…]\n\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nSigned-off-by: Yuri Shkuro <yurishkuro@users.noreply.github.com>\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "ci(retry): Add retry wrapper for transient docker image pulls (#8779)",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-06-13T21:30:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e0b90521b3bd8ce3ff0c11bb41ef2e540328f4c5",
          "body": "## Which problem is this PR solving?\n- Part of https://github.com/jaegertracing/jaeger-ui/issues/1307\n\n## Description of the changes\n- Add OTLP proxy config for UI self tracing\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>",
          "is_bot": false,
          "headline": "Add OTLP proxy config for UI self tracing (#8778)",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-06-13T19:23:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8eb969d487db7451a39a71c9a38d68c80a6a9596",
          "body": "This PR contains the following updates:\n\n| Update | Change |\n|---|---|\n| lockFileMaintenance | All locks refreshed |\n\n---\n\n> [!WARNING]\n> Some dependencies could not be looked up. Check the [Dependency\nDashboard](../issues/5586) for more information.\n\n🔧 This Pull Request updates lock files to use th\n[…]\njcmVhdGVkSW5WZXIiOiI0My4yMDkuNCIsInVwZGF0ZWRJblZlciI6IjQzLjIwOS40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2c6ZGVwZW5kZW5jaWVzIl19-->\n\nSigned-off-by: Mend Renovate <bot@renovateapp.com>",
          "is_bot": false,
          "headline": "chore(deps): lock file maintenance (#8725)",
          "author_name": "Mend Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2026-06-12T00:11:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "da257e41a96c4dbad98f83f85a60be6bd4e334f3",
          "body": "This PR contains the following updates:\n\n| Package | Type | Update | Change |\n|---|---|---|---|\n| cassandra | final | digest | `2c6576f` → `755db00` |\n\n---\n\n> [!WARNING]\n> Some dependencies could not be looked up. Check the [Dependency\nDashboard](../issues/5586) for more information.\n\n---\n\n### Confi\n[…]\njcmVhdGVkSW5WZXIiOiI0My4yMDIuMSIsInVwZGF0ZWRJblZlciI6IjQzLjIxOS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2c6ZGVwZW5kZW5jaWVzIl19-->\n\nSigned-off-by: Mend Renovate <bot@renovateapp.com>",
          "is_bot": false,
          "headline": "chore(deps): update cassandra:5.0.8 docker digest to 755db00 (#8678)",
          "author_name": "Mend Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2026-06-12T00:09:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "260e647e9f46f070a7296bdfd56d4886d8da0544",
          "body": "## Summary\n\n- documents `Pinned-Dependencies` as an accepted OpenSSF Scorecard\nexception\n- explains why Jaeger keeps dynamic Docker base image args in component\nDockerfiles\n- links the exception back to #8671\n\n## Rationale\n\nThe release build path injects `base_image` and `debug_image` through\ncentra\n[…]\nch component Dockerfile\nwould add drift risk without improving the release build.\n\n## Validation\n\n- `make fmt`\n- `make lint`\n- `make test`\n\nRefs #8671\n\nSigned-off-by: Jonah Kowall <jkowall@kowall.net>",
          "is_bot": false,
          "headline": "docs(security): Document pinned dependency exception (#8716)",
          "author_name": "Jonah Kowall",
          "author_login": "jkowall",
          "committed_at": "2026-06-10T21:05:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e166869dcce3fbeedf4e497e1d147edf67fa948f",
          "body": "…8753)",
          "is_bot": false,
          "headline": "fix(jptrace): Tolerate non-slice warnings attribute in AddWarnings (#…",
          "author_name": "Truffle",
          "author_login": "truffle-dev",
          "committed_at": "2026-06-10T16:47:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "03581b76485c640df89dd05ff65c69392f575479",
          "body": "…730)\n\n## Which problem is this PR solving?\nFollow-up to #8711 per @yurishkuro's post-merge feedback.\n\n## Description of the changes\n- Cleaned up stale v1/v2 references from comments in `config.go`\n- Removed the dead flag path (`AddFlags`, `InitFromViper`) and helpers\nthat only served it (`parseKV`,\n[…]\nUsage in this PR (choose one)\n- [x] **Moderate**: AI helped with code generation or debugging specific\nparts\n\n---------\n\nSigned-off-by: iammdzaidalam <161572905+iammdzaidalam@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix(prometheus): remove dead v1 flag path and stale v1 references (#8…",
          "author_name": "Zaid",
          "author_login": "iammdzaidalam",
          "committed_at": "2026-06-09T15:19:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5271b013a5b89fa5a5943903ec4f02acab7ff2c2",
          "body": null,
          "is_bot": false,
          "headline": "[codex] fix(ci): Pin Python dependencies by hash (#8708)",
          "author_name": "Jonah Kowall",
          "author_login": "jkowall",
          "committed_at": "2026-06-09T13:50:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9495d4c613dd1bd15cd491d2d52c66f307ccced5",
          "body": "## Which problem is this PR solving?\n- Closes #8739.\n\nThe Jaeger SPA wants to submit browser-side spans (page-load\ninstrumentation, AI-chat telemetry, whatever). Browsers can only POST to\nthe same origin without a CORS preflight, and the OTel-collector OTLP\nHTTP receiver listens on a different port \n[…]\nage in this PR (choose one)\n- [x] **Heavy**: AI generated most or all of the code changes\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(query): Support OTLP export from Jaeger UI without CORS (#8740)",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-06-08T18:01:50Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ba84b10fe10478d4c9f96cbe6ef9ee911653ce96",
          "body": "## Which problem is this PR solving?\nThe RFC's status header still said \\\"Draft\\\" and the free-form\nimplementation note only covered the §4.1 capability work. Several RFC\nsections have since shipped — most recently the Gemini launcher in #8732\n— and the doc should reflect that.\n\n## Description of th\n[…]\nt steps successfully: \\`make lint test\\` —\nN/A, doc-only.\n\n## AI Usage in this PR (choose one)\n- [x] **Heavy**: AI generated most or all of the code changes\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>",
          "is_bot": false,
          "headline": "docs(rfc): Reflect implementation status of RFC 0003 (#8736)",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-06-08T03:25:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dab0bc1dd133dea187671a2b1784798a83b1ec35",
          "body": "…car (#8732)\n\n## Which problem is this PR solving?\n- Closes #8731.\n- Implements RFC 0003 §4.2 / §4.3 for the Gemini reference sidecar.\n\nAfter #8727 landed, the chat-surface gate is fully backend-driven —\noperators no longer touch `config-ui.json`. What's left of the local\nsetup friction is \"two term\n[…]\nhub.com/jaegertracing/jaeger/blob/main/CONTRIBUTING_GUIDELINES.md#ai-usage-policy).\n- [x] **Heavy**: AI generated most or all of the code changes\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>",
          "is_bot": false,
          "headline": "feat(scripts): Add make run-ai-gemini launcher for the Gemini AI side…",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-06-08T03:08:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "46bbe203725c1318e884814d25b7c16821b91fb5",
          "body": "…8735)\n\n## Which problem is this PR solving?\n- Closes #8734.\n\nOperators running the launcher (#8732) reported a steady drip of:\n\n```\nINFO connection closed cause=\"read tcp [::1]:...->[::1]:16688: use of closed network connection\"\n```\n\n— one line per AI health-check cycle. The line comes from the acp\n[…]\nve run lint and test steps successfully: `make lint test`\n\n## AI Usage in this PR (choose one)\n- [x] **Heavy**: AI generated most or all of the code changes\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>",
          "is_bot": false,
          "headline": "fix(aihealth): Silence ACP SDK's per-cycle \"connection closed\" log (#…",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-06-08T03:03:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ea86f511c76888a052fde8905e4de1493a51d40b",
          "body": "…… (#8727)\n\n## Which problem is this PR solving?\n- Closes #8726\n- Builds on #8728 (which landed the `jaegerai/aihealth` package and RFC\n0003 in isolation).\n- Follows up jaegertracing/jaeger-ui#4034: the UI now drives the chat\nsurface from `backendCapabilities.aiAssistant`, which the backend wasn't\nw\n[…]\nhub.com/jaegertracing/jaeger/blob/main/CONTRIBUTING_GUIDELINES.md#ai-usage-policy).\n- [x] **Heavy**: AI generated most or all of the code changes\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>",
          "is_bot": false,
          "headline": "feat(query): Add backend-derived AI assistant capability with livenes…",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-06-08T01:56:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bd16d08c685c7785e056ffb38d2118a14f031987",
          "body": "…r + RFC 0003 (#8728)\n\n## Which problem is this PR solving?\n- Part of #8726.\n- Lays the foundation for the backend-derived\n`backendCapabilities.aiAssistant` flag introduced UI-side in\njaegertracing/jaeger-ui#4034.\n\n## Description of the changes\nTwo self-contained additions; nothing else changes.\n\n- \n[…]\nhub.com/jaegertracing/jaeger/blob/main/CONTRIBUTING_GUIDELINES.md#ai-usage-policy).\n- [x] **Heavy**: AI generated most or all of the code changes\n\n---------\n\nSigned-off-by: Yuri Shkuro <github@ysh.us>",
          "is_bot": false,
          "headline": "feat(aihealth): Add periodic health-checker package for the AI sideca…",
          "author_name": "Yuri Shkuro",
          "author_login": "yurishkuro",
          "committed_at": "2026-06-07T22:27:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "04ed1651bd762daf30e36fdac836f459016f426c",
          "body": "This PR contains the following updates:\n\n| Package | Update | Change |\n|---|---|---|\n| cr.jaegertracing.io/jaegertracing/jaeger | minor | `2.18.0` → `2.19.0`\n|\n| cr.jaegertracing.io/jaegertracing/jaeger-tracegen | minor | `2.18.0` →\n`2.19.0` |\n\n---\n\n> [!WARNING]\n> Some dependencies could not be look\n[…]\njcmVhdGVkSW5WZXIiOiI0My4yMDkuNCIsInVwZGF0ZWRJblZlciI6IjQzLjIwOS40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2c6ZGVwZW5kZW5jaWVzIl19-->\n\nSigned-off-by: Mend Renovate <bot@renovateapp.com>",
          "is_bot": false,
          "headline": "chore(deps): update all jaeger docker images to v2.19.0 (#8720)",
          "author_name": "Mend Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2026-06-07T19:25:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fe80fcd24dade1593a35a4bf4e0af18715250088",
          "body": "This PR contains the following updates:\n\n| Package | Type | Update | Change |\n|---|---|---|---|\n|\n[rtCamp/action-slack-notify](https://redirect.github.com/rtCamp/action-slack-notify)\n| action | minor | `v2.3.0` → `v2.4.0` |\n\n---\n\n> [!WARNING]\n> Some dependencies could not be looked up. Check the [De\n[…]\njcmVhdGVkSW5WZXIiOiI0My4yMDkuNCIsInVwZGF0ZWRJblZlciI6IjQzLjIwOS40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2c6ZGVwZW5kZW5jaWVzIl19-->\n\nSigned-off-by: Mend Renovate <bot@renovateapp.com>",
          "is_bot": false,
          "headline": "chore(deps): update github-actions deps to v2.4.0 (#8721)",
          "author_name": "Mend Renovate",
          "author_login": "renovate-bot",
          "committed_at": "2026-06-07T19:24:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 99,
      "commits_last_year": 776,
      "latest_release_at": "2026-06-03T13:17:07Z",
      "latest_release_tag": "v2.19.0",
      "releases_from_tags": true,
      "days_since_last_push": 2,
      "active_weeks_last_year": 49,
      "days_since_latest_release": 60,
      "mean_days_between_releases": 22.4
    },
    "community": {
      "has_readme": false,
      "has_license": false,
      "readme_badges": {
        "hosts": [],
        "total": 0,
        "header": 0,
        "collected": true,
        "has_inspect_badge": false
      },
      "has_description": false,
      "has_contributing": false,
      "health_percentage": null,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "github.com/jaegertracing/jaeger",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "go",
          "matches_repo": false,
          "registry_url": "https://pkg.go.dev/github.com/jaegertracing/jaeger",
          "is_deprecated": false,
          "latest_version": "v1.76.0",
          "repository_url": "https://github.com/jaegertracing/jaeger",
          "versions_count": 99,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2025-12-03T16:07:08Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 242
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 0,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_stars": 0,
        "collected_at": null
      },
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": true,
      "bootstrap_files": [
        "Makefile",
        "docker-compose/monitor/Makefile",
        "docker-compose/tail-sampling/Makefile"
      ],
      "api_schema_files": [
        "examples/hotrod/services/driver/driver.proto",
        "internal/proto/metrics/openmetrics.proto",
        "internal/proto/metrics/otelspankind.proto"
      ],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "go.mod",
        "internal/tools/go.mod",
        "monitoring/jaeger-mixin/generate/go.mod",
        "scripts/build/docker/debug/go.mod"
      ],
      "largest_source_bytes": 185252,
      "source_files_sampled": 1131,
      "oversized_source_files": 5,
      "agent_instruction_files": [
        ".github/copilot-instructions.md",
        "AGENTS.md",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 3968
    },
    "dependencies": {
      "manifests": [
        "go.mod"
      ],
      "advisories": {
        "error": null,
        "scope": null,
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "go"
      ],
      "dependencies": [
        {
          "name": "github.com/ClickHouse/ch-go",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.73.0"
        },
        {
          "name": "github.com/ClickHouse/clickhouse-go/v2",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v2.47.0"
        },
        {
          "name": "github.com/ag-ui-protocol/ag-ui/sdks/community/go",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.0.0-20260605151526-e2c717d2194d"
        },
        {
          "name": "github.com/apache/cassandra-gocql-driver/v2",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v2.1.2"
        },
        {
          "name": "github.com/asaskevich/govalidator",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.0.0-20230301143203-a9d515a09cc2"
        },
        {
          "name": "github.com/cenkalti/backoff/v6",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v6.0.1"
        },
        {
          "name": "github.com/coder/acp-go-sdk",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.13.0"
        },
        {
          "name": "github.com/davecgh/go-spew",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.1.2-0.20180830191138-d8f796af33cc"
        },
        {
          "name": "github.com/dgraph-io/badger/v4",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v4.9.2"
        },
        {
          "name": "github.com/elastic/elastic-transport-go/v8",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v8.9.0"
        },
        {
          "name": "github.com/elastic/go-elasticsearch/v9",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v9.4.2"
        },
        {
          "name": "github.com/go-logr/zapr",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.3.0"
        },
        {
          "name": "github.com/gogo/googleapis",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.4.1"
        },
        {
          "name": "github.com/gogo/protobuf",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.3.2"
        },
        {
          "name": "github.com/google/gnostic-models",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.7.1"
        },
        {
          "name": "github.com/google/uuid",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.6.0"
        },
        {
          "name": "github.com/gorilla/handlers",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.5.2"
        },
        {
          "name": "github.com/gorilla/websocket",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.5.4-0.20250319132907-e064f32e3674"
        },
        {
          "name": "github.com/jaegertracing/jaeger-idl",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.9.0"
        },
        {
          "name": "github.com/kr/pretty",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.3.1"
        },
        {
          "name": "github.com/modelcontextprotocol/go-sdk",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.6.1"
        },
        {
          "name": "github.com/olivere/elastic/v7",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v7.0.32"
        },
        {
          "name": "github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnector",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "github.com/open-telemetry/opentelemetry-collector-contrib/extension/basicauthextension",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "github.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckv2extension",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "github.com/open-telemetry/opentelemetry-collector-contrib/extension/pprofextension",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "github.com/open-telemetry/opentelemetry-collector-contrib/extension/sigv4authextension",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/core/xidutils",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "github.com/open-telemetry/opentelemetry-collector-contrib/processor/attributesprocessor",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "github.com/pmezard/go-difflib",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.0.1-0.20181226105442-5d4384ee4fb2"
        },
        {
          "name": "github.com/prometheus/client_golang",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.23.2"
        },
        {
          "name": "github.com/prometheus/client_model",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.6.2"
        },
        {
          "name": "github.com/prometheus/common",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.69.0"
        },
        {
          "name": "github.com/spf13/cobra",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.10.2"
        },
        {
          "name": "github.com/spf13/pflag",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.0.10"
        },
        {
          "name": "github.com/spf13/viper",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.21.0"
        },
        {
          "name": "github.com/stretchr/testify",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.11.1"
        },
        {
          "name": "go.opentelemetry.io/collector/client",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.61.0"
        },
        {
          "name": "go.opentelemetry.io/collector/component",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.61.0"
        },
        {
          "name": "go.opentelemetry.io/collector/component/componentstatus",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "go.opentelemetry.io/collector/component/componenttest",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "go.opentelemetry.io/collector/config/configauth",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.61.0"
        },
        {
          "name": "go.opentelemetry.io/collector/config/configgrpc",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "go.opentelemetry.io/collector/config/confighttp",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "go.opentelemetry.io/collector/config/confighttp/xconfighttp",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "go.opentelemetry.io/collector/config/configmiddleware",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.61.0"
        },
        {
          "name": "go.opentelemetry.io/collector/config/confignet",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.61.0"
        },
        {
          "name": "go.opentelemetry.io/collector/config/configoptional",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.61.0"
        },
        {
          "name": "go.opentelemetry.io/collector/config/configretry",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.61.0"
        },
        {
          "name": "go.opentelemetry.io/collector/config/configtelemetry",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "go.opentelemetry.io/collector/config/configtls",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.61.0"
        },
        {
          "name": "go.opentelemetry.io/collector/confmap",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.61.0"
        },
        {
          "name": "go.opentelemetry.io/collector/confmap/provider/envprovider",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.61.0"
        },
        {
          "name": "go.opentelemetry.io/collector/confmap/provider/fileprovider",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.61.0"
        },
        {
          "name": "go.opentelemetry.io/collector/confmap/provider/httpprovider",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.61.0"
        },
        {
          "name": "go.opentelemetry.io/collector/confmap/provider/httpsprovider",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.61.0"
        },
        {
          "name": "go.opentelemetry.io/collector/confmap/provider/yamlprovider",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.61.0"
        },
        {
          "name": "go.opentelemetry.io/collector/confmap/xconfmap",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "go.opentelemetry.io/collector/connector",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "go.opentelemetry.io/collector/connector/forwardconnector",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "go.opentelemetry.io/collector/consumer",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.61.0"
        },
        {
          "name": "go.opentelemetry.io/collector/consumer/consumertest",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "go.opentelemetry.io/collector/exporter",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.61.0"
        },
        {
          "name": "go.opentelemetry.io/collector/exporter/debugexporter",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "go.opentelemetry.io/collector/exporter/exporterhelper",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "go.opentelemetry.io/collector/exporter/exportertest",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "go.opentelemetry.io/collector/exporter/nopexporter",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "go.opentelemetry.io/collector/exporter/otlpexporter",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "go.opentelemetry.io/collector/exporter/otlphttpexporter",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "go.opentelemetry.io/collector/extension",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.61.0"
        },
        {
          "name": "go.opentelemetry.io/collector/extension/extensionauth",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.61.0"
        },
        {
          "name": "go.opentelemetry.io/collector/extension/extensioncapabilities",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "go.opentelemetry.io/collector/extension/zpagesextension",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "go.opentelemetry.io/collector/featuregate",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.61.0"
        },
        {
          "name": "go.opentelemetry.io/collector/otelcol",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "go.opentelemetry.io/collector/pdata",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.61.0"
        },
        {
          "name": "go.opentelemetry.io/collector/pdata/xpdata",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "go.opentelemetry.io/collector/pipeline",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.61.0"
        },
        {
          "name": "go.opentelemetry.io/collector/processor",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.61.0"
        },
        {
          "name": "go.opentelemetry.io/collector/processor/batchprocessor",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "go.opentelemetry.io/collector/processor/memorylimiterprocessor",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "go.opentelemetry.io/collector/processor/processorhelper",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "go.opentelemetry.io/collector/processor/processortest",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "go.opentelemetry.io/collector/receiver",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.61.0"
        },
        {
          "name": "go.opentelemetry.io/collector/receiver/nopreceiver",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "go.opentelemetry.io/collector/receiver/otlpreceiver",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "go.opentelemetry.io/collector/service",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.69.0"
        },
        {
          "name": "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.69.0"
        },
        {
          "name": "go.opentelemetry.io/contrib/samplers/jaegerremote",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.37.1"
        },
        {
          "name": "go.opentelemetry.io/otel",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.44.0"
        },
        {
          "name": "go.opentelemetry.io/otel/exporters/otlp/otlptrace",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.44.0"
        },
        {
          "name": "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.44.0"
        },
        {
          "name": "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.44.0"
        },
        {
          "name": "go.opentelemetry.io/otel/exporters/prometheus",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.66.0"
        },
        {
          "name": "go.opentelemetry.io/otel/exporters/stdout/stdouttrace",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.44.0"
        },
        {
          "name": "go.opentelemetry.io/otel/metric",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.44.0"
        },
        {
          "name": "go.opentelemetry.io/otel/sdk",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.44.0"
        },
        {
          "name": "go.opentelemetry.io/otel/sdk/metric",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.44.0"
        },
        {
          "name": "go.opentelemetry.io/otel/trace",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.44.0"
        },
        {
          "name": "go.uber.org/automaxprocs",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.6.0"
        },
        {
          "name": "go.uber.org/goleak",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.3.0"
        },
        {
          "name": "go.uber.org/zap",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.28.0"
        },
        {
          "name": "go.yaml.in/yaml/v3",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v3.0.4"
        },
        {
          "name": "golang.org/x/exp",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.0.0-20260611194520-c48552f49976"
        },
        {
          "name": "golang.org/x/sys",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.46.0"
        },
        {
          "name": "google.golang.org/genproto/googleapis/api",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.0.0-20260526163538-3dc84a4a5aaa"
        },
        {
          "name": "google.golang.org/grpc",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.81.1"
        },
        {
          "name": "google.golang.org/protobuf",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.36.11"
        },
        {
          "name": "@octokit/rest",
          "manifest": ".github/scripts/package.json",
          "ecosystem": "npm",
          "version_constraint": "^22.0.0"
        },
        {
          "name": "github.com/golangci/golangci-lint/v2",
          "manifest": "internal/tools/go.mod",
          "ecosystem": "go",
          "version_constraint": "v2.12.2"
        },
        {
          "name": "github.com/josephspurrier/goversioninfo",
          "manifest": "internal/tools/go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.7.0"
        },
        {
          "name": "github.com/open-telemetry/opentelemetry-collector-contrib/cmd/schemagen",
          "manifest": "internal/tools/go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.154.0"
        },
        {
          "name": "github.com/vektra/mockery/v3",
          "manifest": "internal/tools/go.mod",
          "ecosystem": "go",
          "version_constraint": "v3.7.0"
        },
        {
          "name": "github.com/wadey/gocovmerge",
          "manifest": "internal/tools/go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.0.0-20160331181800-b5bfa59ec0ad"
        },
        {
          "name": "go.opentelemetry.io/collector/cmd/builder",
          "manifest": "internal/tools/go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.155.0"
        },
        {
          "name": "golang.org/x/vuln",
          "manifest": "internal/tools/go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.5.0"
        },
        {
          "name": "gotest.tools/gotestsum",
          "manifest": "internal/tools/go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.13.0"
        },
        {
          "name": "mvdan.cc/gofumpt",
          "manifest": "internal/tools/go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.10.0"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 0,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 3,
      "bot_contributors": 3,
      "top_contributors": [
        {
          "type": "User",
          "login": "yurishkuro",
          "commits": 925,
          "avatar_url": "https://avatars.githubusercontent.com/u/3523016?v=4"
        },
        {
          "type": "User",
          "login": "renovate-bot",
          "commits": 602,
          "avatar_url": "https://avatars.githubusercontent.com/u/25180681?v=4"
        },
        {
          "type": "User",
          "login": "pavolloffay",
          "commits": 279,
          "avatar_url": "https://avatars.githubusercontent.com/u/5618424?v=4"
        },
        {
          "type": "User",
          "login": "mahadzaryab1",
          "commits": 235,
          "avatar_url": "https://avatars.githubusercontent.com/u/43658574?v=4"
        },
        {
          "type": "User",
          "login": "albertteoh",
          "commits": 104,
          "avatar_url": "https://avatars.githubusercontent.com/u/26584478?v=4"
        },
        {
          "type": "User",
          "login": "jpkrohling",
          "commits": 75,
          "avatar_url": "https://avatars.githubusercontent.com/u/13387?v=4"
        },
        {
          "type": "User",
          "login": "black-adder",
          "commits": 69,
          "avatar_url": "https://avatars.githubusercontent.com/u/791791?v=4"
        },
        {
          "type": "User",
          "login": "Manik2708",
          "commits": 68,
          "avatar_url": "https://avatars.githubusercontent.com/u/65224535?v=4"
        },
        {
          "type": "User",
          "login": "jkowall",
          "commits": 63,
          "avatar_url": "https://avatars.githubusercontent.com/u/1859948?v=4"
        },
        {
          "type": "User",
          "login": "danish9039",
          "commits": 44,
          "avatar_url": "https://avatars.githubusercontent.com/u/133037056?v=4"
        }
      ],
      "contributors_sampled": 97,
      "top_contributor_share": 0.281
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci-ai-sidecar-gemini.yml",
        "ci-build-binaries.yml",
        "ci-deploy-demo.yml",
        "ci-docker-all-in-one.yml",
        "ci-docker-build.yml",
        "ci-docker-hotrod.yml",
        "ci-e2e-all.yml",
        "ci-e2e-badger.yaml",
        "ci-e2e-cassandra.yml",
        "ci-e2e-clickhouse.yml",
        "ci-e2e-elasticsearch.yml",
        "ci-e2e-grpc.yml",
        "ci-e2e-kafka.yml",
        "ci-e2e-memory.yaml",
        "ci-e2e-opensearch.yml",
        "ci-e2e-query.yml",
        "ci-e2e-spm.yml",
        "ci-e2e-tailsampling.yml",
        "ci-e2e-ui-reverse-proxy.yml",
        "ci-lint-checks.yaml",
        "ci-ocb-build.yml",
        "ci-orchestrator-stage1.yml",
        "ci-orchestrator-stage2.yml",
        "ci-orchestrator-stage3.yml",
        "ci-orchestrator.yml",
        "ci-release.yml",
        "ci-summary-report-publish.yml",
        "ci-summary-report.yml",
        "ci-unit-tests-go-tip.yml",
        "ci-unit-tests.yml",
        "codeql.yml",
        "dco_merge_group.yml",
        "dependency-review.yml",
        "fossa.yml",
        "label-check.yml",
        "pr-quota-manager.yml",
        "scorecard.yml",
        "stale.yml",
        "waiting-for-author.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        ".golangci.yml"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "go.sum",
        "package-lock.json",
        "uv.lock"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": null,
            "reason": "no pull request found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 33 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "project was created within the last 90 days. Please review its contents carefully",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 9,
            "reason": "dependency not pinned by hash detected -- score normalized to 9",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 10,
            "reason": "SAST tool detected: CodeQL",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "13 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "382273edfeef8fcbf267eb5e3fd81d2fe9795efb",
        "ran_at": "2026-08-02T22:14:47Z",
        "aggregate_score": 4.9,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": true,
      "has_security_policy": true,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "recent_prs": {
        "merged_7d": 0,
        "decided_7d": 0,
        "merged_30d": 0,
        "authors_30d": 0,
        "decided_30d": 0,
        "sample_size": 0,
        "window_days": 30,
        "sample_exhausted": false,
        "authors_probed_30d": 0,
        "newcomer_merged_30d": 0,
        "bot_prs_excluded_30d": 0,
        "newcomer_authors_30d": 0,
        "newcomer_decided_30d": 0
      },
      "ci_last_run_at": null,
      "oldest_open_prs": [],
      "last_merged_pr_at": null,
      "ci_last_conclusion": null,
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/ysh-bot/jaeger",
    "host": "github.com",
    "name": "jaeger",
    "owner": "ysh-bot"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": "The weighted overall 52 is calibrated to 53 on the published index scale (record calibration 2026-08-02).",
      "notes": [
        {
          "code": "overall_calibration",
          "params": {
            "raw": 52,
            "calibrated": 53,
            "calibration": "2026-08-02"
          }
        }
      ],
      "value": 53,
      "inputs": {
        "security": 49,
        "vitality": 88,
        "community": 12,
        "governance": 35,
        "calibration": "2026-08-02",
        "engineering": 64,
        "ai_readiness": 92,
        "weighted_overall_raw": 52
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 88,
        "weight": 0.21,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 88,
            "inputs": {
              "commits_last_year": 776,
              "human_commit_share": 1,
              "days_since_last_push": 2,
              "active_weeks_last_year": 49
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 2 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 2
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "49/52 weeks with commits",
                "points": 33.9,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 49
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "776 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 776
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 88,
            "inputs": {
              "releases_count": 99,
              "latest_release_tag": "v2.19.0",
              "releases_from_tags": true,
              "days_since_latest_release": 60,
              "mean_days_between_releases": 22.4
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "99 version tags (no GitHub releases)",
                "points": 16.2,
                "status": "partial",
                "details": [
                  {
                    "code": "version_tags_no_releases",
                    "params": {
                      "count": 99
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 60 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 60
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~22.4 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 22.4
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "exceptional",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "critical",
        "name": "Community & Adoption",
        "value": 12,
        "weight": 0.17,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 0,
              "stars": 0,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "0 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "0 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "at_risk",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 25,
            "inputs": {
              "has_readme": false,
              "has_license": false,
              "readme_badges": 0,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "readme_badge_services": [],
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (Apache-2.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "Apache-2.0"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "weak",
        "name": "Sustainability & Governance",
        "value": 35,
        "weight": 0.23,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "good",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 76,
            "inputs": {
              "bus_factor": 3,
              "contributors_sampled": 97,
              "top_contributor_share": 0.281
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "3 contributor(s) cover half of all commits",
                "points": 36,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 28% of commits",
                "points": 16.2,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 28
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "97 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 97
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 33 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "critical",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution, PR acceptance, Newcomer PR acceptance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution",
                    "pr_acceptance",
                    "newcomer_pr_acceptance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 1,
            "inputs": {
              "merged_prs": 0,
              "open_issues": 0,
              "closed_issues": 0,
              "prs_merged_7d": 0,
              "prs_decided_7d": 0,
              "prs_merged_30d": 0,
              "prs_decided_30d": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 0,
              "first_time_authors_30d": 0,
              "first_time_prs_merged_30d": 0,
              "first_time_prs_decided_30d": 0
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 42
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "no decided pull requests or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_decided_prs_or_data",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "newcomer_pr_acceptance",
                "name": "Newcomer PR acceptance",
                "detail": "no first-time contributor's PR decided in 30d",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_newcomer_prs",
                    "params": {
                      "days": 30
                    }
                  }
                ],
                "max_points": 13
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "at_risk",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 20,
            "inputs": {
              "followers": 0,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "ysh-bot",
              "public_repos": 4,
              "account_age_days": 166
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "0 followers of ysh-bot",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 0,
                      "login": "ysh-bot"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "4 public repos, account ~0 yr old",
                "points": 6,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 4
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 0
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 64,
        "weight": 0.19,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "excellent",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 80,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "39 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 39
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": ".golangci.yml",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".golangci.yml"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "weak",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "topics": [],
              "has_wiki": false,
              "homepage": "https://www.jaegertracing.io/",
              "has_readme": false,
              "has_docs_dir": true,
              "has_description": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://www.jaegertracing.io/",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "weak",
        "name": "Security",
        "value": 49,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "weak",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests, Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests",
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 49,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 15,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 3,
              "scorecard_aggregate": 4.9
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 33 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 9",
                "points": 4.5,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool detected: CodeQL",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "13 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "exceptional",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "commit_weight_rule": {
                "min_commits": 50,
                "min_commit_share": 0.1
              },
              "review_only_matches": 0,
              "below_threshold_exposures": [],
              "assessed_self_published_locations": 17
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "excellent",
        "name": "AI Readiness",
        "value": 92,
        "weight": 0.04,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "agent_instruction_files": [
                ".github/copilot-instructions.md",
                "AGENTS.md",
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 3968
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": ".github/copilot-instructions.md, AGENTS.md, CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".github/copilot-instructions.md, AGENTS.md, CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "100 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 100,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "excellent",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 91,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "go.sum",
                "package-lock.json",
                "uv.lock"
              ],
              "has_dockerfile": true,
              "typed_language": true,
              "bootstrap_files": [
                "Makefile",
                "docker-compose/monitor/Makefile",
                "docker-compose/tail-sampling/Makefile"
              ],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [],
              "agent_commit_share": 0.44,
              "toolchain_manifests": [
                "go.mod",
                "internal/tools/go.mod",
                "monitoring/jaeger-mixin/generate/go.mod",
                "scripts/build/docker/debug/go.mod"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "Makefile, docker-compose/monitor/Makefile, docker-compose/tail-sampling/Makefile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Makefile, docker-compose/monitor/Makefile, docker-compose/tail-sampling/Makefile"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": ".golangci.yml",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".golangci.yml"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "Go (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Go"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Dockerfile, lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile, lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "44 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 44,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 9",
                "points": 9,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "exceptional",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "Go",
              "largest_source_bytes": 185252,
              "source_files_sampled": 1131,
              "oversized_source_files": 5
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Go (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Go"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "5/1131 source files over 60KB",
                "points": 54.8,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 1131,
                      "oversized": 5
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "exceptional",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": true,
              "api_schema_files": [
                "examples/hotrod/services/driver/driver.proto",
                "internal/proto/metrics/openmetrics.proto",
                "internal/proto/metrics/otelspankind.proto"
              ]
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": "examples/hotrod/services/driver/driver.proto, internal/proto/metrics/openmetrics.proto, internal/proto/metrics/otelspankind.proto",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples/hotrod/services/driver/driver.proto, internal/proto/metrics/openmetrics.proto, internal/proto/metrics/otelspankind.proto"
                    }
                  }
                ],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
      }
    ],
    "classification": {
      "labels": [
        "cli"
      ],
      "scores": {
        "cli": 4,
        "mcp-server": 3,
        "network-service": 3
      },
      "primary": "cli",
      "evidence": [
        {
          "tier": "dependencies",
          "label": "cli",
          "source": "dep:github.com/spf13/cobra",
          "weight": 4
        },
        {
          "tier": "structure",
          "label": "mcp-server",
          "source": "mcp_signal",
          "weight": 3
        },
        {
          "tier": "structure",
          "label": "network-service",
          "source": "api_schema",
          "weight": 3
        }
      ],
      "artifacts": [],
      "confidence": "low",
      "host_extension": false,
      "runs_as_process": true,
      "consumed_by_code": false
    },
    "metrics_version": "2.3.1"
  },
  "warnings": [
    "Community profile unavailable",
    "go package 'github.com/jaegertracing/jaeger' points at a different repository (https://github.com/jaegertracing/jaeger); excluded from ecosystem scoring",
    "Could not fetch go package 'github.com/jaegertracing/jaeger/internal/tools' from its registry",
    "Could not fetch npm package 'jaeger-ci-scripts' from its registry",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-08-02T22:15:06.544006Z",
  "schema_version": "0.29.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/y/ysh-bot/jaeger.svg",
  "full_name": "ysh-bot/jaeger",
  "license_state": "standard",
  "license_spdx": "Apache-2.0"
}

评分是信号,而非担保。 评分反映的是 GitHub 上公开可见的实践——不是代码审计,也不是安全保证。

缺失数据将被剔除并重新归一化权重,绝不按零分计。方法论已版本化并公开:指标 v2.3.1、模式 v0.29.0—— 完整方法论 · 指标知识库.

单项结果在整体记录中的位置: 汇总统计Go.