Raw JSON report machine-readable
{
"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"
}