公开记录
软件健康报告模式 0.27.0 · 指标 1.13.0 · 2026-07-26 02:10 UTC

juandiii / ark

A modular HTTP client toolkit for Java 17+

JavaApache-2.0★ 2 星标⑂ 0 复刻始于 2026年3月在 GitHub 上查看 ↗

juandiii/ark 的健康指数为 100 分中的 58 分,处于「中等」区间。 其得分最高的类别是Engineering Quality(74/100),最低的是Community & Adoption(33/100)。 最近一次更新在 8 天前。 近期的大部分工作由 1 位贡献者完成。

58
总分 / 100
中等

软件健康指数

指标归入加权类别,统一采用 1–100 量表。总体分先取类别加权平均;当公开证据触发高风险司法辖区政策时,评级会按政策调整,并设置 49(有风险)的上限。AI 就绪度不计入总体分。

58
优秀85-100堪称典范;基本满足所有检验标准
良好70-84健康;仅有轻微不足
中等50-69可接受,但存在明显不足;建议进行审查
存在风险30-49存在重大薄弱环节;采用时应保持审慎
危急1-29问题严重(项目被弃置、仅有单一维护者、缺乏基本工程规范)
活力社区与采用可持续性与治理工程质量安全AI 就绪度

评分画像

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

所有权

Juan Diego López个人账户
54 关注者26 个公开仓库始于 2015年11月

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

软件包生态系统

注册表软件包版本月下载量版本数最近发布
Mavenxyz.juandiii:ark-core1.0.8-98 天前
Mavenxyz.juandiii:ark-jsonb1.0.8-98 天前
Mavenxyz.juandiii:ark-proxy-jaxrs1.0.8-98 天前
Mavenxyz.juandiii:ark-jackson1.0.8-98 天前
Mavenxyz.juandiii:ark-proxy-spring1.0.8-98 天前
Mavenxyz.juandiii:ark-async1.0.8-98 天前
Mavenxyz.juandiii:ark-vertx1.0.8-98 天前
Mavenxyz.juandiii:ark-mutiny1.0.8-98 天前

按类别列示的指标

活力

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

73良好 · 占总体的 22%
评分方式
28.8/36推送新近度 — 最近一次推送于 8 天前
5.5/36提交节奏 — 52 周中有 8 周有提交
18/18提交量 — 最近一年 263 次提交
10/10OpenSSF Scorecard:Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
所用输入
commits_last_year263
human_commit_share0.81
days_since_last_push8
active_weeks_last_year8

发布纪律

90优秀
评分方式
27/27有发布版本 — 已发布 10 个发布版本
27/36发布时效 — 最近一次发布版本于 122 天前
27/27发布节奏 — 约每 -0.3 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — 无数据
所用输入
releases_count10
latest_release_tagv1.0.8
releases_from_tags
days_since_latest_release122
mean_days_between_releases-0.3
已排除计分(无数据或不适用):OpenSSF Scorecard:Signed-Releases。 其余权重已重新归一化。

社区与采用

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

33存在风险 · 占总体的 18%
评分方式
0/60星标 — 2 个星标
0/25复刻 — 0 个复刻
0/15关注者 — 0 位关注者
所用输入
forks0
stars2
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

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

可持续性与治理

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

55中等 · 占总体的 24%
评分方式
9/54巴士系数 — 1 位贡献者贡献了半数提交
0/22.5提交分布 — 头号贡献者编写了 100% 的提交
1.4/13.5贡献者广度 — 1 位贡献者
3/10OpenSSF Scorecard:Contributors — project has 1 contributing companies or organizations -- score normalized to 3
所用输入
bus_factor1
contributors_sampled1
top_contributor_share1
评分方式
0/46.8议题解决 — 没有议题或无数据
36.2/38.3PR 接受 — 已裁定的 PR 中 87/92 已合并
0/15OpenSSF Scorecard:Code-Review — Found 0/9 approved changesets -- score normalized to 0
所用输入
merged_prs87
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs5
已排除计分(无数据或不适用):议题解决。 其余权重已重新归一化。
评分方式
10/30所有权背书 — 个人(用户)账户
0/20已验证域名 — 不适用于个人账户
12.5/25所有者影响力 — juandiii 有 54 位关注者
22.4/25既往记录 — 26 个公开仓库,账户约 10 年
所用输入
followers54
owner_typeUser
is_verified
owner_loginjuandiii
public_repos26
account_age_days3,919
已排除计分(无数据或不适用):已验证域名。 其余权重已重新归一化。
评分方式
25/25已发布且可解析 — maven 上有 8 个软件包
35/35发布时效 — 最近一次发布于 8 天前
20/20版本历史 — 9 个已发布版本
20/20未被弃用 — 活跃,未被弃用或撤回
所用输入
packagesxyz.juandiii:ark-core, xyz.juandiii:ark-jsonb, xyz.juandiii:ark-proxy-jaxrs, xyz.juandiii:ark-jackson, xyz.juandiii:ark-proxy-spring, xyz.juandiii:ark-async, xyz.juandiii:ark-vertx, xyz.juandiii:ark-mutiny
ecosystemsmaven
any_deprecated
min_days_since_publish8

工程质量

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

74良好 · 占总体的 20%

工程实践

74良好
评分方式
24/24CI 工作流 — 8 个工作流
24/24存在测试
0/16Linter 配置
0/9.6Pre-commit 钩子
6.4/6.4.editorconfig
20/20OpenSSF Scorecard:CI-Tests — 7 out of 7 merged PRs checked by a CI test -- score normalized to 10
所用输入
has_ci
has_tests
has_editorconfig
has_linter_config
has_precommit_config

文档

75良好
评分方式
30/30README
25/25文档目录
0/15文档 / 主页站点
10/10仓库描述
0/10主题标签
10/10Wiki
所用输入
topics
has_wiki
homepage
has_readme
has_docs_dir
has_description

安全

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

50中等 · 占总体的 16%

安全态势

50中等
评分方式
7.5/7.5Binary-Artifacts — no binaries found in the repo
0.8/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.5/2.5CI-Tests — 7 out of 7 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/9 approved changesets -- score normalized to 0
0.8/2.5Contributors — project has 1 contributing companies or organizations -- score normalized to 3
0/10Dangerous-Workflow — 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
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
2.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 5
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — 无数据
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate5
已排除计分(无数据或不适用):signed_releases。 其余权重已重新归一化。

AI 就绪度

该仓库在多大程度上具备与 AI 编码代理协同开发与维护的条件?这是一枚独立的实验性徽章——权重为 0.0,因此单独呈现,不影响总体健康评分。

60中等 · 占总体的 0%
评分方式
0/45代理指令 — 没有 CLAUDE.md / AGENTS.md / 编辑器规则
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 81 次人类提交中有 76 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share0.938
agent_instruction_files
agent_instruction_max_bytes
评分方式
12.6/18一条命令的引导启动 — core/ark-bom/pom.xml, core/ark-core/pom.xml, execution-models/ark-async/pom.xml(工具链约定,无任务运行器)
22/22自动化测试
0/11Lint / 格式化配置
11/11静态类型检查 — Java(静态类型)
0/10可复现环境
0/10已体现的代理实践 — 最近 100 次提交中没有代理编写的提交
8/8自动化维护 — 最近 100 次提交中有 13 次为自动依赖更新
5/10OpenSSF Scorecard:Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 5
所用输入
has_nix
has_tests
lockfiles
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_config
typecheck_configs
agent_commit_share0
toolchain_manifestscore/ark-bom/pom.xml, core/ark-core/pom.xml, execution-models/ark-async/pom.xml, execution-models/ark-mutiny/pom.xml, execution-models/ark-reactor/pom.xml, execution-models/ark-vertx/pom.xml, extensions/ark-quarkus-jackson-vertx/deployment/pom.xml, extensions/ark-quarkus-jackson-vertx/pom.xml, extensions/ark-quarkus-jackson-vertx/runtime/pom.xml, extensions/ark-quarkus-jackson/deployment/pom.xml, extensions/ark-quarkus-jackson/pom.xml, extensions/ark-quarkus-jackson/runtime/pom.xml, pom.xml, proxies/ark-proxy-jaxrs/pom.xml, proxies/ark-proxy-spring/pom.xml, serializers/ark-jackson-classic/pom.xml, serializers/ark-jackson/pom.xml, serializers/ark-jsonb/pom.xml, starters/ark-spring-boot-starter-webflux/pom.xml, starters/ark-spring-boot-starter/pom.xml, transports/ark-transport-apache/pom.xml, transports/ark-transport-jdk/pom.xml, transports/ark-transport-reactor/pom.xml, transports/ark-transport-vertx-mutiny/pom.xml, transports/ark-transport-vertx/pom.xml
dependency_bot_commit_share0.13
评分方式
45/45可类型检查的代码 — Java(静态类型)
55/55可控的文件大小 — 采样的 233 个源文件中有 0 个超过 60KB
所用输入
primary_languageJava
largest_source_bytes27,019
source_files_sampled233
oversized_source_files0

关键数据

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

数据采集警告

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

更多细节

OpenSSF Scorecard 5.0 / 10
5.0综合

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

