Raw JSON report machine-readable
{
"data": {
"repo": {
"topics": [
"openapi3",
"golang",
"swagger",
"openapi",
"rest-api",
"go",
"openapi-codegen",
"openapi-generator",
"rest-api-client"
],
"is_fork": false,
"size_kb": 18701,
"has_wiki": true,
"homepage": null,
"languages": {
"Go": 1003324,
"Makefile": 2805,
"Go Template": 283595
},
"pushed_at": "2026-07-21T23:56:03Z",
"created_at": "2019-02-27T23:59:59Z",
"owner_type": "Organization",
"updated_at": "2026-07-22T00:59:47Z",
"description": "Generate Go client and server boilerplate from OpenAPI 3 specifications",
"is_archived": false,
"is_disabled": false,
"license_spdx": "Apache-2.0",
"default_branch": "main",
"license_spdx_raw": "Apache-2.0",
"primary_language": "Go",
"significant_languages": [
"Go",
"Go Template"
]
},
"owner": {
"blog": null,
"name": null,
"type": "Organization",
"login": "oapi-codegen",
"company": null,
"location": null,
"followers": 62,
"avatar_url": "https://avatars.githubusercontent.com/u/142752710?v=4",
"created_at": "2023-08-20T20:54:26Z",
"is_verified": null,
"public_repos": 19,
"account_age_days": 1066
},
"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": "v2.8.0",
"kind": "minor",
"published_at": "2026-07-17T14:11:21Z"
},
{
"tag": "v2.7.2",
"kind": "patch",
"published_at": "2026-07-07T00:35:42Z"
},
{
"tag": "v2.7.1",
"kind": "patch",
"published_at": "2026-06-05T21:45:22Z"
},
{
"tag": "v2.7.0",
"kind": "minor",
"published_at": "2026-05-01T16:20:21Z"
},
{
"tag": "v2.6.0",
"kind": "minor",
"published_at": "2026-02-27T10:38:16Z"
},
{
"tag": "v2.5.1",
"kind": "patch",
"published_at": "2025-11-01T14:54:04Z"
},
{
"tag": "v2.5.0",
"kind": "minor",
"published_at": "2025-07-15T15:58:29Z"
},
{
"tag": "v2.4.1",
"kind": "patch",
"published_at": "2024-09-28T10:39:20Z"
},
{
"tag": "v2.4.0",
"kind": "minor",
"published_at": "2024-09-20T20:35:39Z"
},
{
"tag": "v2.3.0",
"kind": "minor",
"published_at": "2024-06-06T21:00:34Z"
},
{
"tag": "v2.2.0",
"kind": "minor",
"published_at": "2024-06-04T06:15:08Z"
},
{
"tag": "v2.1.0",
"kind": "minor",
"published_at": "2024-01-25T15:02:28Z"
},
{
"tag": "v2.0.0",
"kind": "major",
"published_at": "2023-10-31T20:13:39Z"
},
{
"tag": "v1.16.2",
"kind": "patch",
"published_at": "2023-10-24T12:47:03Z"
},
{
"tag": "v1.16.1",
"kind": "patch",
"published_at": "2023-10-23T16:30:32Z"
},
{
"tag": "v1.16.0",
"kind": "minor",
"published_at": "2023-10-23T16:08:15Z"
},
{
"tag": "v1.15.0",
"kind": "minor",
"published_at": "2023-09-11T08:16:07Z"
},
{
"tag": "v1.14.0",
"kind": "minor",
"published_at": "2023-08-30T20:07:57Z"
},
{
"tag": "v1.13.4",
"kind": "patch",
"published_at": "2023-08-07T15:04:48Z"
},
{
"tag": "v1.13.3",
"kind": "patch",
"published_at": "2023-08-03T09:32:02Z"
},
{
"tag": "v1.13.2",
"kind": "patch",
"published_at": "2023-07-31T20:17:33Z"
},
{
"tag": "v1.13.1",
"kind": "patch",
"published_at": "2023-07-31T10:43:19Z"
},
{
"tag": "v1.13.0",
"kind": "minor",
"published_at": "2023-06-02T22:57:19Z"
},
{
"tag": "v1.12.4",
"kind": "patch",
"published_at": "2022-12-01T14:00:05Z"
},
{
"tag": "v1.12.3",
"kind": "patch",
"published_at": "2022-11-21T20:34:07Z"
},
{
"tag": "v1.12.2",
"kind": "patch",
"published_at": "2022-10-29T00:43:18Z"
},
{
"tag": "v1.12.1",
"kind": "patch",
"published_at": "2022-10-28T00:49:18Z"
},
{
"tag": "v1.12.0",
"kind": "minor",
"published_at": "2022-10-28T00:25:33Z"
},
{
"tag": "v1.11.0",
"kind": "minor",
"published_at": "2022-05-21T00:39:56Z"
},
{
"tag": "v1.10.1",
"kind": "patch",
"published_at": "2022-04-19T20:16:40Z"
},
{
"tag": "v1.10.0",
"kind": "minor",
"published_at": "2022-04-19T15:44:47Z"
},
{
"tag": "v1.9.1",
"kind": "patch",
"published_at": "2022-01-21T19:09:49Z"
},
{
"tag": "v1.9.0",
"kind": "minor",
"published_at": "2021-11-02T23:43:52Z"
},
{
"tag": "v1.8.3",
"kind": "patch",
"published_at": "2021-10-04T22:53:15Z"
},
{
"tag": "v1.8.2",
"kind": "patch",
"published_at": "2021-07-23T17:45:13Z"
},
{
"tag": "v1.8.1",
"kind": "patch",
"published_at": "2021-06-18T20:42:24Z"
},
{
"tag": "v1.8.0",
"kind": "minor",
"published_at": "2021-06-18T20:31:57Z"
},
{
"tag": "v1.7.1",
"kind": "patch",
"published_at": "2021-06-02T18:59:17Z"
},
{
"tag": "v1.7.0",
"kind": "minor",
"published_at": "2021-05-22T21:36:43Z"
},
{
"tag": "v1.6.2",
"kind": "patch",
"published_at": "2021-05-21T23:29:23Z"
},
{
"tag": "v1.6.1",
"kind": "patch",
"published_at": "2021-04-14T15:09:45Z"
},
{
"tag": "v1.6.0",
"kind": "minor",
"published_at": "2021-04-02T21:21:16Z"
},
{
"tag": "v1.5.6",
"kind": "patch",
"published_at": "2021-03-22T20:29:20Z"
},
{
"tag": "v1.5.5",
"kind": "patch",
"published_at": "2021-03-20T16:34:06Z"
},
{
"tag": "v1.5.4",
"kind": "patch",
"published_at": "2021-03-19T19:30:50Z"
},
{
"tag": "v1.5.3",
"kind": "patch",
"published_at": "2021-03-19T16:49:47Z"
},
{
"tag": "v1.5.2",
"kind": "patch",
"published_at": "2021-03-18T00:46:17Z"
},
{
"tag": "v1.5.1",
"kind": "patch",
"published_at": "2021-02-08T17:58:25Z"
},
{
"tag": "v1.5.0",
"kind": "minor",
"published_at": "2021-01-30T00:50:16Z"
},
{
"tag": "v1.4.2",
"kind": "patch",
"published_at": "2021-01-07T03:58:41Z"
},
{
"tag": "v1.4.1",
"kind": "patch",
"published_at": "2020-11-06T18:22:03Z"
},
{
"tag": "v1.4.0",
"kind": "minor",
"published_at": "2020-10-30T21:31:25Z"
},
{
"tag": "v1.3.13",
"kind": "patch",
"published_at": "2020-09-04T17:02:19Z"
},
{
"tag": "v1.3.12",
"kind": "patch",
"published_at": "2020-08-19T15:35:37Z"
},
{
"tag": "v1.3.11",
"kind": "patch",
"published_at": "2020-07-20T18:48:21Z"
},
{
"tag": "v1.3.10",
"kind": "patch",
"published_at": "2020-07-20T16:58:27Z"
},
{
"tag": "v1.3.9",
"kind": "patch",
"published_at": "2020-07-09T20:54:28Z"
},
{
"tag": "v1.3.8",
"kind": "patch",
"published_at": "2020-05-07T22:40:27Z"
},
{
"tag": "v1.3.7",
"kind": "patch",
"published_at": "2020-04-10T16:37:32Z"
},
{
"tag": "v1.3.6",
"kind": "patch",
"published_at": "2020-03-05T18:44:40Z"
},
{
"tag": "v1.3.5",
"kind": "patch",
"published_at": "2020-02-19T17:34:29Z"
},
{
"tag": "v1.3.4",
"kind": "patch",
"published_at": "2020-01-15T17:26:08Z"
},
{
"tag": "v1.3.3",
"kind": "patch",
"published_at": "2019-12-11T22:37:32Z"
},
{
"tag": "v1.3.2",
"kind": "patch",
"published_at": "2019-11-19T05:06:10Z"
},
{
"tag": "v1.3.1",
"kind": "patch",
"published_at": "2019-11-15T21:51:14Z"
},
{
"tag": "v1.3.0",
"kind": "minor",
"published_at": "2019-09-03T16:43:07Z"
},
{
"tag": "v1.2.6",
"kind": "patch",
"published_at": "2019-08-19T16:50:21Z"
},
{
"tag": "v1.2.5",
"kind": "patch",
"published_at": "2019-07-27T22:20:44Z"
},
{
"tag": "v1.2.4",
"kind": "patch",
"published_at": "2019-07-24T23:51:02Z"
},
{
"tag": "v1.2.3",
"kind": "patch",
"published_at": "2019-07-17T16:32:51Z"
},
{
"tag": "v1.2.2",
"kind": "patch",
"published_at": "2019-07-08T16:58:46Z"
},
{
"tag": "v1.2.1",
"kind": "patch",
"published_at": "2019-07-05T20:17:58Z"
},
{
"tag": "v1.2.0",
"kind": "minor",
"published_at": "2019-07-05T19:53:32Z"
},
{
"tag": "v1.1.7",
"kind": "patch",
"published_at": "2019-06-27T22:02:57Z"
},
{
"tag": "v1.1.6",
"kind": "patch",
"published_at": "2019-06-15T00:08:35Z"
},
{
"tag": "v1.1.5",
"kind": "patch",
"published_at": "2019-05-28T19:44:37Z"
},
{
"tag": "v1.1.4",
"kind": "patch",
"published_at": "2019-05-25T21:41:50Z"
},
{
"tag": "v1.1.3",
"kind": "patch",
"published_at": "2019-05-16T20:32:16Z"
},
{
"tag": "v1.1.2",
"kind": "patch",
"published_at": "2019-05-10T03:43:31Z"
},
{
"tag": "v1.1.1",
"kind": "patch",
"published_at": "2019-05-03T23:43:45Z"
},
{
"tag": "v1.1.0",
"kind": "minor",
"published_at": "2019-04-26T23:54:29Z"
},
{
"tag": "v1.0.6",
"kind": "patch",
"published_at": "2019-04-19T22:19:15Z"
},
{
"tag": "v1.0.5",
"kind": "patch",
"published_at": "2019-04-15T23:58:43Z"
},
{
"tag": "v1.0.4",
"kind": "patch",
"published_at": "2019-04-09T23:50:53Z"
},
{
"tag": "v1.0.3",
"kind": "patch",
"published_at": "2019-04-09T22:44:11Z"
},
{
"tag": "v1.0.2",
"kind": "patch",
"published_at": "2019-03-22T20:55:30Z"
},
{
"tag": "v1.0.1",
"kind": "patch",
"published_at": "2019-03-15T23:09:48Z"
}
],
"recent_commits": [
{
"oid": "d31f05b99cb2a4726ad7e2a1cbf22d0d436de9bb",
"body": "…o.mod) (#2491)\n\n* fix(deps): update module github.com/getkin/kin-openapi to v0.143.0 (go.mod)\n\n* Fix path ordering\n\nkin-openapi v0.143.0 removed StringMap and introduced attachOriginToResolved,\nwhich re-attaches Origins to $ref-resolved path items using the *external*\nfile's origin tree. pathItemSo\n[…]\nack that\nmatched pre-v0.143.0 behaviour.\n\nCloses: N/A\n\n---------\n\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>\nCo-authored-by: Marcin Romaszewicz <marcinr@gmail.com>",
"is_bot": true,
"headline": "fix(deps): update module github.com/getkin/kin-openapi to v0.143.0 (g…",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-07-21T23:56:01Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ebaa6b998746f398aa89f272bb0418b9f0aa2596",
"body": "`checkExtensions` in `validate_spec.go` validated `x-go-name`,\n`x-go-type-name`, `x-go-type`, and `x-oapi-codegen-extra-tags`, but\nhad no case for `x-go-type-import`. This adds validation for both\nfields of that extension:\n\n- `name`: must be empty, `\".\"` (dot-import), or a valid Go identifier;\n han\n[…]\nse-insensitive key matching\n(mirroring `ParseGoImportExtension`), and regression coverage for the\npre-existing extension checks.\n\nCo-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add missing case to validation (#2493)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-21T23:34:26Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "fc6e210fbc3bc61811f2affc368057c24eeea1e8",
"body": "…orkflows) (#2490)\n\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps): update github/codeql-action action to v4.37.2 (.github/w…",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-07-21T23:33:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5aa731470a6bfe9fee6ae781f4bb1c18ea1f95b2",
"body": "…(#2489)\n\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps): update actions/labeler action to v7 (.github/workflows) …",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-07-21T23:32:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b1fbd3bb7a5e1ba7fae1d0cbc6265fabbb396fbc",
"body": "…ows) (#2487)\n\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps): update actions/checkout action to v7.0.1 (.github/workfl…",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-07-21T23:32:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1ffa4b970959ef6f31f78ae210875b4c3389a96c",
"body": "…(.github/workflows)",
"is_bot": true,
"headline": "chore(deps): update release-drafter/release-drafter action to v7.6.0 …",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-07-19T19:27:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3eef009568d6c18d73a19697100dcf674386be44",
"body": "As `go mod tidy -diff` is now available.",
"is_bot": false,
"headline": "chore: use go mod tidy instead of tidied (#2482)",
"author_name": "Oleksandr Redko",
"author_login": "alexandear",
"committed_at": "2026-07-17T21:00:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "45c3fd1e2f1dac268a8659f1425fd24cc8c1a929",
"body": null,
"is_bot": false,
"headline": "chore(renovate): group version bumps in docs updates",
"author_name": "Jamie Tanna",
"author_login": "jamietanna",
"committed_at": "2026-07-17T17:10:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cf9be388cff518e5baec8fa2e8c5978339195246",
"body": "…v2.8.0 (readme.md) (#2480)\n\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "docs(deps): update module github.com/oapi-codegen/oapi-codegen/v2 to …",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-07-17T16:52:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "64d40f5e29eb36dabd5c3c336f8367ed5873ac9a",
"body": "…v2.8.0 (docs)",
"is_bot": true,
"headline": "docs(deps): update module github.com/oapi-codegen/oapi-codegen/v2 to …",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-07-17T16:50:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a3b45fcdf4510ef13bc4e402ed797713b26b5ee5",
"body": "…orkflows) (#2472)\n\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps): update github/codeql-action action to v4.37.1 (.github/w…",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-07-17T14:14:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "de2d8b2b0afb287198554eb305bb0d2687d26a85",
"body": "…tion (#2477)\n\nPR #2465 (issue #1887) changed generated servers to register route handlers in\nspec-declaration order, so that routers which match in registration order\n(Fiber, Gorilla/mux) can disambiguate overlapping paths by ordering them in the\nspec. This makes that behavior opt-out: the new sort\n[…]\nlag unset the default\noutput is unchanged.\n\nAdds TestSortHandlerRegistrations and documents the flag in\nconfiguration-schema.json.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add sort-handler-registrations flag to opt out of spec-order registra…",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-17T14:01:16Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "bd52535efac830d0ea67c918fc6d104539b9cb29",
"body": "…isions (#2476)\n\n* Revert \"Generate shared path-level parameter helper types once (#2466)\"\n\nThis reverts commit a07731d8f3410162ecda0e12b5d1e178c7a1f7ef.\n\n* Name shared path parameter helper types once, hashing cross-path collisions\n\nCloses: #2090\n\nA parameter declared at the path-item level is inhe\n[…]\non-colliding single-method parameter (unchanged).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Name shared path parameter helper types once, hashing cross-path coll…",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-17T01:52:54Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "ce2e068a85797f1d7dd40f847b51031c7ad7faa2",
"body": "* add literal colon support for gin and echo\n\n* backslashes should themselves be escaped too\n\n* and of course, the tests need to be updated to account for the backslashed backslashes\n\n* Complete literal-colon path support for gin, echo, and fiber\n\nBuilds on the original fix by escaping literal colon\n[…]\nler. Moves the existing\npath_edge_cases fixture under paths/ and regenerates it with the escaped\nroute.\n\n* Update greptile directives\n\n---------\n\nCo-authored-by: Marcin Romaszewicz <marcinr@gmail.com>",
"is_bot": false,
"headline": "feat(#1726): add literal colon support for gin, echo, fiber (#1879)",
"author_name": "cosban",
"author_login": "cosban",
"committed_at": "2026-07-16T18:44:44Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "145792280910f78f9f2c7208c507f80a34c5c572",
"body": "Closes: #2470\n\nWhen a discriminated `oneOf` union is defined in an external file and pulled\ninto an `allOf` from another package via `import-mapping`, the generated\n`ValueByDiscriminator()` interpolated the raw discriminator mapping value\n(e.g. `externalRef0.GitDiffFile`) directly into the method na\n[…]\nnder\n`internal/test/references/multipackage/discriminated_union_allof` that\nreproduces the two-file, import-mapped, discriminated-union-in-allOf case and\nexercises `ValueByDiscriminator()` end-to-end.",
"is_bot": false,
"headline": "Fix ValueByDiscriminator() with external refs (#2474)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-16T17:52:07Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6d3c8644085e677cd66eabf85a56005d331d1940",
"body": "Closes: #1898\n\nThe OpenAPI 3.0 idiom for making a $ref nullable is to wrap it in an\nallOf alongside an inline `{nullable: true}`, since 3.0 forbids siblings\nnext to $ref. This failed generation with \"error merging schemas for\nAllOf: merging two schemas with different Nullable\".\n\nTwo problems:\n\n1. me\n[…]\nrnal/test/schemas/nullable exercising the decorated-$ref idiom under\nnullable-type:true for both required and optional properties.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Fix allOf/nullable detection and recursion (#2473)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-16T17:12:23Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "823a7a7b076145ba2c89baf9446e5d0462eb6e52",
"body": "Closes: #1905\n\nIn `mergeOpenapiSchemas`, `result.OneOf` was assigned from `s1.OneOf` and\n`s2.OneOf` before the transitive AllOf flattening loop, which then overwrote\n`s1` and `s2` entirely. Any `OneOf` (or `AnyOf`) that surfaced from a nested\nallOf member was silently dropped, causing the union fiel\n[…]\nchema (`NestedOneOfInAllOf`) and `TestIssue1905` to the\n`aggregates/allof` test fixture to lock in the correct generated output.\n\nCo-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Fix nested allOf/anyOf merging (#2471)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-16T16:32:31Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "919352685e24583e67101728f40b7c1742845238",
"body": "… (#2469)\n\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps): update actions/setup-go action to v7 (.github/workflows)…",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-07-16T14:07:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a07731d8f3410162ecda0e12b5d1e178c7a1f7ef",
"body": "Closes: #2090\n\nA parameter declared at the path-item level is inherited by every method on\nthe path. Its helper types — the member types of an inline anyOf/oneOf,\nnamed from the parameter alone (Id0, Id1, ...) — were generated once per\noperation, so a path with more than one method declared them sev\n[…]\nplus a spec_validation\ntestdata case for the cross-path rejection and a multi-method valid.yaml\ncase for the accepted shared case.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Generate shared path-level parameter helper types once (#2466)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-13T23:34:09Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "657424013eb238e6811be1b7403f20c95d6c4c6e",
"body": "Closes: #1887\n\nRoute registration was emitted in sorted path order, so reordering paths in\nthe spec had no effect. On routers that match in registration order (Fiber,\nGorilla/mux) this left users no way to disambiguate overlapping paths — e.g.\na request for `/templates/privates/shortcuts` always wen\n[…]\nsting ordering behavior — in particular the\norder-dependent fallback in name-collision resolution. Only handler\nregistration follows spec order.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Register handlers in spec order (#2465)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-13T18:19:01Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "18ef71552d31552ac7358c369b45de1670324c0d",
"body": "Closes: #1897\n\nFor a `text/plain` response whose schema is not a string, the strict\nserver generated an invalid body conversion in the response `Visit`\nmethod. On the net/http path it emitted `w.Write([]byte(response))`,\nwhich fails to compile for a non-string underlying type (integer,\nboolean, `ope\n[…]\nponse writes \"201\" and the boolean\nwrites \"true\"; regenerates the strict-server fixtures, whose string text\nresponses are unaffected at runtime.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Stringify non-string text/plain responses in strict servers (#2464)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-13T17:17:09Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "1e31932719e928654b4efc0b2b2b19d436d3a46c",
"body": "…463)\n\nCloses: #2060\n\nWhen a response header is an external `$ref` (it lives in another file\nmapped via import-mapping) and that header's schema is itself a `$ref`\nto a named type, the generated response-headers struct referenced the\ntype by a bare local name (e.g. `ETag ETagSchema`) instead of the\n\n[…]\n client\ngeneration; the committed generated files must compile as part of the\ntest module, which guards against the undefined-symbol regression.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Qualify external header schema refs in generated response headers (#2…",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-13T16:14:43Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "9efd95a07246419987a06f0afad3ecdda799a7e6",
"body": "…wrappers (#2462)\n\nCloses: #2011\n\nResponse headers declared in the spec were dropped by the generated\nclient: the response wrapper exposed only the body fields, leaving\ndeclared headers reachable solely through the raw http.Response. The\nstrict server already generates typed header structs and write\n[…]\nes.\n\nThe change is purely additive: specs without response headers generate\nbyte-identical output, and no strict-server or model output changes.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Parse declared response headers into typed fields on client response …",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-13T14:51:49Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "28e0964c903ca2ff760b1beee8cf5abd012697d5",
"body": "Closes: #2459\n\nimport-mapping keys are the paths of $ref'd documents — a relative file\npath or a URL — but users occasionally write a JSON pointer like\n\"#/components/schemas\" expecting internal references to be remapped to\nanother Go package (seen in #2078). Such an entry can never match\nanything, s\n[…]\nt: keys are document paths, internal refs cannot be remapped, and\nschemas wanted in a separate package should be split into their own spec\nfile.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Reject import-mapping keys that are JSON pointers (#2461)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-13T01:26:47Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "87e9aa2ce8831635dd47e0e073cfa7e11cc8cedb",
"body": "…ics (#2460)\n\nCloses: #2065\n\nA ServeMux pattern ending in '/' matches the whole subtree below it,\nwhile an OpenAPI path ending in '/' means exactly that path. Registering\nspec paths as subtree patterns both mismatched the spec's semantics and\npanicked at registration when two such patterns overlappe\n[…]\nnew test leaf pins alongside the issue's panic repro.\n\nSince we are changing behavior in the direction of correctness, I am not\nflagifying this.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Anchor trailing-slash stdhttp routes with {$} to match OpenAPI semant…",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-13T01:15:34Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "68f8c3b5c0cfde074ca6af663d113c66572af2e4",
"body": "Closes: #2456\n\nA `type: string, format: duration` schema previously fell through to a\nplain Go string, leaving parsing and validation of the OpenAPI\n\"duration\" format entirely to the user. The default type mapping now\nresolves it to openapi_types.Duration, the RFC 3339 duration type added\nto the run\n[…]\nconfiguration file:\n\n output-options:\n type-mapping:\n string:\n formats:\n duration:\n type: string\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Map format: duration to the runtime's RFC 3339 Duration type (#2458)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-13T00:10:38Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "50ecd9eaf3b126d5e60b4e6d3df82a03af40645d",
"body": "…s (#2457)\n\nCloses: #2455\n\nGenerated server wrappers bound path parameters without knowing whether\nthe router had already percent-decoded them, so the runtime's\nunconditional unescape double-decoded values containing literal percent\nsigns (\"discount%20\" arrived as \"discount \", \"15%off\" failed bindin\n[…]\nts.\n- stdhttp gets a single-route escaping probe, since its full round-trip\n run is still skipped on the digit-leading parameter panic (#2306).\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Tell the runtime whether routers deliver escaped path parameter value…",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-12T23:59:23Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "05eb4a76506e53129d54c533d5d632627165a93a",
"body": "Closes: #2180\n\nThe reported miscompilation — a string enum value like N\\A emitted\nverbatim into a double-quoted Go literal — was already fixed by #2433,\nwhich routes string enum constants through strconv.Quote. That change\nshipped without an end-to-end test for this scenario, so pin it with a\ntest generating from the issue's schema and asserting the escaped\nconstant and formattable output.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add regression test for enum values containing backslashes (#2454)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-12T22:54:39Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e66004bf92fe911b8038817a43a743d4095524be",
"body": "* Fix discriminator stamping for pointer-typed and named discriminator fields\n\nCloses: #2297\n\nThe From*/Merge* union helpers assigned the discriminator value as a raw\nstring literal to the variant's field (v.Code = \"resource_exists\"), which\ndoes not compile when the discriminator property is optiona\n[…]\ny@anthropic.com>\n\n* Move discriminator stamp logic into Go code\n\nMove as much logic as possible into Go code, instead of complicating\ntemplates.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Fix discriminator type on unions (#2453)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-12T17:44:10Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5b7486ac6a8445f794f71f88af3c10df39d245ea",
"body": "Closes: #2383\n\nTyped context keys (#1187) gave each generated package its own unexported\nkey type per security scheme, so a scheme shared across specs via $ref no\nlonger matched in context.Value lookups between packages.\n\nA security scheme that $refs a spec covered by import-mapping now aliases\nthe \n[…]\nlias.\n\nThe enable-auth-scopes-on-context option is now formally marked as\ndeprecated in its Go doc comment and in the configuration JSON schema.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Share security scheme context keys across import-mapped packages (#2452)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-12T15:21:21Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "9e29f1726947979bd5834fd62e17fc49638d5873",
"body": "As otherwise we see `defines model for .`, which isn't correct.\n\nThis isn't the best rendered output but improves our output for now.\n\nCo-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@rootly.com>",
"is_bot": false,
"headline": "fix: render Godoc correctly for union types",
"author_name": "Jamie Tanna",
"author_login": "jamietanna",
"committed_at": "2026-07-12T14:42:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4c87e0d314d1721a580581c34b1fd54b01d6e3c5",
"body": "As otherwise we see `defines model for .`, which isn't correct.\n\nCo-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@rootly.com>",
"is_bot": false,
"headline": "fix: render Godoc correctly for renamed types",
"author_name": "Jamie Tanna",
"author_login": "jamietanna",
"committed_at": "2026-07-12T14:42:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "404bf799d18be7fdfd8bf43a55fedc2dbf023f16",
"body": "…o.mod) (#2450)\n\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "fix(deps): update module github.com/getkin/kin-openapi to v0.142.0 (g…",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-07-12T01:13:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f8c502297c8b4e9befcebb734bd8709681933e7b",
"body": "…ub/workflows) (#2447)\n\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps): update golang/govulncheck-action action to v1.1.0 (.gith…",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-07-10T17:22:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "42e4d90794c43cba77df8a597f3ea06a6cd6008f",
"body": "…o.mod) (#2446)\n\n* fix(deps): update module github.com/getkin/kin-openapi to v0.141.0 (go.mod)\n\n* Update generated code\n\nkin-openapi 0.141.0 changes how it marshals empty responses, which\naffects one of our specs that gets re-marshaled and embedded into the\nboilerplate.\n\n---------\n\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>\nCo-authored-by: Marcin Romaszewicz <marcinr@gmail.com>",
"is_bot": true,
"headline": "fix(deps): update module github.com/getkin/kin-openapi to v0.141.0 (g…",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-07-10T17:21:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c0710f198ca0efb02145e523b78d27baa9b58f3d",
"body": "* fix: gate fiber v3 auth scopes behind compatibility flag\n\nThe fiber v3 server template emitted per-operation security scope\ncontext values unconditionally, but the corresponding ...Scopes\nconstants are only generated when\ncompatibility.enable-auth-scopes-on-context is set. Under default\nconfigurat\n[…]\nerrors, 500 for response errors), matching what the gin strict\ntemplate does.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Bring all routers to parity with each other (#2445)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-10T00:17:33Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "e64333651ae90aa45275ee2460f80bca88254f0d",
"body": "* fix: bind only the request body in echo v5 strict handlers\n\nThe echo v5 strict handler template used ctx.Bind, which binds path\nvalues (and, for some methods, query parameters) into the request body\nstruct before binding the body itself, so a path parameter sharing a\nname with a body field would o\n[…]\nat makes Echo's full Bind copy a\nsame-named path parameter into the body struct — Echo's binder skips\nfields without param/query/form tags, so plain generated structs need\nan extra tag to be affected.",
"is_bot": false,
"headline": "fix: bind only the request body in echo v5 strict handlers (#2444)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-09T22:28:04Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "52038a84afe5cfc3d5b79a2d430a0690e8a35749",
"body": "Closes: #1757\n\nUse Echo's body binder, when possible, or defer to the globally overridden binder, if that's been set.\n\nCo-authored-by: Marcin Romaszewicz <marcinr@gmail.com>",
"is_bot": false,
"headline": "fix: bind to body (#2063)",
"author_name": "Yo Han Joo",
"author_login": "SeaRoll",
"committed_at": "2026-07-09T21:52:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5d466889f3091e93594feb6f3451d5c980f5133d",
"body": null,
"is_bot": true,
"headline": "fix(deps): update module golang.org/x/tools to v0.48.0 (go.mod)",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-07-09T21:15:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d87e7075c94d735f31043c789a029bd98c75b6b1",
"body": null,
"is_bot": true,
"headline": "fix(deps): update module golang.org/x/text to v0.40.0 (go.mod)",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-07-09T21:07:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "463e5790c6648eab19ac2f981b0a6d22fb306b60",
"body": null,
"is_bot": true,
"headline": "fix(deps): update module golang.org/x/mod to v0.38.0 (go.mod)",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-07-09T21:03:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f9f7baf13348a5f1a526fdd3db39033348d58321",
"body": "…(.github/workflows) (#2388)\n\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps): update release-drafter/release-drafter action to v7.5.1 …",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-07-09T20:59:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "754a70cba0e994c045cb0f96f5068d9891ec3a43",
"body": "…(go.mod) (#2416)\n\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "fix(deps): update module github.com/speakeasy-api/openapi to v1.24.0 …",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-07-09T20:57:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ad23e6b901a65d7539a4761c4fff791259e7a442",
"body": "…orkflows) (#2384)\n\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps): update github/codeql-action action to v4.37.0 (.github/w…",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-07-09T20:53:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "29e22161fb466d7c6cec5d0f3f7a31b0287d7f8c",
"body": "…h-all unmarshal error (#2427)\n\n* fix: emit case clauses for bodyless responses to prevent default catch-all unmarshal error\n\nWhen a spec defines a response without content (e.g. 204 No Content)\nalongside a default error response with JSON content, the generated\nParse*Response function would attempt\n[…]\nenerated files pick up both the reordering and the no-content break\nclauses from the previous commit, which had not been regenerated.\n\n---------\n\nCo-authored-by: Marcin Romaszewicz <marcinr@gmail.com>",
"is_bot": false,
"headline": "fix: emit case clauses for bodyless responses to prevent default catc…",
"author_name": "Luke Cawood",
"author_login": "lwc",
"committed_at": "2026-07-09T19:44:32Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1111f5a954c40b2a43cffcb4c18f30642337461f",
"body": "The cookie `IsPassThrough` branch in the fiber v2 middleware template\nemitted `}&cookie` instead of `&cookie` when `HasOptionalPointer` is\ntrue, producing a compile error in any generated server with an\noptional pass-through cookie parameter. No committed fixture exercises\nsuch a parameter, which is how it went unnoticed.",
"is_bot": false,
"headline": "fiber: fix extra brace in optional pass-through cookie binding (#2443)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-09T19:43:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5fb965e8282f0b26f0b4ab82a1d0d2f824b64907",
"body": "…ws) (#2441)\n\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps): update actions/labeler action to v6.2.0 (.github/workflo…",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-07-09T18:39:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2f7d6d8b5ca693f588aceb08370a36d77b102632",
"body": "…ows) (#2429)\n\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "chore(deps): update actions/setup-go action to v6.5.0 (.github/workfl…",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-07-09T18:27:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "596935ec511bdd262d9068f1773e4e94a8b642d7",
"body": "Add fiber v3 server support\n\nAdd a `fiber-v3-server` generation target (fiber v3 requires Go 1.25+),\ncontinuing #1937.\n\n- Add `fiber-v3` and `strict-fiber-v3` template sets, derived from the\n fiber v2 templates and adapted to the fiber v3 API: `fiber.Ctx` is\n passed by value, request bodies use `c\n[…]\n/fiber/v3 v3.4.0.\n\nCo-authored-by: Łukasz Opasiak <lukasz.opasiak@proton.me>\nCo-authored-by: Marcin Romaszewicz <marcinr@gmail.com>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Codegen: add fiber v3 support (rebased on main, fiber v3 stable) (#2431)",
"author_name": "dillonbuchanan-maia-tech",
"author_login": "dillonbuchanan-maia-tech",
"committed_at": "2026-07-09T18:26:16Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "90bd665f8aebdb6d457630c7759baff4644e3fca",
"body": "Now that we have echo V5 middleware, use it, rather than recreating\nit locally.",
"is_bot": false,
"headline": "Update echo V5 petstore example (#2442)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-09T17:11:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cdf0907a107ed99b700226959b9f1284e7f85fa2",
"body": "Reorganize documentation, so it's not one monolithic file. Move router-specific examples into the `docs/` directory.\n\nAdd Makefile rules to generate the table of contents via mdtoc\n\nAdd a Github workflow to ensure the TOC is up to date.",
"is_bot": false,
"headline": "Refactor documentation (#2272)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-08T00:27:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "41eeb46b9680a47c0c51f919028c879faaa9237c",
"body": "Generated server code no longer embeds security scheme scopes into the\nrequest context. The per-scheme context key types (e.g.\n`bearerAuthContextKey`), scope constants (e.g. `BearerAuthScopes`), and\nper-operation context stores flattened the spec's `security`\nrequirements and could not represent alt\n[…]\n\n- Regenerate; affected fixtures and examples lose only the now-dead\n scope artifacts. The authenticated-api examples already authenticate\n via the validation middleware and are otherwise unaffected",
"is_bot": false,
"headline": "Deprecate ctx based security scopes (#2440)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-07T23:08:04Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "016983810b630f46ea0e318848a691b03190d974",
"body": "Specs that already list an empty `{}` security alternative alongside named\nschemes previously still had the scheme's scopes context key (such as\n`BearerAuthScopes`) set by generated middleware. After regenerating, that key\nis no longer set for such operations, so authentication middleware that\nenfor\n[…]\nequests as anonymous.\nCall this out explicitly in the security documentation.\n\nCo-authored-by: kriptoburak <kriptoburak@users.noreply.github.com>\nCo-authored-by: Marcin Romaszewicz <marcinr@gmail.com>",
"is_bot": false,
"headline": "fix: allow anonymous security alternatives (#2432)",
"author_name": "Burak Bayır",
"author_login": "kriptoburak",
"committed_at": "2026-07-07T19:09:03Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8b14421b7a7dfac9ee2af16c0fba802b116181ca",
"body": "…v2.7.2 (readme.md) (#2439)\n\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "docs(deps): update module github.com/oapi-codegen/oapi-codegen/v2 to …",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-07-07T15:42:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ae4f369ef09c404e786dddea774c271114d8ed1f",
"body": "Reorganize internal/test into feature categories\n\nReplace the organically grown layout — 56 issues/issue-NNNN directories\nplus a few kitchen-sink specs — with 13 feature categories (schemas,\naggregates, parameters, bodies, servers, clients, events, references,\nextensions, options, naming, openapi31,\n[…]\n.md so review enforces\n category placement and issue-numbered directories don't return.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: refactor all tests by category (#2260)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-07T04:17:50Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "4bd0ad869e2b8fd58031b11aa6673ce3569bd9fa",
"body": "Add ValidateSpec in pkg/codegen, called from Generate after filtering and\npruning. It walks the loaded document and rejects values that would produce\ninvalid Go source: names, paths, media types, discriminator values, security\nscopes and struct-tag content may not contain quotes, backticks, or contr\n[…]\nuseful for ordinary malformed specs too.\n\nAdds internal/test/spec_validation with one spec per error type plus a\nlegitimate spec that must pass.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Validate OpenAPI spec before codegen (#2435)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-07T00:05:48Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "53daae1fb036c8c630bb1b723ef7bbd64fb86301",
"body": "Closes: #2430\n\nOpenAPI 3.1 allows a schema whose only type is \"null\", which validates\nexactly the JSON value null. The type dispatch in oapiSchemaToGoType\nhad no branch for it, so codegen failed with \"unhandled Schema type:\n&[null]\". Map such schemas to `any`, mirroring the permissive mapping\nused f\n[…]\ns, and skip the optional pointer since nil is\nalready the zero value of `any`. Includes a regression test under\ninternal/test/issues/issue-2430.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Handle pure nullable types (#2437)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-06T18:38:12Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "d5e1d026fa4d8e0e5be7811578c27a8721d6f768",
"body": "Spec-derived paths and string enum values were interpolated into generated\nGo source without escaping, so a value containing a quote could produce\nmalformed output. Route paths in the server registration templates and\nstring enum constants are now emitted through strconv.Quote (the existing\ntoGoString helper) so they are always valid, properly-escaped Go string\nliterals. Generated output is unchanged for normal specs.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Make sure to escape user strings (#2433)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-07-06T01:22:04Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5d02a03ac0e92e7c3abe9f185800ea26b3a47fed",
"body": "Clean up the petstore-expanded example so each server variant is\nself-contained: its own generated types and embedded spec, its own copy\nof the trivial in-memory store (a Go map), and its own handler\nimplementation. The backend is simple enough that copying it into each\nvariant keeps every example r\n[…]\navior over real HTTP, replacing the old\nper-variant unit tests that drove the handlers directly without going\nthrough the network.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor petstore example (#2277)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-06-22T20:57:26Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "af93f9e201ee2ad9c7c800f10466334dc61e0906",
"body": "I will be thanking Greptile for allowing their tool use in the next\nrelease notes.",
"is_bot": false,
"headline": "Add Greptile logo to local logo cache (#2425)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-06-22T17:33:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bb192a23ed46e3d5984047f17e50a6c4e59aa9de",
"body": "A schema that combines `type: array` with an `enum` is malformed: the\nenum members are scalars, not arrays, so no array value could ever\nsatisfy the constraint. In the wild this shows up as the item enum being\ncopied onto the array (e.g. Jellyfin's `TranscodingInfo.TranscodeReasons`\nin issue #2176).\n[…]\nplain `[]ItemType`.\nThe meaningful enum lives on the item schema, which still gets its own\nconstants. No existing fixtures change.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Don't emit enum constants for array-typed schemas (#2424)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-06-21T05:06:36Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "2ec2dc6d0379e0fb15f0dbbd4b6aff3a5c572732",
"body": "Closes: #2422\n\nWhen a base spec references a response defined in an external file directly\n(`$ref: 'spec-ext.yaml#/components/responses/Outcome'`, not via a path item)\nand that response is renamed in the external package via `x-go-name`, the\ngenerated `client-with-responses` wrapper pointed at the r\n[…]\ng the external document, and affects all\nexternal refs equally.\n\nA regression test is added under internal/test/issues/issue-2422.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: honour external package's Go name for direct response refs (#2423)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-06-21T04:40:48Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5b7f23257e6513c2ed48d563df53f6fa25efd9cb",
"body": "Closes: #2308\n\nWhen a path item is referenced from an external file (an OpenAPI 3.1\n`components.pathItems` entry referenced from `paths`), and its operation's\nresponse is in turn a `$ref` relative to that same external file\n(`#/components/responses/...`), the generated strict-server response struct\n\n[…]\noGoType, so those are left\nuntouched to avoid double-prefixing.\n\nA regression test is added under internal/test/issues/issue-2308.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: qualify response refs from externally-ref'd path items (#2421)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-06-21T04:25:25Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "4fc9db2f0fc1d60c831709c37f632d2f568cb57b",
"body": "Closes: #2389\n\nA response component exposing the same schema under multiple content types\n(e.g. application/json + application/xml) generated client wrapper fields\ntyped as undefined per-content-type names (*ErrorResponseApplicationJSON /\n*ErrorResponseApplicationXML), breaking compilation.\n\nThe typ\n[…]\ntype. The now-unused isMediaTypeSupported helper is removed, and a regression\ntest is added under internal/test/issues/issue-2389.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Unify emitter/consumer mediatype filter (#2420)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-06-21T01:28:57Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "2ed9ad814b45953cfe312dfe3b36823982bd4d28",
"body": "* fix(codegen): use reflect.DeepEqual for ExclusiveMin/Max in MergeSchemas\n\nkin-openapi's 3.1 work changed Schema.ExclusiveMin/Max from bool to\nExclusiveBound{Bool *bool; Value *float64}. Direct struct equality (!=)\nstill compiles but compares pointer addresses, not the wrapped values, so\ntwo schema\n[…]\nthe dedicated TestContentEncodingBase64...\n test.\n\nCloses Greptile P1 review comment on pkg/codegen/schema.go:1149+.\n\n---------\n\nCo-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Initial OpenAPI 3.1 support based on kin-openapi (#2336)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-06-20T16:42:11Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "7de8635d081e5a2b3b6b85a4663b71c46f2bc456",
"body": "Closes: #2403\n\nPicks up oapi-codegen/runtime#134, which restores the missing required\nparameter check for struct-typed query params (e.g. types.Date). Updates\ngithub.com/oapi-codegen/runtime from v1.4.1 to v1.4.2 in the internal/test\nand examples modules.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Bump runtime to v1.4.2 (#2419)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-06-20T06:20:32Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "b93bf8cfaedb21491e34a7c76c1f00082d86d0a4",
"body": "* fix: use raw enum values for cross-enum conflict detection\n\nGetValues() returns prefixed identifier names for enums already marked\nas conflicting. Using it in the cross-enum comparison loop makes the\nresult order-dependent: an enum that was prefixed in an earlier iteration\nproduces keys like FooSt\n[…]\nuthored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Marcin Romaszewicz <marcinr@gmail.com>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: use raw enum values for cross-enum conflict detection (#2390)",
"author_name": "Natalie Perret",
"author_login": "natalie-o-perret",
"committed_at": "2026-06-20T05:45:39Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c1d48f76ab2a6644a92c331acb209b83ea3992da",
"body": "* Add optional type generation for inline schemas\n\nAdds output-options.generate-types-for-anonymous-schemas (default false).\nWhen set, every inline schema that would otherwise generate as an\nanonymous Go struct is instead emitted as a named type with a path-\nderived name (e.g. GetRolesId200JSONRespo\n[…]\nd output is byte-identical.\n\nNo new fixtures or behavioral changes; this commit is intended to be\nsquashed with the parent `Add optional type generation for inline\nschemas` commit before the PR lands.",
"is_bot": false,
"headline": "Add optional type generation for inline schemas (#2366)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-06-20T02:28:06Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "77fcbaa9d108ae6b099ef92e707f65e3cc843276",
"body": "…(go.mod)",
"is_bot": true,
"headline": "fix(deps): update module github.com/speakeasy-api/openapi to v1.23.1 …",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-06-19T07:08:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b8a112aebe01a3cbaa83350e2d4bf61224ac658d",
"body": null,
"is_bot": true,
"headline": "chore(deps): update actions/checkout action to v7 (.github/workflows)",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-06-18T21:03:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2bf15250d004bd355926ea4572493f561af6132f",
"body": "Instead of a `.9` release, which doesn't need to be required for our\nuse-cases, we can keep it at the minimum setting to reduce unnecessary\nGo version bumps across our users.",
"is_bot": false,
"headline": "chore: downgrade Go requirement to 1.25.0 (#2413)",
"author_name": "Jamie Tanna",
"author_login": "jamietanna",
"committed_at": "2026-06-18T12:56:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0706878df6066e80eb8f41ed015c79bf3fb6756c",
"body": "Without this change, we'll generate i.e.\n\n ApplicationvndApiJSON422 *CreateItem422ApplicationvndApiJSONResponseBody\n\nInstead of\n\n ApplicationvndApiJSON422 *CreateItem422ApplicationVndAPIPlusJSONResponseBody\n\nAs the type doesn't exist, this introduces a compilation error.\n\nWe can instead make sure we're consistently generating the media type\nname.\n\nCo-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@rootly.com>",
"is_bot": false,
"headline": "fix: correctly generate consistent media type for type aliases",
"author_name": "Jamie Tanna",
"author_login": "jamietanna",
"committed_at": "2026-06-18T07:48:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e0c967b38e81e0242199bd0ba29075d6ddbb4a62",
"body": "In the case that we have type aliases that are deprecated (because the\ntype they're pointing to, are also deprecated), we were previously not\nmarking the type alias as deprecated, too.\n\nCo-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@rootly.com>",
"is_bot": false,
"headline": "fix: propagate `deprecated` across type aliases",
"author_name": "Jamie Tanna",
"author_login": "jamietanna",
"committed_at": "2026-06-17T18:56:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b76dea4cb0096e15e9cfa028282118476a51ded1",
"body": "Previously, we would miss rendering a deprecation notice in Godoc for\nAPI types, fields and HTTP routes in our generated client, which makes\nit harder for users to be aware of deprecated functionality they're\nrelying upon.\n\nWe can make sure to introduce `DeprecationComment` functions where\nnecessary, and call it when rendering templates.\n\nCo-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@rootly.com>",
"is_bot": false,
"headline": "fix: correctly set deprecated Godoc where necessary",
"author_name": "Jamie Tanna",
"author_login": "jamietanna",
"committed_at": "2026-06-17T18:56:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e6ef2c2817af59d5b218d96a531ae35c193f3c0f",
"body": "As part of future changes, we'll be improving how `oapi-codegen`\ngenerates deprecation notices through godoc.\n\nBefore we do this, we can introduce a more in-depth test case for the\ndifferent areas that can be marked as deprecated, so we can validate the\nfunctionality.\n\nWith help from\n\nAs a starting \n[…]\nTP client and server\n- Add Strict Server functionality\n- Deprecate a parameter\n- Generate a deprecation on `components/response`\n\nCo-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@rootly.com>",
"is_bot": false,
"headline": "test: add an in-depth test for `deprecated: true`",
"author_name": "Jamie Tanna",
"author_login": "jamietanna",
"committed_at": "2026-06-17T18:56:34Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "13b9c9aabfb1e0e8af4ab0e351c7da4ef02e8e00",
"body": null,
"is_bot": false,
"headline": "chore(client): remove unnecessary `(Body)` suffix",
"author_name": "Jamie Tanna",
"author_login": "jamietanna",
"committed_at": "2026-06-17T09:14:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "41f5de98910545cb076116833ed68b5b3804eb91",
"body": "To make it easier for folks to work with the generated code we produce\nfor API clients, we should make a few tweaks to improve the output:\n\n- Provide a better default Godoc if we don't have a `summary`\n- Ensure the `ClientInterface` and `ClientWithResponsesInterface`\n include Godoc, too\n- Generate \n[…]\nto simplify the rendering in Go,\nrather than introducing complex templating.\n\nWith help from Claude Sonnet to add test coverage.\n\nCo-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@rootly.com>",
"is_bot": false,
"headline": "feat(client): generate more useful Godoc for client functions",
"author_name": "Jamie Tanna",
"author_login": "jamietanna",
"committed_at": "2026-06-17T09:14:59Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b71bffa0bc64dd4c2767509c4c181a96e9f881e8",
"body": "To align with the comment on the helper function, if enabled, too.",
"is_bot": false,
"headline": "feat(client): add Godoc to response body struct",
"author_name": "Jamie Tanna",
"author_login": "jamietanna",
"committed_at": "2026-06-17T09:14:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "81287d8c399ff40997dd9acb01bbe224434b6ca7",
"body": "As a follow-up from c5641fd52f0d95a95f2def767753b584b83977e4, we can\nimprove this wording, so it's a little clearer.\n\nThis makes it a little clearer what this getter is doing - returning\nthe response body for a given HTTP response and media type - rather than\nreiterating what type is returned.",
"is_bot": false,
"headline": "chore(client): improve Godoc wording for response body extraction",
"author_name": "Jamie Tanna",
"author_login": "jamietanna",
"committed_at": "2026-06-17T09:14:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f333fc1efbe55c116d69932e0495c2fec4c65389",
"body": "To make sure that the comments show up as Godoc for IDEs, the convention\nis that the first word of the comment should be the function name.\n\nWith help from Claude Sonnet to add test coverage, and ensure that no\nstray whitespace can be injected.\n\nCo-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@rootly.com>",
"is_bot": false,
"headline": "fix(templates): ensure that `SummaryAsComment` is Godoc-style",
"author_name": "Jamie Tanna",
"author_login": "jamietanna",
"committed_at": "2026-06-17T09:14:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cec4e6c74d84e28d987211c634ce5c7feb9b7506",
"body": null,
"is_bot": false,
"headline": "chore(client): note that the content type is also specified",
"author_name": "Jamie Tanna",
"author_login": "jamietanna",
"committed_at": "2026-06-17T09:14:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b089103c0fbfe64f14f83ad387d45afe447b46d2",
"body": null,
"is_bot": false,
"headline": "chore(client): remove duplicated whitespace for `RequestEditorFn`",
"author_name": "Jamie Tanna",
"author_login": "jamietanna",
"committed_at": "2026-06-17T09:14:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a7620e48e962dfeca8f0446b5df0de0f988c4bf3",
"body": null,
"is_bot": false,
"headline": "style: ensure `gofmt` is run on operations.go",
"author_name": "Jamie Tanna",
"author_login": "jamietanna",
"committed_at": "2026-06-17T09:14:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3a4debfeb0fe9938d5eaf86a5de62291d90ba24c",
"body": "…v2.7.1 (readme.md)",
"is_bot": true,
"headline": "docs(deps): update module github.com/oapi-codegen/oapi-codegen/v2 to …",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-06-06T21:22:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bfe9fa3aa2b1ecfaea23d2960f48e02c596c433c",
"body": "We're seeing intermittent issues from the Petstore project such as:\n\n error loading swagger spec in spec.yaml\n : failed to load OpenAPI specification: error resolving reference\n \"https://petstore3.swagger.io/api/v3/openapi.json#/components/schemas/Pet\":\n error loading \"https://petstore3.\n[…]\neturned status code 403\n\nWe can try and switch to the raw spec in GitHub to do this lookup, to\navoid hitting the Petstore API.\n\nIt's unclear if GitHub are going to be more performant, but it may help.",
"is_bot": false,
"headline": "test: use Petstore spec from GitHub",
"author_name": "Jamie Tanna",
"author_login": "jamietanna",
"committed_at": "2026-06-06T20:09:12Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a63186ffe57364ae0a09eaa7511f92c647908351",
"body": "Tighten how server URL values are emitted in the server-urls template so\nthat spec-supplied text is always serialized into a proper Go context:\n\n- Route server descriptions and URLs through stripNewLines when they are\n written into generated // comments, so a multi-line value stays on the\n comment\n[…]\nests covering the server-urls rendering and the\nStringToGoString escaping, and confirm `make generate` produces no\nchanges to committed output.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Improve string escaping and add tests (#2396)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-06-05T14:21:56Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c32c9d9eb4f52724d2333cbe8f0d8ed89f02f1af",
"body": "…o.mod) (#2395)\n\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "fix(deps): update module github.com/getkin/kin-openapi to v0.140.0 (g…",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-06-03T14:50:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1e1b2a251bc24450a5766af9d648e6601436e5aa",
"body": "…orkflows)",
"is_bot": true,
"headline": "chore(deps): update dessant/label-actions action to v5.0.3 (.github/w…",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-06-01T17:14:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d5e17e9eb858e6b9461eef9400f115f7fa29d75e",
"body": "…o.mod)",
"is_bot": true,
"headline": "fix(deps): update module github.com/getkin/kin-openapi to v0.139.0 (g…",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-05-25T11:27:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c5641fd52f0d95a95f2def767753b584b83977e4",
"body": "* added Getter functions for response bodies\n\n* add configuration option to skip response body getter generation\n\n* Update config schema, regenerate everything\n\n- Add `skip-response-body-getters` to `configuration-schema.json` under\n `output-options` so schema-based config validation accepts the ne\n[…]\n. The tests\n instantiate the generated response type and use reflection to assert\n the getters are present or absent as configured.\n\n---------\n\nCo-authored-by: Marcin Romaszewicz <marcinr@gmail.com>",
"is_bot": false,
"headline": "Add functions to response models for schema-extraction (#2379)",
"author_name": "Andreas Tollkötter",
"author_login": "rd-andreas-tollkoetter",
"committed_at": "2026-05-19T16:54:38Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "28b47cafa3b89e08d4df203aebbfdb5d955da15a",
"body": "When I updated to Go 1.25 and un-moduled the echo-v5 code, I left behind\nthe special-cased test for echo-v5 which existed due to module boundaries.\nSince those modules don't exist anymore, we can remove the special casing.\n\nCo-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Echo V5 now uses the generic test framework (#2382)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-05-19T16:21:38Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "8c4029a30e20b52c6494de13422fd0f0c2d896f1",
"body": "Closes #2378\n\nSince we test nearly everything in ASCII, we missed some failures in\nruntime around marshaling parameters. Extend the deepObject test\nto catch issues if they resurface.\n\nCo-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Extend deepObject testing to include unicode (#2381)",
"author_name": "Marcin Romaszewicz",
"author_login": "mromaszewicz",
"committed_at": "2026-05-19T16:00:21Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "84bfb1b48778af039f9bfbd80774a1c09028ff2c",
"body": "…orkflows)",
"is_bot": true,
"headline": "chore(deps): update dessant/label-actions action to v5.0.2 (.github/w…",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-05-17T20:31:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d4ab4d91e0e0e62e94e31ca79d99293e2c83d130",
"body": null,
"is_bot": true,
"headline": "fix(deps): update module golang.org/x/text to v0.37.0 (go.mod)",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-05-17T14:28:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "df17a79a4c3baded13c218a860375b39c8a40976",
"body": "…(.github/workflows)",
"is_bot": true,
"headline": "chore(deps): update release-drafter/release-drafter action to v7.3.0 …",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-05-17T14:27:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "75ecc2c8f1ec3c5b4eaf5cbb07152832b247c030",
"body": "….2 (makefile)",
"is_bot": true,
"headline": "chore(deps): update module github.com/golangci/golangci-lint to v2.12…",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-05-17T14:25:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c6c3f920e0f3a4760a5f15913fba3cb33cd23459",
"body": "Via [0], otherwise downloads fails with:\n\n```\ngolangci/golangci-lint err hash_sha256_verify checksum for\n '/tmp/.../golangci-lint-2.12.2-linux-amd64.tar.gz' did not verify\n\n```\n\n[0]: https://redirect.github.com/golangci/golangci-lint/issues/6572#issuecomment-4400895705",
"is_bot": false,
"headline": "lint: migrate to `golangci-lint`'s install script on `main`",
"author_name": "Jamie Tanna",
"author_login": "jamietanna",
"committed_at": "2026-05-17T14:22:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "31185d09c65b8291cf4412a54fcb7cc04f5647db",
"body": "…orkflows)",
"is_bot": true,
"headline": "chore(deps): update github/codeql-action action to v4.35.5 (.github/w…",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-05-17T14:09:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3df18d451c3bb9175f2c59c25b7be9b686426320",
"body": "…ows)",
"is_bot": true,
"headline": "chore(deps): update actions/setup-go action to v6.4.0 (.github/workfl…",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-05-17T14:08:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2fd3d0d0dbaf4fcb9be6312401d1cab4a50c6522",
"body": "…/workflows)",
"is_bot": true,
"headline": "chore(deps): update actions/upload-artifact action to v7.0.1 (.github…",
"author_name": "renovate[bot]",
"author_login": "renovate[bot]",
"committed_at": "2026-05-17T14:08:25Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 87,
"commits_last_year": 260,
"latest_release_at": "2026-07-17T14:11:21Z",
"latest_release_tag": "v2.8.0",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 32,
"days_since_latest_release": 4,
"mean_days_between_releases": 85.6
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 62,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "github.com/oapi-codegen/oapi-codegen/v2",
"exists": true,
"license": null,
"keywords": [],
"ecosystem": "go",
"matches_repo": true,
"registry_url": "https://pkg.go.dev/github.com/oapi-codegen/oapi-codegen/v2",
"is_deprecated": false,
"latest_version": "v2.8.0",
"repository_url": "https://github.com/oapi-codegen/oapi-codegen",
"versions_count": 13,
"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:01:16Z",
"latest_version_yanked": null,
"days_since_latest_publish": 4
}
]
},
"popularity": {
"forks": 1049,
"stars": 8472,
"watchers": 41,
"fork_history": {
"days": [
{
"date": "2019-05-07",
"count": 1
},
{
"date": "2019-05-09",
"count": 1
},
{
"date": "2019-05-13",
"count": 1
},
{
"date": "2019-05-20",
"count": 1
},
{
"date": "2019-05-27",
"count": 1
},
{
"date": "2019-06-02",
"count": 1
},
{
"date": "2019-06-20",
"count": 1
},
{
"date": "2019-06-24",
"count": 1
},
{
"date": "2019-07-02",
"count": 1
},
{
"date": "2019-07-10",
"count": 1
},
{
"date": "2019-07-26",
"count": 1
},
{
"date": "2019-08-02",
"count": 1
},
{
"date": "2019-08-07",
"count": 1
},
{
"date": "2019-08-11",
"count": 1
},
{
"date": "2019-08-13",
"count": 1
},
{
"date": "2019-08-16",
"count": 1
},
{
"date": "2019-08-20",
"count": 1
},
{
"date": "2019-09-10",
"count": 2
},
{
"date": "2019-09-17",
"count": 1
},
{
"date": "2019-09-19",
"count": 1
},
{
"date": "2019-09-20",
"count": 1
},
{
"date": "2019-09-21",
"count": 1
},
{
"date": "2019-09-24",
"count": 1
},
{
"date": "2019-10-06",
"count": 1
},
{
"date": "2019-10-10",
"count": 2
},
{
"date": "2019-10-18",
"count": 1
},
{
"date": "2019-11-13",
"count": 1
},
{
"date": "2019-11-14",
"count": 1
},
{
"date": "2019-12-06",
"count": 1
},
{
"date": "2019-12-11",
"count": 1
},
{
"date": "2019-12-13",
"count": 1
},
{
"date": "2019-12-17",
"count": 1
},
{
"date": "2019-12-19",
"count": 1
},
{
"date": "2019-12-20",
"count": 1
},
{
"date": "2020-01-02",
"count": 2
},
{
"date": "2020-01-06",
"count": 1
},
{
"date": "2020-01-14",
"count": 1
},
{
"date": "2020-01-17",
"count": 1
},
{
"date": "2020-01-24",
"count": 1
},
{
"date": "2020-01-26",
"count": 1
},
{
"date": "2020-02-10",
"count": 1
},
{
"date": "2020-02-11",
"count": 1
},
{
"date": "2020-02-18",
"count": 1
},
{
"date": "2020-02-25",
"count": 1
},
{
"date": "2020-02-27",
"count": 2
},
{
"date": "2020-03-13",
"count": 1
},
{
"date": "2020-03-15",
"count": 1
},
{
"date": "2020-03-17",
"count": 1
},
{
"date": "2020-03-19",
"count": 1
},
{
"date": "2020-03-24",
"count": 1
},
{
"date": "2020-04-01",
"count": 1
},
{
"date": "2020-04-02",
"count": 1
},
{
"date": "2020-04-06",
"count": 2
},
{
"date": "2020-04-07",
"count": 1
},
{
"date": "2020-04-08",
"count": 1
},
{
"date": "2020-04-15",
"count": 1
},
{
"date": "2020-04-22",
"count": 1
},
{
"date": "2020-04-26",
"count": 3
},
{
"date": "2020-04-29",
"count": 1
},
{
"date": "2020-04-30",
"count": 2
},
{
"date": "2020-05-14",
"count": 1
},
{
"date": "2020-05-28",
"count": 1
},
{
"date": "2020-06-06",
"count": 1
},
{
"date": "2020-06-09",
"count": 1
},
{
"date": "2020-06-13",
"count": 1
},
{
"date": "2020-06-14",
"count": 1
},
{
"date": "2020-06-15",
"count": 1
},
{
"date": "2020-06-16",
"count": 1
},
{
"date": "2020-06-18",
"count": 1
},
{
"date": "2020-06-23",
"count": 1
},
{
"date": "2020-06-26",
"count": 1
},
{
"date": "2020-06-27",
"count": 1
},
{
"date": "2020-07-07",
"count": 2
},
{
"date": "2020-07-20",
"count": 1
},
{
"date": "2020-07-23",
"count": 1
},
{
"date": "2020-07-29",
"count": 1
},
{
"date": "2020-07-30",
"count": 1
},
{
"date": "2020-08-03",
"count": 1
},
{
"date": "2020-08-13",
"count": 1
},
{
"date": "2020-08-18",
"count": 1
},
{
"date": "2020-08-19",
"count": 1
},
{
"date": "2020-08-24",
"count": 2
},
{
"date": "2020-09-10",
"count": 1
},
{
"date": "2020-09-14",
"count": 1
},
{
"date": "2020-09-16",
"count": 1
},
{
"date": "2020-10-01",
"count": 1
},
{
"date": "2020-10-06",
"count": 1
},
{
"date": "2020-10-10",
"count": 1
},
{
"date": "2020-10-18",
"count": 1
},
{
"date": "2020-10-23",
"count": 2
},
{
"date": "2020-10-30",
"count": 1
},
{
"date": "2020-11-02",
"count": 1
},
{
"date": "2020-11-05",
"count": 1
},
{
"date": "2020-11-19",
"count": 1
},
{
"date": "2020-11-20",
"count": 1
},
{
"date": "2020-11-25",
"count": 1
},
{
"date": "2020-12-03",
"count": 1
},
{
"date": "2020-12-05",
"count": 1
},
{
"date": "2020-12-08",
"count": 1
},
{
"date": "2020-12-10",
"count": 1
},
{
"date": "2020-12-16",
"count": 1
},
{
"date": "2020-12-23",
"count": 1
},
{
"date": "2021-01-03",
"count": 1
},
{
"date": "2021-01-06",
"count": 3
},
{
"date": "2021-01-11",
"count": 1
},
{
"date": "2021-01-16",
"count": 1
},
{
"date": "2021-01-17",
"count": 1
},
{
"date": "2021-01-21",
"count": 1
},
{
"date": "2021-01-25",
"count": 1
},
{
"date": "2021-01-30",
"count": 1
},
{
"date": "2021-02-02",
"count": 2
},
{
"date": "2021-02-03",
"count": 1
},
{
"date": "2021-02-04",
"count": 3
},
{
"date": "2021-02-06",
"count": 1
},
{
"date": "2021-02-08",
"count": 1
},
{
"date": "2021-02-14",
"count": 1
},
{
"date": "2021-02-25",
"count": 1
},
{
"date": "2021-02-26",
"count": 1
},
{
"date": "2021-02-28",
"count": 1
},
{
"date": "2021-03-02",
"count": 2
},
{
"date": "2021-03-05",
"count": 2
},
{
"date": "2021-03-07",
"count": 1
},
{
"date": "2021-03-08",
"count": 1
},
{
"date": "2021-03-12",
"count": 1
},
{
"date": "2021-03-20",
"count": 1
},
{
"date": "2021-03-22",
"count": 2
},
{
"date": "2021-03-24",
"count": 2
},
{
"date": "2021-03-25",
"count": 1
},
{
"date": "2021-03-26",
"count": 1
},
{
"date": "2021-03-31",
"count": 1
},
{
"date": "2021-04-01",
"count": 1
},
{
"date": "2021-04-04",
"count": 1
},
{
"date": "2021-04-14",
"count": 1
},
{
"date": "2021-04-17",
"count": 1
},
{
"date": "2021-04-23",
"count": 1
},
{
"date": "2021-04-27",
"count": 1
},
{
"date": "2021-04-30",
"count": 1
},
{
"date": "2021-05-02",
"count": 1
},
{
"date": "2021-05-08",
"count": 1
},
{
"date": "2021-05-11",
"count": 1
},
{
"date": "2021-05-13",
"count": 1
},
{
"date": "2021-05-17",
"count": 1
},
{
"date": "2021-05-19",
"count": 1
},
{
"date": "2021-05-26",
"count": 1
},
{
"date": "2021-05-31",
"count": 1
},
{
"date": "2021-06-05",
"count": 1
},
{
"date": "2021-06-06",
"count": 1
},
{
"date": "2021-06-08",
"count": 2
},
{
"date": "2021-06-15",
"count": 1
},
{
"date": "2021-06-17",
"count": 1
},
{
"date": "2021-06-18",
"count": 1
},
{
"date": "2021-06-22",
"count": 1
},
{
"date": "2021-06-24",
"count": 2
},
{
"date": "2021-06-28",
"count": 1
},
{
"date": "2021-06-29",
"count": 2
},
{
"date": "2021-07-01",
"count": 1
},
{
"date": "2021-07-02",
"count": 2
},
{
"date": "2021-07-14",
"count": 1
},
{
"date": "2021-07-18",
"count": 1
},
{
"date": "2021-07-21",
"count": 1
},
{
"date": "2021-07-23",
"count": 1
},
{
"date": "2021-08-01",
"count": 1
},
{
"date": "2021-08-03",
"count": 1
},
{
"date": "2021-08-06",
"count": 1
},
{
"date": "2021-08-12",
"count": 3
},
{
"date": "2021-08-13",
"count": 1
},
{
"date": "2021-08-15",
"count": 1
},
{
"date": "2021-08-17",
"count": 1
},
{
"date": "2021-08-22",
"count": 1
},
{
"date": "2021-08-23",
"count": 1
},
{
"date": "2021-08-24",
"count": 1
},
{
"date": "2021-08-25",
"count": 2
},
{
"date": "2021-08-27",
"count": 1
},
{
"date": "2021-08-29",
"count": 1
},
{
"date": "2021-08-30",
"count": 1
},
{
"date": "2021-09-01",
"count": 1
},
{
"date": "2021-09-07",
"count": 1
},
{
"date": "2021-09-09",
"count": 1
},
{
"date": "2021-09-10",
"count": 2
},
{
"date": "2021-09-11",
"count": 1
},
{
"date": "2021-09-14",
"count": 1
},
{
"date": "2021-09-17",
"count": 1
},
{
"date": "2021-09-21",
"count": 1
},
{
"date": "2021-09-22",
"count": 1
},
{
"date": "2021-10-06",
"count": 2
},
{
"date": "2021-10-08",
"count": 1
},
{
"date": "2021-10-10",
"count": 1
},
{
"date": "2021-10-14",
"count": 1
},
{
"date": "2021-10-17",
"count": 1
},
{
"date": "2021-10-22",
"count": 1
},
{
"date": "2021-10-24",
"count": 1
},
{
"date": "2021-10-26",
"count": 1
},
{
"date": "2021-10-30",
"count": 1
},
{
"date": "2021-11-02",
"count": 1
},
{
"date": "2021-11-09",
"count": 1
},
{
"date": "2021-11-11",
"count": 2
},
{
"date": "2021-11-12",
"count": 1
},
{
"date": "2021-11-16",
"count": 2
},
{
"date": "2021-11-19",
"count": 1
},
{
"date": "2021-11-21",
"count": 1
},
{
"date": "2021-11-22",
"count": 1
},
{
"date": "2021-11-23",
"count": 1
},
{
"date": "2021-11-24",
"count": 1
},
{
"date": "2021-11-25",
"count": 1
},
{
"date": "2021-11-27",
"count": 1
},
{
"date": "2021-11-30",
"count": 1
},
{
"date": "2021-12-02",
"count": 1
},
{
"date": "2021-12-03",
"count": 1
},
{
"date": "2021-12-06",
"count": 1
},
{
"date": "2021-12-08",
"count": 1
},
{
"date": "2021-12-16",
"count": 1
},
{
"date": "2021-12-23",
"count": 1
},
{
"date": "2021-12-24",
"count": 1
},
{
"date": "2021-12-27",
"count": 1
},
{
"date": "2021-12-29",
"count": 1
},
{
"date": "2022-01-04",
"count": 1
},
{
"date": "2022-01-05",
"count": 3
},
{
"date": "2022-01-07",
"count": 1
},
{
"date": "2022-01-08",
"count": 1
},
{
"date": "2022-01-10",
"count": 1
},
{
"date": "2022-01-12",
"count": 1
},
{
"date": "2022-01-15",
"count": 1
},
{
"date": "2022-01-17",
"count": 1
},
{
"date": "2022-01-31",
"count": 2
},
{
"date": "2022-02-02",
"count": 1
},
{
"date": "2022-02-04",
"count": 3
},
{
"date": "2022-02-10",
"count": 1
},
{
"date": "2022-02-11",
"count": 1
},
{
"date": "2022-02-12",
"count": 1
},
{
"date": "2022-02-14",
"count": 1
},
{
"date": "2022-02-21",
"count": 2
},
{
"date": "2022-02-22",
"count": 2
},
{
"date": "2022-02-23",
"count": 1
},
{
"date": "2022-02-25",
"count": 1
},
{
"date": "2022-03-02",
"count": 2
},
{
"date": "2022-03-03",
"count": 1
},
{
"date": "2022-03-10",
"count": 1
},
{
"date": "2022-03-14",
"count": 2
},
{
"date": "2022-03-17",
"count": 1
},
{
"date": "2022-03-23",
"count": 2
},
{
"date": "2022-03-31",
"count": 1
},
{
"date": "2022-04-04",
"count": 2
},
{
"date": "2022-04-05",
"count": 2
},
{
"date": "2022-04-06",
"count": 2
},
{
"date": "2022-04-07",
"count": 2
},
{
"date": "2022-04-12",
"count": 1
},
{
"date": "2022-04-13",
"count": 2
},
{
"date": "2022-04-15",
"count": 1
},
{
"date": "2022-04-16",
"count": 1
},
{
"date": "2022-04-19",
"count": 3
},
{
"date": "2022-04-20",
"count": 1
},
{
"date": "2022-04-21",
"count": 1
},
{
"date": "2022-04-23",
"count": 1
},
{
"date": "2022-04-24",
"count": 1
},
{
"date": "2022-04-25",
"count": 2
},
{
"date": "2022-04-26",
"count": 2
},
{
"date": "2022-04-27",
"count": 1
},
{
"date": "2022-05-02",
"count": 1
},
{
"date": "2022-05-03",
"count": 1
},
{
"date": "2022-05-04",
"count": 1
},
{
"date": "2022-05-06",
"count": 2
},
{
"date": "2022-05-10",
"count": 1
},
{
"date": "2022-05-12",
"count": 1
},
{
"date": "2022-05-17",
"count": 2
},
{
"date": "2022-05-19",
"count": 1
},
{
"date": "2022-05-20",
"count": 1
},
{
"date": "2022-05-21",
"count": 2
},
{
"date": "2022-05-22",
"count": 1
},
{
"date": "2022-05-23",
"count": 1
},
{
"date": "2022-05-24",
"count": 2
},
{
"date": "2022-05-25",
"count": 1
},
{
"date": "2022-05-27",
"count": 2
},
{
"date": "2022-06-02",
"count": 1
},
{
"date": "2022-06-03",
"count": 4
},
{
"date": "2022-06-04",
"count": 1
},
{
"date": "2022-06-08",
"count": 1
},
{
"date": "2022-06-09",
"count": 1
},
{
"date": "2022-06-11",
"count": 1
},
{
"date": "2022-06-13",
"count": 2
},
{
"date": "2022-06-14",
"count": 2
},
{
"date": "2022-06-15",
"count": 2
},
{
"date": "2022-06-16",
"count": 2
},
{
"date": "2022-06-18",
"count": 1
},
{
"date": "2022-06-19",
"count": 1
},
{
"date": "2022-06-20",
"count": 2
},
{
"date": "2022-06-23",
"count": 1
},
{
"date": "2022-06-28",
"count": 1
},
{
"date": "2022-06-29",
"count": 2
},
{
"date": "2022-07-01",
"count": 2
},
{
"date": "2022-07-07",
"count": 1
},
{
"date": "2022-07-13",
"count": 2
},
{
"date": "2022-07-15",
"count": 1
},
{
"date": "2022-07-16",
"count": 1
},
{
"date": "2022-07-18",
"count": 1
},
{
"date": "2022-07-19",
"count": 2
},
{
"date": "2022-07-20",
"count": 2
},
{
"date": "2022-07-21",
"count": 1
},
{
"date": "2022-07-25",
"count": 1
},
{
"date": "2022-07-31",
"count": 1
},
{
"date": "2022-08-05",
"count": 1
},
{
"date": "2022-08-07",
"count": 1
},
{
"date": "2022-08-10",
"count": 1
},
{
"date": "2022-08-16",
"count": 1
},
{
"date": "2022-08-20",
"count": 1
},
{
"date": "2022-08-23",
"count": 2
},
{
"date": "2022-08-24",
"count": 2
},
{
"date": "2022-08-26",
"count": 2
},
{
"date": "2022-08-28",
"count": 1
},
{
"date": "2022-08-29",
"count": 2
},
{
"date": "2022-08-31",
"count": 1
},
{
"date": "2022-09-02",
"count": 1
},
{
"date": "2022-09-04",
"count": 2
},
{
"date": "2022-09-05",
"count": 1
},
{
"date": "2022-09-13",
"count": 1
},
{
"date": "2022-09-14",
"count": 1
},
{
"date": "2022-09-23",
"count": 3
},
{
"date": "2022-09-24",
"count": 1
},
{
"date": "2022-09-29",
"count": 1
},
{
"date": "2022-10-02",
"count": 1
},
{
"date": "2022-10-05",
"count": 1
},
{
"date": "2022-10-06",
"count": 1
},
{
"date": "2022-10-09",
"count": 1
},
{
"date": "2022-10-11",
"count": 3
},
{
"date": "2022-10-14",
"count": 1
},
{
"date": "2022-10-18",
"count": 1
},
{
"date": "2022-10-19",
"count": 1
},
{
"date": "2022-10-21",
"count": 2
},
{
"date": "2022-10-23",
"count": 1
},
{
"date": "2022-10-24",
"count": 1
},
{
"date": "2022-10-25",
"count": 1
},
{
"date": "2022-10-27",
"count": 2
},
{
"date": "2022-10-28",
"count": 4
},
{
"date": "2022-10-29",
"count": 1
},
{
"date": "2022-10-31",
"count": 1
},
{
"date": "2022-11-02",
"count": 1
},
{
"date": "2022-11-03",
"count": 1
},
{
"date": "2022-11-07",
"count": 2
},
{
"date": "2022-11-08",
"count": 1
},
{
"date": "2022-11-09",
"count": 1
},
{
"date": "2022-11-13",
"count": 1
},
{
"date": "2022-11-14",
"count": 1
},
{
"date": "2022-11-17",
"count": 1
},
{
"date": "2022-11-19",
"count": 2
},
{
"date": "2022-11-22",
"count": 1
},
{
"date": "2022-11-23",
"count": 1
},
{
"date": "2022-11-24",
"count": 2
},
{
"date": "2022-11-30",
"count": 2
},
{
"date": "2022-12-01",
"count": 1
},
{
"date": "2022-12-08",
"count": 1
},
{
"date": "2022-12-12",
"count": 1
},
{
"date": "2022-12-13",
"count": 2
},
{
"date": "2022-12-14",
"count": 1
},
{
"date": "2022-12-21",
"count": 1
},
{
"date": "2022-12-31",
"count": 2
},
{
"date": "2023-01-04",
"count": 1
},
{
"date": "2023-01-05",
"count": 1
},
{
"date": "2023-01-06",
"count": 1
},
{
"date": "2023-01-07",
"count": 1
},
{
"date": "2023-01-08",
"count": 1
},
{
"date": "2023-01-15",
"count": 1
},
{
"date": "2023-01-16",
"count": 1
},
{
"date": "2023-01-17",
"count": 1
},
{
"date": "2023-01-19",
"count": 1
},
{
"date": "2023-01-21",
"count": 1
},
{
"date": "2023-01-23",
"count": 2
},
{
"date": "2023-01-24",
"count": 4
},
{
"date": "2023-01-25",
"count": 1
},
{
"date": "2023-01-26",
"count": 3
},
{
"date": "2023-01-27",
"count": 1
},
{
"date": "2023-01-28",
"count": 2
},
{
"date": "2023-01-30",
"count": 1
},
{
"date": "2023-02-05",
"count": 1
},
{
"date": "2023-02-06",
"count": 4
},
{
"date": "2023-02-09",
"count": 1
},
{
"date": "2023-02-10",
"count": 2
},
{
"date": "2023-02-13",
"count": 1
},
{
"date": "2023-02-14",
"count": 2
},
{
"date": "2023-02-15",
"count": 1
},
{
"date": "2023-02-16",
"count": 1
},
{
"date": "2023-02-18",
"count": 1
},
{
"date": "2023-02-22",
"count": 1
},
{
"date": "2023-02-23",
"count": 2
},
{
"date": "2023-02-25",
"count": 1
},
{
"date": "2023-02-27",
"count": 2
},
{
"date": "2023-02-28",
"count": 1
},
{
"date": "2023-03-06",
"count": 1
},
{
"date": "2023-03-07",
"count": 2
},
{
"date": "2023-03-08",
"count": 3
},
{
"date": "2023-03-10",
"count": 1
},
{
"date": "2023-03-11",
"count": 1
},
{
"date": "2023-03-15",
"count": 1
},
{
"date": "2023-03-19",
"count": 1
},
{
"date": "2023-03-20",
"count": 1
},
{
"date": "2023-03-22",
"count": 1
},
{
"date": "2023-03-23",
"count": 1
},
{
"date": "2023-03-31",
"count": 1
},
{
"date": "2023-04-03",
"count": 1
},
{
"date": "2023-04-04",
"count": 1
},
{
"date": "2023-04-06",
"count": 1
},
{
"date": "2023-04-08",
"count": 1
},
{
"date": "2023-04-10",
"count": 1
},
{
"date": "2023-04-11",
"count": 1
},
{
"date": "2023-04-12",
"count": 1
},
{
"date": "2023-04-15",
"count": 2
},
{
"date": "2023-04-19",
"count": 1
},
{
"date": "2023-04-20",
"count": 1
},
{
"date": "2023-04-24",
"count": 1
},
{
"date": "2023-04-25",
"count": 1
},
{
"date": "2023-04-27",
"count": 3
},
{
"date": "2023-05-03",
"count": 1
},
{
"date": "2023-05-06",
"count": 1
},
{
"date": "2023-05-09",
"count": 2
},
{
"date": "2023-05-11",
"count": 2
},
{
"date": "2023-05-12",
"count": 1
},
{
"date": "2023-05-17",
"count": 2
},
{
"date": "2023-05-21",
"count": 1
},
{
"date": "2023-05-22",
"count": 1
},
{
"date": "2023-05-23",
"count": 1
},
{
"date": "2023-05-27",
"count": 1
},
{
"date": "2023-05-31",
"count": 1
},
{
"date": "2023-06-01",
"count": 2
},
{
"date": "2023-06-02",
"count": 1
},
{
"date": "2023-06-03",
"count": 1
},
{
"date": "2023-06-04",
"count": 1
},
{
"date": "2023-06-06",
"count": 1
},
{
"date": "2023-06-07",
"count": 1
},
{
"date": "2023-06-12",
"count": 2
},
{
"date": "2023-06-18",
"count": 2
},
{
"date": "2023-06-19",
"count": 1
},
{
"date": "2023-06-20",
"count": 1
},
{
"date": "2023-06-21",
"count": 1
},
{
"date": "2023-06-26",
"count": 1
},
{
"date": "2023-06-28",
"count": 1
},
{
"date": "2023-06-30",
"count": 1
},
{
"date": "2023-07-05",
"count": 2
},
{
"date": "2023-07-07",
"count": 1
},
{
"date": "2023-07-11",
"count": 2
},
{
"date": "2023-07-18",
"count": 1
},
{
"date": "2023-07-19",
"count": 2
},
{
"date": "2023-07-21",
"count": 1
},
{
"date": "2023-07-27",
"count": 1
},
{
"date": "2023-07-29",
"count": 2
},
{
"date": "2023-08-01",
"count": 2
},
{
"date": "2023-08-04",
"count": 1
},
{
"date": "2023-08-06",
"count": 1
},
{
"date": "2023-08-08",
"count": 1
},
{
"date": "2023-08-09",
"count": 1
},
{
"date": "2023-08-11",
"count": 2
},
{
"date": "2023-08-13",
"count": 1
},
{
"date": "2023-08-19",
"count": 1
},
{
"date": "2023-08-20",
"count": 1
},
{
"date": "2023-08-22",
"count": 1
},
{
"date": "2023-08-24",
"count": 1
},
{
"date": "2023-08-27",
"count": 1
},
{
"date": "2023-08-28",
"count": 2
},
{
"date": "2023-08-29",
"count": 1
},
{
"date": "2023-08-31",
"count": 1
},
{
"date": "2023-09-03",
"count": 1
},
{
"date": "2023-09-05",
"count": 1
},
{
"date": "2023-09-08",
"count": 1
},
{
"date": "2023-09-09",
"count": 1
},
{
"date": "2023-09-10",
"count": 1
},
{
"date": "2023-09-11",
"count": 3
},
{
"date": "2023-09-15",
"count": 1
},
{
"date": "2023-09-18",
"count": 1
},
{
"date": "2023-09-21",
"count": 2
},
{
"date": "2023-09-22",
"count": 1
},
{
"date": "2023-09-27",
"count": 1
},
{
"date": "2023-09-28",
"count": 2
},
{
"date": "2023-09-29",
"count": 2
},
{
"date": "2023-10-09",
"count": 1
},
{
"date": "2023-10-10",
"count": 1
},
{
"date": "2023-10-11",
"count": 3
},
{
"date": "2023-10-13",
"count": 1
},
{
"date": "2023-10-17",
"count": 2
},
{
"date": "2023-10-18",
"count": 1
},
{
"date": "2023-10-20",
"count": 1
},
{
"date": "2023-10-31",
"count": 1
},
{
"date": "2023-11-03",
"count": 2
},
{
"date": "2023-11-04",
"count": 1
},
{
"date": "2023-11-05",
"count": 1
},
{
"date": "2023-11-08",
"count": 1
},
{
"date": "2023-11-10",
"count": 2
},
{
"date": "2023-11-11",
"count": 4
},
{
"date": "2023-11-12",
"count": 1
},
{
"date": "2023-11-13",
"count": 3
},
{
"date": "2023-11-15",
"count": 2
},
{
"date": "2023-11-16",
"count": 1
},
{
"date": "2023-11-22",
"count": 1
},
{
"date": "2023-11-24",
"count": 2
},
{
"date": "2023-11-30",
"count": 1
},
{
"date": "2023-12-01",
"count": 2
},
{
"date": "2023-12-05",
"count": 1
},
{
"date": "2023-12-06",
"count": 2
},
{
"date": "2023-12-10",
"count": 1
},
{
"date": "2023-12-12",
"count": 2
},
{
"date": "2023-12-14",
"count": 1
},
{
"date": "2023-12-15",
"count": 1
},
{
"date": "2023-12-16",
"count": 2
},
{
"date": "2023-12-18",
"count": 1
},
{
"date": "2023-12-19",
"count": 1
},
{
"date": "2023-12-20",
"count": 1
},
{
"date": "2024-01-01",
"count": 1
},
{
"date": "2024-01-02",
"count": 2
},
{
"date": "2024-01-05",
"count": 1
},
{
"date": "2024-01-06",
"count": 1
},
{
"date": "2024-01-08",
"count": 1
},
{
"date": "2024-01-12",
"count": 2
},
{
"date": "2024-01-17",
"count": 1
},
{
"date": "2024-01-19",
"count": 1
},
{
"date": "2024-01-23",
"count": 1
},
{
"date": "2024-01-24",
"count": 1
},
{
"date": "2024-01-25",
"count": 1
},
{
"date": "2024-01-26",
"count": 2
},
{
"date": "2024-01-28",
"count": 1
},
{
"date": "2024-01-29",
"count": 1
},
{
"date": "2024-02-02",
"count": 1
},
{
"date": "2024-02-03",
"count": 1
},
{
"date": "2024-02-04",
"count": 2
},
{
"date": "2024-02-05",
"count": 1
},
{
"date": "2024-02-07",
"count": 1
},
{
"date": "2024-02-08",
"count": 1
},
{
"date": "2024-02-19",
"count": 1
},
{
"date": "2024-02-20",
"count": 1
},
{
"date": "2024-02-23",
"count": 1
},
{
"date": "2024-02-24",
"count": 1
},
{
"date": "2024-02-26",
"count": 1
},
{
"date": "2024-02-27",
"count": 2
},
{
"date": "2024-02-28",
"count": 1
},
{
"date": "2024-03-01",
"count": 1
},
{
"date": "2024-03-04",
"count": 1
},
{
"date": "2024-03-05",
"count": 1
},
{
"date": "2024-03-07",
"count": 1
},
{
"date": "2024-03-11",
"count": 1
},
{
"date": "2024-03-14",
"count": 1
},
{
"date": "2024-03-15",
"count": 1
},
{
"date": "2024-03-16",
"count": 1
},
{
"date": "2024-03-25",
"count": 1
},
{
"date": "2024-03-27",
"count": 1
},
{
"date": "2024-03-28",
"count": 1
},
{
"date": "2024-03-29",
"count": 1
},
{
"date": "2024-03-31",
"count": 1
},
{
"date": "2024-04-03",
"count": 1
},
{
"date": "2024-04-05",
"count": 2
},
{
"date": "2024-04-12",
"count": 1
},
{
"date": "2024-04-16",
"count": 2
},
{
"date": "2024-04-19",
"count": 1
},
{
"date": "2024-04-24",
"count": 1
},
{
"date": "2024-04-25",
"count": 1
},
{
"date": "2024-04-26",
"count": 1
},
{
"date": "2024-04-28",
"count": 1
},
{
"date": "2024-04-29",
"count": 1
},
{
"date": "2024-04-30",
"count": 1
},
{
"date": "2024-05-01",
"count": 1
},
{
"date": "2024-05-03",
"count": 1
},
{
"date": "2024-05-05",
"count": 1
},
{
"date": "2024-05-06",
"count": 2
},
{
"date": "2024-05-10",
"count": 1
},
{
"date": "2024-05-14",
"count": 1
},
{
"date": "2024-05-16",
"count": 1
},
{
"date": "2024-05-21",
"count": 1
},
{
"date": "2024-05-23",
"count": 1
},
{
"date": "2024-05-28",
"count": 2
},
{
"date": "2024-05-29",
"count": 1
},
{
"date": "2024-06-04",
"count": 2
},
{
"date": "2024-06-05",
"count": 3
},
{
"date": "2024-06-13",
"count": 1
},
{
"date": "2024-06-21",
"count": 1
},
{
"date": "2024-06-24",
"count": 1
},
{
"date": "2024-06-27",
"count": 1
},
{
"date": "2024-06-28",
"count": 2
},
{
"date": "2024-07-01",
"count": 1
},
{
"date": "2024-07-02",
"count": 1
},
{
"date": "2024-07-05",
"count": 2
},
{
"date": "2024-07-08",
"count": 1
},
{
"date": "2024-07-10",
"count": 1
},
{
"date": "2024-07-13",
"count": 1
},
{
"date": "2024-07-20",
"count": 1
},
{
"date": "2024-07-22",
"count": 1
},
{
"date": "2024-07-26",
"count": 1
},
{
"date": "2024-07-29",
"count": 1
},
{
"date": "2024-07-30",
"count": 1
},
{
"date": "2024-08-02",
"count": 1
},
{
"date": "2024-08-05",
"count": 2
},
{
"date": "2024-08-07",
"count": 1
},
{
"date": "2024-08-09",
"count": 1
},
{
"date": "2024-08-11",
"count": 1
},
{
"date": "2024-08-12",
"count": 1
},
{
"date": "2024-08-20",
"count": 1
},
{
"date": "2024-08-21",
"count": 1
},
{
"date": "2024-08-25",
"count": 1
},
{
"date": "2024-08-27",
"count": 1
},
{
"date": "2024-09-01",
"count": 1
},
{
"date": "2024-09-05",
"count": 1
},
{
"date": "2024-09-08",
"count": 2
},
{
"date": "2024-09-09",
"count": 2
},
{
"date": "2024-09-10",
"count": 3
},
{
"date": "2024-09-11",
"count": 1
},
{
"date": "2024-09-24",
"count": 2
},
{
"date": "2024-09-27",
"count": 1
},
{
"date": "2024-09-30",
"count": 1
},
{
"date": "2024-10-01",
"count": 1
},
{
"date": "2024-10-04",
"count": 1
},
{
"date": "2024-10-07",
"count": 1
},
{
"date": "2024-10-09",
"count": 2
},
{
"date": "2024-10-10",
"count": 1
},
{
"date": "2024-10-12",
"count": 1
},
{
"date": "2024-10-18",
"count": 1
},
{
"date": "2024-10-19",
"count": 2
},
{
"date": "2024-10-21",
"count": 2
},
{
"date": "2024-10-22",
"count": 2
},
{
"date": "2024-10-25",
"count": 1
},
{
"date": "2024-10-28",
"count": 2
},
{
"date": "2024-10-29",
"count": 3
},
{
"date": "2024-11-04",
"count": 1
},
{
"date": "2024-11-13",
"count": 3
},
{
"date": "2024-11-15",
"count": 1
},
{
"date": "2024-11-17",
"count": 1
},
{
"date": "2024-11-20",
"count": 1
},
{
"date": "2024-11-21",
"count": 1
},
{
"date": "2024-11-28",
"count": 1
},
{
"date": "2024-12-04",
"count": 1
},
{
"date": "2024-12-05",
"count": 1
},
{
"date": "2024-12-06",
"count": 1
},
{
"date": "2024-12-09",
"count": 1
},
{
"date": "2024-12-13",
"count": 1
},
{
"date": "2024-12-20",
"count": 1
},
{
"date": "2024-12-21",
"count": 1
},
{
"date": "2024-12-26",
"count": 1
},
{
"date": "2024-12-30",
"count": 1
},
{
"date": "2024-12-31",
"count": 1
},
{
"date": "2025-01-02",
"count": 1
},
{
"date": "2025-01-07",
"count": 1
},
{
"date": "2025-01-08",
"count": 1
},
{
"date": "2025-01-13",
"count": 1
},
{
"date": "2025-01-16",
"count": 1
},
{
"date": "2025-01-20",
"count": 1
},
{
"date": "2025-01-24",
"count": 1
},
{
"date": "2025-01-28",
"count": 1
},
{
"date": "2025-01-31",
"count": 2
},
{
"date": "2025-02-04",
"count": 1
},
{
"date": "2025-02-05",
"count": 1
},
{
"date": "2025-02-07",
"count": 1
},
{
"date": "2025-02-11",
"count": 1
},
{
"date": "2025-02-12",
"count": 1
},
{
"date": "2025-02-14",
"count": 1
},
{
"date": "2025-02-19",
"count": 1
},
{
"date": "2025-02-21",
"count": 1
},
{
"date": "2025-02-23",
"count": 1
},
{
"date": "2025-03-03",
"count": 1
},
{
"date": "2025-03-04",
"count": 1
},
{
"date": "2025-03-06",
"count": 2
},
{
"date": "2025-03-07",
"count": 1
},
{
"date": "2025-03-10",
"count": 2
},
{
"date": "2025-03-12",
"count": 1
},
{
"date": "2025-03-13",
"count": 2
},
{
"date": "2025-03-14",
"count": 1
},
{
"date": "2025-03-17",
"count": 3
},
{
"date": "2025-03-21",
"count": 1
},
{
"date": "2025-03-23",
"count": 2
},
{
"date": "2025-03-24",
"count": 1
},
{
"date": "2025-03-26",
"count": 1
},
{
"date": "2025-03-29",
"count": 1
},
{
"date": "2025-04-02",
"count": 1
},
{
"date": "2025-04-07",
"count": 1
},
{
"date": "2025-04-14",
"count": 1
},
{
"date": "2025-04-18",
"count": 2
},
{
"date": "2025-04-22",
"count": 2
},
{
"date": "2025-04-28",
"count": 1
},
{
"date": "2025-04-29",
"count": 2
},
{
"date": "2025-05-08",
"count": 1
},
{
"date": "2025-05-09",
"count": 1
},
{
"date": "2025-05-15",
"count": 1
},
{
"date": "2025-05-19",
"count": 1
},
{
"date": "2025-05-20",
"count": 2
},
{
"date": "2025-05-21",
"count": 1
},
{
"date": "2025-05-22",
"count": 1
},
{
"date": "2025-05-23",
"count": 2
},
{
"date": "2025-05-24",
"count": 1
},
{
"date": "2025-05-25",
"count": 1
},
{
"date": "2025-05-30",
"count": 1
},
{
"date": "2025-05-31",
"count": 1
},
{
"date": "2025-06-02",
"count": 1
},
{
"date": "2025-06-05",
"count": 1
},
{
"date": "2025-06-10",
"count": 2
},
{
"date": "2025-06-11",
"count": 1
},
{
"date": "2025-06-15",
"count": 1
},
{
"date": "2025-06-17",
"count": 1
},
{
"date": "2025-06-18",
"count": 1
},
{
"date": "2025-06-23",
"count": 1
},
{
"date": "2025-06-25",
"count": 1
},
{
"date": "2025-06-26",
"count": 1
},
{
"date": "2025-06-27",
"count": 1
},
{
"date": "2025-06-28",
"count": 1
},
{
"date": "2025-07-03",
"count": 1
},
{
"date": "2025-07-06",
"count": 1
},
{
"date": "2025-07-09",
"count": 1
},
{
"date": "2025-07-23",
"count": 1
},
{
"date": "2025-07-24",
"count": 1
},
{
"date": "2025-07-26",
"count": 1
},
{
"date": "2025-07-27",
"count": 1
},
{
"date": "2025-07-31",
"count": 4
},
{
"date": "2025-08-02",
"count": 1
},
{
"date": "2025-08-05",
"count": 1
},
{
"date": "2025-08-07",
"count": 1
},
{
"date": "2025-08-15",
"count": 1
},
{
"date": "2025-08-18",
"count": 1
},
{
"date": "2025-08-19",
"count": 1
},
{
"date": "2025-08-21",
"count": 1
},
{
"date": "2025-08-27",
"count": 1
},
{
"date": "2025-08-31",
"count": 1
},
{
"date": "2025-09-02",
"count": 1
},
{
"date": "2025-09-04",
"count": 1
},
{
"date": "2025-09-05",
"count": 3
},
{
"date": "2025-09-11",
"count": 1
},
{
"date": "2025-09-12",
"count": 1
},
{
"date": "2025-09-17",
"count": 1
},
{
"date": "2025-09-21",
"count": 1
},
{
"date": "2025-09-23",
"count": 1
},
{
"date": "2025-09-24",
"count": 1
},
{
"date": "2025-09-28",
"count": 1
},
{
"date": "2025-09-29",
"count": 1
},
{
"date": "2025-09-30",
"count": 1
},
{
"date": "2025-10-07",
"count": 1
},
{
"date": "2025-10-09",
"count": 2
},
{
"date": "2025-10-10",
"count": 1
},
{
"date": "2025-10-14",
"count": 2
},
{
"date": "2025-10-15",
"count": 1
},
{
"date": "2025-10-16",
"count": 2
},
{
"date": "2025-10-20",
"count": 1
},
{
"date": "2025-10-22",
"count": 2
},
{
"date": "2025-10-25",
"count": 1
},
{
"date": "2025-10-30",
"count": 1
},
{
"date": "2025-11-03",
"count": 2
},
{
"date": "2025-11-19",
"count": 1
},
{
"date": "2025-11-21",
"count": 1
},
{
"date": "2025-11-22",
"count": 2
},
{
"date": "2025-11-25",
"count": 1
},
{
"date": "2025-11-27",
"count": 1
},
{
"date": "2025-12-01",
"count": 1
},
{
"date": "2025-12-03",
"count": 1
},
{
"date": "2025-12-16",
"count": 1
},
{
"date": "2025-12-17",
"count": 1
},
{
"date": "2025-12-29",
"count": 1
},
{
"date": "2026-01-01",
"count": 1
},
{
"date": "2026-01-06",
"count": 1
},
{
"date": "2026-01-09",
"count": 1
},
{
"date": "2026-01-16",
"count": 1
},
{
"date": "2026-01-20",
"count": 2
},
{
"date": "2026-01-21",
"count": 1
},
{
"date": "2026-01-23",
"count": 1
},
{
"date": "2026-01-26",
"count": 1
},
{
"date": "2026-02-01",
"count": 1
},
{
"date": "2026-02-07",
"count": 1
},
{
"date": "2026-02-12",
"count": 1
},
{
"date": "2026-02-13",
"count": 1
},
{
"date": "2026-02-19",
"count": 1
},
{
"date": "2026-02-23",
"count": 2
},
{
"date": "2026-02-26",
"count": 1
},
{
"date": "2026-02-27",
"count": 1
},
{
"date": "2026-03-05",
"count": 1
},
{
"date": "2026-03-06",
"count": 1
},
{
"date": "2026-03-12",
"count": 1
},
{
"date": "2026-03-14",
"count": 2
},
{
"date": "2026-03-16",
"count": 1
},
{
"date": "2026-03-21",
"count": 1
},
{
"date": "2026-03-22",
"count": 1
},
{
"date": "2026-03-23",
"count": 1
},
{
"date": "2026-03-24",
"count": 1
},
{
"date": "2026-03-26",
"count": 2
},
{
"date": "2026-03-27",
"count": 1
},
{
"date": "2026-04-02",
"count": 1
},
{
"date": "2026-04-11",
"count": 1
},
{
"date": "2026-04-13",
"count": 2
},
{
"date": "2026-04-22",
"count": 1
},
{
"date": "2026-04-23",
"count": 1
},
{
"date": "2026-04-29",
"count": 1
},
{
"date": "2026-05-07",
"count": 1
},
{
"date": "2026-05-11",
"count": 1
},
{
"date": "2026-05-12",
"count": 1
},
{
"date": "2026-05-19",
"count": 1
},
{
"date": "2026-05-20",
"count": 1
},
{
"date": "2026-05-22",
"count": 1
},
{
"date": "2026-05-29",
"count": 1
},
{
"date": "2026-06-01",
"count": 1
},
{
"date": "2026-06-02",
"count": 1
},
{
"date": "2026-06-19",
"count": 1
},
{
"date": "2026-06-23",
"count": 2
},
{
"date": "2026-06-29",
"count": 1
},
{
"date": "2026-07-01",
"count": 2
},
{
"date": "2026-07-02",
"count": 1
},
{
"date": "2026-07-06",
"count": 1
},
{
"date": "2026-07-13",
"count": 1
},
{
"date": "2026-07-15",
"count": 1
},
{
"date": "2026-07-17",
"count": 1
},
{
"date": "2026-07-18",
"count": 1
},
{
"date": "2026-07-20",
"count": 1
},
{
"date": "2026-07-21",
"count": 1
}
],
"complete": false,
"collected": 1000,
"total_forks": 1049
},
"star_history": {
"days": [
{
"date": "2025-09-07",
"count": 5
},
{
"date": "2025-09-08",
"count": 5
},
{
"date": "2025-09-09",
"count": 4
},
{
"date": "2025-09-10",
"count": 3
},
{
"date": "2025-09-11",
"count": 2
},
{
"date": "2025-09-12",
"count": 3
},
{
"date": "2025-09-13",
"count": 4
},
{
"date": "2025-09-14",
"count": 4
},
{
"date": "2025-09-15",
"count": 6
},
{
"date": "2025-09-16",
"count": 3
},
{
"date": "2025-09-17",
"count": 4
},
{
"date": "2025-09-18",
"count": 2
},
{
"date": "2025-09-20",
"count": 1
},
{
"date": "2025-09-21",
"count": 7
},
{
"date": "2025-09-22",
"count": 4
},
{
"date": "2025-09-23",
"count": 2
},
{
"date": "2025-09-24",
"count": 3
},
{
"date": "2025-09-25",
"count": 2
},
{
"date": "2025-09-26",
"count": 4
},
{
"date": "2025-09-27",
"count": 3
},
{
"date": "2025-09-28",
"count": 2
},
{
"date": "2025-09-29",
"count": 3
},
{
"date": "2025-09-30",
"count": 5
},
{
"date": "2025-10-01",
"count": 2
},
{
"date": "2025-10-02",
"count": 1
},
{
"date": "2025-10-03",
"count": 1
},
{
"date": "2025-10-04",
"count": 5
},
{
"date": "2025-10-05",
"count": 2
},
{
"date": "2025-10-06",
"count": 4
},
{
"date": "2025-10-07",
"count": 3
},
{
"date": "2025-10-08",
"count": 5
},
{
"date": "2025-10-09",
"count": 6
},
{
"date": "2025-10-10",
"count": 4
},
{
"date": "2025-10-11",
"count": 1
},
{
"date": "2025-10-12",
"count": 3
},
{
"date": "2025-10-13",
"count": 5
},
{
"date": "2025-10-14",
"count": 3
},
{
"date": "2025-10-15",
"count": 4
},
{
"date": "2025-10-16",
"count": 7
},
{
"date": "2025-10-17",
"count": 5
},
{
"date": "2025-10-18",
"count": 2
},
{
"date": "2025-10-20",
"count": 2
},
{
"date": "2025-10-21",
"count": 4
},
{
"date": "2025-10-22",
"count": 8
},
{
"date": "2025-10-23",
"count": 6
},
{
"date": "2025-10-24",
"count": 1
},
{
"date": "2025-10-25",
"count": 1
},
{
"date": "2025-10-27",
"count": 6
},
{
"date": "2025-10-28",
"count": 5
},
{
"date": "2025-10-29",
"count": 3
},
{
"date": "2025-10-30",
"count": 4
},
{
"date": "2025-10-31",
"count": 4
},
{
"date": "2025-11-01",
"count": 2
},
{
"date": "2025-11-02",
"count": 3
},
{
"date": "2025-11-03",
"count": 3
},
{
"date": "2025-11-04",
"count": 4
},
{
"date": "2025-11-05",
"count": 7
},
{
"date": "2025-11-06",
"count": 2
},
{
"date": "2025-11-07",
"count": 3
},
{
"date": "2025-11-08",
"count": 2
},
{
"date": "2025-11-09",
"count": 5
},
{
"date": "2025-11-10",
"count": 4
},
{
"date": "2025-11-11",
"count": 3
},
{
"date": "2025-11-12",
"count": 7
},
{
"date": "2025-11-13",
"count": 4
},
{
"date": "2025-11-14",
"count": 4
},
{
"date": "2025-11-15",
"count": 2
},
{
"date": "2025-11-16",
"count": 2
},
{
"date": "2025-11-17",
"count": 3
},
{
"date": "2025-11-18",
"count": 2
},
{
"date": "2025-11-19",
"count": 6
},
{
"date": "2025-11-20",
"count": 3
},
{
"date": "2025-11-21",
"count": 4
},
{
"date": "2025-11-22",
"count": 4
},
{
"date": "2025-11-23",
"count": 3
},
{
"date": "2025-11-24",
"count": 3
},
{
"date": "2025-11-25",
"count": 3
},
{
"date": "2025-11-26",
"count": 2
},
{
"date": "2025-11-27",
"count": 3
},
{
"date": "2025-11-28",
"count": 2
},
{
"date": "2025-11-29",
"count": 5
},
{
"date": "2025-11-30",
"count": 3
},
{
"date": "2025-12-01",
"count": 7
},
{
"date": "2025-12-02",
"count": 3
},
{
"date": "2025-12-03",
"count": 6
},
{
"date": "2025-12-04",
"count": 2
},
{
"date": "2025-12-05",
"count": 4
},
{
"date": "2025-12-06",
"count": 3
},
{
"date": "2025-12-08",
"count": 4
},
{
"date": "2025-12-09",
"count": 2
},
{
"date": "2025-12-10",
"count": 6
},
{
"date": "2025-12-11",
"count": 5
},
{
"date": "2025-12-12",
"count": 6
},
{
"date": "2025-12-13",
"count": 1
},
{
"date": "2025-12-14",
"count": 2
},
{
"date": "2025-12-15",
"count": 4
},
{
"date": "2025-12-16",
"count": 1
},
{
"date": "2025-12-17",
"count": 5
},
{
"date": "2025-12-18",
"count": 4
},
{
"date": "2025-12-19",
"count": 2
},
{
"date": "2025-12-20",
"count": 5
},
{
"date": "2025-12-21",
"count": 2
},
{
"date": "2025-12-22",
"count": 2
},
{
"date": "2025-12-23",
"count": 5
},
{
"date": "2025-12-24",
"count": 3
},
{
"date": "2025-12-25",
"count": 5
},
{
"date": "2025-12-26",
"count": 2
},
{
"date": "2025-12-27",
"count": 2
},
{
"date": "2025-12-28",
"count": 5
},
{
"date": "2025-12-29",
"count": 6
},
{
"date": "2025-12-30",
"count": 1
},
{
"date": "2025-12-31",
"count": 2
},
{
"date": "2026-01-01",
"count": 3
},
{
"date": "2026-01-02",
"count": 2
},
{
"date": "2026-01-03",
"count": 2
},
{
"date": "2026-01-04",
"count": 2
},
{
"date": "2026-01-05",
"count": 4
},
{
"date": "2026-01-06",
"count": 5
},
{
"date": "2026-01-07",
"count": 1
},
{
"date": "2026-01-08",
"count": 3
},
{
"date": "2026-01-09",
"count": 2
},
{
"date": "2026-01-10",
"count": 5
},
{
"date": "2026-01-11",
"count": 5
},
{
"date": "2026-01-12",
"count": 4
},
{
"date": "2026-01-13",
"count": 2
},
{
"date": "2026-01-14",
"count": 7
},
{
"date": "2026-01-15",
"count": 2
},
{
"date": "2026-01-16",
"count": 3
},
{
"date": "2026-01-17",
"count": 2
},
{
"date": "2026-01-18",
"count": 3
},
{
"date": "2026-01-19",
"count": 2
},
{
"date": "2026-01-20",
"count": 1
},
{
"date": "2026-01-21",
"count": 1
},
{
"date": "2026-01-22",
"count": 4
},
{
"date": "2026-01-23",
"count": 3
},
{
"date": "2026-01-24",
"count": 2
},
{
"date": "2026-01-25",
"count": 2
},
{
"date": "2026-01-26",
"count": 3
},
{
"date": "2026-01-27",
"count": 5
},
{
"date": "2026-01-28",
"count": 4
},
{
"date": "2026-01-29",
"count": 3
},
{
"date": "2026-01-30",
"count": 1
},
{
"date": "2026-01-31",
"count": 3
},
{
"date": "2026-02-02",
"count": 7
},
{
"date": "2026-02-03",
"count": 3
},
{
"date": "2026-02-04",
"count": 5
},
{
"date": "2026-02-05",
"count": 3
},
{
"date": "2026-02-06",
"count": 2
},
{
"date": "2026-02-07",
"count": 1
},
{
"date": "2026-02-08",
"count": 5
},
{
"date": "2026-02-09",
"count": 6
},
{
"date": "2026-02-11",
"count": 5
},
{
"date": "2026-02-12",
"count": 4
},
{
"date": "2026-02-13",
"count": 2
},
{
"date": "2026-02-14",
"count": 2
},
{
"date": "2026-02-15",
"count": 1
},
{
"date": "2026-02-16",
"count": 3
},
{
"date": "2026-02-17",
"count": 6
},
{
"date": "2026-02-18",
"count": 4
},
{
"date": "2026-02-19",
"count": 5
},
{
"date": "2026-02-20",
"count": 4
},
{
"date": "2026-02-21",
"count": 5
},
{
"date": "2026-02-22",
"count": 1
},
{
"date": "2026-02-23",
"count": 5
},
{
"date": "2026-02-24",
"count": 6
},
{
"date": "2026-02-25",
"count": 5
},
{
"date": "2026-02-26",
"count": 2
},
{
"date": "2026-02-27",
"count": 6
},
{
"date": "2026-02-28",
"count": 5
},
{
"date": "2026-03-01",
"count": 5
},
{
"date": "2026-03-02",
"count": 1
},
{
"date": "2026-03-03",
"count": 2
},
{
"date": "2026-03-04",
"count": 6
},
{
"date": "2026-03-05",
"count": 4
},
{
"date": "2026-03-06",
"count": 6
},
{
"date": "2026-03-07",
"count": 6
},
{
"date": "2026-03-08",
"count": 4
},
{
"date": "2026-03-09",
"count": 4
},
{
"date": "2026-03-10",
"count": 5
},
{
"date": "2026-03-11",
"count": 2
},
{
"date": "2026-03-12",
"count": 2
},
{
"date": "2026-03-13",
"count": 4
},
{
"date": "2026-03-14",
"count": 2
},
{
"date": "2026-03-16",
"count": 1
},
{
"date": "2026-03-17",
"count": 3
},
{
"date": "2026-03-18",
"count": 1
},
{
"date": "2026-03-19",
"count": 4
},
{
"date": "2026-03-20",
"count": 4
},
{
"date": "2026-03-21",
"count": 1
},
{
"date": "2026-03-22",
"count": 4
},
{
"date": "2026-03-23",
"count": 4
},
{
"date": "2026-03-24",
"count": 2
},
{
"date": "2026-03-25",
"count": 1
},
{
"date": "2026-03-26",
"count": 3
},
{
"date": "2026-03-27",
"count": 5
},
{
"date": "2026-03-28",
"count": 1
},
{
"date": "2026-03-29",
"count": 3
},
{
"date": "2026-03-30",
"count": 4
},
{
"date": "2026-03-31",
"count": 1
},
{
"date": "2026-04-01",
"count": 4
},
{
"date": "2026-04-02",
"count": 4
},
{
"date": "2026-04-03",
"count": 7
},
{
"date": "2026-04-05",
"count": 3
},
{
"date": "2026-04-06",
"count": 2
},
{
"date": "2026-04-07",
"count": 3
},
{
"date": "2026-04-08",
"count": 3
},
{
"date": "2026-04-09",
"count": 2
},
{
"date": "2026-04-10",
"count": 3
},
{
"date": "2026-04-11",
"count": 2
},
{
"date": "2026-04-12",
"count": 3
},
{
"date": "2026-04-13",
"count": 5
},
{
"date": "2026-04-15",
"count": 2
},
{
"date": "2026-04-16",
"count": 4
},
{
"date": "2026-04-17",
"count": 4
},
{
"date": "2026-04-18",
"count": 1
},
{
"date": "2026-04-19",
"count": 2
},
{
"date": "2026-04-20",
"count": 1
},
{
"date": "2026-04-21",
"count": 2
},
{
"date": "2026-04-22",
"count": 4
},
{
"date": "2026-04-23",
"count": 3
},
{
"date": "2026-04-24",
"count": 1
},
{
"date": "2026-04-25",
"count": 4
},
{
"date": "2026-04-26",
"count": 3
},
{
"date": "2026-04-27",
"count": 3
},
{
"date": "2026-04-28",
"count": 4
},
{
"date": "2026-04-29",
"count": 2
},
{
"date": "2026-04-30",
"count": 4
},
{
"date": "2026-05-01",
"count": 4
},
{
"date": "2026-05-02",
"count": 11
},
{
"date": "2026-05-03",
"count": 7
},
{
"date": "2026-05-04",
"count": 1
},
{
"date": "2026-05-05",
"count": 3
},
{
"date": "2026-05-06",
"count": 1
},
{
"date": "2026-05-07",
"count": 4
},
{
"date": "2026-05-08",
"count": 2
},
{
"date": "2026-05-09",
"count": 4
},
{
"date": "2026-05-10",
"count": 3
},
{
"date": "2026-05-11",
"count": 2
},
{
"date": "2026-05-12",
"count": 3
},
{
"date": "2026-05-13",
"count": 2
},
{
"date": "2026-05-14",
"count": 2
},
{
"date": "2026-05-15",
"count": 6
},
{
"date": "2026-05-16",
"count": 2
},
{
"date": "2026-05-17",
"count": 3
},
{
"date": "2026-05-18",
"count": 2
},
{
"date": "2026-05-19",
"count": 4
},
{
"date": "2026-05-20",
"count": 3
},
{
"date": "2026-05-21",
"count": 2
},
{
"date": "2026-05-22",
"count": 2
},
{
"date": "2026-05-23",
"count": 5
},
{
"date": "2026-05-24",
"count": 2
},
{
"date": "2026-05-26",
"count": 8
},
{
"date": "2026-05-27",
"count": 4
},
{
"date": "2026-05-28",
"count": 1
},
{
"date": "2026-05-29",
"count": 2
},
{
"date": "2026-05-30",
"count": 3
},
{
"date": "2026-05-31",
"count": 2
},
{
"date": "2026-06-01",
"count": 4
},
{
"date": "2026-06-02",
"count": 4
},
{
"date": "2026-06-03",
"count": 1
},
{
"date": "2026-06-04",
"count": 2
},
{
"date": "2026-06-05",
"count": 5
},
{
"date": "2026-06-06",
"count": 2
},
{
"date": "2026-06-07",
"count": 3
},
{
"date": "2026-06-08",
"count": 3
},
{
"date": "2026-06-10",
"count": 2
},
{
"date": "2026-06-11",
"count": 2
},
{
"date": "2026-06-12",
"count": 1
},
{
"date": "2026-06-14",
"count": 3
},
{
"date": "2026-06-15",
"count": 6
},
{
"date": "2026-06-16",
"count": 2
},
{
"date": "2026-06-17",
"count": 5
},
{
"date": "2026-06-18",
"count": 4
},
{
"date": "2026-06-19",
"count": 3
},
{
"date": "2026-06-20",
"count": 1
},
{
"date": "2026-06-21",
"count": 3
},
{
"date": "2026-06-22",
"count": 3
},
{
"date": "2026-06-23",
"count": 1
},
{
"date": "2026-06-25",
"count": 3
},
{
"date": "2026-06-27",
"count": 1
},
{
"date": "2026-06-28",
"count": 2
},
{
"date": "2026-06-29",
"count": 4
},
{
"date": "2026-06-30",
"count": 2
},
{
"date": "2026-07-01",
"count": 1
},
{
"date": "2026-07-02",
"count": 2
},
{
"date": "2026-07-03",
"count": 2
},
{
"date": "2026-07-04",
"count": 1
},
{
"date": "2026-07-05",
"count": 1
},
{
"date": "2026-07-06",
"count": 5
},
{
"date": "2026-07-07",
"count": 1
},
{
"date": "2026-07-08",
"count": 1
},
{
"date": "2026-07-09",
"count": 1
},
{
"date": "2026-07-10",
"count": 3
},
{
"date": "2026-07-11",
"count": 2
},
{
"date": "2026-07-12",
"count": 3
},
{
"date": "2026-07-13",
"count": 3
},
{
"date": "2026-07-14",
"count": 4
},
{
"date": "2026-07-15",
"count": 1
},
{
"date": "2026-07-16",
"count": 1
},
{
"date": "2026-07-17",
"count": 3
},
{
"date": "2026-07-18",
"count": 6
},
{
"date": "2026-07-19",
"count": 4
},
{
"date": "2026-07-20",
"count": 4
},
{
"date": "2026-07-21",
"count": 6
},
{
"date": "2026-07-22",
"count": 1
}
],
"complete": false,
"collected": 1000,
"total_stars": 8472
},
"open_issues_and_prs": 311
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"examples"
],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [
"Makefile",
"examples/Makefile",
"internal/test/Makefile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [
"examples/go.mod",
"go.mod",
"internal/test/go.mod"
],
"largest_source_bytes": 129047,
"source_files_sampled": 599,
"oversized_source_files": 10,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"examples/go.mod",
"go.mod"
],
"advisories": {
"error": null,
"scope": "repository_graph",
"source": "osv",
"findings": [
{
"name": "github.com/gofiber/fiber/v2",
"direct": false,
"version": "v2.52.13",
"severity": "moderate",
"ecosystem": "go",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-gcfq-8gqf-4876"
],
"fixed_version": "3.3.0",
"advisory_count": 1,
"oldest_advisory_days": 19
},
{
"name": "github.com/quic-go/quic-go",
"direct": false,
"version": "v0.59.0",
"severity": "moderate",
"ecosystem": "go",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-vvgj-x9jq-8cj9",
"GO-2026-5676"
],
"fixed_version": "0.59.1",
"advisory_count": 2,
"oldest_advisory_days": 48
},
{
"name": "golang.org/x/crypto",
"direct": false,
"version": "v0.54.0",
"severity": "unknown",
"ecosystem": "go",
"cvss_score": null,
"advisory_ids": [
"GO-2026-5932"
],
"fixed_version": null,
"advisory_count": 1,
"oldest_advisory_days": 14
}
],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {
"unknown": 1,
"moderate": 2
},
"advisory_count": 4,
"affected_count": 3,
"assessed_count": 126,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"go"
],
"dependencies": [
{
"name": "github.com/getkin/kin-openapi",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.143.0"
},
{
"name": "github.com/speakeasy-api/openapi",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.24.0"
},
{
"name": "github.com/stretchr/testify",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.11.1"
},
{
"name": "go.yaml.in/yaml/v3",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v3.0.4"
},
{
"name": "golang.org/x/mod",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.38.0"
},
{
"name": "golang.org/x/text",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.40.0"
},
{
"name": "golang.org/x/tools",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.48.0"
},
{
"name": "gopkg.in/yaml.v3",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v3.0.1"
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "github.com/getkin/kin-openapi",
"direct": true,
"version": "v0.143.0",
"ecosystem": "go"
},
{
"name": "github.com/speakeasy-api/openapi",
"direct": true,
"version": "v1.24.0",
"ecosystem": "go"
},
{
"name": "github.com/stretchr/testify",
"direct": true,
"version": "v1.11.1",
"ecosystem": "go"
},
{
"name": "go.yaml.in/yaml/v3",
"direct": true,
"version": "v3.0.4",
"ecosystem": "go"
},
{
"name": "golang.org/x/mod",
"direct": true,
"version": "v0.38.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/text",
"direct": true,
"version": "v0.40.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/tools",
"direct": true,
"version": "v0.48.0",
"ecosystem": "go"
},
{
"name": "gopkg.in/yaml.v3",
"direct": true,
"version": "v3.0.1",
"ecosystem": "go"
},
{
"name": "github.com/andybalholm/brotli",
"direct": false,
"version": "v1.2.2",
"ecosystem": "go"
},
{
"name": "github.com/apapsch/go-jsonmerge/v2",
"direct": false,
"version": "v2.0.0",
"ecosystem": "go"
},
{
"name": "github.com/aymerick/douceur",
"direct": false,
"version": "v0.2.0",
"ecosystem": "go"
},
{
"name": "github.com/burntsushi/toml",
"direct": false,
"version": "v1.6.0",
"ecosystem": "go"
},
{
"name": "github.com/bytedance/gopkg",
"direct": false,
"version": "v0.1.4",
"ecosystem": "go"
},
{
"name": "github.com/bytedance/sonic",
"direct": false,
"version": "v1.15.1",
"ecosystem": "go"
},
{
"name": "github.com/bytedance/sonic/loader",
"direct": false,
"version": "v0.5.1",
"ecosystem": "go"
},
{
"name": "github.com/clipperhouse/uax29/v2",
"direct": false,
"version": "v2.7.0",
"ecosystem": "go"
},
{
"name": "github.com/cloudwego/base64x",
"direct": false,
"version": "v0.1.7",
"ecosystem": "go"
},
{
"name": "github.com/cloudykit/fastprinter",
"direct": false,
"version": "v0.0.0-20251202014920-1725d2651bd4",
"ecosystem": "go"
},
{
"name": "github.com/cloudykit/jet/v6",
"direct": false,
"version": "v6.3.2",
"ecosystem": "go"
},
{
"name": "github.com/davecgh/go-spew",
"direct": false,
"version": "v1.1.2-0.20180830191138-d8f796af33cc",
"ecosystem": "go"
},
{
"name": "github.com/decred/dcrd/dcrec/secp256k1/v4",
"direct": false,
"version": "v4.4.1",
"ecosystem": "go"
},
{
"name": "github.com/dprotaso/go-yit",
"direct": false,
"version": "v0.0.0-20220510233725-9ba8df137936",
"ecosystem": "go"
},
{
"name": "github.com/fatih/structs",
"direct": false,
"version": "v1.1.0",
"ecosystem": "go"
},
{
"name": "github.com/flosch/pongo2/v4",
"direct": false,
"version": "v4.0.2",
"ecosystem": "go"
},
{
"name": "github.com/gabriel-vasile/mimetype",
"direct": false,
"version": "v1.4.13",
"ecosystem": "go"
},
{
"name": "github.com/gin-contrib/sse",
"direct": false,
"version": "v1.1.1",
"ecosystem": "go"
},
{
"name": "github.com/gin-gonic/gin",
"direct": false,
"version": "v1.12.0",
"ecosystem": "go"
},
{
"name": "github.com/go-chi/chi/v5",
"direct": false,
"version": "v5.2.5",
"ecosystem": "go"
},
{
"name": "github.com/go-openapi/jsonpointer",
"direct": false,
"version": "v0.23.1",
"ecosystem": "go"
},
{
"name": "github.com/go-openapi/jsonpointer",
"direct": false,
"version": "v1.0.0",
"ecosystem": "go"
},
{
"name": "github.com/go-openapi/swag/jsonname",
"direct": false,
"version": "v0.26.0",
"ecosystem": "go"
},
{
"name": "github.com/go-playground/locales",
"direct": false,
"version": "v0.14.1",
"ecosystem": "go"
},
{
"name": "github.com/go-playground/universal-translator",
"direct": false,
"version": "v0.18.1",
"ecosystem": "go"
},
{
"name": "github.com/go-playground/validator/v10",
"direct": false,
"version": "v10.30.2",
"ecosystem": "go"
},
{
"name": "github.com/goccy/go-json",
"direct": false,
"version": "v0.10.6",
"ecosystem": "go"
},
{
"name": "github.com/goccy/go-yaml",
"direct": false,
"version": "v1.19.2",
"ecosystem": "go"
},
{
"name": "github.com/gofiber/fiber/v2",
"direct": false,
"version": "v2.52.13",
"ecosystem": "go"
},
{
"name": "github.com/gofiber/fiber/v3",
"direct": false,
"version": "v3.4.0",
"ecosystem": "go"
},
{
"name": "github.com/gofiber/schema",
"direct": false,
"version": "v1.8.0",
"ecosystem": "go"
},
{
"name": "github.com/gofiber/schema",
"direct": false,
"version": "v1.8.1",
"ecosystem": "go"
},
{
"name": "github.com/gofiber/utils/v2",
"direct": false,
"version": "v2.1.1",
"ecosystem": "go"
},
{
"name": "github.com/golang/snappy",
"direct": false,
"version": "v1.0.0",
"ecosystem": "go"
},
{
"name": "github.com/gomarkdown/markdown",
"direct": false,
"version": "v0.0.0-20260417124207-7d523f7318df",
"ecosystem": "go"
},
{
"name": "github.com/google/uuid",
"direct": false,
"version": "v1.6.0",
"ecosystem": "go"
},
{
"name": "github.com/gorilla/css",
"direct": false,
"version": "v1.0.1",
"ecosystem": "go"
},
{
"name": "github.com/gorilla/mux",
"direct": false,
"version": "v1.8.1",
"ecosystem": "go"
},
{
"name": "github.com/iris-contrib/schema",
"direct": false,
"version": "v0.0.6",
"ecosystem": "go"
},
{
"name": "github.com/joker/jade",
"direct": false,
"version": "v1.1.3",
"ecosystem": "go"
},
{
"name": "github.com/josharian/intern",
"direct": false,
"version": "v1.0.0",
"ecosystem": "go"
},
{
"name": "github.com/json-iterator/go",
"direct": false,
"version": "v1.1.12",
"ecosystem": "go"
},
{
"name": "github.com/kataras/blocks",
"direct": false,
"version": "v0.0.12",
"ecosystem": "go"
},
{
"name": "github.com/kataras/golog",
"direct": false,
"version": "v0.1.11",
"ecosystem": "go"
},
{
"name": "github.com/kataras/iris/v12",
"direct": false,
"version": "v12.2.11",
"ecosystem": "go"
},
{
"name": "github.com/kataras/pio",
"direct": false,
"version": "v0.0.13",
"ecosystem": "go"
},
{
"name": "github.com/kataras/sitemap",
"direct": false,
"version": "v0.0.6",
"ecosystem": "go"
},
{
"name": "github.com/kataras/tunnel",
"direct": false,
"version": "v0.0.4",
"ecosystem": "go"
},
{
"name": "github.com/klauspost/compress",
"direct": false,
"version": "v1.19.0",
"ecosystem": "go"
},
{
"name": "github.com/klauspost/cpuid/v2",
"direct": false,
"version": "v2.3.0",
"ecosystem": "go"
},
{
"name": "github.com/labstack/echo/v4",
"direct": false,
"version": "v4.15.1",
"ecosystem": "go"
},
{
"name": "github.com/labstack/echo/v5",
"direct": false,
"version": "v5.1.0",
"ecosystem": "go"
},
{
"name": "github.com/labstack/echo/v5",
"direct": false,
"version": "v5.2.1",
"ecosystem": "go"
},
{
"name": "github.com/labstack/gommon",
"direct": false,
"version": "v0.5.0",
"ecosystem": "go"
},
{
"name": "github.com/leodido/go-urn",
"direct": false,
"version": "v1.4.0",
"ecosystem": "go"
},
{
"name": "github.com/lestrrat-go/blackmagic",
"direct": false,
"version": "v1.0.4",
"ecosystem": "go"
},
{
"name": "github.com/lestrrat-go/dsig",
"direct": false,
"version": "v1.3.0",
"ecosystem": "go"
},
{
"name": "github.com/lestrrat-go/dsig-secp256k1",
"direct": false,
"version": "v1.0.0",
"ecosystem": "go"
},
{
"name": "github.com/lestrrat-go/httpcc",
"direct": false,
"version": "v1.0.1",
"ecosystem": "go"
},
{
"name": "github.com/lestrrat-go/httprc/v3",
"direct": false,
"version": "v3.0.5",
"ecosystem": "go"
},
{
"name": "github.com/lestrrat-go/jwx/v3",
"direct": false,
"version": "v3.1.0",
"ecosystem": "go"
},
{
"name": "github.com/lestrrat-go/option/v2",
"direct": false,
"version": "v2.0.0",
"ecosystem": "go"
},
{
"name": "github.com/mailgun/raymond/v2",
"direct": false,
"version": "v2.0.48",
"ecosystem": "go"
},
{
"name": "github.com/mailru/easyjson",
"direct": false,
"version": "v0.9.2",
"ecosystem": "go"
},
{
"name": "github.com/mattn/go-colorable",
"direct": false,
"version": "v0.1.15",
"ecosystem": "go"
},
{
"name": "github.com/mattn/go-isatty",
"direct": false,
"version": "v0.0.22",
"ecosystem": "go"
},
{
"name": "github.com/mattn/go-runewidth",
"direct": false,
"version": "v0.0.23",
"ecosystem": "go"
},
{
"name": "github.com/microcosm-cc/bluemonday",
"direct": false,
"version": "v1.0.27",
"ecosystem": "go"
},
{
"name": "github.com/modern-go/concurrent",
"direct": false,
"version": "v0.0.0-20180306012644-bacd9c7ef1dd",
"ecosystem": "go"
},
{
"name": "github.com/modern-go/reflect2",
"direct": false,
"version": "v1.0.2",
"ecosystem": "go"
},
{
"name": "github.com/oapi-codegen/echo-middleware",
"direct": false,
"version": "v1.0.2",
"ecosystem": "go"
},
{
"name": "github.com/oapi-codegen/echo-v5-middleware",
"direct": false,
"version": "v0.1.0",
"ecosystem": "go"
},
{
"name": "github.com/oapi-codegen/fiber-middleware",
"direct": false,
"version": "v1.0.2",
"ecosystem": "go"
},
{
"name": "github.com/oapi-codegen/fiber-v3-middleware",
"direct": false,
"version": "v0.1.0",
"ecosystem": "go"
},
{
"name": "github.com/oapi-codegen/gin-middleware",
"direct": false,
"version": "v1.0.2",
"ecosystem": "go"
},
{
"name": "github.com/oapi-codegen/iris-middleware",
"direct": false,
"version": "v1.0.5",
"ecosystem": "go"
},
{
"name": "github.com/oapi-codegen/nethttp-middleware",
"direct": false,
"version": "v1.1.2",
"ecosystem": "go"
},
{
"name": "github.com/oapi-codegen/nullable",
"direct": false,
"version": "v1.1.0",
"ecosystem": "go"
},
{
"name": "github.com/oapi-codegen/runtime",
"direct": false,
"version": "v1.5.0",
"ecosystem": "go"
},
{
"name": "github.com/oapi-codegen/testutil",
"direct": false,
"version": "v1.1.0",
"ecosystem": "go"
},
{
"name": "github.com/oasdiff/yaml",
"direct": false,
"version": "v0.1.1",
"ecosystem": "go"
},
{
"name": "github.com/oasdiff/yaml3",
"direct": false,
"version": "v0.0.14",
"ecosystem": "go"
},
{
"name": "github.com/pelletier/go-toml/v2",
"direct": false,
"version": "v2.3.0",
"ecosystem": "go"
},
{
"name": "github.com/philhofer/fwd",
"direct": false,
"version": "v1.2.0",
"ecosystem": "go"
},
{
"name": "github.com/pmezard/go-difflib",
"direct": false,
"version": "v1.0.1-0.20181226105442-5d4384ee4fb2",
"ecosystem": "go"
},
{
"name": "github.com/quic-go/qpack",
"direct": false,
"version": "v0.6.0",
"ecosystem": "go"
},
{
"name": "github.com/quic-go/quic-go",
"direct": false,
"version": "v0.59.0",
"ecosystem": "go"
},
{
"name": "github.com/russross/blackfriday/v2",
"direct": false,
"version": "v2.1.0",
"ecosystem": "go"
},
{
"name": "github.com/santhosh-tekuri/jsonschema/v6",
"direct": false,
"version": "v6.0.2",
"ecosystem": "go"
},
{
"name": "github.com/schollz/closestmatch",
"direct": false,
"version": "v2.1.0+incompatible",
"ecosystem": "go"
},
{
"name": "github.com/segmentio/asm",
"direct": false,
"version": "v1.2.1",
"ecosystem": "go"
},
{
"name": "github.com/shopify/goreferrer",
"direct": false,
"version": "v0.0.0-20250617153402-88c1d9a79b05",
"ecosystem": "go"
},
{
"name": "github.com/sirupsen/logrus",
"direct": false,
"version": "v1.9.4",
"ecosystem": "go"
},
{
"name": "github.com/speakeasy-api/jsonpath",
"direct": false,
"version": "v0.6.3",
"ecosystem": "go"
},
{
"name": "github.com/stretchr/objx",
"direct": false,
"version": "v0.5.2",
"ecosystem": "go"
},
{
"name": "github.com/tdewolff/minify/v2",
"direct": false,
"version": "v2.24.13",
"ecosystem": "go"
},
{
"name": "github.com/tdewolff/parse/v2",
"direct": false,
"version": "v2.8.12",
"ecosystem": "go"
},
{
"name": "github.com/tinylib/msgp",
"direct": false,
"version": "v1.6.4",
"ecosystem": "go"
},
{
"name": "github.com/twitchyliquid64/golang-asm",
"direct": false,
"version": "v0.15.1",
"ecosystem": "go"
},
{
"name": "github.com/ugorji/go/codec",
"direct": false,
"version": "v1.3.1",
"ecosystem": "go"
},
{
"name": "github.com/valyala/bytebufferpool",
"direct": false,
"version": "v1.0.0",
"ecosystem": "go"
},
{
"name": "github.com/valyala/fasthttp",
"direct": false,
"version": "v1.72.0",
"ecosystem": "go"
},
{
"name": "github.com/valyala/fastjson",
"direct": false,
"version": "v1.6.10",
"ecosystem": "go"
},
{
"name": "github.com/valyala/fasttemplate",
"direct": false,
"version": "v1.2.2",
"ecosystem": "go"
},
{
"name": "github.com/vmihailenco/msgpack/v5",
"direct": false,
"version": "v5.4.1",
"ecosystem": "go"
},
{
"name": "github.com/vmihailenco/tagparser/v2",
"direct": false,
"version": "v2.0.0",
"ecosystem": "go"
},
{
"name": "github.com/vmware-labs/yaml-jsonpath",
"direct": false,
"version": "v0.3.2",
"ecosystem": "go"
},
{
"name": "github.com/yosssi/ace",
"direct": false,
"version": "v0.0.5",
"ecosystem": "go"
},
{
"name": "go.mongodb.org/mongo-driver/v2",
"direct": false,
"version": "v2.6.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/arch",
"direct": false,
"version": "v0.26.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/crypto",
"direct": false,
"version": "v0.54.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/exp",
"direct": false,
"version": "v0.0.0-20260410095643-746e56fc9e2f",
"ecosystem": "go"
},
{
"name": "golang.org/x/net",
"direct": false,
"version": "v0.57.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/sync",
"direct": false,
"version": "v0.22.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/sys",
"direct": false,
"version": "v0.47.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/time",
"direct": false,
"version": "v0.15.0",
"ecosystem": "go"
},
{
"name": "google.golang.org/protobuf",
"direct": false,
"version": "v1.36.11",
"ecosystem": "go"
},
{
"name": "gopkg.in/ini.v1",
"direct": false,
"version": "v1.67.1",
"ecosystem": "go"
}
],
"collected": true,
"truncated": false,
"total_count": 126,
"direct_count": 8,
"indirect_count": 118
}
},
"maintainership": {
"issues": {
"open_prs": 65,
"merged_prs": 817,
"open_issues": 246,
"closed_ratio": 0.769,
"closed_issues": 818,
"closed_unmerged_prs": 426
},
"bus_factor": 2,
"bot_contributors": 2,
"top_contributors": [
{
"type": "User",
"login": "mromaszewicz",
"commits": 259,
"avatar_url": "https://avatars.githubusercontent.com/u/13071605?v=4"
},
{
"type": "User",
"login": "jamietanna",
"commits": 196,
"avatar_url": "https://avatars.githubusercontent.com/u/3315059?v=4"
},
{
"type": "User",
"login": "alexandear",
"commits": 19,
"avatar_url": "https://avatars.githubusercontent.com/u/3228886?v=4"
},
{
"type": "User",
"login": "ShouheiNishi",
"commits": 11,
"avatar_url": "https://avatars.githubusercontent.com/u/96609867?v=4"
},
{
"type": "User",
"login": "weitzj",
"commits": 8,
"avatar_url": "https://avatars.githubusercontent.com/u/829277?v=4"
},
{
"type": "User",
"login": "mycrEEpy",
"commits": 8,
"avatar_url": "https://avatars.githubusercontent.com/u/6517708?v=4"
},
{
"type": "User",
"login": "stevenh",
"commits": 7,
"avatar_url": "https://avatars.githubusercontent.com/u/104239?v=4"
},
{
"type": "User",
"login": "Jleagle",
"commits": 7,
"avatar_url": "https://avatars.githubusercontent.com/u/381099?v=4"
},
{
"type": "User",
"login": "natsukagami",
"commits": 6,
"avatar_url": "https://avatars.githubusercontent.com/u/9061737?v=4"
},
{
"type": "User",
"login": "chrusty",
"commits": 6,
"avatar_url": "https://avatars.githubusercontent.com/u/1902132?v=4"
}
],
"contributors_sampled": 98,
"top_contributor_share": 0.367
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"ci.yml",
"govulncheck.yml",
"label-actions.yml",
"labeler.yml",
"readme-toc.yml",
"release-drafter.yml",
"scorecard.yml"
],
"has_docs_dir": true,
"linter_configs": [],
"has_editorconfig": true,
"has_linter_config": false,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"go.sum"
],
"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": 4,
"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": "30 out of 30 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": 2,
"reason": "badge detected: InProgress",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 1,
"reason": "Found 3/21 approved changesets -- score normalized to 1",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 25 contributing companies or organizations",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 10,
"reason": "update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "30 commit(s) and 27 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": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 10,
"reason": "all dependencies are pinned",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 6,
"reason": "SAST tool is not run on all commits -- score normalized to 6",
"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": 10,
"reason": "GitHub workflow tokens follow principle of least privilege",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 7,
"reason": "3 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "d31f05b99cb2a4726ad7e2a1cbf22d0d436de9bb",
"ran_at": "2026-07-22T02:33:22Z",
"aggregate_score": 7.6,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-21T23:56:55Z",
"oldest_open_prs": [
{
"number": 457,
"created_at": "2021-10-06T20:20:51Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 596,
"created_at": "2022-05-27T19:45:57Z",
"last_comment_at": "2022-10-17T13:50:01Z",
"last_comment_author": "erendogan51"
},
{
"number": 713,
"created_at": "2022-08-10T06:24:02Z",
"last_comment_at": "2026-07-14T15:35:29Z",
"last_comment_author": "mromaszewicz"
},
{
"number": 995,
"created_at": "2023-03-08T15:19:53Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1018,
"created_at": "2023-04-03T08:27:19Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1303,
"created_at": "2023-10-04T06:37:30Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1330,
"created_at": "2023-10-18T06:48:42Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1371,
"created_at": "2023-12-04T16:10:15Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1380,
"created_at": "2023-12-08T06:14:34Z",
"last_comment_at": "2024-10-04T12:46:12Z",
"last_comment_author": "podhmo"
},
{
"number": 1383,
"created_at": "2023-12-12T18:31:22Z",
"last_comment_at": "2023-12-13T13:10:16Z",
"last_comment_author": "jamietanna"
},
{
"number": 1400,
"created_at": "2023-12-21T06:02:14Z",
"last_comment_at": "2024-01-25T11:49:40Z",
"last_comment_author": "jamietanna"
},
{
"number": 1489,
"created_at": "2024-03-06T20:44:04Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1502,
"created_at": "2024-03-14T23:07:43Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1518,
"created_at": "2024-03-26T17:40:43Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1544,
"created_at": "2024-04-18T08:47:29Z",
"last_comment_at": "2024-08-22T16:58:36Z",
"last_comment_author": "deefdragon"
},
{
"number": 1598,
"created_at": "2024-05-06T04:11:42Z",
"last_comment_at": "2024-06-28T19:52:36Z",
"last_comment_author": "gaiaz-iusipov"
},
{
"number": 1684,
"created_at": "2024-07-04T08:46:47Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1706,
"created_at": "2024-07-20T17:10:41Z",
"last_comment_at": "2024-11-28T13:58:18Z",
"last_comment_author": "github-actions"
},
{
"number": 1709,
"created_at": "2024-07-23T17:19:05Z",
"last_comment_at": "2024-07-23T19:58:34Z",
"last_comment_author": "mromaszewicz"
},
{
"number": 1717,
"created_at": "2024-08-06T07:29:22Z",
"last_comment_at": "2025-11-21T12:27:18Z",
"last_comment_author": "LarsStegman"
}
],
"last_merged_pr_at": "2026-07-21T23:56:02Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 143,
"created_at": "2020-03-02T13:47:52Z",
"last_comment_at": "2026-04-03T00:51:11Z",
"last_comment_author": "mromaszewicz"
},
{
"number": 163,
"created_at": "2020-03-28T17:46:10Z",
"last_comment_at": "2021-02-11T09:47:06Z",
"last_comment_author": "acabarbaye"
},
{
"number": 253,
"created_at": "2020-11-16T09:07:28Z",
"last_comment_at": "2021-01-27T21:34:37Z",
"last_comment_author": "davidovich"
},
{
"number": 276,
"created_at": "2021-01-12T05:34:16Z",
"last_comment_at": "2021-11-03T21:08:25Z",
"last_comment_author": "mitar"
},
{
"number": 281,
"created_at": "2021-01-14T09:12:17Z",
"last_comment_at": "2023-04-22T05:08:18Z",
"last_comment_author": "bobmorley"
},
{
"number": 360,
"created_at": "2021-05-12T16:27:16Z",
"last_comment_at": "2022-11-23T09:43:04Z",
"last_comment_author": "jamietanna"
},
{
"number": 366,
"created_at": "2021-05-19T08:36:20Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 369,
"created_at": "2021-05-22T00:56:06Z",
"last_comment_at": "2021-05-22T21:42:34Z",
"last_comment_author": null
},
{
"number": 435,
"created_at": "2021-08-26T14:46:44Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 447,
"created_at": "2021-09-29T01:01:26Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 452,
"created_at": "2021-10-05T14:57:16Z",
"last_comment_at": "2021-11-03T18:44:38Z",
"last_comment_author": "jake-scott"
},
{
"number": 472,
"created_at": "2021-10-27T16:19:20Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 476,
"created_at": "2021-11-02T14:35:42Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 479,
"created_at": "2021-11-09T12:05:47Z",
"last_comment_at": "2025-02-07T10:12:01Z",
"last_comment_author": "majewsky"
},
{
"number": 483,
"created_at": "2021-11-14T01:43:25Z",
"last_comment_at": "2022-05-27T07:45:38Z",
"last_comment_author": "jamietanna"
},
{
"number": 486,
"created_at": "2021-11-23T17:25:08Z",
"last_comment_at": "2024-08-05T14:55:20Z",
"last_comment_author": "Giftzwerg02"
},
{
"number": 489,
"created_at": "2021-11-25T07:33:21Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 513,
"created_at": "2022-01-28T14:31:07Z",
"last_comment_at": "2026-07-14T18:58:32Z",
"last_comment_author": "jamietanna"
},
{
"number": 514,
"created_at": "2022-01-31T11:51:39Z",
"last_comment_at": "2025-01-16T07:41:39Z",
"last_comment_author": "spidemen2024"
},
{
"number": 538,
"created_at": "2022-03-13T01:58:46Z",
"last_comment_at": "2024-03-07T10:09:57Z",
"last_comment_author": "smallhive"
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/oapi-codegen/oapi-codegen",
"host": "github.com",
"name": "oapi-codegen",
"owner": "oapi-codegen"
},
"metrics": {
"overall": {
"key": "overall",
"band": "good",
"name": "Overall health",
"note": null,
"notes": [],
"value": 79,
"inputs": {
"security": 81,
"vitality": 88,
"community": 83,
"governance": 69,
"engineering": 78
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "excellent",
"name": "Vitality",
"value": 88,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "excellent",
"name": "Development activity",
"note": null,
"notes": [],
"value": 86,
"inputs": {
"commits_last_year": 260,
"human_commit_share": 0.66,
"days_since_last_push": 0,
"active_weeks_last_year": 32
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "32/52 weeks with commits",
"points": 22.2,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 32
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "260 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 260
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 27 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": 92,
"inputs": {
"releases_count": 87,
"latest_release_tag": "v2.8.0",
"releases_from_tags": false,
"days_since_latest_release": 4,
"mean_days_between_releases": 85.6
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "87 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 87
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 4 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 4
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~85.6 days",
"points": 19.8,
"status": "partial",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 85.6
}
}
],
"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": "maintained",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": 0,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 0 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 0
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "good",
"name": "Community & Adoption",
"value": 83,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "excellent",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 94,
"inputs": {
"forks": 1049,
"stars": 8472,
"watchers": 41,
"growth_state": "organic",
"growth_factor_pct": 100
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "8,472 stars",
"points": 60,
"status": "met",
"details": [
{
"code": "stars",
"params": {
"count": 8472
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "1,049 forks",
"points": 25,
"status": "met",
"details": [
{
"code": "forks",
"params": {
"count": 1049
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "41 watchers",
"points": 8.9,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 41
}
}
],
"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": 69,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "moderate",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 63,
"inputs": {
"bus_factor": 2,
"contributors_sampled": 98,
"top_contributor_share": 0.367
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "2 contributor(s) cover half of all commits",
"points": 25.2,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 2
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 37% of commits",
"points": 14.2,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 37
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "98 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 98
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 25 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "moderate",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 63,
"inputs": {
"merged_prs": 817,
"open_issues": 246,
"closed_issues": 818,
"issue_closed_ratio": 0.769,
"closed_unmerged_prs": 426
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "77% of issues closed",
"points": 36,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 77
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "817/1243 decided PRs merged",
"points": 25.1,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 817,
"decided": 1243
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 3/21 approved changesets -- score normalized to 1",
"points": 1.5,
"status": "partial",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 58,
"inputs": {
"followers": 62,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "oapi-codegen",
"public_repos": 19,
"account_age_days": 1066
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "62 followers of oapi-codegen",
"points": 12.9,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 62,
"login": "oapi-codegen"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "19 public repos, account ~2 yr old",
"points": 15.3,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 19
}
},
{
"code": "account_age_years",
"params": {
"years": 2
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"github.com/oapi-codegen/oapi-codegen/v2"
],
"ecosystems": "go",
"any_deprecated": false,
"min_days_since_publish": 4
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on go",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "go"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 4 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 4
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "13 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 13
}
}
],
"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": 78,
"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": "7 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 7
}
}
],
"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": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"topics": [
"openapi3",
"golang",
"swagger",
"openapi",
"rest-api",
"go",
"openapi-codegen",
"openapi-generator",
"rest-api-client"
],
"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": "9 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 9
}
}
],
"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": "good",
"name": "Security",
"value": 81,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "good",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Packaging, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"packaging",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 76,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 16,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 2,
"scorecard_aggregate": 7.6
},
"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": 3,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "30 out of 30 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": "badge detected: InProgress",
"points": 0.5,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 3/21 approved changesets -- score normalized to 1",
"points": 0.8,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 25 contributing companies or organizations",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "update tool detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "30 commit(s) and 27 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 not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "all dependencies are pinned",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 6",
"points": 3,
"status": "partial",
"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": "GitHub workflow tokens follow principle of least privilege",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "3 existing vulnerabilities detected",
"points": 5.2,
"status": "partial",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "excellent",
"name": "Dependency advisories",
"note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 126 resolved dependencies against OSV. This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"indirect_dependencies_free_of_known_advisories",
"no_advisories_left_outstanding"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_repository",
"params": {
"assessed": 126
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 4,
"affected_packages": 3,
"assessed_packages": 126,
"unassessed_packages": 0,
"affected_by_severity": "moderate 2, unknown 1",
"direct_affected_packages": 0
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "no direct dependency carries a known advisory",
"points": 35,
"status": "met",
"details": [
{
"code": "no_direct_advisories",
"params": {}
}
],
"max_points": 35
},
{
"key": "indirect_dependencies_free_of_known_advisories",
"name": "Indirect dependencies free of known advisories",
"detail": "transitive set not separable from development and test dependencies in this scope",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_scope_not_separable",
"params": {}
}
],
"max_points": 25
},
{
"key": "no_advisories_left_outstanding",
"name": "No advisories left outstanding",
"detail": "no advisory carries a publication date",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_no_publication_date",
"params": {}
}
],
"max_points": 40
}
]
},
{
"key": "malicious_dependencies",
"band": "excellent",
"name": "Malicious dependencies",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"source": "osv",
"meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
"packages": [],
"red_flag": false,
"assessed_packages": 126,
"malicious_packages": 0,
"direct_malicious_packages": 0,
"withdrawn_malicious_packages": 0,
"installable_malicious_packages": 0
},
"components": [
{
"key": "no_dependency_reported_as_a_malicious_package",
"name": "No dependency reported as a malicious package",
"detail": "no dependency is reported as a malicious package",
"points": 100,
"status": "met",
"details": [
{
"code": "no_malicious_dependencies",
"params": {}
}
],
"max_points": 100
}
]
},
{
"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": 16
},
"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": 68,
"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": 1,
"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": "66 of 66 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 66,
"sampled": 66
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "excellent",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 89,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"go.sum"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [
"Makefile",
"examples/Makefile",
"internal/test/Makefile"
],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [],
"agent_commit_share": 0.34,
"toolchain_manifests": [
"examples/go.mod",
"go.mod",
"internal/test/go.mod"
],
"dependency_bot_commit_share": 0.34
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "Makefile, examples/Makefile, internal/test/Makefile",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Makefile, examples/Makefile, internal/test/Makefile"
}
}
],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "Go (statically typed)",
"points": 11,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Go"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "34 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 34,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "34 of the last 100 commits are automated dependency updates",
"points": 8,
"status": "met",
"details": [
{
"code": "dependency_bot_commits",
"params": {
"count": 34,
"sampled": 100
}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "all dependencies are pinned",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 99,
"inputs": {
"primary_language": "Go",
"largest_source_bytes": 129047,
"source_files_sampled": 599,
"oversized_source_files": 10
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Go (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Go"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "10/599 source files over 60KB",
"points": 54.1,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 599,
"oversized": 10
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "at_risk",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"example_dirs": [
"examples"
],
"has_mcp_signal": false,
"api_schema_files": []
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": "examples",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "examples"
}
}
],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? 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": [],
"report_type": "repository",
"generated_at": "2026-07-22T02:33:50.458114Z",
"schema_version": "0.26.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/o/oapi-codegen/oapi-codegen.svg",
"full_name": "oapi-codegen/oapi-codegen",
"license_state": "standard",
"license_spdx": "Apache-2.0"
}