JSON-Rohbericht maschinenlesbar
{
"data": {
"repo": {
"topics": [
"ruby",
"rails",
"flash-messages",
"controllers"
],
"is_fork": false,
"size_kb": 470,
"has_wiki": false,
"homepage": null,
"languages": {
"HTML": 169,
"Ruby": 82681,
"JavaScript": 25
},
"pushed_at": "2026-04-06T20:25:44Z",
"created_at": "2009-12-02T13:19:13Z",
"owner_type": "Organization",
"updated_at": "2026-07-01T23:46:09Z",
"description": "A set of Rails responders to dry up your application",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "Ruby",
"significant_languages": [
"Ruby"
]
},
"owner": {
"blog": null,
"name": null,
"type": "Organization",
"login": "heartcombo",
"company": null,
"location": null,
"followers": 154,
"avatar_url": "https://avatars.githubusercontent.com/u/59584037?v=4",
"created_at": "2020-01-06T22:13:20Z",
"is_verified": null,
"public_repos": 8,
"account_age_days": 2388
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v3.2.0",
"kind": "minor",
"published_at": "2025-10-10T17:19:46Z"
},
{
"tag": "v3.1.1",
"kind": "patch",
"published_at": "2023-10-11T22:02:49Z"
},
{
"tag": "v3.1.0",
"kind": "minor",
"published_at": "2023-07-18T12:32:50Z"
},
{
"tag": "v3.0.1",
"kind": "patch",
"published_at": "2021-01-14T23:36:45Z"
},
{
"tag": "v3.0.0",
"kind": "major",
"published_at": "2021-01-14T23:36:28Z"
},
{
"tag": "v2.4.1",
"kind": "patch",
"published_at": "2019-01-21T16:45:26Z"
},
{
"tag": "v1.0.0",
"kind": "major",
"published_at": "2013-09-21T16:26:21Z"
}
],
"recent_commits": [
{
"oid": "ba83c8abc48101c164cd4324438e8367ec3c1a83",
"body": "When `respond_with` + `location` needs to redirect to an external\nsource, it may be necessary to pass `allow_other_host: true` to allow\nRails to perform the redirect, otherwise it will be blocked.\n\nCloses #237",
"is_bot": false,
"headline": "Accept `allow_other_host` as redirect option with `location` (#255)",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2026-04-06T20:25:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e81ed9137292729aea22615f6882cd6628266b4b",
"body": null,
"is_bot": false,
"headline": "Bundle update",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2026-03-27T12:49:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7442d861ef6419fb662162542f1a7266dffbf867",
"body": null,
"is_bot": false,
"headline": "Bundle update",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2026-03-13T12:49:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3fb7a61dd07e7582a5c29ebb139c886bd00b1f90",
"body": null,
"is_bot": false,
"headline": "Ignore test/** folder for GH default code scanning",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2026-03-13T12:49:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c2371f2fbc6d553201e250e4f1588557a2a54555",
"body": null,
"is_bot": false,
"headline": "Configure default permissions as read-only for the workflow",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2026-03-13T12:48:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f8840cf87b1a8dc07597b29459a1ff583fd5841a",
"body": "Build pushes to the main branch and open PRs, but not pushes to other\nbranches. Allow workflow_dispatch to build them manually if we want to.",
"is_bot": false,
"headline": "Stop building both branch & PR with pushes",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2026-03-13T12:48:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "06b647e189591bfbfe0d5ebd098903fe90d46d7a",
"body": null,
"is_bot": false,
"headline": "Update badge URL [ci skip]",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2026-02-13T13:35:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3eb4835d6bc90fd9a6ed2a87ff2acc8a361d09f9",
"body": null,
"is_bot": false,
"headline": "Stop updating copyright every year [ci skip]",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2026-01-05T13:03:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4ff4f6b9b0e8f99213faa5f42d3eaa2e70e104fb",
"body": "It dropped support to Ruby 3.2 which is expected to be EOL by\n2026-03-31.",
"is_bot": false,
"headline": "Exclude Rails main + Ruby 3.2",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2026-01-05T12:54:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "63c37fcb36eb9299361d4c846f60ca11ec1d90da",
"body": "https://www.ruby-lang.org/en/news/2025/12/25/ruby-4-0-0-released/",
"is_bot": false,
"headline": "Test with Ruby 4.0",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2025-12-29T16:43:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3c39478274ff5a696f107bb0c3828663fee3bd0a",
"body": null,
"is_bot": false,
"headline": "Make rake and rdoc dev dependencies on the gemspec",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2025-12-29T16:43:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d7637d10180c0b7118ffb0f0b453f6253630b2f1",
"body": null,
"is_bot": false,
"headline": "Bundle update",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2025-12-29T16:43:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3902aa33b7e72300ff6c132009979676e0af0d23",
"body": "Rails just released v7.0.10 which contains the fixes for Ruby 3.4 we\nneeded to get the build green, so no need to point to GH anymore.\n\nhttps://rubyonrails.org/2025/10/29/new-rails-releases-and-end-of-support-announcement\n\nNote that v7.0 has reached EOL for a while now.",
"is_bot": false,
"headline": "Test with the released version of v7.0",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2025-10-29T11:51:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c1692d5896f94a52f4a39e7591c1b62c6a3e3db6",
"body": null,
"is_bot": false,
"headline": "Update to test with Rails v8.1.0 final",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2025-10-24T14:22:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "05a1275bd89657846f4d58462a50030deee74a25",
"body": null,
"is_bot": false,
"headline": "Update to test with Rails v8.1.0.rc1",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2025-10-16T13:07:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b20fdd24befee0f23f77fcf021da677e15646891",
"body": null,
"is_bot": false,
"headline": "Release v3.2.0",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2025-10-10T17:18:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "818ec078bcb37d7729db5fd34883e08ae031f038",
"body": "Update Ruby/Rails support\n\n* Add support for Ruby 3.3/3.4 and Rails 7.2/8.0/8.1. (no changes required)\n* Drop support for Rails < 7 and Ruby < 2.7.",
"is_bot": false,
"headline": "Merge pull request #254 from heartcombo/ca-upgrade",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2025-10-03T14:21:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "19ee5c29862b4dc40cf412ca80222cb257c098d8",
"body": "* Add support for Ruby 3.3/3.4 and Rails 7.2/8.0/8.1. (no changes required)\n* Drop support for Rails < 7 and Ruby < 2.7.",
"is_bot": false,
"headline": "Update Ruby/Rails support",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2025-10-03T14:04:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9cd1924cafc62058ba546eb1ca5eefcb69287773",
"body": null,
"is_bot": false,
"headline": "Update copyright, use new email [ci skip]",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2025-10-03T13:59:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9bdc60dfbfa8001641c1c4df7bc73c3fc2a4cf41",
"body": "Fix typo, compatibilty -> compatibility [ci skip]",
"is_bot": false,
"headline": "Merge pull request #249 from kianmeng/fix-typo",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2024-04-22T13:42:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5f389bfeb2ba4a5de841a8c5d71769d97d0db85f",
"body": "Found by `typos --format brief`",
"is_bot": false,
"headline": "Fix typo, compatibilty -> compatibility",
"author_name": "Kian-Meng Ang",
"author_login": "kianmeng",
"committed_at": "2024-04-19T08:25:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5d4af94cf2717bf1609bc7e0c59b6b0b98bdac03",
"body": null,
"is_bot": false,
"headline": "Bump year [ci skip]",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2024-04-09T19:57:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0a7b78329036bbc132e9ca2034537ec8ebf6addf",
"body": "Exclude previous Ruby versions from running against Rails main, since it\nonly supports Ruby 3.1+ now.",
"is_bot": false,
"headline": "Add support to Ruby 3.3 (no changes required)",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2024-04-09T17:46:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "14f9dea3f6564e229b14c2f5222c9c41ab14879b",
"body": "Note that we need to keep Nokogiri on v1.15.6 and Bundler on v2.4.22 due\nto Ruby 2.7 compatibility for now.",
"is_bot": false,
"headline": "Update to latest gems",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2024-04-09T17:46:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a677558a96aeefa7b6c79f06ed605cc371282d8c",
"body": "Use web archive for blog link which is now giving a 404.\r\n\r\n---------\r\n\r\nCo-authored-by: Carlos Antonio da Silva <carlosantoniodasilva@gmail.com>",
"is_bot": false,
"headline": "Fix link to old Rails 3 blog post (#247)",
"author_name": "Sasha Stadnik",
"author_login": "stadniklksndr",
"committed_at": "2023-10-14T12:15:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "247629ac394ed8f709553d12989ac1f6a833381f",
"body": null,
"is_bot": false,
"headline": "Release v3.1.1",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2023-10-11T22:02:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e01d82a6c7cd806c189339eab36633788adfebac",
"body": null,
"is_bot": false,
"headline": "Add support for Rails 7.1",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2023-10-10T23:14:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "956cd874a997083d350951fde4c6cc4944f64e80",
"body": null,
"is_bot": false,
"headline": "Update copyright year [ci skip]",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2023-02-16T12:15:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4a7132c8182ccf66d99c6898accdc12d574cb7b7",
"body": null,
"is_bot": false,
"headline": "Point changelog to `main` branch in gemspec [ci skip]",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2023-02-04T12:19:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7f85ccc091f085cfc21b76a81fbb3aea8a6f29f0",
"body": "Closes #238",
"is_bot": false,
"headline": "Release v3.1.0",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2023-02-03T16:34:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c7b7dad6d10e833db40519ee142006ce978a6702",
"body": "It's not working right now, and we haven't used it in like forever\nto drive anything.\n\nCloses #241\n\n[ci skip]",
"is_bot": false,
"headline": "Remove CodeClimate badge",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2023-02-03T14:47:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1ad4137ae51445bb25b45fd15c34273dd6f6eeec",
"body": null,
"is_bot": false,
"headline": "Add branch to Rails github gem declaration to be able to use local repo",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2023-02-01T22:09:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fb9f787055a7a842584ce351793b249676290090",
"body": "Make error status for HTML/JS responses fully configurable",
"is_bot": false,
"headline": "Merge pull request #240 from heartcombo/ca-config-errors",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2023-01-29T13:21:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "707e4a00f75f7d366b04ef6b2792c87143b9f0b1",
"body": "Just make it clearer how Hotwire/Turbo expects this to work, and how you\ncan make responders work better with it.\n\nPlease note that a future major version of responders might change the\ndefaults to work that way out of the box, without explicit configs.\n\n[ci skip]",
"is_bot": false,
"headline": "Add note about Hotwire/Turbo to the readme",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2023-01-27T18:08:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "447065cefb77909dd9cb742852dae0e51bc461fd",
"body": "If an app happens to have multiple responders on different controllers\n(which is entirely possible), they may not want to share the same set of\nstatuses for responses. `cattr_accessor` would make that a global value\nacross all of the apps responders, while `class_attribute` can be\nchanged on each cl\n[…]\nile still respecting\nthe inherited values if any is set), making it much more flexible.\n\nAlso disable instance writer and predicate methods, we only need access\nto read those values from the instance.",
"is_bot": false,
"headline": "Use `class_attribute` to allow changing statuses per-responder",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2023-01-27T17:42:49Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9efc80b709e4298e1b2e2fdc7d9790aceda5f9e4",
"body": "We want to change these defaults for all apps eventually, so making sure\nnew apps are generated with them by default will make this an easier\ntransation to some in the future.",
"is_bot": false,
"headline": "Update the install generator to set new defaults for new apps",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2023-01-27T16:39:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "28f1a9894f750b65a5a009d482f54e3ff399e866",
"body": "This essentially makes the previous change merged via #223 configurable,\nso that we can keep the current behavior on existing apps, returning\n`200 OK` even for errors, while changing the generator for new apps to\nbe configured with `422 Unprocessable Entity`, making them work better\nwith Hotwire/Turbo installations out of the box.\n\nPlease note that these defaults are likely to be swapped in a future\nmajor version of Responders.",
"is_bot": false,
"headline": "Make error status for HTML/JS responses fully configurable",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2023-01-27T16:39:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "01e9531b4f6062d153518da20ef80f5fd52e0d17",
"body": "Otherwise we would enforce `422 Unprocessable Entity` even if there was\na `status` provided, now we'll respect that status first, and use `422`\nas default/fallback.",
"is_bot": false,
"headline": "Respect `status` given to `respond_with` when responding with errors",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2023-01-27T16:33:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2b23c7c632ea738a2b1daaadd4da73418256faab",
"body": null,
"is_bot": false,
"headline": "Add changelog entry for #234 [ci skip]",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2023-01-25T21:24:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b2ff9b76e5e2ee5d7cb05e42c25710b400d065a8",
"body": "Otherwise a failure/exception could prevent the config from being\nreverted, leaking into other tests and causing other failures.",
"is_bot": false,
"headline": "Ensure the config is always reverted back after yielding on tests",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2023-01-25T21:17:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "eb50684badae91484cc1a8e8b161d63b8850bdd2",
"body": null,
"is_bot": false,
"headline": "Add support to Ruby 3.2 (no changes needed)",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2023-01-16T21:36:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "161f205b649489d740821425560eecd355fa02be",
"body": "Fixes redirect_status config",
"is_bot": false,
"headline": "Merge pull request #236 from excid3/fix-redirect-status-config",
"author_name": "Rafael Mendonça França",
"author_login": "rafaelfranca",
"committed_at": "2022-03-28T18:22:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1288c5391e474cad507d473b1050d0f3573e8aa6",
"body": null,
"is_bot": false,
"headline": "Fixes redirect_status config",
"author_name": "Chris Oliver",
"author_login": "excid3",
"committed_at": "2022-03-28T13:44:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ea1eeb3ad4e5a81ef6190ce10b5c0cb0b3e5a837",
"body": null,
"is_bot": false,
"headline": "Run Rubocop with Ruby 3.1",
"author_name": "Rafael Mendonça França",
"author_login": "rafaelfranca",
"committed_at": "2022-03-25T21:07:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3f483c3386c09442f94c7612d2f43f331a2aef66",
"body": null,
"is_bot": false,
"headline": "Run rubocop on CI",
"author_name": "Rafael Mendonça França",
"author_login": "rafaelfranca",
"committed_at": "2022-03-25T21:05:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "15edc140c36bcc440feafd8e211278761507f03b",
"body": null,
"is_bot": false,
"headline": "Use Ruby 2.5 HEREDOC",
"author_name": "Rafael Mendonça França",
"author_login": "rafaelfranca",
"committed_at": "2022-03-25T20:58:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ea01ebc4632c011aff81b1c55f7730800ea9f038",
"body": null,
"is_bot": false,
"headline": "Update copyright year",
"author_name": "Rafael Mendonça França",
"author_login": "rafaelfranca",
"committed_at": "2022-03-25T20:57:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "806be08d87844c176baa5b6658f857f4283861d5",
"body": null,
"is_bot": false,
"headline": "Remove deprecated Responders::LocationResponder",
"author_name": "Rafael Mendonça França",
"author_login": "rafaelfranca",
"committed_at": "2022-03-25T20:47:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "90c50a5727ddc8023c2629372e98fed30c5970b8",
"body": null,
"is_bot": false,
"headline": "Remove deprecated support to interpolation_options method",
"author_name": "Rafael Mendonça França",
"author_login": "rafaelfranca",
"committed_at": "2022-03-25T20:38:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ee0abc97a73544af3800ecf4f6ae55a844b57bd2",
"body": "This feature was added in Rails 5.0 in the commit\nhttps://github.com/rails/rails/commit/541a51ecf8ee04f956b7d8efb13935640aa831ce.\n\nNow we don't need to build and hold our own objects to implement helpers.",
"is_bot": false,
"headline": "Use the helpers found in the controller instance",
"author_name": "Rafael Mendonça França",
"author_login": "rafaelfranca",
"committed_at": "2022-03-25T20:28:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ecbacd89c4642aa82b585c93e7ee4afde462c701",
"body": "Since we only support Rails 5.2 now we can use this on_load hook instead\nof the generic that also runs in `ActionController::Api`",
"is_bot": false,
"headline": "Only run the extension in `ActionController::Base`",
"author_name": "Rafael Mendonça França",
"author_login": "rafaelfranca",
"committed_at": "2022-03-25T20:27:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a393f550a1295c20fd7ebd4fd4023bf68f29d210",
"body": null,
"is_bot": false,
"headline": "ActionController::Api is always defined in the versions we test",
"author_name": "Rafael Mendonça França",
"author_login": "rafaelfranca",
"committed_at": "2022-03-25T20:19:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "18bec67631437d85a02f9cf0f719016563b92321",
"body": null,
"is_bot": false,
"headline": "Document the config.responders.redirect_status",
"author_name": "Rafael Mendonça França",
"author_login": "rafaelfranca",
"committed_at": "2022-03-25T20:11:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6275a043ef9a51ee2d4e59841745e146e7c6b232",
"body": "They were duplicated so only one were running. Also made sure the config\nworks with other values.",
"is_bot": false,
"headline": "Fix test added in #234",
"author_name": "Rafael Mendonça França",
"author_login": "rafaelfranca",
"committed_at": "2022-03-25T20:07:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2af2f25cd977c49a723e32cc00eb6ed650c537d9",
"body": null,
"is_bot": false,
"headline": "Fix rubocop configuration",
"author_name": "Rafael Mendonça França",
"author_login": "rafaelfranca",
"committed_at": "2022-03-25T20:02:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "29f47c1fe5a074be518ce57147f6fc0405184b78",
"body": "System tests with Hotwire",
"is_bot": false,
"headline": "Merge pull request #234 from excid3/hotwire",
"author_name": "Rafael Mendonça França",
"author_login": "rafaelfranca",
"committed_at": "2022-03-25T16:29:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "738bd86cb7427248d2104fdcbf76f82d19d35713",
"body": null,
"is_bot": false,
"headline": "Add configuration for redirect_status",
"author_name": "Chris Oliver",
"author_login": "excid3",
"committed_at": "2022-03-08T15:02:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "56d00ac8894b38de9eff177cb50dda110ff79440",
"body": "* Rails and Ruby versions follow the most recent to oldest, except for\n Rails main, so we can keep the Gemfile the first one.\n* Excluding specific matrix combinations based on the Gemfile first,\n Ruby version next, and keep the same order (most recent -> oldest)\n* Quote all Ruby versions to keep things consistent. It's required for\n the '3.0' version to avoid the float issue where it'd use the latest\n 3.x instead.\n* Test Rails 6.1 with Ruby 3.1, as Rails test suite supports it.",
"is_bot": false,
"headline": "Reorganize test matrix & use latest bundler",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2022-02-25T16:38:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ff14d6b33de7fef909e3585e66effd3b24a1f027",
"body": "Add Ruby 3.1 to CI",
"is_bot": false,
"headline": "Merge pull request #233 from petergoldstein/feature/add_ruby_3_1_to_ci",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2022-02-25T16:03:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ac8c42e873975b5d9d2a68e5380dfe0cb9b4873c",
"body": null,
"is_bot": false,
"headline": "Add Ruby 3.1 to CI",
"author_name": "Peter Goldstein",
"author_login": "petergoldstein",
"committed_at": "2022-02-23T15:58:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "47d31b43a3c3d3a5bc56ca862226dd3ec77bb59e",
"body": null,
"is_bot": false,
"headline": "Bundle update to Rails 7.0 rc1",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2021-12-08T11:24:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d15834ec95546c529375d6497104941be79372f6",
"body": null,
"is_bot": false,
"headline": "Rename Rails head -> main to better match the branch naming",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2021-10-06T22:29:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4f54f2579b08c951544609ee8090521d8f36c559",
"body": null,
"is_bot": false,
"headline": "Test Rails 7.0 alpha2 by default, create new gemfile for 6.1.x stable",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2021-10-05T22:36:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cf72db400492bf19a2169bd7b6de68e7036df30e",
"body": null,
"is_bot": false,
"headline": "Bundle update",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2021-05-08T13:36:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "baffc68731a7337095b481fbc82c38261f106d98",
"body": null,
"is_bot": false,
"headline": "Add metadata for RubyGems",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2021-05-08T13:36:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3611f8c95171eaa87122e2e1ada5a3e0695ddd06",
"body": "Fix typo on_sucess -> on_success",
"is_bot": false,
"headline": "Merge pull request #225 from akanshak984/fix_typo",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2021-03-11T11:33:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9d61f6fa2867aa1524a44db380e58c4df8238b29",
"body": null,
"is_bot": false,
"headline": "Fix typo on_sucess->on_success",
"author_name": "Akansha Kumari",
"author_login": "akanshak984",
"committed_at": "2021-03-11T11:29:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4506b7d580621b31aca5793307ad797fd60dd1fb",
"body": "https://github.com/rails/rails/commit/6487836af8f50648a9b30ce61864c827132e5592\nhttps://github.com/rails/rails/commit/1b455e2e9d6937d4107e19cb32e2f98aa08886b9",
"is_bot": false,
"headline": "Rails main branch targets version 7 and only supports Ruby 2.7 now",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2021-02-09T12:58:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "413eae16b794c1f352af2cfc577611e1de0e8844",
"body": "Respond with 422 Unprocessable Entity for non-GET HTML/JS requests with errors",
"is_bot": false,
"headline": "Merge pull request #223 from heartcombo/ca-render-error-422",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2021-01-29T11:22:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b2dd0a60e8d232292029ea0f10d69702f8c88458",
"body": null,
"is_bot": false,
"headline": "Update method docs to reflect the new 422 response on unsuccessful cases",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2021-01-24T23:46:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ca2ab745fbaf530e31d43d947bfd8059a6663065",
"body": "Much like HTML responses, JS will respond with a 422 Unprocessable\nEntity for non-GET requests if the given resource contains errors, so it\nis consistent with all other formats going forward.\n\nCloses https://github.com/heartcombo/responders/issues/159.",
"is_bot": false,
"headline": "Respond with 422 for non-GET JS requests with errors",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2021-01-16T19:21:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8f4de70a8105fcc910605be84e94e5ac30df86ee",
"body": "When responding to a non-GET HTML request that had errors on the\nresource, responders would not set any status, which means Rails would\ndefault to `200 OK`. This has been long working like this but also a\nlong discussion in responders to change that behavior, to be more inline\nwith how other types o\n[…]\nbo/Hotwire.\n\nPlease note that this is a possible breaking change if you're relying on\nthe previous status to trigger any behavior for errors in your app.\n\n[1] https://github.com/hotwired/turbo/pull/39",
"is_bot": false,
"headline": "Respond with 422 for non-GET HTML requests with errors",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2021-01-16T19:20:30Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1c4f54866d842e2dbe811dad4ed500e6ff69f23d",
"body": null,
"is_bot": false,
"headline": "Use `assert_includes` for better output in case of failures",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2021-01-16T18:25:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "549ded8572a47640a5e8e67c175897912d86329c",
"body": null,
"is_bot": false,
"headline": "Fix typo in Changelog",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2021-01-15T00:22:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "18fe9a43568cd2bcd0b9a5e6f67949697c47ac81",
"body": null,
"is_bot": false,
"headline": "Remove code supporting old Rails versions in tests",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2021-01-14T23:38:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "20e60599b3903d110d89dab538f8926ee0d47c65",
"body": null,
"is_bot": false,
"headline": "Add note about supported Ruby/Rails versions going forward",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2021-01-14T23:28:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "da655747f6c53a3900509bf7ec7f85d816c8f25a",
"body": null,
"is_bot": false,
"headline": "Remove travis badge, check commit status instead",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2021-01-14T23:28:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b25f1487410c179671cd696503ec237841cc9d11",
"body": "Going forward we'll keep supporting active Ruby versions (that haven't\nreached EOL), and Rails versions that still receive bug/security fixes.",
"is_bot": false,
"headline": "Drop support for Ruby < 2.5 and Rails < 5.2",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2021-01-14T23:28:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "66b2b1a98dee4235b84951375ed7e10a92fb62cd",
"body": null,
"is_bot": false,
"headline": "Remove unused model",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2021-01-13T21:48:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "37eeca418fd7fd41059956a2478d29b3d6fec3f1",
"body": "Without it we're getting a couple errors with Ruby 3.0 and Rails 6 that\nI couldn't track down on a quick search, but at the end of the day we\nshouldn't be relying on ActiveSupport::JSON anyway to be present, we\njust want to test that the model responds/serializes appropriately to\njson method like the other methods.",
"is_bot": false,
"headline": "Do not rely on ActiveSupport::JSON being loaded for this test model",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2021-01-13T21:45:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "27c91619b71e239b3393b1af5ef9bbed02cba62d",
"body": null,
"is_bot": false,
"headline": "Update Changelog with new Ruby/Rails support",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2021-01-13T00:40:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1211f4913a3ad1921a875dde98ade5021685939a",
"body": " DEPRECATION WARNING: Calling `<<` to an ActiveModel::Errors message\n array in order to add an error is deprecated. Please call\n `ActiveModel::Errors#add` instead.\n\nhttps://github.com/rails/rails/pull/32313",
"is_bot": false,
"headline": "Fix deprecation warning with new Errors object in Rails 6.1",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2021-01-13T00:39:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d49e5cac8caf26905b204eb2cfdde633378fb0ca",
"body": null,
"is_bot": false,
"headline": "Test against Rails 6.x versions against Ruby 3.0",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2021-01-13T00:24:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "001415e95c9c04409f60aeeec69bc33c67fd7386",
"body": null,
"is_bot": false,
"headline": "Test against Rails 6.1 by default, move 6.0 to a separate Gemfile",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2021-01-13T00:22:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7ec531b8b8a180392287aeb643f0940430336ede",
"body": null,
"is_bot": false,
"headline": "Use stable released versions instead of branches to test against",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2021-01-13T00:19:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c3463d2cc7cb027e6f237de4a2311d0637cc0ace",
"body": null,
"is_bot": false,
"headline": "Update gemfile names",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2021-01-13T00:11:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6c9e932b2a58575cad7d218d16ba48be218320c9",
"body": null,
"is_bot": false,
"headline": "Test GitHub Actions instead of Travis for running tests",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2021-01-05T01:07:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bea596ef1ce828bde33de94aa54d2b7a1e7adaff",
"body": " Mocha deprecation warning at ./responders/test/test_helper.rb:5:in\n `require': Require 'mocha/test_unit', 'mocha/minitest' or 'mocha/api'\n instead of 'mocha/setup'.",
"is_bot": false,
"headline": "Require \"mocha/minitest\" to remove mocha deprecation warning",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2020-09-08T21:35:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fd111b807d8558f98455a4d4bce84d2012fcc92e",
"body": "Update Code Climate link reference, remove direct link to issues.",
"is_bot": false,
"headline": "Update README [ci skip]",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2020-09-08T21:03:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ae2ec3c077836d9118dce3121ecda9075db1b4b0",
"body": "…g Rails 6.x",
"is_bot": false,
"headline": "Remove Rails 6.x specific Gemfile, the main Gemfile is already testin…",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2020-09-08T21:00:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dbfaeb1f31b1b856bcb05dc871823780eda477e1",
"body": "https://blog.travis-ci.com/2018-11-19-required-linux-infrastructure-migration",
"is_bot": false,
"headline": "Remove now unused sudo option for travis",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2020-09-08T20:59:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0f9b1e24c5676b88e567810c55ecef397f701afc",
"body": null,
"is_bot": false,
"headline": "Stop testing against Ruby head, do not allow failures on Rails head",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2020-09-08T20:58:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5cb19e8f4529a439b7e7cca8406ab0acc698850a",
"body": null,
"is_bot": false,
"headline": "Enable email notifications for now, remove slack config",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2020-09-08T20:58:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e1cb31757a22d55a44232902fb6694e7f437fe01",
"body": null,
"is_bot": false,
"headline": "Update bundle",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2020-09-08T20:56:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d7a5a5e9d9a1e8b5b9a4cb52c03b86ba8659b4a5",
"body": null,
"is_bot": false,
"headline": "Fix build status badge [ci skip]",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2020-06-11T18:21:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bfdc7c6511de64da83101cca840db50e07fb44bb",
"body": "It's bundling Rails 6, which doesn't work with Ruby 2.4.\n\nhttps://travis-ci.org/github/heartcombo/responders/builds/692584546",
"is_bot": false,
"headline": "Skip testing the main Gemfile with Ruby 2.4",
"author_name": "Carlos Antonio da Silva",
"author_login": "carlosantoniodasilva",
"committed_at": "2020-06-11T18:18:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5509904ce5e1f431f0856e14546380756c5f9329",
"body": null,
"is_bot": false,
"headline": "Prepare to 3.0.1",
"author_name": "Rafael Mendonça França",
"author_login": "rafaelfranca",
"committed_at": "2020-05-29T14:17:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "79ff9f2a4889a79fbd416a37e31f2df569d9bbb8",
"body": null,
"is_bot": false,
"headline": "Upgrade all gems",
"author_name": "Rafael Mendonça França",
"author_login": "rafaelfranca",
"committed_at": "2020-05-29T14:12:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "58e574f72bc7f95ee15040a3da6210bc25a7e392",
"body": null,
"is_bot": false,
"headline": "Remove all mentions to Plataformatec",
"author_name": "Rafael Mendonça França",
"author_login": "rafaelfranca",
"committed_at": "2020-05-29T14:10:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e038cbac63feb0a25404eb89689bb0ce3054c715",
"body": "Test against Ruby 2.7",
"is_bot": false,
"headline": "Merge pull request #221 from casperisfine/ruby-2.7",
"author_name": "Rafael França",
"author_login": "rafaelfranca",
"committed_at": "2020-05-29T13:52:07Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 7,
"commits_last_year": 19,
"latest_release_at": "2025-10-10T17:19:46Z",
"latest_release_tag": "v3.2.0",
"releases_from_tags": false,
"days_since_last_push": 106,
"active_weeks_last_year": 11,
"days_since_latest_release": 284,
"mean_days_between_releases": 733.7
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 37,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "responders",
"exists": true,
"license": "MIT",
"keywords": [],
"ecosystem": "rubygems",
"matches_repo": true,
"registry_url": "https://rubygems.org/gems/responders",
"is_deprecated": false,
"latest_version": "3.2.0",
"repository_url": "https://github.com/heartcombo/responders",
"versions_count": 49,
"total_downloads": 325772415,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": "2009-12-04T12:58:08.887000Z",
"latest_published_at": "2025-10-10T17:19:11.059000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 284
}
]
},
"popularity": {
"forks": 160,
"stars": 2056,
"watchers": 28,
"fork_history": {
"days": [
{
"date": "2010-03-16",
"count": 1
},
{
"date": "2010-05-26",
"count": 1
},
{
"date": "2010-07-18",
"count": 1
},
{
"date": "2010-07-28",
"count": 1
},
{
"date": "2010-09-16",
"count": 1
},
{
"date": "2010-11-15",
"count": 1
},
{
"date": "2011-01-18",
"count": 1
},
{
"date": "2011-02-08",
"count": 1
},
{
"date": "2011-03-25",
"count": 1
},
{
"date": "2011-05-05",
"count": 1
},
{
"date": "2011-05-06",
"count": 1
},
{
"date": "2011-05-12",
"count": 1
},
{
"date": "2011-07-08",
"count": 1
},
{
"date": "2011-10-02",
"count": 1
},
{
"date": "2012-02-27",
"count": 1
},
{
"date": "2012-03-06",
"count": 1
},
{
"date": "2012-06-03",
"count": 1
},
{
"date": "2012-06-07",
"count": 1
},
{
"date": "2012-08-13",
"count": 1
},
{
"date": "2012-08-29",
"count": 1
},
{
"date": "2012-08-31",
"count": 1
},
{
"date": "2012-09-27",
"count": 1
},
{
"date": "2012-10-23",
"count": 1
},
{
"date": "2012-12-12",
"count": 1
},
{
"date": "2013-01-19",
"count": 1
},
{
"date": "2013-02-06",
"count": 1
},
{
"date": "2013-02-21",
"count": 1
},
{
"date": "2013-02-26",
"count": 1
},
{
"date": "2013-02-28",
"count": 1
},
{
"date": "2013-03-26",
"count": 1
},
{
"date": "2013-04-13",
"count": 1
},
{
"date": "2013-06-04",
"count": 1
},
{
"date": "2013-06-06",
"count": 1
},
{
"date": "2013-06-20",
"count": 1
},
{
"date": "2013-06-27",
"count": 2
},
{
"date": "2013-07-09",
"count": 1
},
{
"date": "2013-07-23",
"count": 1
},
{
"date": "2013-12-15",
"count": 1
},
{
"date": "2014-07-04",
"count": 1
},
{
"date": "2014-08-22",
"count": 1
},
{
"date": "2014-08-29",
"count": 1
},
{
"date": "2014-10-05",
"count": 1
},
{
"date": "2014-10-20",
"count": 1
},
{
"date": "2014-10-26",
"count": 1
},
{
"date": "2014-10-27",
"count": 1
},
{
"date": "2014-11-06",
"count": 1
},
{
"date": "2014-11-17",
"count": 1
},
{
"date": "2014-11-24",
"count": 1
},
{
"date": "2014-12-21",
"count": 1
},
{
"date": "2015-01-23",
"count": 1
},
{
"date": "2015-01-27",
"count": 1
},
{
"date": "2015-01-28",
"count": 1
},
{
"date": "2015-02-09",
"count": 1
},
{
"date": "2015-02-13",
"count": 1
},
{
"date": "2015-03-24",
"count": 1
},
{
"date": "2015-03-31",
"count": 1
},
{
"date": "2015-05-04",
"count": 1
},
{
"date": "2015-05-13",
"count": 1
},
{
"date": "2015-05-27",
"count": 1
},
{
"date": "2015-07-05",
"count": 1
},
{
"date": "2015-07-13",
"count": 1
},
{
"date": "2015-07-14",
"count": 1
},
{
"date": "2015-07-21",
"count": 1
},
{
"date": "2015-07-29",
"count": 1
},
{
"date": "2015-08-28",
"count": 1
},
{
"date": "2015-09-10",
"count": 1
},
{
"date": "2015-10-13",
"count": 1
},
{
"date": "2015-10-15",
"count": 1
},
{
"date": "2015-10-19",
"count": 1
},
{
"date": "2015-10-23",
"count": 1
},
{
"date": "2015-11-04",
"count": 1
},
{
"date": "2015-11-24",
"count": 2
},
{
"date": "2015-11-30",
"count": 1
},
{
"date": "2016-03-08",
"count": 3
},
{
"date": "2016-03-14",
"count": 1
},
{
"date": "2016-03-26",
"count": 1
},
{
"date": "2016-05-11",
"count": 1
},
{
"date": "2016-05-17",
"count": 1
},
{
"date": "2016-07-13",
"count": 1
},
{
"date": "2016-08-16",
"count": 1
},
{
"date": "2016-10-08",
"count": 1
},
{
"date": "2016-11-21",
"count": 1
},
{
"date": "2016-11-29",
"count": 1
},
{
"date": "2017-01-07",
"count": 1
},
{
"date": "2017-03-18",
"count": 1
},
{
"date": "2017-04-25",
"count": 1
},
{
"date": "2017-04-28",
"count": 2
},
{
"date": "2017-05-02",
"count": 1
},
{
"date": "2017-05-29",
"count": 1
},
{
"date": "2017-06-08",
"count": 1
},
{
"date": "2017-06-14",
"count": 1
},
{
"date": "2017-06-22",
"count": 1
},
{
"date": "2017-07-19",
"count": 1
},
{
"date": "2017-08-09",
"count": 1
},
{
"date": "2017-11-16",
"count": 1
},
{
"date": "2017-12-17",
"count": 1
},
{
"date": "2018-04-10",
"count": 1
},
{
"date": "2018-08-16",
"count": 1
},
{
"date": "2018-10-18",
"count": 1
},
{
"date": "2018-11-03",
"count": 1
},
{
"date": "2018-11-08",
"count": 1
},
{
"date": "2018-11-24",
"count": 1
},
{
"date": "2018-11-28",
"count": 1
},
{
"date": "2018-12-19",
"count": 1
},
{
"date": "2018-12-22",
"count": 1
},
{
"date": "2019-01-23",
"count": 1
},
{
"date": "2019-01-31",
"count": 1
},
{
"date": "2019-03-08",
"count": 1
},
{
"date": "2019-04-10",
"count": 1
},
{
"date": "2019-04-16",
"count": 1
},
{
"date": "2019-04-24",
"count": 1
},
{
"date": "2019-05-06",
"count": 1
},
{
"date": "2019-05-17",
"count": 1
},
{
"date": "2019-06-20",
"count": 1
},
{
"date": "2019-06-23",
"count": 1
},
{
"date": "2020-01-24",
"count": 1
},
{
"date": "2020-05-27",
"count": 1
},
{
"date": "2020-08-10",
"count": 1
},
{
"date": "2020-11-18",
"count": 1
},
{
"date": "2020-11-23",
"count": 1
},
{
"date": "2021-02-01",
"count": 1
},
{
"date": "2021-05-25",
"count": 1
},
{
"date": "2021-08-15",
"count": 1
},
{
"date": "2021-10-22",
"count": 1
},
{
"date": "2021-12-11",
"count": 1
},
{
"date": "2021-12-14",
"count": 1
},
{
"date": "2022-01-21",
"count": 1
},
{
"date": "2022-03-16",
"count": 1
},
{
"date": "2022-03-26",
"count": 1
},
{
"date": "2022-03-28",
"count": 1
},
{
"date": "2022-06-01",
"count": 1
},
{
"date": "2022-08-26",
"count": 1
},
{
"date": "2022-09-21",
"count": 1
},
{
"date": "2022-10-20",
"count": 1
},
{
"date": "2022-11-14",
"count": 1
},
{
"date": "2023-01-23",
"count": 1
},
{
"date": "2023-04-07",
"count": 1
},
{
"date": "2023-05-29",
"count": 1
},
{
"date": "2023-07-01",
"count": 1
},
{
"date": "2023-08-13",
"count": 1
},
{
"date": "2024-03-09",
"count": 1
},
{
"date": "2024-04-19",
"count": 1
},
{
"date": "2024-09-24",
"count": 1
},
{
"date": "2025-02-08",
"count": 1
},
{
"date": "2025-03-07",
"count": 1
},
{
"date": "2025-06-07",
"count": 1
},
{
"date": "2026-07-14",
"count": 1
},
{
"date": "2026-07-20",
"count": 4
}
],
"complete": true,
"collected": 156,
"total_forks": 160
},
"star_history": {
"days": [
{
"date": "2015-09-21",
"count": 2
},
{
"date": "2015-09-22",
"count": 2
},
{
"date": "2015-09-23",
"count": 2
},
{
"date": "2015-09-24",
"count": 4
},
{
"date": "2015-09-25",
"count": 3
},
{
"date": "2015-09-27",
"count": 1
},
{
"date": "2015-09-28",
"count": 2
},
{
"date": "2015-09-29",
"count": 1
},
{
"date": "2015-09-30",
"count": 3
},
{
"date": "2015-10-02",
"count": 1
},
{
"date": "2015-10-04",
"count": 1
},
{
"date": "2015-10-05",
"count": 4
},
{
"date": "2015-10-06",
"count": 1
},
{
"date": "2015-10-07",
"count": 1
},
{
"date": "2015-10-08",
"count": 1
},
{
"date": "2015-10-09",
"count": 1
},
{
"date": "2015-10-10",
"count": 4
},
{
"date": "2015-10-11",
"count": 1
},
{
"date": "2015-10-12",
"count": 2
},
{
"date": "2015-10-13",
"count": 3
},
{
"date": "2015-10-15",
"count": 1
},
{
"date": "2015-10-19",
"count": 1
},
{
"date": "2015-10-20",
"count": 1
},
{
"date": "2015-10-21",
"count": 1
},
{
"date": "2015-10-22",
"count": 1
},
{
"date": "2015-10-23",
"count": 1
},
{
"date": "2015-10-24",
"count": 1
},
{
"date": "2015-10-26",
"count": 2
},
{
"date": "2015-10-27",
"count": 1
},
{
"date": "2015-10-29",
"count": 2
},
{
"date": "2015-10-30",
"count": 2
},
{
"date": "2015-10-31",
"count": 2
},
{
"date": "2015-11-01",
"count": 2
},
{
"date": "2015-11-04",
"count": 4
},
{
"date": "2015-11-05",
"count": 2
},
{
"date": "2015-11-06",
"count": 1
},
{
"date": "2015-11-12",
"count": 1
},
{
"date": "2015-11-13",
"count": 1
},
{
"date": "2015-11-15",
"count": 1
},
{
"date": "2015-11-16",
"count": 1
},
{
"date": "2015-11-17",
"count": 1
},
{
"date": "2015-11-18",
"count": 2
},
{
"date": "2015-11-20",
"count": 2
},
{
"date": "2015-11-21",
"count": 2
},
{
"date": "2015-11-23",
"count": 3
},
{
"date": "2015-11-24",
"count": 1
},
{
"date": "2015-11-25",
"count": 2
},
{
"date": "2015-11-28",
"count": 1
},
{
"date": "2015-11-29",
"count": 2
},
{
"date": "2015-12-01",
"count": 1
},
{
"date": "2015-12-02",
"count": 1
},
{
"date": "2015-12-03",
"count": 1
},
{
"date": "2015-12-04",
"count": 1
},
{
"date": "2015-12-05",
"count": 1
},
{
"date": "2015-12-09",
"count": 1
},
{
"date": "2015-12-13",
"count": 1
},
{
"date": "2015-12-15",
"count": 1
},
{
"date": "2015-12-17",
"count": 1
},
{
"date": "2015-12-20",
"count": 1
},
{
"date": "2015-12-21",
"count": 2
},
{
"date": "2015-12-23",
"count": 2
},
{
"date": "2015-12-25",
"count": 1
},
{
"date": "2015-12-27",
"count": 1
},
{
"date": "2015-12-28",
"count": 3
},
{
"date": "2015-12-29",
"count": 2
},
{
"date": "2015-12-30",
"count": 3
},
{
"date": "2015-12-31",
"count": 1
},
{
"date": "2016-01-02",
"count": 1
},
{
"date": "2016-01-06",
"count": 1
},
{
"date": "2016-01-07",
"count": 2
},
{
"date": "2016-01-08",
"count": 2
},
{
"date": "2016-01-09",
"count": 2
},
{
"date": "2016-01-12",
"count": 2
},
{
"date": "2016-01-13",
"count": 1
},
{
"date": "2016-01-15",
"count": 1
},
{
"date": "2016-01-17",
"count": 1
},
{
"date": "2016-01-19",
"count": 2
},
{
"date": "2016-01-20",
"count": 1
},
{
"date": "2016-01-21",
"count": 2
},
{
"date": "2016-01-22",
"count": 3
},
{
"date": "2016-01-24",
"count": 1
},
{
"date": "2016-01-26",
"count": 1
},
{
"date": "2016-01-28",
"count": 1
},
{
"date": "2016-01-31",
"count": 1
},
{
"date": "2016-02-04",
"count": 1
},
{
"date": "2016-02-07",
"count": 1
},
{
"date": "2016-02-08",
"count": 1
},
{
"date": "2016-02-12",
"count": 1
},
{
"date": "2016-02-13",
"count": 1
},
{
"date": "2016-02-15",
"count": 1
},
{
"date": "2016-02-17",
"count": 1
},
{
"date": "2016-02-19",
"count": 1
},
{
"date": "2016-02-21",
"count": 3
},
{
"date": "2016-02-23",
"count": 2
},
{
"date": "2016-02-24",
"count": 1
},
{
"date": "2016-02-27",
"count": 1
},
{
"date": "2016-02-28",
"count": 1
},
{
"date": "2016-02-29",
"count": 2
},
{
"date": "2016-03-02",
"count": 2
},
{
"date": "2016-03-03",
"count": 1
},
{
"date": "2016-03-07",
"count": 3
},
{
"date": "2016-03-08",
"count": 1
},
{
"date": "2016-03-09",
"count": 1
},
{
"date": "2016-03-10",
"count": 2
},
{
"date": "2016-03-11",
"count": 1
},
{
"date": "2016-03-14",
"count": 2
},
{
"date": "2016-03-15",
"count": 2
},
{
"date": "2016-03-19",
"count": 1
},
{
"date": "2016-03-20",
"count": 1
},
{
"date": "2016-03-21",
"count": 1
},
{
"date": "2016-03-22",
"count": 1
},
{
"date": "2016-03-23",
"count": 1
},
{
"date": "2016-03-24",
"count": 2
},
{
"date": "2016-03-25",
"count": 3
},
{
"date": "2016-03-27",
"count": 1
},
{
"date": "2016-03-30",
"count": 1
},
{
"date": "2016-03-31",
"count": 2
},
{
"date": "2016-04-01",
"count": 2
},
{
"date": "2016-04-03",
"count": 1
},
{
"date": "2016-04-05",
"count": 3
},
{
"date": "2016-04-07",
"count": 1
},
{
"date": "2016-04-16",
"count": 1
},
{
"date": "2016-04-17",
"count": 1
},
{
"date": "2016-04-20",
"count": 1
},
{
"date": "2016-04-22",
"count": 2
},
{
"date": "2016-04-23",
"count": 1
},
{
"date": "2016-04-24",
"count": 3
},
{
"date": "2016-04-28",
"count": 1
},
{
"date": "2016-05-01",
"count": 3
},
{
"date": "2016-05-04",
"count": 2
},
{
"date": "2016-05-05",
"count": 1
},
{
"date": "2016-05-09",
"count": 2
},
{
"date": "2016-05-10",
"count": 1
},
{
"date": "2016-05-12",
"count": 1
},
{
"date": "2016-05-13",
"count": 1
},
{
"date": "2016-05-18",
"count": 1
},
{
"date": "2016-05-23",
"count": 1
},
{
"date": "2016-05-26",
"count": 2
},
{
"date": "2016-05-29",
"count": 3
},
{
"date": "2016-05-30",
"count": 1
},
{
"date": "2016-06-04",
"count": 1
},
{
"date": "2016-06-16",
"count": 1
},
{
"date": "2016-06-19",
"count": 2
},
{
"date": "2016-06-22",
"count": 2
},
{
"date": "2016-06-23",
"count": 1
},
{
"date": "2016-06-24",
"count": 3
},
{
"date": "2016-06-25",
"count": 1
},
{
"date": "2016-06-27",
"count": 2
},
{
"date": "2016-06-28",
"count": 2
},
{
"date": "2016-06-30",
"count": 2
},
{
"date": "2016-07-01",
"count": 1
},
{
"date": "2016-07-04",
"count": 1
},
{
"date": "2016-07-06",
"count": 1
},
{
"date": "2016-07-08",
"count": 1
},
{
"date": "2016-07-09",
"count": 1
},
{
"date": "2016-07-18",
"count": 2
},
{
"date": "2016-07-20",
"count": 1
},
{
"date": "2016-07-24",
"count": 1
},
{
"date": "2016-07-27",
"count": 1
},
{
"date": "2016-08-01",
"count": 1
},
{
"date": "2016-08-04",
"count": 1
},
{
"date": "2016-08-05",
"count": 1
},
{
"date": "2016-08-07",
"count": 1
},
{
"date": "2016-08-09",
"count": 1
},
{
"date": "2016-08-10",
"count": 4
},
{
"date": "2016-08-11",
"count": 2
},
{
"date": "2016-08-12",
"count": 1
},
{
"date": "2016-08-15",
"count": 2
},
{
"date": "2016-08-16",
"count": 1
},
{
"date": "2016-08-21",
"count": 1
},
{
"date": "2016-08-24",
"count": 1
},
{
"date": "2016-08-25",
"count": 1
},
{
"date": "2016-08-26",
"count": 2
},
{
"date": "2016-08-28",
"count": 1
},
{
"date": "2016-09-01",
"count": 1
},
{
"date": "2016-09-02",
"count": 1
},
{
"date": "2016-09-05",
"count": 1
},
{
"date": "2016-09-06",
"count": 2
},
{
"date": "2016-09-09",
"count": 1
},
{
"date": "2016-09-13",
"count": 1
},
{
"date": "2016-09-14",
"count": 2
},
{
"date": "2016-09-18",
"count": 1
},
{
"date": "2016-09-19",
"count": 2
},
{
"date": "2016-09-22",
"count": 1
},
{
"date": "2016-09-27",
"count": 1
},
{
"date": "2016-09-29",
"count": 1
},
{
"date": "2016-09-30",
"count": 2
},
{
"date": "2016-10-05",
"count": 2
},
{
"date": "2016-10-06",
"count": 2
},
{
"date": "2016-10-09",
"count": 1
},
{
"date": "2016-10-17",
"count": 1
},
{
"date": "2016-10-20",
"count": 1
},
{
"date": "2016-10-23",
"count": 1
},
{
"date": "2016-10-24",
"count": 1
},
{
"date": "2016-11-01",
"count": 1
},
{
"date": "2016-11-07",
"count": 1
},
{
"date": "2016-11-11",
"count": 1
},
{
"date": "2016-11-12",
"count": 1
},
{
"date": "2016-11-17",
"count": 1
},
{
"date": "2016-11-18",
"count": 1
},
{
"date": "2016-11-19",
"count": 1
},
{
"date": "2016-11-23",
"count": 1
},
{
"date": "2016-11-25",
"count": 2
},
{
"date": "2016-11-26",
"count": 1
},
{
"date": "2016-11-28",
"count": 1
},
{
"date": "2016-12-01",
"count": 2
},
{
"date": "2016-12-06",
"count": 1
},
{
"date": "2016-12-07",
"count": 1
},
{
"date": "2016-12-08",
"count": 1
},
{
"date": "2016-12-09",
"count": 1
},
{
"date": "2016-12-10",
"count": 1
},
{
"date": "2016-12-14",
"count": 2
},
{
"date": "2016-12-17",
"count": 1
},
{
"date": "2016-12-19",
"count": 1
},
{
"date": "2016-12-27",
"count": 1
},
{
"date": "2016-12-29",
"count": 1
},
{
"date": "2017-01-01",
"count": 1
},
{
"date": "2017-01-03",
"count": 1
},
{
"date": "2017-01-05",
"count": 2
},
{
"date": "2017-01-09",
"count": 1
},
{
"date": "2017-01-12",
"count": 1
},
{
"date": "2017-01-13",
"count": 2
},
{
"date": "2017-01-14",
"count": 2
},
{
"date": "2017-01-16",
"count": 4
},
{
"date": "2017-01-17",
"count": 2
},
{
"date": "2017-01-19",
"count": 1
},
{
"date": "2017-01-21",
"count": 1
},
{
"date": "2017-01-27",
"count": 1
},
{
"date": "2017-01-28",
"count": 1
},
{
"date": "2017-01-29",
"count": 1
},
{
"date": "2017-01-31",
"count": 2
},
{
"date": "2017-02-04",
"count": 2
},
{
"date": "2017-02-09",
"count": 1
},
{
"date": "2017-02-12",
"count": 2
},
{
"date": "2017-02-15",
"count": 1
},
{
"date": "2017-02-19",
"count": 2
},
{
"date": "2017-02-20",
"count": 1
},
{
"date": "2017-02-24",
"count": 1
},
{
"date": "2017-02-26",
"count": 1
},
{
"date": "2017-02-28",
"count": 1
},
{
"date": "2017-03-01",
"count": 1
},
{
"date": "2017-03-02",
"count": 1
},
{
"date": "2017-03-06",
"count": 1
},
{
"date": "2017-03-10",
"count": 1
},
{
"date": "2017-03-11",
"count": 1
},
{
"date": "2017-03-12",
"count": 2
},
{
"date": "2017-03-13",
"count": 1
},
{
"date": "2017-03-15",
"count": 1
},
{
"date": "2017-03-17",
"count": 1
},
{
"date": "2017-03-18",
"count": 1
},
{
"date": "2017-03-19",
"count": 1
},
{
"date": "2017-03-22",
"count": 2
},
{
"date": "2017-03-30",
"count": 1
},
{
"date": "2017-04-03",
"count": 1
},
{
"date": "2017-04-06",
"count": 1
},
{
"date": "2017-04-13",
"count": 1
},
{
"date": "2017-04-14",
"count": 1
},
{
"date": "2017-04-15",
"count": 1
},
{
"date": "2017-04-18",
"count": 3
},
{
"date": "2017-04-19",
"count": 2
},
{
"date": "2017-04-20",
"count": 1
},
{
"date": "2017-04-22",
"count": 1
},
{
"date": "2017-04-23",
"count": 2
},
{
"date": "2017-04-25",
"count": 1
},
{
"date": "2017-04-28",
"count": 3
},
{
"date": "2017-04-30",
"count": 1
},
{
"date": "2017-05-04",
"count": 1
},
{
"date": "2017-05-08",
"count": 2
},
{
"date": "2017-05-17",
"count": 2
},
{
"date": "2017-05-21",
"count": 1
},
{
"date": "2017-05-22",
"count": 2
},
{
"date": "2017-05-23",
"count": 2
},
{
"date": "2017-05-24",
"count": 1
},
{
"date": "2017-05-25",
"count": 1
},
{
"date": "2017-06-06",
"count": 1
},
{
"date": "2017-06-10",
"count": 1
},
{
"date": "2017-06-15",
"count": 2
},
{
"date": "2017-06-19",
"count": 1
},
{
"date": "2017-06-20",
"count": 1
},
{
"date": "2017-06-22",
"count": 1
},
{
"date": "2017-06-23",
"count": 4
},
{
"date": "2017-06-25",
"count": 1
},
{
"date": "2017-06-26",
"count": 1
},
{
"date": "2017-06-28",
"count": 1
},
{
"date": "2017-06-30",
"count": 2
},
{
"date": "2017-07-07",
"count": 1
},
{
"date": "2017-07-08",
"count": 1
},
{
"date": "2017-07-09",
"count": 1
},
{
"date": "2017-07-12",
"count": 1
},
{
"date": "2017-07-15",
"count": 1
},
{
"date": "2017-07-20",
"count": 1
},
{
"date": "2017-07-24",
"count": 1
},
{
"date": "2017-07-27",
"count": 1
},
{
"date": "2017-07-28",
"count": 1
},
{
"date": "2017-07-30",
"count": 1
},
{
"date": "2017-07-31",
"count": 1
},
{
"date": "2017-08-01",
"count": 1
},
{
"date": "2017-08-03",
"count": 1
},
{
"date": "2017-08-04",
"count": 1
},
{
"date": "2017-08-07",
"count": 1
},
{
"date": "2017-08-09",
"count": 1
},
{
"date": "2017-08-14",
"count": 1
},
{
"date": "2017-08-16",
"count": 2
},
{
"date": "2017-08-20",
"count": 1
},
{
"date": "2017-08-26",
"count": 1
},
{
"date": "2017-08-27",
"count": 2
},
{
"date": "2017-08-30",
"count": 1
},
{
"date": "2017-09-08",
"count": 1
},
{
"date": "2017-09-10",
"count": 1
},
{
"date": "2017-09-13",
"count": 1
},
{
"date": "2017-09-14",
"count": 2
},
{
"date": "2017-09-19",
"count": 1
},
{
"date": "2017-09-20",
"count": 1
},
{
"date": "2017-09-22",
"count": 2
},
{
"date": "2017-09-25",
"count": 1
},
{
"date": "2017-09-26",
"count": 2
},
{
"date": "2017-10-06",
"count": 1
},
{
"date": "2017-10-12",
"count": 1
},
{
"date": "2017-10-15",
"count": 1
},
{
"date": "2017-10-17",
"count": 1
},
{
"date": "2017-10-25",
"count": 1
},
{
"date": "2017-11-05",
"count": 1
},
{
"date": "2017-11-07",
"count": 1
},
{
"date": "2017-11-11",
"count": 1
},
{
"date": "2017-11-16",
"count": 1
},
{
"date": "2017-11-19",
"count": 1
},
{
"date": "2017-11-25",
"count": 1
},
{
"date": "2017-11-26",
"count": 1
},
{
"date": "2017-12-03",
"count": 1
},
{
"date": "2017-12-07",
"count": 1
},
{
"date": "2017-12-09",
"count": 1
},
{
"date": "2017-12-13",
"count": 1
},
{
"date": "2017-12-16",
"count": 1
},
{
"date": "2017-12-17",
"count": 1
},
{
"date": "2017-12-18",
"count": 1
},
{
"date": "2017-12-20",
"count": 1
},
{
"date": "2018-01-01",
"count": 1
},
{
"date": "2018-01-04",
"count": 2
},
{
"date": "2018-01-06",
"count": 1
},
{
"date": "2018-01-07",
"count": 1
},
{
"date": "2018-01-12",
"count": 1
},
{
"date": "2018-01-16",
"count": 2
},
{
"date": "2018-01-22",
"count": 1
},
{
"date": "2018-01-24",
"count": 1
},
{
"date": "2018-01-25",
"count": 1
},
{
"date": "2018-01-27",
"count": 2
},
{
"date": "2018-01-30",
"count": 2
},
{
"date": "2018-01-31",
"count": 2
},
{
"date": "2018-02-05",
"count": 1
},
{
"date": "2018-02-12",
"count": 1
},
{
"date": "2018-02-20",
"count": 1
},
{
"date": "2018-02-22",
"count": 2
},
{
"date": "2018-02-24",
"count": 1
},
{
"date": "2018-02-25",
"count": 2
},
{
"date": "2018-03-03",
"count": 1
},
{
"date": "2018-03-05",
"count": 1
},
{
"date": "2018-03-07",
"count": 1
},
{
"date": "2018-03-14",
"count": 1
},
{
"date": "2018-03-17",
"count": 2
},
{
"date": "2018-03-18",
"count": 1
},
{
"date": "2018-03-19",
"count": 1
},
{
"date": "2018-03-22",
"count": 1
},
{
"date": "2018-03-23",
"count": 1
},
{
"date": "2018-03-28",
"count": 1
},
{
"date": "2018-04-02",
"count": 1
},
{
"date": "2018-04-03",
"count": 1
},
{
"date": "2018-04-04",
"count": 2
},
{
"date": "2018-04-11",
"count": 2
},
{
"date": "2018-04-14",
"count": 1
},
{
"date": "2018-04-22",
"count": 1
},
{
"date": "2018-04-24",
"count": 1
},
{
"date": "2018-04-28",
"count": 1
},
{
"date": "2018-05-02",
"count": 1
},
{
"date": "2018-05-08",
"count": 1
},
{
"date": "2018-05-10",
"count": 1
},
{
"date": "2018-05-19",
"count": 1
},
{
"date": "2018-05-23",
"count": 1
},
{
"date": "2018-05-27",
"count": 1
},
{
"date": "2018-05-28",
"count": 1
},
{
"date": "2018-05-30",
"count": 1
},
{
"date": "2018-06-06",
"count": 1
},
{
"date": "2018-06-10",
"count": 1
},
{
"date": "2018-06-12",
"count": 2
},
{
"date": "2018-06-14",
"count": 1
},
{
"date": "2018-06-19",
"count": 2
},
{
"date": "2018-06-20",
"count": 1
},
{
"date": "2018-06-21",
"count": 1
},
{
"date": "2018-06-24",
"count": 1
},
{
"date": "2018-07-05",
"count": 1
},
{
"date": "2018-07-06",
"count": 1
},
{
"date": "2018-07-09",
"count": 1
},
{
"date": "2018-07-23",
"count": 2
},
{
"date": "2018-07-24",
"count": 3
},
{
"date": "2018-07-25",
"count": 1
},
{
"date": "2018-08-01",
"count": 4
},
{
"date": "2018-08-09",
"count": 1
},
{
"date": "2018-08-10",
"count": 1
},
{
"date": "2018-08-15",
"count": 1
},
{
"date": "2018-08-16",
"count": 1
},
{
"date": "2018-08-18",
"count": 1
},
{
"date": "2018-08-20",
"count": 1
},
{
"date": "2018-08-29",
"count": 1
},
{
"date": "2018-08-30",
"count": 1
},
{
"date": "2018-09-04",
"count": 1
},
{
"date": "2018-09-11",
"count": 1
},
{
"date": "2018-09-14",
"count": 1
},
{
"date": "2018-09-24",
"count": 1
},
{
"date": "2018-09-29",
"count": 1
},
{
"date": "2018-10-04",
"count": 1
},
{
"date": "2018-10-09",
"count": 1
},
{
"date": "2018-10-11",
"count": 1
},
{
"date": "2018-10-16",
"count": 1
},
{
"date": "2018-10-17",
"count": 2
},
{
"date": "2018-10-25",
"count": 1
},
{
"date": "2018-11-17",
"count": 1
},
{
"date": "2018-12-03",
"count": 1
},
{
"date": "2018-12-13",
"count": 1
},
{
"date": "2018-12-14",
"count": 1
},
{
"date": "2018-12-22",
"count": 1
},
{
"date": "2019-01-02",
"count": 1
},
{
"date": "2019-01-04",
"count": 1
},
{
"date": "2019-01-08",
"count": 1
},
{
"date": "2019-01-09",
"count": 2
},
{
"date": "2019-01-15",
"count": 2
},
{
"date": "2019-01-16",
"count": 1
},
{
"date": "2019-02-05",
"count": 1
},
{
"date": "2019-02-06",
"count": 1
},
{
"date": "2019-02-11",
"count": 1
},
{
"date": "2019-02-12",
"count": 1
},
{
"date": "2019-02-14",
"count": 2
},
{
"date": "2019-02-15",
"count": 2
},
{
"date": "2019-02-18",
"count": 1
},
{
"date": "2019-02-22",
"count": 1
},
{
"date": "2019-02-28",
"count": 1
},
{
"date": "2019-03-06",
"count": 1
},
{
"date": "2019-03-08",
"count": 1
},
{
"date": "2019-03-12",
"count": 1
},
{
"date": "2019-03-13",
"count": 1
},
{
"date": "2019-03-14",
"count": 1
},
{
"date": "2019-03-19",
"count": 1
},
{
"date": "2019-03-22",
"count": 1
},
{
"date": "2019-03-24",
"count": 1
},
{
"date": "2019-03-28",
"count": 1
},
{
"date": "2019-04-05",
"count": 1
},
{
"date": "2019-04-10",
"count": 1
},
{
"date": "2019-04-17",
"count": 1
},
{
"date": "2019-04-21",
"count": 1
},
{
"date": "2019-04-25",
"count": 1
},
{
"date": "2019-04-28",
"count": 1
},
{
"date": "2019-05-03",
"count": 1
},
{
"date": "2019-05-11",
"count": 1
},
{
"date": "2019-05-13",
"count": 1
},
{
"date": "2019-05-14",
"count": 1
},
{
"date": "2019-05-18",
"count": 1
},
{
"date": "2019-05-19",
"count": 1
},
{
"date": "2019-05-24",
"count": 1
},
{
"date": "2019-05-25",
"count": 1
},
{
"date": "2019-05-29",
"count": 1
},
{
"date": "2019-06-03",
"count": 1
},
{
"date": "2019-06-10",
"count": 2
},
{
"date": "2019-06-13",
"count": 1
},
{
"date": "2019-06-21",
"count": 3
},
{
"date": "2019-07-02",
"count": 1
},
{
"date": "2019-07-07",
"count": 1
},
{
"date": "2019-07-08",
"count": 1
},
{
"date": "2019-07-13",
"count": 3
},
{
"date": "2019-07-19",
"count": 1
},
{
"date": "2019-07-20",
"count": 1
},
{
"date": "2019-07-22",
"count": 1
},
{
"date": "2019-07-24",
"count": 1
},
{
"date": "2019-07-25",
"count": 1
},
{
"date": "2019-07-27",
"count": 1
},
{
"date": "2019-07-31",
"count": 1
},
{
"date": "2019-08-01",
"count": 1
},
{
"date": "2019-08-04",
"count": 1
},
{
"date": "2019-08-06",
"count": 1
},
{
"date": "2019-08-07",
"count": 2
},
{
"date": "2019-08-10",
"count": 1
},
{
"date": "2019-08-12",
"count": 1
},
{
"date": "2019-08-15",
"count": 1
},
{
"date": "2019-08-17",
"count": 1
},
{
"date": "2019-08-19",
"count": 1
},
{
"date": "2019-08-27",
"count": 2
},
{
"date": "2019-08-29",
"count": 1
},
{
"date": "2019-09-05",
"count": 1
},
{
"date": "2019-09-08",
"count": 1
},
{
"date": "2019-09-10",
"count": 1
},
{
"date": "2019-09-26",
"count": 1
},
{
"date": "2019-10-03",
"count": 1
},
{
"date": "2019-10-07",
"count": 2
},
{
"date": "2019-10-09",
"count": 1
},
{
"date": "2019-10-12",
"count": 1
},
{
"date": "2019-10-13",
"count": 1
},
{
"date": "2019-10-14",
"count": 1
},
{
"date": "2019-10-17",
"count": 1
},
{
"date": "2019-10-25",
"count": 1
},
{
"date": "2019-11-04",
"count": 1
},
{
"date": "2019-11-05",
"count": 1
},
{
"date": "2019-11-06",
"count": 1
},
{
"date": "2019-11-08",
"count": 1
},
{
"date": "2019-11-12",
"count": 1
},
{
"date": "2019-11-13",
"count": 1
},
{
"date": "2019-11-20",
"count": 1
},
{
"date": "2019-11-23",
"count": 1
},
{
"date": "2019-11-29",
"count": 1
},
{
"date": "2019-12-02",
"count": 1
},
{
"date": "2019-12-19",
"count": 2
},
{
"date": "2019-12-23",
"count": 1
},
{
"date": "2019-12-26",
"count": 1
},
{
"date": "2019-12-29",
"count": 1
},
{
"date": "2020-01-04",
"count": 1
},
{
"date": "2020-01-05",
"count": 1
},
{
"date": "2020-01-08",
"count": 1
},
{
"date": "2020-01-19",
"count": 1
},
{
"date": "2020-01-30",
"count": 1
},
{
"date": "2020-02-24",
"count": 1
},
{
"date": "2020-02-26",
"count": 1
},
{
"date": "2020-02-27",
"count": 1
},
{
"date": "2020-03-03",
"count": 1
},
{
"date": "2020-03-15",
"count": 1
},
{
"date": "2020-04-01",
"count": 2
},
{
"date": "2020-04-02",
"count": 1
},
{
"date": "2020-04-11",
"count": 1
},
{
"date": "2020-04-13",
"count": 1
},
{
"date": "2020-04-18",
"count": 1
},
{
"date": "2020-05-01",
"count": 1
},
{
"date": "2020-05-06",
"count": 1
},
{
"date": "2020-05-10",
"count": 1
},
{
"date": "2020-05-19",
"count": 1
},
{
"date": "2020-05-20",
"count": 1
},
{
"date": "2020-05-27",
"count": 1
},
{
"date": "2020-05-28",
"count": 1
},
{
"date": "2020-06-02",
"count": 1
},
{
"date": "2020-06-04",
"count": 1
},
{
"date": "2020-06-30",
"count": 1
},
{
"date": "2020-07-04",
"count": 1
},
{
"date": "2020-07-07",
"count": 1
},
{
"date": "2020-07-16",
"count": 1
},
{
"date": "2020-07-19",
"count": 1
},
{
"date": "2020-08-03",
"count": 1
},
{
"date": "2020-08-04",
"count": 1
},
{
"date": "2020-08-06",
"count": 2
},
{
"date": "2020-08-09",
"count": 1
},
{
"date": "2020-08-14",
"count": 1
},
{
"date": "2020-08-18",
"count": 1
},
{
"date": "2020-09-17",
"count": 2
},
{
"date": "2020-09-20",
"count": 1
},
{
"date": "2020-10-17",
"count": 1
},
{
"date": "2020-10-19",
"count": 1
},
{
"date": "2020-10-21",
"count": 1
},
{
"date": "2020-11-02",
"count": 1
},
{
"date": "2020-11-05",
"count": 2
},
{
"date": "2020-11-16",
"count": 1
},
{
"date": "2020-11-20",
"count": 1
},
{
"date": "2020-11-25",
"count": 1
},
{
"date": "2020-11-30",
"count": 1
},
{
"date": "2020-12-05",
"count": 1
},
{
"date": "2020-12-15",
"count": 1
},
{
"date": "2020-12-20",
"count": 1
},
{
"date": "2020-12-24",
"count": 2
},
{
"date": "2020-12-25",
"count": 1
},
{
"date": "2020-12-30",
"count": 1
},
{
"date": "2021-01-04",
"count": 1
},
{
"date": "2021-01-05",
"count": 2
},
{
"date": "2021-01-06",
"count": 1
},
{
"date": "2021-01-07",
"count": 1
},
{
"date": "2021-01-08",
"count": 1
},
{
"date": "2021-01-15",
"count": 1
},
{
"date": "2021-01-20",
"count": 1
},
{
"date": "2021-01-25",
"count": 1
},
{
"date": "2021-02-04",
"count": 1
},
{
"date": "2021-02-11",
"count": 1
},
{
"date": "2021-02-18",
"count": 2
},
{
"date": "2021-02-25",
"count": 1
},
{
"date": "2021-02-27",
"count": 1
},
{
"date": "2021-03-12",
"count": 2
},
{
"date": "2021-03-14",
"count": 1
},
{
"date": "2021-03-19",
"count": 1
},
{
"date": "2021-03-20",
"count": 1
},
{
"date": "2021-03-21",
"count": 1
},
{
"date": "2021-03-24",
"count": 1
},
{
"date": "2021-03-25",
"count": 1
},
{
"date": "2021-03-28",
"count": 1
},
{
"date": "2021-04-01",
"count": 2
},
{
"date": "2021-04-03",
"count": 1
},
{
"date": "2021-04-07",
"count": 1
},
{
"date": "2021-04-08",
"count": 1
},
{
"date": "2021-04-15",
"count": 1
},
{
"date": "2021-04-29",
"count": 1
},
{
"date": "2021-05-04",
"count": 1
},
{
"date": "2021-05-08",
"count": 1
},
{
"date": "2021-05-29",
"count": 1
},
{
"date": "2021-06-03",
"count": 1
},
{
"date": "2021-06-17",
"count": 1
},
{
"date": "2021-07-03",
"count": 1
},
{
"date": "2021-07-07",
"count": 1
},
{
"date": "2021-07-26",
"count": 1
},
{
"date": "2021-07-27",
"count": 2
},
{
"date": "2021-07-31",
"count": 1
},
{
"date": "2021-08-01",
"count": 1
},
{
"date": "2021-08-02",
"count": 1
},
{
"date": "2021-08-09",
"count": 1
},
{
"date": "2021-08-10",
"count": 2
},
{
"date": "2021-08-16",
"count": 1
},
{
"date": "2021-09-02",
"count": 1
},
{
"date": "2021-09-08",
"count": 1
},
{
"date": "2021-09-28",
"count": 1
},
{
"date": "2021-10-06",
"count": 1
},
{
"date": "2021-10-12",
"count": 1
},
{
"date": "2021-10-14",
"count": 1
},
{
"date": "2021-10-19",
"count": 1
},
{
"date": "2021-10-20",
"count": 1
},
{
"date": "2021-10-24",
"count": 1
},
{
"date": "2021-10-28",
"count": 1
},
{
"date": "2021-11-01",
"count": 1
},
{
"date": "2021-11-04",
"count": 1
},
{
"date": "2021-11-06",
"count": 1
},
{
"date": "2021-11-08",
"count": 1
},
{
"date": "2021-11-22",
"count": 1
},
{
"date": "2021-11-24",
"count": 1
},
{
"date": "2021-11-28",
"count": 1
},
{
"date": "2021-11-29",
"count": 1
},
{
"date": "2021-11-30",
"count": 1
},
{
"date": "2021-12-03",
"count": 1
},
{
"date": "2021-12-05",
"count": 1
},
{
"date": "2021-12-07",
"count": 1
},
{
"date": "2021-12-08",
"count": 1
},
{
"date": "2021-12-10",
"count": 1
},
{
"date": "2021-12-11",
"count": 1
},
{
"date": "2021-12-12",
"count": 1
},
{
"date": "2021-12-13",
"count": 1
},
{
"date": "2021-12-14",
"count": 2
},
{
"date": "2022-01-10",
"count": 1
},
{
"date": "2022-01-12",
"count": 1
},
{
"date": "2022-01-13",
"count": 1
},
{
"date": "2022-01-18",
"count": 1
},
{
"date": "2022-01-20",
"count": 1
},
{
"date": "2022-01-28",
"count": 1
},
{
"date": "2022-01-31",
"count": 1
},
{
"date": "2022-02-09",
"count": 1
},
{
"date": "2022-02-11",
"count": 1
},
{
"date": "2022-02-23",
"count": 1
},
{
"date": "2022-02-28",
"count": 2
},
{
"date": "2022-03-04",
"count": 1
},
{
"date": "2022-03-06",
"count": 1
},
{
"date": "2022-03-10",
"count": 1
},
{
"date": "2022-03-11",
"count": 1
},
{
"date": "2022-03-13",
"count": 1
},
{
"date": "2022-03-16",
"count": 2
},
{
"date": "2022-03-20",
"count": 1
},
{
"date": "2022-03-23",
"count": 1
},
{
"date": "2022-03-28",
"count": 4
},
{
"date": "2022-03-29",
"count": 1
},
{
"date": "2022-03-30",
"count": 1
},
{
"date": "2022-04-01",
"count": 1
},
{
"date": "2022-04-05",
"count": 1
},
{
"date": "2022-04-06",
"count": 1
},
{
"date": "2022-04-19",
"count": 2
},
{
"date": "2022-04-21",
"count": 3
},
{
"date": "2022-05-01",
"count": 1
},
{
"date": "2022-05-02",
"count": 1
},
{
"date": "2022-05-05",
"count": 2
},
{
"date": "2022-05-10",
"count": 1
},
{
"date": "2022-05-13",
"count": 1
},
{
"date": "2022-05-21",
"count": 1
},
{
"date": "2022-06-02",
"count": 1
},
{
"date": "2022-06-25",
"count": 1
},
{
"date": "2022-07-09",
"count": 1
},
{
"date": "2022-07-21",
"count": 1
},
{
"date": "2022-08-07",
"count": 1
},
{
"date": "2022-08-08",
"count": 1
},
{
"date": "2022-08-30",
"count": 1
},
{
"date": "2022-09-12",
"count": 1
},
{
"date": "2022-09-22",
"count": 1
},
{
"date": "2022-09-27",
"count": 1
},
{
"date": "2022-10-04",
"count": 1
},
{
"date": "2022-10-10",
"count": 1
},
{
"date": "2022-10-29",
"count": 1
},
{
"date": "2022-11-01",
"count": 1
},
{
"date": "2022-11-17",
"count": 1
},
{
"date": "2022-11-19",
"count": 1
},
{
"date": "2022-12-05",
"count": 1
},
{
"date": "2022-12-28",
"count": 1
},
{
"date": "2022-12-31",
"count": 1
},
{
"date": "2023-01-27",
"count": 1
},
{
"date": "2023-01-31",
"count": 1
},
{
"date": "2023-02-02",
"count": 1
},
{
"date": "2023-02-04",
"count": 2
},
{
"date": "2023-02-06",
"count": 2
},
{
"date": "2023-02-07",
"count": 1
},
{
"date": "2023-02-09",
"count": 1
},
{
"date": "2023-02-11",
"count": 2
},
{
"date": "2023-02-18",
"count": 1
},
{
"date": "2023-03-01",
"count": 1
},
{
"date": "2023-03-09",
"count": 2
},
{
"date": "2023-03-12",
"count": 1
},
{
"date": "2023-03-21",
"count": 1
},
{
"date": "2023-03-22",
"count": 1
},
{
"date": "2023-03-29",
"count": 1
},
{
"date": "2023-04-30",
"count": 1
},
{
"date": "2023-05-06",
"count": 1
},
{
"date": "2023-05-23",
"count": 1
},
{
"date": "2023-05-31",
"count": 1
},
{
"date": "2023-06-01",
"count": 1
},
{
"date": "2023-06-07",
"count": 1
},
{
"date": "2023-06-18",
"count": 1
},
{
"date": "2023-06-19",
"count": 1
},
{
"date": "2023-06-20",
"count": 1
},
{
"date": "2023-06-23",
"count": 1
},
{
"date": "2023-07-07",
"count": 1
},
{
"date": "2023-07-14",
"count": 1
},
{
"date": "2023-07-15",
"count": 1
},
{
"date": "2023-08-03",
"count": 1
},
{
"date": "2023-08-14",
"count": 1
},
{
"date": "2023-08-17",
"count": 1
},
{
"date": "2023-08-24",
"count": 1
},
{
"date": "2023-10-01",
"count": 1
},
{
"date": "2023-10-11",
"count": 1
},
{
"date": "2023-10-12",
"count": 1
},
{
"date": "2023-10-14",
"count": 1
},
{
"date": "2023-10-16",
"count": 2
},
{
"date": "2023-10-29",
"count": 1
},
{
"date": "2023-11-03",
"count": 1
},
{
"date": "2023-11-10",
"count": 1
},
{
"date": "2023-11-14",
"count": 1
},
{
"date": "2023-11-16",
"count": 1
},
{
"date": "2024-01-10",
"count": 1
},
{
"date": "2024-01-11",
"count": 1
},
{
"date": "2024-01-12",
"count": 1
},
{
"date": "2024-01-22",
"count": 1
},
{
"date": "2024-01-28",
"count": 1
},
{
"date": "2024-01-29",
"count": 1
},
{
"date": "2024-02-06",
"count": 1
},
{
"date": "2024-02-19",
"count": 1
},
{
"date": "2024-02-22",
"count": 1
},
{
"date": "2024-02-23",
"count": 1
},
{
"date": "2024-03-13",
"count": 1
},
{
"date": "2024-03-21",
"count": 1
},
{
"date": "2024-03-25",
"count": 1
},
{
"date": "2024-03-30",
"count": 2
},
{
"date": "2024-04-01",
"count": 1
},
{
"date": "2024-04-23",
"count": 1
},
{
"date": "2024-05-01",
"count": 1
},
{
"date": "2024-05-04",
"count": 2
},
{
"date": "2024-05-05",
"count": 1
},
{
"date": "2024-05-25",
"count": 1
},
{
"date": "2024-06-15",
"count": 1
},
{
"date": "2024-06-20",
"count": 1
},
{
"date": "2024-07-01",
"count": 2
},
{
"date": "2024-07-04",
"count": 1
},
{
"date": "2024-07-08",
"count": 1
},
{
"date": "2024-07-12",
"count": 1
},
{
"date": "2024-07-21",
"count": 1
},
{
"date": "2024-08-02",
"count": 1
},
{
"date": "2024-08-16",
"count": 1
},
{
"date": "2024-09-06",
"count": 1
},
{
"date": "2024-09-09",
"count": 1
},
{
"date": "2024-09-12",
"count": 4
},
{
"date": "2024-09-13",
"count": 1
},
{
"date": "2024-09-16",
"count": 1
},
{
"date": "2024-09-27",
"count": 1
},
{
"date": "2024-09-29",
"count": 1
},
{
"date": "2024-10-21",
"count": 2
},
{
"date": "2024-10-22",
"count": 1
},
{
"date": "2024-10-26",
"count": 1
},
{
"date": "2024-10-29",
"count": 1
},
{
"date": "2024-11-01",
"count": 1
},
{
"date": "2024-11-08",
"count": 1
},
{
"date": "2024-12-20",
"count": 1
},
{
"date": "2025-01-05",
"count": 1
},
{
"date": "2025-01-19",
"count": 1
},
{
"date": "2025-01-22",
"count": 1
},
{
"date": "2025-01-27",
"count": 1
},
{
"date": "2025-03-12",
"count": 1
},
{
"date": "2025-03-16",
"count": 1
},
{
"date": "2025-04-04",
"count": 1
},
{
"date": "2025-04-06",
"count": 1
},
{
"date": "2025-04-22",
"count": 1
},
{
"date": "2025-05-20",
"count": 1
},
{
"date": "2025-08-24",
"count": 1
},
{
"date": "2025-09-07",
"count": 1
},
{
"date": "2025-09-25",
"count": 1
},
{
"date": "2025-09-30",
"count": 1
},
{
"date": "2025-10-26",
"count": 1
},
{
"date": "2025-11-18",
"count": 1
},
{
"date": "2025-11-25",
"count": 1
},
{
"date": "2025-12-03",
"count": 1
},
{
"date": "2025-12-16",
"count": 1
},
{
"date": "2025-12-20",
"count": 1
},
{
"date": "2026-01-01",
"count": 1
},
{
"date": "2026-05-23",
"count": 1
},
{
"date": "2026-05-24",
"count": 1
},
{
"date": "2026-05-25",
"count": 7
},
{
"date": "2026-05-26",
"count": 1
},
{
"date": "2026-05-30",
"count": 1
}
],
"complete": false,
"collected": 1000,
"total_stars": 2056
},
"open_issues_and_prs": 7
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [],
"largest_source_bytes": 26444,
"source_files_sampled": 19,
"oversized_source_files": 0,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"Gemfile"
],
"advisories": {
"error": null,
"scope": "repository_graph",
"source": "osv",
"findings": [
{
"name": "rack-session",
"direct": false,
"version": "2.1.1",
"severity": "critical",
"ecosystem": "rubygems",
"cvss_score": 9.1,
"advisory_ids": [
"GHSA-33qg-7wpp-89cq"
],
"fixed_version": "2.1.2",
"advisory_count": 1,
"oldest_advisory_days": 105
},
{
"name": "concurrent-ruby",
"direct": false,
"version": "1.3.6",
"severity": "high",
"ecosystem": "rubygems",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-6wx8-w4f5-wwcr",
"GHSA-h8w8-99g7-qmvj",
"GHSA-wv3x-4vxv-whpp"
],
"fixed_version": "1.3.7",
"advisory_count": 3,
"oldest_advisory_days": 32
},
{
"name": "erb",
"direct": false,
"version": "6.0.2",
"severity": "high",
"ecosystem": "rubygems",
"cvss_score": 8.1,
"advisory_ids": [
"GHSA-q339-8rmv-2mhv"
],
"fixed_version": "6.0.4",
"advisory_count": 1,
"oldest_advisory_days": 88
},
{
"name": "nokogiri",
"direct": false,
"version": "1.19.2",
"severity": "high",
"ecosystem": "rubygems",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-5prr-v3j2-97mh",
"GHSA-5v8h-3h3q-446p",
"GHSA-8678-w3jw-xfc2",
"GHSA-9cv2-cfxc-v4v2",
"GHSA-c4rq-3m3g-8wgx",
"GHSA-p67v-3w7g-wjg7",
"GHSA-phwj-rprq-35pp",
"GHSA-v2fc-qm4h-8hqv",
"GHSA-wfpw-mmfh-qq69",
"GHSA-wjv4-x9w8-wm3h"
],
"fixed_version": "1.19.4",
"advisory_count": 10,
"oldest_advisory_days": 76
},
{
"name": "rack",
"direct": false,
"version": "3.2.5",
"severity": "high",
"ecosystem": "rubygems",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-7mqq-6cf9-v2qp",
"GHSA-8vqr-qjwx-82mw",
"GHSA-g2pf-xv49-m2h5",
"GHSA-h2jq-g4cq-5ppq",
"GHSA-q2ww-5357-x388",
"GHSA-q4qf-9j86-f5mh",
"GHSA-qfgr-crr9-7r49",
"GHSA-qv7j-4883-hwh7",
"GHSA-rx22-g9mx-qrhv",
"GHSA-v569-hp3g-36wr"
],
"fixed_version": "3.2.6",
"advisory_count": 13,
"oldest_advisory_days": 110
},
{
"name": "loofah",
"direct": false,
"version": "2.25.1",
"severity": "moderate",
"ecosystem": "rubygems",
"cvss_score": 4.7,
"advisory_ids": [
"GHSA-5qhf-9phg-95m2",
"GHSA-8whx-365g-h9vv",
"GHSA-9wjq-cp2p-hrgf"
],
"fixed_version": "2.25.2",
"advisory_count": 3,
"oldest_advisory_days": 0
},
{
"name": "rails-html-sanitizer",
"direct": false,
"version": "1.7.0",
"severity": "low",
"ecosystem": "rubygems",
"cvss_score": 0,
"advisory_ids": [
"GHSA-cj75-f6xr-r4g7"
],
"fixed_version": "1.7.1",
"advisory_count": 1,
"oldest_advisory_days": 0
}
],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {
"low": 1,
"high": 4,
"critical": 1,
"moderate": 1
},
"advisory_count": 32,
"affected_count": 7,
"assessed_count": 62,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 6,
"direct_affected_count": 0
},
"ecosystems": [
"rubygems"
],
"dependencies": [
{
"name": "activemodel",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": "~> 8.1.0"
},
{
"name": "railties",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": "~> 8.1.0"
},
{
"name": "rubocop",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "rubocop-performance",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "activemodel",
"direct": true,
"version": "8.1.3",
"ecosystem": "rubygems"
},
{
"name": "railties",
"direct": true,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "railties",
"direct": true,
"version": "8.1.3",
"ecosystem": "rubygems"
},
{
"name": "rubocop",
"direct": true,
"version": "1.86.0",
"ecosystem": "rubygems"
},
{
"name": "rubocop-performance",
"direct": true,
"version": "1.26.1",
"ecosystem": "rubygems"
},
{
"name": "actionpack",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "actionpack",
"direct": false,
"version": "8.1.3",
"ecosystem": "rubygems"
},
{
"name": "actionview",
"direct": false,
"version": "8.1.3",
"ecosystem": "rubygems"
},
{
"name": "activesupport",
"direct": false,
"version": "8.1.3",
"ecosystem": "rubygems"
},
{
"name": "ast",
"direct": false,
"version": "2.4.3",
"ecosystem": "rubygems"
},
{
"name": "base64",
"direct": false,
"version": "0.3.0",
"ecosystem": "rubygems"
},
{
"name": "bigdecimal",
"direct": false,
"version": "4.0.1",
"ecosystem": "rubygems"
},
{
"name": "builder",
"direct": false,
"version": "3.3.0",
"ecosystem": "rubygems"
},
{
"name": "concurrent-ruby",
"direct": false,
"version": "1.3.6",
"ecosystem": "rubygems"
},
{
"name": "connection_pool",
"direct": false,
"version": "3.0.2",
"ecosystem": "rubygems"
},
{
"name": "crass",
"direct": false,
"version": "1.0.6",
"ecosystem": "rubygems"
},
{
"name": "date",
"direct": false,
"version": "3.5.1",
"ecosystem": "rubygems"
},
{
"name": "drb",
"direct": false,
"version": "2.2.3",
"ecosystem": "rubygems"
},
{
"name": "erb",
"direct": false,
"version": "6.0.2",
"ecosystem": "rubygems"
},
{
"name": "erubi",
"direct": false,
"version": "1.13.1",
"ecosystem": "rubygems"
},
{
"name": "i18n",
"direct": false,
"version": "1.14.8",
"ecosystem": "rubygems"
},
{
"name": "io-console",
"direct": false,
"version": "0.8.2",
"ecosystem": "rubygems"
},
{
"name": "irb",
"direct": false,
"version": "1.17.0",
"ecosystem": "rubygems"
},
{
"name": "json",
"direct": false,
"version": "2.19.3",
"ecosystem": "rubygems"
},
{
"name": "language_server-protocol",
"direct": false,
"version": "3.17.0.5",
"ecosystem": "rubygems"
},
{
"name": "lint_roller",
"direct": false,
"version": "1.1.0",
"ecosystem": "rubygems"
},
{
"name": "logger",
"direct": false,
"version": "1.7.0",
"ecosystem": "rubygems"
},
{
"name": "loofah",
"direct": false,
"version": "2.25.1",
"ecosystem": "rubygems"
},
{
"name": "mini_portile2",
"direct": false,
"version": "2.8.9",
"ecosystem": "rubygems"
},
{
"name": "minitest",
"direct": false,
"version": "6.0.2",
"ecosystem": "rubygems"
},
{
"name": "mocha",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "mocha",
"direct": false,
"version": "3.1.0",
"ecosystem": "rubygems"
},
{
"name": "nokogiri",
"direct": false,
"version": "1.19.2",
"ecosystem": "rubygems"
},
{
"name": "parallel",
"direct": false,
"version": "1.27.0",
"ecosystem": "rubygems"
},
{
"name": "parser",
"direct": false,
"version": "3.3.11.1",
"ecosystem": "rubygems"
},
{
"name": "pp",
"direct": false,
"version": "0.6.3",
"ecosystem": "rubygems"
},
{
"name": "prettyprint",
"direct": false,
"version": "0.2.0",
"ecosystem": "rubygems"
},
{
"name": "prism",
"direct": false,
"version": "1.9.0",
"ecosystem": "rubygems"
},
{
"name": "psych",
"direct": false,
"version": "5.3.1",
"ecosystem": "rubygems"
},
{
"name": "racc",
"direct": false,
"version": "1.8.1",
"ecosystem": "rubygems"
},
{
"name": "rack",
"direct": false,
"version": "3.2.5",
"ecosystem": "rubygems"
},
{
"name": "rack-session",
"direct": false,
"version": "2.1.1",
"ecosystem": "rubygems"
},
{
"name": "rack-test",
"direct": false,
"version": "2.2.0",
"ecosystem": "rubygems"
},
{
"name": "rackup",
"direct": false,
"version": "2.3.1",
"ecosystem": "rubygems"
},
{
"name": "rails-controller-testing",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "rails-controller-testing",
"direct": false,
"version": "1.0.5",
"ecosystem": "rubygems"
},
{
"name": "rails-dom-testing",
"direct": false,
"version": "2.3.0",
"ecosystem": "rubygems"
},
{
"name": "rails-html-sanitizer",
"direct": false,
"version": "1.7.0",
"ecosystem": "rubygems"
},
{
"name": "rainbow",
"direct": false,
"version": "3.1.1",
"ecosystem": "rubygems"
},
{
"name": "rake",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "rake",
"direct": false,
"version": "13.3.1",
"ecosystem": "rubygems"
},
{
"name": "rdoc",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "rdoc",
"direct": false,
"version": "7.2.0",
"ecosystem": "rubygems"
},
{
"name": "regexp_parser",
"direct": false,
"version": "2.11.3",
"ecosystem": "rubygems"
},
{
"name": "reline",
"direct": false,
"version": "0.6.3",
"ecosystem": "rubygems"
},
{
"name": "rubocop-ast",
"direct": false,
"version": "1.49.1",
"ecosystem": "rubygems"
},
{
"name": "ruby-progressbar",
"direct": false,
"version": "1.13.0",
"ecosystem": "rubygems"
},
{
"name": "ruby2_keywords",
"direct": false,
"version": "0.0.5",
"ecosystem": "rubygems"
},
{
"name": "securerandom",
"direct": false,
"version": "0.4.1",
"ecosystem": "rubygems"
},
{
"name": "stringio",
"direct": false,
"version": "3.2.0",
"ecosystem": "rubygems"
},
{
"name": "thor",
"direct": false,
"version": "1.5.0",
"ecosystem": "rubygems"
},
{
"name": "tsort",
"direct": false,
"version": "0.2.0",
"ecosystem": "rubygems"
},
{
"name": "tzinfo",
"direct": false,
"version": "2.0.6",
"ecosystem": "rubygems"
},
{
"name": "unicode-display_width",
"direct": false,
"version": "3.2.0",
"ecosystem": "rubygems"
},
{
"name": "unicode-emoji",
"direct": false,
"version": "4.2.0",
"ecosystem": "rubygems"
},
{
"name": "uri",
"direct": false,
"version": "1.1.1",
"ecosystem": "rubygems"
},
{
"name": "useragent",
"direct": false,
"version": "0.16.11",
"ecosystem": "rubygems"
},
{
"name": "zeitwerk",
"direct": false,
"version": "2.7.5",
"ecosystem": "rubygems"
}
],
"collected": true,
"truncated": false,
"total_count": 68,
"direct_count": 5,
"indirect_count": 63
}
},
"maintainership": {
"issues": {
"open_prs": 4,
"merged_prs": 86,
"open_issues": 3,
"closed_ratio": 0.979,
"closed_issues": 137,
"closed_unmerged_prs": 25
},
"bus_factor": 3,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "carlosantoniodasilva",
"commits": 110,
"avatar_url": "https://avatars.githubusercontent.com/u/26328?v=4"
},
{
"type": "User",
"login": "josevalim",
"commits": 88,
"avatar_url": "https://avatars.githubusercontent.com/u/9582?v=4"
},
{
"type": "User",
"login": "rafaelfranca",
"commits": 53,
"avatar_url": "https://avatars.githubusercontent.com/u/47848?v=4"
},
{
"type": "User",
"login": "lucasmazza",
"commits": 29,
"avatar_url": "https://avatars.githubusercontent.com/u/80978?v=4"
},
{
"type": "User",
"login": "spectator",
"commits": 14,
"avatar_url": "https://avatars.githubusercontent.com/u/7393?v=4"
},
{
"type": "User",
"login": "nashby",
"commits": 11,
"avatar_url": "https://avatars.githubusercontent.com/u/200500?v=4"
},
{
"type": "User",
"login": "tegon",
"commits": 7,
"avatar_url": "https://avatars.githubusercontent.com/u/3727827?v=4"
},
{
"type": "User",
"login": "fnando",
"commits": 7,
"avatar_url": "https://avatars.githubusercontent.com/u/3009?v=4"
},
{
"type": "User",
"login": "deivid-rodriguez",
"commits": 6,
"avatar_url": "https://avatars.githubusercontent.com/u/2887858?v=4"
},
{
"type": "User",
"login": "mracos",
"commits": 6,
"avatar_url": "https://avatars.githubusercontent.com/u/14015177?v=4"
}
],
"contributors_sampled": 64,
"top_contributor_share": 0.274
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"rubocop.yml",
"test.yml"
],
"has_docs_dir": false,
"linter_configs": [
".rubocop.yml"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"Gemfile.lock"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 0,
"reason": "branch protection not enabled on development/release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 5,
"reason": "2 out of 4 merged PRs checked by a CI test -- score normalized to 5",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 0,
"reason": "Found 2/28 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 38 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": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 0,
"reason": "0 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 0",
"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": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 1,
"reason": "SAST tool is not run on all commits -- score normalized to 1",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not 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": 0,
"reason": "32 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "ba83c8abc48101c164cd4324438e8367ec3c1a83",
"ran_at": "2026-07-22T00:49:19Z",
"aggregate_score": 3.4,
"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-18T19:12:01Z",
"oldest_open_prs": [
{
"number": 245,
"created_at": "2023-05-29T05:57:16Z",
"last_comment_at": "2026-04-06T20:13:08Z",
"last_comment_author": "carlosantoniodasilva"
},
{
"number": 250,
"created_at": "2024-09-24T00:48:34Z",
"last_comment_at": "2026-04-06T20:13:40Z",
"last_comment_author": "carlosantoniodasilva"
},
{
"number": 251,
"created_at": "2025-03-07T05:49:17Z",
"last_comment_at": "2025-03-09T15:47:37Z",
"last_comment_author": "joelzwarrington"
},
{
"number": 256,
"created_at": "2026-07-14T20:52:27Z",
"last_comment_at": null,
"last_comment_author": null
}
],
"last_merged_pr_at": "2026-04-06T20:25:44Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 230,
"created_at": "2021-10-21T10:27:29Z",
"last_comment_at": "2026-01-07T12:15:10Z",
"last_comment_author": "carlosantoniodasilva"
},
{
"number": 244,
"created_at": "2023-05-08T05:09:18Z",
"last_comment_at": "2026-04-29T21:43:46Z",
"last_comment_author": "brendon"
},
{
"number": 253,
"created_at": "2025-08-19T05:04:22Z",
"last_comment_at": "2026-04-06T20:26:59Z",
"last_comment_author": "carlosantoniodasilva"
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/heartcombo/responders",
"host": "github.com",
"name": "responders",
"owner": "heartcombo"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 60,
"inputs": {
"security": 47,
"vitality": 39,
"community": 74,
"governance": 76,
"engineering": 64
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "at_risk",
"name": "Vitality",
"value": 39,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "critical",
"name": "Development activity",
"note": null,
"notes": [],
"value": 29,
"inputs": {
"commits_last_year": 19,
"human_commit_share": 1,
"days_since_last_push": 106,
"active_weeks_last_year": 11
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 106 days ago",
"points": 9.9,
"status": "partial",
"details": [
{
"code": "push_recency",
"params": {
"days": 106
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "11/52 weeks with commits",
"points": 7.6,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 11
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "19 commits in the last year",
"points": 11.7,
"status": "partial",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 19
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "0 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "moderate",
"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": 54,
"inputs": {
"releases_count": 7,
"latest_release_tag": "v3.2.0",
"releases_from_tags": false,
"days_since_latest_release": 284,
"mean_days_between_releases": 733.7
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "7 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 7
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 284 days ago",
"points": 16.2,
"status": "partial",
"details": [
{
"code": "release_recency",
"params": {
"days": 284
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~733.7 days",
"points": 5.4,
"status": "partial",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 733.7
}
}
],
"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": 106,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 106 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 106
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "good",
"name": "Community & Adoption",
"value": 74,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "good",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 80,
"inputs": {
"forks": 160,
"stars": 2056,
"watchers": 28,
"growth_state": "organic",
"growth_factor_pct": 100
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "2,056 stars",
"points": 53.7,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 2056
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "160 forks",
"points": 18.3,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 160
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "28 watchers",
"points": 8,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 28
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "moderate",
"name": "Community health",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": false,
"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 (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "excellent",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 100,
"inputs": {
"packages": [
"responders"
],
"dependents": null,
"ecosystems": "rubygems",
"total_downloads": 325772415,
"monthly_downloads": null
},
"components": [
{
"key": "total_downloads",
"name": "Total downloads",
"detail": "325,772,415 downloads all-time across rubygems",
"points": 80,
"status": "met",
"details": [
{
"code": "downloads_total",
"params": {
"count": 325772415,
"ecosystems": "rubygems"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "not reported by this ecosystem",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_reported_by_this_ecosystem",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "good",
"name": "Sustainability & Governance",
"value": 76,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "good",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 76,
"inputs": {
"bus_factor": 3,
"contributors_sampled": 64,
"top_contributor_share": 0.274
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "3 contributor(s) cover half of all commits",
"points": 36,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 3
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 27% of commits",
"points": 16.3,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 27
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "64 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 64
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 38 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 75,
"inputs": {
"merged_prs": 86,
"open_issues": 3,
"closed_issues": 137,
"issue_closed_ratio": 0.979,
"closed_unmerged_prs": 25
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "98% of issues closed",
"points": 45.8,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 98
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "86/111 decided PRs merged",
"points": 29.6,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 86,
"decided": 111
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 2/28 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 65,
"inputs": {
"followers": 154,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "heartcombo",
"public_repos": 8,
"account_age_days": 2388
},
"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": "154 followers of heartcombo",
"points": 15.7,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 154,
"login": "heartcombo"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "8 public repos, account ~6 yr old",
"points": 18.9,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 8
}
},
{
"code": "account_age_years",
"params": {
"years": 6
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 91,
"inputs": {
"packages": [
"responders"
],
"ecosystems": "rubygems",
"any_deprecated": false,
"min_days_since_publish": 284
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on rubygems",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "rubygems"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 284 days ago",
"points": 26,
"status": "partial",
"details": [
{
"code": "publish_recency",
"params": {
"days": 284
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "49 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 49
}
}
],
"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": "moderate",
"name": "Engineering Quality",
"value": 64,
"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": false,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "2 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 2
}
}
],
"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": ".rubocop.yml",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".rubocop.yml"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "2 out of 4 merged PRs checked by a CI test -- score normalized to 5",
"points": 10,
"status": "partial",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "moderate",
"name": "Documentation",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"topics": [
"ruby",
"rails",
"flash-messages",
"controllers"
],
"has_wiki": false,
"homepage": null,
"has_readme": true,
"has_docs_dir": false,
"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": 0,
"status": "missed",
"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": "4 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 4
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "at_risk",
"name": "Security",
"value": 47,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"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": 34,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 16,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 2,
"scorecard_aggregate": 3.4
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection not enabled on development/release branches",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "2 out of 4 merged PRs checked by a CI test -- score normalized to 5",
"points": 1.2,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 2/28 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 38 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": "no update tool detected",
"points": 0,
"status": "missed",
"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": "0 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 1",
"points": 0.5,
"status": "partial",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"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": "32 existing vulnerabilities detected",
"points": 0,
"status": "missed",
"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 62 resolved dependencies against OSV; 6 could not be assessed (no resolved version, an unsupported ecosystem, or beyond the reported package list). 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": 62
}
},
{
"code": "advisories_unassessed",
"params": {
"count": 6
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 32,
"affected_packages": 7,
"assessed_packages": 62,
"unassessed_packages": 6,
"affected_by_severity": "critical 1, high 4, moderate 1, low 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": 62,
"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": 17
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "at_risk",
"name": "AI Readiness",
"value": 37,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "critical",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 19,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.36,
"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": "36 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 19.2,
"status": "partial",
"details": [
{
"code": "legible_history",
"params": {
"legible": 36,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "at_risk",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 43,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"Gemfile.lock"
],
"has_dockerfile": false,
"typed_language": false,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [],
"agent_commit_share": 0,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"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": ".rubocop.yml",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".rubocop.yml"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"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": "no agent-authored commits among the last 100",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_authored_commits",
"params": {
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "moderate",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 55,
"inputs": {
"primary_language": "Ruby",
"largest_source_bytes": 26444,
"source_files_sampled": 19,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Ruby without a type-check config",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_typecheck_config_language",
"params": {
"language": "Ruby"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/19 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 19,
"oversized": 0
}
}
],
"max_points": 55
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [],
"report_type": "repository",
"generated_at": "2026-07-22T00:49:38.367834Z",
"schema_version": "0.26.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/h/heartcombo/responders.svg",
"full_name": "heartcombo/responders",
"license_state": "standard",
"license_spdx": "MIT"
}