10Binary-Artifactsno binaries found in the repo
1Branch-Protectionbranch protection is not maximal on development and all release branches
10CI-Tests7 out of 7 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/9 approved changesets -- score normalized to 0
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
0Dangerous-Workflowdangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
5Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 5
0SASTSAST tool is not run on all commits -- score normalized to 0
10Security-Policysecurity policy file detected
不适用Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
直接依赖 71
注册表软件包版本约束清单文件
Mavenorg.springframework.boot:spring-boot-dependencies${spring-boot.version}pom.xml
Mavenio.quarkus:quarkus-bom${quarkus.version}pom.xml
Mavenxyz.juandiii:ark-core1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-async1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-jackson1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-jackson-classic1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-jsonb1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-reactor1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-transport-jdk1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-transport-reactor1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-vertx1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-mutiny1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-transport-vertx1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-transport-apache1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-transport-vertx-mutiny1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-proxy-spring1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-proxy-jaxrs1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-spring-boot-starter1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-spring-boot-starter-webflux1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-quarkus-jackson1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-quarkus-jackson-deployment1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-quarkus-jackson-vertx1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-quarkus-jackson-vertx-deployment1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-core${project.version}execution-models/ark-async/pom.xml
Mavenxyz.juandiii:ark-core${project.version}execution-models/ark-mutiny/pom.xml
Mavenio.smallrye.reactive:mutinyexecution-models/ark-mutiny/pom.xml
Mavenxyz.juandiii:ark-core${project.version}execution-models/ark-reactor/pom.xml
Mavenio.projectreactor:reactor-coreexecution-models/ark-reactor/pom.xml
Mavenxyz.juandiii:ark-core${project.version}execution-models/ark-vertx/pom.xml
Mavenio.vertx:vertx-coreexecution-models/ark-vertx/pom.xml
Mavencom.fasterxml.jackson.core:jackson-databindexecution-models/ark-vertx/pom.xml
Mavenxyz.juandiii:ark-core${project.version}proxies/ark-proxy-jaxrs/pom.xml
Mavenjakarta.ws.rs:jakarta.ws.rs-apiproxies/ark-proxy-jaxrs/pom.xml
Mavenxyz.juandiii:ark-async${project.version}proxies/ark-proxy-jaxrs/pom.xml
Mavenxyz.juandiii:ark-mutiny${project.version}proxies/ark-proxy-jaxrs/pom.xml
Mavenxyz.juandiii:ark-core${project.version}proxies/ark-proxy-spring/pom.xml
Mavenorg.springframework:spring-webproxies/ark-proxy-spring/pom.xml
Mavenxyz.juandiii:ark-reactor${project.version}proxies/ark-proxy-spring/pom.xml
Mavenxyz.juandiii:ark-core${project.version}serializers/ark-jackson-classic/pom.xml
Mavencom.fasterxml.jackson.core:jackson-databindserializers/ark-jackson-classic/pom.xml
Mavenxyz.juandiii:ark-core${project.version}serializers/ark-jackson/pom.xml
Maventools.jackson.core:jackson-databindserializers/ark-jackson/pom.xml
Mavenxyz.juandiii:ark-core${project.version}serializers/ark-jsonb/pom.xml
Mavenorg.eclipse:yassonserializers/ark-jsonb/pom.xml
Mavenxyz.juandiii:ark-reactor${project.version}starters/ark-spring-boot-starter-webflux/pom.xml
Mavenxyz.juandiii:ark-jackson${project.version}starters/ark-spring-boot-starter-webflux/pom.xml
Mavenxyz.juandiii:ark-transport-reactor${project.version}starters/ark-spring-boot-starter-webflux/pom.xml
Mavenorg.springframework.boot:spring-boot-autoconfigurestarters/ark-spring-boot-starter-webflux/pom.xml
Mavenorg.springframework.boot:spring-boot-starter-webfluxstarters/ark-spring-boot-starter-webflux/pom.xml
Mavenorg.springframework.boot:spring-boot-jacksonstarters/ark-spring-boot-starter-webflux/pom.xml
Mavenxyz.juandiii:ark-proxy-spring${project.version}starters/ark-spring-boot-starter-webflux/pom.xml
Mavenxyz.juandiii:ark-core${project.version}starters/ark-spring-boot-starter/pom.xml
Mavenxyz.juandiii:ark-jackson${project.version}starters/ark-spring-boot-starter/pom.xml
Mavenxyz.juandiii:ark-transport-jdk${project.version}starters/ark-spring-boot-starter/pom.xml
Mavenxyz.juandiii:ark-proxy-spring${project.version}starters/ark-spring-boot-starter/pom.xml
Mavenorg.springframework.boot:spring-boot-autoconfigurestarters/ark-spring-boot-starter/pom.xml
Mavenorg.springframework.boot:spring-boot-starterstarters/ark-spring-boot-starter/pom.xml
Mavenorg.springframework.boot:spring-boot-jacksonstarters/ark-spring-boot-starter/pom.xml
Mavenxyz.juandiii:ark-core${project.version}transports/ark-transport-apache/pom.xml
Mavenorg.apache.httpcomponents.client5:httpclient5${httpclient5.version}transports/ark-transport-apache/pom.xml
Mavenxyz.juandiii:ark-core${project.version}transports/ark-transport-jdk/pom.xml
Mavenxyz.juandiii:ark-async${project.version}transports/ark-transport-jdk/pom.xml
Mavenxyz.juandiii:ark-reactor${project.version}transports/ark-transport-reactor/pom.xml
Mavenio.projectreactor.netty:reactor-netty-httptransports/ark-transport-reactor/pom.xml
Mavenxyz.juandiii:ark-mutiny${project.version}transports/ark-transport-vertx-mutiny/pom.xml
Mavenio.smallrye.reactive:smallrye-mutiny-vertx-web-clienttransports/ark-transport-vertx-mutiny/pom.xml
Mavenio.vertx:vertx-coretransports/ark-transport-vertx-mutiny/pom.xml
Mavenxyz.juandiii:ark-async${project.version}transports/ark-transport-vertx/pom.xml
Mavenxyz.juandiii:ark-vertx${project.version}transports/ark-transport-vertx/pom.xml
Mavenio.vertx:vertx-web-clienttransports/ark-transport-vertx/pom.xml
Mavenio.vertx:vertx-coretransports/ark-transport-vertx/pom.xml
全部依赖 未采集

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

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 954,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "Java": 729356
      },
      "pushed_at": "2026-07-17T14:03:12Z",
      "created_at": "2026-03-21T22:58:36Z",
      "owner_type": "User",
      "updated_at": "2026-07-17T14:01:41Z",
      "description": "A modular HTTP client toolkit for Java 17+",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "Apache-2.0",
      "default_branch": "main",
      "license_spdx_raw": "Apache-2.0",
      "primary_language": "Java",
      "significant_languages": [
        "Java"
      ]
    },
    "owner": {
      "blog": null,
      "name": "Juan Diego López",
      "type": "User",
      "login": "juandiii",
      "company": null,
      "location": "Dominican Republic, Santiago",
      "followers": 54,
      "avatar_url": "https://avatars.githubusercontent.com/u/15571425?v=4",
      "created_at": "2015-11-01T15:49:13Z",
      "is_verified": null,
      "public_repos": 26,
      "account_age_days": 3919
    },
    "license": {
      "state": "standard",
      "spdx_id": "Apache-2.0",
      "raw_spdx": "Apache-2.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v1.0.8",
          "kind": "patch",
          "published_at": "2026-03-25T13:50:56Z"
        },
        {
          "tag": "v1.0.7",
          "kind": "patch",
          "published_at": "2026-03-25T12:17:20Z"
        },
        {
          "tag": "v1.0.6",
          "kind": "patch",
          "published_at": "2026-03-25T05:05:32Z"
        },
        {
          "tag": "v1.0.5",
          "kind": "patch",
          "published_at": "2026-03-25T04:50:02Z"
        },
        {
          "tag": "v1.0.4",
          "kind": "patch",
          "published_at": "2026-03-24T12:41:42Z"
        },
        {
          "tag": "v1.0.3",
          "kind": "patch",
          "published_at": "2026-03-23T23:56:44Z"
        },
        {
          "tag": "v1.0.2",
          "kind": "patch",
          "published_at": "2026-03-23T23:31:45Z"
        },
        {
          "tag": "v1.0.1",
          "kind": "patch",
          "published_at": "2026-03-23T23:15:45Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2026-04-01T05:29:45Z"
        },
        {
          "tag": "v1.0.9",
          "kind": "patch",
          "published_at": "2026-03-28T14:17:54Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "05174ba73b99c155ce6c5332b211ee680b0f0e1e",
          "body": null,
          "is_bot": true,
          "headline": "chore(release): prepare 1.0.9-SNAPSHOT",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-17T14:00:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c266d313deba983421f0a30df35164469693faf8",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "chore(release): prepare v1.0.8 (#98)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-07-17T13:53:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2713907a3001b471e46490b5caf67e1a42fd230e",
          "body": "* ci: remove duplicate push trigger — deploy-snapshot.yml covers post-merge validation\n\nci.yml and deploy-snapshot.yml both triggered on push to main and both\ncalled test.yml — running the full Java matrix (17/21/25 × 22 modules)\ntwice in parallel for every merge.\n\nRemoves ci.yml's push trigger so:\n\n[…]\nplicitly:\n\n- xyz.juandiii:ark-quarkus-jackson-vertx (runtime)\n- xyz.juandiii:ark-quarkus-jackson-vertx-deployment (deployment)\n\nMatches the existing pattern used for ark-quarkus-jackson + -deployment.",
          "is_bot": false,
          "headline": "merge from develop (#97)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-07-17T12:56:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "77fa18288dfa41940b52b341cc708571992a5dc7",
          "body": "* ci: remove duplicate push trigger — deploy-snapshot.yml covers post-merge validation\n\nci.yml and deploy-snapshot.yml both triggered on push to main and both\ncalled test.yml — running the full Java matrix (17/21/25 × 22 modules)\ntwice in parallel for every merge.\n\nRemoves ci.yml's push trigger so:\n\n[…]\ncontent appeared off-center to the left.\n\nTightens viewBox to 280×128 so it matches the actual content bounds:\nicon ends at x=120, wordmark ends near x=265. Centering now reflects\nthe visible content.",
          "is_bot": false,
          "headline": "Change brand (#96)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-24T18:08:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "86ea2387e47b05e1f62a772b14d425dd914f1697",
          "body": "Develop",
          "is_bot": false,
          "headline": "Merge pull request #95 from juandiii/develop",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-24T16:49:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "34ecedb1ecdd6cb0497a1401c6275b43d397b2b6",
          "body": "…n type\n\nAdds 3 tests per execution model (15 total):\n- fluent .raw() happy path (200 — body matches transport output)\n- fluent .raw() with .noThrow() on 4xx (404 — returns wrapper, no throw)\n- proxy RawResponse return type — auto-noThrow + status/body inspectable\n  (Vert.x has no proxy handler toda\n[…]\n\n- \"Capturing the raw response\" section in sync.md, async.md, reactor.md,\n  mutiny.md\n- \"RawResponse as a return type\" section in declarative-spring.md and\n  quarkus-jackson.md\n- README feature bullet",
          "is_bot": false,
          "headline": "test(raw): cover RawResponse access via fluent .raw() and proxy retur…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-24T16:45:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a791caf292ca53d7c2b423d3a458dd56f3a35f21",
          "body": "…uto-noThrow + retrieve raw)\n\nEach execution-model ReturnTypeHandler now detects RawResponse (or\nCompletableFuture<RawResponse> / Mono<RawResponse> / Uni<RawResponse>)\nas a valid proxy return type and:\n\n1. Toggles per-request noThrow so HTTP 4xx/5xx do not raise ApiException\n   before the handler ca\n[…]\nhVariable String id);\n\nwithout setting throw-on-error=false at the client level.\n\nNote: Vert.x execution model has no return-type handler today, so this\nchange is limited to sync/async/reactor/mutiny.",
          "is_bot": false,
          "headline": "feat(proxy): handle RawResponse return type in *ReturnTypeHandlers (a…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-24T15:24:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "83ebf20074d20edc3068a3356edc8a7a7243a64a",
          "body": "…execution models\n\nAdds a public raw() method to each *ClientResponse interface returning the\nunderlying RawResponse (sync), CompletableFuture<RawResponse> (async),\nMono<RawResponse> (reactor), Uni<RawResponse> (mutiny), or\nio.vertx.core.Future<RawResponse> (vertx).\n\nEach Default*ClientResponse alre\n[…]\nmbination with .noThrow()\nor client-level throwOnError(false): callers can inspect status, headers,\nand the raw body String regardless of HTTP status, without going through\ntype-based deserialization.",
          "is_bot": false,
          "headline": "feat(core): expose RawResponse via ClientResponse.raw() across all 5 …",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-24T15:21:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2a27f80381c822f839e3f36f58ece0f8a15db015",
          "body": null,
          "is_bot": false,
          "headline": "chore: add gitignore",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-24T14:48:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e9aa1b6d68aa8aa83a95555cbbdbcc1c66850e41",
          "body": "… guides\n\nAdds throw-on-error row to the per-client properties table in\ndocs/spring-boot.md (and docs/quarkus*.md if it exists), pointing at\nthe Permissive error handling section in sync.md for examples.",
          "is_bot": false,
          "headline": "docs(noThrow): document throw-on-error property in Spring and Quarkus…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-24T14:44:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "175ea30e8e1aff95a489cf682babd6c279f5b0c6",
          "body": "…a ArkRecorder\n\nAdds @WithName(\"throw-on-error\") @WithDefault(\"true\") boolean\nthrowOnError() to ArkClientNamedConfig and threads the value through\nArkRecorder to the underlying client builder.\n\nAllows @RegisterArkClient users on Quarkus to configure permissive error\nhandling declaratively:\n\n    ark.client.\"users-api\".throw-on-error=false",
          "is_bot": false,
          "headline": "feat(quarkus): bind throw-on-error in ArkClientNamedConfig + apply vi…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-24T14:42:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b599fbb27ddd499bbca203e6f5f62fd6cf3c881e",
          "body": "…entFactoryBean (sync + webflux)\n\nAdds @DefaultValue(\"true\") boolean throwOnError to ClientProperties in\nboth ArkProperties (sync) and ArkWebFluxProperties (webflux). Default\ntrue preserves current behavior.\n\nArkClientFactoryBean and ArkWebFluxClientFactoryBean apply the value to\nthe underlying buil\n[…]\nreading the per-client config down to the runtime client instance.\n\nAllows @RegisterArkClient users to configure permissive error handling\ndeclaratively:\n\n    ark.client.users-api.throw-on-error=false",
          "is_bot": false,
          "headline": "feat(spring): bind throw-on-error in ArkProperties + apply via ArkCli…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-24T14:39:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "452092ffe5590c89aca5b2b6ae4ad4c1513d9c6e",
          "body": "… + client-level default\n\nAdds 4 tests per execution model (20 total) covering:\n- default behavior: 4xx/5xx throws ApiException (unchanged)\n- per-request .noThrow(): response returned, status preserved\n- client-level throwOnError(false): all requests on that client permissive\n- combined: client default wins when request does not call .noThrow()\n\nAdds Permissive error handling section to each execution model doc\n(sync.md, async.md, reactor.md, mutiny.md) and a feature bullet in\nREADME.md.",
          "is_bot": false,
          "headline": "test(noThrow): cover sync/async/reactor/mutiny/vertx noThrow behavior…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-24T14:21:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1a2390e86a8804eadf1c0f9152417f64148ff4a0",
          "body": "…rowOnError builder option\n\nEach execution model's request interface (sync, async, reactor, mutiny,\nvertx) now declares noThrow() returning its own type for fluent chaining.\nThe implementation is inherited from AbstractClientRequest — no\nper-implementation changes.\n\nEach *ArkClient's createRequest()\n[…]\nuest before returning.\n\nUpdates AbstractArkClientTest stub to thread the new constructor\nparameter so the build compiles after the AbstractArkClient signature\nchange introduced in the previous commit.",
          "is_bot": false,
          "headline": "feat(client): expose noThrow() in all 5 ClientRequest interfaces + th…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-24T14:13:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "76fd10f4d86d03546dc03d323ca4f8fa6b09ff66",
          "body": "…ntRequest\n\nAdds a per-request 'throwOnError' field to AbstractClientRequest (default\ntrue, preserves current behavior). validateResponse() now short-circuits\nwhen the flag is false, letting the caller inspect the response regardless\nof status.\n\nFluent opt-out: request.noThrow(). Protected setter th\n[…]\no users can change the\ndefault across all requests on a single client.\n\nThis commit leaves AbstractArkClient's constructor breaking (new param)\nand each *ArkClient subclass will be updated in Phase B.",
          "is_bot": false,
          "headline": "feat(core): add throwOnError flag + noThrow() opt-out in AbstractClie…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-24T14:08:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c5e83e482222f0cfcd51eed15b94a1a4e9953c24",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'worktree-agent-afd90226bac238864' into develop",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T22:05:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cc6bd40cdbf909b7997cf2e5a0c8be8fb7a9a836",
          "body": "Previously, deploy-snapshot tried to publish every push to main to the\nNexus snapshot repo, gated only by a brittle commit-message filter\n(if: !contains(message, 'Release v')). That filter failed to match\nprepare-release.yml's actual commit subject ('chore(release): prepare\nv1.0.7 (#88)'), so releas\n[…]\n jobs proceed; otherwise both are skipped and the run completes\ngreen with a notice annotation explaining what was decided.\n\nSource of truth is now the artifact being deployed, not the commit\nmessage.",
          "is_bot": false,
          "headline": "fix(ci): skip snapshot deploy when pom version is not -SNAPSHOT",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T21:58:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "21cf140407403f21b52b35b6e4b22b04caaee726",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into develop",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T21:48:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "858cc35924c08757cf2173b2ccbf6703df154b73",
          "body": null,
          "is_bot": true,
          "headline": "chore(release): prepare 1.0.8-SNAPSHOT",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-19T21:36:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "142524ceafc7ec3c17af2d99cf27c2355f7908c6",
          "body": null,
          "is_bot": false,
          "headline": "Merge from main",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T21:35:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8049416489b7333a2bcf932c3fa0c97ee89b004e",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "chore(release): prepare v1.0.7 (#88)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T21:30:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "08203bbf67c3566f69e8ef0d417752b9ba7c7686",
          "body": "Adds compat-weekly workflow as a callable target and invokes it from\nprepare-release.yml's compat job (runs in parallel with test). The\nrelease PR is only opened if both Java matrix and framework-matrix pass.\n\nThis catches the case where an upstream Spring Boot or Quarkus patch\nregression slipped through between cron runs — release is blocked until\neither the regression is fixed or the compat matrix is updated to mark\nthe affected cell as Known-broken.",
          "is_bot": false,
          "headline": "ci(release): gate release PR on compat-matrix passing",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T21:29:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b9689420afb95eed0e3c8a45f6b3023a616b6499",
          "body": "* refactor(pom): drop redundant spring-framework-bom (use spring-boot's transitive)\n\nSpring Boot's BOM already imports the matching spring-framework-bom\ntransitively. The explicit import was double-pinning the Spring Framework\nversion and would have required override during framework matrix tests.\n\n\n[…]\n combinations of Spring Boot 4.0/\n4.1 and Quarkus 3.33 LTS/3.35 are verified weekly by the compat-weekly\nworkflow.\n\nStatus tiers: 'Verified on every PR', 'Verified weekly', 'Untested',\n'Known-broken'.",
          "is_bot": false,
          "headline": "Add more GitHub Actions  (#87)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T21:12:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d01aad93039778b475069abf80c71354eb4760c4",
          "body": "Publishes docs/compatibility.md documenting which framework combinations\nArk 1.0.x supports. The default Spring Boot + Quarkus combination is\nverified on every PR; the latest-patch combinations of Spring Boot 4.0/\n4.1 and Quarkus 3.33 LTS/3.35 are verified weekly by the compat-weekly\nworkflow.\n\nStatus tiers: 'Verified on every PR', 'Verified weekly', 'Untested',\n'Known-broken'.",
          "is_bot": false,
          "headline": "docs(compat): add compatibility matrix verified by weekly cron",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T21:00:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "61ccd578edf36d780cb1b9c447e43dcf00588f96",
          "body": "Replaces the per-PR framework-matrix job (which used hardcoded versions\nand never caught upstream regressions) with a separate weekly workflow\nthat queries Maven Central for the LATEST patch versions of Spring Boot\n4.0/4.1 and Quarkus 3.33 LTS/3.35 and runs the full test suite against\nthe 4 latest-p\n[…]\n\nfail-fast: false so one broken cell does not hide the others.\n\nOn scheduled failure, auto-creates an issue with the 'compat-regression'\nlabel so the reviewer can triage upstream regressions promptly.",
          "is_bot": false,
          "headline": "ci(compat): add weekly cron workflow for Spring Boot + Quarkus matrix",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T21:00:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "decb851dd880555bfacbd2fc71da4c6ed10ba93a",
          "body": "… transitive)\n\nSpring Boot's BOM already imports the matching spring-framework-bom\ntransitively. The explicit import was double-pinning the Spring Framework\nversion and would have required override during framework matrix tests.\n\nEffective Spring Framework version is unchanged (7.0.8, sourced via\nspring-boot-dependencies).",
          "is_bot": false,
          "headline": "refactor(pom): drop redundant spring-framework-bom (use spring-boot's…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T20:27:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f563e8d8aa6f739098c93b5a3e96f9b088282c45",
          "body": "Refactor Structure Modules",
          "is_bot": false,
          "headline": "Merge pull request #86 from juandiii/develop",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T20:03:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "67db5a919fe0723a5fb2f6198464a5506bcbb64c",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into develop",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T19:59:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e6ad58892b0b478365f49b12cec0598e1e08c9ac",
          "body": "- CHANGELOG: document subdirectory grouping and Spring package rename\n  as a breaking change.\n- CONTRIBUTING: add 'Module structure' section pointing at the new\n  layout.",
          "is_bot": false,
          "headline": "docs: update CHANGELOG and CONTRIBUTING for module restructure",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T18:44:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c52388325d82e20081fe21f0c5e1e3108d3016ff",
          "body": "Aligns the Spring starter packages with the xyz.juandiii.ark.* convention\nused everywhere else in the codebase. Java classes, META-INF auto-config\nimports, and AOT factories are all updated together.\n\nBREAKING CHANGE: users that explicitly import any of these symbols must\nupdate the import path:\n- x\n[…]\n xyz.juandiii.ark.spring.webflux.ArkWebFluxProperties\n\nAuto-configuration (the default mechanism) is unaffected — users that\nonly depend on the starter via Maven/Gradle do not need to change\nanything.",
          "is_bot": false,
          "headline": "refactor: rename xyz.juandiii.spring.* to xyz.juandiii.ark.spring.*",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T18:41:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e4f4985861bfbceb30cbd1ebc0df506700d1d877",
          "body": "Groups 19 modules under: core/, execution-models/, transports/,\nserializers/, proxies/, starters/, extensions/. Pattern matches\nApache Camel and Quarkus.\n\nEach child pom adds <relativePath>../../pom.xml</relativePath>.\n\nBuild coordinates (groupId, artifactId, version) unchanged; users\ndo not need to update dependency declarations.",
          "is_bot": false,
          "headline": "refactor: move modules into semantic subdirectories",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T18:37:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c75b5810b686579cd6bae835285f495f698083fc",
          "body": null,
          "is_bot": false,
          "headline": "docs(readme): drop Status block",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:05:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7d820bd2ebd7ee718c7fa2f3e34fb0937e6493fd",
          "body": "The Status callout advertised CHANGELOG.md \"for what's new and migration\nnotes per release\", but the file is frozen at v1.0.6 — 32 commits behind\nthe actual state including all of the recent transport refactor and\nSpring async parity work. Linking it as the source of truth misleads\nusers who click expecting current change history.\n\nRemoved the sentence. The file remains listed under Documentation (it\nexists, just stale). When CHANGELOG is brought current, the Status\nblock sentence can come back.",
          "is_bot": false,
          "headline": "docs(readme): drop stale CHANGELOG link from Status block",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5cf55ebb39247a2b30cbd01213bb4bf089d5b8bc",
          "body": "…rove audit)\n\nCloses 9 findings from the README audit. R1 (stale BOM version) deferred —\nhandled by the release pipeline automatically.\n\nChanges:\n\nR2 — composable decorators visible\n- New \"Composable Decorators\" section with concrete .with(Retry.of(...))\n  snippet\n- Why Ark? gains \"Generic Transport\n[…]\n(sync + async +\n  WebFlux)\" was previously \"sync + WebFlux\"\n\nAlso adds a \"Status\" callout flagging 1.x active development without\nformal SemVer guarantees, matching how releases are actually shipping.",
          "is_bot": false,
          "headline": "docs(readme): rewrite to reflect post-refactor state (R2-R10 from imp…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "59c61f4cf0dc439f6721c7641f33acb3270ee01c",
          "body": "… decorator chain\n\nAfter the recent transport-layer refactors (plans 013-017 + Nivel 2\nelimination), all docs that referenced classes deleted or renamed in\nthis session were stale. Users following code snippets from docs would\nhit compile errors against the current API.\n\nThis commit refreshes 11 doc\n[…]\nn and the\n  ArkJdkAsyncTransport bean added by the recent Spring async parity work\n- quarkus.md: notes that ArkRecorder constructs per-mode transports\n  based on @RegisterArkClient method return types",
          "is_bot": false,
          "headline": "docs: update for Transport<R> unification, ArkJdkHttpTransport split,…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2208db4482b5447a8848d5d73351e4d5e769624b",
          "body": "…ction\n\n@RegisterArkClient interfaces register beans dynamically through\nArkClientFactoryBean. Runtime is fine but static analysis tools\n(IntelliJ IDEA in particular) can't see the registration and emit\n\"Could not autowire. No beans of type X found\" warnings on injection\npoints.\n\nDocument the two wo\n[…]\n/spring-boot.md gains an \"IDE autowiring hint\" subsection under\nDeclarative Clients. docs/declarative-spring.md gets a short callout\nin the Automatic section linking back to the canonical explanation.",
          "is_bot": false,
          "headline": "docs(spring): document @Component workaround for IDE autowiring inspe…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "670627e986588bd3cd987ef7a00dfa8937ad896f",
          "body": "…ed exception\n\nA user calling an async client and hitting any failure (HTTP error,\ntransport timeout, connection refused) saw a stacktrace that ended in\nArk internals + CompletableFuture / ForkJoinPool machinery — never their\nown code. They could see WHAT failed but not WHERE they invoked it from,\nb\n[…]\ng the error-then-\nsuppressed branch and the success-no-suppressed branch.\n\nSame problem exists in ReactorClientRequest / MutinyClientRequest /\nVertxClientRequest — addressed in follow-up if requested.",
          "is_bot": false,
          "headline": "fix(async): preserve caller stack site in async failures via suppress…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6ed27928f62de5d079118a69b017fc9a0c1e5ee8",
          "body": "…tchExchange + class-level fallbacks\n\nSpringAnnotationResolver was reading contentType only for @PostExchange\nand @PutExchange (with class-level @HttpExchange.contentType fallback)\nand accept on no verb at all. Users annotating\n    @GetExchange(value = \"/users/{id}\", accept = \"application/json\")\nhad\n[…]\n: accept + contentType inherit from class, methods\n  override\n- PatchContentType: @PatchExchange contentType now honored (regression\n  guard)\n- NoAcceptSet: absent accept stays null (regression guard)",
          "is_bot": false,
          "headline": "fix(spring): read accept on all @*Exchange verbs + contentType on @Pa…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c15d9d8dbae4aca2d921338a1f94296c0920a27c",
          "body": "…wiring)\n\nark-spring-boot-starter previously produced only sync Ark wiring;\nasync (CompletableFuture<T>) required hand-rolled @Bean configuration.\nThis commit closes the gap so a @RegisterArkClient interface declaring\nmethods that return CompletableFuture<T> is auto-detected and proxied\nthrough Asyn\n[…]\nng users now get the same auto-wiring ergonomics for async as\nQuarkus users have had via @RegisterArkClient. Reactive\n(ReactorArkClient) is still handled separately by ark-spring-boot-starter-webflux.",
          "is_bot": false,
          "headline": "feat(spring-boot): async execution-model parity (AsyncArkClient auto-…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e049e55a8997d322c55ad379f3f3f882f04cae05",
          "body": "…ers, split ArkJdkHttpTransport\n\nCompletes Option E unification — every transport in production is now\neither an HttpTransport or a Transport<R> with concrete R; no peer\nhierarchy.\n\nDeleted (no remaining production callers after plan 017 migrations):\n- AsyncHttpTransport interface\n- RetryAsyncTransp\n[…]\nsyncArkClient builders, or using RetryAsyncTransport\n/ RetryTransport / AsyncHttpTransport / Adapters directly, must migrate.\nAcceptable in 1.0.x snapshot development; no formal SemVer obligation\nyet.",
          "is_bot": false,
          "headline": "refactor(transport)!: eliminate AsyncHttpTransport + deprecated wrapp…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bde9dd0d08b3db2799a7bd1a8627e8c61dd62bb0",
          "body": "…uses decorator chain symmetrically\n\nArkClient.Builder.transport() signature widens from HttpTransport to\nTransport<RawResponse>. HttpTransport extends Transport<RawResponse> so\nexisting callers (Spring auto-config, user code) keep compiling without\nchanges. New code can pass a decorator-chain resul\n[…]\nsync and async paths\nexpose the same composable decorator API in production wiring, with the\ndeprecated RetryTransport / RetryAsyncTransport wrappers kept only for\nsnapshot consumers' migration cycle.",
          "is_bot": false,
          "headline": "refactor(client): builders accept Transport<R> natively, ArkRecorder …",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fef7d8c2a744721fba2edde72e3768ab3f2ec726",
          "body": "…ecate RetryAsyncTransport\n\nAdds Adapters.toAsync (reverse adapter from\nTransport<CompletableFuture<RawResponse>> back to AsyncHttpTransport) so\ncallers like AsyncArkClient.Builder.transport(...) can consume the result\nof the new decorator chain.\n\nArkRecorder's async wiring migrates from\n    new Ret\n[…]\n\nAPI change to accept Transport<RawResponse>; deferred to a future plan.\n\nAfter this commit, RetryAsyncTransport has zero non-test, non-self\nproduction callers — ready for removal in a future cleanup.",
          "is_bot": false,
          "headline": "refactor(quarkus,async): migrate ArkRecorder to decorator chain, depr…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1e731d82ce2b01b55bede6c21272553a6ec1ff76",
          "body": "…nse>\n\nRetryTransport becomes a thin @Deprecated wrapper that constructs a\nRetry<RawResponse> with SyncRetryOps internally and forwards send /\nsendBinary. The package-private precomputeDelays() is preserved by\ndelegating to Retry.precomputeDelays (now public for cross-package\naccess from the wrapper\n[…]\nture plan once callers migrate to the new shape:\n\n    transport.with(Retry.of(policy, new SyncRetryOps()))\n\nAll 20 RetryTransportTest cases pass through the wrapper, confirming\nbehavioral equivalence.",
          "is_bot": false,
          "headline": "refactor(retry): deprecate RetryTransport, delegate to Retry<RawRespo…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "702e44d65dc512d2a9e929dce914edb9d2542fb4",
          "body": "…for async\n\nAsyncHttpTransport intentionally does NOT extend Transport<R> — the\ndual-mode ArkJdkHttpTransport prevents it (Java type system). Async users\nwho want the new transport.with(Retry.of(...)) ergonomics opt in via\nAdapters.fromAsync(asyncTransport), which returns a\nTransport<CompletableFutu\n[…]\nn scheduler\nfor delay — mirroring RetryAsyncTransport's mechanics.\n\nThis is the opt-in path. The canonical async retry (RetryAsyncTransport)\nremains untouched and is still recommended for typical use.",
          "is_bot": false,
          "headline": "feat(transport): add Adapters.fromAsync + AsyncRetryOps escape hatch …",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "40c2db1e87951ba5a8c7d11750ffb91214c5df70",
          "body": "Three RetryOps<R> implementations completing the decorator chain story\nfor reactor / mutiny / vertx execution models — none of which previously\nhad a retry decorator (users fell back to ecosystem-native .retry()).\n\nReactorRetryOps uses Mono.defer + flatMap + onErrorResume + delaySubscription.\nMutiny\n[…]\nexhausted, non-retryable-status,\ntransport-exception-retry, and (reactor only) POST no-retry-by-default.\nH3 gate passes for all three reactive ecosystems — the spike's biggest\nuncertainty is resolved.",
          "is_bot": false,
          "headline": "feat(transport): add ReactorRetryOps, MutinyRetryOps, VertxRetryOps",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e36e8599f9a0a80e7ba770ab92b0866fe2928246",
          "body": "…RetryOps\n\nRetry<R> in ark-core/.../decorator/ wraps any Transport<R> with the\nexponential-backoff retry policy. Execution-model-agnostic — the per-model\nmechanics live in RetryOps<R> strategy passed at construction.\n\nRetryOps.adapt() defines try/catch-style composition (for sync, async,\nreactive) o\n[…]\n:\nfirst-call success, retry-then-succeed, exhausted, non-retryable status,\nPOST no-retry-by-default, timeout exception retries, custom retryOn set,\nand interrupt-during-sleep. H3-sync gate passes 8/8.",
          "is_bot": false,
          "headline": "feat(transport): add Retry<R> decorator + RetryOps<R> strategy + Sync…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1466c2bbfd831ae0cd187756d76665ef0b81299f",
          "body": "…mode interfaces\n\nAdds Transport<R> in ark-core as the parameterized contract that lives\nunderneath all transport interfaces. HttpTransport, ReactorHttpTransport,\nMutinyHttpTransport, and VertxHttpTransport now extend it with their\nrespective R (RawResponse, Mono<RawResponse>, Uni<RawResponse>,\nFutu\n[…]\nthod so decorators compose as\ntransport.with(Retry.of(policy, ops)).\n\nZero changes to concrete transports or auto-config sites. H2 gate passes\n(./mvnw clean verify exits 0 with all 5 modules touched).",
          "is_bot": false,
          "headline": "feat(transport): add generic Transport<R> base and refactor 4 single-…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5143a8002481bf900744c240cbdc8582ae2bfd15",
          "body": "…eption to prevent silent UTF-8 corruption\n\nEvery transport interface (HttpTransport, AsyncHttpTransport,\nReactorHttpTransport, MutinyHttpTransport, VertxHttpTransport) declared\na `default sendBinary(byte[] body, ...)` that fell back to\n`send(..., new String(body, UTF_8), ...)`. That silently corrup\n[…]\nmous\nimplementation declaring only the text send method, invoke sendBinary,\nand assert the UnsupportedOperationException. These guard against any\nfuture regression that brings the lossy fallback back.",
          "is_bot": false,
          "headline": "fix(transport): make sendBinary default throw UnsupportedOperationExc…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "847d299ee957891073dcd1af846e184201228cf2",
          "body": "…EBUG log path\n\nTransportLogger predated LoggingInterceptor and produced a parallel,\nunredacted log stream at DEBUG: every request and response was formatted\nverbatim with full headers and body. That bypassed plan 001 / plan 007\nheader + body redaction, so enabling DEBUG on transport loggers leaked\n\n[…]\n each underlying HTTP client's own wire logger\n(jdk.httpclient.HttpClient.log, org.apache.hc.client5.http,\nreactor.netty.http.client.HttpClient, io.vertx.core.http.impl) for\ntransport-level debugging.",
          "is_bot": false,
          "headline": "chore(transport): remove TransportLogger duplication and unredacted D…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c4e4471327491ffba2c72cfe3b1f91743f35d94d",
          "body": "… documented contract\n\nCLAUDE.md declares \"Error validation at framework level via\nAbstractClientRequest.validateResponse() + centralized RawResponse.isErrorStatus()\"\n— the implementation contradicted that. Every concrete transport (JDK,\nApache, Reactor, Vertx Future, Vertx Mutiny) threw ApiExceptio\n[…]\ntwo Vertx test classes to recover\nbranch coverage lost when inline-validation branches went away. Simplified\nthe now-redundant `e instanceof ApiException` filter in reactor / vertx\notherwise() blocks.",
          "is_bot": false,
          "headline": "refactor(transport): move HTTP error validation to framework, restore…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "abfbfcb5177059776116f7e3428a3919977dde33",
          "body": "The public surface that users see in IDE autocomplete and on javadoc.io\nhad only class-level @author tags. No @param, @return, @throws, no\nthread-safety expectations, no body-parameter contracts — anyone\nimplementing a custom HttpTransport or JsonSerializer was guessing.\n\nAdd javadoc to twelve files\n[…]\nics; ClientRequest.retrieve()\nexception model (ArkException for transport, ApiException for HTTP >=\n400). No behavior change — javadoc-only.\n\nmvn javadoc:javadoc passes with no error or warning lines.",
          "is_bot": false,
          "headline": "docs(api): add javadoc to public API surface in ark-core",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "92d9f2e76fb900e6028962cbc1b81ac9539af70c",
          "body": "InsecureSslContext logs a runtime WARNING when active, but neither\nREADME nor the Spring/Quarkus integration guides explained what\ntrust-all=true means. Users copying snippets from docs for local dev\ncould ship them straight to production.\n\nREADME gains a Security/TLS subsection explaining the safe \n[…]\n.\n\ntrust-all stays available — corporate proxies and ephemeral CI legitimately\nneed it — but accidental production use is now visible at every layer\n(runtime log + every doc that mentions the option).",
          "is_bot": false,
          "headline": "docs: warn about trust-all SSL risk in README and integration guides",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8013509d4ccf9a6fe4befc77fd92d9de747da195",
          "body": "…DY log level\n\nPlan 001 covered headers; bodies at BODY level were still logged verbatim.\nReal-world JSON ({\"password\":\"…\",\"access_token\":\"…\"}) and form bodies\n(password=hunter2) leaked the same credentials that the header redactor\nalready blocked.\n\nAdd JSON_SECRET + FORM_SECRET regex patterns cover\n[…]\ncases (JSON password, access_token, apiKey\ncasing variations, form password, form starting with secret, no-secrets\nverbatim, response body redaction, body > 1024 truncated after redaction,\nnull body).",
          "is_bot": false,
          "headline": "fix(security): redact sensitive keys in request/response bodies at BO…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4494149be4f7e4866413eac62dc6bcddc35d0ea3",
          "body": "….pow per attempt\n\nBoth RetryTransport (sync) and RetryAsyncTransport (async) called\nMath.pow(policy.multiplier(), attempt - 1) on every retry attempt to\ncompute exponential backoff. Math.pow is a generic floating-point\nexponent routine — overkill for small integer attempts (typically 1–5)\nrunning o\n[…]\n indexes into the array, clamped to the\nlast entry as a defensive bound. Identical jitter algorithm preserved.\n\nAdds 2 sequence-assertion tests per transport (doubling sequence and\nmaxDelay clamping).",
          "is_bot": false,
          "headline": "perf(retry): precompute exponential backoff multipliers to avoid Math…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cd7578e520ca59cba5c1cebbab046405988c8494",
          "body": "AbstractClientRequest.normalizedUrl() ran String.replaceAll(\"(?<=[^:])//+\", \"/\")\non every request, recompiling the Pattern each call. Hoist to a\nprivate static final Pattern DOUBLE_SLASH and call matcher().replaceAll()\ndirectly. Behavior is byte-equivalent — the existing path-normalization\ntests cover the regex.",
          "is_bot": false,
          "headline": "perf(core): hoist URL normalization regex to static Pattern",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8fa0f95c75f3898dc1f2e93c06080fa34fed5fc2",
          "body": "The interrupt path in RetryTransport restores the thread interrupt flag\nand throws RequestInterruptedException, but no test exercised it. A\nfuture refactor could silently break thread-cancellation semantics —\nleaked retry threads, swallowed interrupts, hangs during shutdown.\n\nAdds two cases:\n\n- give\n[…]\n), starts a worker on a 10s delay,\n  interrupts it, and asserts RequestInterruptedException with\n  InterruptedException cause. Bounded join (3s) so a regression hangs\n  the test rather than the suite.",
          "is_bot": false,
          "headline": "test(retry): cover interrupt handling in RetryTransport",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3eacca4daa2f0f14d612cc84508f284f4484b701",
          "body": "SECURITY.md gives security researchers a canonical disclosure channel\n(GitHub private advisory + maintainer email) — without it, vulnerabilities\neither get filed as public issues or never reported. .editorconfig pins\ncharset, EOL, final-newline, trailing-whitespace and indent so contributor\nIDEs stop producing cosmetic-only diffs.\n\nREADME gets a Security section linking SECURITY.md.\n\nCODE_OF_CONDUCT.md from the same plan is handled separately by the\nmaintainer.",
          "is_bot": false,
          "headline": "chore: add SECURITY.md, .editorconfig and README security section",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:02:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1d94bca7aee9686ee4d70074d1a5b47736be4a8c",
          "body": "…t-Disposition\n\nMultipartEncoder.sanitize() only escaped quotes and stripped CR/LF. Other\ncontrol chars (0x00-0x1F, 0x7F DEL) survived into the Content-Disposition\nquoted-string, violating RFC 7578 / RFC 2183. Strict parsers reject the\nwhole frame; lax ones may misalign field boundaries.\n\nAdd a priv\n[…]\n — the API contract is sanitize (transform), not\nreject.\n\nAdds 6 MultipartEncoderTest cases covering tab, NUL, DEL, SOH in field\nnames, plus regression guards for the original CRLF and quote handling.",
          "is_bot": false,
          "headline": "fix(multipart): strip control characters from filename/name in Conten…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:02:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "82aa9d16a887a0a1b65a84c817e8e78d69f84e93",
          "body": "…null\" string\n\nWhen a @PathVariable / @PathParam argument was null, String.valueOf(null)\nproduced the literal string \"null\" in the URL: GET /users/null. Callers\nsaw a 404 or, worse, hit a route that matched /users/{anything} and\nreturned the wrong record. No log, no exception — a silent correctness\n\n[…]\nrTest (3 cases\neach): the null-arg throw path, multi-arg null detection that names the\nspecific null variable, and the null-args-array case that preserves the\noriginal behavior (no params to resolve).",
          "is_bot": false,
          "headline": "fix(proxy): reject null path variables with ArkException instead of \"…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:02:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d50fe0c88f4567ceeab0813b7abdf2102f52b785",
          "body": "…ve binary fidelity\n\nRetryAsyncTransport only overrode sendAsync; sendBinaryAsync fell through\nto the AsyncHttpTransport default, which calls new String(body, UTF_8) on\nthe byte array. Any byte that is not valid UTF-8 — images, gzip, PDF,\nprotobuf, anything binary — silently corrupted when an async \n[…]\n no duplication.\n\nAdds 4 RetryAsyncTransportTest cases using non-UTF8 bytes\n(0xFF 0xFE 0x00 0x01 0xC0 0x80 0x7F 0x80) and an ArgumentCaptor to\nverify byte-for-byte equality across every retry attempt.",
          "is_bot": false,
          "headline": "fix(async): override sendBinaryAsync in RetryAsyncTransport to preser…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:02:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e166da55a0d2fc19ad1374eb2ed578bee1b671c5",
          "body": "…or ApiException\n\nThe test asserted that an empty server response surfaces specifically as\nArkException. Reactor Netty actually surfaces premature server close as a\nsynthetic HTTP 400 (BadRequestException, an ApiException) — neither path\nviolates Ark's contract: the caller always gets a typed framework exception.\n\nRename to thenEmitsTypedException and accept either exception root.",
          "is_bot": false,
          "headline": "test(reactor): relax empty-response assertion to accept ArkException …",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:02:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49910711bf9738b5bbe829684b83cec43111a8e2",
          "body": "Logged request/response headers at HEADERS and BODY levels included\nAuthorization, Cookie, X-API-Key and other credentials verbatim. A\nmisconfigured ark.logging.level=HEADERS in production leaked bearer\ntokens to centralized log aggregators.\n\nAdd SENSITIVE_HEADERS set + redact() helper that returns \n[…]\ns left untouched; redaction applies only to log output.\n\nAdds 8 LoggingInterceptorTest cases under a new @Nested HeaderRedaction,\nusing a java.util.logging Handler to capture the actual logged string.",
          "is_bot": false,
          "headline": "fix(security): redact sensitive headers in LoggingInterceptor",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:02:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "560db57e3e73b90b55470d436fec00fa2a19c8f9",
          "body": null,
          "is_bot": false,
          "headline": "fix(ci): remove step gpg",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T16:58:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f3570ecdbda793f84f7a4b346bb90f25bbd308d2",
          "body": "* fix(spring): convert @ConfigurationProperties to records for native compatibility\n\n  Convert ArkProperties and ArkWebFluxProperties from setter-based classes\n  to records with @ConstructorBinding + @DefaultValue.\n\n  JavaBean-based @ConfigurationProperties fail to bind Map<String, NestedClass>\n  in\n[…]\nk-bom snapshot repo override to inherit from profile\n\n---------\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Fix GitHub Actions (#85)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-18T20:12:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "73772a80ae3b56beb360471833c89f9601331d79",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into develop",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-18T20:08:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "efa0783f2147949f558816bc1193779e61246bfb",
          "body": null,
          "is_bot": false,
          "headline": "fix(ci): remove ark-bom snapshot repo override to inherit from profile",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-18T20:07:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e8d0404303191572bf0c470a450fd732538c2c38",
          "body": "* fix(spring): convert @ConfigurationProperties to records for native compatibility\n\n  Convert ArkProperties and ArkWebFluxProperties from setter-based classes\n  to records with @ConstructorBinding + @DefaultValue.\n\n  JavaBean-based @ConfigurationProperties fail to bind Map<String, NestedClass>\n  in\n[…]\neply.github.com>\n\n* ci: fix snapshot upload to nexus\n\n---------\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Fix Native Config Properties on Runtime (#84)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-18T19:58:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5f43a73ea0c4f641415ff0b67a9a200e319882b9",
          "body": null,
          "is_bot": false,
          "headline": "ci: fix snapshot upload to nexus",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-18T19:52:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "52733d966746b94c3a49ba6aab8775fa24287331",
          "body": "…ates (#83)\n\n* chore(deps): bump the quarkus group with 3 updates (#78)\n\nBumps the quarkus group with 3 updates: [io.quarkus:quarkus-bom](https://github.com/quarkusio/quarkus), io.quarkus:quarkus-extension-processor and [io.quarkus:quarkus-extension-maven-plugin](https://github.com/quarkusio/quarkus\n[…]\n\nSigned-off-by: dependabot[bot] <support@github.com>\n\n---------\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump the spring-boot group across 1 directory with 3 upd…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-18T19:52:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "35b4209ece2a3b0602a4570b26dd7b319c32a895",
          "body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.2 to 6.0.3.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/de0fac2e4500dabe0009e67\n[…]\nirect:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "ci: bump actions/checkout from 6.0.2 to 6.0.3 (#82)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-18T19:50:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "74ab6d6f077aa68c1600aa0c64b20fe8e558f6ef",
          "body": "Bumps [org.apache.maven.plugins:maven-surefire-plugin](https://github.com/apache/maven-surefire) from 3.5.2 to 3.5.5.\n- [Release notes](https://github.com/apache/maven-surefire/releases)\n- [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.5.2...surefire-3.5.5)\n\n---\nupdated-depend\n[…]\nirect:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump org.apache.maven.plugins:maven-surefire-plugin (#81)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-18T19:50:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3e754b45bf8980f8a4a4dafc862b4f4880c9da76",
          "body": "Bumps [org.apache.maven.plugins:maven-gpg-plugin](https://github.com/apache/maven-gpg-plugin) from 3.2.7 to 3.2.8.\n- [Release notes](https://github.com/apache/maven-gpg-plugin/releases)\n- [Commits](https://github.com/apache/maven-gpg-plugin/compare/maven-gpg-plugin-3.2.7...maven-gpg-plugin-3.2.8)\n\n-\n[…]\nirect:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump org.apache.maven.plugins:maven-gpg-plugin (#80)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-18T19:50:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "72929369a8a86afea2ea8d9e11aa6fe0c843c17e",
          "body": "Bumps [org.apache.maven.plugins:maven-compiler-plugin](https://github.com/apache/maven-compiler-plugin) from 3.14.0 to 3.15.0.\n- [Release notes](https://github.com/apache/maven-compiler-plugin/releases)\n- [Commits](https://github.com/apache/maven-compiler-plugin/compare/maven-compiler-plugin-3.14.0.\n[…]\nirect:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump org.apache.maven.plugins:maven-compiler-plugin (#79)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-18T19:50:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b942c368a2198d4585fc0a1eead8d2f140f322b0",
          "body": null,
          "is_bot": false,
          "headline": "docs: fix typos in documentation",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-18T19:50:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "39ca58d1b865452a27c202f841ad2d45620b1734",
          "body": "…ompatibility\n\n  Convert ArkProperties and ArkWebFluxProperties from setter-based classes\n  to records with @ConstructorBinding + @DefaultValue.\n\n  JavaBean-based @ConfigurationProperties fail to bind Map<String, NestedClass>\n  in GraalVM native due to generic type erasure. Records preserve generic types\n  in the canonical constructor signature, allowing Spring Boot AOT to generate\n  correct binding code at build time.\n\n  Fixes empty ark.client.* Map in native image mode.",
          "is_bot": false,
          "headline": "fix(spring): convert @ConfigurationProperties to records for native c…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-18T19:50:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "238c7b9817e2980f00aa21f49a6029a8114d548e",
          "body": "Bumps the quarkus group with 3 updates: [io.quarkus:quarkus-bom](https://github.com/quarkusio/quarkus), io.quarkus:quarkus-extension-processor and [io.quarkus:quarkus-extension-maven-plugin](https://github.com/quarkusio/quarkus).\n\n\nUpdates `io.quarkus:quarkus-bom` from 3.34.5 to 3.35.0\n- [Release no\n[…]\npe: version-update:semver-minor\n  dependency-group: quarkus\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump the quarkus group with 3 updates (#78)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-18T18:38:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dae9535bb0fefce074fa23bbc2d1b2b992e1ce95",
          "body": null,
          "is_bot": true,
          "headline": "chore(release): prepare 1.0.7-SNAPSHOT",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-22T14:28:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "21e6ab81a35dcc8bbcc4ac74d23be50d8be827ae",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "chore(release): prepare v1.0.6 (#76)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-04-22T14:21:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a43097159ed41b5712628f1adac36b1b70cbd6f9",
          "body": "* fix: improve github actions\n\n* chore: Add generate full Changelog",
          "is_bot": false,
          "headline": "Develop (#75)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-04-22T14:15:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "949efcf3e6f717a9d7c3c9d83820dc2e45f7491e",
          "body": "…n (#74)\n\nBumps [org.sonatype.central:central-publishing-maven-plugin](https://github.com/sonatype/central-publishing-maven-plugin) from 0.7.0 to 0.10.0.\n- [Commits](https://github.com/sonatype/central-publishing-maven-plugin/commits)\n\n---\nupdated-dependencies:\n- dependency-name: org.sonatype.centra\n[…]\n.\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Juan Diego López <juandiegolopezve@gmail.com>",
          "is_bot": true,
          "headline": "chore(deps): bump org.sonatype.central:central-publishing-maven-plugi…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-22T04:48:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a7ee8d205ba00d5b1d4c62e2846c386e0e8872cb",
          "body": "Bumps [org.codehaus.mojo:flatten-maven-plugin](https://github.com/mojohaus/flatten-maven-plugin) from 1.6.0 to 1.7.3.\n- [Release notes](https://github.com/mojohaus/flatten-maven-plugin/releases)\n- [Commits](https://github.com/mojohaus/flatten-maven-plugin/compare/1.6.0...1.7.3)\n\n---\nupdated-dependen\n[…]\n.\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Juan Diego López <juandiegolopezve@gmail.com>",
          "is_bot": true,
          "headline": "chore(deps): bump org.codehaus.mojo:flatten-maven-plugin (#73)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-22T04:44:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "af24fa0445f9f6e5684fefd397acdbfdd0cb82ea",
          "body": "…#72)\n\nBumps [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.11.2 to 3.12.0.\n- [Release notes](https://github.com/apache/maven-javadoc-plugin/releases)\n- [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.11.\n[…]\n.\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Juan Diego López <juandiegolopezve@gmail.com>",
          "is_bot": true,
          "headline": "chore(deps-dev): bump org.apache.maven.plugins:maven-javadoc-plugin (…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-22T04:34:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d081768fdcba5ec3f07e724c46961d8225fa02e1",
          "body": "Bumps the quarkus group with 3 updates: [io.quarkus:quarkus-bom](https://github.com/quarkusio/quarkus), io.quarkus:quarkus-extension-processor and [io.quarkus:quarkus-extension-maven-plugin](https://github.com/quarkusio/quarkus).\n\n\nUpdates `io.quarkus:quarkus-bom` from 3.33.1 to 3.34.5\n- [Release no\n[…]\n.\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Juan Diego López <juandiegolopezve@gmail.com>",
          "is_bot": true,
          "headline": "chore(deps): bump the quarkus group with 3 updates (#71)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-22T04:30:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "965b484ccf6094d4ad6f8c28d3ad6a8051a09800",
          "body": "Bumps the spring-boot group with 3 updates: [org.springframework.boot:spring-boot-dependencies](https://github.com/spring-projects/spring-boot), [org.springframework.boot:spring-boot-configuration-processor](https://github.com/spring-projects/spring-boot) and [org.springframework:spring-framework-bo\n[…]\n.\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Juan Diego López <juandiegolopezve@gmail.com>",
          "is_bot": true,
          "headline": "chore(deps): bump the spring-boot group with 3 updates (#70)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-22T04:25:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5676c991846af9b8adc04638df13ad349363cdb7",
          "body": "Bumps [actions/setup-java](https://github.com/actions/setup-java) from 4 to 5.\n- [Release notes](https://github.com/actions/setup-java/releases)\n- [Commits](https://github.com/actions/setup-java/compare/v4...v5)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-java\n  dependency-version: '\n[…]\n.\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Juan Diego López <juandiegolopezve@gmail.com>",
          "is_bot": true,
          "headline": "ci: bump actions/setup-java from 4 to 5 (#69)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-22T04:20:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "64571532161009962296e5f409397ca9239c7191",
          "body": "Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2 to 3.\n- [Release notes](https://github.com/softprops/action-gh-release/releases)\n- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/softprops/\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "ci: bump softprops/action-gh-release from 2 to 3 (#68)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-22T04:17:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "71edf0fe611ae91fa65815d0a79ed4cf03dc222a",
          "body": null,
          "is_bot": false,
          "headline": "fix: improve github actions (#67)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-04-22T04:07:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0433e9dabe439f488a16f6e2f600d601f6ade3c8",
          "body": null,
          "is_bot": true,
          "headline": "chore(release): prepare 1.0.6-SNAPSHOT",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-02T12:33:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6038c2c9cf5a743ccc1ecd3ba9cde76bf77c5733",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): prepare v1.0.5 (#66)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-04-02T12:30:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7591db7f904f386d60edb73cc3d3b823ab150ff6",
          "body": "* fix: skip and change version to 1.0.5-SNAPSHOT",
          "is_bot": false,
          "headline": "Fix Ark-BOM (#64)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-04-02T05:48:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "168d050deebb4c776877e3642dd879459f37ec23",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): prepare v1.0.4 (#63)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-04-02T05:28:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "26a1cf60bd067e93753f7d7315ee3878db2e5fa5",
          "body": "* fix: maven ark-quarkus-jackson\n\n* fix: maven\n\n* fix: comment out\n\n* fix: make ark-bom standalone to resolve literal versions in published POM\n\n* fix: ark-bom\n\n* fix: adjust ark-bom",
          "is_bot": false,
          "headline": "Adjust pom.xml of ark-bom (#62)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-04-02T05:22:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b478c660267c7acfe0f670fa75b24027b5ec751f",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): prepare v1.0.4 (#61)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-04-02T05:09:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b54a37ab1d93b45ab718c71df554ca5f289ee6f",
          "body": "* fix: maven ark-quarkus-jackson\n\n* fix: maven\n\n* fix: comment out\n\n* fix: make ark-bom standalone to resolve literal versions in published POM\n\n* fix: ark-bom",
          "is_bot": false,
          "headline": "Adjust pom.xml (#60)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-04-02T05:03:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "12a1f064011cc5dccd5750fc31b10ccd73534923",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): prepare v1.0.4 (#58)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-04-02T04:45:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "81d69440fdaf3362d9c6c8f6c44f2ba2ae204285",
          "body": "…(#57)\n\n* fix: maven ark-quarkus-jackson\n\n* fix: maven\n\n* fix: comment out\n\n* fix: make ark-bom standalone to resolve literal versions in published POM",
          "is_bot": false,
          "headline": "make ark-bom standalone to resolve literal versions in published POM …",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-04-02T04:33:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "44d57da5a50061fb20a03e9bc62fb724ce0893ad",
          "body": null,
          "is_bot": true,
          "headline": "chore(release): prepare 1.0.4-SNAPSHOT",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-02T01:18:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c22a25e9b7e1b1681f6882308f501950959cdebc",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): prepare v1.0.3 (#56)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-04-02T01:15:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b1c585e2ef8ea707163b6efc556b3890ed00a94c",
          "body": "* fix: maven ark-quarkus-jackson\n\n* fix: maven\n\n* fix: comment out",
          "is_bot": false,
          "headline": "Fix Maven Deploy (#55)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-04-02T01:00:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a0bbe5a0fee15442f6ac36a43d4ba071dd28106",
          "body": null,
          "is_bot": true,
          "headline": "chore(release): prepare 1.0.3-SNAPSHOT",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-01T23:55:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 10,
      "commits_last_year": 263,
      "latest_release_at": "2026-03-25T13:50:56Z",
      "latest_release_tag": "v1.0.8",
      "releases_from_tags": false,
      "days_since_last_push": 8,
      "active_weeks_last_year": 8,
      "days_since_latest_release": 122,
      "mean_days_between_releases": -0.3
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 71,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "xyz.juandiii:ark-core",
          "exists": true,
          "license": "Apache License, Version 2.0",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": true,
          "registry_url": "https://central.sonatype.com/artifact/xyz.juandiii/ark-core",
          "is_deprecated": false,
          "latest_version": "1.0.8",
          "repository_url": "https://github.com/juandiii/ark",
          "versions_count": 9,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-17T14:08:29Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        },
        {
          "name": "xyz.juandiii:ark-jsonb",
          "exists": true,
          "license": "Apache License, Version 2.0",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": true,
          "registry_url": "https://central.sonatype.com/artifact/xyz.juandiii/ark-jsonb",
          "is_deprecated": false,
          "latest_version": "1.0.8",
          "repository_url": "https://github.com/juandiii/ark",
          "versions_count": 9,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-17T14:08:35Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        },
        {
          "name": "xyz.juandiii:ark-proxy-jaxrs",
          "exists": true,
          "license": "Apache License, Version 2.0",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": true,
          "registry_url": "https://central.sonatype.com/artifact/xyz.juandiii/ark-proxy-jaxrs",
          "is_deprecated": false,
          "latest_version": "1.0.8",
          "repository_url": "https://github.com/juandiii/ark",
          "versions_count": 9,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-17T14:08:35Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        },
        {
          "name": "xyz.juandiii:ark-jackson",
          "exists": true,
          "license": "Apache License, Version 2.0",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": true,
          "registry_url": "https://central.sonatype.com/artifact/xyz.juandiii/ark-jackson",
          "is_deprecated": false,
          "latest_version": "1.0.8",
          "repository_url": "https://github.com/juandiii/ark",
          "versions_count": 9,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-17T14:08:30Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        },
        {
          "name": "xyz.juandiii:ark-proxy-spring",
          "exists": true,
          "license": "Apache License, Version 2.0",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": true,
          "registry_url": "https://central.sonatype.com/artifact/xyz.juandiii/ark-proxy-spring",
          "is_deprecated": false,
          "latest_version": "1.0.8",
          "repository_url": "https://github.com/juandiii/ark",
          "versions_count": 9,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-17T14:08:35Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        },
        {
          "name": "xyz.juandiii:ark-async",
          "exists": true,
          "license": "Apache License, Version 2.0",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": true,
          "registry_url": "https://central.sonatype.com/artifact/xyz.juandiii/ark-async",
          "is_deprecated": false,
          "latest_version": "1.0.8",
          "repository_url": "https://github.com/juandiii/ark",
          "versions_count": 9,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-17T14:08:27Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        },
        {
          "name": "xyz.juandiii:ark-vertx",
          "exists": true,
          "license": "Apache License, Version 2.0",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": true,
          "registry_url": "https://central.sonatype.com/artifact/xyz.juandiii/ark-vertx",
          "is_deprecated": false,
          "latest_version": "1.0.8",
          "repository_url": "https://github.com/juandiii/ark",
          "versions_count": 9,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-17T14:08:44Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        },
        {
          "name": "xyz.juandiii:ark-mutiny",
          "exists": true,
          "license": "Apache License, Version 2.0",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": true,
          "registry_url": "https://central.sonatype.com/artifact/xyz.juandiii/ark-mutiny",
          "is_deprecated": false,
          "latest_version": "1.0.8",
          "repository_url": "https://github.com/juandiii/ark",
          "versions_count": 9,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-17T14:08:33Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 2,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": null,
      "open_issues_and_prs": 6
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "core/ark-bom/pom.xml",
        "core/ark-core/pom.xml",
        "execution-models/ark-async/pom.xml",
        "execution-models/ark-mutiny/pom.xml",
        "execution-models/ark-reactor/pom.xml",
        "execution-models/ark-vertx/pom.xml",
        "extensions/ark-quarkus-jackson-vertx/deployment/pom.xml",
        "extensions/ark-quarkus-jackson-vertx/pom.xml",
        "extensions/ark-quarkus-jackson-vertx/runtime/pom.xml",
        "extensions/ark-quarkus-jackson/deployment/pom.xml",
        "extensions/ark-quarkus-jackson/pom.xml",
        "extensions/ark-quarkus-jackson/runtime/pom.xml",
        "pom.xml",
        "proxies/ark-proxy-jaxrs/pom.xml",
        "proxies/ark-proxy-spring/pom.xml",
        "serializers/ark-jackson-classic/pom.xml",
        "serializers/ark-jackson/pom.xml",
        "serializers/ark-jsonb/pom.xml",
        "starters/ark-spring-boot-starter-webflux/pom.xml",
        "starters/ark-spring-boot-starter/pom.xml",
        "transports/ark-transport-apache/pom.xml",
        "transports/ark-transport-jdk/pom.xml",
        "transports/ark-transport-reactor/pom.xml",
        "transports/ark-transport-vertx-mutiny/pom.xml",
        "transports/ark-transport-vertx/pom.xml"
      ],
      "largest_source_bytes": 27019,
      "source_files_sampled": 233,
      "oversized_source_files": 0,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "pom.xml"
      ],
      "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": [
        "maven"
      ],
      "dependencies": [
        {
          "name": "org.springframework.boot:spring-boot-dependencies",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${spring-boot.version}"
        },
        {
          "name": "io.quarkus:quarkus-bom",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${quarkus.version}"
        },
        {
          "name": "xyz.juandiii:ark-core",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-async",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-jackson",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-jackson-classic",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-jsonb",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-reactor",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-transport-jdk",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-transport-reactor",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-vertx",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-mutiny",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-transport-vertx",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-transport-apache",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-transport-vertx-mutiny",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-proxy-spring",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-proxy-jaxrs",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-spring-boot-starter",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-spring-boot-starter-webflux",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-quarkus-jackson",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-quarkus-jackson-deployment",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-quarkus-jackson-vertx",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-quarkus-jackson-vertx-deployment",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-core",
          "manifest": "execution-models/ark-async/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "xyz.juandiii:ark-core",
          "manifest": "execution-models/ark-mutiny/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.smallrye.reactive:mutiny",
          "manifest": "execution-models/ark-mutiny/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "xyz.juandiii:ark-core",
          "manifest": "execution-models/ark-reactor/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.projectreactor:reactor-core",
          "manifest": "execution-models/ark-reactor/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "xyz.juandiii:ark-core",
          "manifest": "execution-models/ark-vertx/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.vertx:vertx-core",
          "manifest": "execution-models/ark-vertx/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "com.fasterxml.jackson.core:jackson-databind",
          "manifest": "execution-models/ark-vertx/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "xyz.juandiii:ark-core",
          "manifest": "proxies/ark-proxy-jaxrs/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "jakarta.ws.rs:jakarta.ws.rs-api",
          "manifest": "proxies/ark-proxy-jaxrs/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "xyz.juandiii:ark-async",
          "manifest": "proxies/ark-proxy-jaxrs/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "xyz.juandiii:ark-mutiny",
          "manifest": "proxies/ark-proxy-jaxrs/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "xyz.juandiii:ark-core",
          "manifest": "proxies/ark-proxy-spring/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.springframework:spring-web",
          "manifest": "proxies/ark-proxy-spring/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "xyz.juandiii:ark-reactor",
          "manifest": "proxies/ark-proxy-spring/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "xyz.juandiii:ark-core",
          "manifest": "serializers/ark-jackson-classic/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "com.fasterxml.jackson.core:jackson-databind",
          "manifest": "serializers/ark-jackson-classic/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "xyz.juandiii:ark-core",
          "manifest": "serializers/ark-jackson/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "tools.jackson.core:jackson-databind",
          "manifest": "serializers/ark-jackson/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "xyz.juandiii:ark-core",
          "manifest": "serializers/ark-jsonb/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.eclipse:yasson",
          "manifest": "serializers/ark-jsonb/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "xyz.juandiii:ark-reactor",
          "manifest": "starters/ark-spring-boot-starter-webflux/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "xyz.juandiii:ark-jackson",
          "manifest": "starters/ark-spring-boot-starter-webflux/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "xyz.juandiii:ark-transport-reactor",
          "manifest": "starters/ark-spring-boot-starter-webflux/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.springframework.boot:spring-boot-autoconfigure",
          "manifest": "starters/ark-spring-boot-starter-webflux/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.springframework.boot:spring-boot-starter-webflux",
          "manifest": "starters/ark-spring-boot-starter-webflux/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.springframework.boot:spring-boot-jackson",
          "manifest": "starters/ark-spring-boot-starter-webflux/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "xyz.juandiii:ark-proxy-spring",
          "manifest": "starters/ark-spring-boot-starter-webflux/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "xyz.juandiii:ark-core",
          "manifest": "starters/ark-spring-boot-starter/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "xyz.juandiii:ark-jackson",
          "manifest": "starters/ark-spring-boot-starter/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "xyz.juandiii:ark-transport-jdk",
          "manifest": "starters/ark-spring-boot-starter/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "xyz.juandiii:ark-proxy-spring",
          "manifest": "starters/ark-spring-boot-starter/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.springframework.boot:spring-boot-autoconfigure",
          "manifest": "starters/ark-spring-boot-starter/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.springframework.boot:spring-boot-starter",
          "manifest": "starters/ark-spring-boot-starter/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.springframework.boot:spring-boot-jackson",
          "manifest": "starters/ark-spring-boot-starter/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "xyz.juandiii:ark-core",
          "manifest": "transports/ark-transport-apache/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.apache.httpcomponents.client5:httpclient5",
          "manifest": "transports/ark-transport-apache/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${httpclient5.version}"
        },
        {
          "name": "xyz.juandiii:ark-core",
          "manifest": "transports/ark-transport-jdk/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "xyz.juandiii:ark-async",
          "manifest": "transports/ark-transport-jdk/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "xyz.juandiii:ark-reactor",
          "manifest": "transports/ark-transport-reactor/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.projectreactor.netty:reactor-netty-http",
          "manifest": "transports/ark-transport-reactor/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "xyz.juandiii:ark-mutiny",
          "manifest": "transports/ark-transport-vertx-mutiny/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.smallrye.reactive:smallrye-mutiny-vertx-web-client",
          "manifest": "transports/ark-transport-vertx-mutiny/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.vertx:vertx-core",
          "manifest": "transports/ark-transport-vertx-mutiny/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "xyz.juandiii:ark-async",
          "manifest": "transports/ark-transport-vertx/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "xyz.juandiii:ark-vertx",
          "manifest": "transports/ark-transport-vertx/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.vertx:vertx-web-client",
          "manifest": "transports/ark-transport-vertx/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.vertx:vertx-core",
          "manifest": "transports/ark-transport-vertx/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        }
      ],
      "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": 6,
        "merged_prs": 87,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 5
      },
      "bus_factor": 1,
      "bot_contributors": 2,
      "top_contributors": [
        {
          "type": "User",
          "login": "juandiii",
          "commits": 223,
          "avatar_url": "https://avatars.githubusercontent.com/u/15571425?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "auto-label.yml",
        "ci.yml",
        "commitlint.yml",
        "compat-weekly.yml",
        "deploy-snapshot.yml",
        "prepare-release.yml",
        "publish-release.yml",
        "test.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": true,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "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": 1,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "7 out of 7 merged PRs checked by a CI test -- score normalized to 10",
            "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/9 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 3,
            "reason": "project has 1 contributing companies or organizations -- score normalized to 3",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 0,
            "reason": "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": 10,
            "reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 5,
            "reason": "dependency not pinned by hash detected -- score normalized to 5",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "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": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "05174ba73b99c155ce6c5332b211ee680b0f0e1e",
        "ran_at": "2026-07-26T02:10:04Z",
        "aggregate_score": 5,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-20T08:47:06Z",
      "oldest_open_prs": [
        {
          "number": 89,
          "created_at": "2026-06-22T08:24:48Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 90,
          "created_at": "2026-06-22T08:25:07Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 91,
          "created_at": "2026-06-22T08:25:15Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 92,
          "created_at": "2026-06-22T08:25:21Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 93,
          "created_at": "2026-06-22T08:25:24Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 94,
          "created_at": "2026-06-22T08:25:26Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-17T13:53:31Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/juandiii/ark",
    "host": "github.com",
    "name": "ark",
    "owner": "juandiii"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 58,
      "inputs": {
        "security": 50,
        "vitality": 73,
        "community": 33,
        "governance": 55,
        "engineering": 74
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 73,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 62,
            "inputs": {
              "commits_last_year": 263,
              "human_commit_share": 0.81,
              "days_since_last_push": 8,
              "active_weeks_last_year": 8
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 8 days ago",
                "points": 28.8,
                "status": "partial",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 8
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "8/52 weeks with commits",
                "points": 5.5,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 8
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "263 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 263
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "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": 90,
            "inputs": {
              "releases_count": 10,
              "latest_release_tag": "v1.0.8",
              "releases_from_tags": false,
              "days_since_latest_release": 122,
              "mean_days_between_releases": -0.3
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "10 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 10
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 122 days ago",
                "points": 27,
                "status": "partial",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 122
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~-0.3 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": -0.3
                    }
                  }
                ],
                "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": "excellent",
            "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": "at_risk",
        "name": "Community & Adoption",
        "value": 33,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 0,
              "stars": 2,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "2 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "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": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 70,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "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": 18,
                "status": "met",
                "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": "moderate",
        "name": "Sustainability & Governance",
        "value": 55,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 13,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 1,
              "top_contributor_share": 1
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 100% of commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "1 contributors",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 68,
            "inputs": {
              "merged_prs": 87,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 5
            },
            "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": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "87/92 decided PRs merged",
                "points": 36.2,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 87,
                      "decided": 92
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/9 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "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": 56,
            "inputs": {
              "followers": 54,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "juandiii",
              "public_repos": 26,
              "account_age_days": 3919
            },
            "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": "54 followers of juandiii",
                "points": 12.5,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 54,
                      "login": "juandiii"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "26 public repos, account ~10 yr old",
                "points": 22.4,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 26
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 10
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "xyz.juandiii:ark-core",
                "xyz.juandiii:ark-jsonb",
                "xyz.juandiii:ark-proxy-jaxrs",
                "xyz.juandiii:ark-jackson",
                "xyz.juandiii:ark-proxy-spring",
                "xyz.juandiii:ark-async",
                "xyz.juandiii:ark-vertx",
                "xyz.juandiii:ark-mutiny"
              ],
              "ecosystems": "maven",
              "any_deprecated": false,
              "min_days_since_publish": 8
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "8 package(s) on maven",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 8,
                      "ecosystems": "maven"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 8 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 8
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "9 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 9
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 74,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 74,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": true,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "8 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": 6.4,
                "status": "met",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "7 out of 7 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "good",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 75,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "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": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 50,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 50,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 5
            },
            "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 is not maximal on development and all release branches",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "7 out of 7 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "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/9 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "dangerous workflow patterns detected",
                "points": 0,
                "status": "missed",
                "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": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 5",
                "points": 2.5,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "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": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "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"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 3
            },
            "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": "moderate",
        "name": "AI Readiness",
        "value": 60,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.938,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "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": "76 of 81 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 76,
                      "sampled": 81
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 59,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [
                "core/ark-bom/pom.xml",
                "core/ark-core/pom.xml",
                "execution-models/ark-async/pom.xml",
                "execution-models/ark-mutiny/pom.xml",
                "execution-models/ark-reactor/pom.xml",
                "execution-models/ark-vertx/pom.xml",
                "extensions/ark-quarkus-jackson-vertx/deployment/pom.xml",
                "extensions/ark-quarkus-jackson-vertx/pom.xml",
                "extensions/ark-quarkus-jackson-vertx/runtime/pom.xml",
                "extensions/ark-quarkus-jackson/deployment/pom.xml",
                "extensions/ark-quarkus-jackson/pom.xml",
                "extensions/ark-quarkus-jackson/runtime/pom.xml",
                "pom.xml",
                "proxies/ark-proxy-jaxrs/pom.xml",
                "proxies/ark-proxy-spring/pom.xml",
                "serializers/ark-jackson-classic/pom.xml",
                "serializers/ark-jackson/pom.xml",
                "serializers/ark-jsonb/pom.xml",
                "starters/ark-spring-boot-starter-webflux/pom.xml",
                "starters/ark-spring-boot-starter/pom.xml",
                "transports/ark-transport-apache/pom.xml",
                "transports/ark-transport-jdk/pom.xml",
                "transports/ark-transport-reactor/pom.xml",
                "transports/ark-transport-vertx-mutiny/pom.xml",
                "transports/ark-transport-vertx/pom.xml"
              ],
              "dependency_bot_commit_share": 0.13
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "core/ark-bom/pom.xml, core/ark-core/pom.xml, execution-models/ark-async/pom.xml (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "core/ark-bom/pom.xml, core/ark-core/pom.xml, execution-models/ark-async/pom.xml"
                    }
                  }
                ],
                "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "Java (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Java"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "13 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 13,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 5",
                "points": 5,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "Java",
              "largest_source_bytes": 27019,
              "source_files_sampled": 233,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Java (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Java"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/233 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 233,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-26T02:10:19.873875Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/j/juandiii/ark.svg",
  "full_name": "juandiii/ark",
  "license_state": "standard",
  "license_spdx": "Apache-2.0"
}

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

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

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