JSON-Rohbericht maschinenlesbar
{
"data": {
"repo": {
"topics": [
"ruby",
"i18n"
],
"is_fork": false,
"size_kb": 1783,
"has_wiki": true,
"homepage": null,
"languages": {
"Ruby": 329845,
"Logos": 944
},
"pushed_at": "2026-06-19T21:55:14Z",
"created_at": "2008-06-13T12:47:13Z",
"owner_type": "Organization",
"updated_at": "2026-06-19T21:55:08Z",
"description": "Internationalization (i18n) library for Ruby",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "master",
"license_spdx_raw": "MIT",
"primary_language": "Ruby",
"significant_languages": [
"Ruby"
]
},
"owner": {
"blog": null,
"name": null,
"type": "Organization",
"login": "ruby-i18n",
"company": null,
"location": null,
"followers": 5,
"avatar_url": "https://avatars.githubusercontent.com/u/8200960?v=4",
"created_at": "2014-07-18T12:03:49Z",
"is_verified": null,
"public_repos": 4,
"account_age_days": 4386
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v1.15.2",
"kind": "patch",
"published_at": "2026-06-19T21:55:42Z"
},
{
"tag": "v1.15.1",
"kind": "patch",
"published_at": "2026-06-17T23:40:15Z"
},
{
"tag": "v1.15.0",
"kind": "minor",
"published_at": "2026-06-17T04:26:19Z"
},
{
"tag": "v1.14.8",
"kind": "patch",
"published_at": "2025-12-21T22:22:39Z"
},
{
"tag": "v1.14.7",
"kind": "patch",
"published_at": "2025-01-19T23:05:06Z"
},
{
"tag": "v1.14.6",
"kind": "patch",
"published_at": "2024-09-15T23:27:27Z"
},
{
"tag": "v1.14.5",
"kind": "patch",
"published_at": "2024-05-06T20:51:07Z"
},
{
"tag": "v1.14.4",
"kind": "patch",
"published_at": "2024-03-06T22:08:16Z"
},
{
"tag": "v1.14.3",
"kind": "patch",
"published_at": "2024-03-05T22:27:37Z"
},
{
"tag": "v1.14.1",
"kind": "patch",
"published_at": "2023-06-04T20:30:15Z"
},
{
"tag": "v1.14.0",
"kind": "minor",
"published_at": "2023-06-02T04:39:46Z"
},
{
"tag": "v1.13.0",
"kind": "minor",
"published_at": "2023-04-26T00:07:08Z"
},
{
"tag": "v1.12.0",
"kind": "minor",
"published_at": "2022-07-13T20:52:39Z"
},
{
"tag": "v1.11.0",
"kind": "minor",
"published_at": "2022-07-10T23:15:08Z"
},
{
"tag": "v1.10.0",
"kind": "minor",
"published_at": "2022-02-14T23:08:15Z"
},
{
"tag": "v1.9.1",
"kind": "patch",
"published_at": "2022-01-28T03:27:16Z"
},
{
"tag": "v1.9.0",
"kind": "minor",
"published_at": "2022-01-26T23:28:51Z"
},
{
"tag": "v1.8.11",
"kind": "patch",
"published_at": "2021-11-02T22:31:19Z"
},
{
"tag": "v1.8.10",
"kind": "patch",
"published_at": "2021-03-30T22:38:33Z"
},
{
"tag": "v1.8.9",
"kind": "patch",
"published_at": "2021-02-12T20:15:51Z"
},
{
"tag": "v1.8.8",
"kind": "patch",
"published_at": "2021-02-02T00:52:47Z"
},
{
"tag": "v1.8.7",
"kind": "patch",
"published_at": "2021-01-04T10:03:12Z"
},
{
"tag": "v1.8.6",
"kind": "patch",
"published_at": "2021-01-01T22:38:20Z"
},
{
"tag": "v1.8.5",
"kind": "patch",
"published_at": "2020-08-04T22:54:40Z"
},
{
"tag": "v1.8.4",
"kind": "patch",
"published_at": "2020-07-20T00:32:18Z"
},
{
"tag": "v1.8.3",
"kind": "patch",
"published_at": "2020-06-05T00:24:52Z"
},
{
"tag": "1.7.0",
"kind": "minor",
"published_at": "2020-01-13T21:15:46Z"
},
{
"tag": "v1.8.2",
"kind": "patch",
"published_at": "2020-01-13T21:23:36Z"
},
{
"tag": "v1.8.1",
"kind": "patch",
"published_at": "2020-01-13T21:21:15Z"
},
{
"tag": "v1.8.0",
"kind": "minor",
"published_at": "2020-01-13T21:19:55Z"
},
{
"tag": "v1.7.1",
"kind": "patch",
"published_at": "2020-01-13T21:16:17Z"
},
{
"tag": "v1.6.0",
"kind": "minor",
"published_at": "2019-03-03T21:11:03Z"
},
{
"tag": "v1.5.3",
"kind": "patch",
"published_at": "2019-01-21T21:44:23Z"
},
{
"tag": "v1.5.2",
"kind": "patch",
"published_at": "2019-01-14T04:29:33Z"
},
{
"tag": "v1.5.1",
"kind": "patch",
"published_at": "2019-01-06T22:52:19Z"
},
{
"tag": "v1.4.0",
"kind": "minor",
"published_at": "2019-01-01T21:33:18Z"
},
{
"tag": "v1.3.0",
"kind": "minor",
"published_at": "2019-01-01T21:23:06Z"
},
{
"tag": "v1.2.0",
"kind": "minor",
"published_at": "2018-12-11T00:24:56Z"
},
{
"tag": "v1.1.1",
"kind": "patch",
"published_at": "2018-10-14T09:25:39Z"
},
{
"tag": "v1.1.0",
"kind": "minor",
"published_at": "2018-08-07T22:19:07Z"
},
{
"tag": "v1.0.1",
"kind": "patch",
"published_at": "2018-04-18T04:59:19Z"
},
{
"tag": "v1.0.0",
"kind": "major",
"published_at": "2018-04-14T03:20:51Z"
},
{
"tag": "v0.9.5",
"kind": "patch",
"published_at": "2018-02-13T22:10:49Z"
},
{
"tag": "v0.9.4",
"kind": "patch",
"published_at": "2018-02-09T05:23:57Z"
},
{
"tag": "v0.9.3",
"kind": "patch",
"published_at": "2018-01-22T22:59:41Z"
},
{
"tag": "v0.9.1",
"kind": "patch",
"published_at": "2017-11-03T00:37:54Z"
},
{
"tag": "v0.9.0",
"kind": "minor",
"published_at": "2017-10-15T22:37:39Z"
},
{
"tag": "v0.8.6",
"kind": "patch",
"published_at": "2017-07-10T05:40:13Z"
},
{
"tag": "v0.8.5",
"kind": "patch",
"published_at": "2017-07-10T05:37:09Z"
},
{
"tag": "v0.8.4",
"kind": "patch",
"published_at": "2017-07-10T05:34:50Z"
},
{
"tag": "v0.8.3",
"kind": "patch",
"published_at": "2017-05-30T22:40:40Z"
},
{
"tag": "v0.8.2",
"kind": "patch",
"published_at": "2017-05-30T22:37:18Z"
},
{
"tag": "v0.8.1",
"kind": "patch",
"published_at": "2017-02-22T02:52:38Z"
},
{
"tag": "v0.8.0",
"kind": "minor",
"published_at": "2017-02-01T21:30:34Z"
},
{
"tag": "0.8.0.beta1",
"kind": "other",
"published_at": "2016-11-21T00:40:49Z"
}
],
"recent_commits": [
{
"oid": "8beba78761637f6677fa94e26e19b50790161f78",
"body": null,
"is_bot": false,
"headline": "Bump to 1.15.2",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2026-06-19T21:55:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d6964f2b60e65223573fbba9e51e2689ef4324bc",
"body": "Restore Ruby 3.1 support",
"is_bot": false,
"headline": "Merge pull request #739 from koic/restore_ruby_3_1_support",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2026-06-19T21:49:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e4c806e513bf51f19c956fefbee38b5a105bebf8",
"body": "i18n 1.15.1 raised the required Ruby version to 3.2 to address #735,\nwhere Ruby 3.1 users hit `NoMethodError: undefined method '[]' for Fiber:Class`.\nAs a result, Ruby 3.1 users remain on the broken i18n 1.15.0 release and cannot\nupgrade to a fixed version.\n\nRestore Ruby 3.1 support and ship a patch\n[…]\nunlike applications) provide value\nby remaining usable for a broad range of users, so the thread-local fallback path is\nintentionally retained for environments without `Fiber[]` (including JRuby 9.4).",
"is_bot": false,
"headline": "Restore Ruby 3.1 support",
"author_name": "Koichi ITO",
"author_login": "koic",
"committed_at": "2026-06-19T19:38:53Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "02841cb7fcf17458c6574fbf43fb36f25a00e9ad",
"body": null,
"is_bot": false,
"headline": "Bump to 1.15.1",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2026-06-17T23:32:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a56484de2167826995867f0a34f9e03a581ebad7",
"body": "Ignore Ruby 3.2 + Rails main from the matrix",
"is_bot": false,
"headline": "Merge pull request #737 from ruby-i18n/ignore-ruby32-rails-main",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2026-06-17T23:29:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "52deabaf8e1f6e9ec5ea300b180f749fc6554294",
"body": "Rails main now requires at least Ruby 3.3",
"is_bot": false,
"headline": "Ignore Ruby 3.2 + Rails main from the matrix",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2026-06-17T23:26:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "94891ca7fd503d57b00ab8abb6e8a5025b5ed284",
"body": "Fix feature fiber storage",
"is_bot": false,
"headline": "Merge pull request #736 from YashaVinter/fix-feature-fiber-storage",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2026-06-17T23:24:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5a7913e587cd8db5417a359049ad7decfac86bcc",
"body": null,
"is_bot": false,
"headline": "Test against Ruby 3.2",
"author_name": "yasha",
"author_login": null,
"committed_at": "2026-06-17T09:10:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cd337a8a8ba25351a08c0118e52a796113da7802",
"body": "…ined method [] for Fiber:Class",
"is_bot": false,
"headline": "fix https://github.com/ruby-i18n/i18n/issues/735 NoMethodError: undef…",
"author_name": "yasha",
"author_login": null,
"committed_at": "2026-06-17T08:52:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "78fa20aa9a4f8d3632fc5c0e146aaca73fdea098",
"body": null,
"is_bot": false,
"headline": "Bump to 1.15.0",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2026-06-17T04:27:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6ef9bb26597d55268851ad0c3a65a5990867dc51",
"body": "Fiber-aware I18n config storage",
"is_bot": false,
"headline": "Merge pull request #731 from lee266/feature/fiber-storage",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2026-06-17T04:25:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "416eebe1c039fae8fcd6a8a3a8996e80551a10e4",
"body": null,
"is_bot": false,
"headline": "remove 3.2 builds from ruby.yml",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2026-06-17T04:24:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "daefe700966c8c5ad9925bd7f9a8bb1b7f1ff6b9",
"body": null,
"is_bot": false,
"headline": "Merge branch 'master' into feature/fiber-storage",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2026-06-17T04:21:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0a04c9802d373cf68b18172f672fb5d9a978e1e3",
"body": "Ruby 3.1 was EOL'd a little over a year ago.",
"is_bot": false,
"headline": "Support Ruby >= 3.1",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2026-06-17T04:17:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e2067d2fe7496d2441f738e3e76f64a005403d0b",
"body": "CI: exclude Ruby 3.2 from rails-main matrix",
"is_bot": false,
"headline": "Merge pull request #734 from ruby-i18n/ci-drop-ruby-3.2-rails-main",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2026-06-17T04:11:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0c2d1e19c30e4e1db530c813a65250d5f954315f",
"body": "Add transliteration for O with ogonek",
"is_bot": false,
"headline": "Merge pull request #733 from ruby-i18n/transliterate-o-ogonek",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2026-06-17T04:07:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5ecdb13fd7619d185e9850bfafea7d8e5203e541",
"body": "Rails main now requires Ruby 3.3+, so the Ruby 3.2 + Gemfile.rails-main\ncombination can no longer install and was failing.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "CI: exclude Ruby 3.2 from rails-main matrix",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2026-06-17T04:07:38Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e43419db50f40738f8b5e29215f10e9430f0eac0",
"body": "Add support to not replace non-ASCII chars not in map",
"is_bot": false,
"headline": "Merge pull request #720 from sobrinho/sobrinho/add-none-replacement",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2026-06-17T04:06:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d397bb012da11ce43575af3c2c4b1b35fc81790a",
"body": "Ǫ/ǫ (U+01EA/01EB) and Ǭ/ǭ (U+01EC/01ED) live in Latin Extended-B,\nwhich the default approximations table did not cover, so they\ntransliterated to the replacement character \"?\" instead of \"O\"/\"o\".\n\nFixes #732\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add transliteration for O with ogonek",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2026-06-17T04:01:00Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "bfc992d8fe0a8fc74a7133c2948bd7cabf9af635",
"body": null,
"is_bot": false,
"headline": "feat: require Ruby 3.2+ and simplify Fiber-based config storage",
"author_name": "rito.ishihara",
"author_login": null,
"committed_at": "2026-02-23T15:44:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "507a88e5152b4c63464e84a1cb30709abecaf2a7",
"body": null,
"is_bot": false,
"headline": "chore: temp fix",
"author_name": "lee266",
"author_login": "lee266",
"committed_at": "2026-02-15T14:35:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "14b8f9a488e6ab4fe44fc1c9d055b452ce2d0be7",
"body": null,
"is_bot": false,
"headline": "feat(config): add immutable config updates with freeze",
"author_name": "lee266",
"author_login": "lee266",
"committed_at": "2026-02-15T14:19:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "396827aed869aba2f347940ba46ddefaaa1dec79",
"body": null,
"is_bot": false,
"headline": "feat: add owner-based CoW for Fiber-stored config",
"author_name": "lee266",
"author_login": "lee266",
"committed_at": "2026-02-15T14:19:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6316c2ac65c5a7589ba4f3ed076db85d1819e7fe",
"body": null,
"is_bot": false,
"headline": "feat: add basic Fiber-backed I18n config storage",
"author_name": "lee266",
"author_login": "lee266",
"committed_at": "2026-02-15T14:19:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b0fffb8ec70f9c3b9d0e0b9162d47f0305ae2a5d",
"body": "Make lazy loading of I18n translations thread safe ( part 2 )",
"is_bot": false,
"headline": "Merge pull request #729 from chaadow/patch-1",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2026-01-31T23:54:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a31bd06a6b965146f5ccea5a610277fc785b2864",
"body": "https://github.com/ruby-i18n/i18n/pull/644#issuecomment-3694694977\r\n\r\nWhen two threads lazy load the translations at the same time, there is a race condition while iterating through the `translations` hash. The first thread merges new values into the hash, and the second thread, while iterating, get\n[…]\ng iteration`\r\n\r\nThe solution suggested is to use Mutex while merging the hash (which is a mutating action since we're using `merge!` instead of `merge` ) to prevent this from happening\r\n\r\ncc @mensfeld",
"is_bot": false,
"headline": "Make lazy loading of I18n translations thread safe ( part 2 )",
"author_name": "Chedli Bourguiba",
"author_login": "chaadow",
"committed_at": "2025-12-28T12:15:32Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f2fb6a5766dee835082eb74ee83f52e0a6479573",
"body": null,
"is_bot": false,
"headline": "Bump to 1.14.9",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2025-12-21T22:20:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ef622532786dabf0c525a5c03ea258a9247702ba",
"body": "Fix compatibility with `--enable-frozen-string-literal`",
"is_bot": false,
"headline": "Merge pull request #726 from byroot/fstr-compat",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2025-11-16T22:18:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "002201342c44d31e8b51da3696ba9e7ac1278038",
"body": null,
"is_bot": false,
"headline": "Merge branch 'master' into fstr-compat",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2025-11-16T22:18:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dee96b6bace0fa76b1f655f224a2a8148a11a92c",
"body": null,
"is_bot": false,
"headline": "Remove testing for EOL Rubies 3.1 + 3.0",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2025-11-16T22:15:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c6873f934bc0ad86b8651f4ed22c9fce347c9752",
"body": "* olleolleolle/patch-1:\n Delete gemfiles/Gemfile.rails-6.1.x\n Delete gemfiles/Gemfile.rails-6.0.x\n CI: Omit the 6.x versions of Rails\n CI: Use actions/checkout@v5",
"is_bot": false,
"headline": "Merge remote-tracking branch 'olleolleolle/patch-1'",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2025-11-16T22:13:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2134338ee8c4657bb18326cdb850cf2810a9aadc",
"body": "Fix: I18n.locale reset in Fiber context by using Thread#thread_variable",
"is_bot": false,
"headline": "Merge pull request #724 from lee266/fix/i18n-locale-thread-variable",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2025-11-16T22:09:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3f9ae644a554ada9e93d5943624f2d0e390c93ba",
"body": "Since Ruby 2.3 it's possible to run Ruby with the `--enable-frozen-string-literal`\noption, so ideally gems are compatible with it.",
"is_bot": false,
"headline": "Fix compatibility with `--enable-frozen-string-literal`",
"author_name": "Jean Boussier",
"author_login": "byroot",
"committed_at": "2025-11-07T10:16:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d64a88da60545bfbbd5c08ee970bb5c2262cf193",
"body": "CI: Add Ruby 3.4 to CI Matrix",
"is_bot": false,
"headline": "Merge pull request #722 from taketo1113/ci-ruby-3.4",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2025-10-27T06:34:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0e5484f68d5745effa1f7a8625984e7f56089cb3",
"body": "…fied minor version",
"is_bot": false,
"headline": "CI: Fix rails version specification in gemfiles to run with the speci…",
"author_name": "Taketo Takashima",
"author_login": "taketo1113",
"committed_at": "2025-10-03T03:37:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "960ab2b6289baecef433faaf35feebf49ece2779",
"body": "Add dependency of mutex_m / bigdecimal to address LoadError for Ruby 3.4\n\nAdd dependency of concurrent-ruby v1.3.4 to address NameError uninitialized constant for Rails 7.0 or below",
"is_bot": false,
"headline": "CI: Add ruby 3.4 to CI Matrix",
"author_name": "Taketo Takashima",
"author_login": "taketo1113",
"committed_at": "2025-10-03T03:37:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f1aab856b992539d7f2d07d2125c808fd07569b7",
"body": "…le_{get,set}\n\n- Change I18n.config storage from Thread.current[:i18n_config] to\n Thread.current.thread_variable_get/set, which is inherited by Fibers\n- Update I18n.config= and middleware to use thread_variable_set\n- Update tests to verify I18n.locale preservation in Fiber context",
"is_bot": false,
"headline": "fix: I18n.locale reset in Fiber context by using Thread#thread_variab…",
"author_name": "lee266",
"author_login": "lee266",
"committed_at": "2025-10-02T13:41:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a0bf6ef0145aaac16b7a94773eeb975b94fcbd11",
"body": null,
"is_bot": false,
"headline": "Delete gemfiles/Gemfile.rails-6.1.x",
"author_name": "Olle Jonsson",
"author_login": "olleolleolle",
"committed_at": "2025-09-29T10:14:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "493068a0c5a4571ba8efcd8d9a4f64bfcaaf4921",
"body": null,
"is_bot": false,
"headline": "Delete gemfiles/Gemfile.rails-6.0.x",
"author_name": "Olle Jonsson",
"author_login": "olleolleolle",
"committed_at": "2025-09-29T10:14:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "53550f05b442a2a55051a01e855fdabdea4bfdfb",
"body": "Mostly to get to green, perhaps the Gemfile files should be removed, too, if we never use them.",
"is_bot": false,
"headline": "CI: Omit the 6.x versions of Rails",
"author_name": "Olle Jonsson",
"author_login": "olleolleolle",
"committed_at": "2025-09-29T10:08:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7a64f347c2be7cf022f4c365be1353fb3cd86804",
"body": null,
"is_bot": false,
"headline": "CI: Use actions/checkout@v5",
"author_name": "Olle Jonsson",
"author_login": "olleolleolle",
"committed_at": "2025-09-29T09:47:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3ff2ad33032ccf53aefff535296be334e8a3e33e",
"body": null,
"is_bot": false,
"headline": "Add support to not replace non-ASCII chars not in map",
"author_name": "Gabriel Sobrinho",
"author_login": "sobrinho",
"committed_at": "2025-09-23T13:35:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9ede6644b5f3a37966be5779e19400a043ec8ae1",
"body": "Explicitly require `pathname`",
"is_bot": false,
"headline": "Merge pull request #708 from voxik/add-require-pathname",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2025-06-23T01:31:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "35d8e5be2497fc25c7d4866ab8d422e5e77bbd90",
"body": "Remove unused `cgi` require for Ruby 3.5 compatibility",
"is_bot": false,
"headline": "Merge pull request #713 from Earlopain/cgi-ruby-3.5",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2025-06-23T01:31:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b489f648d5dc57ccf8e3cdbfbf905dce844ea154",
"body": "In Ruby 3.5 this emits a warning since most of the `cgi` gem is being removed.\n\ni18n doesn't use this module anymore since the require was added 11 years ago, so it can just be removed\nto avoid the warning during require.\n\nhttps://bugs.ruby-lang.org/issues/21258",
"is_bot": false,
"headline": "Remove unused `cgi` require",
"author_name": "Earlopain",
"author_login": "Earlopain",
"committed_at": "2025-05-09T11:44:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4dddd855039b0c5a0b5b3b2df69783374058a7c9",
"body": null,
"is_bot": false,
"headline": "Bump to 1.14.7",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2025-01-19T22:48:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "61678f595513555e9d142dcf86407fad12cf5835",
"body": null,
"is_bot": false,
"headline": "remove post-install message",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2025-01-19T22:36:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "09e26d079fa0487fac5d52d47c411085665b0078",
"body": "Ruby 3.4 `Hash#inspect` compatibility.",
"is_bot": false,
"headline": "Merge pull request #709 from voxik/ruby-3.4",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-12-12T01:25:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2af0b5b8400fead0fa406a5958c229254f1b1fa8",
"body": null,
"is_bot": false,
"headline": "Add Rails 7.2 and 8.0 into test matrix.",
"author_name": "Vít Ondruch",
"author_login": "voxik",
"committed_at": "2024-12-11T14:41:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bd5bd233da8ec7886f4b3eb3d751b7154b413e12",
"body": "Rails 8.1 requires Ruby 3.2 at minimum:\n\n~~~\nBundler found conflicting requirements for the Ruby\n In Gemfile.rails-main:\n activesupport was resolved to 8.1.0.alpha, which depends on\n Ruby (>= 3.2.0)\n~~~",
"is_bot": false,
"headline": "Adjust the test matrix for Rails 8.1",
"author_name": "Vít Ondruch",
"author_login": "voxik",
"committed_at": "2024-12-10T16:32:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cb35bee3977e6ac10cebbf41a958dadc732bc832",
"body": "These are required for Ruby 3.4 support, which extracts `base64` /\n`mutex_m` into bundled gem. The maintained versions of Rails have the\ndependencies updated.",
"is_bot": false,
"headline": "Add `base64` / `mutex_m` dependencies for Rails 6.1",
"author_name": "Vít Ondruch",
"author_login": "voxik",
"committed_at": "2024-12-10T16:24:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a6b16dc5d4f64b37d2acdd51d8ae7f143a9dcdf2",
"body": null,
"is_bot": false,
"headline": "Ruby 3.4 `Hash#inspect` compatibility.",
"author_name": "Vít Ondruch",
"author_login": "voxik",
"committed_at": "2024-12-09T11:59:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ce4b8501eb9585129fae5aee86e4027e6f2d2946",
"body": null,
"is_bot": false,
"headline": "Add 'ruby-head' to test matrix",
"author_name": "Vít Ondruch",
"author_login": "voxik",
"committed_at": "2024-12-09T11:59:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "edb42431d9a4967fa9b1b0c781354c5b39dea4f8",
"body": "Bundler requires `pathname`, therefore it might not always be needed.\nBut it is right thing to not rely on Bundler internals.",
"is_bot": false,
"headline": "Explicitly require `pathname`",
"author_name": "Vít Ondruch",
"author_login": "voxik",
"committed_at": "2024-12-09T09:05:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3b65f6548245411bc9802f5a547954d370b57821",
"body": null,
"is_bot": false,
"headline": "Bump to 1.14.6",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-09-15T23:24:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6d0c2ceeabc7cf8b0c3f9c8502d6bef05164f37c",
"body": "As per #686",
"is_bot": false,
"headline": "Add post install message for Ruby < 3.2 users",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-09-15T23:24:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1fbc930e2646abfdddba92f8dffee023f1a20f1b",
"body": "[FIX] Raise ArgumentError on nil key in exists?",
"is_bot": false,
"headline": "Merge pull request #696 from KinWang-2013/fix/exists-method-nil-key",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-09-15T23:11:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "18799df22a1ee1a4e4d37e592faf64d936dd4f26",
"body": "Optimize pluralization logic in test data",
"is_bot": false,
"headline": "Merge pull request #697 from zachmargolis/margolis-optimize-plurals",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-09-15T23:10:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "aacb76a2eb08a2df9859169cb9616dd8aa8e0086",
"body": "Fixes strings being interpolated multiple times",
"is_bot": false,
"headline": "Merge pull request #699 from alexpls/master",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-09-15T23:10:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d718ed4943c9a5fefcc3533260360f73ec4922ab",
"body": "Fix loading of .rb locale files when `load_path` is not a string",
"is_bot": false,
"headline": "Merge pull request #701 from stevegeek/fix_load_rb_with_pathname",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-09-15T23:00:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ee22f105906e502d77b9375e36b7ca55aaabe3b7",
"body": "… is a Pathname",
"is_bot": false,
"headline": "Fix loading of .rb locale files when load_path is not a string, eg it…",
"author_name": "Stephen Ierodiaconou",
"author_login": "stevegeek",
"committed_at": "2024-09-03T07:06:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "229d57e83222b2e735cf04938aeaeda536369cd0",
"body": "Similarly to #599, I've observed issues issues where untrusted user input\nthat includes interpolation patterns gets unintentionally interpolated\nand leads to bogus `I18n::MissingInterpolationArgument` exceptions.\n\nThis happens when multiple lookups are required for a key to be resolved,\nwhich is com\n[…]\nwn into every recursive call of `I18n.translate` and\ninstructs the method to skip interpolation.\n\nThis ensures that only the initial `I18n.translate` call is the one that\ngets its string interpolated.",
"is_bot": false,
"headline": "Fixes strings being interpolated multiple times",
"author_name": "Alex Plescan",
"author_login": "alexpls",
"committed_at": "2024-08-23T02:39:08Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "eacc34f55d32d90777605e535cab82e81087f69e",
"body": "fix issues with RDoc generation",
"is_bot": false,
"headline": "Merge pull request #698 from davetron5000/rdoc-fixes",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-08-19T23:28:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "55dc807bb8fa6ad12f9c9a76538d8db4dc6a6fd6",
"body": null,
"is_bot": false,
"headline": "fix issues with RDoc generation",
"author_name": "Dave Copeland",
"author_login": "davetron5000",
"committed_at": "2024-08-19T13:03:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "51e205aef3a0d7394f15bf24eed21dd2f995afed",
"body": "- Switch from Array#include? to Range#cover? for more than 5 items",
"is_bot": false,
"headline": "Optimize pluralization logic in test data",
"author_name": "Zach Margolis",
"author_login": "zachmargolis",
"committed_at": "2024-07-25T21:52:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "869460a0050956030045257e367d7544230860c3",
"body": null,
"is_bot": false,
"headline": "return error on nil key and add test",
"author_name": "KinWang-2013",
"author_login": "KinWang-2013",
"committed_at": "2024-07-19T13:15:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "55c7750a79aff26caa1a0b053c3a5b4432d23160",
"body": null,
"is_bot": false,
"headline": "Bump to 1.14.5",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-05-06T20:46:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2ab6eb095b4c40ec1da30df83594f3da09ddff4b",
"body": "Fix that escaped interpolations with reserved keywords raised ReservedInterpolationKey",
"is_bot": false,
"headline": "Merge pull request #688 from Bilka2/escaped-reserved-interpolation",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-05-06T20:44:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5bec0bc1f27ad64c79250df056981c6ee1b812bd",
"body": "…x_fix\n\nFix syntax in documentation for I18n::Backend::Base.interpolate",
"is_bot": false,
"headline": "Merge pull request #691 from tom-lord/interpolate_documentation_synta…",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-05-06T20:42:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "305edf405d8ffe68088e32e56a425b0090a9fc2f",
"body": "* master:\n Remove unnecessary line\n Use left recursion\n Optimize I18n::Locale::Fallbacks#compute\n Fix example doc\n More examples documented\n Modify behaviour for Hash and (maybe nested) Array translations\n Add tests and error handling for non-string translations\n racc has been extracted to a gem since Ruby 3.3\n Add I18n.interpolation_keys",
"is_bot": false,
"headline": "Merge branch 'master' into interpolate_documentation_syntax_fix",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-05-06T20:41:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "73fd07e0d197244624ebb3410c64f76420dfbb06",
"body": "Add I18n.interpolation_keys",
"is_bot": false,
"headline": "Merge pull request #682 from tom-lord/add_I18n.interpolation_keys",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-05-06T20:39:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9b84d1d1f3d471a946e6892d4c8d8f978e875ab1",
"body": "Optimize I18n::Locale::Fallbacks#[] for recursive locale mappings",
"is_bot": false,
"headline": "Merge pull request #692 from uiur/optimize-fallbacks-compute",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-05-06T20:28:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fb8e34e1af6bb10e4a1ef39e66a3eae66b12c1d2",
"body": null,
"is_bot": false,
"headline": "Remove unnecessary line",
"author_name": "Kazato Sugimoto",
"author_login": "uiur",
"committed_at": "2024-04-27T00:24:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3d19b689afdf59a2ebf7a8b0bbac22bafe73524f",
"body": null,
"is_bot": false,
"headline": "Use left recursion",
"author_name": "Kazato Sugimoto",
"author_login": "uiur",
"committed_at": "2024-04-26T14:31:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a295dba82d68680c079a8b36e93bade1d667b908",
"body": null,
"is_bot": false,
"headline": "Optimize I18n::Locale::Fallbacks#compute",
"author_name": "Kazato Sugimoto",
"author_login": "uiur",
"committed_at": "2024-04-26T11:45:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8f4bca1ff5f1d15d948c4c783edb9c4e8987baf7",
"body": null,
"is_bot": false,
"headline": "Add note about not altering strings when no params are given",
"author_name": "Bilka",
"author_login": "Bilka2",
"committed_at": "2024-03-30T07:22:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7842cab498a9b1da0ddd27a986caf61c38ad776b",
"body": "Explicitly bundle racc gem for Ruby 3.3+",
"is_bot": false,
"headline": "Merge pull request #690 from amatsuda/bundle_racc",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-03-29T20:58:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b0f1e1cb172c9c99f6e98ff2943ade810159427f",
"body": null,
"is_bot": false,
"headline": "Fix syntax in documentation for I18n::Backend::Base.interpolate",
"author_name": "tom-lord",
"author_login": "tom-lord",
"committed_at": "2024-03-24T18:55:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "40aef981c8bfa358e048eaf652307abb8a1f7bdf",
"body": null,
"is_bot": false,
"headline": "Fix example doc",
"author_name": "tom-lord",
"author_login": "tom-lord",
"committed_at": "2024-03-24T00:25:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7559fef756c20ba200e60276a85e071474f3cbbf",
"body": null,
"is_bot": false,
"headline": "More examples documented",
"author_name": "tom-lord",
"author_login": "tom-lord",
"committed_at": "2024-03-24T00:21:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fe82be84e0baa3c6d6632438c42259471d544d00",
"body": null,
"is_bot": false,
"headline": "Modify behaviour for Hash and (maybe nested) Array translations",
"author_name": "tom-lord",
"author_login": "tom-lord",
"committed_at": "2024-03-24T00:01:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "afb20cbaca3eb1f12914546c636c4932b8a5c58b",
"body": null,
"is_bot": false,
"headline": "Add tests and error handling for non-string translations",
"author_name": "tom-lord",
"author_login": "tom-lord",
"committed_at": "2024-03-23T21:50:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bef6c30d1fa53bf47cba3a13e1a0fef07c16f47a",
"body": "see: https://bugs.ruby-lang.org/issues/19702\n\nThis fixes CI failures on Ruby 3.3 with the following error:\ncannot load such file -- racc/parser (LoadError)\n\ne.g.\nhttps://github.com/ruby-i18n/i18n/actions/runs/8179356458/job/22365256416",
"is_bot": false,
"headline": "racc has been extracted to a gem since Ruby 3.3",
"author_name": "Akira Matsuda",
"author_login": "amatsuda",
"committed_at": "2024-03-13T12:17:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cdc0babfbdbc6babed5030ec7a79a3d75deab55b",
"body": null,
"is_bot": false,
"headline": "Fix that escaped interpolations for reserved keywords raised an error",
"author_name": "Bilka",
"author_login": "Bilka2",
"committed_at": "2024-03-12T12:43:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "74258ad03021c3592302438b86e08ab778e85007",
"body": null,
"is_bot": false,
"headline": "Bump to 1.14.4",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-03-06T22:01:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "43f5e3aee66e601f2e955182e01496f736747a13",
"body": "undo strict racc dependency on this branch",
"is_bot": false,
"headline": "Merge pull request #687 from ruby-i18n/undo-racc-dep",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-03-06T21:54:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c15f48b0fa207586294c74a8a5eff40f7930534b",
"body": null,
"is_bot": false,
"headline": "Remove 3.0 x rails-main action run",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-03-06T21:52:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fe8fcdca03fe8ad50a8b77bee4ce593e7f9ee211",
"body": null,
"is_bot": false,
"headline": "Use strictly ruby 3 point 0, not latest Ruby 3",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-03-06T21:50:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2b0182afacc1a9e5ccae5b2a8ce64917f065f7ae",
"body": "This causes people's builds to break.\n\nSee #685 for the discussion.",
"is_bot": false,
"headline": "undo strict racc dependency on this branch",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-03-06T19:36:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "caabe184e138be48c14d9ddcc8ab35ffc571d066",
"body": null,
"is_bot": false,
"headline": "Bump to 1.14.3",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-03-05T22:24:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5fb9e63d75d87e431203e8b06d323b8ce3251069",
"body": "Implement `Fallbacks#inspect` and `Fallbacks#empty?`",
"is_bot": false,
"headline": "Merge pull request #683 from fatkodima/add-inspect-to-fallbacks",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-03-05T22:22:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9e864755b76d70990f537fcd6171bf3c4bd959c5",
"body": "* master:\n Clearly specify which versions of Ruby + Rails we support\n Add back Ruby 3.0 support\n Use actions/checkout@v4, as Node 16 actions have been deprecated\n Bump Mocha deps to v2 to fix build issue\n Specify racc as a dependency\n Update workflows",
"is_bot": false,
"headline": "Merge branch 'master' into add-inspect-to-fallbacks",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-03-05T22:20:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "284ae1b9754f50528e5a4ec61e69d56242d8e823",
"body": "WIP: update workflows",
"is_bot": false,
"headline": "Merge pull request #684 from ruby-i18n/update-workflows",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-03-05T22:17:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "77491c371cd893a6e7a43c19ba014831e12019c4",
"body": null,
"is_bot": false,
"headline": "Clearly specify which versions of Ruby + Rails we support",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-03-05T22:15:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a33633754af5f7f2ece6a3fa4e08f5007f88ada1",
"body": null,
"is_bot": false,
"headline": "Add back Ruby 3.0 support",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-03-05T22:15:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f4fe3b9bac012d001a06b838e16d165b923dded7",
"body": null,
"is_bot": false,
"headline": "Use actions/checkout@v4, as Node 16 actions have been deprecated",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-03-05T22:15:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d7a21247dbf167e4cd2a9011164bc91204795fd0",
"body": null,
"is_bot": false,
"headline": "Bump Mocha deps to v2 to fix build issue",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-03-05T22:15:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2346d7c51e1ec96100a4d5a028fc6cedfd645945",
"body": "This is because this dependency has been gemified as of Ruby 3.3",
"is_bot": false,
"headline": "Specify racc as a dependency",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-03-05T22:14:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ef4b0cf2cbf00fc9a948ea7151254d38729d3ffb",
"body": "Drops testing support for:\n\nRuby 2.6 + Ruby 2.7: These have been EOL'd and should no longer be used.\nRails 5.2: This version has been EOL'd as well.",
"is_bot": false,
"headline": "Update workflows",
"author_name": "Ryan Bigg",
"author_login": "radar",
"committed_at": "2024-03-05T22:14:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "aca633e1ac929b24a72686c527cae3c1168a41eb",
"body": null,
"is_bot": false,
"headline": "Implement `Fallbacks#inspect` and `Fallbacks#empty?`",
"author_name": "fatkodima",
"author_login": "fatkodima",
"committed_at": "2024-03-05T22:07:49Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 55,
"commits_last_year": 42,
"latest_release_at": "2026-06-19T21:55:42Z",
"latest_release_tag": "v1.15.2",
"releases_from_tags": false,
"days_since_last_push": 32,
"active_weeks_last_year": 11,
"days_since_latest_release": 32,
"mean_days_between_releases": 123.5
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 50,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "i18n",
"exists": true,
"license": "MIT",
"keywords": [],
"ecosystem": "rubygems",
"matches_repo": true,
"registry_url": "https://rubygems.org/gems/i18n",
"is_deprecated": false,
"latest_version": "1.15.2",
"repository_url": "https://github.com/ruby-i18n/i18n",
"versions_count": 89,
"total_downloads": 1392155102,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": "2009-07-25T18:13:57Z",
"latest_published_at": "2026-06-19T21:55:59.425000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 32
}
]
},
"popularity": {
"forks": 414,
"stars": 1029,
"watchers": 16,
"fork_history": {
"days": [
{
"date": "2008-12-05",
"count": 1
},
{
"date": "2008-12-16",
"count": 1
},
{
"date": "2008-12-30",
"count": 1
},
{
"date": "2009-01-22",
"count": 1
},
{
"date": "2009-02-05",
"count": 1
},
{
"date": "2009-03-09",
"count": 1
},
{
"date": "2009-03-20",
"count": 1
},
{
"date": "2009-07-14",
"count": 1
},
{
"date": "2009-07-31",
"count": 1
},
{
"date": "2009-09-01",
"count": 1
},
{
"date": "2009-09-08",
"count": 1
},
{
"date": "2009-11-19",
"count": 1
},
{
"date": "2009-11-27",
"count": 1
},
{
"date": "2009-12-11",
"count": 1
},
{
"date": "2010-01-18",
"count": 1
},
{
"date": "2010-02-06",
"count": 1
},
{
"date": "2010-03-05",
"count": 1
},
{
"date": "2010-05-03",
"count": 1
},
{
"date": "2010-06-08",
"count": 2
},
{
"date": "2010-07-03",
"count": 1
},
{
"date": "2010-07-22",
"count": 1
},
{
"date": "2010-09-14",
"count": 1
},
{
"date": "2010-09-21",
"count": 1
},
{
"date": "2010-09-23",
"count": 1
},
{
"date": "2010-09-29",
"count": 1
},
{
"date": "2010-10-20",
"count": 1
},
{
"date": "2010-11-15",
"count": 1
},
{
"date": "2010-11-19",
"count": 1
},
{
"date": "2010-12-13",
"count": 1
},
{
"date": "2010-12-23",
"count": 1
},
{
"date": "2010-12-24",
"count": 1
},
{
"date": "2011-01-21",
"count": 1
},
{
"date": "2011-02-12",
"count": 1
},
{
"date": "2011-02-21",
"count": 1
},
{
"date": "2011-03-03",
"count": 1
},
{
"date": "2011-03-14",
"count": 1
},
{
"date": "2011-04-29",
"count": 1
},
{
"date": "2011-05-23",
"count": 1
},
{
"date": "2011-06-05",
"count": 1
},
{
"date": "2011-06-11",
"count": 1
},
{
"date": "2011-06-29",
"count": 1
},
{
"date": "2011-08-10",
"count": 1
},
{
"date": "2011-08-12",
"count": 1
},
{
"date": "2011-08-26",
"count": 1
},
{
"date": "2011-09-01",
"count": 1
},
{
"date": "2011-09-20",
"count": 1
},
{
"date": "2011-09-22",
"count": 1
},
{
"date": "2011-09-28",
"count": 1
},
{
"date": "2011-10-11",
"count": 1
},
{
"date": "2011-10-27",
"count": 1
},
{
"date": "2011-11-01",
"count": 1
},
{
"date": "2011-11-07",
"count": 1
},
{
"date": "2011-12-16",
"count": 1
},
{
"date": "2011-12-18",
"count": 1
},
{
"date": "2012-01-10",
"count": 1
},
{
"date": "2012-01-12",
"count": 1
},
{
"date": "2012-01-14",
"count": 1
},
{
"date": "2012-01-28",
"count": 1
},
{
"date": "2012-03-14",
"count": 1
},
{
"date": "2012-03-20",
"count": 1
},
{
"date": "2012-03-30",
"count": 1
},
{
"date": "2012-04-01",
"count": 1
},
{
"date": "2012-05-21",
"count": 1
},
{
"date": "2012-06-04",
"count": 1
},
{
"date": "2012-06-07",
"count": 1
},
{
"date": "2012-06-20",
"count": 1
},
{
"date": "2012-06-27",
"count": 1
},
{
"date": "2012-08-03",
"count": 1
},
{
"date": "2012-08-08",
"count": 1
},
{
"date": "2012-08-16",
"count": 1
},
{
"date": "2012-08-30",
"count": 1
},
{
"date": "2012-09-15",
"count": 1
},
{
"date": "2012-09-16",
"count": 2
},
{
"date": "2012-10-16",
"count": 1
},
{
"date": "2012-10-26",
"count": 2
},
{
"date": "2012-11-27",
"count": 1
},
{
"date": "2012-12-10",
"count": 1
},
{
"date": "2012-12-11",
"count": 1
},
{
"date": "2012-12-22",
"count": 1
},
{
"date": "2012-12-28",
"count": 1
},
{
"date": "2013-01-08",
"count": 1
},
{
"date": "2013-01-22",
"count": 1
},
{
"date": "2013-01-24",
"count": 1
},
{
"date": "2013-01-30",
"count": 1
},
{
"date": "2013-02-07",
"count": 1
},
{
"date": "2013-02-13",
"count": 1
},
{
"date": "2013-03-17",
"count": 1
},
{
"date": "2013-03-21",
"count": 2
},
{
"date": "2013-03-25",
"count": 1
},
{
"date": "2013-04-03",
"count": 1
},
{
"date": "2013-04-05",
"count": 1
},
{
"date": "2013-04-09",
"count": 1
},
{
"date": "2013-04-14",
"count": 1
},
{
"date": "2013-04-25",
"count": 1
},
{
"date": "2013-04-28",
"count": 1
},
{
"date": "2013-05-09",
"count": 2
},
{
"date": "2013-05-22",
"count": 1
},
{
"date": "2013-05-27",
"count": 1
},
{
"date": "2013-05-31",
"count": 1
},
{
"date": "2013-06-19",
"count": 1
},
{
"date": "2013-06-25",
"count": 1
},
{
"date": "2013-06-27",
"count": 1
},
{
"date": "2013-06-28",
"count": 4
},
{
"date": "2013-07-08",
"count": 1
},
{
"date": "2013-07-09",
"count": 1
},
{
"date": "2013-09-23",
"count": 1
},
{
"date": "2013-11-16",
"count": 1
},
{
"date": "2013-12-03",
"count": 1
},
{
"date": "2013-12-06",
"count": 1
},
{
"date": "2013-12-07",
"count": 1
},
{
"date": "2013-12-09",
"count": 1
},
{
"date": "2013-12-12",
"count": 1
},
{
"date": "2013-12-16",
"count": 2
},
{
"date": "2013-12-23",
"count": 1
},
{
"date": "2014-02-11",
"count": 1
},
{
"date": "2014-02-15",
"count": 1
},
{
"date": "2014-02-22",
"count": 1
},
{
"date": "2014-02-28",
"count": 1
},
{
"date": "2014-03-10",
"count": 1
},
{
"date": "2014-04-03",
"count": 1
},
{
"date": "2014-04-07",
"count": 1
},
{
"date": "2014-04-23",
"count": 1
},
{
"date": "2014-05-18",
"count": 1
},
{
"date": "2014-05-21",
"count": 1
},
{
"date": "2014-06-21",
"count": 1
},
{
"date": "2014-07-04",
"count": 1
},
{
"date": "2014-07-14",
"count": 1
},
{
"date": "2014-07-15",
"count": 1
},
{
"date": "2014-07-21",
"count": 1
},
{
"date": "2014-07-24",
"count": 1
},
{
"date": "2014-08-12",
"count": 1
},
{
"date": "2014-08-25",
"count": 1
},
{
"date": "2014-08-28",
"count": 1
},
{
"date": "2014-09-05",
"count": 1
},
{
"date": "2014-09-12",
"count": 1
},
{
"date": "2014-09-26",
"count": 3
},
{
"date": "2014-10-01",
"count": 1
},
{
"date": "2014-10-02",
"count": 1
},
{
"date": "2014-10-31",
"count": 1
},
{
"date": "2014-11-12",
"count": 1
},
{
"date": "2014-11-14",
"count": 1
},
{
"date": "2014-11-25",
"count": 1
},
{
"date": "2015-01-09",
"count": 1
},
{
"date": "2015-01-10",
"count": 1
},
{
"date": "2015-01-14",
"count": 2
},
{
"date": "2015-01-17",
"count": 1
},
{
"date": "2015-02-22",
"count": 1
},
{
"date": "2015-02-27",
"count": 1
},
{
"date": "2015-03-19",
"count": 1
},
{
"date": "2015-03-20",
"count": 1
},
{
"date": "2015-03-26",
"count": 1
},
{
"date": "2015-04-17",
"count": 1
},
{
"date": "2015-04-20",
"count": 1
},
{
"date": "2015-05-12",
"count": 1
},
{
"date": "2015-05-27",
"count": 1
},
{
"date": "2015-06-22",
"count": 1
},
{
"date": "2015-06-24",
"count": 1
},
{
"date": "2015-07-21",
"count": 1
},
{
"date": "2015-07-26",
"count": 1
},
{
"date": "2015-08-18",
"count": 1
},
{
"date": "2015-09-08",
"count": 1
},
{
"date": "2015-09-15",
"count": 1
},
{
"date": "2015-09-17",
"count": 1
},
{
"date": "2015-09-24",
"count": 1
},
{
"date": "2016-01-05",
"count": 1
},
{
"date": "2016-01-12",
"count": 1
},
{
"date": "2016-01-25",
"count": 1
},
{
"date": "2016-02-12",
"count": 1
},
{
"date": "2016-03-01",
"count": 1
},
{
"date": "2016-04-06",
"count": 1
},
{
"date": "2016-04-25",
"count": 1
},
{
"date": "2016-07-14",
"count": 1
},
{
"date": "2016-07-20",
"count": 1
},
{
"date": "2016-07-31",
"count": 1
},
{
"date": "2016-08-06",
"count": 1
},
{
"date": "2016-08-23",
"count": 1
},
{
"date": "2016-09-02",
"count": 1
},
{
"date": "2016-11-03",
"count": 1
},
{
"date": "2016-11-11",
"count": 1
},
{
"date": "2016-11-23",
"count": 1
},
{
"date": "2016-11-29",
"count": 1
},
{
"date": "2016-12-01",
"count": 1
},
{
"date": "2016-12-22",
"count": 1
},
{
"date": "2016-12-23",
"count": 1
},
{
"date": "2016-12-30",
"count": 1
},
{
"date": "2017-02-01",
"count": 1
},
{
"date": "2017-02-24",
"count": 1
},
{
"date": "2017-03-15",
"count": 1
},
{
"date": "2017-04-10",
"count": 1
},
{
"date": "2017-04-24",
"count": 1
},
{
"date": "2017-05-10",
"count": 1
},
{
"date": "2017-06-05",
"count": 1
},
{
"date": "2017-08-27",
"count": 1
},
{
"date": "2017-10-01",
"count": 1
},
{
"date": "2017-10-09",
"count": 1
},
{
"date": "2017-10-26",
"count": 1
},
{
"date": "2017-10-27",
"count": 1
},
{
"date": "2017-11-09",
"count": 1
},
{
"date": "2018-01-10",
"count": 1
},
{
"date": "2018-01-29",
"count": 1
},
{
"date": "2018-02-06",
"count": 1
},
{
"date": "2018-02-12",
"count": 1
},
{
"date": "2018-03-15",
"count": 1
},
{
"date": "2018-03-26",
"count": 1
},
{
"date": "2018-03-27",
"count": 1
},
{
"date": "2018-03-30",
"count": 1
},
{
"date": "2018-04-09",
"count": 1
},
{
"date": "2018-04-11",
"count": 1
},
{
"date": "2018-05-23",
"count": 1
},
{
"date": "2018-07-03",
"count": 1
},
{
"date": "2018-07-13",
"count": 1
},
{
"date": "2018-07-16",
"count": 1
},
{
"date": "2018-07-19",
"count": 1
},
{
"date": "2018-07-20",
"count": 1
},
{
"date": "2018-08-01",
"count": 1
},
{
"date": "2018-08-07",
"count": 1
},
{
"date": "2018-08-09",
"count": 1
},
{
"date": "2018-08-20",
"count": 1
},
{
"date": "2018-09-26",
"count": 1
},
{
"date": "2018-09-28",
"count": 1
},
{
"date": "2018-10-02",
"count": 1
},
{
"date": "2018-10-03",
"count": 1
},
{
"date": "2018-10-13",
"count": 1
},
{
"date": "2018-10-22",
"count": 3
},
{
"date": "2018-11-04",
"count": 1
},
{
"date": "2018-12-05",
"count": 2
},
{
"date": "2018-12-07",
"count": 1
},
{
"date": "2018-12-18",
"count": 1
},
{
"date": "2018-12-31",
"count": 1
},
{
"date": "2019-01-06",
"count": 1
},
{
"date": "2019-01-19",
"count": 1
},
{
"date": "2019-02-02",
"count": 1
},
{
"date": "2019-02-03",
"count": 1
},
{
"date": "2019-02-10",
"count": 1
},
{
"date": "2019-02-15",
"count": 2
},
{
"date": "2019-02-20",
"count": 1
},
{
"date": "2019-02-26",
"count": 1
},
{
"date": "2019-03-03",
"count": 1
},
{
"date": "2019-03-22",
"count": 1
},
{
"date": "2019-04-17",
"count": 1
},
{
"date": "2019-04-18",
"count": 1
},
{
"date": "2019-04-23",
"count": 1
},
{
"date": "2019-04-26",
"count": 1
},
{
"date": "2019-04-30",
"count": 1
},
{
"date": "2019-06-04",
"count": 1
},
{
"date": "2019-06-06",
"count": 1
},
{
"date": "2019-06-21",
"count": 1
},
{
"date": "2019-06-29",
"count": 2
},
{
"date": "2019-07-08",
"count": 1
},
{
"date": "2019-07-15",
"count": 1
},
{
"date": "2019-07-25",
"count": 2
},
{
"date": "2019-07-30",
"count": 1
},
{
"date": "2019-09-02",
"count": 1
},
{
"date": "2019-09-19",
"count": 1
},
{
"date": "2019-09-24",
"count": 1
},
{
"date": "2019-10-30",
"count": 1
},
{
"date": "2019-11-08",
"count": 1
},
{
"date": "2019-11-12",
"count": 1
},
{
"date": "2019-11-19",
"count": 1
},
{
"date": "2019-11-27",
"count": 1
},
{
"date": "2019-12-02",
"count": 1
},
{
"date": "2019-12-09",
"count": 1
},
{
"date": "2019-12-17",
"count": 1
},
{
"date": "2020-01-04",
"count": 1
},
{
"date": "2020-01-06",
"count": 1
},
{
"date": "2020-01-07",
"count": 1
},
{
"date": "2020-01-09",
"count": 1
},
{
"date": "2020-02-06",
"count": 1
},
{
"date": "2020-02-11",
"count": 1
},
{
"date": "2020-03-03",
"count": 1
},
{
"date": "2020-03-11",
"count": 1
},
{
"date": "2020-03-12",
"count": 2
},
{
"date": "2020-03-24",
"count": 1
},
{
"date": "2020-03-25",
"count": 1
},
{
"date": "2020-04-07",
"count": 1
},
{
"date": "2020-04-10",
"count": 1
},
{
"date": "2020-05-14",
"count": 1
},
{
"date": "2020-05-23",
"count": 1
},
{
"date": "2020-06-10",
"count": 1
},
{
"date": "2020-06-24",
"count": 1
},
{
"date": "2020-07-16",
"count": 1
},
{
"date": "2020-07-23",
"count": 1
},
{
"date": "2020-08-18",
"count": 1
},
{
"date": "2020-09-04",
"count": 2
},
{
"date": "2020-10-16",
"count": 1
},
{
"date": "2020-11-18",
"count": 1
},
{
"date": "2020-12-04",
"count": 1
},
{
"date": "2020-12-10",
"count": 1
},
{
"date": "2021-01-01",
"count": 1
},
{
"date": "2021-01-19",
"count": 1
},
{
"date": "2021-01-25",
"count": 1
},
{
"date": "2021-02-04",
"count": 1
},
{
"date": "2021-02-11",
"count": 1
},
{
"date": "2021-03-19",
"count": 1
},
{
"date": "2021-03-22",
"count": 1
},
{
"date": "2021-03-31",
"count": 1
},
{
"date": "2021-04-21",
"count": 1
},
{
"date": "2021-05-17",
"count": 1
},
{
"date": "2021-05-28",
"count": 1
},
{
"date": "2021-05-31",
"count": 1
},
{
"date": "2021-06-02",
"count": 2
},
{
"date": "2021-06-08",
"count": 1
},
{
"date": "2021-06-11",
"count": 1
},
{
"date": "2021-06-16",
"count": 1
},
{
"date": "2021-07-20",
"count": 1
},
{
"date": "2021-08-24",
"count": 1
},
{
"date": "2021-09-10",
"count": 1
},
{
"date": "2021-09-24",
"count": 1
},
{
"date": "2021-10-11",
"count": 1
},
{
"date": "2021-11-02",
"count": 2
},
{
"date": "2021-11-20",
"count": 1
},
{
"date": "2021-11-23",
"count": 1
},
{
"date": "2021-12-09",
"count": 1
},
{
"date": "2022-01-10",
"count": 1
},
{
"date": "2022-01-27",
"count": 1
},
{
"date": "2022-01-28",
"count": 2
},
{
"date": "2022-01-29",
"count": 1
},
{
"date": "2022-02-03",
"count": 1
},
{
"date": "2022-03-01",
"count": 1
},
{
"date": "2022-03-02",
"count": 1
},
{
"date": "2022-03-09",
"count": 1
},
{
"date": "2022-03-23",
"count": 1
},
{
"date": "2022-04-09",
"count": 1
},
{
"date": "2022-05-05",
"count": 1
},
{
"date": "2022-05-26",
"count": 1
},
{
"date": "2022-06-03",
"count": 1
},
{
"date": "2022-09-14",
"count": 1
},
{
"date": "2022-10-19",
"count": 1
},
{
"date": "2023-01-08",
"count": 1
},
{
"date": "2023-01-18",
"count": 1
},
{
"date": "2023-03-05",
"count": 1
},
{
"date": "2023-03-08",
"count": 1
},
{
"date": "2023-03-09",
"count": 1
},
{
"date": "2023-03-29",
"count": 1
},
{
"date": "2023-04-24",
"count": 1
},
{
"date": "2023-05-08",
"count": 1
},
{
"date": "2023-06-13",
"count": 1
},
{
"date": "2023-08-14",
"count": 1
},
{
"date": "2023-08-17",
"count": 1
},
{
"date": "2023-10-27",
"count": 1
},
{
"date": "2023-11-10",
"count": 1
},
{
"date": "2024-01-15",
"count": 1
},
{
"date": "2024-01-23",
"count": 1
},
{
"date": "2024-02-10",
"count": 1
},
{
"date": "2024-02-12",
"count": 1
},
{
"date": "2024-02-13",
"count": 1
},
{
"date": "2024-03-01",
"count": 1
},
{
"date": "2024-03-09",
"count": 1
},
{
"date": "2024-03-12",
"count": 1
},
{
"date": "2024-03-18",
"count": 1
},
{
"date": "2024-04-11",
"count": 1
},
{
"date": "2024-04-26",
"count": 1
},
{
"date": "2024-05-10",
"count": 1
},
{
"date": "2024-05-24",
"count": 1
},
{
"date": "2024-06-08",
"count": 1
},
{
"date": "2024-07-19",
"count": 1
},
{
"date": "2024-07-25",
"count": 1
},
{
"date": "2024-08-14",
"count": 1
},
{
"date": "2024-08-19",
"count": 1
},
{
"date": "2024-08-21",
"count": 1
},
{
"date": "2024-09-02",
"count": 1
},
{
"date": "2024-09-23",
"count": 1
},
{
"date": "2024-10-07",
"count": 1
},
{
"date": "2024-10-26",
"count": 1
},
{
"date": "2024-12-31",
"count": 1
},
{
"date": "2025-03-30",
"count": 1
},
{
"date": "2025-05-21",
"count": 1
},
{
"date": "2025-05-31",
"count": 1
},
{
"date": "2025-07-30",
"count": 1
},
{
"date": "2025-09-23",
"count": 1
},
{
"date": "2025-10-02",
"count": 1
},
{
"date": "2025-10-03",
"count": 1
},
{
"date": "2025-11-07",
"count": 1
},
{
"date": "2025-11-12",
"count": 1
},
{
"date": "2025-11-21",
"count": 1
},
{
"date": "2025-11-25",
"count": 1
},
{
"date": "2025-12-23",
"count": 1
},
{
"date": "2025-12-28",
"count": 1
},
{
"date": "2026-01-05",
"count": 1
},
{
"date": "2026-06-17",
"count": 2
}
],
"complete": true,
"collected": 404,
"total_forks": 414
},
"star_history": {
"days": [
{
"date": "2008-06-13",
"count": 79
},
{
"date": "2008-06-14",
"count": 1
},
{
"date": "2008-06-15",
"count": 1
},
{
"date": "2008-06-17",
"count": 2
},
{
"date": "2008-06-18",
"count": 1
},
{
"date": "2008-06-27",
"count": 1
},
{
"date": "2008-06-29",
"count": 1
},
{
"date": "2008-07-01",
"count": 1
},
{
"date": "2008-07-03",
"count": 1
},
{
"date": "2008-07-09",
"count": 1
},
{
"date": "2008-07-11",
"count": 1
},
{
"date": "2008-07-12",
"count": 1
},
{
"date": "2008-07-14",
"count": 1
},
{
"date": "2008-07-20",
"count": 1
},
{
"date": "2008-07-25",
"count": 3
},
{
"date": "2008-07-29",
"count": 1
},
{
"date": "2008-08-05",
"count": 1
},
{
"date": "2008-08-10",
"count": 1
},
{
"date": "2008-08-11",
"count": 1
},
{
"date": "2008-08-18",
"count": 1
},
{
"date": "2008-08-25",
"count": 1
},
{
"date": "2008-08-29",
"count": 1
},
{
"date": "2008-09-09",
"count": 1
},
{
"date": "2008-09-18",
"count": 1
},
{
"date": "2008-09-20",
"count": 1
},
{
"date": "2008-09-24",
"count": 1
},
{
"date": "2008-09-29",
"count": 1
},
{
"date": "2008-09-30",
"count": 2
},
{
"date": "2008-10-06",
"count": 2
},
{
"date": "2008-10-13",
"count": 2
},
{
"date": "2008-10-14",
"count": 1
},
{
"date": "2008-10-22",
"count": 1
},
{
"date": "2008-10-23",
"count": 1
},
{
"date": "2008-10-27",
"count": 1
},
{
"date": "2008-11-05",
"count": 1
},
{
"date": "2008-11-08",
"count": 1
},
{
"date": "2008-11-21",
"count": 1
},
{
"date": "2008-11-23",
"count": 1
},
{
"date": "2008-11-24",
"count": 1
},
{
"date": "2008-11-28",
"count": 1
},
{
"date": "2008-11-30",
"count": 1
},
{
"date": "2008-12-02",
"count": 1
},
{
"date": "2008-12-04",
"count": 1
},
{
"date": "2008-12-05",
"count": 1
},
{
"date": "2008-12-06",
"count": 3
},
{
"date": "2008-12-07",
"count": 1
},
{
"date": "2008-12-08",
"count": 1
},
{
"date": "2008-12-10",
"count": 1
},
{
"date": "2008-12-14",
"count": 1
},
{
"date": "2008-12-15",
"count": 1
},
{
"date": "2008-12-16",
"count": 1
},
{
"date": "2009-01-01",
"count": 1
},
{
"date": "2009-01-06",
"count": 2
},
{
"date": "2009-01-07",
"count": 1
},
{
"date": "2009-01-19",
"count": 1
},
{
"date": "2009-01-21",
"count": 1
},
{
"date": "2009-01-25",
"count": 1
},
{
"date": "2009-01-27",
"count": 3
},
{
"date": "2009-01-30",
"count": 1
},
{
"date": "2009-02-04",
"count": 1
},
{
"date": "2009-02-05",
"count": 1
},
{
"date": "2009-02-09",
"count": 1
},
{
"date": "2009-02-10",
"count": 1
},
{
"date": "2009-02-15",
"count": 1
},
{
"date": "2009-02-22",
"count": 1
},
{
"date": "2009-02-25",
"count": 1
},
{
"date": "2009-02-27",
"count": 1
},
{
"date": "2009-02-28",
"count": 1
},
{
"date": "2009-03-02",
"count": 2
},
{
"date": "2009-03-05",
"count": 1
},
{
"date": "2009-03-06",
"count": 1
},
{
"date": "2009-03-10",
"count": 1
},
{
"date": "2009-03-16",
"count": 1
},
{
"date": "2009-03-17",
"count": 1
},
{
"date": "2009-03-20",
"count": 1
},
{
"date": "2009-03-21",
"count": 1
},
{
"date": "2009-03-24",
"count": 1
},
{
"date": "2009-03-25",
"count": 2
},
{
"date": "2009-03-26",
"count": 1
},
{
"date": "2009-03-27",
"count": 1
},
{
"date": "2009-04-02",
"count": 1
},
{
"date": "2009-04-03",
"count": 1
},
{
"date": "2009-04-07",
"count": 1
},
{
"date": "2009-04-11",
"count": 1
},
{
"date": "2009-04-13",
"count": 1
},
{
"date": "2009-04-18",
"count": 1
},
{
"date": "2009-04-22",
"count": 1
},
{
"date": "2009-04-23",
"count": 2
},
{
"date": "2009-04-27",
"count": 1
},
{
"date": "2009-05-01",
"count": 1
},
{
"date": "2009-05-03",
"count": 1
},
{
"date": "2009-05-15",
"count": 1
},
{
"date": "2009-05-19",
"count": 1
},
{
"date": "2009-05-26",
"count": 1
},
{
"date": "2009-06-04",
"count": 1
},
{
"date": "2009-06-12",
"count": 1
},
{
"date": "2009-06-17",
"count": 2
},
{
"date": "2009-06-22",
"count": 1
},
{
"date": "2009-06-24",
"count": 1
},
{
"date": "2009-07-05",
"count": 1
},
{
"date": "2009-08-01",
"count": 1
},
{
"date": "2009-08-03",
"count": 1
},
{
"date": "2009-08-06",
"count": 1
},
{
"date": "2009-08-07",
"count": 1
},
{
"date": "2009-08-10",
"count": 1
},
{
"date": "2009-08-11",
"count": 1
},
{
"date": "2009-08-14",
"count": 1
},
{
"date": "2009-08-15",
"count": 1
},
{
"date": "2009-08-20",
"count": 1
},
{
"date": "2009-08-27",
"count": 1
},
{
"date": "2009-08-30",
"count": 1
},
{
"date": "2009-09-04",
"count": 1
},
{
"date": "2009-09-06",
"count": 1
},
{
"date": "2009-09-08",
"count": 1
},
{
"date": "2009-09-09",
"count": 1
},
{
"date": "2009-09-14",
"count": 1
},
{
"date": "2009-09-18",
"count": 1
},
{
"date": "2009-10-05",
"count": 2
},
{
"date": "2009-10-06",
"count": 1
},
{
"date": "2009-10-14",
"count": 1
},
{
"date": "2009-10-17",
"count": 1
},
{
"date": "2009-10-18",
"count": 1
},
{
"date": "2009-10-19",
"count": 2
},
{
"date": "2009-10-21",
"count": 1
},
{
"date": "2009-10-30",
"count": 1
},
{
"date": "2009-11-02",
"count": 1
},
{
"date": "2009-11-06",
"count": 1
},
{
"date": "2009-11-07",
"count": 1
},
{
"date": "2009-11-08",
"count": 1
},
{
"date": "2009-11-10",
"count": 1
},
{
"date": "2009-11-11",
"count": 1
},
{
"date": "2009-11-20",
"count": 1
},
{
"date": "2009-11-23",
"count": 1
},
{
"date": "2009-11-25",
"count": 1
},
{
"date": "2009-11-29",
"count": 1
},
{
"date": "2009-12-10",
"count": 1
},
{
"date": "2009-12-23",
"count": 1
},
{
"date": "2009-12-29",
"count": 1
},
{
"date": "2010-01-03",
"count": 1
},
{
"date": "2010-01-08",
"count": 1
},
{
"date": "2010-01-19",
"count": 1
},
{
"date": "2010-01-28",
"count": 2
},
{
"date": "2010-02-03",
"count": 1
},
{
"date": "2010-02-05",
"count": 1
},
{
"date": "2010-02-19",
"count": 1
},
{
"date": "2010-02-23",
"count": 1
},
{
"date": "2010-02-25",
"count": 1
},
{
"date": "2010-03-01",
"count": 1
},
{
"date": "2010-03-05",
"count": 1
},
{
"date": "2010-03-08",
"count": 1
},
{
"date": "2010-03-14",
"count": 1
},
{
"date": "2010-03-24",
"count": 1
},
{
"date": "2010-04-02",
"count": 1
},
{
"date": "2010-04-09",
"count": 1
},
{
"date": "2010-04-11",
"count": 1
},
{
"date": "2010-04-12",
"count": 1
},
{
"date": "2010-04-15",
"count": 1
},
{
"date": "2010-04-19",
"count": 1
},
{
"date": "2010-04-27",
"count": 1
},
{
"date": "2010-05-10",
"count": 1
},
{
"date": "2010-06-04",
"count": 1
},
{
"date": "2010-06-09",
"count": 1
},
{
"date": "2010-07-16",
"count": 1
},
{
"date": "2010-07-20",
"count": 1
},
{
"date": "2010-07-21",
"count": 1
},
{
"date": "2010-07-27",
"count": 2
},
{
"date": "2010-07-28",
"count": 1
},
{
"date": "2010-07-29",
"count": 1
},
{
"date": "2010-08-01",
"count": 1
},
{
"date": "2010-08-03",
"count": 1
},
{
"date": "2010-08-27",
"count": 1
},
{
"date": "2010-09-03",
"count": 1
},
{
"date": "2010-09-05",
"count": 1
},
{
"date": "2010-09-08",
"count": 1
},
{
"date": "2010-09-13",
"count": 1
},
{
"date": "2010-09-20",
"count": 1
},
{
"date": "2010-09-21",
"count": 1
},
{
"date": "2010-09-22",
"count": 2
},
{
"date": "2010-09-24",
"count": 1
},
{
"date": "2010-10-04",
"count": 1
},
{
"date": "2010-10-05",
"count": 1
},
{
"date": "2010-10-18",
"count": 2
},
{
"date": "2010-10-20",
"count": 1
},
{
"date": "2010-10-22",
"count": 1
},
{
"date": "2010-12-09",
"count": 1
},
{
"date": "2010-12-11",
"count": 1
},
{
"date": "2010-12-29",
"count": 1
},
{
"date": "2011-01-26",
"count": 1
},
{
"date": "2011-02-10",
"count": 1
},
{
"date": "2011-02-22",
"count": 1
},
{
"date": "2011-02-26",
"count": 1
},
{
"date": "2011-03-30",
"count": 2
},
{
"date": "2011-05-05",
"count": 1
},
{
"date": "2011-05-10",
"count": 1
},
{
"date": "2011-06-13",
"count": 1
},
{
"date": "2011-06-26",
"count": 1
},
{
"date": "2011-09-02",
"count": 1
},
{
"date": "2011-09-08",
"count": 1
},
{
"date": "2011-10-14",
"count": 1
},
{
"date": "2011-11-11",
"count": 1
},
{
"date": "2011-11-21",
"count": 1
},
{
"date": "2012-01-22",
"count": 1
},
{
"date": "2012-02-05",
"count": 1
},
{
"date": "2012-03-04",
"count": 1
},
{
"date": "2012-05-01",
"count": 1
},
{
"date": "2012-05-05",
"count": 1
},
{
"date": "2012-06-02",
"count": 1
},
{
"date": "2012-07-04",
"count": 1
},
{
"date": "2012-07-10",
"count": 1
},
{
"date": "2012-09-12",
"count": 1
},
{
"date": "2012-10-25",
"count": 1
},
{
"date": "2013-02-11",
"count": 1
},
{
"date": "2013-02-14",
"count": 1
},
{
"date": "2013-02-24",
"count": 1
},
{
"date": "2013-02-27",
"count": 2
},
{
"date": "2013-02-28",
"count": 1
},
{
"date": "2013-03-04",
"count": 2
},
{
"date": "2013-03-09",
"count": 1
},
{
"date": "2013-03-10",
"count": 1
},
{
"date": "2013-03-16",
"count": 1
},
{
"date": "2013-03-25",
"count": 1
},
{
"date": "2013-03-26",
"count": 1
},
{
"date": "2013-04-14",
"count": 1
},
{
"date": "2013-04-19",
"count": 1
},
{
"date": "2013-04-24",
"count": 1
},
{
"date": "2013-04-25",
"count": 1
},
{
"date": "2013-05-10",
"count": 1
},
{
"date": "2013-05-27",
"count": 1
},
{
"date": "2013-05-29",
"count": 1
},
{
"date": "2013-06-08",
"count": 2
},
{
"date": "2013-06-09",
"count": 2
},
{
"date": "2013-06-14",
"count": 1
},
{
"date": "2013-06-27",
"count": 1
},
{
"date": "2013-07-18",
"count": 1
},
{
"date": "2013-07-19",
"count": 1
},
{
"date": "2013-07-24",
"count": 1
},
{
"date": "2013-07-26",
"count": 1
},
{
"date": "2013-07-30",
"count": 1
},
{
"date": "2013-08-21",
"count": 1
},
{
"date": "2013-08-29",
"count": 1
},
{
"date": "2013-08-30",
"count": 1
},
{
"date": "2013-09-03",
"count": 1
},
{
"date": "2013-09-09",
"count": 1
},
{
"date": "2013-09-25",
"count": 1
},
{
"date": "2013-09-30",
"count": 1
},
{
"date": "2013-10-08",
"count": 1
},
{
"date": "2013-10-20",
"count": 1
},
{
"date": "2013-11-04",
"count": 1
},
{
"date": "2013-11-18",
"count": 1
},
{
"date": "2013-11-22",
"count": 1
},
{
"date": "2013-11-25",
"count": 1
},
{
"date": "2013-11-26",
"count": 2
},
{
"date": "2013-11-30",
"count": 1
},
{
"date": "2013-12-04",
"count": 2
},
{
"date": "2013-12-05",
"count": 1
},
{
"date": "2013-12-10",
"count": 1
},
{
"date": "2013-12-12",
"count": 1
},
{
"date": "2013-12-23",
"count": 1
},
{
"date": "2013-12-24",
"count": 1
},
{
"date": "2013-12-28",
"count": 2
},
{
"date": "2014-01-04",
"count": 1
},
{
"date": "2014-01-23",
"count": 1
},
{
"date": "2014-02-18",
"count": 1
},
{
"date": "2014-02-19",
"count": 1
},
{
"date": "2014-02-27",
"count": 1
},
{
"date": "2014-03-01",
"count": 1
},
{
"date": "2014-04-03",
"count": 2
},
{
"date": "2014-04-04",
"count": 1
},
{
"date": "2014-04-10",
"count": 1
},
{
"date": "2014-04-15",
"count": 1
},
{
"date": "2014-04-18",
"count": 2
},
{
"date": "2014-04-22",
"count": 1
},
{
"date": "2014-04-24",
"count": 1
},
{
"date": "2014-05-10",
"count": 1
},
{
"date": "2014-05-19",
"count": 1
},
{
"date": "2014-05-20",
"count": 1
},
{
"date": "2014-05-30",
"count": 1
},
{
"date": "2014-06-12",
"count": 1
},
{
"date": "2014-06-18",
"count": 1
},
{
"date": "2014-06-22",
"count": 1
},
{
"date": "2014-06-24",
"count": 2
},
{
"date": "2014-06-25",
"count": 1
},
{
"date": "2014-06-27",
"count": 1
},
{
"date": "2014-07-04",
"count": 1
},
{
"date": "2014-07-10",
"count": 1
},
{
"date": "2014-07-14",
"count": 1
},
{
"date": "2014-07-16",
"count": 2
},
{
"date": "2014-07-22",
"count": 1
},
{
"date": "2014-08-15",
"count": 1
},
{
"date": "2014-08-25",
"count": 1
},
{
"date": "2014-08-29",
"count": 1
},
{
"date": "2014-09-03",
"count": 1
},
{
"date": "2014-09-24",
"count": 1
},
{
"date": "2014-10-04",
"count": 1
},
{
"date": "2014-10-07",
"count": 1
},
{
"date": "2014-10-08",
"count": 1
},
{
"date": "2014-10-10",
"count": 1
},
{
"date": "2014-10-24",
"count": 1
},
{
"date": "2014-11-13",
"count": 1
},
{
"date": "2014-11-14",
"count": 1
},
{
"date": "2014-11-21",
"count": 1
},
{
"date": "2014-11-23",
"count": 1
},
{
"date": "2014-12-12",
"count": 1
},
{
"date": "2014-12-23",
"count": 1
},
{
"date": "2014-12-29",
"count": 1
},
{
"date": "2015-01-05",
"count": 1
},
{
"date": "2015-01-08",
"count": 1
},
{
"date": "2015-01-14",
"count": 1
},
{
"date": "2015-01-19",
"count": 1
},
{
"date": "2015-01-27",
"count": 1
},
{
"date": "2015-02-06",
"count": 1
},
{
"date": "2015-02-11",
"count": 1
},
{
"date": "2015-02-13",
"count": 1
},
{
"date": "2015-02-16",
"count": 1
},
{
"date": "2015-02-20",
"count": 1
},
{
"date": "2015-02-26",
"count": 4
},
{
"date": "2015-03-04",
"count": 2
},
{
"date": "2015-03-05",
"count": 1
},
{
"date": "2015-03-09",
"count": 1
},
{
"date": "2015-03-12",
"count": 1
},
{
"date": "2015-03-20",
"count": 1
},
{
"date": "2015-03-25",
"count": 1
},
{
"date": "2015-03-26",
"count": 1
},
{
"date": "2015-03-28",
"count": 1
},
{
"date": "2015-03-30",
"count": 1
},
{
"date": "2015-03-31",
"count": 1
},
{
"date": "2015-04-20",
"count": 1
},
{
"date": "2015-04-21",
"count": 1
},
{
"date": "2015-05-04",
"count": 1
},
{
"date": "2015-05-20",
"count": 1
},
{
"date": "2015-05-23",
"count": 1
},
{
"date": "2015-05-28",
"count": 1
},
{
"date": "2015-05-31",
"count": 1
},
{
"date": "2015-06-04",
"count": 1
},
{
"date": "2015-06-05",
"count": 1
},
{
"date": "2015-06-07",
"count": 1
},
{
"date": "2015-06-16",
"count": 1
},
{
"date": "2015-07-27",
"count": 1
},
{
"date": "2015-07-31",
"count": 1
},
{
"date": "2015-08-06",
"count": 2
},
{
"date": "2015-08-12",
"count": 2
},
{
"date": "2015-08-16",
"count": 1
},
{
"date": "2015-08-20",
"count": 1
},
{
"date": "2015-08-24",
"count": 1
},
{
"date": "2015-08-25",
"count": 1
},
{
"date": "2015-08-28",
"count": 1
},
{
"date": "2015-09-02",
"count": 1
},
{
"date": "2015-09-16",
"count": 1
},
{
"date": "2015-10-16",
"count": 1
},
{
"date": "2015-11-04",
"count": 2
},
{
"date": "2015-11-07",
"count": 1
},
{
"date": "2015-11-09",
"count": 1
},
{
"date": "2015-11-10",
"count": 1
},
{
"date": "2015-11-12",
"count": 1
},
{
"date": "2015-11-14",
"count": 1
},
{
"date": "2015-12-03",
"count": 1
},
{
"date": "2015-12-06",
"count": 1
},
{
"date": "2015-12-12",
"count": 1
},
{
"date": "2015-12-16",
"count": 1
},
{
"date": "2015-12-17",
"count": 1
},
{
"date": "2015-12-22",
"count": 1
},
{
"date": "2015-12-28",
"count": 1
},
{
"date": "2016-01-02",
"count": 1
},
{
"date": "2016-01-06",
"count": 1
},
{
"date": "2016-01-25",
"count": 1
},
{
"date": "2016-02-03",
"count": 1
},
{
"date": "2016-02-09",
"count": 1
},
{
"date": "2016-02-14",
"count": 1
},
{
"date": "2016-02-17",
"count": 1
},
{
"date": "2016-03-01",
"count": 2
},
{
"date": "2016-03-08",
"count": 1
},
{
"date": "2016-03-11",
"count": 1
},
{
"date": "2016-03-19",
"count": 1
},
{
"date": "2016-03-20",
"count": 1
},
{
"date": "2016-03-29",
"count": 1
},
{
"date": "2016-03-31",
"count": 1
},
{
"date": "2016-04-02",
"count": 1
},
{
"date": "2016-04-07",
"count": 1
},
{
"date": "2016-04-09",
"count": 1
},
{
"date": "2016-04-17",
"count": 1
},
{
"date": "2016-04-22",
"count": 1
},
{
"date": "2016-05-04",
"count": 1
},
{
"date": "2016-05-06",
"count": 1
},
{
"date": "2016-05-11",
"count": 1
},
{
"date": "2016-05-17",
"count": 1
},
{
"date": "2016-06-09",
"count": 1
},
{
"date": "2016-06-23",
"count": 1
},
{
"date": "2016-06-28",
"count": 1
},
{
"date": "2016-07-19",
"count": 1
},
{
"date": "2016-07-22",
"count": 1
},
{
"date": "2016-08-02",
"count": 1
},
{
"date": "2016-08-05",
"count": 1
},
{
"date": "2016-08-12",
"count": 1
},
{
"date": "2016-08-16",
"count": 1
},
{
"date": "2016-08-24",
"count": 1
},
{
"date": "2016-09-05",
"count": 1
},
{
"date": "2016-09-16",
"count": 1
},
{
"date": "2016-09-19",
"count": 1
},
{
"date": "2016-09-21",
"count": 1
},
{
"date": "2016-09-23",
"count": 1
},
{
"date": "2016-10-07",
"count": 1
},
{
"date": "2016-10-21",
"count": 1
},
{
"date": "2016-11-09",
"count": 1
},
{
"date": "2016-11-11",
"count": 1
},
{
"date": "2016-11-14",
"count": 1
},
{
"date": "2016-11-26",
"count": 1
},
{
"date": "2016-11-30",
"count": 1
},
{
"date": "2016-12-07",
"count": 1
},
{
"date": "2016-12-12",
"count": 1
},
{
"date": "2016-12-14",
"count": 2
},
{
"date": "2016-12-28",
"count": 1
},
{
"date": "2017-01-02",
"count": 2
},
{
"date": "2017-01-03",
"count": 2
},
{
"date": "2017-01-07",
"count": 1
},
{
"date": "2017-01-14",
"count": 1
},
{
"date": "2017-01-16",
"count": 1
},
{
"date": "2017-01-18",
"count": 1
},
{
"date": "2017-01-26",
"count": 1
},
{
"date": "2017-01-28",
"count": 1
},
{
"date": "2017-01-31",
"count": 1
},
{
"date": "2017-02-01",
"count": 1
},
{
"date": "2017-02-20",
"count": 1
},
{
"date": "2017-02-23",
"count": 1
},
{
"date": "2017-02-24",
"count": 1
},
{
"date": "2017-02-26",
"count": 1
},
{
"date": "2017-02-28",
"count": 2
},
{
"date": "2017-03-16",
"count": 1
},
{
"date": "2017-03-18",
"count": 1
},
{
"date": "2017-04-02",
"count": 1
},
{
"date": "2017-04-04",
"count": 1
},
{
"date": "2017-04-11",
"count": 1
},
{
"date": "2017-04-12",
"count": 1
},
{
"date": "2017-04-13",
"count": 1
},
{
"date": "2017-04-28",
"count": 1
},
{
"date": "2017-05-02",
"count": 1
},
{
"date": "2017-05-04",
"count": 1
},
{
"date": "2017-05-09",
"count": 1
},
{
"date": "2017-05-12",
"count": 1
},
{
"date": "2017-05-14",
"count": 1
},
{
"date": "2017-05-25",
"count": 1
},
{
"date": "2017-05-31",
"count": 1
},
{
"date": "2017-06-05",
"count": 1
},
{
"date": "2017-06-08",
"count": 1
},
{
"date": "2017-06-10",
"count": 1
},
{
"date": "2017-06-12",
"count": 1
},
{
"date": "2017-06-18",
"count": 1
},
{
"date": "2017-06-19",
"count": 2
},
{
"date": "2017-06-22",
"count": 2
},
{
"date": "2017-06-23",
"count": 3
},
{
"date": "2017-06-27",
"count": 1
},
{
"date": "2017-07-02",
"count": 1
},
{
"date": "2017-07-20",
"count": 1
},
{
"date": "2017-07-27",
"count": 1
},
{
"date": "2017-08-07",
"count": 1
},
{
"date": "2017-08-09",
"count": 1
},
{
"date": "2017-08-12",
"count": 1
},
{
"date": "2017-08-21",
"count": 1
},
{
"date": "2017-08-29",
"count": 1
},
{
"date": "2017-08-30",
"count": 1
},
{
"date": "2017-09-06",
"count": 1
},
{
"date": "2017-09-07",
"count": 1
},
{
"date": "2017-09-13",
"count": 1
},
{
"date": "2017-09-22",
"count": 1
},
{
"date": "2017-09-28",
"count": 1
},
{
"date": "2017-09-29",
"count": 1
},
{
"date": "2017-10-07",
"count": 1
},
{
"date": "2017-10-09",
"count": 1
},
{
"date": "2017-10-10",
"count": 1
},
{
"date": "2017-10-12",
"count": 1
},
{
"date": "2017-10-13",
"count": 1
},
{
"date": "2017-10-15",
"count": 1
},
{
"date": "2017-10-23",
"count": 1
},
{
"date": "2017-10-24",
"count": 1
},
{
"date": "2017-11-07",
"count": 2
},
{
"date": "2017-11-08",
"count": 1
},
{
"date": "2017-11-18",
"count": 1
},
{
"date": "2017-11-19",
"count": 1
},
{
"date": "2017-11-21",
"count": 1
},
{
"date": "2017-11-27",
"count": 1
},
{
"date": "2017-12-02",
"count": 1
},
{
"date": "2017-12-16",
"count": 1
},
{
"date": "2017-12-18",
"count": 1
},
{
"date": "2017-12-20",
"count": 1
},
{
"date": "2018-01-02",
"count": 1
},
{
"date": "2018-01-06",
"count": 1
},
{
"date": "2018-01-08",
"count": 1
},
{
"date": "2018-01-17",
"count": 1
},
{
"date": "2018-01-23",
"count": 1
},
{
"date": "2018-01-24",
"count": 1
},
{
"date": "2018-01-28",
"count": 2
},
{
"date": "2018-01-30",
"count": 1
},
{
"date": "2018-02-05",
"count": 1
},
{
"date": "2018-02-12",
"count": 1
},
{
"date": "2018-02-27",
"count": 1
},
{
"date": "2018-02-28",
"count": 1
},
{
"date": "2018-03-12",
"count": 1
},
{
"date": "2018-03-13",
"count": 2
},
{
"date": "2018-03-29",
"count": 1
},
{
"date": "2018-04-10",
"count": 2
},
{
"date": "2018-04-11",
"count": 1
},
{
"date": "2018-04-18",
"count": 1
},
{
"date": "2018-05-05",
"count": 1
},
{
"date": "2018-05-29",
"count": 1
},
{
"date": "2018-06-05",
"count": 1
},
{
"date": "2018-06-11",
"count": 1
},
{
"date": "2018-06-20",
"count": 1
},
{
"date": "2018-06-22",
"count": 1
},
{
"date": "2018-07-03",
"count": 1
},
{
"date": "2018-07-16",
"count": 1
},
{
"date": "2018-07-20",
"count": 1
},
{
"date": "2018-07-26",
"count": 1
},
{
"date": "2018-07-28",
"count": 1
},
{
"date": "2018-08-03",
"count": 1
},
{
"date": "2018-08-06",
"count": 1
},
{
"date": "2018-08-18",
"count": 1
},
{
"date": "2018-08-22",
"count": 1
},
{
"date": "2018-08-24",
"count": 1
},
{
"date": "2018-08-28",
"count": 1
},
{
"date": "2018-09-06",
"count": 1
},
{
"date": "2018-09-14",
"count": 1
},
{
"date": "2018-09-20",
"count": 1
},
{
"date": "2018-09-24",
"count": 1
},
{
"date": "2018-09-25",
"count": 1
},
{
"date": "2018-09-26",
"count": 1
},
{
"date": "2018-09-28",
"count": 1
},
{
"date": "2018-10-01",
"count": 1
},
{
"date": "2018-10-04",
"count": 1
},
{
"date": "2018-10-05",
"count": 1
},
{
"date": "2018-10-08",
"count": 2
},
{
"date": "2018-10-16",
"count": 1
},
{
"date": "2018-10-18",
"count": 2
},
{
"date": "2018-10-22",
"count": 2
},
{
"date": "2018-10-23",
"count": 1
},
{
"date": "2018-10-25",
"count": 1
},
{
"date": "2018-11-07",
"count": 1
},
{
"date": "2018-11-11",
"count": 1
},
{
"date": "2018-11-23",
"count": 1
},
{
"date": "2018-11-28",
"count": 1
},
{
"date": "2018-11-29",
"count": 1
},
{
"date": "2018-12-02",
"count": 1
},
{
"date": "2018-12-04",
"count": 1
},
{
"date": "2018-12-12",
"count": 1
},
{
"date": "2018-12-13",
"count": 1
},
{
"date": "2018-12-18",
"count": 1
},
{
"date": "2019-01-03",
"count": 2
},
{
"date": "2019-01-07",
"count": 1
},
{
"date": "2019-01-08",
"count": 2
},
{
"date": "2019-01-09",
"count": 1
},
{
"date": "2019-01-14",
"count": 1
},
{
"date": "2019-01-23",
"count": 1
},
{
"date": "2019-01-24",
"count": 1
},
{
"date": "2019-01-28",
"count": 1
},
{
"date": "2019-01-29",
"count": 1
},
{
"date": "2019-02-18",
"count": 1
},
{
"date": "2019-03-02",
"count": 1
},
{
"date": "2019-03-08",
"count": 1
},
{
"date": "2019-03-14",
"count": 1
},
{
"date": "2019-03-16",
"count": 1
},
{
"date": "2019-03-21",
"count": 1
},
{
"date": "2019-04-11",
"count": 1
},
{
"date": "2019-04-12",
"count": 1
},
{
"date": "2019-04-13",
"count": 1
},
{
"date": "2019-04-24",
"count": 1
},
{
"date": "2019-04-30",
"count": 1
},
{
"date": "2019-05-02",
"count": 1
},
{
"date": "2019-05-15",
"count": 1
},
{
"date": "2019-05-19",
"count": 1
},
{
"date": "2019-05-22",
"count": 3
},
{
"date": "2019-05-27",
"count": 1
},
{
"date": "2019-05-28",
"count": 1
},
{
"date": "2019-05-30",
"count": 1
},
{
"date": "2019-05-31",
"count": 1
},
{
"date": "2019-06-04",
"count": 1
},
{
"date": "2019-06-07",
"count": 2
},
{
"date": "2019-06-13",
"count": 1
},
{
"date": "2019-06-29",
"count": 1
},
{
"date": "2019-07-07",
"count": 1
},
{
"date": "2019-07-10",
"count": 2
},
{
"date": "2019-07-15",
"count": 1
},
{
"date": "2019-07-16",
"count": 1
},
{
"date": "2019-07-20",
"count": 1
},
{
"date": "2019-07-25",
"count": 1
},
{
"date": "2019-08-02",
"count": 1
},
{
"date": "2019-08-07",
"count": 1
},
{
"date": "2019-08-09",
"count": 1
},
{
"date": "2019-08-12",
"count": 1
},
{
"date": "2019-08-17",
"count": 1
},
{
"date": "2019-08-28",
"count": 1
},
{
"date": "2019-08-30",
"count": 1
},
{
"date": "2019-08-31",
"count": 1
},
{
"date": "2019-09-02",
"count": 1
},
{
"date": "2019-09-06",
"count": 1
},
{
"date": "2019-09-11",
"count": 1
},
{
"date": "2019-09-25",
"count": 1
},
{
"date": "2019-09-28",
"count": 1
},
{
"date": "2019-09-29",
"count": 1
},
{
"date": "2019-10-11",
"count": 1
},
{
"date": "2019-10-14",
"count": 2
},
{
"date": "2019-10-28",
"count": 1
},
{
"date": "2019-11-04",
"count": 1
},
{
"date": "2019-11-06",
"count": 1
},
{
"date": "2019-11-07",
"count": 1
},
{
"date": "2019-11-14",
"count": 1
},
{
"date": "2019-11-29",
"count": 1
},
{
"date": "2019-11-30",
"count": 1
},
{
"date": "2019-12-15",
"count": 1
},
{
"date": "2019-12-23",
"count": 1
},
{
"date": "2019-12-27",
"count": 1
},
{
"date": "2019-12-30",
"count": 1
},
{
"date": "2020-01-04",
"count": 1
},
{
"date": "2020-01-09",
"count": 1
},
{
"date": "2020-01-15",
"count": 1
},
{
"date": "2020-01-31",
"count": 1
},
{
"date": "2020-02-05",
"count": 1
},
{
"date": "2020-02-19",
"count": 1
},
{
"date": "2020-02-22",
"count": 1
},
{
"date": "2020-03-04",
"count": 1
},
{
"date": "2020-03-11",
"count": 1
},
{
"date": "2020-03-30",
"count": 1
},
{
"date": "2020-04-10",
"count": 1
},
{
"date": "2020-04-15",
"count": 1
},
{
"date": "2020-04-23",
"count": 1
},
{
"date": "2020-04-24",
"count": 1
},
{
"date": "2020-04-27",
"count": 2
},
{
"date": "2020-05-04",
"count": 1
},
{
"date": "2020-05-07",
"count": 1
},
{
"date": "2020-05-13",
"count": 1
},
{
"date": "2020-05-14",
"count": 1
},
{
"date": "2020-05-30",
"count": 1
},
{
"date": "2020-06-08",
"count": 1
},
{
"date": "2020-06-14",
"count": 1
},
{
"date": "2020-06-18",
"count": 1
},
{
"date": "2020-06-26",
"count": 2
},
{
"date": "2020-06-28",
"count": 2
},
{
"date": "2020-07-13",
"count": 1
},
{
"date": "2020-07-18",
"count": 1
},
{
"date": "2020-08-01",
"count": 1
},
{
"date": "2020-08-07",
"count": 1
},
{
"date": "2020-08-10",
"count": 1
},
{
"date": "2020-08-17",
"count": 1
},
{
"date": "2020-08-20",
"count": 1
},
{
"date": "2020-09-08",
"count": 1
},
{
"date": "2020-09-21",
"count": 2
},
{
"date": "2020-09-29",
"count": 1
},
{
"date": "2020-10-04",
"count": 1
},
{
"date": "2020-10-08",
"count": 1
},
{
"date": "2020-10-15",
"count": 1
},
{
"date": "2020-10-26",
"count": 1
},
{
"date": "2020-10-28",
"count": 1
},
{
"date": "2020-10-30",
"count": 1
},
{
"date": "2020-11-05",
"count": 1
},
{
"date": "2020-11-09",
"count": 1
},
{
"date": "2020-11-20",
"count": 1
},
{
"date": "2020-12-02",
"count": 1
},
{
"date": "2020-12-06",
"count": 1
},
{
"date": "2020-12-24",
"count": 1
},
{
"date": "2020-12-27",
"count": 1
},
{
"date": "2021-01-30",
"count": 1
},
{
"date": "2021-02-02",
"count": 2
},
{
"date": "2021-02-11",
"count": 1
},
{
"date": "2021-02-19",
"count": 1
},
{
"date": "2021-02-22",
"count": 1
},
{
"date": "2021-03-23",
"count": 1
},
{
"date": "2021-04-20",
"count": 1
},
{
"date": "2021-04-25",
"count": 1
},
{
"date": "2021-04-28",
"count": 1
},
{
"date": "2021-04-29",
"count": 1
},
{
"date": "2021-05-04",
"count": 1
},
{
"date": "2021-05-05",
"count": 2
},
{
"date": "2021-05-08",
"count": 1
},
{
"date": "2021-05-10",
"count": 2
},
{
"date": "2021-05-16",
"count": 1
},
{
"date": "2021-05-30",
"count": 1
},
{
"date": "2021-07-08",
"count": 2
},
{
"date": "2021-07-16",
"count": 1
},
{
"date": "2021-08-04",
"count": 1
},
{
"date": "2021-08-16",
"count": 1
},
{
"date": "2021-09-07",
"count": 1
},
{
"date": "2021-09-09",
"count": 1
},
{
"date": "2021-09-18",
"count": 1
},
{
"date": "2021-09-22",
"count": 1
},
{
"date": "2021-09-28",
"count": 1
},
{
"date": "2021-10-06",
"count": 1
},
{
"date": "2021-10-10",
"count": 1
},
{
"date": "2021-10-15",
"count": 1
},
{
"date": "2021-11-05",
"count": 1
},
{
"date": "2021-11-08",
"count": 1
},
{
"date": "2021-11-22",
"count": 1
},
{
"date": "2021-12-06",
"count": 1
},
{
"date": "2021-12-11",
"count": 1
},
{
"date": "2021-12-15",
"count": 2
},
{
"date": "2021-12-19",
"count": 1
},
{
"date": "2021-12-22",
"count": 2
},
{
"date": "2021-12-23",
"count": 2
},
{
"date": "2021-12-31",
"count": 1
},
{
"date": "2022-01-08",
"count": 1
},
{
"date": "2022-01-10",
"count": 1
},
{
"date": "2022-01-12",
"count": 2
},
{
"date": "2022-01-17",
"count": 1
},
{
"date": "2022-01-28",
"count": 1
},
{
"date": "2022-02-02",
"count": 1
},
{
"date": "2022-02-07",
"count": 1
},
{
"date": "2022-03-22",
"count": 1
},
{
"date": "2022-04-03",
"count": 1
},
{
"date": "2022-04-19",
"count": 1
},
{
"date": "2022-04-21",
"count": 1
},
{
"date": "2022-05-07",
"count": 1
},
{
"date": "2022-05-13",
"count": 1
},
{
"date": "2022-05-18",
"count": 1
},
{
"date": "2022-05-31",
"count": 1
},
{
"date": "2022-07-03",
"count": 1
},
{
"date": "2022-07-10",
"count": 1
},
{
"date": "2022-07-11",
"count": 1
},
{
"date": "2022-07-21",
"count": 1
},
{
"date": "2022-08-31",
"count": 1
},
{
"date": "2022-09-08",
"count": 2
},
{
"date": "2022-09-13",
"count": 1
},
{
"date": "2022-09-15",
"count": 2
},
{
"date": "2022-09-19",
"count": 1
},
{
"date": "2022-09-28",
"count": 1
},
{
"date": "2022-10-01",
"count": 1
},
{
"date": "2022-10-07",
"count": 1
},
{
"date": "2022-10-09",
"count": 1
},
{
"date": "2022-10-18",
"count": 1
},
{
"date": "2022-10-20",
"count": 1
},
{
"date": "2022-10-25",
"count": 1
},
{
"date": "2022-11-03",
"count": 1
},
{
"date": "2022-11-08",
"count": 1
},
{
"date": "2022-11-28",
"count": 1
},
{
"date": "2022-12-14",
"count": 1
},
{
"date": "2022-12-19",
"count": 1
},
{
"date": "2022-12-27",
"count": 1
},
{
"date": "2023-01-04",
"count": 1
},
{
"date": "2023-01-06",
"count": 1
},
{
"date": "2023-01-09",
"count": 1
},
{
"date": "2023-01-18",
"count": 1
},
{
"date": "2023-02-15",
"count": 1
},
{
"date": "2023-02-16",
"count": 1
},
{
"date": "2023-02-22",
"count": 1
},
{
"date": "2023-02-23",
"count": 1
},
{
"date": "2023-03-04",
"count": 1
},
{
"date": "2023-03-09",
"count": 1
},
{
"date": "2023-04-26",
"count": 1
},
{
"date": "2023-04-27",
"count": 1
},
{
"date": "2023-05-02",
"count": 1
},
{
"date": "2023-05-03",
"count": 1
},
{
"date": "2023-05-16",
"count": 1
},
{
"date": "2023-05-17",
"count": 1
},
{
"date": "2023-05-24",
"count": 1
},
{
"date": "2023-06-02",
"count": 2
},
{
"date": "2023-06-03",
"count": 1
},
{
"date": "2023-06-22",
"count": 1
},
{
"date": "2023-08-23",
"count": 1
},
{
"date": "2023-09-05",
"count": 1
},
{
"date": "2023-09-08",
"count": 1
},
{
"date": "2023-10-02",
"count": 1
},
{
"date": "2023-10-07",
"count": 1
},
{
"date": "2023-12-04",
"count": 2
},
{
"date": "2023-12-08",
"count": 1
},
{
"date": "2024-01-03",
"count": 1
},
{
"date": "2024-01-15",
"count": 1
},
{
"date": "2024-02-23",
"count": 1
},
{
"date": "2024-03-04",
"count": 1
},
{
"date": "2024-03-10",
"count": 1
},
{
"date": "2024-03-18",
"count": 1
},
{
"date": "2024-04-01",
"count": 1
},
{
"date": "2024-04-18",
"count": 1
},
{
"date": "2024-04-26",
"count": 1
},
{
"date": "2024-04-27",
"count": 1
},
{
"date": "2024-05-02",
"count": 1
},
{
"date": "2024-05-12",
"count": 1
},
{
"date": "2024-05-22",
"count": 1
},
{
"date": "2024-05-29",
"count": 1
},
{
"date": "2024-06-21",
"count": 1
},
{
"date": "2024-07-18",
"count": 1
},
{
"date": "2024-07-21",
"count": 1
},
{
"date": "2024-07-23",
"count": 1
},
{
"date": "2024-08-16",
"count": 1
},
{
"date": "2024-08-28",
"count": 1
},
{
"date": "2024-09-13",
"count": 1
},
{
"date": "2024-09-16",
"count": 3
},
{
"date": "2024-09-17",
"count": 1
},
{
"date": "2024-09-20",
"count": 1
},
{
"date": "2024-09-23",
"count": 1
},
{
"date": "2024-10-05",
"count": 1
},
{
"date": "2024-10-14",
"count": 1
},
{
"date": "2024-10-25",
"count": 1
},
{
"date": "2024-11-18",
"count": 1
},
{
"date": "2024-11-23",
"count": 1
},
{
"date": "2024-12-02",
"count": 1
},
{
"date": "2024-12-05",
"count": 1
},
{
"date": "2024-12-16",
"count": 1
},
{
"date": "2024-12-21",
"count": 1
},
{
"date": "2025-01-04",
"count": 1
},
{
"date": "2025-01-07",
"count": 2
},
{
"date": "2025-01-11",
"count": 1
},
{
"date": "2025-01-22",
"count": 1
},
{
"date": "2025-02-28",
"count": 1
},
{
"date": "2025-03-03",
"count": 1
},
{
"date": "2025-04-19",
"count": 1
},
{
"date": "2025-06-03",
"count": 1
},
{
"date": "2025-06-07",
"count": 2
},
{
"date": "2025-06-11",
"count": 1
},
{
"date": "2025-06-23",
"count": 1
},
{
"date": "2025-07-09",
"count": 2
},
{
"date": "2025-07-27",
"count": 1
},
{
"date": "2025-08-12",
"count": 1
},
{
"date": "2025-09-01",
"count": 1
},
{
"date": "2025-09-16",
"count": 1
},
{
"date": "2025-10-10",
"count": 2
},
{
"date": "2025-10-20",
"count": 1
},
{
"date": "2025-10-24",
"count": 1
},
{
"date": "2025-11-16",
"count": 1
},
{
"date": "2025-11-18",
"count": 1
},
{
"date": "2025-11-27",
"count": 1
},
{
"date": "2025-12-21",
"count": 1
},
{
"date": "2025-12-25",
"count": 1
},
{
"date": "2026-01-29",
"count": 1
},
{
"date": "2026-02-02",
"count": 1
},
{
"date": "2026-02-06",
"count": 1
},
{
"date": "2026-03-02",
"count": 1
},
{
"date": "2026-03-13",
"count": 1
},
{
"date": "2026-04-17",
"count": 1
},
{
"date": "2026-05-01",
"count": 1
},
{
"date": "2026-05-13",
"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
},
{
"date": "2026-06-18",
"count": 1
}
],
"complete": false,
"collected": 1000,
"total_stars": 1029
},
"open_issues_and_prs": 59
},
"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": 21637,
"source_files_sampled": 90,
"oversized_source_files": 0,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"Gemfile"
],
"advisories": {
"error": null,
"scope": "repository_graph",
"source": "osv",
"findings": [],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 1,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 6,
"direct_affected_count": 0
},
"ecosystems": [
"rubygems"
],
"dependencies": [
{
"name": "mocha",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": "~> 2.1.0"
},
{
"name": "test_declarative",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": "0.0.6"
},
{
"name": "rake",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": "~> 13"
},
{
"name": "minitest",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": "~> 5.14"
},
{
"name": "json",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "racc",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "json",
"direct": true,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "minitest",
"direct": true,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "mocha",
"direct": true,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "racc",
"direct": true,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "rake",
"direct": true,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "test_declarative",
"direct": true,
"version": "0.0.6",
"ecosystem": "rubygems"
},
{
"name": "concurrent-ruby",
"direct": false,
"version": null,
"ecosystem": "rubygems"
}
],
"collected": true,
"truncated": false,
"total_count": 7,
"direct_count": 6,
"indirect_count": 1
}
},
"maintainership": {
"issues": {
"open_prs": 7,
"merged_prs": 271,
"open_issues": 52,
"closed_ratio": 0.855,
"closed_issues": 306,
"closed_unmerged_prs": 99
},
"bus_factor": 2,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "radar",
"commits": 419,
"avatar_url": "https://avatars.githubusercontent.com/u/2687?v=4"
},
{
"type": "User",
"login": "carlosantoniodasilva",
"commits": 102,
"avatar_url": "https://avatars.githubusercontent.com/u/26328?v=4"
},
{
"type": "User",
"login": "josevalim",
"commits": 70,
"avatar_url": "https://avatars.githubusercontent.com/u/9582?v=4"
},
{
"type": "User",
"login": "tigrish",
"commits": 44,
"avatar_url": "https://avatars.githubusercontent.com/u/37666?v=4"
},
{
"type": "User",
"login": "knapo",
"commits": 31,
"avatar_url": "https://avatars.githubusercontent.com/u/63880?v=4"
},
{
"type": "User",
"login": "lawrencepit",
"commits": 22,
"avatar_url": "https://avatars.githubusercontent.com/u/115?v=4"
},
{
"type": "User",
"login": "amatsuda",
"commits": 21,
"avatar_url": "https://avatars.githubusercontent.com/u/11493?v=4"
},
{
"type": "User",
"login": "movermeyer",
"commits": 19,
"avatar_url": "https://avatars.githubusercontent.com/u/1459385?v=4"
},
{
"type": "User",
"login": "jeremy",
"commits": 12,
"avatar_url": "https://avatars.githubusercontent.com/u/199?v=4"
},
{
"type": "User",
"login": "paarthmadan",
"commits": 11,
"avatar_url": "https://avatars.githubusercontent.com/u/8986140?v=4"
}
],
"contributors_sampled": 100,
"top_contributor_share": 0.425
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"ruby.yml"
],
"has_docs_dir": false,
"linter_configs": [],
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": null,
"reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 5,
"reason": "5 out of 9 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": 4,
"reason": "Found 6/15 approved changesets -- score normalized to 4",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 69 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": 10,
"reason": "19 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 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": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 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": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 10,
"reason": "0 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "8beba78761637f6677fa94e26e19b50790161f78",
"ran_at": "2026-07-21T23:35:11Z",
"aggregate_score": 4.9,
"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-06-19T21:56:16Z",
"oldest_open_prs": [
{
"number": 490,
"created_at": "2019-09-25T12:12:10Z",
"last_comment_at": "2021-05-21T10:59:16Z",
"last_comment_author": "papa-cool"
},
{
"number": 674,
"created_at": "2023-08-17T06:03:02Z",
"last_comment_at": "2023-10-16T03:56:06Z",
"last_comment_author": "davidgumberg"
},
{
"number": 707,
"created_at": "2024-10-26T14:43:29Z",
"last_comment_at": "2025-07-22T06:08:20Z",
"last_comment_author": "hatajoe"
},
{
"number": 716,
"created_at": "2025-05-31T10:50:58Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 718,
"created_at": "2025-07-30T20:19:58Z",
"last_comment_at": "2025-08-04T19:54:15Z",
"last_comment_author": "aaronskiba"
},
{
"number": 727,
"created_at": "2025-11-25T14:18:19Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 728,
"created_at": "2025-12-23T08:23:33Z",
"last_comment_at": null,
"last_comment_author": null
}
],
"last_merged_pr_at": "2026-06-19T21:49:36Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 115,
"created_at": "2011-11-04T15:31:44Z",
"last_comment_at": "2024-12-09T09:16:36Z",
"last_comment_author": "voxik"
},
{
"number": 123,
"created_at": "2011-11-11T11:17:54Z",
"last_comment_at": "2026-03-30T08:15:25Z",
"last_comment_author": "kwunlokng"
},
{
"number": 124,
"created_at": "2011-11-21T22:40:56Z",
"last_comment_at": "2024-10-24T09:58:32Z",
"last_comment_author": "papa-cool"
},
{
"number": 203,
"created_at": "2013-05-06T15:58:05Z",
"last_comment_at": "2016-12-04T14:26:48Z",
"last_comment_author": "sandstrom"
},
{
"number": 207,
"created_at": "2013-06-12T14:24:08Z",
"last_comment_at": "2016-11-17T22:13:58Z",
"last_comment_author": "radar"
},
{
"number": 247,
"created_at": "2014-03-13T06:47:18Z",
"last_comment_at": "2016-11-20T23:27:18Z",
"last_comment_author": "radar"
},
{
"number": 278,
"created_at": "2014-07-29T08:09:11Z",
"last_comment_at": "2023-06-17T17:04:53Z",
"last_comment_author": "capripot"
},
{
"number": 281,
"created_at": "2014-08-25T22:32:44Z",
"last_comment_at": "2017-06-05T22:59:38Z",
"last_comment_author": "EddieOne"
},
{
"number": 293,
"created_at": "2014-10-17T15:48:23Z",
"last_comment_at": "2016-11-20T23:46:32Z",
"last_comment_author": "radar"
},
{
"number": 303,
"created_at": "2015-01-15T16:53:12Z",
"last_comment_at": "2016-11-20T23:48:39Z",
"last_comment_author": "radar"
},
{
"number": 316,
"created_at": "2015-05-14T06:48:09Z",
"last_comment_at": "2017-11-09T15:28:35Z",
"last_comment_author": "stereobooster"
},
{
"number": 368,
"created_at": "2017-05-11T09:19:51Z",
"last_comment_at": "2018-10-10T19:55:31Z",
"last_comment_author": "radar"
},
{
"number": 372,
"created_at": "2017-06-05T21:44:42Z",
"last_comment_at": "2021-11-04T01:25:48Z",
"last_comment_author": "movermeyer"
},
{
"number": 418,
"created_at": "2018-07-09T09:50:57Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 428,
"created_at": "2018-08-17T18:46:49Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 430,
"created_at": "2018-09-21T15:15:04Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 431,
"created_at": "2018-09-22T07:44:49Z",
"last_comment_at": "2020-08-28T16:32:06Z",
"last_comment_author": "rahim"
},
{
"number": 467,
"created_at": "2019-02-11T06:31:03Z",
"last_comment_at": "2024-01-13T04:46:35Z",
"last_comment_author": "courtsimas"
},
{
"number": 493,
"created_at": "2019-10-13T12:01:48Z",
"last_comment_at": "2021-05-25T18:17:45Z",
"last_comment_author": "papa-cool"
},
{
"number": 513,
"created_at": "2020-01-14T21:59:50Z",
"last_comment_at": "2020-01-14T23:25:02Z",
"last_comment_author": "radar"
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/ruby-i18n/i18n",
"host": "github.com",
"name": "i18n",
"owner": "ruby-i18n"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 65,
"inputs": {
"security": 59,
"vitality": 64,
"community": 73,
"governance": 70,
"engineering": 59
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "moderate",
"name": "Vitality",
"value": 64,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "moderate",
"name": "Development activity",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"commits_last_year": 42,
"human_commit_share": 1,
"days_since_last_push": 32,
"active_weeks_last_year": 11
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 32 days ago",
"points": 18,
"status": "partial",
"details": [
{
"code": "push_recency",
"params": {
"days": 32
}
}
],
"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": "42 commits in the last year",
"points": 14.7,
"status": "partial",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 42
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "19 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "good",
"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": 84,
"inputs": {
"releases_count": 55,
"latest_release_tag": "v1.15.2",
"releases_from_tags": false,
"days_since_latest_release": 32,
"mean_days_between_releases": 123.5
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "55 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 55
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 32 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 32
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~123.5 days",
"points": 12.6,
"status": "partial",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 123.5
}
}
],
"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": 32,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 32 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 32
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "good",
"name": "Community & Adoption",
"value": 73,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "good",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 77,
"inputs": {
"forks": 414,
"stars": 1029,
"watchers": 16,
"growth_state": "organic",
"growth_factor_pct": 100
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "1,029 stars",
"points": 48.9,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 1029
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "414 forks",
"points": 21.8,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 414
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "16 watchers",
"points": 6.5,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 16
}
}
],
"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": [
"i18n"
],
"dependents": null,
"ecosystems": "rubygems",
"total_downloads": 1392155102,
"monthly_downloads": null
},
"components": [
{
"key": "total_downloads",
"name": "Total downloads",
"detail": "1,392,155,102 downloads all-time across rubygems",
"points": 80,
"status": "met",
"details": [
{
"code": "downloads_total",
"params": {
"count": 1392155102,
"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": 70,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "moderate",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 62,
"inputs": {
"bus_factor": 2,
"contributors_sampled": 100,
"top_contributor_share": 0.425
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "2 contributor(s) cover half of all commits",
"points": 25.2,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 2
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 42% of commits",
"points": 12.9,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 42
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "100 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 100
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 69 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 74,
"inputs": {
"merged_prs": 271,
"open_issues": 52,
"closed_issues": 306,
"issue_closed_ratio": 0.855,
"closed_unmerged_prs": 99
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "86% of issues closed",
"points": 40,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 86
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "271/370 decided PRs merged",
"points": 28,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 271,
"decided": 370
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 6/15 approved changesets -- score normalized to 4",
"points": 6,
"status": "partial",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 53,
"inputs": {
"followers": 5,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "ruby-i18n",
"public_repos": 4,
"account_age_days": 4386
},
"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": "5 followers of ruby-i18n",
"points": 5.6,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 5,
"login": "ruby-i18n"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "4 public repos, account ~12 yr old",
"points": 17.1,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 4
}
},
{
"code": "account_age_years",
"params": {
"years": 12
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"i18n"
],
"ecosystems": "rubygems",
"any_deprecated": false,
"min_days_since_publish": 32
},
"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 32 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 32
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "89 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 89
}
}
],
"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": 59,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "moderate",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 58,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "1 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 1
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "5 out of 9 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": 60,
"inputs": {
"topics": [
"ruby",
"i18n"
],
"has_wiki": true,
"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": "2 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 2
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "moderate",
"name": "Security",
"value": 59,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Branch-Protection, Packaging, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"branch_protection",
"packaging",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 49,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 15,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 3,
"scorecard_aggregate": 4.9
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "5 out of 9 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 6/15 approved changesets -- score normalized to 4",
"points": 3,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 69 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": "19 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "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 0",
"points": 0,
"status": "missed",
"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": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "0 existing vulnerabilities detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "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 1 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": 1
}
},
{
"code": "advisories_unassessed",
"params": {
"count": 6
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 0,
"affected_packages": 0,
"assessed_packages": 1,
"unassessed_packages": 6,
"affected_by_severity": "none",
"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": 1,
"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": 20
},
"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": 31,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "critical",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 27,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.5,
"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": "50 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 26.7,
"status": "partial",
"details": [
{
"code": "legible_history",
"params": {
"legible": 50,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "critical",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 26,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [],
"has_dockerfile": false,
"typed_language": false,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [],
"agent_commit_share": 0.02,
"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": null,
"points": 0,
"status": "missed",
"details": [],
"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": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "2 of the last 100 commits agent-authored or agent-credited",
"points": 4,
"status": "partial",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 2,
"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": 21637,
"source_files_sampled": 90,
"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/90 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 90,
"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-21T23:35:37.975900Z",
"schema_version": "0.26.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/r/ruby-i18n/i18n.svg",
"full_name": "ruby-i18n/i18n",
"license_state": "standard",
"license_spdx": "MIT"
}