Informe JSON sin procesar legible por máquina
{
"data": {
"repo": {
"topics": [],
"is_fork": false,
"size_kb": 6076,
"has_wiki": true,
"homepage": null,
"languages": {
"Lua": 3645,
"Ruby": 3758309,
"Shell": 6897,
"Dockerfile": 2516
},
"pushed_at": "2026-07-18T21:13:12Z",
"created_at": "2008-01-27T17:23:23Z",
"owner_type": "Organization",
"updated_at": "2026-07-18T21:11:13Z",
"description": "Ruby/Git is a Ruby library that can be used to create, read and manipulate Git repositories by wrapping system calls to the git binary.",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "Ruby",
"significant_languages": [
"Ruby"
]
},
"owner": {
"blog": null,
"name": null,
"type": "Organization",
"login": "ruby-git",
"company": null,
"location": null,
"followers": 4,
"avatar_url": "https://avatars.githubusercontent.com/u/30619330?v=4",
"created_at": "2017-08-01T08:09:38Z",
"is_verified": null,
"public_repos": 1,
"account_age_days": 3276
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "pre/v5.0.0.beta.5",
"kind": "other",
"published_at": "2026-07-14T01:08:33Z"
},
{
"tag": "pre/v5.0.0.beta.4",
"kind": "other",
"published_at": "2026-07-12T00:10:18Z"
},
{
"tag": "v4.4.0",
"kind": "minor",
"published_at": "2026-07-11T23:03:34Z"
},
{
"tag": "pre/v5.0.0.beta.3",
"kind": "other",
"published_at": "2026-06-26T23:19:53Z"
},
{
"tag": "pre/v5.0.0.beta.2",
"kind": "other",
"published_at": "2026-06-26T00:31:53Z"
},
{
"tag": "pre/v5.0.0.beta.1",
"kind": "other",
"published_at": "2026-06-04T19:11:03Z"
},
{
"tag": "v4.3.2",
"kind": "patch",
"published_at": "2026-03-31T16:34:47Z"
},
{
"tag": "v4.3.1",
"kind": "patch",
"published_at": "2026-02-20T01:09:11Z"
},
{
"tag": "v4.3.0",
"kind": "minor",
"published_at": "2026-01-15T02:01:01Z"
},
{
"tag": "v4.2.0",
"kind": "minor",
"published_at": "2026-01-11T18:14:29Z"
},
{
"tag": "v4.1.2",
"kind": "patch",
"published_at": "2026-01-10T23:53:40Z"
},
{
"tag": "v4.1.1",
"kind": "patch",
"published_at": "2026-01-09T18:01:17Z"
},
{
"tag": "v4.1.0",
"kind": "minor",
"published_at": "2026-01-02T18:18:40Z"
},
{
"tag": "v4.0.7",
"kind": "patch",
"published_at": "2025-12-29T04:25:51Z"
},
{
"tag": "v4.0.6",
"kind": "patch",
"published_at": "2025-11-11T19:51:32Z"
},
{
"tag": "v4.0.5",
"kind": "patch",
"published_at": "2025-08-20T21:35:17Z"
},
{
"tag": "v4.0.4",
"kind": "patch",
"published_at": "2025-07-09T00:19:41Z"
},
{
"tag": "v4.0.3",
"kind": "patch",
"published_at": "2025-07-09T00:17:48Z"
},
{
"tag": "v4.0.2",
"kind": "patch",
"published_at": "2025-07-08T06:54:09Z"
},
{
"tag": "v4.0.1",
"kind": "patch",
"published_at": "2025-07-07T00:08:06Z"
},
{
"tag": "v4.0.0",
"kind": "major",
"published_at": "2025-07-02T23:43:46Z"
},
{
"tag": "v3.1.1",
"kind": "patch",
"published_at": "2025-07-02T04:58:38Z"
},
{
"tag": "v3.1.0",
"kind": "minor",
"published_at": "2025-05-18T21:10:03Z"
},
{
"tag": "v3.0.2",
"kind": "patch",
"published_at": "2025-05-15T05:29:25Z"
},
{
"tag": "v3.0.1",
"kind": "patch",
"published_at": "2025-05-14T22:01:47Z"
},
{
"tag": "v3.0.0",
"kind": "major",
"published_at": "2025-02-27T19:40:53Z"
},
{
"tag": "v2.3.3",
"kind": "patch",
"published_at": "2024-12-04T21:19:58Z"
},
{
"tag": "v2.3.2",
"kind": "patch",
"published_at": "2024-11-19T20:00:44Z"
},
{
"tag": "v2.3.1",
"kind": "patch",
"published_at": "2024-10-23T16:45:55Z"
},
{
"tag": "v2.3.0",
"kind": "minor",
"published_at": "2024-09-01T21:48:53Z"
},
{
"tag": "v2.2.0",
"kind": "minor",
"published_at": "2024-08-26T22:53:19Z"
},
{
"tag": "v2.1.1",
"kind": "patch",
"published_at": "2024-06-01T16:39:02Z"
},
{
"tag": "v2.1.0",
"kind": "minor",
"published_at": "2024-05-31T16:47:50Z"
},
{
"tag": "v2.0.1",
"kind": "patch",
"published_at": "2024-05-21T16:46:51Z"
},
{
"tag": "v2.0.0",
"kind": "major",
"published_at": "2024-05-11T00:21:32Z"
},
{
"tag": "v2.0.0.pre4",
"kind": "other",
"published_at": "2024-05-10T16:47:20Z"
},
{
"tag": "v2.0.0.pre3",
"kind": "other",
"published_at": "2024-03-15T20:28:33Z"
},
{
"tag": "v2.0.0.pre2",
"kind": "other",
"published_at": "2024-02-24T17:51:26Z"
},
{
"tag": "v2.0.0.pre1",
"kind": "other",
"published_at": "2024-01-15T22:50:50Z"
},
{
"tag": "v2.0.0-pre.1",
"kind": "prerelease",
"published_at": "2024-01-15T18:14:53Z"
},
{
"tag": "v1.19.1",
"kind": "patch",
"published_at": "2024-01-13T23:29:31Z"
},
{
"tag": "v1.19.0",
"kind": "minor",
"published_at": "2023-12-29T05:42:58Z"
},
{
"tag": "v1.18.0",
"kind": "minor",
"published_at": "2023-03-19T16:43:49Z"
},
{
"tag": "v1.17.2",
"kind": "patch",
"published_at": "2023-03-07T17:22:35Z"
},
{
"tag": "v1.17.1",
"kind": "patch",
"published_at": "2023-03-06T16:31:35Z"
},
{
"tag": "v1.17.0",
"kind": "minor",
"published_at": "2023-03-06T01:08:25Z"
},
{
"tag": "v1.16.0",
"kind": "minor",
"published_at": "2023-03-04T00:46:56Z"
},
{
"tag": "v1.15.0",
"kind": "minor",
"published_at": "2023-03-01T21:27:22Z"
},
{
"tag": "v1.14.0",
"kind": "minor",
"published_at": "2023-02-26T01:40:08Z"
},
{
"tag": "v1.13.2",
"kind": "patch",
"published_at": "2023-02-02T22:34:15Z"
},
{
"tag": "v1.13.0",
"kind": "minor",
"published_at": "2023-01-12T20:26:53Z"
},
{
"tag": "v1.12.0",
"kind": "minor",
"published_at": "2022-08-18T17:44:04Z"
},
{
"tag": "v1.11.0",
"kind": "minor",
"published_at": "2022-04-17T23:19:43Z"
},
{
"tag": "v1.10.2",
"kind": "patch",
"published_at": "2022-01-06T23:20:41Z"
},
{
"tag": "v1.10.1",
"kind": "patch",
"published_at": "2022-01-03T21:13:42Z"
},
{
"tag": "v1.10.0",
"kind": "minor",
"published_at": "2021-12-20T17:02:12Z"
},
{
"tag": "v1.9.1",
"kind": "patch",
"published_at": "2021-07-07T16:48:54Z"
},
{
"tag": "v1.9.0",
"kind": "minor",
"published_at": "2021-07-06T19:33:21Z"
},
{
"tag": "v1.8.1",
"kind": "patch",
"published_at": "2020-12-31T21:01:25Z"
},
{
"tag": "v1.8.0",
"kind": "minor",
"published_at": "2020-12-31T18:38:33Z"
},
{
"tag": "v1.7.0",
"kind": "minor",
"published_at": "2020-04-25T21:45:27Z"
},
{
"tag": "v1.6.0",
"kind": "minor",
"published_at": "2020-02-02T16:08:31Z"
},
{
"tag": "v1.6.0.pre1",
"kind": "other",
"published_at": "2020-01-20T17:40:22Z"
},
{
"tag": "v1.5.0",
"kind": "minor",
"published_at": "2018-08-10T07:59:07Z"
},
{
"tag": "v1.4.0",
"kind": "minor",
"published_at": "2018-05-16T06:50:49Z"
},
{
"tag": "v1.3.0",
"kind": "minor",
"published_at": "2018-05-16T06:44:42Z"
},
{
"tag": "v1.2.10",
"kind": "patch",
"published_at": "2018-05-16T06:44:30Z"
}
],
"recent_commits": [
{
"oid": "413074b910e895253efaaa4a7a170b3bddcf0d41",
"body": null,
"is_bot": false,
"headline": "test: cover merge BranchInfo coercion",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-18T21:11:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e56913ea0107fb24bee7cd01d4881e4fcce91e1e",
"body": null,
"is_bot": false,
"headline": "fix(branch): wire branch_list slash remote parsing",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-18T20:20:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6f8f43a7583d16cd1004eda714c493605bcadbfe",
"body": null,
"is_bot": false,
"headline": "fix(branch): parse slash remote names",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-18T19:42:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "95246546039d4207627c7a1b71a8079b5e9b242d",
"body": "Documents the PR sequence for fixing BranchInfo slash-remote parsing\n(issue 919): PR 1 (remote_names), PR 2 (BranchInfo stored fields +\nremote-aware parser), PR 3 (wire branch_list end-to-end).",
"is_bot": false,
"headline": "docs: add branch_parse_refactor_plan to redesign/",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-18T15:03:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4f52a7b1beecf4c85b7a4419999099e5af38e2fb",
"body": "Returns Array<String> of configured remote names by calling\nGit::Commands::Remote::List. This is a lightweight alternative to\nremote_list when only names are needed, and correctly preserves\nslash-containing remote names like 'team/upstream'.\n\nAdds:\n- remote_names method in Git::Repository::RemoteOperations\n- 3 unit examples (delegation, slash name, empty stdout)\n- 4 integration examples (type, config order, slash, empty)",
"is_bot": false,
"headline": "feat: add Git::Repository remote_names facade method",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-18T15:03:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bf711a96dc685a6c8e0d161805b853ae388df84c",
"body": "- Add Git::Repository::RemoteOperations#remote_list\n - Delegates to config_list (Git::Configuring instance method) for\n Array<ConfigEntryInfo>, then passes result to Parsers::Remote.parse_list\n - Returns Array<Git::RemoteInfo>; empty array when no remotes configured\n- #remotes is NOT deprecated\n[…]\ngration tests: 6 new examples for #remote_list (type, names, URLs,\n fetch refspecs, empty case)\n- Update command integration tests (add/remove/rename) to use remote_list\n for post-command assertions",
"is_bot": false,
"headline": "feat(remote): add remote_list facade method",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-17T22:01:25Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "65276339f4549fc9c075d5daeba11a87f269dd5a",
"body": "Implements PR 2 from redesign/remote_refactor_plan.md: the data layer\nfoundation for the upcoming remote_list facade method (PR 3).\n\nTask commits included:\n- feat(remote): add Git::RemoteInfo value object\n- feat(remote): add Git::Parsers::Remote.parse_list\n- docs(remote): fix YARD docs for Git::Remo\n[…]\nd\n\n## Files changed\n\n- lib/git/remote_info.rb — new\n- lib/git/parsers/remote.rb — new\n- spec/unit/git/remote_info_spec.rb — new (23 examples)\n- spec/unit/git/parsers/remote_spec.rb — new (36 examples)",
"is_bot": false,
"headline": "feat(remote): add Git::RemoteInfo value object and Parsers::Remote",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-17T17:40:44Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d2ffb5902f1b268f80260ae82f861540d15bab0a",
"body": "- remote_add: remove Git::Remote.new return, explicitly return nil\n- remote_set_url: same change\n- add_remote (deprecated): call remote_add then construct and return\n Git::Remote.new(self, name)\n- set_remote_url (deprecated): call remote_set_url then construct and return\n Git::Remote.new(self, nam\n[…]\nUpdate @return YARD tags on remote_add / remote_set_url to @return [void]\n- Update specs: remote_add / remote_set_url now assert nil return\n- Update specs: deprecated wrappers still return Git::Remote",
"is_bot": false,
"headline": "refactor(remote): remote_add and remote_set_url return nil",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-16T22:35:41Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "bda2063a7834d4a1e323ebc89ef3414766344be8",
"body": null,
"is_bot": false,
"headline": "docs: add RemoteInfo + RemoteOperations refactor plan",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-16T22:08:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a6875eaf9d743d6c31f3776afed38afc4cef443b",
"body": "- upstream: reverted from nested BranchInfo to raw String from %(upstream)\n- short_name: now computed from refname via BRANCH_REFNAME_REGEXP; removed\n from Data.define and FORMAT_STRING (%(refname:short) no longer needed)\n- worktree: replaced boolean :worktree with :worktree_path (String|nil) — nil\n[…]\nte#branch and Branching#branch\n- Removed dead code: normalize_refname in the parser\n- Added branch_list(*patterns) returning Array<BranchInfo>; branches_all\n retained as deprecated 4.x-compat wrapper",
"is_bot": false,
"headline": "refactor(branch): redesign BranchInfo value object",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-16T19:22:28Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ef16e94113a8e18eed6e60319aa7e223e6292d67",
"body": "Local branches with a configured upstream now expose that upstream info\nvia two new methods on Git::Branch:\n\n- #upstream returns the upstream Git::BranchInfo (with remote_name and\n short_name), or nil when no upstream is configured\n- #upstream_remote returns Git::Remote for the upstream remote, or \n[…]\n returns Git::Remote as a convenience wrapper\n- git.branch('nonexistent') falls back to a bare Branch (backward compat)\n- Legacy initialize_from_name path sets @upstream = nil explicitly\n\nCloses #1270",
"is_bot": false,
"headline": "feat: add upstream and upstream_remote to Git::Branch",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-15T02:32:01Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7f53ef866f02dd686594783f6f630804f3e15c57",
"body": "Fill in the 'After (measured)' column and add a Success column with\nresults from the first CI run after the deletions:\n\n- Sequential (macOS): 3m 06s → 1m 54s (−38%) ✓\n- Parallel (macOS): 0m 31s → 0m 18s (−42%) ✓\n- Parallel (Windows): 4m 22s → 3m 11s (−35%) did not meet < 3m 00s target\n- TruffleRuby: 2m 04s → 1m 19s (−36%) ✓\n- JRuby: 1m 52s → 1m 20s (−29%) did not meet < 1m 20s target\n- Test count: 885 → 557 (−37%)",
"is_bot": false,
"headline": "docs: add measured CI results to integration_test_analysis.md",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-14T22:44:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "68370f34b9a7a4cf2bd0884b6141263e700087f6",
"body": "After the initial it-block removal pass, many describe/context blocks\nwere left with only setup code (before/let/after) and no examples.\nThese are no-op spec sections that add noise and can mislead readers\ninto thinking coverage exists when it does not.\n\nRemove all such setup-only shells, including \n[…]\nare-clone context), remote_operations (#push),\n staging (#read_tree, #rm), stashing (#stash_save, #stash_apply),\n status_operations\n\nExample count remains 557 (no examples were inside these shells).",
"is_bot": false,
"headline": "test: remove empty example groups left after it-block deletions",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-14T22:44:19Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9a1857037569b97438e80a2b9f5ef49f4f4b8a14",
"body": "Remove the 328 tests identified in redesign/integration_test_analysis.md\nthat do not add signal beyond what unit tests already cover. The 22\ncontroversial removals are excluded and remain for separate discussion.\n\nReasons for removal include:\n- Option variants whose argument building is verified by \n[…]\nec\n- Structural detail tests implied by every successful parse\n\nLeaves 557 integration tests (885 - 328 = 557).\n\nAlso removes 92 empty context/describe blocks left behind after\nthe it-block deletions.",
"is_bot": false,
"headline": "test: remove 328 excessive integration tests to reduce CI build time",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-14T22:44:19Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e2c4cecaee7d050dc8cb75a5ea1151acf551a57b",
"body": "Identifies 350 integration tests that do not satisfy the project's\ncommand-test-conventions and facade-test-conventions standards, of\nwhich 328 are clear deletions and 22 are flagged as controversial\nremovals requiring separate discussion.\n\nThe document includes:\n- Current timing data for all CI build configurations\n- Success criteria table (before/after targets) for 328 deletions\n- Deletion rationale for each test, organised by file\n- Counter-arguments for the 22 controversial removals",
"is_bot": false,
"headline": "docs: add integration test analysis document",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-14T20:57:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7de996a45b1850edd7e68337ec11e1d8cb7a386b",
"body": null,
"is_bot": false,
"headline": "fix: audit deprecation warning messages",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-14T17:45:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "476cbdd170f74a4279761472d7870c636a2d75cf",
"body": null,
"is_bot": false,
"headline": "chore: release v5.0.0.beta.5",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-14T01:07:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5f8f9b03c841d52db0f718b66afba9ef0c2ad855",
"body": null,
"is_bot": false,
"headline": "docs: document stricter option validation",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-14T00:28:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "21c9977dc0fdb5c02522ff520eb596460fed811d",
"body": null,
"is_bot": false,
"headline": "docs: add reverse dependency query",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-14T00:19:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c2043f9777c58f997a4e389582aace7dbcab10e7",
"body": null,
"is_bot": false,
"headline": "docs: document Git::Log path filtering upgrade note",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-13T22:01:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d37710bbe5d576c8b04a17d53a2d901f4750eef1",
"body": "Git::Base was the main public class in versions prior to 5.0.0.\nUsers who monkeypatched it would silently lose their methods after\nupgrading because Git::Base no longer existed.\n\nThis commit introduces a compatibility shim:\n\n- Git::Base is now a Module included in Git::Repository, so methods\n added\n[…]\nhodError with an actionable message\n pointing to Git.open, Git.clone, and Git.init.\n\nUnit tests cover all three behaviours with full isolation (methods\nadded during tests are removed in after hooks).",
"is_bot": false,
"headline": "feat: add Git::Base compatibility shim with deprecation warnings",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-13T21:45:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "05dbe2374c1a815af3cd5688e6294761974dbd1a",
"body": null,
"is_bot": false,
"headline": "chore: release v5.0.0.beta.4",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-12T00:07:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "15560a71326665910297d28b36e67e72f0900127",
"body": "Changes the task header from \"Rake task: <name>\" to \"rake <name>\"\nso the displayed text is the exact command that can be copied and\nrun directly.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "build: display rake command in task header for easy copy-paste",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-11T23:51:14Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "47bda0ea7b7105c6d42e90a883e6cad81c403f86",
"body": "Restores all CI matrix entries that were temporarily disabled in #1558\n(disabled Windows, JRuby, and TruffleRuby builds) and #1559 (removed\nRuby 3.4 build).\n\nThe full matrix is now:\n- Ruby: 3.2, 3.4, 4.0, truffleruby-24.2.1, jruby-10.0.0.1 on ubuntu-latest\n- Ruby 3.2 on windows-latest\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "ci: restore ruby 3.4, jruby, truffleruby, and windows builds",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-11T23:51:14Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "6437d67a2659fb6f915159d927ddc6d8109e8eba",
"body": "The GIT_DEPRECATION_BEHAVIOR tests in deprecation_spec.rb used Open3\nsubprocesses and file-load tricks to exercise the environment-variable\nhandling. Subprocess tests are slow, fragile, and invisible to SimpleCov,\nwhile load-based tests have load-order and lifecycle constraints that make\nbranch cove\n[…]\n tests below).\n- spec/unit/git_spec.rb: new unit spec for Git.configure_deprecation_behavior\n covering nil (no-op), valid behavior, whitespace-padded behavior, and\n invalid behavior (ArgumentError).",
"is_bot": false,
"headline": "refactor: replace subprocess deprecation tests with direct unit tests",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-11T23:02:28Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a974be9d097388612dc95dfc9ef38d7d43575e8f",
"body": "…view\n\nlib/git/deprecation.rb and lib/git/command_line_result.rb each opened the\nGit module with a competing doc comment, causing YARD to pick up the wrong\nOverview text for the Git namespace.\n\n- Delete lib/git/deprecation.rb; inline Git::Deprecation creation and the\n GIT_DEPRECATION_BEHAVIOR handl\n[…]\nt' from\n spec/unit/git/command_line_result_spec.rb.\n- Update spec/unit/git/deprecation_spec.rb to use in-process load tests\n pointing to lib/git.rb instead of the now-deleted lib/git/deprecation.rb.",
"is_bot": false,
"headline": "fix: inline deprecation and const_missing to fix YARD Git module over…",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-11T23:02:28Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "49ae5a8ee7f83ee10ba1ae00a7dd5fdee0f1c43b",
"body": null,
"is_bot": false,
"headline": "feat: allow deprecation behavior env var",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-11T19:43:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0414398e98f84234d23277fae91fa84d421f9748",
"body": null,
"is_bot": false,
"headline": "fix: update deprecation horizon",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-11T19:43:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0302e92afcaa8e41f49f1696bd0f0884578cb80d",
"body": "The Git::URL.clone_to integration examples cloned a freshly initialized\nsource repository that had no commits, so git printed 'warning: You\nappear to have cloned an empty repository.' to stderr for each example.\n\nAdd an initial empty commit to the source repository in the around hook\nso the clones no longer trigger the warning. The examples' assertions are\nunaffected since they only verify the predicted clone directory.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "test: silence empty-repository clone warnings in url_spec",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-11T16:30:06Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "9d0e93c1a1ce75d814348d3f83ef252d988600db",
"body": null,
"is_bot": false,
"headline": "fix: avoid circular require warnings",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-10T15:43:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b437f7e90a219f28ff190a63dea449d56755f889",
"body": "- Remove stale Phase 2 / Strangler-Fig note and phases table\n- Replace Git::Lib / Git::Base references with Git::Repository throughout\n- Add Layered architecture section with three-layer responsibility table\n- Rename Command-layer neutrality → Command layer responsibilities (subsection)\n- Move anti-\n[…]\n:* classes\n- Remove all architectural redesign / migration framing\n- Fix typos (simplist, exclaimation) and RuboCop capitalization\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs: update CONTRIBUTING.md to reflect v5.0.0 architecture",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-10T06:09:46Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "e0fba71c41947457d1c018273f43284890a703a4",
"body": "Phase 4 / Step C / C3 (documentation completeness verification):\n\n- docs(status): add class-level @example to Git::Status\n- docs: mark Phase 4 Step C C3 complete — architectural redesign done\n\nC3 results:\n\n C3a: Full CI pipeline green — 5667 unit + 884 integration examples,\n 0 failures; yard:lin\n[…]\n marked 100% complete.\n\nThe architectural redesign is now fully complete. The codebase is ready\nfor the v5.0.0 release process.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs: phase 4 step C3 — documentation completeness verification",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-09T23:04:07Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5bc480982b0c70ccdc5f03694b1ed6d6f87d5496",
"body": "C2a (UPGRADING.md expansion) merged to main in commit fb66404a. Update\nboth the Step C execution plan and the progress tracker to reflect C2a\ncomplete. Phase 4 is now at 98%; only C3 (documentation completeness\nverification) remains.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs: mark Phase 4 Step C C2a complete in redesign tracker",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-09T21:41:08Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a6ce582aba661684d2bc53115f03a209cafd1dde",
"body": "Update README.md to reflect the new public entry points and prominently\nlink to the v4.x → v5.0.0 migration guide (UPGRADING.md).\n\nChanges:\n- docs: update README for v5.0.0 release (Phase 4 Step C2b)\n- docs: mark Phase 4 Step C C2b complete in redesign tracker\n\nKey changes to README.md:\n- Add new '#\n[…]\nthe Quick Start and Examples sections already\nuse the correct Git.open/Git.init/Git.clone entry points and\nGit::Repository facade.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs: update README.md for v5.0.0 release (Phase 4 Step C2b)",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-09T21:41:08Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "fb66404a8b7b1eac35fb41376c54a675f67c555b",
"body": "…C2a)\n\nPhase 4 Step C2a: expand UPGRADING.md to comprehensively cover all\nv4.x -> v5.0.0 breaking changes for release readiness.\n\nChanges:\n- Remove 'work in progress' beta banner now that docs are complete\n- Add table of contents\n- Add 'Breaking changes at a glance' quick-reference table\n- Add expli\n[…]\n\n facade method renames, config accessor aliases, Git module mixin\n- Verify all code snippets are accurate against the v5.0.0 API\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs: expand UPGRADING.md with comprehensive v5.0.0 migration guide (…",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-09T21:27:16Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "1aa268e8b584848f956e087ce571e2aab38abedb",
"body": "C1c (@api tag audit and gap-fill) was completed in commit 83225f3f.\nUpdate the redesign tracker and execution plan to reflect this:\n\n- redesign/3_architecture_implementation.md: mark C1b/C1c/C1d all ✅,\n remove C1c from pending list, bump Phase 4 completion to 90% and\n total to 99%\n- redesign/Phase\n[…]\neader, workstreams\n list, dependency note, Mermaid graph (C1a–C1d all green), and add\n 'already done' callout to the C1c section\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs: mark Phase 4 Step C C1c complete in redesign tracker",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-09T19:21:11Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c307ef3f2b60d2b59fd05628387f2795c718eb5d",
"body": "…ne::Result\n\nGit::CommandLineResult was a simple constant alias for Git::CommandLine::Result\nintroduced for backward compatibility. This commit moves to the canonical name\nthroughout the codebase and installs a deprecation warning for external callers\nwho still reference the old name.\n\nChanges:\n- li\n[…]\n that verify the deprecation warning is emitted on first\n access and that the constant still resolves to Git::CommandLine::Result\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "refactor: deprecate Git::CommandLineResult in favor of Git::CommandLi…",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-09T18:38:33Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "83225f3f729c8cc84d6ba7a10fab15b04a7f0df4",
"body": "Set @api private on 37 internal constants and @api public on 2 public\nconstants that were missing their visibility tags.\n\nChanges:\n- Flip @api public to @api private on all 13 Git::Repository::* topic modules\n (Branching, Committing, ContextHelpers, Diffing, Inspecting, Logging,\n Maintenance, Merg\n[…]\ng)\n\nbundle exec rake yard:lint passes with no offenses.\nbundle exec rake default passes with 5666 unit + 893 integration examples.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs: set correct @api tags for all public and internal classes (C1c)",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-09T17:56:13Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "06da9aecf86274932360ff3ea125c5a36c9f2e2f",
"body": "Produce redesign/c1a-public-api-scope.tsv — the authoritative\nclassification of every class/module in lib/ as public or internal,\nper the Phase 4 Step C plan. This is the C1a deliverable and satisfies\nits done-when criteria; it unblocks C1c (flip @api tags).\n\n255 rows total: 42 public, 213 internal.\n[…]\nn criteria now require reading and applying any\n such instructions (with a worked example) in addition to setting the\n @api tag.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs: produce C1a public API scope TSV (Phase 4 Step C)",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-09T17:07:06Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "ef9b9cf6cd267e57b2cbc9f0dbe84e2eeb66ddb2",
"body": "Remove Git::Repository.{open,bare,clone,init} — factory class methods were\nincorrectly exposed on the implementation class in addition to the canonical\nGit.* entry points. The Git module is the sole public API surface; callers\nshould never construct a Git::Repository directly via class methods.\n\nCha\n[…]\nto\n spec/integration/git/repository/configuring_spec.rb\n- test: update spec/integration/git/thread_safety_spec.rb to use Git.init\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "fix: restrict factory methods to Git module only",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-09T14:27:01Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "a5692f50e6b5358daa7d4fef4ff404702cbbc741",
"body": "Reviewed the full plan for completeness, agent-executability, data availability,\nand dependency correctness. Fixes:\n\n- C1a: add executable enumeration steps (verified 'yard list' works), instruct\n writing redesign/c1a-public-api-scope.tsv, mark class lists as illustrative\n (real inventory is ~256 \n[…]\ndencies (C1 sequential;\n C2a/C2b independent; C3 gates)\n- Require yard/command-yard/facade-yard doc skills on all doc-touching PRs\n- Correct File Checklist and Step C Completion Checklist accordingly",
"is_bot": false,
"headline": "docs: harden Phase 4 Step C plan for executability and accuracy",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-09T00:44:13Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "19bbb36393ee3e6962c7bbef3157c09dd75842b5",
"body": "- Split C2 into two PRs: C2a (UPGRADING.md) and C2b (README.md)\n- Define C1a results storage in redesign/c1a-public-api-scope.tsv\n- Explicitly require YARD documentation skills for C1b-C1d PRs\n- Update dependency graph to reflect new PR structure",
"is_bot": false,
"headline": "docs: refine Phase 4 Step C PR structure and documentation requirements",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-09T00:44:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "541bb942ba1103728863d7f563e290d7bc6c8abc",
"body": "Establish one PR per substep (C1a, C1b, C1c, C1d, C2, C3) for more meaningful\nreviews and clearer progress tracking through the documentation work.",
"is_bot": false,
"headline": "docs: define fine-grained PR granularity for Phase 4 Step C",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-09T00:44:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0d263037dafa26bbe9feca3e4b634adcf15adba8",
"body": "…odules\n\nDocument that nested state/path classes within Git::Repository::* topic modules\n(e.g., Git::Repository::Branching::HeadState) should be marked @api private and\ndocumented in their own class definition, with references from owning methods.",
"is_bot": false,
"headline": "docs: clarify documentation for nested state/path classes in facade m…",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-09T00:44:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "38cc2fd692f605efaf68dd4bd96a9f52ecccdac4",
"body": "Add comprehensive plan document for the final documentation step of Phase 4:\n- C1: Public API YARD audit & coverage (identify public classes, add missing\n docs, mark internals with @api private, run final coverage check)\n- C2: README & guidance update (update entry points, link to UPGRADING guide)\n\n[…]\nverification (final CI/doc spot-check before v5.0.0)\n\nIncludes detailed checklist, decision rationale, and link from main tracker.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs: create Phase 4 Step C execution plan",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-09T00:44:13Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "58b869f1c3ae720e0f04da3335cea9a334f0249a",
"body": "Add an explicit required rule for class and module @api tags.\n\nClarify method-level guidance: @api on methods is exception-only and used only for overrides.\n\nDocument that yard-lint does not validate class/module @api correctness.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(yard-documentation): codify class/module @api visibility",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-09T00:16:51Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "be54e0dc5cef6ad611760522e8cfff1d0d3694be",
"body": "Add descriptions to the two remaining objects that YARD counted as\nundocumented (Git.clear_git_version_cache and Git::Deprecation), bringing\nyard:build to 100.00% documented. Both already carried @api private tags;\nthis adds the missing prose so the reported coverage matches the enforced\n'no undocumented objects' bar from yard-lint.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs: document @api private cache helper and Deprecation constant",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-09T00:04:44Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "53a24a22259a45408ee554a644a108906f5c7463",
"body": "Delete the YARD todo baseline file and stop inheriting it from .yard-lint.yml.\n\nUpdate command call docs so yard-lint's undocumented options check passes without the baseline.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "chore: remove yard-lint todo baseline",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T22:57:57Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "65403e530be1a82acc2864e2aacfd201b62eb507",
"body": "…sion\n\nRemove the requested files from .yard-lint-todo.yml and update command YARD docs so the\nDocumentation/UndocumentedOptions validator passes without exclusions.\n\nUse explicit documented call anchors with forwarding methods for YARD.\nDisable Lint/UselessMethodDefinition on those anchors per CONTRIBUTING guidance.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(commands): remove yard-lint todo exclusions for worktree and ver…",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T22:24:16Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5217b62c7d15bac02c4a5f6ac17bd962e13db1c9",
"body": "Remove baseline exclusions for tag and update-ref command wrappers.\nAdd YARD docs for options and build_stdin so yard-lint passes.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "fix(yard): resolve command documentation lint offenses",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T22:14:02Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "f4ef40c0fb4944caa08258727e49434b67741e07",
"body": "Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(yard): remove baselines for worktree and write-tree commands",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T22:06:46Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "9109c91155412fac45f5383c31d2bc91da53b795",
"body": "…rev-parse\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(commands): unbaseline and fix YARD docs for remote/reset/repack/…",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T22:00:37Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "407d7aff08edeee9f4daaedb88b933eb74c30936",
"body": "Remove .yard-lint-todo exclusions for stash pop/push/show/store and status.\n\nAdd top-level options docs for each command call method so yard-lint validates\n@option coverage while preserving detailed overload docs.\n\nValidated with:\n- bundle exec rake yard:lint\n- bundle exec rake rubocop\n- bundle exec rake default\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "chore(yard): remove stash and status lint baselines",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T21:57:50Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "6c3703520dca084c23966ac11253006ce315f452",
"body": "… tag\n\nRemove the five requested command files from .yard-lint-todo.yml and\nupdate their call documentation so yard-lint can validate options.\n\n- convert symbolic-ref/delete, read, update and tag/create to explicit\n documented call overrides\n- switch tag/delete to an operand-only call directive and align raise docs\n\nValidated with:\n- bundle exec rake yard:lint\n- bundle exec rake rubocop\n- bundle exec rake default\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(commands): remove yard-lint todo exclusions for symbolic-ref and…",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T21:48:53Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "fd3d875f0dc1681e0b73b21386175aa6e1068e09",
"body": "Remove .yard-lint-todo.yml exclusions for stash branch/clear/create/drop/list.\nUpdate their YARD call docs so yard-lint and RuboCop pass cleanly.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(stash): remove yard-lint exclusions for stash commands",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T21:43:37Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "09abc326c8c84622d9886c82a42aa61ef2825dc2",
"body": "Add a pointer in element-rules so agent users of @!method blocks follow\nSKILL.md overload placement guidance for @return, @raise, and @api.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(yard): link @!method section to overload placement rules",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T21:40:00Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "0e7d3218a6bf680659d411f2aa86c981704ae37f",
"body": "Add explicit overload guidance for placing @return, @raise, and @api tags.\nInclude correct/incorrect examples and decision-matrix updates for agents.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(yard): clarify overload placement for return and raise tags",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T21:40:00Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a0fdeb6c3ddb1a5955d241e462eb47c51fe13c35",
"body": "Remove five command files from .yard-lint-todo.yml.\n\nAdd explicit call-method YARD overload docs so\n\nDocumentation/UndocumentedOptions passes for each file.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "fix(commands): document option tags for rm show-ref and stash apply",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T21:20:56Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e371aa1112535cd913b4d35eb93533235df0c443",
"body": "Remove five revert command files from .yard-lint-todo.yml.\n\nUpdate YARD call signatures so yard-lint recognizes command options.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(revert): fix yard-lint docs for revert commands",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T21:14:35Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "2ad6300c2f058cfbe215e170390f025f7d650eb2",
"body": "Remove the requested remote command files from the YARD lint todo list.\nUpdate their call YARD directives so yard-lint recognizes option docs.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(remote): remove yard-lint todo exclusions",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T21:10:11Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "3dfe067d4c49f2d526fdbf80534ee79ff10b4a03",
"body": "- remove five remote set-* entries from .yard-lint-todo.yml\n- add top-level @option anchors and overload details needed by yard-lint\n- keep rake yard:lint and rake rubocop clean after unbaselining\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(remote): remove yard-lint todo exclusions for set commands",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T21:05:43Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "42e3867040ce350be91cc1990721943d719d3646",
"body": "Remove requested exclusions from .yard-lint-todo.yml for name-rev, pull,\npush, read-tree, and remote add.\n\nUpdate each command's @!method directive to declare **options at the\ndirective level with a top-level @option tag so yard-lint recognizes\noption documentation while retaining full overload option docs.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(commands): remove YARD todo exclusions for selected command files",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T20:58:01Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "7504a8beb6181dd86f3552aa7b6979180849e3b6",
"body": "Remove requested files from .yard-lint-todo.yml and fix YARD docs so yard lint passes.\n\nUpdate no-option merge subcommands to document call().\n\nAdd top-level options tags for merge start and mv.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(commands): remove yard-lint exclusions for merge and mv",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T20:55:24Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5b8a68d234a204ac6d5f2827f97f258af75569ff",
"body": "Add explicit guidance that @api belongs at method top level,\nnot inside overload blocks.\n\nClarify which tags are signature-specific for @overload.\nAdd a decision-matrix row for method-level @api placement.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(yard): clarify @api placement with @overload",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T20:53:00Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "ab687bab841478799aa93c18a81e7dd0d798af92",
"body": "Remove baseline exclusions in .yard-lint-todo.yml for five command files.\n\nReplace @!method docs with explicit #call overrides so @option tags lint correctly.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "chore(yard): remove command exclusions and fix option docs",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T20:49:11Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "c65a4dc19398da4e425e4ba2c3cb87b0e3cf33a3",
"body": "Remove five command files from .yard-lint-todo.yml.\n\nSwitch their call docs from @!method to explicit def call overload docs.\n\nThis allows Documentation/UndocumentedOptions checks to run on these files.\n\nVerified with: bundle exec rake yard:lint\n\nVerified with: bundle exec rake rubocop\n\nVerified with: bundle exec rake default\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(commands): remove yard-lint exclusions for call docs",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T20:46:22Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "8bd1bf748fa20c773641c5aadddda19926aedda8",
"body": "Convert these command docs from @!method directives to explicit call overload docs.\n\nAdd passthrough call overrides so yard-lint binds option tags correctly.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "fix(commands): remove yard-lint exclusions for fetch/fsck/gc/grep/init",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T20:40:43Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "7ba0a3491a09d74e1bf432d48805cef75d033a0e",
"body": "Remove YARD todo exclusions for the requested branch and cat-file command files.\n\nUpdate YARD docs in those files so No offenses found passes cleanly.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "chore(yard): remove selected todo exclusions",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T20:28:23Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "51a200ef8c2c10c2358eab45695842918027a089",
"body": "Remove requested files from .yard-lint-todo.yml.\n\nFix YARD option docs by documenting explicit call overloads.\n\nAdd pass-through call methods for these command classes.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "chore(yard): remove config option syntax exclusions",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T20:23:24Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "b44d764bcbae4e29d8559856e073b3c3c17636cc",
"body": "Remove the five config_option_syntax command files from .yard-lint-todo.yml.\n\nUpdate call method directives with top-level options tags so yard-lint detects\n\ndocumented keyword options.\n\nValidated with: bundle exec rake yard:lint rubocop and bundle exec rake default.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(config-option-syntax): remove yard-lint todo exclusions",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T20:17:53Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "6787d2aa7061f16cc9484b1d6d17191594a74cc6",
"body": "Remove the five requested entries from .yard-lint-todo.yml.\n\nUpdate matching command classes so yard-lint recognizes their option docs.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "fix(yard): remove selected undocumented-options exclusions",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T20:15:00Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "c71e3a101878222cf3a3d4163b575f38f58f70c5",
"body": "Remove five command files from .yard-lint-todo.yml.\n\nReplace @!method directives.\n\nAdd explicit call wrappers with @overload docs.\n\nThis lets yard-lint validate @option tags.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "refactor(commands): define explicit call methods for YARD option docs",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T20:00:01Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "7693566735b33001f6b3ed72d9d0e2ec7d4d66d3",
"body": "Remove the requested command-file exclusions from .yard-lint-todo.yml.\n\nUpdate YARD @!method signatures so Documentation/UndocumentedOptions passes for these files.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(yard): remove command exclusions from yard todo",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T19:45:54Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "df774bce745fff7f092ef1ac3b8f58ad0b8bfcdc",
"body": "Remove the five branch command files from .yard-lint-todo.yml.\n\nUpdate their call docs so yard-lint recognizes option tags.\n\nValidated with bundle exec rake yard:lint and bundle exec rake rubocop.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(branch): remove yard-lint todo exclusions for branch commands",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T19:42:16Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "01b8680bd11300db0943801d45ddbac07d710c97",
"body": "Add a rebase skill that rebases current branches onto origin/main,\nhandles conflicts, and force-pushes with --force-with-lease.\n\nUse GIT_EDITOR=: and GIT_SEQUENCE_EDITOR=: in rebase commands\nto prevent any editor prompts.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(skills): add rebase skill workflow",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T19:39:20Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "670a35c4fef9b702ec3d084a3e6ef130b4ccc7ac",
"body": "Remove the am/apply entry from the yard-lint todo baseline.\n\nUpdate Apply#call YARD docs and add a pass-through override.\n\nThis keeps behavior unchanged and satisfies UndocumentedOptions.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(am): remove apply yard-lint todo exclusion",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T19:20:40Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "2520a309480f476f18c54b1defe00c967e73fa48",
"body": "Remove lib/git/commands/am/quit.rb from .yard-lint-todo.yml and fix its YARD method signature.\nThis prevents yard-lint from reporting undocumented options for this command.\n\nVerified with bundle exec rake yard:lint, bundle exec rake rubocop,\nand bundle exec rake default.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "chore(yard): remove am quit yard-lint todo exclusion",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T18:17:18Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "470d20395bcdcd90d866b91041418362c0b94013",
"body": "Remove `lib/git/commands/am/continue.rb` from the YARD lint baseline.\n\nUpdate the `@!method` signature to a zero-option call shape so\nDocumentation/UndocumentedOptions passes.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(am): remove yard-lint todo exclusion for continue",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T18:13:50Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "000c0f080bec5e30c3a257ca782989f4c6d77bbe",
"body": "Remove the add command from .yard-lint-todo.yml.\n\nUpdate Add#call docs so yard-lint can bind @option tags without an exclusion.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(add): remove yard-lint todo exclusion",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T18:09:51Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "84c016a7266c942fe3e3ef33eff3f9a080e387dc",
"body": "- remove \\ from \\ exclusions\n- document \\ as a zero-argument overload to satisfy yard-lint\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "fix(am): remove abort YARD lint exclusion",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T17:56:44Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "96bb983070aeeea7ebc92a91ef86a1744a4f9475",
"body": null,
"is_bot": false,
"headline": "ci: temporarily remove ruby 3.4 build",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T17:26:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2fb2cdb5d93b747c9c4f625a315a995f0f491f33",
"body": "Remove all .yard-lint-todo.yml exclusions for object_operations.rb.\n\nDocument surfaced method arguments/options in object operations so yard-lint and RuboCop pass.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(yard): remove object_operations todo exclusions",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T17:17:58Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5123df544f85f9dd44e3e9340dda4d562d56cfe6",
"body": "Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "chore(yard): remove url todo exclusion and document clone_to args",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T17:14:52Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e66b971412898c79b9d375c2145d1bd95b967b22",
"body": "Remove lib/git/repository/staging.rb from .yard-lint-todo.yml.\n\nDocument staging option hashes so yard-lint passes without file-level exclusions.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(repository): remove staging yard-lint exclusions",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T17:11:59Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "3be7ea212d4b524175d69112375da2519c02db2c",
"body": "Remove shared_private.rb from the yard-lint todo excludes.\nDocument its keyword collector with a pseudo-option so yard-lint passes\nwithout baselines.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "chore(yard): remove shared_private lint exclusions",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T17:03:41Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "c8cbc7164ac39d7e4feacd64267b9180a5c6f8cf",
"body": "Document private logging helpers and parser methods in logging.rb.\n\nThis enables removing logging.rb from all .yard-lint-todo.yml exclusion lists.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(logging): remove yard-lint todo exclusions",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T16:59:10Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e81dc551c17d3747b31e1c45f6f8f09b2542b46c",
"body": "Temporarily disable these CI targets while retaining commented entries for easy restore.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "ci(workflow): temporarily disable windows, jruby, and truffleruby builds",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T16:53:38Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "90ff15c5edae68123b35041c783045ba64727889",
"body": "Drop remote_operations.rb from all .yard-lint-todo.yml exclusions.\n\nAdd missing YARD argument and option tags in remote_operations docs.\n\nValidated with bundle exec rake yard:lint.\n\nValidated with bundle exec rake rubocop.\n\nValidated with bundle exec rake default.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(remote-operations): remove yard-lint exclusions",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T16:47:35Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "b94683d383dda4ee9e3e9189ffd8d29c4846d022",
"body": "Remove from the YARD lint todo exclusions and add the missing documentation for and .\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(repository): document committing option tags",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T16:42:48Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "9a904d6fd44551efd8570c562b083da9c8356cf6",
"body": "Remove factories from the yard-lint todo baseline.\nAdd missing @option tags to private helpers in lib/git/repository/factories.rb.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(repository): remove factories yard-lint exclusions",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T16:21:14Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "d23640932d3fce1045bb424c6d22e8c86a7a92f1",
"body": "Document private context helper methods to satisfy yard-lint.\n\nRemove this file from yard-lint baseline exclusions.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(repository): remove context helpers yard-lint exclusions",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T16:14:04Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "c8dbf1f007ea4020a89ee2e9fa9234939d667f2a",
"body": "Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "chore(yard): remove diffing exclusions and document options",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T16:08:48Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "acae35e4191f59cb4788556379e7f36a20ed193c",
"body": "Remove all .yard-lint-todo.yml exclusions for lib/git/repository.rb.\n\nAdd YARD documentation in lib/git/repository.rb to satisfy\nyard-lint and rubocop checks.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(repository): remove repository yard-lint todo exclusions",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T14:42:42Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "f9460da3fd97362d209a1f508993fac32abca1de",
"body": "Remove lib/git/parsers/tag.rb from the YARD lint todo baseline and add\nmissing method documentation for resolve_oids and build_tag_info_object so\nyard:lint passes without exclusions.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(tag): remove YARD exclusions and document parser helpers",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T05:15:42Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a06b34b4b730b2de76b250a9930de7e3f3212bf5",
"body": "Remove all lib/git/remote.rb entries from .yard-lint-todo.yml and\nadd the missing YARD documentation in Git::Remote.\n\n- Document fetch option tags for Remote#fetch\n- Document private build_branch_info helper arguments/return type\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(remote): remove YARD todo exclusions and add API docs",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T05:10:16Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "980e0a9b9b780088317a2f18b7da92afb8516e87",
"body": "Remove lib/git/repository/branching.rb from the yard-lint todo excludes and\nresolve the resulting yard-lint offenses by renaming generic options hash\nparameters in branching facade helpers to non-options names.\n\nVerified with:\n- bundle exec rake yard:lint\n- bundle exec rake rubocop\n- bundle exec rsp\n[…]\n/git/repository/branching_spec.rb\n- bundle exec rspec spec/integration/git/repository/branching_spec.rb\n- bundle exec rake default\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "chore(yard): remove branching todo exclusions",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T05:04:28Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "d21aaca60970814e41aa6737c5c948cce5bf4dc8",
"body": "Remove lib/git/parsers/stash.rb from the YARD lint todo baseline and add the missing\nconstant and helper method documentation so yard:lint passes without exclusions.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(stash): remove YARD exclusions and add parser docs",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T02:59:57Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "8869157bada72d0bf50f5561bc57f3d505f056e2",
"body": "Remove lib/git/parsers/diff.rb from .yard-lint-todo.yml and add\nYARD documentation for parser constants and helper methods so\nyard-lint passes without baseline exclusions.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs: remove diff parser YARD todo exclusions",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T00:38:39Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5f33710a5a406e5196ef59bc293119903121b597",
"body": "Remove lib/git/log.rb from the yard-lint todo baseline and add\nYARD documentation for remaining undocumented methods so the file\npasses yard:lint without exclusions.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(log): remove YARD todo exclusions and document log API",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T00:35:54Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "35625433aabbfae692d43b78b4f7c107dfb681ac",
"body": "Remove lib/git/parsers/branch.rb from the YARD lint TODO baseline.\n\nAdd docs for Git::Parsers in the branch parser so yard:lint passes without exclusions.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "docs(branch): remove parser baseline exclusion and add module docs",
"author_name": "James Couball",
"author_login": "jcouball",
"committed_at": "2026-07-08T00:32:30Z",
"body_truncated": false,
"is_coding_agent": true
}
],
"releases_count": 67,
"commits_last_year": 888,
"latest_release_at": "2026-07-14T01:08:33Z",
"latest_release_tag": "pre/v5.0.0.beta.5",
"releases_from_tags": false,
"days_since_last_push": 3,
"active_weeks_last_year": 33,
"days_since_latest_release": 7,
"mean_days_between_releases": 20.4
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 75,
"has_issue_template": true,
"has_code_of_conduct": true,
"has_pull_request_template": true
},
"ecosystem": {
"packages": [
{
"name": "git",
"exists": true,
"license": "MIT",
"keywords": [],
"ecosystem": "rubygems",
"matches_repo": true,
"registry_url": "https://rubygems.org/gems/git",
"is_deprecated": false,
"latest_version": "4.4.0",
"repository_url": "http://github.com/ruby-git/ruby-git",
"versions_count": 81,
"total_downloads": 201891085,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": "2009-07-25T18:15:49Z",
"latest_published_at": "2026-07-14T01:08:21.334000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 7
}
]
},
"popularity": {
"forks": 528,
"stars": 1796,
"watchers": 31,
"fork_history": {
"days": [
{
"date": "2008-01-27",
"count": 1
},
{
"date": "2008-05-05",
"count": 1
},
{
"date": "2008-05-14",
"count": 1
},
{
"date": "2008-07-19",
"count": 1
},
{
"date": "2008-07-25",
"count": 1
},
{
"date": "2008-07-28",
"count": 1
},
{
"date": "2008-08-01",
"count": 1
},
{
"date": "2008-08-13",
"count": 1
},
{
"date": "2008-09-02",
"count": 1
},
{
"date": "2008-09-11",
"count": 1
},
{
"date": "2008-10-02",
"count": 1
},
{
"date": "2008-10-24",
"count": 1
},
{
"date": "2008-12-18",
"count": 1
},
{
"date": "2009-02-11",
"count": 1
},
{
"date": "2009-02-13",
"count": 1
},
{
"date": "2009-02-17",
"count": 1
},
{
"date": "2009-03-24",
"count": 1
},
{
"date": "2009-03-30",
"count": 1
},
{
"date": "2009-05-19",
"count": 1
},
{
"date": "2009-10-13",
"count": 1
},
{
"date": "2009-10-21",
"count": 1
},
{
"date": "2009-10-28",
"count": 1
},
{
"date": "2009-11-12",
"count": 1
},
{
"date": "2009-11-26",
"count": 1
},
{
"date": "2009-12-13",
"count": 1
},
{
"date": "2010-02-08",
"count": 1
},
{
"date": "2010-02-17",
"count": 1
},
{
"date": "2010-03-23",
"count": 1
},
{
"date": "2010-03-31",
"count": 1
},
{
"date": "2010-04-20",
"count": 1
},
{
"date": "2010-04-28",
"count": 1
},
{
"date": "2010-06-03",
"count": 1
},
{
"date": "2010-07-13",
"count": 1
},
{
"date": "2010-07-22",
"count": 1
},
{
"date": "2010-08-07",
"count": 1
},
{
"date": "2010-08-10",
"count": 1
},
{
"date": "2010-09-05",
"count": 1
},
{
"date": "2010-09-24",
"count": 1
},
{
"date": "2010-10-16",
"count": 1
},
{
"date": "2010-10-20",
"count": 1
},
{
"date": "2010-11-11",
"count": 1
},
{
"date": "2010-12-23",
"count": 1
},
{
"date": "2011-03-09",
"count": 1
},
{
"date": "2011-04-01",
"count": 1
},
{
"date": "2011-05-08",
"count": 1
},
{
"date": "2011-05-16",
"count": 1
},
{
"date": "2011-05-20",
"count": 1
},
{
"date": "2011-06-09",
"count": 1
},
{
"date": "2011-06-13",
"count": 1
},
{
"date": "2011-06-15",
"count": 1
},
{
"date": "2011-08-22",
"count": 1
},
{
"date": "2011-09-10",
"count": 1
},
{
"date": "2011-09-14",
"count": 1
},
{
"date": "2011-09-15",
"count": 1
},
{
"date": "2011-09-26",
"count": 1
},
{
"date": "2011-10-02",
"count": 1
},
{
"date": "2011-10-15",
"count": 1
},
{
"date": "2011-10-19",
"count": 1
},
{
"date": "2011-11-07",
"count": 1
},
{
"date": "2011-11-09",
"count": 1
},
{
"date": "2011-11-11",
"count": 1
},
{
"date": "2011-11-30",
"count": 1
},
{
"date": "2011-12-09",
"count": 1
},
{
"date": "2011-12-28",
"count": 1
},
{
"date": "2012-01-07",
"count": 1
},
{
"date": "2012-01-16",
"count": 1
},
{
"date": "2012-02-08",
"count": 1
},
{
"date": "2012-02-09",
"count": 1
},
{
"date": "2012-02-21",
"count": 1
},
{
"date": "2012-02-28",
"count": 1
},
{
"date": "2012-03-21",
"count": 1
},
{
"date": "2012-05-16",
"count": 1
},
{
"date": "2012-05-23",
"count": 1
},
{
"date": "2012-05-24",
"count": 1
},
{
"date": "2012-06-01",
"count": 1
},
{
"date": "2012-06-26",
"count": 1
},
{
"date": "2012-07-02",
"count": 1
},
{
"date": "2012-07-12",
"count": 1
},
{
"date": "2012-07-16",
"count": 1
},
{
"date": "2012-07-25",
"count": 1
},
{
"date": "2012-08-01",
"count": 1
},
{
"date": "2012-08-03",
"count": 1
},
{
"date": "2012-08-09",
"count": 1
},
{
"date": "2012-09-11",
"count": 1
},
{
"date": "2012-10-01",
"count": 1
},
{
"date": "2012-10-07",
"count": 1
},
{
"date": "2012-10-08",
"count": 1
},
{
"date": "2012-10-22",
"count": 1
},
{
"date": "2012-10-26",
"count": 1
},
{
"date": "2012-10-30",
"count": 1
},
{
"date": "2012-11-06",
"count": 1
},
{
"date": "2012-11-12",
"count": 1
},
{
"date": "2012-12-05",
"count": 1
},
{
"date": "2012-12-10",
"count": 1
},
{
"date": "2013-01-07",
"count": 1
},
{
"date": "2013-01-09",
"count": 1
},
{
"date": "2013-01-27",
"count": 1
},
{
"date": "2013-02-04",
"count": 1
},
{
"date": "2013-02-05",
"count": 1
},
{
"date": "2013-02-06",
"count": 1
},
{
"date": "2013-02-12",
"count": 1
},
{
"date": "2013-02-21",
"count": 1
},
{
"date": "2013-02-27",
"count": 1
},
{
"date": "2013-03-01",
"count": 1
},
{
"date": "2013-03-05",
"count": 1
},
{
"date": "2013-03-12",
"count": 1
},
{
"date": "2013-03-14",
"count": 1
},
{
"date": "2013-04-03",
"count": 1
},
{
"date": "2013-04-09",
"count": 1
},
{
"date": "2013-04-22",
"count": 1
},
{
"date": "2013-04-26",
"count": 2
},
{
"date": "2013-05-01",
"count": 1
},
{
"date": "2013-05-02",
"count": 2
},
{
"date": "2013-05-11",
"count": 1
},
{
"date": "2013-05-19",
"count": 1
},
{
"date": "2013-05-23",
"count": 1
},
{
"date": "2013-05-29",
"count": 2
},
{
"date": "2013-06-01",
"count": 1
},
{
"date": "2013-06-10",
"count": 1
},
{
"date": "2013-06-11",
"count": 1
},
{
"date": "2013-06-24",
"count": 1
},
{
"date": "2013-07-04",
"count": 1
},
{
"date": "2013-07-05",
"count": 1
},
{
"date": "2013-07-08",
"count": 1
},
{
"date": "2013-07-11",
"count": 1
},
{
"date": "2013-07-16",
"count": 2
},
{
"date": "2013-07-25",
"count": 1
},
{
"date": "2013-08-02",
"count": 1
},
{
"date": "2013-08-09",
"count": 1
},
{
"date": "2013-08-16",
"count": 1
},
{
"date": "2013-08-24",
"count": 1
},
{
"date": "2013-08-29",
"count": 1
},
{
"date": "2013-08-31",
"count": 1
},
{
"date": "2013-09-08",
"count": 1
},
{
"date": "2013-09-14",
"count": 1
},
{
"date": "2013-09-15",
"count": 2
},
{
"date": "2013-09-20",
"count": 1
},
{
"date": "2013-09-25",
"count": 1
},
{
"date": "2013-09-27",
"count": 1
},
{
"date": "2013-10-03",
"count": 1
},
{
"date": "2013-10-07",
"count": 1
},
{
"date": "2013-10-10",
"count": 1
},
{
"date": "2013-10-19",
"count": 1
},
{
"date": "2013-11-16",
"count": 1
},
{
"date": "2013-11-20",
"count": 1
},
{
"date": "2013-11-22",
"count": 1
},
{
"date": "2013-12-01",
"count": 1
},
{
"date": "2013-12-02",
"count": 1
},
{
"date": "2013-12-05",
"count": 1
},
{
"date": "2013-12-06",
"count": 1
},
{
"date": "2013-12-17",
"count": 1
},
{
"date": "2013-12-23",
"count": 1
},
{
"date": "2014-01-06",
"count": 3
},
{
"date": "2014-01-14",
"count": 1
},
{
"date": "2014-01-28",
"count": 1
},
{
"date": "2014-02-06",
"count": 1
},
{
"date": "2014-02-07",
"count": 1
},
{
"date": "2014-02-08",
"count": 1
},
{
"date": "2014-02-20",
"count": 1
},
{
"date": "2014-02-22",
"count": 1
},
{
"date": "2014-03-02",
"count": 1
},
{
"date": "2014-03-12",
"count": 1
},
{
"date": "2014-03-18",
"count": 1
},
{
"date": "2014-04-15",
"count": 1
},
{
"date": "2014-05-01",
"count": 1
},
{
"date": "2014-05-08",
"count": 1
},
{
"date": "2014-05-19",
"count": 1
},
{
"date": "2014-05-30",
"count": 1
},
{
"date": "2014-06-02",
"count": 1
},
{
"date": "2014-06-09",
"count": 1
},
{
"date": "2014-06-12",
"count": 1
},
{
"date": "2014-06-17",
"count": 2
},
{
"date": "2014-06-24",
"count": 1
},
{
"date": "2014-07-02",
"count": 1
},
{
"date": "2014-07-11",
"count": 1
},
{
"date": "2014-07-14",
"count": 1
},
{
"date": "2014-07-15",
"count": 1
},
{
"date": "2014-07-16",
"count": 1
},
{
"date": "2014-07-25",
"count": 1
},
{
"date": "2014-07-28",
"count": 1
},
{
"date": "2014-07-31",
"count": 1
},
{
"date": "2014-08-01",
"count": 1
},
{
"date": "2014-08-06",
"count": 1
},
{
"date": "2014-08-08",
"count": 1
},
{
"date": "2014-08-10",
"count": 1
},
{
"date": "2014-08-12",
"count": 1
},
{
"date": "2014-08-29",
"count": 1
},
{
"date": "2014-09-23",
"count": 1
},
{
"date": "2014-09-26",
"count": 1
},
{
"date": "2014-09-29",
"count": 1
},
{
"date": "2014-10-02",
"count": 1
},
{
"date": "2014-10-09",
"count": 1
},
{
"date": "2014-10-21",
"count": 1
},
{
"date": "2014-10-23",
"count": 1
},
{
"date": "2014-10-28",
"count": 1
},
{
"date": "2014-11-19",
"count": 1
},
{
"date": "2014-11-25",
"count": 2
},
{
"date": "2014-11-26",
"count": 1
},
{
"date": "2014-11-27",
"count": 1
},
{
"date": "2014-12-18",
"count": 1
},
{
"date": "2015-01-03",
"count": 1
},
{
"date": "2015-01-08",
"count": 1
},
{
"date": "2015-01-12",
"count": 1
},
{
"date": "2015-01-13",
"count": 1
},
{
"date": "2015-01-23",
"count": 1
},
{
"date": "2015-02-02",
"count": 1
},
{
"date": "2015-02-10",
"count": 1
},
{
"date": "2015-02-11",
"count": 1
},
{
"date": "2015-02-21",
"count": 1
},
{
"date": "2015-02-23",
"count": 1
},
{
"date": "2015-03-05",
"count": 1
},
{
"date": "2015-04-21",
"count": 1
},
{
"date": "2015-05-17",
"count": 1
},
{
"date": "2015-05-19",
"count": 1
},
{
"date": "2015-05-27",
"count": 1
},
{
"date": "2015-06-03",
"count": 1
},
{
"date": "2015-06-06",
"count": 1
},
{
"date": "2015-06-25",
"count": 1
},
{
"date": "2015-06-26",
"count": 1
},
{
"date": "2015-06-28",
"count": 1
},
{
"date": "2015-07-14",
"count": 1
},
{
"date": "2015-07-17",
"count": 1
},
{
"date": "2015-07-18",
"count": 1
},
{
"date": "2015-07-24",
"count": 1
},
{
"date": "2015-08-09",
"count": 1
},
{
"date": "2015-08-11",
"count": 1
},
{
"date": "2015-08-29",
"count": 1
},
{
"date": "2015-09-06",
"count": 1
},
{
"date": "2015-10-20",
"count": 1
},
{
"date": "2015-10-22",
"count": 1
},
{
"date": "2015-10-25",
"count": 1
},
{
"date": "2015-10-27",
"count": 1
},
{
"date": "2015-11-05",
"count": 1
},
{
"date": "2015-11-12",
"count": 1
},
{
"date": "2015-11-24",
"count": 1
},
{
"date": "2015-11-29",
"count": 1
},
{
"date": "2015-12-01",
"count": 1
},
{
"date": "2015-12-02",
"count": 1
},
{
"date": "2015-12-09",
"count": 1
},
{
"date": "2015-12-10",
"count": 1
},
{
"date": "2015-12-15",
"count": 1
},
{
"date": "2015-12-30",
"count": 1
},
{
"date": "2016-01-05",
"count": 1
},
{
"date": "2016-01-12",
"count": 1
},
{
"date": "2016-01-13",
"count": 1
},
{
"date": "2016-01-20",
"count": 1
},
{
"date": "2016-01-24",
"count": 1
},
{
"date": "2016-01-25",
"count": 2
},
{
"date": "2016-02-20",
"count": 1
},
{
"date": "2016-02-22",
"count": 2
},
{
"date": "2016-03-16",
"count": 1
},
{
"date": "2016-03-19",
"count": 1
},
{
"date": "2016-03-22",
"count": 1
},
{
"date": "2016-04-09",
"count": 1
},
{
"date": "2016-05-26",
"count": 1
},
{
"date": "2016-06-03",
"count": 1
},
{
"date": "2016-06-16",
"count": 2
},
{
"date": "2016-06-17",
"count": 1
},
{
"date": "2016-06-23",
"count": 1
},
{
"date": "2016-07-04",
"count": 1
},
{
"date": "2016-07-08",
"count": 1
},
{
"date": "2016-07-15",
"count": 1
},
{
"date": "2016-07-21",
"count": 2
},
{
"date": "2016-08-03",
"count": 1
},
{
"date": "2016-08-05",
"count": 1
},
{
"date": "2016-08-16",
"count": 1
},
{
"date": "2016-08-17",
"count": 1
},
{
"date": "2016-09-04",
"count": 1
},
{
"date": "2016-09-07",
"count": 1
},
{
"date": "2016-09-20",
"count": 2
},
{
"date": "2016-09-29",
"count": 1
},
{
"date": "2016-10-07",
"count": 1
},
{
"date": "2016-10-25",
"count": 1
},
{
"date": "2016-11-02",
"count": 1
},
{
"date": "2016-11-16",
"count": 2
},
{
"date": "2016-11-21",
"count": 1
},
{
"date": "2016-12-02",
"count": 1
},
{
"date": "2016-12-04",
"count": 1
},
{
"date": "2016-12-07",
"count": 1
},
{
"date": "2016-12-19",
"count": 1
},
{
"date": "2017-01-03",
"count": 1
},
{
"date": "2017-01-18",
"count": 1
},
{
"date": "2017-01-23",
"count": 1
},
{
"date": "2017-02-08",
"count": 1
},
{
"date": "2017-02-17",
"count": 1
},
{
"date": "2017-03-08",
"count": 1
},
{
"date": "2017-04-10",
"count": 1
},
{
"date": "2017-05-07",
"count": 1
},
{
"date": "2017-05-23",
"count": 1
},
{
"date": "2017-07-06",
"count": 1
},
{
"date": "2017-07-16",
"count": 1
},
{
"date": "2017-07-21",
"count": 1
},
{
"date": "2017-09-26",
"count": 1
},
{
"date": "2017-09-27",
"count": 1
},
{
"date": "2017-10-09",
"count": 1
},
{
"date": "2017-11-08",
"count": 1
},
{
"date": "2017-11-17",
"count": 1
},
{
"date": "2017-11-28",
"count": 1
},
{
"date": "2017-12-14",
"count": 1
},
{
"date": "2017-12-22",
"count": 1
},
{
"date": "2018-01-09",
"count": 1
},
{
"date": "2018-01-16",
"count": 1
},
{
"date": "2018-01-29",
"count": 1
},
{
"date": "2018-01-31",
"count": 2
},
{
"date": "2018-02-02",
"count": 1
},
{
"date": "2018-02-09",
"count": 1
},
{
"date": "2018-02-22",
"count": 1
},
{
"date": "2018-02-28",
"count": 1
},
{
"date": "2018-03-06",
"count": 1
},
{
"date": "2018-03-30",
"count": 1
},
{
"date": "2018-04-13",
"count": 1
},
{
"date": "2018-04-19",
"count": 1
},
{
"date": "2018-05-04",
"count": 1
},
{
"date": "2018-05-16",
"count": 1
},
{
"date": "2018-05-18",
"count": 1
},
{
"date": "2018-06-04",
"count": 1
},
{
"date": "2018-06-11",
"count": 1
},
{
"date": "2018-06-21",
"count": 1
},
{
"date": "2018-07-10",
"count": 1
},
{
"date": "2018-07-19",
"count": 1
},
{
"date": "2018-07-24",
"count": 1
},
{
"date": "2018-07-27",
"count": 1
},
{
"date": "2018-08-04",
"count": 1
},
{
"date": "2018-08-07",
"count": 1
},
{
"date": "2018-09-20",
"count": 1
},
{
"date": "2018-09-25",
"count": 1
},
{
"date": "2018-10-09",
"count": 1
},
{
"date": "2018-11-09",
"count": 1
},
{
"date": "2018-11-29",
"count": 1
},
{
"date": "2019-01-05",
"count": 1
},
{
"date": "2019-01-21",
"count": 1
},
{
"date": "2019-01-31",
"count": 1
},
{
"date": "2019-03-02",
"count": 1
},
{
"date": "2019-03-14",
"count": 1
},
{
"date": "2019-03-27",
"count": 1
},
{
"date": "2019-05-14",
"count": 2
},
{
"date": "2019-05-30",
"count": 1
},
{
"date": "2019-06-11",
"count": 1
},
{
"date": "2019-06-24",
"count": 1
},
{
"date": "2019-08-02",
"count": 1
},
{
"date": "2019-08-04",
"count": 1
},
{
"date": "2019-09-11",
"count": 1
},
{
"date": "2019-09-17",
"count": 1
},
{
"date": "2019-10-28",
"count": 1
},
{
"date": "2019-11-07",
"count": 1
},
{
"date": "2019-11-11",
"count": 1
},
{
"date": "2019-11-18",
"count": 1
},
{
"date": "2019-11-26",
"count": 1
},
{
"date": "2019-12-22",
"count": 1
},
{
"date": "2020-01-07",
"count": 1
},
{
"date": "2020-01-14",
"count": 1
},
{
"date": "2020-02-03",
"count": 1
},
{
"date": "2020-02-12",
"count": 1
},
{
"date": "2020-02-13",
"count": 1
},
{
"date": "2020-02-19",
"count": 1
},
{
"date": "2020-03-03",
"count": 1
},
{
"date": "2020-03-20",
"count": 1
},
{
"date": "2020-03-27",
"count": 1
},
{
"date": "2020-04-02",
"count": 1
},
{
"date": "2020-04-04",
"count": 1
},
{
"date": "2020-04-12",
"count": 1
},
{
"date": "2020-04-30",
"count": 1
},
{
"date": "2020-05-28",
"count": 1
},
{
"date": "2020-06-05",
"count": 1
},
{
"date": "2020-06-22",
"count": 1
},
{
"date": "2020-06-24",
"count": 1
},
{
"date": "2020-06-30",
"count": 1
},
{
"date": "2020-07-16",
"count": 1
},
{
"date": "2020-07-29",
"count": 1
},
{
"date": "2020-07-31",
"count": 1
},
{
"date": "2020-08-05",
"count": 2
},
{
"date": "2020-08-11",
"count": 1
},
{
"date": "2020-08-16",
"count": 1
},
{
"date": "2020-08-18",
"count": 1
},
{
"date": "2020-08-21",
"count": 1
},
{
"date": "2020-08-25",
"count": 1
},
{
"date": "2020-08-27",
"count": 1
},
{
"date": "2020-09-02",
"count": 1
},
{
"date": "2020-10-12",
"count": 1
},
{
"date": "2020-10-18",
"count": 1
},
{
"date": "2020-11-27",
"count": 1
},
{
"date": "2020-12-09",
"count": 1
},
{
"date": "2021-01-23",
"count": 1
},
{
"date": "2021-02-02",
"count": 2
},
{
"date": "2021-02-16",
"count": 1
},
{
"date": "2021-03-13",
"count": 1
},
{
"date": "2021-03-18",
"count": 1
},
{
"date": "2021-03-23",
"count": 1
},
{
"date": "2021-03-26",
"count": 1
},
{
"date": "2021-03-30",
"count": 1
},
{
"date": "2021-04-09",
"count": 1
},
{
"date": "2021-05-12",
"count": 1
},
{
"date": "2021-05-20",
"count": 1
},
{
"date": "2021-05-27",
"count": 1
},
{
"date": "2021-06-08",
"count": 1
},
{
"date": "2021-06-15",
"count": 1
},
{
"date": "2021-07-09",
"count": 1
},
{
"date": "2021-07-15",
"count": 1
},
{
"date": "2021-07-22",
"count": 1
},
{
"date": "2021-07-28",
"count": 1
},
{
"date": "2021-09-13",
"count": 1
},
{
"date": "2021-09-30",
"count": 1
},
{
"date": "2021-10-10",
"count": 1
},
{
"date": "2021-10-17",
"count": 1
},
{
"date": "2021-11-01",
"count": 1
},
{
"date": "2021-12-01",
"count": 1
},
{
"date": "2021-12-22",
"count": 1
},
{
"date": "2022-01-05",
"count": 1
},
{
"date": "2022-03-13",
"count": 1
},
{
"date": "2022-03-25",
"count": 1
},
{
"date": "2022-05-02",
"count": 1
},
{
"date": "2022-05-13",
"count": 1
},
{
"date": "2022-05-14",
"count": 1
},
{
"date": "2022-06-13",
"count": 1
},
{
"date": "2022-06-14",
"count": 1
},
{
"date": "2022-07-11",
"count": 1
},
{
"date": "2022-07-23",
"count": 1
},
{
"date": "2022-07-26",
"count": 1
},
{
"date": "2022-08-02",
"count": 1
},
{
"date": "2022-10-03",
"count": 1
},
{
"date": "2022-10-20",
"count": 1
},
{
"date": "2022-11-04",
"count": 1
},
{
"date": "2022-11-24",
"count": 1
},
{
"date": "2022-12-27",
"count": 1
},
{
"date": "2023-01-16",
"count": 1
},
{
"date": "2023-01-21",
"count": 1
},
{
"date": "2023-02-02",
"count": 1
},
{
"date": "2023-02-10",
"count": 1
},
{
"date": "2023-02-23",
"count": 1
},
{
"date": "2023-03-01",
"count": 1
},
{
"date": "2023-03-06",
"count": 1
},
{
"date": "2023-03-08",
"count": 1
},
{
"date": "2023-03-17",
"count": 1
},
{
"date": "2023-04-01",
"count": 1
},
{
"date": "2023-04-18",
"count": 1
},
{
"date": "2023-07-07",
"count": 1
},
{
"date": "2023-08-29",
"count": 1
},
{
"date": "2023-09-11",
"count": 1
},
{
"date": "2023-10-20",
"count": 2
},
{
"date": "2023-11-19",
"count": 1
},
{
"date": "2023-12-20",
"count": 1
},
{
"date": "2024-02-21",
"count": 1
},
{
"date": "2024-02-23",
"count": 1
},
{
"date": "2024-02-25",
"count": 1
},
{
"date": "2024-03-14",
"count": 1
},
{
"date": "2024-03-19",
"count": 2
},
{
"date": "2024-03-29",
"count": 1
},
{
"date": "2024-04-25",
"count": 1
},
{
"date": "2024-04-29",
"count": 1
},
{
"date": "2024-05-10",
"count": 1
},
{
"date": "2024-05-24",
"count": 2
},
{
"date": "2024-05-31",
"count": 1
},
{
"date": "2024-06-05",
"count": 1
},
{
"date": "2024-06-11",
"count": 1
},
{
"date": "2024-06-12",
"count": 1
},
{
"date": "2024-08-12",
"count": 1
},
{
"date": "2024-09-27",
"count": 1
},
{
"date": "2024-10-05",
"count": 1
},
{
"date": "2024-10-13",
"count": 1
},
{
"date": "2024-10-21",
"count": 1
},
{
"date": "2024-10-22",
"count": 1
},
{
"date": "2024-10-28",
"count": 1
},
{
"date": "2024-10-29",
"count": 1
},
{
"date": "2024-11-03",
"count": 1
},
{
"date": "2024-11-09",
"count": 1
},
{
"date": "2024-12-04",
"count": 1
},
{
"date": "2024-12-21",
"count": 1
},
{
"date": "2025-03-16",
"count": 1
},
{
"date": "2025-05-06",
"count": 1
},
{
"date": "2025-05-14",
"count": 1
},
{
"date": "2025-06-03",
"count": 1
},
{
"date": "2025-06-09",
"count": 1
},
{
"date": "2025-07-04",
"count": 1
},
{
"date": "2025-08-16",
"count": 1
},
{
"date": "2025-11-22",
"count": 1
},
{
"date": "2026-01-29",
"count": 1
},
{
"date": "2026-03-29",
"count": 1
},
{
"date": "2026-04-01",
"count": 1
},
{
"date": "2026-05-12",
"count": 1
},
{
"date": "2026-05-20",
"count": 1
},
{
"date": "2026-06-17",
"count": 1
}
],
"complete": true,
"collected": 503,
"total_forks": 528
},
"star_history": {
"days": [
{
"date": "2015-01-30",
"count": 1
},
{
"date": "2015-02-02",
"count": 1
},
{
"date": "2015-02-03",
"count": 2
},
{
"date": "2015-02-05",
"count": 1
},
{
"date": "2015-02-09",
"count": 1
},
{
"date": "2015-02-10",
"count": 3
},
{
"date": "2015-02-14",
"count": 1
},
{
"date": "2015-02-23",
"count": 1
},
{
"date": "2015-03-01",
"count": 1
},
{
"date": "2015-03-02",
"count": 2
},
{
"date": "2015-03-03",
"count": 3
},
{
"date": "2015-03-04",
"count": 2
},
{
"date": "2015-03-05",
"count": 3
},
{
"date": "2015-03-06",
"count": 2
},
{
"date": "2015-03-07",
"count": 1
},
{
"date": "2015-03-14",
"count": 2
},
{
"date": "2015-03-17",
"count": 2
},
{
"date": "2015-03-18",
"count": 1
},
{
"date": "2015-03-23",
"count": 1
},
{
"date": "2015-03-26",
"count": 1
},
{
"date": "2015-04-13",
"count": 2
},
{
"date": "2015-04-15",
"count": 1
},
{
"date": "2015-04-17",
"count": 1
},
{
"date": "2015-04-20",
"count": 1
},
{
"date": "2015-04-21",
"count": 1
},
{
"date": "2015-04-22",
"count": 1
},
{
"date": "2015-04-29",
"count": 1
},
{
"date": "2015-05-02",
"count": 1
},
{
"date": "2015-05-05",
"count": 1
},
{
"date": "2015-05-10",
"count": 1
},
{
"date": "2015-05-11",
"count": 2
},
{
"date": "2015-05-12",
"count": 1
},
{
"date": "2015-05-15",
"count": 1
},
{
"date": "2015-05-16",
"count": 1
},
{
"date": "2015-05-18",
"count": 2
},
{
"date": "2015-05-25",
"count": 3
},
{
"date": "2015-05-30",
"count": 1
},
{
"date": "2015-06-02",
"count": 1
},
{
"date": "2015-06-06",
"count": 1
},
{
"date": "2015-06-13",
"count": 1
},
{
"date": "2015-06-15",
"count": 2
},
{
"date": "2015-06-19",
"count": 2
},
{
"date": "2015-06-24",
"count": 1
},
{
"date": "2015-06-28",
"count": 1
},
{
"date": "2015-07-07",
"count": 1
},
{
"date": "2015-07-09",
"count": 1
},
{
"date": "2015-07-10",
"count": 2
},
{
"date": "2015-07-14",
"count": 1
},
{
"date": "2015-07-15",
"count": 1
},
{
"date": "2015-07-17",
"count": 1
},
{
"date": "2015-07-19",
"count": 1
},
{
"date": "2015-08-04",
"count": 1
},
{
"date": "2015-08-07",
"count": 2
},
{
"date": "2015-08-10",
"count": 2
},
{
"date": "2015-08-11",
"count": 1
},
{
"date": "2015-08-14",
"count": 1
},
{
"date": "2015-08-15",
"count": 1
},
{
"date": "2015-08-18",
"count": 1
},
{
"date": "2015-08-19",
"count": 1
},
{
"date": "2015-08-20",
"count": 1
},
{
"date": "2015-08-27",
"count": 2
},
{
"date": "2015-08-28",
"count": 1
},
{
"date": "2015-08-31",
"count": 2
},
{
"date": "2015-09-02",
"count": 1
},
{
"date": "2015-09-06",
"count": 2
},
{
"date": "2015-09-12",
"count": 1
},
{
"date": "2015-09-16",
"count": 3
},
{
"date": "2015-09-18",
"count": 2
},
{
"date": "2015-09-22",
"count": 1
},
{
"date": "2015-09-25",
"count": 1
},
{
"date": "2015-09-27",
"count": 1
},
{
"date": "2015-09-28",
"count": 1
},
{
"date": "2015-09-29",
"count": 2
},
{
"date": "2015-10-06",
"count": 1
},
{
"date": "2015-10-07",
"count": 1
},
{
"date": "2015-10-08",
"count": 3
},
{
"date": "2015-10-09",
"count": 1
},
{
"date": "2015-10-14",
"count": 1
},
{
"date": "2015-10-15",
"count": 1
},
{
"date": "2015-10-17",
"count": 1
},
{
"date": "2015-10-20",
"count": 1
},
{
"date": "2015-10-21",
"count": 1
},
{
"date": "2015-10-22",
"count": 3
},
{
"date": "2015-10-23",
"count": 1
},
{
"date": "2015-10-26",
"count": 1
},
{
"date": "2015-10-28",
"count": 1
},
{
"date": "2015-11-02",
"count": 1
},
{
"date": "2015-11-05",
"count": 2
},
{
"date": "2015-11-11",
"count": 2
},
{
"date": "2015-11-12",
"count": 1
},
{
"date": "2015-11-14",
"count": 1
},
{
"date": "2015-11-16",
"count": 2
},
{
"date": "2015-11-17",
"count": 1
},
{
"date": "2015-11-18",
"count": 1
},
{
"date": "2015-11-20",
"count": 1
},
{
"date": "2015-11-22",
"count": 1
},
{
"date": "2015-11-25",
"count": 1
},
{
"date": "2015-11-27",
"count": 1
},
{
"date": "2015-12-03",
"count": 1
},
{
"date": "2015-12-04",
"count": 1
},
{
"date": "2015-12-07",
"count": 1
},
{
"date": "2015-12-09",
"count": 1
},
{
"date": "2015-12-16",
"count": 1
},
{
"date": "2015-12-17",
"count": 1
},
{
"date": "2015-12-25",
"count": 1
},
{
"date": "2015-12-29",
"count": 1
},
{
"date": "2016-01-01",
"count": 1
},
{
"date": "2016-01-02",
"count": 1
},
{
"date": "2016-01-07",
"count": 1
},
{
"date": "2016-01-11",
"count": 1
},
{
"date": "2016-01-13",
"count": 2
},
{
"date": "2016-01-15",
"count": 1
},
{
"date": "2016-01-17",
"count": 1
},
{
"date": "2016-01-18",
"count": 1
},
{
"date": "2016-01-19",
"count": 1
},
{
"date": "2016-01-20",
"count": 1
},
{
"date": "2016-01-21",
"count": 2
},
{
"date": "2016-01-24",
"count": 1
},
{
"date": "2016-01-25",
"count": 1
},
{
"date": "2016-01-26",
"count": 1
},
{
"date": "2016-01-27",
"count": 3
},
{
"date": "2016-02-02",
"count": 1
},
{
"date": "2016-02-09",
"count": 2
},
{
"date": "2016-02-15",
"count": 1
},
{
"date": "2016-02-18",
"count": 1
},
{
"date": "2016-02-22",
"count": 1
},
{
"date": "2016-02-24",
"count": 1
},
{
"date": "2016-02-25",
"count": 1
},
{
"date": "2016-02-29",
"count": 2
},
{
"date": "2016-03-01",
"count": 2
},
{
"date": "2016-03-03",
"count": 1
},
{
"date": "2016-03-05",
"count": 1
},
{
"date": "2016-03-06",
"count": 1
},
{
"date": "2016-03-13",
"count": 1
},
{
"date": "2016-03-14",
"count": 2
},
{
"date": "2016-03-15",
"count": 3
},
{
"date": "2016-03-18",
"count": 1
},
{
"date": "2016-03-21",
"count": 1
},
{
"date": "2016-03-27",
"count": 1
},
{
"date": "2016-03-28",
"count": 1
},
{
"date": "2016-03-29",
"count": 1
},
{
"date": "2016-04-05",
"count": 2
},
{
"date": "2016-04-12",
"count": 1
},
{
"date": "2016-04-14",
"count": 1
},
{
"date": "2016-04-15",
"count": 1
},
{
"date": "2016-04-26",
"count": 1
},
{
"date": "2016-04-28",
"count": 1
},
{
"date": "2016-05-04",
"count": 1
},
{
"date": "2016-05-06",
"count": 1
},
{
"date": "2016-05-07",
"count": 2
},
{
"date": "2016-05-08",
"count": 2
},
{
"date": "2016-05-11",
"count": 1
},
{
"date": "2016-05-15",
"count": 1
},
{
"date": "2016-05-19",
"count": 1
},
{
"date": "2016-05-25",
"count": 1
},
{
"date": "2016-05-30",
"count": 2
},
{
"date": "2016-05-31",
"count": 1
},
{
"date": "2016-06-01",
"count": 1
},
{
"date": "2016-06-03",
"count": 1
},
{
"date": "2016-06-04",
"count": 1
},
{
"date": "2016-06-08",
"count": 1
},
{
"date": "2016-06-12",
"count": 1
},
{
"date": "2016-06-13",
"count": 1
},
{
"date": "2016-06-15",
"count": 2
},
{
"date": "2016-06-17",
"count": 1
},
{
"date": "2016-06-28",
"count": 2
},
{
"date": "2016-06-30",
"count": 2
},
{
"date": "2016-07-06",
"count": 1
},
{
"date": "2016-07-07",
"count": 2
},
{
"date": "2016-07-09",
"count": 1
},
{
"date": "2016-07-14",
"count": 2
},
{
"date": "2016-07-18",
"count": 1
},
{
"date": "2016-07-21",
"count": 1
},
{
"date": "2016-07-24",
"count": 2
},
{
"date": "2016-07-27",
"count": 1
},
{
"date": "2016-07-28",
"count": 2
},
{
"date": "2016-08-03",
"count": 1
},
{
"date": "2016-08-04",
"count": 1
},
{
"date": "2016-08-08",
"count": 1
},
{
"date": "2016-08-10",
"count": 1
},
{
"date": "2016-08-14",
"count": 1
},
{
"date": "2016-08-16",
"count": 2
},
{
"date": "2016-08-18",
"count": 1
},
{
"date": "2016-08-19",
"count": 1
},
{
"date": "2016-08-23",
"count": 1
},
{
"date": "2016-08-24",
"count": 1
},
{
"date": "2016-08-26",
"count": 1
},
{
"date": "2016-08-29",
"count": 1
},
{
"date": "2016-09-01",
"count": 1
},
{
"date": "2016-09-04",
"count": 3
},
{
"date": "2016-09-14",
"count": 1
},
{
"date": "2016-09-17",
"count": 1
},
{
"date": "2016-09-19",
"count": 1
},
{
"date": "2016-09-22",
"count": 2
},
{
"date": "2016-09-26",
"count": 1
},
{
"date": "2016-09-28",
"count": 2
},
{
"date": "2016-09-30",
"count": 1
},
{
"date": "2016-10-01",
"count": 1
},
{
"date": "2016-10-05",
"count": 1
},
{
"date": "2016-10-08",
"count": 1
},
{
"date": "2016-10-11",
"count": 1
},
{
"date": "2016-10-14",
"count": 1
},
{
"date": "2016-10-17",
"count": 1
},
{
"date": "2016-10-23",
"count": 1
},
{
"date": "2016-10-27",
"count": 2
},
{
"date": "2016-10-30",
"count": 1
},
{
"date": "2016-11-02",
"count": 1
},
{
"date": "2016-11-03",
"count": 3
},
{
"date": "2016-11-07",
"count": 1
},
{
"date": "2016-11-10",
"count": 1
},
{
"date": "2016-11-14",
"count": 1
},
{
"date": "2016-11-15",
"count": 1
},
{
"date": "2016-11-22",
"count": 2
},
{
"date": "2016-11-24",
"count": 1
},
{
"date": "2016-11-26",
"count": 1
},
{
"date": "2016-12-01",
"count": 1
},
{
"date": "2016-12-02",
"count": 1
},
{
"date": "2016-12-05",
"count": 1
},
{
"date": "2016-12-08",
"count": 2
},
{
"date": "2016-12-09",
"count": 1
},
{
"date": "2016-12-17",
"count": 1
},
{
"date": "2016-12-27",
"count": 1
},
{
"date": "2016-12-29",
"count": 1
},
{
"date": "2016-12-30",
"count": 1
},
{
"date": "2016-12-31",
"count": 1
},
{
"date": "2017-01-10",
"count": 1
},
{
"date": "2017-01-11",
"count": 1
},
{
"date": "2017-01-14",
"count": 1
},
{
"date": "2017-01-19",
"count": 3
},
{
"date": "2017-02-06",
"count": 1
},
{
"date": "2017-02-07",
"count": 1
},
{
"date": "2017-02-08",
"count": 1
},
{
"date": "2017-02-19",
"count": 1
},
{
"date": "2017-03-02",
"count": 1
},
{
"date": "2017-03-07",
"count": 1
},
{
"date": "2017-03-08",
"count": 1
},
{
"date": "2017-03-09",
"count": 1
},
{
"date": "2017-03-10",
"count": 1
},
{
"date": "2017-03-16",
"count": 1
},
{
"date": "2017-03-28",
"count": 1
},
{
"date": "2017-03-29",
"count": 1
},
{
"date": "2017-04-03",
"count": 3
},
{
"date": "2017-04-05",
"count": 1
},
{
"date": "2017-04-10",
"count": 3
},
{
"date": "2017-04-13",
"count": 1
},
{
"date": "2017-04-15",
"count": 1
},
{
"date": "2017-04-19",
"count": 2
},
{
"date": "2017-04-24",
"count": 1
},
{
"date": "2017-04-25",
"count": 3
},
{
"date": "2017-04-27",
"count": 1
},
{
"date": "2017-05-01",
"count": 1
},
{
"date": "2017-05-10",
"count": 1
},
{
"date": "2017-05-12",
"count": 1
},
{
"date": "2017-05-13",
"count": 1
},
{
"date": "2017-05-15",
"count": 1
},
{
"date": "2017-05-17",
"count": 1
},
{
"date": "2017-05-18",
"count": 1
},
{
"date": "2017-05-22",
"count": 1
},
{
"date": "2017-05-23",
"count": 1
},
{
"date": "2017-05-24",
"count": 1
},
{
"date": "2017-05-25",
"count": 1
},
{
"date": "2017-05-26",
"count": 1
},
{
"date": "2017-05-27",
"count": 1
},
{
"date": "2017-05-31",
"count": 1
},
{
"date": "2017-06-06",
"count": 1
},
{
"date": "2017-06-09",
"count": 1
},
{
"date": "2017-06-10",
"count": 1
},
{
"date": "2017-06-19",
"count": 1
},
{
"date": "2017-06-21",
"count": 1
},
{
"date": "2017-06-26",
"count": 1
},
{
"date": "2017-06-27",
"count": 3
},
{
"date": "2017-07-05",
"count": 1
},
{
"date": "2017-07-12",
"count": 1
},
{
"date": "2017-07-13",
"count": 1
},
{
"date": "2017-07-19",
"count": 1
},
{
"date": "2017-07-27",
"count": 1
},
{
"date": "2017-08-01",
"count": 2
},
{
"date": "2017-08-05",
"count": 1
},
{
"date": "2017-08-09",
"count": 1
},
{
"date": "2017-08-16",
"count": 1
},
{
"date": "2017-08-19",
"count": 1
},
{
"date": "2017-08-22",
"count": 1
},
{
"date": "2017-08-24",
"count": 1
},
{
"date": "2017-09-03",
"count": 1
},
{
"date": "2017-09-08",
"count": 1
},
{
"date": "2017-09-09",
"count": 1
},
{
"date": "2017-09-14",
"count": 1
},
{
"date": "2017-09-16",
"count": 1
},
{
"date": "2017-09-18",
"count": 1
},
{
"date": "2017-09-19",
"count": 2
},
{
"date": "2017-09-29",
"count": 1
},
{
"date": "2017-10-06",
"count": 1
},
{
"date": "2017-10-11",
"count": 1
},
{
"date": "2017-10-12",
"count": 1
},
{
"date": "2017-10-18",
"count": 1
},
{
"date": "2017-10-20",
"count": 1
},
{
"date": "2017-10-21",
"count": 1
},
{
"date": "2017-10-25",
"count": 1
},
{
"date": "2017-10-26",
"count": 1
},
{
"date": "2017-10-30",
"count": 1
},
{
"date": "2017-10-31",
"count": 1
},
{
"date": "2017-11-16",
"count": 1
},
{
"date": "2017-11-20",
"count": 1
},
{
"date": "2017-11-24",
"count": 1
},
{
"date": "2017-11-27",
"count": 1
},
{
"date": "2017-11-28",
"count": 1
},
{
"date": "2017-11-30",
"count": 1
},
{
"date": "2017-12-09",
"count": 1
},
{
"date": "2017-12-13",
"count": 1
},
{
"date": "2017-12-14",
"count": 1
},
{
"date": "2017-12-20",
"count": 1
},
{
"date": "2017-12-25",
"count": 1
},
{
"date": "2017-12-27",
"count": 1
},
{
"date": "2018-01-03",
"count": 2
},
{
"date": "2018-01-04",
"count": 1
},
{
"date": "2018-01-19",
"count": 3
},
{
"date": "2018-01-24",
"count": 1
},
{
"date": "2018-01-30",
"count": 1
},
{
"date": "2018-01-31",
"count": 1
},
{
"date": "2018-02-05",
"count": 1
},
{
"date": "2018-02-06",
"count": 1
},
{
"date": "2018-02-07",
"count": 1
},
{
"date": "2018-02-14",
"count": 1
},
{
"date": "2018-02-16",
"count": 1
},
{
"date": "2018-02-18",
"count": 1
},
{
"date": "2018-02-21",
"count": 1
},
{
"date": "2018-02-22",
"count": 1
},
{
"date": "2018-02-27",
"count": 1
},
{
"date": "2018-02-28",
"count": 1
},
{
"date": "2018-03-01",
"count": 2
},
{
"date": "2018-03-09",
"count": 4
},
{
"date": "2018-03-14",
"count": 1
},
{
"date": "2018-03-19",
"count": 1
},
{
"date": "2018-03-20",
"count": 1
},
{
"date": "2018-03-21",
"count": 1
},
{
"date": "2018-03-24",
"count": 1
},
{
"date": "2018-03-27",
"count": 1
},
{
"date": "2018-03-30",
"count": 1
},
{
"date": "2018-04-02",
"count": 2
},
{
"date": "2018-04-06",
"count": 1
},
{
"date": "2018-04-23",
"count": 1
},
{
"date": "2018-04-29",
"count": 2
},
{
"date": "2018-05-01",
"count": 1
},
{
"date": "2018-05-04",
"count": 1
},
{
"date": "2018-05-05",
"count": 1
},
{
"date": "2018-05-13",
"count": 1
},
{
"date": "2018-05-16",
"count": 1
},
{
"date": "2018-05-17",
"count": 1
},
{
"date": "2018-05-20",
"count": 2
},
{
"date": "2018-05-21",
"count": 1
},
{
"date": "2018-05-24",
"count": 1
},
{
"date": "2018-06-02",
"count": 1
},
{
"date": "2018-06-03",
"count": 1
},
{
"date": "2018-06-04",
"count": 1
},
{
"date": "2018-06-05",
"count": 1
},
{
"date": "2018-06-07",
"count": 1
},
{
"date": "2018-06-09",
"count": 1
},
{
"date": "2018-06-12",
"count": 1
},
{
"date": "2018-06-16",
"count": 1
},
{
"date": "2018-06-24",
"count": 1
},
{
"date": "2018-07-02",
"count": 1
},
{
"date": "2018-07-04",
"count": 1
},
{
"date": "2018-07-05",
"count": 1
},
{
"date": "2018-07-10",
"count": 1
},
{
"date": "2018-07-12",
"count": 2
},
{
"date": "2018-07-15",
"count": 1
},
{
"date": "2018-07-17",
"count": 1
},
{
"date": "2018-07-19",
"count": 1
},
{
"date": "2018-07-20",
"count": 1
},
{
"date": "2018-07-23",
"count": 1
},
{
"date": "2018-07-29",
"count": 1
},
{
"date": "2018-07-31",
"count": 1
},
{
"date": "2018-08-02",
"count": 2
},
{
"date": "2018-08-15",
"count": 1
},
{
"date": "2018-08-16",
"count": 1
},
{
"date": "2018-08-24",
"count": 1
},
{
"date": "2018-09-07",
"count": 1
},
{
"date": "2018-09-13",
"count": 1
},
{
"date": "2018-09-14",
"count": 2
},
{
"date": "2018-09-17",
"count": 5
},
{
"date": "2018-09-19",
"count": 1
},
{
"date": "2018-09-20",
"count": 1
},
{
"date": "2018-09-28",
"count": 1
},
{
"date": "2018-10-01",
"count": 1
},
{
"date": "2018-10-11",
"count": 1
},
{
"date": "2018-10-30",
"count": 1
},
{
"date": "2018-10-31",
"count": 3
},
{
"date": "2018-11-06",
"count": 1
},
{
"date": "2018-11-13",
"count": 1
},
{
"date": "2018-11-15",
"count": 1
},
{
"date": "2018-11-17",
"count": 1
},
{
"date": "2018-12-03",
"count": 2
},
{
"date": "2018-12-04",
"count": 1
},
{
"date": "2018-12-10",
"count": 2
},
{
"date": "2018-12-11",
"count": 1
},
{
"date": "2018-12-13",
"count": 1
},
{
"date": "2018-12-14",
"count": 1
},
{
"date": "2018-12-25",
"count": 1
},
{
"date": "2018-12-27",
"count": 1
},
{
"date": "2019-01-01",
"count": 1
},
{
"date": "2019-01-03",
"count": 1
},
{
"date": "2019-01-06",
"count": 1
},
{
"date": "2019-01-09",
"count": 1
},
{
"date": "2019-01-11",
"count": 1
},
{
"date": "2019-01-25",
"count": 1
},
{
"date": "2019-01-31",
"count": 1
},
{
"date": "2019-02-03",
"count": 1
},
{
"date": "2019-02-04",
"count": 1
},
{
"date": "2019-02-10",
"count": 2
},
{
"date": "2019-02-11",
"count": 1
},
{
"date": "2019-02-13",
"count": 1
},
{
"date": "2019-02-19",
"count": 1
},
{
"date": "2019-02-20",
"count": 1
},
{
"date": "2019-02-21",
"count": 1
},
{
"date": "2019-02-23",
"count": 1
},
{
"date": "2019-03-02",
"count": 1
},
{
"date": "2019-03-14",
"count": 1
},
{
"date": "2019-03-16",
"count": 1
},
{
"date": "2019-03-21",
"count": 1
},
{
"date": "2019-03-22",
"count": 1
},
{
"date": "2019-03-25",
"count": 2
},
{
"date": "2019-03-31",
"count": 2
},
{
"date": "2019-04-05",
"count": 1
},
{
"date": "2019-04-07",
"count": 1
},
{
"date": "2019-04-10",
"count": 1
},
{
"date": "2019-04-11",
"count": 1
},
{
"date": "2019-04-12",
"count": 1
},
{
"date": "2019-04-16",
"count": 1
},
{
"date": "2019-04-26",
"count": 1
},
{
"date": "2019-04-29",
"count": 1
},
{
"date": "2019-05-02",
"count": 1
},
{
"date": "2019-05-10",
"count": 1
},
{
"date": "2019-05-14",
"count": 1
},
{
"date": "2019-05-21",
"count": 1
},
{
"date": "2019-05-22",
"count": 1
},
{
"date": "2019-05-23",
"count": 2
},
{
"date": "2019-05-28",
"count": 1
},
{
"date": "2019-06-01",
"count": 1
},
{
"date": "2019-06-02",
"count": 1
},
{
"date": "2019-06-10",
"count": 1
},
{
"date": "2019-06-11",
"count": 1
},
{
"date": "2019-06-21",
"count": 1
},
{
"date": "2019-07-05",
"count": 2
},
{
"date": "2019-07-15",
"count": 1
},
{
"date": "2019-07-17",
"count": 1
},
{
"date": "2019-07-29",
"count": 1
},
{
"date": "2019-07-30",
"count": 1
},
{
"date": "2019-08-01",
"count": 1
},
{
"date": "2019-08-04",
"count": 1
},
{
"date": "2019-08-07",
"count": 1
},
{
"date": "2019-08-10",
"count": 2
},
{
"date": "2019-09-03",
"count": 1
},
{
"date": "2019-09-06",
"count": 1
},
{
"date": "2019-09-18",
"count": 1
},
{
"date": "2019-09-20",
"count": 2
},
{
"date": "2019-09-30",
"count": 1
},
{
"date": "2019-10-03",
"count": 1
},
{
"date": "2019-10-10",
"count": 1
},
{
"date": "2019-10-18",
"count": 2
},
{
"date": "2019-10-19",
"count": 1
},
{
"date": "2019-10-29",
"count": 1
},
{
"date": "2019-11-02",
"count": 1
},
{
"date": "2019-11-03",
"count": 2
},
{
"date": "2019-11-04",
"count": 2
},
{
"date": "2019-11-05",
"count": 1
},
{
"date": "2019-11-08",
"count": 1
},
{
"date": "2019-11-15",
"count": 1
},
{
"date": "2019-11-26",
"count": 1
},
{
"date": "2019-11-27",
"count": 1
},
{
"date": "2019-11-28",
"count": 1
},
{
"date": "2019-12-19",
"count": 1
},
{
"date": "2019-12-27",
"count": 2
},
{
"date": "2019-12-30",
"count": 1
},
{
"date": "2020-01-07",
"count": 1
},
{
"date": "2020-01-15",
"count": 2
},
{
"date": "2020-01-24",
"count": 1
},
{
"date": "2020-02-05",
"count": 1
},
{
"date": "2020-02-06",
"count": 11
},
{
"date": "2020-02-07",
"count": 8
},
{
"date": "2020-02-08",
"count": 5
},
{
"date": "2020-02-09",
"count": 1
},
{
"date": "2020-02-10",
"count": 2
},
{
"date": "2020-02-11",
"count": 1
},
{
"date": "2020-02-12",
"count": 1
},
{
"date": "2020-02-13",
"count": 3
},
{
"date": "2020-02-14",
"count": 3
},
{
"date": "2020-02-17",
"count": 1
},
{
"date": "2020-02-19",
"count": 1
},
{
"date": "2020-02-20",
"count": 1
},
{
"date": "2020-02-25",
"count": 1
},
{
"date": "2020-02-28",
"count": 1
},
{
"date": "2020-03-02",
"count": 1
},
{
"date": "2020-03-14",
"count": 1
},
{
"date": "2020-03-18",
"count": 1
},
{
"date": "2020-03-24",
"count": 1
},
{
"date": "2020-03-29",
"count": 1
},
{
"date": "2020-03-30",
"count": 2
},
{
"date": "2020-03-31",
"count": 1
},
{
"date": "2020-04-02",
"count": 1
},
{
"date": "2020-04-07",
"count": 1
},
{
"date": "2020-04-08",
"count": 1
},
{
"date": "2020-04-09",
"count": 1
},
{
"date": "2020-04-11",
"count": 1
},
{
"date": "2020-04-17",
"count": 1
},
{
"date": "2020-04-19",
"count": 1
},
{
"date": "2020-04-20",
"count": 1
},
{
"date": "2020-04-21",
"count": 1
},
{
"date": "2020-04-23",
"count": 1
},
{
"date": "2020-05-04",
"count": 2
},
{
"date": "2020-05-06",
"count": 1
},
{
"date": "2020-05-09",
"count": 1
},
{
"date": "2020-05-20",
"count": 1
},
{
"date": "2020-05-22",
"count": 1
},
{
"date": "2020-05-26",
"count": 1
},
{
"date": "2020-06-02",
"count": 2
},
{
"date": "2020-06-10",
"count": 1
},
{
"date": "2020-06-16",
"count": 1
},
{
"date": "2020-06-20",
"count": 1
},
{
"date": "2020-06-23",
"count": 1
},
{
"date": "2020-07-01",
"count": 1
},
{
"date": "2020-07-21",
"count": 1
},
{
"date": "2020-08-02",
"count": 1
},
{
"date": "2020-08-14",
"count": 1
},
{
"date": "2020-08-15",
"count": 1
},
{
"date": "2020-08-22",
"count": 1
},
{
"date": "2020-09-01",
"count": 1
},
{
"date": "2020-09-02",
"count": 1
},
{
"date": "2020-09-04",
"count": 1
},
{
"date": "2020-09-06",
"count": 1
},
{
"date": "2020-09-08",
"count": 1
},
{
"date": "2020-09-09",
"count": 1
},
{
"date": "2020-09-11",
"count": 2
},
{
"date": "2020-09-12",
"count": 1
},
{
"date": "2020-09-17",
"count": 1
},
{
"date": "2020-10-01",
"count": 1
},
{
"date": "2020-10-05",
"count": 1
},
{
"date": "2020-10-09",
"count": 1
},
{
"date": "2020-10-15",
"count": 1
},
{
"date": "2020-10-16",
"count": 1
},
{
"date": "2020-10-17",
"count": 1
},
{
"date": "2020-10-24",
"count": 1
},
{
"date": "2020-10-28",
"count": 1
},
{
"date": "2020-10-29",
"count": 1
},
{
"date": "2020-12-06",
"count": 1
},
{
"date": "2020-12-08",
"count": 1
},
{
"date": "2020-12-09",
"count": 1
},
{
"date": "2020-12-18",
"count": 1
},
{
"date": "2021-01-05",
"count": 2
},
{
"date": "2021-01-08",
"count": 1
},
{
"date": "2021-01-16",
"count": 1
},
{
"date": "2021-01-25",
"count": 1
},
{
"date": "2021-01-26",
"count": 1
},
{
"date": "2021-01-27",
"count": 1
},
{
"date": "2021-02-01",
"count": 1
},
{
"date": "2021-02-02",
"count": 1
},
{
"date": "2021-02-04",
"count": 1
},
{
"date": "2021-02-05",
"count": 1
},
{
"date": "2021-02-11",
"count": 1
},
{
"date": "2021-02-18",
"count": 1
},
{
"date": "2021-03-07",
"count": 1
},
{
"date": "2021-03-09",
"count": 1
},
{
"date": "2021-03-14",
"count": 1
},
{
"date": "2021-03-22",
"count": 1
},
{
"date": "2021-03-26",
"count": 1
},
{
"date": "2021-03-31",
"count": 1
},
{
"date": "2021-04-12",
"count": 1
},
{
"date": "2021-04-22",
"count": 1
},
{
"date": "2021-05-07",
"count": 1
},
{
"date": "2021-05-28",
"count": 2
},
{
"date": "2021-06-18",
"count": 1
},
{
"date": "2021-06-26",
"count": 2
},
{
"date": "2021-07-02",
"count": 1
},
{
"date": "2021-07-08",
"count": 5
},
{
"date": "2021-07-09",
"count": 3
},
{
"date": "2021-07-10",
"count": 1
},
{
"date": "2021-07-11",
"count": 1
},
{
"date": "2021-07-12",
"count": 1
},
{
"date": "2021-07-13",
"count": 4
},
{
"date": "2021-07-20",
"count": 5
},
{
"date": "2021-07-21",
"count": 1
},
{
"date": "2021-07-25",
"count": 2
},
{
"date": "2021-08-06",
"count": 1
},
{
"date": "2021-08-25",
"count": 1
},
{
"date": "2021-08-27",
"count": 1
},
{
"date": "2021-09-08",
"count": 2
},
{
"date": "2021-09-11",
"count": 1
},
{
"date": "2021-09-12",
"count": 1
},
{
"date": "2021-09-14",
"count": 1
},
{
"date": "2021-09-15",
"count": 1
},
{
"date": "2021-09-29",
"count": 1
},
{
"date": "2021-10-03",
"count": 1
},
{
"date": "2021-10-25",
"count": 1
},
{
"date": "2021-10-26",
"count": 1
},
{
"date": "2021-10-29",
"count": 1
},
{
"date": "2021-10-30",
"count": 1
},
{
"date": "2021-11-04",
"count": 2
},
{
"date": "2021-11-16",
"count": 1
},
{
"date": "2021-11-19",
"count": 1
},
{
"date": "2021-12-05",
"count": 1
},
{
"date": "2021-12-08",
"count": 1
},
{
"date": "2021-12-12",
"count": 1
},
{
"date": "2021-12-24",
"count": 1
},
{
"date": "2022-01-01",
"count": 1
},
{
"date": "2022-01-06",
"count": 1
},
{
"date": "2022-01-14",
"count": 1
},
{
"date": "2022-01-15",
"count": 1
},
{
"date": "2022-01-17",
"count": 1
},
{
"date": "2022-01-22",
"count": 1
},
{
"date": "2022-01-26",
"count": 1
},
{
"date": "2022-01-29",
"count": 2
},
{
"date": "2022-02-01",
"count": 1
},
{
"date": "2022-02-02",
"count": 1
},
{
"date": "2022-02-24",
"count": 2
},
{
"date": "2022-02-26",
"count": 2
},
{
"date": "2022-03-02",
"count": 1
},
{
"date": "2022-03-09",
"count": 2
},
{
"date": "2022-03-10",
"count": 2
},
{
"date": "2022-03-24",
"count": 2
},
{
"date": "2022-03-25",
"count": 1
},
{
"date": "2022-04-01",
"count": 1
},
{
"date": "2022-04-05",
"count": 1
},
{
"date": "2022-04-09",
"count": 2
},
{
"date": "2022-04-14",
"count": 2
},
{
"date": "2022-04-18",
"count": 2
},
{
"date": "2022-05-02",
"count": 1
},
{
"date": "2022-05-04",
"count": 1
},
{
"date": "2022-05-07",
"count": 2
},
{
"date": "2022-05-23",
"count": 1
},
{
"date": "2022-05-24",
"count": 1
},
{
"date": "2022-05-27",
"count": 1
},
{
"date": "2022-05-28",
"count": 1
},
{
"date": "2022-05-29",
"count": 1
},
{
"date": "2022-06-07",
"count": 1
},
{
"date": "2022-06-15",
"count": 1
},
{
"date": "2022-06-27",
"count": 1
},
{
"date": "2022-07-01",
"count": 1
},
{
"date": "2022-07-11",
"count": 1
},
{
"date": "2022-07-19",
"count": 1
},
{
"date": "2022-07-25",
"count": 1
},
{
"date": "2022-07-26",
"count": 2
},
{
"date": "2022-08-04",
"count": 1
},
{
"date": "2022-08-07",
"count": 1
},
{
"date": "2022-08-13",
"count": 1
},
{
"date": "2022-08-16",
"count": 1
},
{
"date": "2022-09-01",
"count": 1
},
{
"date": "2022-09-04",
"count": 1
},
{
"date": "2022-09-07",
"count": 1
},
{
"date": "2022-09-17",
"count": 1
},
{
"date": "2022-10-10",
"count": 1
},
{
"date": "2022-10-11",
"count": 1
},
{
"date": "2022-10-18",
"count": 1
},
{
"date": "2022-10-21",
"count": 1
},
{
"date": "2022-10-24",
"count": 1
},
{
"date": "2022-10-31",
"count": 1
},
{
"date": "2022-11-09",
"count": 1
},
{
"date": "2022-11-15",
"count": 1
},
{
"date": "2022-11-20",
"count": 1
},
{
"date": "2022-11-29",
"count": 1
},
{
"date": "2022-11-30",
"count": 1
},
{
"date": "2023-01-10",
"count": 1
},
{
"date": "2023-01-16",
"count": 1
},
{
"date": "2023-01-17",
"count": 1
},
{
"date": "2023-01-18",
"count": 1
},
{
"date": "2023-01-20",
"count": 1
},
{
"date": "2023-01-23",
"count": 1
},
{
"date": "2023-01-25",
"count": 1
},
{
"date": "2023-02-13",
"count": 2
},
{
"date": "2023-02-19",
"count": 1
},
{
"date": "2023-03-01",
"count": 1
},
{
"date": "2023-03-03",
"count": 2
},
{
"date": "2023-03-14",
"count": 1
},
{
"date": "2023-03-20",
"count": 2
},
{
"date": "2023-03-22",
"count": 1
},
{
"date": "2023-04-01",
"count": 1
},
{
"date": "2023-04-04",
"count": 1
},
{
"date": "2023-04-05",
"count": 1
},
{
"date": "2023-04-13",
"count": 1
},
{
"date": "2023-04-23",
"count": 1
},
{
"date": "2023-04-26",
"count": 1
},
{
"date": "2023-05-02",
"count": 1
},
{
"date": "2023-05-11",
"count": 1
},
{
"date": "2023-05-16",
"count": 1
},
{
"date": "2023-05-23",
"count": 1
},
{
"date": "2023-07-15",
"count": 1
},
{
"date": "2023-07-21",
"count": 1
},
{
"date": "2023-07-23",
"count": 1
},
{
"date": "2023-07-26",
"count": 1
},
{
"date": "2023-07-28",
"count": 1
},
{
"date": "2023-07-31",
"count": 1
},
{
"date": "2023-08-03",
"count": 1
},
{
"date": "2023-08-21",
"count": 1
},
{
"date": "2023-09-02",
"count": 1
},
{
"date": "2023-09-05",
"count": 1
},
{
"date": "2023-09-15",
"count": 1
},
{
"date": "2023-09-23",
"count": 1
},
{
"date": "2023-09-25",
"count": 1
},
{
"date": "2023-09-27",
"count": 1
},
{
"date": "2023-09-28",
"count": 1
},
{
"date": "2023-10-06",
"count": 1
},
{
"date": "2023-10-13",
"count": 1
},
{
"date": "2023-10-25",
"count": 2
},
{
"date": "2023-11-05",
"count": 1
},
{
"date": "2023-11-20",
"count": 1
},
{
"date": "2023-11-29",
"count": 1
},
{
"date": "2023-12-17",
"count": 1
},
{
"date": "2023-12-18",
"count": 1
},
{
"date": "2024-01-11",
"count": 1
},
{
"date": "2024-01-18",
"count": 1
},
{
"date": "2024-01-23",
"count": 1
},
{
"date": "2024-02-01",
"count": 1
},
{
"date": "2024-02-13",
"count": 2
},
{
"date": "2024-03-15",
"count": 1
},
{
"date": "2024-03-19",
"count": 1
},
{
"date": "2024-03-22",
"count": 1
},
{
"date": "2024-03-25",
"count": 1
},
{
"date": "2024-04-05",
"count": 1
},
{
"date": "2024-04-08",
"count": 1
},
{
"date": "2024-04-12",
"count": 1
},
{
"date": "2024-04-19",
"count": 1
},
{
"date": "2024-04-21",
"count": 1
},
{
"date": "2024-05-16",
"count": 3
},
{
"date": "2024-05-17",
"count": 4
},
{
"date": "2024-05-18",
"count": 2
},
{
"date": "2024-05-20",
"count": 1
},
{
"date": "2024-05-21",
"count": 2
},
{
"date": "2024-05-24",
"count": 1
},
{
"date": "2024-05-26",
"count": 1
},
{
"date": "2024-06-26",
"count": 1
},
{
"date": "2024-06-30",
"count": 1
},
{
"date": "2024-07-01",
"count": 2
},
{
"date": "2024-07-02",
"count": 1
},
{
"date": "2024-07-12",
"count": 1
},
{
"date": "2024-07-15",
"count": 1
},
{
"date": "2024-08-02",
"count": 1
},
{
"date": "2024-08-04",
"count": 1
},
{
"date": "2024-08-05",
"count": 2
},
{
"date": "2024-08-29",
"count": 1
},
{
"date": "2024-09-02",
"count": 1
},
{
"date": "2024-09-10",
"count": 1
},
{
"date": "2024-09-14",
"count": 1
},
{
"date": "2024-09-21",
"count": 1
},
{
"date": "2024-10-11",
"count": 1
},
{
"date": "2024-11-12",
"count": 1
},
{
"date": "2024-11-24",
"count": 1
},
{
"date": "2024-11-27",
"count": 1
},
{
"date": "2024-12-22",
"count": 1
},
{
"date": "2024-12-30",
"count": 1
},
{
"date": "2025-01-01",
"count": 1
},
{
"date": "2025-01-03",
"count": 1
},
{
"date": "2025-01-05",
"count": 1
},
{
"date": "2025-01-16",
"count": 1
},
{
"date": "2025-01-20",
"count": 1
},
{
"date": "2025-02-09",
"count": 1
},
{
"date": "2025-02-17",
"count": 1
},
{
"date": "2025-02-21",
"count": 1
},
{
"date": "2025-03-06",
"count": 2
},
{
"date": "2025-03-07",
"count": 3
},
{
"date": "2025-03-10",
"count": 3
},
{
"date": "2025-03-20",
"count": 1
},
{
"date": "2025-03-29",
"count": 1
},
{
"date": "2025-03-31",
"count": 1
},
{
"date": "2025-04-08",
"count": 1
},
{
"date": "2025-04-13",
"count": 1
},
{
"date": "2025-04-15",
"count": 1
},
{
"date": "2025-05-15",
"count": 1
},
{
"date": "2025-05-22",
"count": 1
},
{
"date": "2025-05-23",
"count": 1
},
{
"date": "2025-05-24",
"count": 1
},
{
"date": "2025-06-07",
"count": 1
},
{
"date": "2025-07-10",
"count": 2
},
{
"date": "2025-07-17",
"count": 1
},
{
"date": "2025-07-27",
"count": 1
},
{
"date": "2025-07-29",
"count": 1
},
{
"date": "2025-08-04",
"count": 1
},
{
"date": "2025-08-25",
"count": 1
},
{
"date": "2025-08-28",
"count": 1
},
{
"date": "2025-09-04",
"count": 1
},
{
"date": "2025-09-10",
"count": 1
},
{
"date": "2025-09-22",
"count": 1
},
{
"date": "2025-10-05",
"count": 1
},
{
"date": "2025-10-23",
"count": 1
},
{
"date": "2025-10-27",
"count": 1
},
{
"date": "2025-10-31",
"count": 1
},
{
"date": "2025-12-31",
"count": 1
},
{
"date": "2026-01-07",
"count": 1
},
{
"date": "2026-01-11",
"count": 1
},
{
"date": "2026-01-15",
"count": 1
},
{
"date": "2026-01-19",
"count": 1
},
{
"date": "2026-01-22",
"count": 3
},
{
"date": "2026-01-24",
"count": 2
},
{
"date": "2026-01-30",
"count": 1
},
{
"date": "2026-02-04",
"count": 2
},
{
"date": "2026-02-26",
"count": 1
},
{
"date": "2026-03-06",
"count": 1
},
{
"date": "2026-03-10",
"count": 1
},
{
"date": "2026-03-29",
"count": 1
},
{
"date": "2026-03-30",
"count": 1
},
{
"date": "2026-04-05",
"count": 1
},
{
"date": "2026-04-13",
"count": 1
},
{
"date": "2026-05-02",
"count": 1
},
{
"date": "2026-05-09",
"count": 1
},
{
"date": "2026-06-22",
"count": 1
},
{
"date": "2026-07-17",
"count": 1
}
],
"complete": false,
"collected": 1000,
"total_stars": 1796
},
"open_issues_and_prs": 30
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": true,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [],
"largest_source_bytes": 211814,
"source_files_sampled": 606,
"oversized_source_files": 2,
"agent_instruction_files": [
".github/copilot-instructions.md"
],
"agent_instruction_max_bytes": 4147
},
"dependencies": {
"manifests": [
"Gemfile",
"package.json"
],
"advisories": {
"error": "No resolved dependencies carried a version and a supported ecosystem",
"scope": "repository_graph",
"source": null,
"findings": [],
"collected": false,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 0,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 23,
"direct_affected_count": 0
},
"ecosystems": [
"npm",
"rubygems"
],
"dependencies": [
{
"name": "yard-lint",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "yard-lint",
"direct": true,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "@commitlint/cli",
"direct": false,
"version": "^19.8.0",
"ecosystem": "npm"
},
{
"name": "@commitlint/config-conventional",
"direct": false,
"version": "^19.8.0",
"ecosystem": "npm"
},
{
"name": "husky",
"direct": false,
"version": "^9.1.7",
"ecosystem": "npm"
},
{
"name": "activesupport",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "addressable",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "create_github_release",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "fuubar",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "i18n",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "irb",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "main_branch_shared_rubocop_config",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "parallel_tests",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "process_executer",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "rake",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "rchardet",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "redcarpet",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "rspec",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "rubocop",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "simplecov",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "simplecov-lcov",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "simplecov-rspec",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "yard",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "yard_example_test",
"direct": false,
"version": null,
"ecosystem": "rubygems"
}
],
"collected": true,
"truncated": false,
"total_count": 23,
"direct_count": 1,
"indirect_count": 22
}
},
"maintainership": {
"issues": {
"open_prs": 1,
"merged_prs": 946,
"open_issues": 29,
"closed_ratio": 0.935,
"closed_issues": 419,
"closed_unmerged_prs": 240
},
"bus_factor": 1,
"bot_contributors": 1,
"top_contributors": [
{
"type": "User",
"login": "jcouball",
"commits": 1115,
"avatar_url": "https://avatars.githubusercontent.com/u/3641518?v=4"
},
{
"type": "User",
"login": "robertodecurnex",
"commits": 147,
"avatar_url": "https://avatars.githubusercontent.com/u/76379?v=4"
},
{
"type": "User",
"login": "technicalpickles",
"commits": 24,
"avatar_url": "https://avatars.githubusercontent.com/u/159?v=4"
},
{
"type": "User",
"login": "schacon",
"commits": 21,
"avatar_url": "https://avatars.githubusercontent.com/u/70?v=4"
},
{
"type": "User",
"login": "perlun",
"commits": 9,
"avatar_url": "https://avatars.githubusercontent.com/u/630613?v=4"
},
{
"type": "User",
"login": "nevinera",
"commits": 8,
"avatar_url": "https://avatars.githubusercontent.com/u/366133?v=4"
},
{
"type": "User",
"login": "tarcinil",
"commits": 7,
"avatar_url": "https://avatars.githubusercontent.com/u/1433666?v=4"
},
{
"type": "User",
"login": "jamesarosen",
"commits": 4,
"avatar_url": "https://avatars.githubusercontent.com/u/2406?v=4"
},
{
"type": "User",
"login": "ELLIOTTCABLE",
"commits": 4,
"avatar_url": "https://avatars.githubusercontent.com/u/200?v=4"
},
{
"type": "User",
"login": "cwalsh",
"commits": 3,
"avatar_url": "https://avatars.githubusercontent.com/u/34578?v=4"
}
],
"contributors_sampled": 99,
"top_contributor_share": 0.768
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"continuous_integration.yml",
"enforce_conventional_commits.yml",
"experimental_continuous_integration.yml",
"release.yml"
],
"has_docs_dir": false,
"linter_configs": [
".rubocop.yml"
],
"has_editorconfig": false,
"has_linter_config": true,
"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": 8,
"reason": "branch protection is not maximal on development and all release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 10,
"reason": "24 out of 24 merged PRs checked by a CI test -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 0,
"reason": "Found 0/24 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 20 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": "30 commit(s) and 28 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": 0,
"reason": "Project has not signed or included provenance with any releases.",
"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": "413074b910e895253efaaa4a7a170b3bddcf0d41",
"ran_at": "2026-07-21T23:10:19Z",
"aggregate_score": 4.6,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-18T21:13:18Z",
"oldest_open_prs": [
{
"number": 893,
"created_at": "2026-01-16T19:48:57Z",
"last_comment_at": null,
"last_comment_author": null
}
],
"last_merged_pr_at": "2026-07-18T21:11:09Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 687,
"created_at": "2024-01-15T18:00:23Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 840,
"created_at": "2025-08-27T23:20:03Z",
"last_comment_at": "2025-08-28T23:33:51Z",
"last_comment_author": "don-reba"
},
{
"number": 915,
"created_at": "2026-01-22T01:55:46Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1014,
"created_at": "2026-02-14T23:19:52Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1050,
"created_at": "2026-02-19T00:05:44Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1057,
"created_at": "2026-02-19T21:49:47Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1067,
"created_at": "2026-02-20T23:08:53Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1140,
"created_at": "2026-03-18T22:58:47Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1141,
"created_at": "2026-03-22T19:08:44Z",
"last_comment_at": "2026-04-09T01:18:29Z",
"last_comment_author": "jcouball"
},
{
"number": 1142,
"created_at": "2026-03-23T15:21:48Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1176,
"created_at": "2026-04-03T19:25:18Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1183,
"created_at": "2026-04-04T22:22:18Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1186,
"created_at": "2026-04-05T19:50:03Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1188,
"created_at": "2026-04-05T20:50:37Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1200,
"created_at": "2026-04-09T18:06:18Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1219,
"created_at": "2026-04-14T15:07:04Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1221,
"created_at": "2026-04-14T19:46:46Z",
"last_comment_at": "2026-04-14T22:00:55Z",
"last_comment_author": "lberaldodev"
},
{
"number": 1272,
"created_at": "2026-05-06T17:35:37Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1286,
"created_at": "2026-05-09T00:59:30Z",
"last_comment_at": "2026-05-13T19:22:29Z",
"last_comment_author": "jcouball"
},
{
"number": 1322,
"created_at": "2026-05-16T19:46:18Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/ruby-git/ruby-git",
"host": "github.com",
"name": "ruby-git",
"owner": "ruby-git"
},
"metrics": {
"overall": {
"key": "overall",
"band": "good",
"name": "Overall health",
"note": null,
"notes": [],
"value": 73,
"inputs": {
"security": 46,
"vitality": 88,
"community": 94,
"governance": 62,
"engineering": 70
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "excellent",
"name": "Vitality",
"value": 88,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "excellent",
"name": "Development activity",
"note": null,
"notes": [],
"value": 87,
"inputs": {
"commits_last_year": 888,
"human_commit_share": 1,
"days_since_last_push": 3,
"active_weeks_last_year": 33
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 3 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 3
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "33/52 weeks with commits",
"points": 22.8,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 33
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "888 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 888
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 28 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": null,
"notes": [],
"value": 90,
"inputs": {
"releases_count": 67,
"latest_release_tag": "pre/v5.0.0.beta.5",
"releases_from_tags": false,
"days_since_latest_release": 7,
"mean_days_between_releases": 20.4
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "67 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 67
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 7 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 7
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~20.4 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 20.4
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"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": 3,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 3 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 3
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "excellent",
"name": "Community & Adoption",
"value": 94,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "good",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 84,
"inputs": {
"forks": 528,
"stars": 1796,
"watchers": 31,
"growth_state": "organic",
"growth_factor_pct": 100
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "1,796 stars",
"points": 52.8,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 1796
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "528 forks",
"points": 22.7,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 528
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "31 watchers",
"points": 8.2,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 31
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "excellent",
"name": "Community health",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"has_issue_template": true,
"has_code_of_conduct": true,
"has_pull_request_template": true
},
"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": 18,
"status": "met",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 13.5,
"status": "met",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 7.2,
"status": "met",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 6.3,
"status": "met",
"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": [
"git"
],
"dependents": null,
"ecosystems": "rubygems",
"total_downloads": 201891085,
"monthly_downloads": null
},
"components": [
{
"key": "total_downloads",
"name": "Total downloads",
"detail": "201,891,085 downloads all-time across rubygems",
"points": 80,
"status": "met",
"details": [
{
"code": "downloads_total",
"params": {
"count": 201891085,
"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": "moderate",
"name": "Sustainability & Governance",
"value": 62,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "at_risk",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 38,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 99,
"top_contributor_share": 0.768
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 77% of commits",
"points": 5.2,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 77
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "99 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 99
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 20 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": 946,
"open_issues": 29,
"closed_issues": 419,
"issue_closed_ratio": 0.935,
"closed_unmerged_prs": 240
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "94% of issues closed",
"points": 43.7,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 94
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "946/1186 decided PRs merged",
"points": 30.5,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 946,
"decided": 1186
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/24 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "at_risk",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 49,
"inputs": {
"followers": 4,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "ruby-git",
"public_repos": 1,
"account_age_days": 3276
},
"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": "4 followers of ruby-git",
"points": 5,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 4,
"login": "ruby-git"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "1 public repos, account ~8 yr old",
"points": 14.2,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 1
}
},
{
"code": "account_age_years",
"params": {
"years": 8
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"git"
],
"ecosystems": "rubygems",
"any_deprecated": false,
"min_days_since_publish": 7
},
"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 7 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 7
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "81 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 81
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "good",
"name": "Engineering Quality",
"value": 70,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 84,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "4 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 4
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": ".rubocop.yml",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".rubocop.yml"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "24 out of 24 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "moderate",
"name": "Documentation",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"topics": [],
"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": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "at_risk",
"name": "Security",
"value": 46,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Packaging. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"packaging"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 46,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 17,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 1,
"scorecard_aggregate": 4.6
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection is not maximal on development and all release branches",
"points": 6,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "24 out of 24 merged PRs checked by a CI test -- score normalized to 10",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 0/24 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 20 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": "30 commit(s) and 28 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": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "0 existing vulnerabilities detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "excellent",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 16
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "moderate",
"name": "AI Readiness",
"value": 65,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 1,
"agent_instruction_files": [
".github/copilot-instructions.md"
],
"agent_instruction_max_bytes": 4147
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": ".github/copilot-instructions.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".github/copilot-instructions.md"
}
}
],
"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": "100 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 100,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "moderate",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 53,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [],
"has_dockerfile": true,
"typed_language": false,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [],
"agent_commit_share": 0.68,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": ".rubocop.yml",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".rubocop.yml"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "Dockerfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Dockerfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "68 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 68,
"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": 211814,
"source_files_sampled": 606,
"oversized_source_files": 2
},
"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": "2/606 source files over 60KB",
"points": 54.8,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 606,
"oversized": 2
}
}
],
"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": [
"No resolved dependencies carried a version and a supported ecosystem"
],
"report_type": "repository",
"generated_at": "2026-07-21T23:10:46.178690Z",
"schema_version": "0.25.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/r/ruby-git/ruby-git.svg",
"full_name": "ruby-git/ruby-git",
"license_state": "standard",
"license_spdx": "MIT"
}