Звіт у форматі JSON машиночитний
{
"data": {
"repo": {
"topics": [
"redis",
"redis-cluster",
"rust",
"proxy",
"slot",
"migration",
"redis-clusters",
"redis-instances",
"redis-protocol",
"redis-proxy",
"failover",
"scale",
"redis-cloud",
"cloud",
"kubernetes",
"k8s",
"redis-cluster-protocol"
],
"is_fork": false,
"size_kb": 2459,
"has_wiki": true,
"homepage": null,
"languages": {
"Go": 5826,
"Java": 10877,
"Rust": 1035610,
"Jinja": 2885,
"Shell": 7103,
"Kotlin": 1691,
"Python": 28099,
"Makefile": 2343
},
"pushed_at": "2023-03-31T14:35:18Z",
"created_at": "2018-09-22T09:19:54Z",
"owner_type": "User",
"updated_at": "2026-07-22T08:20:09Z",
"description": "Mordern Redis Cluster solution for easy operation.",
"is_archived": false,
"is_disabled": false,
"license_spdx": "Apache-2.0",
"default_branch": "master",
"license_spdx_raw": "Apache-2.0",
"primary_language": "Rust",
"significant_languages": [
"Rust"
]
},
"owner": {
"blog": null,
"name": null,
"type": "User",
"login": "doyoubi",
"company": null,
"location": null,
"followers": 157,
"avatar_url": "https://avatars.githubusercontent.com/u/4255390?v=4",
"created_at": "2013-04-25T12:40:00Z",
"is_verified": null,
"public_repos": 57,
"account_age_days": 4837
},
"license": {
"state": "standard",
"spdx_id": "Apache-2.0",
"raw_spdx": "Apache-2.0",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.6.2",
"kind": "patch",
"published_at": "2022-10-15T07:14:43Z"
},
{
"tag": "v0.6.1",
"kind": "patch",
"published_at": "2021-10-13T12:33:43Z"
},
{
"tag": "v0.6.0",
"kind": "minor",
"published_at": "2021-10-02T09:48:45Z"
},
{
"tag": "v0.5.0",
"kind": "minor",
"published_at": "2021-05-12T13:50:18Z"
},
{
"tag": "v0.5.0-alpha.3",
"kind": "prerelease",
"published_at": "2021-05-09T11:21:15Z"
},
{
"tag": "v0.4.5",
"kind": "patch",
"published_at": "2021-05-09T11:00:27Z"
},
{
"tag": "v0.4.4",
"kind": "patch",
"published_at": "2021-05-02T14:07:14Z"
},
{
"tag": "v0.5.0-alpha.2",
"kind": "prerelease",
"published_at": "2021-04-17T13:33:57Z"
},
{
"tag": "v0.4.3",
"kind": "patch",
"published_at": "2021-01-14T11:24:39Z"
},
{
"tag": "v0.4.2",
"kind": "patch",
"published_at": "2021-01-11T11:42:00Z"
},
{
"tag": "v0.4.1",
"kind": "patch",
"published_at": "2020-11-10T14:22:48Z"
},
{
"tag": "v0.4.0",
"kind": "minor",
"published_at": "2020-11-07T02:56:45Z"
},
{
"tag": "0.4.0-alpha.3",
"kind": "prerelease",
"published_at": "2020-10-25T14:35:00Z"
},
{
"tag": "v0.3.2",
"kind": "patch",
"published_at": "2020-09-13T11:14:32Z"
},
{
"tag": "v0.3.1",
"kind": "patch",
"published_at": "2020-07-07T14:55:37Z"
},
{
"tag": "v0.3.1-alpha.0",
"kind": "prerelease",
"published_at": "2020-07-06T11:48:28Z"
},
{
"tag": "v0.3.0",
"kind": "minor",
"published_at": "2020-05-03T00:29:00Z"
},
{
"tag": "v0.3.0-alpha.4",
"kind": "prerelease",
"published_at": "2020-04-29T12:24:58Z"
},
{
"tag": "v0.3.0-alpha.3",
"kind": "prerelease",
"published_at": "2020-04-22T15:19:57Z"
},
{
"tag": "v0.3.0-alpha.2",
"kind": "prerelease",
"published_at": "2020-04-12T14:57:09Z"
},
{
"tag": "v0.3.0-alpha.1",
"kind": "prerelease",
"published_at": "2020-03-28T13:41:25Z"
},
{
"tag": "v0.2.0",
"kind": "minor",
"published_at": "2020-03-11T15:43:14Z"
},
{
"tag": "0.2.0-alpha.1",
"kind": "prerelease",
"published_at": "2020-03-08T02:26:16Z"
},
{
"tag": "v0.1.5",
"kind": "patch",
"published_at": "2020-03-03T01:35:12Z"
},
{
"tag": "v0.2.0-alpha.0",
"kind": "prerelease",
"published_at": "2020-02-23T06:08:57Z"
},
{
"tag": "v0.1.4",
"kind": "patch",
"published_at": "2020-02-04T03:09:41Z"
},
{
"tag": "v0.1.3",
"kind": "patch",
"published_at": "2019-11-17T12:34:56Z"
},
{
"tag": "v0.1.2",
"kind": "patch",
"published_at": "2019-10-19T05:34:20Z"
},
{
"tag": "v0.1.1",
"kind": "patch",
"published_at": "2019-10-03T01:58:30Z"
},
{
"tag": "v0.1.0",
"kind": "minor",
"published_at": "2019-09-14T04:51:10Z"
}
],
"recent_commits": [
{
"oid": "6598dfa080efc2bc398eefe77c6b70f8d68cede9",
"body": null,
"is_bot": false,
"headline": "Refactor functor using GAT",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2022-11-05T13:35:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0e1b5ef611eac77b10bbb9b377b377940a07ef4f",
"body": null,
"is_bot": false,
"headline": "Upgrade rust to 1.65. Fix linter.",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2022-11-05T11:19:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5afa28d8a6a90c8429f820a9daf545383fdd4020",
"body": null,
"is_bot": false,
"headline": "Upgrade rust version in dockerfile",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2022-11-05T10:36:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0ba632f07e889cb47d133d76bbf133e9ce597155",
"body": null,
"is_bot": false,
"headline": "Bump version to 0.6.2",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2022-10-15T07:13:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "057414cab83f1051806b2fef0d669d76300e566d",
"body": null,
"is_bot": false,
"headline": "Remove atomic-option lib",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2022-08-06T09:11:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "50cdb6c890ee4b162f027e6b1632c624cc49abd1",
"body": null,
"is_bot": false,
"headline": "Upgrade dependencies",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2022-08-05T14:22:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "205c17770338d40727884fc460e655e0346d7a2d",
"body": null,
"is_bot": false,
"headline": "Upgrade rust to 1.62",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2022-08-05T14:22:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5471963857d19b4418917ac61c0dd67e2d670e82",
"body": "Amend node id format in the output of CLUSTER NODES",
"is_bot": false,
"headline": "Merge pull request #323 from doyoubi/AmendClusterNodes",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2022-03-20T02:20:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "10b9b646c0f110ea6b2d94aebb79f3058943798e",
"body": null,
"is_bot": false,
"headline": "Amend node id format in the output of CLUSTER NODES",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2022-03-20T02:09:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1c1305730e991cd51e33ec3d89d059682b257220",
"body": "Amend command error",
"is_bot": false,
"headline": "Merge pull request #320 from doyoubi/AmendCmdError",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2022-01-01T02:49:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d0511df7355ab6bae66582bac0179dd477646679",
"body": null,
"is_bot": false,
"headline": "Amend command error",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2022-01-01T02:27:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9695465ad84a77abfe8f1e8abf1c1c137a32e94e",
"body": "Add session timeout",
"is_bot": false,
"headline": "Merge pull request #319 from doyoubi/AddConnTimeout",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-12-19T12:13:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "988ca10c3d0a9043ffa95582247c82af7cec0bdb",
"body": null,
"is_bot": false,
"headline": "Add session timeout",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-12-19T11:14:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "673dca1f22c303aabc874225196aba8d0e1e3f1f",
"body": "Upgrade rust version to 1.57.0",
"is_bot": false,
"headline": "Merge pull request #318 from doyoubi/UpgradeRust",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-12-19T08:37:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a043a32888ea0df05df3b0538452d40a235f4e80",
"body": null,
"is_bot": false,
"headline": "Upgrade rust version to 1.57.0",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-12-19T08:11:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d592f1c63080d3b3294fd6be798bb9291014bf4d",
"body": "Add migration comparison test scripts",
"is_bot": false,
"headline": "Merge pull request #317 from doyoubi/MigrationComparison",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-10-16T04:04:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4a645524fa068b707fb15678bbc550e7338e3d69",
"body": null,
"is_bot": false,
"headline": "Add migration comparison test scripts",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-10-16T03:11:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c6028cdd5978a0955efd5eda7696ca28fef1234f",
"body": "Bump version to 0.6.1",
"is_bot": false,
"headline": "Merge pull request #316 from doyoubi/BumpVersion",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-10-13T12:32:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "af8c5f338f7142bb52dffdda83a16c7869f50fa0",
"body": null,
"is_bot": false,
"headline": "Bump version to 0.6.1",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-10-13T12:21:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "014d94a133177a79cf830a9aeeb90678911ea6d4",
"body": "Reduce logs in undermoon-operator",
"is_bot": false,
"headline": "Merge pull request #315 from doyoubi/ReduceLogs",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-10-11T13:26:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "12ff68c896419d8e5588be778e5f590e4edc261b",
"body": null,
"is_bot": false,
"headline": "Reduce logs in undermoon-operator",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-10-11T13:09:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7b21489493c045518840fd5999a8f79351701573",
"body": "Upgrade to latest CLUSTER NODES format",
"is_bot": false,
"headline": "Merge pull request #314 from doyoubi/SupportNewClusterNodesFormat",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-10-10T03:41:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ae14d8301269c22333f80b532d0745e2f8e60a48",
"body": null,
"is_bot": false,
"headline": "Upgrade to latest CLUSTER NODES format",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-10-10T03:27:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7358833eaab455fdc6ccbf543c22306be956076e",
"body": null,
"is_bot": false,
"headline": "Merge pull request #313 from doyoubi/FixScanEarlyStop",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-10-05T12:08:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a1f5240f9ef8a2817fa95e1bc7c94298e30d336b",
"body": null,
"is_bot": false,
"headline": "Fix scanning keys could possibly be skipped at the very beginning",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-10-04T13:09:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "76a6902c24947a960ecda14d9d6f99032b45332d",
"body": "Bump version to 0.6.0",
"is_bot": false,
"headline": "Merge pull request #312 from doyoubi/BumpVersion",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-10-02T09:47:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e1093768cac357f3e1f53e33909e6523da1e186a",
"body": null,
"is_bot": false,
"headline": "Bump version to 0.6.0",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-10-02T04:20:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8e426d7d2e34568af996edad60c7b3d8089baea1",
"body": "Upgrade rust to 1.55",
"is_bot": false,
"headline": "Merge pull request #311 from doyoubi/UpgradeRust",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-10-02T04:13:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "658704cb212937e5943836cbaaef76aaf466774b",
"body": null,
"is_bot": false,
"headline": "Use 'disabled' as the default of backend_batch_strategy",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-10-02T04:01:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f3d05b2c7539ae1119032f69bfd365aa5e133323",
"body": null,
"is_bot": false,
"headline": "Upgrade Rust to 1.55",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-10-02T03:52:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9803c356ff12f32cbf8f6e9b800d1a2890e92b55",
"body": "Optimize WaitableTask",
"is_bot": false,
"headline": "Merge pull request #310 from doyoubi/OptimizeWaitableTask",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-08-09T06:39:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9258133da91a5a5ba629b2f52d1200b0343ade98",
"body": null,
"is_bot": false,
"headline": "Fix clippy in Rust 1.54",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-08-09T06:30:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c3627ed225b9aec02477d70084c7ccbbfd3135bb",
"body": null,
"is_bot": false,
"headline": "Optimize WaitableTask",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-08-09T06:20:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5ddc77d93ad51e515bcbc84a33b9f350bb046239",
"body": "Add migration stats",
"is_bot": false,
"headline": "Merge pull request #309 from doyoubi/MigrationStats",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-07-26T14:11:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "86f77c0f107236d5cc7477deb2ec483a0424ceb7",
"body": null,
"is_bot": false,
"headline": "Add migration stats",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-07-26T13:55:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6eb74a5bd9eacf11cc1e5ad4b50f15e8bf4e6430",
"body": null,
"is_bot": false,
"headline": "Merge pull request #308 from doyoubi/FixBrokerEmptyResponse",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-07-25T01:11:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7fdf44b15bf00ededfdef8bba2fae7398aa1ba74",
"body": null,
"is_bot": false,
"headline": "Fix empty response for broker http api",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-07-24T15:22:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "01cdca8b957cddaa82a1ccb38bd639f451caef0b",
"body": "Add a fast path for UMSYNC",
"is_bot": false,
"headline": "Merge pull request #306 from doyoubi/OptimizeUmsync",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-07-23T11:49:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2fa98473ac027a4aaefe0217a1bccf246f5264f8",
"body": null,
"is_bot": false,
"headline": "Add locking for scanning migration",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-07-20T10:39:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "18ac9006f2ca4ec6815d582220a76a6f17f431fb",
"body": null,
"is_bot": false,
"headline": "Add a fast path for UMSYNC",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-07-17T11:40:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4482b78f6d2ce94dc30a853022bfb4d1d0b66f2f",
"body": "Fix lexical-core lib in rust 1.53",
"is_bot": false,
"headline": "Merge pull request #307 from doyoubi/FixLexicalCore",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-07-17T11:38:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "327d410687ba4505e207c0adc49d521e2f7cee4d",
"body": null,
"is_bot": false,
"headline": "Fix clippy for rust 1.53",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-07-17T11:23:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8852b6314a26b12b8e33cb67c457b02a0fba3ce9",
"body": null,
"is_bot": false,
"headline": "Fix lexical-core lib in rust 1.53",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-07-14T12:06:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "712b01851c98ca16c9234fde85d01899d77720cc",
"body": "Fix the lock for delete commands during migration",
"is_bot": false,
"headline": "Merge pull request #305 from doyoubi/FixDelLockInMigration",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-06-02T15:21:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c3e8629c6322629ac5573265e70867eb8cac7fe0",
"body": "…commands were processed",
"is_bot": false,
"headline": "For delete commands during migration, hold key lock until the delete …",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-06-02T15:10:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "70d9ad03fd5b8982fec244a391f1b46848168c51",
"body": "Add migration testing script",
"is_bot": false,
"headline": "Merge pull request #304 from doyoubi/MigrationTestingScript",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-05-30T08:11:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "81dc44cfc5f1f038e87d51da12970c9f655197a3",
"body": null,
"is_bot": false,
"headline": "Add migration testing script",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-05-30T07:52:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d89e6b45afe1565cd1e01c41afc694682fb0152f",
"body": "Uprade tokio to version 1. Change to use warp to replace actix-web",
"is_bot": false,
"headline": "Merge pull request #302 from doyoubi/UpgradeTokio",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-05-16T13:28:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3f539aefc9f71c3c6952192f921400e52cda4500",
"body": null,
"is_bot": false,
"headline": "Remove futures_timer",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-05-16T09:23:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "06559c567eb0bdd50bb85f81c5211e16d13f6e55",
"body": null,
"is_bot": false,
"headline": "Uprade tokio to version 1. Change to use warp to replace actix-web",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-05-16T08:02:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "46aa0007a6456172446df83418f18f3a432f93d6",
"body": "Send UMSYNC command no matter whether the key already exists",
"is_bot": false,
"headline": "Merge pull request #300 from doyoubi/FixMigrationDel",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-05-13T10:03:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0d7793cffa0d07ac2ac716c244db8e3cdc946c10",
"body": "Bump version to 0.6.0-alpha.1",
"is_bot": false,
"headline": "Merge pull request #301 from doyoubi/BumpVersion",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-05-13T10:03:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "44829dd82ab25ec8dfeb7111561d26d1730115bc",
"body": null,
"is_bot": false,
"headline": "Bump version to 0.6.0-alpha.1",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-05-13T09:52:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1d097927f787226cb214e72a2f94c953f1bfa1cb",
"body": null,
"is_bot": false,
"headline": "Send UMSYNC command no matter whether the key already exists",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-05-13T09:50:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cf0a0a34edba990d0b85e89212d6d6d3f1ebc591",
"body": "Handle retry error in coordinator",
"is_bot": false,
"headline": "Merge pull request #296 from doyoubi/CoordinatorHandleRetryError",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-05-09T08:43:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a96bf4cbd37b613a12db554c48040a7dfe1c7f68",
"body": null,
"is_bot": false,
"headline": "Handle retry error in coordinator",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-05-09T08:14:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a85fd2e92690eb43fdaa27c5b50e437c83693148",
"body": "Fix migration task interrupted",
"is_bot": false,
"headline": "Merge pull request #293 from doyoubi/FixMigrationInterrupted",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-05-06T15:35:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8b2effb62b9e05c137d72cef4392ddd370ab8d97",
"body": null,
"is_bot": false,
"headline": "Fix migration task interrupted",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-05-06T15:13:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "eef59e4a23a61d6c9601b93beaa05aa4e7d39834",
"body": "Add retry for initializing broker data",
"is_bot": false,
"headline": "Merge pull request #288 from doyoubi/BrokerInitRetry",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-05-02T07:50:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dbfdd504c89ebcdfaa5eae0bb3e0cbb92d5bbff9",
"body": null,
"is_bot": false,
"headline": "Add retry for initializing broker data",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-05-02T07:36:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7ccaaedd4f6ecd4bb5bfd4816194ddeb0c0cf1c6",
"body": "Fix docker compose example",
"is_bot": false,
"headline": "Merge pull request #287 from doyoubi/FixDockerCompose",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-05-01T10:21:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ab5a20560c8b351e083b12eb87b7fd621d250954",
"body": null,
"is_bot": false,
"headline": "Fix docker compose chaos test",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-05-01T10:12:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "83bceb36915754da0fd5192c0074da504231328d",
"body": null,
"is_bot": false,
"headline": "Fix docker compose example",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-05-01T02:27:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ae88d51a9f49d5d771992a08114a0914763b1e28",
"body": "Add migration test docs",
"is_bot": false,
"headline": "Merge pull request #286 from doyoubi/MigrationTestDocs",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-25T02:08:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c3a2200232824f0b3883e2a9ac3cb4590c383d70",
"body": null,
"is_bot": false,
"headline": "Add migration test docs",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-24T15:15:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6f52a9c7c239ba190ea979139171113e85f4cdb4",
"body": "Add version to UMCTL SETCLUSTER",
"is_bot": false,
"headline": "Merge pull request #285 from doyoubi/SetClusterCmdVersion",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-24T11:23:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "98ed130a207d7522a352cdf8cd05e7132f851e65",
"body": null,
"is_bot": false,
"headline": "Amend parsing error for UMCTL SETCLUSTER command",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-24T11:14:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "49765cc7e89cb15bf17be90f881d853c3034240a",
"body": null,
"is_bot": false,
"headline": "Add version to UMCTL SETCLUSTER",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-24T10:55:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "63735a4aa23a34cda50cd25dc47ae7586e203235",
"body": "Remove 'free_nodes' of 'Proxy'",
"is_bot": false,
"headline": "Merge pull request #284 from doyoubi/RemoveFreeNodesOfProxy",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-18T11:00:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0407d1f4cc06bef19d0e14ac64b68b8ee410a7c1",
"body": null,
"is_bot": false,
"headline": "Remove 'free_nodes' of 'Proxy'",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-18T10:47:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d08ecb046a2fca6d020acef38771d906b4cf18a6",
"body": "Bump version to 0.6.0-alpha.0",
"is_bot": false,
"headline": "Merge pull request #283 from doyoubi/BumpVersion",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-18T10:05:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "876c982d5d8c70f329c16ec7b34559923df1ec47",
"body": null,
"is_bot": false,
"headline": "Bump version to 0.6.0-alpha.0",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-18T09:57:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7b41727c308227a56046e047008ab68107e31d12",
"body": "Drop support for multiple clusters in a server proxy",
"is_bot": false,
"headline": "Merge pull request #280 from doyoubi/DropMultiClusterSupport",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-18T09:53:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "df69bf1f06203ee637f30a60c1eeb08d0fdde969",
"body": null,
"is_bot": false,
"headline": "Update docs",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-18T09:44:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c6f35112a6269a1090dd163d758f4d971c85bf26",
"body": null,
"is_bot": false,
"headline": "Make 'cluster_config' of 'Proxy' optional",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-18T09:10:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1cc3a3f2077c1bf07805503b8be1c4779d548a43",
"body": null,
"is_bot": false,
"headline": "Fix linter",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-18T08:44:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5bba4af87cfb4832bc45cf90b987a68a6742dc60",
"body": null,
"is_bot": false,
"headline": "Move cluster config from server proxy to broker",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-18T08:37:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2cc2e96f951d01d88b339f83811ce246256e17c8",
"body": null,
"is_bot": false,
"headline": "Support password through AUTH command",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-18T07:45:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b33df5be67868178b943cc631ff7a5e3eccf62f9",
"body": null,
"is_bot": false,
"headline": "Remove multiple clusters support",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-18T06:36:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6d6cad2e418d8ebb2c6e263e2bcd0002685ce053",
"body": "Bump version to 0.5.0-alpha.2",
"is_bot": false,
"headline": "Merge pull request #282 from doyoubi/BumpVersion",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-17T11:28:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dcd59bdd1300ee7e9d4e1e2c80cfdb085a2923c8",
"body": null,
"is_bot": false,
"headline": "Bump version to 0.5.0-alpha.2",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-17T11:16:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "af8a70a0302962006f2b5f40a17227039f0650a0",
"body": "Add python cluster client tests",
"is_bot": false,
"headline": "Merge pull request #281 from doyoubi/PythonClusterClientTest",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-17T11:08:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "532366cf33b95ea226e9fa1f600bc47a2ead9f65",
"body": null,
"is_bot": false,
"headline": "Add python cluster client tests",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-17T11:01:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e927010aa5c5ad4d94952b02a47e269f3a038b21",
"body": "Support backend timeout",
"is_bot": false,
"headline": "Merge pull request #279 from doyoubi/BackendTimeout",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-04T10:32:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c88e112f8a2124aea2152419289b1a05d4a13fb6",
"body": null,
"is_bot": false,
"headline": "Support backend timeout",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-04T10:23:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "809d26269fc488aec95768bbf152287b8f950ac7",
"body": "Amend RangeList",
"is_bot": false,
"headline": "Merge pull request #278 from doyoubi/AmendSlotRanges",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-04T07:54:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "58ea2cc557f13084140d9a9258f3217171534679",
"body": null,
"is_bot": false,
"headline": "Amend RangeList",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-04T07:40:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3dbee7f86df7a5b7f8bde202abe6c6bbbf1c086a",
"body": "Support disable failover in coordinator: UNDERMOON_DISABLE_FAILOVER",
"is_bot": false,
"headline": "Merge pull request #277 from doyoubi/SupportDisableFailover",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-04T06:53:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3df23bd17de88450a6a6c205edd0a86755abdb2a",
"body": null,
"is_bot": false,
"headline": "Support disableFailover option",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-04T06:43:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "81e4d8f9760d2f04c6f8ed642d467bbda11c06ca",
"body": "Fix cmd dropped during migration",
"is_bot": false,
"headline": "Merge pull request #274 from doyoubi/FixCmdDroppedDuringMigration",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-03T10:13:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1b8afd23a7b892ff8f3b60a806a44aa188e6e086",
"body": null,
"is_bot": false,
"headline": "Fix linter in rust 1.51",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-03T09:26:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c7d0d60ba8f3e54e3203232574851cf2b8c36b2f",
"body": null,
"is_bot": false,
"headline": "Fix command dropped during migration",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-02T15:17:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1c479437bca6c1f2930f5f96deae1e8db4ded9dc",
"body": null,
"is_bot": false,
"headline": "Upgrade Rust and tokio version",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-04-02T15:12:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3b3e622e5f53ccb4d99f1e3e0bed62f69d5e1023",
"body": "Bump version to 0.5.0-alpha.1",
"is_bot": false,
"headline": "Merge pull request #273 from doyoubi/BumpVersion",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-03-21T09:36:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e7034f7b3fa4a3c7a9a9503c897e92bc3924be1b",
"body": null,
"is_bot": false,
"headline": "Bump version to 0.5.0-alpha.1",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-03-21T09:27:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9404833bc62ef7046b5db59e03ccbda23ee275b5",
"body": "Add simple tests for Redission",
"is_bot": false,
"headline": "Merge pull request #272 from doyoubi/RedissionTests",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-03-21T09:21:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c734a61065ff58efb38c154bf874742dfaad592e",
"body": null,
"is_bot": false,
"headline": "Add simple tests for Redission",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-03-21T09:11:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dbf9adbe4e0e9b347b96675b185c75d4276833d2",
"body": "Make some multi-key commands atomic during key migration",
"is_bot": false,
"headline": "Merge pull request #271 from doyoubi/AtomicMultiKeyCmdDuringMigration",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-03-21T04:15:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ca135fafd25fb872b9526327e1eb48530c9cf612",
"body": null,
"is_bot": false,
"headline": "Add integration tests for EVAL",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-03-21T03:47:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d5752f732c6845692adb35a24789fd27e5a52112",
"body": null,
"is_bot": false,
"headline": "Make some multi-key commands atomic during key migration",
"author_name": "doyoubi",
"author_login": "doyoubi",
"committed_at": "2021-03-21T03:26:56Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 30,
"commits_last_year": 0,
"latest_release_at": "2022-10-15T07:14:43Z",
"latest_release_tag": "v0.6.2",
"releases_from_tags": false,
"days_since_last_push": 1210,
"active_weeks_last_year": 0,
"days_since_latest_release": 1377,
"mean_days_between_releases": 71.3
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 42,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "github.com/doyoubi/undermoon",
"exists": true,
"license": null,
"keywords": [],
"ecosystem": "go",
"matches_repo": true,
"registry_url": "https://pkg.go.dev/github.com/doyoubi/undermoon",
"is_deprecated": false,
"latest_version": "v0.6.2",
"repository_url": "https://github.com/doyoubi/undermoon",
"versions_count": 29,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": null,
"latest_published_at": "2022-10-15T07:13:50Z",
"latest_version_yanked": null,
"days_since_latest_publish": 1377
}
]
},
"popularity": {
"forks": 37,
"stars": 702,
"watchers": 14,
"fork_history": {
"days": [
{
"date": "2020-03-10",
"count": 1
},
{
"date": "2020-03-19",
"count": 1
},
{
"date": "2020-05-06",
"count": 1
},
{
"date": "2020-05-07",
"count": 1
},
{
"date": "2020-05-11",
"count": 2
},
{
"date": "2020-05-12",
"count": 1
},
{
"date": "2020-05-14",
"count": 1
},
{
"date": "2020-05-20",
"count": 1
},
{
"date": "2020-08-02",
"count": 1
},
{
"date": "2020-11-23",
"count": 1
},
{
"date": "2021-02-07",
"count": 1
},
{
"date": "2021-04-02",
"count": 1
},
{
"date": "2021-06-29",
"count": 2
},
{
"date": "2021-09-20",
"count": 1
},
{
"date": "2021-10-18",
"count": 2
},
{
"date": "2021-10-21",
"count": 1
},
{
"date": "2021-11-01",
"count": 1
},
{
"date": "2021-11-30",
"count": 1
},
{
"date": "2021-12-14",
"count": 1
},
{
"date": "2021-12-15",
"count": 1
},
{
"date": "2022-01-25",
"count": 1
},
{
"date": "2022-01-28",
"count": 1
},
{
"date": "2022-02-23",
"count": 1
},
{
"date": "2022-03-25",
"count": 1
},
{
"date": "2022-05-10",
"count": 1
},
{
"date": "2022-05-16",
"count": 1
},
{
"date": "2022-10-23",
"count": 1
},
{
"date": "2023-01-09",
"count": 1
},
{
"date": "2023-02-07",
"count": 1
},
{
"date": "2023-03-30",
"count": 1
},
{
"date": "2023-05-28",
"count": 1
},
{
"date": "2024-02-26",
"count": 1
},
{
"date": "2025-01-24",
"count": 1
},
{
"date": "2025-03-17",
"count": 1
}
],
"complete": true,
"collected": 37,
"total_forks": 37
},
"star_history": null,
"open_issues_and_prs": 22
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"examples"
],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [
"Makefile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [
"Cargo.toml",
"clienttest/golang/go.mod",
"clienttest/java/app/build.gradle.kts"
],
"largest_source_bytes": 83373,
"source_files_sampled": 100,
"oversized_source_files": 2,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"Cargo.toml",
"chaostest/requirements.txt"
],
"advisories": {
"error": null,
"scope": "repository_graph",
"source": "osv",
"findings": [
{
"name": "openssl",
"direct": false,
"version": "0.10.41",
"severity": "critical",
"ecosystem": "crates",
"cvss_score": 9.8,
"advisory_ids": [
"GHSA-3gxf-9r58-2ghg",
"GHSA-4fcv-w3qc-ppgg",
"GHSA-6hcf-g6gr-hhcr",
"GHSA-8c75-8mhr-p7r9",
"GHSA-9qwg-crg9-m2vc",
"GHSA-ghm9-cr32-g9qj",
"GHSA-hppc-g8h3-xhp3",
"GHSA-pqf5-4pqq-29f5",
"GHSA-q445-7m23-qrmw",
"GHSA-rpmj-rpgj-qmpm"
],
"fixed_version": "0.10.79",
"advisory_count": 23,
"oldest_advisory_days": 1217
},
{
"name": "warp",
"direct": true,
"version": "0.3.2",
"severity": "high",
"ecosystem": "crates",
"cvss_score": null,
"advisory_ids": [
"GHSA-8v4j-7jgf-5rg9",
"RUSTSEC-2022-0082"
],
"fixed_version": "0.3.3",
"advisory_count": 2,
"oldest_advisory_days": 1651
},
{
"name": "jinja2",
"direct": false,
"version": "2.11.3",
"severity": "high",
"ecosystem": "pypi",
"cvss_score": 7.8,
"advisory_ids": [
"GHSA-cpwx-vrp4-4pq7",
"GHSA-h5c8-rqwp-cp95",
"GHSA-h75v-3vvj-5mfj",
"GHSA-q2x7-8rv6-6q7h",
"PYSEC-2026-1471",
"PYSEC-2026-1473",
"PYSEC-2026-1474",
"PYSEC-2026-1475"
],
"fixed_version": "3.1.6",
"advisory_count": 8,
"oldest_advisory_days": 924
},
{
"name": "mio",
"direct": false,
"version": "0.8.4",
"severity": "high",
"ecosystem": "crates",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-r8w9-5wcg-vfj7",
"RUSTSEC-2024-0019"
],
"fixed_version": "0.8.11",
"advisory_count": 2,
"oldest_advisory_days": 871
},
{
"name": "tungstenite",
"direct": false,
"version": "0.14.0",
"severity": "high",
"ecosystem": "crates",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-9mcr-873m-xcxp",
"RUSTSEC-2023-0065"
],
"fixed_version": "0.20.1",
"advisory_count": 2,
"oldest_advisory_days": 1036
},
{
"name": "bytes",
"direct": true,
"version": "1.2.1",
"severity": "moderate",
"ecosystem": "crates",
"cvss_score": 6.2,
"advisory_ids": [
"GHSA-434x-w66g-qw3r",
"RUSTSEC-2026-0007"
],
"fixed_version": "1.11.1",
"advisory_count": 2,
"oldest_advisory_days": 170
},
{
"name": "tokio",
"direct": true,
"version": "1.20.1",
"severity": "moderate",
"ecosystem": "crates",
"cvss_score": 5.4,
"advisory_ids": [
"GHSA-4q83-7cq4-p6wg",
"GHSA-7rrj-xr53-82p7",
"GHSA-rr8g-9fpq-6wmg",
"RUSTSEC-2023-0001",
"RUSTSEC-2023-0005",
"RUSTSEC-2025-0023"
],
"fixed_version": "1.44.2",
"advisory_count": 6,
"oldest_advisory_days": 1296
},
{
"name": "bumpalo",
"direct": false,
"version": "3.10.0",
"severity": "moderate",
"ecosystem": "crates",
"cvss_score": null,
"advisory_ids": [
"GHSA-f85w-wvc7-crwc",
"RUSTSEC-2022-0078"
],
"fixed_version": "3.11.1",
"advisory_count": 2,
"oldest_advisory_days": 1651
},
{
"name": "h2",
"direct": false,
"version": "0.3.13",
"severity": "moderate",
"ecosystem": "crates",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-8r5v-vm4m-4g25",
"GHSA-f8vr-r385-rh5r",
"GHSA-q6cp-qfwq-4gcv",
"RUSTSEC-2023-0034",
"RUSTSEC-2024-0003",
"RUSTSEC-2024-0332"
],
"fixed_version": "0.4.4",
"advisory_count": 6,
"oldest_advisory_days": 1199
},
{
"name": "idna",
"direct": false,
"version": "0.2.3",
"severity": "moderate",
"ecosystem": "crates",
"cvss_score": 4.8,
"advisory_ids": [
"GHSA-h97m-ww89-6jmq",
"RUSTSEC-2024-0421"
],
"fixed_version": "1.0.0",
"advisory_count": 2,
"oldest_advisory_days": 591
},
{
"name": "loguru",
"direct": false,
"version": "0.4.1",
"severity": "moderate",
"ecosystem": "pypi",
"cvss_score": 4.3,
"advisory_ids": [
"GHSA-39ph-wr67-j4xq",
"PYSEC-2022-14"
],
"fixed_version": "0.5.3",
"advisory_count": 2,
"oldest_advisory_days": 1640
},
{
"name": "requests",
"direct": false,
"version": "2.22.0",
"severity": "moderate",
"ecosystem": "pypi",
"cvss_score": 6.1,
"advisory_ids": [
"GHSA-9hjg-9r4m-mvj7",
"GHSA-9wx4-h78v-vm56",
"GHSA-gc5v-m9x4-r6x2",
"GHSA-j8r2-6x86-q33q",
"PYSEC-2023-74",
"PYSEC-2026-1872",
"PYSEC-2026-1873",
"PYSEC-2026-2275"
],
"fixed_version": "2.33.0",
"advisory_count": 8,
"oldest_advisory_days": 1157
},
{
"name": "time",
"direct": false,
"version": "0.1.44",
"severity": "moderate",
"ecosystem": "crates",
"cvss_score": 6.2,
"advisory_ids": [
"GHSA-wcg3-cvx6-7396",
"RUSTSEC-2020-0071"
],
"fixed_version": "0.2.23",
"advisory_count": 2,
"oldest_advisory_days": 2073
},
{
"name": "atty",
"direct": false,
"version": "0.2.14",
"severity": "low",
"ecosystem": "crates",
"cvss_score": null,
"advisory_ids": [
"GHSA-g98v-hv3f-hcfr",
"RUSTSEC-2021-0145",
"RUSTSEC-2024-0375"
],
"fixed_version": null,
"advisory_count": 3,
"oldest_advisory_days": 1845
},
{
"name": "rand",
"direct": false,
"version": "0.8.5",
"severity": "low",
"ecosystem": "crates",
"cvss_score": null,
"advisory_ids": [
"GHSA-cq8v-f236-94qc",
"RUSTSEC-2026-0097"
],
"fixed_version": "0.10.1",
"advisory_count": 2,
"oldest_advisory_days": 105
},
{
"name": "remove_dir_all",
"direct": false,
"version": "0.5.3",
"severity": "low",
"ecosystem": "crates",
"cvss_score": null,
"advisory_ids": [
"GHSA-mc8h-8q98-g5hr",
"RUSTSEC-2023-0018"
],
"fixed_version": "0.8.0",
"advisory_count": 2,
"oldest_advisory_days": 1245
},
{
"name": "derivative",
"direct": true,
"version": "2.2.0",
"severity": "unknown",
"ecosystem": "crates",
"cvss_score": null,
"advisory_ids": [
"RUSTSEC-2024-0388"
],
"fixed_version": null,
"advisory_count": 1,
"oldest_advisory_days": 757
},
{
"name": "adler",
"direct": false,
"version": "1.0.2",
"severity": "unknown",
"ecosystem": "crates",
"cvss_score": null,
"advisory_ids": [
"RUSTSEC-2025-0056"
],
"fixed_version": null,
"advisory_count": 1,
"oldest_advisory_days": 321
},
{
"name": "buf_redux",
"direct": false,
"version": "0.8.4",
"severity": "unknown",
"ecosystem": "crates",
"cvss_score": null,
"advisory_ids": [
"RUSTSEC-2023-0028"
],
"fixed_version": null,
"advisory_count": 1,
"oldest_advisory_days": 1276
},
{
"name": "crossbeam-epoch",
"direct": false,
"version": "0.9.10",
"severity": "unknown",
"ecosystem": "crates",
"cvss_score": null,
"advisory_ids": [
"RUSTSEC-2026-0204"
],
"fixed_version": "0.9.20",
"advisory_count": 1,
"oldest_advisory_days": 17
},
{
"name": "instant",
"direct": false,
"version": "0.1.12",
"severity": "unknown",
"ecosystem": "crates",
"cvss_score": null,
"advisory_ids": [
"RUSTSEC-2024-0384"
],
"fixed_version": null,
"advisory_count": 1,
"oldest_advisory_days": 690
},
{
"name": "multipart",
"direct": false,
"version": "0.18.0",
"severity": "unknown",
"ecosystem": "crates",
"cvss_score": null,
"advisory_ids": [
"RUSTSEC-2023-0050"
],
"fixed_version": null,
"advisory_count": 1,
"oldest_advisory_days": 1199
},
{
"name": "safemem",
"direct": false,
"version": "0.3.3",
"severity": "unknown",
"ecosystem": "crates",
"cvss_score": null,
"advisory_ids": [
"RUSTSEC-2023-0081"
],
"fixed_version": null,
"advisory_count": 1,
"oldest_advisory_days": 1255
},
{
"name": "twoway",
"direct": false,
"version": "0.1.8",
"severity": "unknown",
"ecosystem": "crates",
"cvss_score": null,
"advisory_ids": [
"RUSTSEC-2021-0146"
],
"fixed_version": null,
"advisory_count": 1,
"oldest_advisory_days": 1890
}
],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {
"low": 3,
"high": 4,
"unknown": 8,
"critical": 1,
"moderate": 8
},
"advisory_count": 82,
"affected_count": 24,
"assessed_count": 235,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 4
},
"ecosystems": [
"crates",
"pypi"
],
"dependencies": [
{
"name": "bytes",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "tokio",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "tokio-util",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.7"
},
{
"name": "tokio-stream",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.1"
},
{
"name": "warp",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.3"
},
{
"name": "futures",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.3"
},
{
"name": "crc16",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.4"
},
{
"name": "crc64",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "2"
},
{
"name": "caseless",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.2"
},
{
"name": "arc-swap",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "reqwest",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.11"
},
{
"name": "serde",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "serde_derive",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "serde_json",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "log",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.4"
},
{
"name": "env_logger",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.9"
},
{
"name": "scopeguard",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "itertools",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.10"
},
{
"name": "futures-batch",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.6.0"
},
{
"name": "config",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.13"
},
{
"name": "btoi",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.4"
},
{
"name": "crossbeam",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.8"
},
{
"name": "crossbeam-channel",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.5"
},
{
"name": "chrono",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.4"
},
{
"name": "atoi",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "zstd",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.11"
},
{
"name": "memchr",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "2"
},
{
"name": "pin-project",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "string-error",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.1.0"
},
{
"name": "dashmap",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "5"
},
{
"name": "coarsetime",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.1"
},
{
"name": "arrayvec",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.5"
},
{
"name": "either",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "mockall",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.11"
},
{
"name": "backtrace",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.3"
},
{
"name": "jemallocator",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.5"
},
{
"name": "async-trait",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.1"
},
{
"name": "derivative",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "2"
},
{
"name": "flate2",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "base64",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.13"
},
{
"name": "parking_lot",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.12"
},
{
"name": "lazy_static",
"manifest": "Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "github.com/go-redis/redis/v8",
"manifest": "clienttest/golang/go.mod",
"ecosystem": "go",
"version_constraint": "v8.4.11"
},
{
"name": "github.com/stretchr/testify",
"manifest": "clienttest/golang/go.mod",
"ecosystem": "go",
"version_constraint": "v1.7.0"
},
{
"name": "golang.org/x/sync",
"manifest": "clienttest/golang/go.mod",
"ecosystem": "go",
"version_constraint": "v0.0.0-20180314180146-1d60e4601c6f"
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "arc-swap",
"direct": true,
"version": "1.5.1",
"ecosystem": "crates"
},
{
"name": "arrayvec",
"direct": true,
"version": "0.5.2",
"ecosystem": "crates"
},
{
"name": "async-trait",
"direct": true,
"version": "0.1.57",
"ecosystem": "crates"
},
{
"name": "atoi",
"direct": true,
"version": "1.0.0",
"ecosystem": "crates"
},
{
"name": "backtrace",
"direct": true,
"version": "0.3.66",
"ecosystem": "crates"
},
{
"name": "base64",
"direct": true,
"version": "0.13.0",
"ecosystem": "crates"
},
{
"name": "btoi",
"direct": true,
"version": "0.4.2",
"ecosystem": "crates"
},
{
"name": "bytes",
"direct": true,
"version": "1.2.1",
"ecosystem": "crates"
},
{
"name": "caseless",
"direct": true,
"version": "0.2.1",
"ecosystem": "crates"
},
{
"name": "chrono",
"direct": true,
"version": "0.4.20",
"ecosystem": "crates"
},
{
"name": "coarsetime",
"direct": true,
"version": "0.1.22",
"ecosystem": "crates"
},
{
"name": "config",
"direct": true,
"version": "0.13.2",
"ecosystem": "crates"
},
{
"name": "crc16",
"direct": true,
"version": "0.4.0",
"ecosystem": "crates"
},
{
"name": "crc64",
"direct": true,
"version": "2.0.0",
"ecosystem": "crates"
},
{
"name": "crossbeam",
"direct": true,
"version": "0.8.2",
"ecosystem": "crates"
},
{
"name": "crossbeam-channel",
"direct": true,
"version": "0.5.6",
"ecosystem": "crates"
},
{
"name": "dashmap",
"direct": true,
"version": "5.3.4",
"ecosystem": "crates"
},
{
"name": "derivative",
"direct": true,
"version": "2.2.0",
"ecosystem": "crates"
},
{
"name": "either",
"direct": true,
"version": "1.7.0",
"ecosystem": "crates"
},
{
"name": "env_logger",
"direct": true,
"version": "0.9.0",
"ecosystem": "crates"
},
{
"name": "flate2",
"direct": true,
"version": "1.0.24",
"ecosystem": "crates"
},
{
"name": "futures",
"direct": true,
"version": "0.3.21",
"ecosystem": "crates"
},
{
"name": "futures-batch",
"direct": true,
"version": "0.6.0",
"ecosystem": "crates"
},
{
"name": "itertools",
"direct": true,
"version": "0.10.3",
"ecosystem": "crates"
},
{
"name": "jemallocator",
"direct": true,
"version": "0.5.0",
"ecosystem": "crates"
},
{
"name": "lazy_static",
"direct": true,
"version": "1.4.0",
"ecosystem": "crates"
},
{
"name": "log",
"direct": true,
"version": "0.4.17",
"ecosystem": "crates"
},
{
"name": "memchr",
"direct": true,
"version": "2.5.0",
"ecosystem": "crates"
},
{
"name": "mockall",
"direct": true,
"version": "0.11.2",
"ecosystem": "crates"
},
{
"name": "parking_lot",
"direct": true,
"version": "0.12.1",
"ecosystem": "crates"
},
{
"name": "pin-project",
"direct": true,
"version": "1.0.11",
"ecosystem": "crates"
},
{
"name": "reqwest",
"direct": true,
"version": "0.11.11",
"ecosystem": "crates"
},
{
"name": "scopeguard",
"direct": true,
"version": "1.1.0",
"ecosystem": "crates"
},
{
"name": "serde",
"direct": true,
"version": "1.0.142",
"ecosystem": "crates"
},
{
"name": "serde_derive",
"direct": true,
"version": "1.0.142",
"ecosystem": "crates"
},
{
"name": "serde_json",
"direct": true,
"version": "1.0.83",
"ecosystem": "crates"
},
{
"name": "string-error",
"direct": true,
"version": "0.1.0",
"ecosystem": "crates"
},
{
"name": "tokio",
"direct": true,
"version": "1.20.1",
"ecosystem": "crates"
},
{
"name": "tokio-stream",
"direct": true,
"version": "0.1.9",
"ecosystem": "crates"
},
{
"name": "tokio-util",
"direct": true,
"version": "0.6.10",
"ecosystem": "crates"
},
{
"name": "tokio-util",
"direct": true,
"version": "0.7.3",
"ecosystem": "crates"
},
{
"name": "warp",
"direct": true,
"version": "0.3.2",
"ecosystem": "crates"
},
{
"name": "zstd",
"direct": true,
"version": "0.11.2+zstd.1.5.2",
"ecosystem": "crates"
},
{
"name": "github.com/go-redis/redis/v8",
"direct": true,
"version": "8.4.11",
"ecosystem": "go"
},
{
"name": "github.com/stretchr/testify",
"direct": true,
"version": "1.7.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/sync",
"direct": true,
"version": "0.0.0-20180314180146-1d60e4601c6f",
"ecosystem": "go"
},
{
"name": "addr2line",
"direct": false,
"version": "0.17.0",
"ecosystem": "crates"
},
{
"name": "adler",
"direct": false,
"version": "1.0.2",
"ecosystem": "crates"
},
{
"name": "aho-corasick",
"direct": false,
"version": "0.7.18",
"ecosystem": "crates"
},
{
"name": "alloc-no-stdlib",
"direct": false,
"version": "2.0.3",
"ecosystem": "crates"
},
{
"name": "alloc-stdlib",
"direct": false,
"version": "0.2.1",
"ecosystem": "crates"
},
{
"name": "async-compression",
"direct": false,
"version": "0.3.14",
"ecosystem": "crates"
},
{
"name": "atty",
"direct": false,
"version": "0.2.14",
"ecosystem": "crates"
},
{
"name": "autocfg",
"direct": false,
"version": "1.1.0",
"ecosystem": "crates"
},
{
"name": "bitflags",
"direct": false,
"version": "1.3.2",
"ecosystem": "crates"
},
{
"name": "block-buffer",
"direct": false,
"version": "0.10.2",
"ecosystem": "crates"
},
{
"name": "block-buffer",
"direct": false,
"version": "0.9.0",
"ecosystem": "crates"
},
{
"name": "brotli",
"direct": false,
"version": "3.3.4",
"ecosystem": "crates"
},
{
"name": "brotli-decompressor",
"direct": false,
"version": "2.3.2",
"ecosystem": "crates"
},
{
"name": "buf_redux",
"direct": false,
"version": "0.8.4",
"ecosystem": "crates"
},
{
"name": "bumpalo",
"direct": false,
"version": "3.10.0",
"ecosystem": "crates"
},
{
"name": "byteorder",
"direct": false,
"version": "1.4.3",
"ecosystem": "crates"
},
{
"name": "cc",
"direct": false,
"version": "1.0.73",
"ecosystem": "crates"
},
{
"name": "cfg-if",
"direct": false,
"version": "1.0.0",
"ecosystem": "crates"
},
{
"name": "core-foundation",
"direct": false,
"version": "0.9.3",
"ecosystem": "crates"
},
{
"name": "core-foundation-sys",
"direct": false,
"version": "0.8.3",
"ecosystem": "crates"
},
{
"name": "cpufeatures",
"direct": false,
"version": "0.2.2",
"ecosystem": "crates"
},
{
"name": "crc32fast",
"direct": false,
"version": "1.3.2",
"ecosystem": "crates"
},
{
"name": "crossbeam-deque",
"direct": false,
"version": "0.8.2",
"ecosystem": "crates"
},
{
"name": "crossbeam-epoch",
"direct": false,
"version": "0.9.10",
"ecosystem": "crates"
},
{
"name": "crossbeam-queue",
"direct": false,
"version": "0.3.6",
"ecosystem": "crates"
},
{
"name": "crossbeam-utils",
"direct": false,
"version": "0.8.11",
"ecosystem": "crates"
},
{
"name": "crypto-common",
"direct": false,
"version": "0.1.6",
"ecosystem": "crates"
},
{
"name": "difflib",
"direct": false,
"version": "0.4.0",
"ecosystem": "crates"
},
{
"name": "digest",
"direct": false,
"version": "0.10.3",
"ecosystem": "crates"
},
{
"name": "digest",
"direct": false,
"version": "0.9.0",
"ecosystem": "crates"
},
{
"name": "downcast",
"direct": false,
"version": "0.11.0",
"ecosystem": "crates"
},
{
"name": "encoding_rs",
"direct": false,
"version": "0.8.31",
"ecosystem": "crates"
},
{
"name": "fastrand",
"direct": false,
"version": "1.8.0",
"ecosystem": "crates"
},
{
"name": "float-cmp",
"direct": false,
"version": "0.9.0",
"ecosystem": "crates"
},
{
"name": "fnv",
"direct": false,
"version": "1.0.7",
"ecosystem": "crates"
},
{
"name": "foreign-types",
"direct": false,
"version": "0.3.2",
"ecosystem": "crates"
},
{
"name": "foreign-types-shared",
"direct": false,
"version": "0.1.1",
"ecosystem": "crates"
},
{
"name": "form_urlencoded",
"direct": false,
"version": "1.0.1",
"ecosystem": "crates"
},
{
"name": "fragile",
"direct": false,
"version": "1.2.1",
"ecosystem": "crates"
},
{
"name": "fs_extra",
"direct": false,
"version": "1.2.0",
"ecosystem": "crates"
},
{
"name": "futures-channel",
"direct": false,
"version": "0.3.21",
"ecosystem": "crates"
},
{
"name": "futures-core",
"direct": false,
"version": "0.3.21",
"ecosystem": "crates"
},
{
"name": "futures-executor",
"direct": false,
"version": "0.3.21",
"ecosystem": "crates"
},
{
"name": "futures-io",
"direct": false,
"version": "0.3.21",
"ecosystem": "crates"
},
{
"name": "futures-macro",
"direct": false,
"version": "0.3.21",
"ecosystem": "crates"
},
{
"name": "futures-sink",
"direct": false,
"version": "0.3.21",
"ecosystem": "crates"
},
{
"name": "futures-task",
"direct": false,
"version": "0.3.21",
"ecosystem": "crates"
},
{
"name": "futures-timer",
"direct": false,
"version": "2.0.2",
"ecosystem": "crates"
},
{
"name": "futures-util",
"direct": false,
"version": "0.3.21",
"ecosystem": "crates"
},
{
"name": "generic-array",
"direct": false,
"version": "0.14.6",
"ecosystem": "crates"
},
{
"name": "getrandom",
"direct": false,
"version": "0.2.7",
"ecosystem": "crates"
},
{
"name": "gimli",
"direct": false,
"version": "0.26.2",
"ecosystem": "crates"
},
{
"name": "h2",
"direct": false,
"version": "0.3.13",
"ecosystem": "crates"
},
{
"name": "hashbrown",
"direct": false,
"version": "0.12.3",
"ecosystem": "crates"
},
{
"name": "headers",
"direct": false,
"version": "0.3.7",
"ecosystem": "crates"
},
{
"name": "headers-core",
"direct": false,
"version": "0.2.0",
"ecosystem": "crates"
},
{
"name": "hermit-abi",
"direct": false,
"version": "0.1.19",
"ecosystem": "crates"
},
{
"name": "http",
"direct": false,
"version": "0.2.8",
"ecosystem": "crates"
},
{
"name": "http-body",
"direct": false,
"version": "0.4.5",
"ecosystem": "crates"
},
{
"name": "httparse",
"direct": false,
"version": "1.7.1",
"ecosystem": "crates"
},
{
"name": "httpdate",
"direct": false,
"version": "1.0.2",
"ecosystem": "crates"
},
{
"name": "humantime",
"direct": false,
"version": "2.1.0",
"ecosystem": "crates"
},
{
"name": "hyper",
"direct": false,
"version": "0.14.20",
"ecosystem": "crates"
},
{
"name": "hyper-tls",
"direct": false,
"version": "0.5.0",
"ecosystem": "crates"
},
{
"name": "idna",
"direct": false,
"version": "0.2.3",
"ecosystem": "crates"
},
{
"name": "indexmap",
"direct": false,
"version": "1.9.1",
"ecosystem": "crates"
},
{
"name": "instant",
"direct": false,
"version": "0.1.12",
"ecosystem": "crates"
},
{
"name": "ipnet",
"direct": false,
"version": "2.5.0",
"ecosystem": "crates"
},
{
"name": "itoa",
"direct": false,
"version": "1.0.3",
"ecosystem": "crates"
},
{
"name": "jemalloc-sys",
"direct": false,
"version": "0.5.1+5.3.0-patched",
"ecosystem": "crates"
},
{
"name": "jobserver",
"direct": false,
"version": "0.1.24",
"ecosystem": "crates"
},
{
"name": "js-sys",
"direct": false,
"version": "0.3.59",
"ecosystem": "crates"
},
{
"name": "libc",
"direct": false,
"version": "0.2.127",
"ecosystem": "crates"
},
{
"name": "lock_api",
"direct": false,
"version": "0.4.7",
"ecosystem": "crates"
},
{
"name": "matches",
"direct": false,
"version": "0.1.9",
"ecosystem": "crates"
},
{
"name": "memoffset",
"direct": false,
"version": "0.6.5",
"ecosystem": "crates"
},
{
"name": "mime",
"direct": false,
"version": "0.3.16",
"ecosystem": "crates"
},
{
"name": "mime_guess",
"direct": false,
"version": "2.0.4",
"ecosystem": "crates"
},
{
"name": "minimal-lexical",
"direct": false,
"version": "0.2.1",
"ecosystem": "crates"
},
{
"name": "miniz_oxide",
"direct": false,
"version": "0.5.3",
"ecosystem": "crates"
},
{
"name": "mio",
"direct": false,
"version": "0.8.4",
"ecosystem": "crates"
},
{
"name": "mockall_derive",
"direct": false,
"version": "0.11.2",
"ecosystem": "crates"
},
{
"name": "multipart",
"direct": false,
"version": "0.18.0",
"ecosystem": "crates"
},
{
"name": "native-tls",
"direct": false,
"version": "0.2.10",
"ecosystem": "crates"
},
{
"name": "nom",
"direct": false,
"version": "7.1.1",
"ecosystem": "crates"
},
{
"name": "normalize-line-endings",
"direct": false,
"version": "0.3.0",
"ecosystem": "crates"
},
{
"name": "num-integer",
"direct": false,
"version": "0.1.45",
"ecosystem": "crates"
},
{
"name": "num-traits",
"direct": false,
"version": "0.2.15",
"ecosystem": "crates"
},
{
"name": "num_cpus",
"direct": false,
"version": "1.13.1",
"ecosystem": "crates"
},
{
"name": "object",
"direct": false,
"version": "0.29.0",
"ecosystem": "crates"
},
{
"name": "once_cell",
"direct": false,
"version": "1.13.0",
"ecosystem": "crates"
},
{
"name": "opaque-debug",
"direct": false,
"version": "0.3.0",
"ecosystem": "crates"
},
{
"name": "openssl",
"direct": false,
"version": "0.10.41",
"ecosystem": "crates"
},
{
"name": "openssl-macros",
"direct": false,
"version": "0.1.0",
"ecosystem": "crates"
},
{
"name": "openssl-probe",
"direct": false,
"version": "0.1.5",
"ecosystem": "crates"
},
{
"name": "openssl-sys",
"direct": false,
"version": "0.9.75",
"ecosystem": "crates"
},
{
"name": "parking_lot_core",
"direct": false,
"version": "0.9.3",
"ecosystem": "crates"
},
{
"name": "pathdiff",
"direct": false,
"version": "0.2.1",
"ecosystem": "crates"
},
{
"name": "percent-encoding",
"direct": false,
"version": "2.1.0",
"ecosystem": "crates"
},
{
"name": "pin-project-internal",
"direct": false,
"version": "1.0.11",
"ecosystem": "crates"
},
{
"name": "pin-project-lite",
"direct": false,
"version": "0.2.9",
"ecosystem": "crates"
},
{
"name": "pin-utils",
"direct": false,
"version": "0.1.0",
"ecosystem": "crates"
},
{
"name": "pkg-config",
"direct": false,
"version": "0.3.25",
"ecosystem": "crates"
},
{
"name": "ppv-lite86",
"direct": false,
"version": "0.2.16",
"ecosystem": "crates"
},
{
"name": "predicates",
"direct": false,
"version": "2.1.1",
"ecosystem": "crates"
},
{
"name": "predicates-core",
"direct": false,
"version": "1.0.3",
"ecosystem": "crates"
},
{
"name": "predicates-tree",
"direct": false,
"version": "1.0.5",
"ecosystem": "crates"
},
{
"name": "proc-macro2",
"direct": false,
"version": "1.0.43",
"ecosystem": "crates"
},
{
"name": "quick-error",
"direct": false,
"version": "1.2.3",
"ecosystem": "crates"
},
{
"name": "quote",
"direct": false,
"version": "1.0.21",
"ecosystem": "crates"
},
{
"name": "rand",
"direct": false,
"version": "0.8.5",
"ecosystem": "crates"
},
{
"name": "rand_chacha",
"direct": false,
"version": "0.3.1",
"ecosystem": "crates"
},
{
"name": "rand_core",
"direct": false,
"version": "0.6.3",
"ecosystem": "crates"
},
{
"name": "redox_syscall",
"direct": false,
"version": "0.2.16",
"ecosystem": "crates"
},
{
"name": "regex",
"direct": false,
"version": "1.6.0",
"ecosystem": "crates"
},
{
"name": "regex-syntax",
"direct": false,
"version": "0.6.27",
"ecosystem": "crates"
},
{
"name": "remove_dir_all",
"direct": false,
"version": "0.5.3",
"ecosystem": "crates"
},
{
"name": "rustc-demangle",
"direct": false,
"version": "0.1.21",
"ecosystem": "crates"
},
{
"name": "ryu",
"direct": false,
"version": "1.0.11",
"ecosystem": "crates"
},
{
"name": "safemem",
"direct": false,
"version": "0.3.3",
"ecosystem": "crates"
},
{
"name": "schannel",
"direct": false,
"version": "0.1.20",
"ecosystem": "crates"
},
{
"name": "scoped-tls",
"direct": false,
"version": "1.0.0",
"ecosystem": "crates"
},
{
"name": "security-framework",
"direct": false,
"version": "2.6.1",
"ecosystem": "crates"
},
{
"name": "security-framework-sys",
"direct": false,
"version": "2.6.1",
"ecosystem": "crates"
},
{
"name": "serde_urlencoded",
"direct": false,
"version": "0.7.1",
"ecosystem": "crates"
},
{
"name": "sha-1",
"direct": false,
"version": "0.10.0",
"ecosystem": "crates"
},
{
"name": "sha-1",
"direct": false,
"version": "0.9.8",
"ecosystem": "crates"
},
{
"name": "signal-hook-registry",
"direct": false,
"version": "1.4.0",
"ecosystem": "crates"
},
{
"name": "slab",
"direct": false,
"version": "0.4.7",
"ecosystem": "crates"
},
{
"name": "smallvec",
"direct": false,
"version": "1.9.0",
"ecosystem": "crates"
},
{
"name": "socket2",
"direct": false,
"version": "0.4.4",
"ecosystem": "crates"
},
{
"name": "syn",
"direct": false,
"version": "1.0.99",
"ecosystem": "crates"
},
{
"name": "tempfile",
"direct": false,
"version": "3.3.0",
"ecosystem": "crates"
},
{
"name": "termcolor",
"direct": false,
"version": "1.1.3",
"ecosystem": "crates"
},
{
"name": "termtree",
"direct": false,
"version": "0.2.4",
"ecosystem": "crates"
},
{
"name": "thiserror",
"direct": false,
"version": "1.0.32",
"ecosystem": "crates"
},
{
"name": "thiserror-impl",
"direct": false,
"version": "1.0.32",
"ecosystem": "crates"
},
{
"name": "time",
"direct": false,
"version": "0.1.44",
"ecosystem": "crates"
},
{
"name": "tinyvec",
"direct": false,
"version": "1.6.0",
"ecosystem": "crates"
},
{
"name": "tinyvec_macros",
"direct": false,
"version": "0.1.0",
"ecosystem": "crates"
},
{
"name": "tokio-macros",
"direct": false,
"version": "1.8.0",
"ecosystem": "crates"
},
{
"name": "tokio-native-tls",
"direct": false,
"version": "0.3.0",
"ecosystem": "crates"
},
{
"name": "tokio-tungstenite",
"direct": false,
"version": "0.15.0",
"ecosystem": "crates"
},
{
"name": "toml",
"direct": false,
"version": "0.5.9",
"ecosystem": "crates"
},
{
"name": "tower-service",
"direct": false,
"version": "0.3.2",
"ecosystem": "crates"
},
{
"name": "tracing",
"direct": false,
"version": "0.1.36",
"ecosystem": "crates"
},
{
"name": "tracing-core",
"direct": false,
"version": "0.1.29",
"ecosystem": "crates"
},
{
"name": "try-lock",
"direct": false,
"version": "0.2.3",
"ecosystem": "crates"
},
{
"name": "tungstenite",
"direct": false,
"version": "0.14.0",
"ecosystem": "crates"
},
{
"name": "twoway",
"direct": false,
"version": "0.1.8",
"ecosystem": "crates"
},
{
"name": "typenum",
"direct": false,
"version": "1.15.0",
"ecosystem": "crates"
},
{
"name": "undermoon",
"direct": false,
"version": "0.6.2",
"ecosystem": "crates"
},
{
"name": "unicase",
"direct": false,
"version": "2.6.0",
"ecosystem": "crates"
},
{
"name": "unicode-bidi",
"direct": false,
"version": "0.3.8",
"ecosystem": "crates"
},
{
"name": "unicode-ident",
"direct": false,
"version": "1.0.3",
"ecosystem": "crates"
},
{
"name": "unicode-normalization",
"direct": false,
"version": "0.1.21",
"ecosystem": "crates"
},
{
"name": "url",
"direct": false,
"version": "2.2.2",
"ecosystem": "crates"
},
{
"name": "utf-8",
"direct": false,
"version": "0.7.6",
"ecosystem": "crates"
},
{
"name": "vcpkg",
"direct": false,
"version": "0.2.15",
"ecosystem": "crates"
},
{
"name": "version_check",
"direct": false,
"version": "0.9.4",
"ecosystem": "crates"
},
{
"name": "want",
"direct": false,
"version": "0.3.0",
"ecosystem": "crates"
},
{
"name": "wasi",
"direct": false,
"version": "0.10.0+wasi-snapshot-preview1",
"ecosystem": "crates"
},
{
"name": "wasi",
"direct": false,
"version": "0.11.0+wasi-snapshot-preview1",
"ecosystem": "crates"
},
{
"name": "wasm-bindgen",
"direct": false,
"version": "0.2.82",
"ecosystem": "crates"
},
{
"name": "wasm-bindgen-backend",
"direct": false,
"version": "0.2.82",
"ecosystem": "crates"
},
{
"name": "wasm-bindgen-futures",
"direct": false,
"version": "0.4.32",
"ecosystem": "crates"
},
{
"name": "wasm-bindgen-macro",
"direct": false,
"version": "0.2.82",
"ecosystem": "crates"
},
{
"name": "wasm-bindgen-macro-support",
"direct": false,
"version": "0.2.82",
"ecosystem": "crates"
},
{
"name": "wasm-bindgen-shared",
"direct": false,
"version": "0.2.82",
"ecosystem": "crates"
},
{
"name": "web-sys",
"direct": false,
"version": "0.3.59",
"ecosystem": "crates"
},
{
"name": "winapi",
"direct": false,
"version": "0.3.9",
"ecosystem": "crates"
},
{
"name": "winapi-i686-pc-windows-gnu",
"direct": false,
"version": "0.4.0",
"ecosystem": "crates"
},
{
"name": "winapi-util",
"direct": false,
"version": "0.1.5",
"ecosystem": "crates"
},
{
"name": "winapi-x86_64-pc-windows-gnu",
"direct": false,
"version": "0.4.0",
"ecosystem": "crates"
},
{
"name": "windows-sys",
"direct": false,
"version": "0.36.1",
"ecosystem": "crates"
},
{
"name": "windows_aarch64_msvc",
"direct": false,
"version": "0.36.1",
"ecosystem": "crates"
},
{
"name": "windows_i686_gnu",
"direct": false,
"version": "0.36.1",
"ecosystem": "crates"
},
{
"name": "windows_i686_msvc",
"direct": false,
"version": "0.36.1",
"ecosystem": "crates"
},
{
"name": "windows_x86_64_gnu",
"direct": false,
"version": "0.36.1",
"ecosystem": "crates"
},
{
"name": "windows_x86_64_msvc",
"direct": false,
"version": "0.36.1",
"ecosystem": "crates"
},
{
"name": "winreg",
"direct": false,
"version": "0.10.1",
"ecosystem": "crates"
},
{
"name": "zstd-safe",
"direct": false,
"version": "5.0.2+zstd.1.5.2",
"ecosystem": "crates"
},
{
"name": "zstd-sys",
"direct": false,
"version": "2.0.1+zstd.1.5.2",
"ecosystem": "crates"
},
{
"name": "jinja2",
"direct": false,
"version": "2.11.3",
"ecosystem": "pypi"
},
{
"name": "loguru",
"direct": false,
"version": "0.4.1",
"ecosystem": "pypi"
},
{
"name": "redis",
"direct": false,
"version": "2.10.6",
"ecosystem": "pypi"
},
{
"name": "redis-py-cluster",
"direct": false,
"version": "2.1.0",
"ecosystem": "pypi"
},
{
"name": "requests",
"direct": false,
"version": "2.22.0",
"ecosystem": "pypi"
},
{
"name": "requests-unixsocket",
"direct": false,
"version": "0.2.0",
"ecosystem": "pypi"
}
],
"collected": true,
"truncated": false,
"total_count": 235,
"direct_count": 46,
"indirect_count": 189
}
},
"maintainership": {
"issues": {
"open_prs": 5,
"merged_prs": 260,
"open_issues": 17,
"closed_ratio": 0.746,
"closed_issues": 50,
"closed_unmerged_prs": 7
},
"bus_factor": 1,
"bot_contributors": 1,
"top_contributors": [
{
"type": "User",
"login": "doyoubi",
"commits": 896,
"avatar_url": "https://avatars.githubusercontent.com/u/4255390?v=4"
},
{
"type": "User",
"login": "cfeitong",
"commits": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/8102200?v=4"
},
{
"type": "User",
"login": "traceming2",
"commits": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/77142725?v=4"
}
],
"contributors_sampled": 3,
"top_contributor_share": 0.996
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"ci.yaml"
],
"has_docs_dir": true,
"linter_configs": [],
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"Cargo.lock",
"go.sum"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": null,
"reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 0,
"reason": "0 out of 17 merged PRs checked by a CI test -- score normalized to 0",
"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/17 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 0,
"reason": "project has 0 contributing companies or organizations -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 10,
"reason": "update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 0,
"reason": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 0,
"reason": "90 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "6598dfa080efc2bc398eefe77c6b70f8d68cede9",
"ran_at": "2026-07-23T19:53:47Z",
"aggregate_score": 3.2,
"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": null,
"oldest_open_prs": [
{
"number": 334,
"created_at": "2023-01-20T22:14:15Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 335,
"created_at": "2023-01-31T23:44:36Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 336,
"created_at": "2023-02-04T00:42:34Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 337,
"created_at": "2023-03-25T01:27:50Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 339,
"created_at": "2023-03-31T14:35:13Z",
"last_comment_at": null,
"last_comment_author": null
}
],
"last_merged_pr_at": "2022-11-05T13:35:28Z",
"ci_last_conclusion": null,
"oldest_open_issues": [
{
"number": 75,
"created_at": "2020-02-13T07:06:46Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 94,
"created_at": "2020-02-29T01:21:16Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 120,
"created_at": "2020-03-25T12:45:27Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 127,
"created_at": "2020-03-31T13:33:02Z",
"last_comment_at": "2020-10-25T14:51:14Z",
"last_comment_author": "doyoubi"
},
{
"number": 131,
"created_at": "2020-04-03T15:36:58Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 133,
"created_at": "2020-04-04T11:58:10Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 135,
"created_at": "2020-04-05T04:24:26Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 144,
"created_at": "2020-04-12T00:42:25Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 151,
"created_at": "2020-04-13T14:13:09Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 207,
"created_at": "2020-07-08T14:15:49Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 208,
"created_at": "2020-07-14T13:10:58Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 239,
"created_at": "2020-12-06T02:00:11Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 242,
"created_at": "2020-12-08T13:22:03Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 262,
"created_at": "2021-01-26T05:28:31Z",
"last_comment_at": "2021-01-31T08:43:42Z",
"last_comment_author": "doyoubi"
},
{
"number": 275,
"created_at": "2021-04-03T07:45:50Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 303,
"created_at": "2021-05-17T14:19:29Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 321,
"created_at": "2022-02-01T12:49:40Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/doyoubi/undermoon",
"host": "github.com",
"name": "undermoon",
"owner": "doyoubi"
},
"metrics": {
"overall": {
"key": "overall",
"band": "critical",
"name": "Overall health",
"note": "Abandonment Policy applies a 60% multiplier to weighted overall health and gives it a ceiling of 49.",
"notes": [
{
"code": "abandonment_overall_adjustment",
"params": {
"cap": 49,
"pct": 60
}
}
],
"value": 28,
"inputs": {
"security": 36,
"vitality": 21,
"community": 58,
"governance": 51,
"engineering": 63,
"abandonment_cap": 49,
"abandonment_state": "likely_abandoned",
"abandonment_multiplier": 60,
"weighted_overall_before_abandonment": 46,
"overall_after_abandonment_multiplier": 28
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "critical",
"name": "Vitality",
"value": 21,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "critical",
"name": "Development activity",
"note": null,
"notes": [],
"value": 1,
"inputs": {
"commits_last_year": 0,
"human_commit_share": 1,
"days_since_last_push": 1210,
"active_weeks_last_year": 0
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 1210 days ago",
"points": 0,
"status": "missed",
"details": [
{
"code": "push_recency",
"params": {
"days": 1210
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "0/52 weeks with commits",
"points": 0,
"status": "missed",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 0
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "0 commits in the last year",
"points": 0,
"status": "missed",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 0
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "moderate",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 52,
"inputs": {
"releases_count": 30,
"latest_release_tag": "v0.6.2",
"releases_from_tags": false,
"days_since_latest_release": 1377,
"mean_days_between_releases": 71.3
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "30 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 30
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 1377 days ago",
"points": 0,
"status": "missed",
"details": [
{
"code": "release_recency",
"params": {
"days": 1377
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~71.3 days",
"points": 19.8,
"status": "partial",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 71.3
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "moderate",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 60,
"inputs": {
"cap": 49,
"state": "likely_abandoned",
"guards": [],
"signals": [
"unanswered_contributions",
"issue_rot",
"unfixed_advisory",
"release_stall",
"scorecard_unmaintained"
],
"red_flag": true,
"multiplier_pct": 60,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": 5,
"unanswered_open_issues": 15,
"days_since_last_merged_pr": 1356,
"days_since_last_human_commit": 1356,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "no human commit for 1356 days; 5 unmet obligation(s): pull requests unanswered, issues unanswered, a fixed advisory left unapplied, releases stalled, Scorecard reports it unmaintained",
"points": 60,
"status": "partial",
"details": [
{
"code": "abandonment_flagged",
"params": {
"days": 1356,
"count": 5,
"signals": "pull requests unanswered, issues unanswered, a fixed advisory left unapplied, releases stalled, Scorecard reports it unmaintained"
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "moderate",
"name": "Community & Adoption",
"value": 58,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "moderate",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 65,
"inputs": {
"forks": 37,
"stars": 702,
"watchers": 14,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "702 stars",
"points": 46.2,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 702
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "37 forks",
"points": 13,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 37
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "14 watchers",
"points": 6.2,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 14
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "moderate",
"name": "Community health",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (Apache-2.0)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "Apache-2.0"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 51,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 13,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 3,
"top_contributor_share": 0.996
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 100% of commits",
"points": 0.1,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 100
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "3 contributors",
"points": 4.1,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 3
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 72,
"inputs": {
"merged_prs": 260,
"open_issues": 17,
"closed_issues": 50,
"issue_closed_ratio": 0.746,
"closed_unmerged_prs": 7
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "75% of issues closed",
"points": 34.9,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 75
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "260/267 decided PRs merged",
"points": 37.2,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 260,
"decided": 267
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/17 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"name": "Ownership & stewardship",
"note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"verified_domain"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 63,
"inputs": {
"followers": 157,
"owner_type": "User",
"is_verified": null,
"owner_login": "doyoubi",
"public_repos": 57,
"account_age_days": 4837
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "personal (user) account",
"points": 10,
"status": "partial",
"details": [
{
"code": "owner_personal",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": "not applicable to user accounts",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_applicable_to_user_accounts",
"params": {}
}
],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "157 followers of doyoubi",
"points": 15.8,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 157,
"login": "doyoubi"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "57 public repos, account ~13 yr old",
"points": 24.8,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 57
}
},
{
"code": "account_age_years",
"params": {
"years": 13
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "moderate",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 69,
"inputs": {
"packages": [
"github.com/doyoubi/undermoon"
],
"ecosystems": "go",
"any_deprecated": false,
"min_days_since_publish": 1377
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on go",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "go"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 1377 days ago",
"points": 4,
"status": "partial",
"details": [
{
"code": "publish_recency",
"params": {
"days": 1377
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "29 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 29
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "moderate",
"name": "Engineering Quality",
"value": 63,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "at_risk",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 48,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "1 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 1
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "0 out of 17 merged PRs checked by a CI test -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"topics": [
"redis",
"redis-cluster",
"rust",
"proxy",
"slot",
"migration",
"redis-clusters",
"redis-instances",
"redis-protocol",
"redis-proxy",
"failover",
"scale",
"redis-cloud",
"cloud",
"kubernetes",
"k8s",
"redis-cluster-protocol"
],
"has_wiki": true,
"homepage": null,
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "17 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 17
}
}
],
"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": 36,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Branch-Protection, Packaging, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"branch_protection",
"packaging",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 32,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 15,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 3,
"scorecard_aggregate": 3.2
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "0 out of 17 merged PRs checked by a CI test -- score normalized to 0",
"points": 0,
"status": "missed",
"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/17 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "update tool detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "90 existing vulnerabilities detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "moderate",
"name": "Dependency advisories",
"note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories. Remaining weights renormalized. Matched 235 resolved dependencies against OSV. This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"indirect_dependencies_free_of_known_advisories"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_repository",
"params": {
"assessed": 235
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 50,
"inputs": {
"source": "osv",
"advisories": 82,
"affected_packages": 24,
"assessed_packages": 235,
"unassessed_packages": 0,
"affected_by_severity": "critical 1, high 4, moderate 8, low 3, unknown 8",
"direct_affected_packages": 4
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "4 affected: warp 0.3.2 (high), bytes 1.2.1 (moderate 6.2), tokio 1.20.1 (moderate 5.4), +1 more",
"points": 11.3,
"status": "partial",
"details": [
{
"code": "advisories_affected",
"params": {
"count": 4,
"packages": "warp 0.3.2 (high), bytes 1.2.1 (moderate 6.2), tokio 1.20.1 (moderate 5.4)"
}
},
{
"code": "advisories_affected_more",
"params": {
"count": 1
}
}
],
"max_points": 35
},
{
"key": "indirect_dependencies_free_of_known_advisories",
"name": "Indirect dependencies free of known advisories",
"detail": "transitive set not separable from development and test dependencies in this scope",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_scope_not_separable",
"params": {}
}
],
"max_points": 25
},
{
"key": "no_advisories_left_outstanding",
"name": "No advisories left outstanding",
"detail": "4 advisory-carrying package(s) unaddressed past 90 days; oldest published 1651 days ago",
"points": 26,
"status": "partial",
"details": [
{
"code": "advisories_stale",
"params": {
"days": 90,
"count": 4,
"oldest": 1651
}
}
],
"max_points": 40
}
]
},
{
"key": "malicious_dependencies",
"band": "excellent",
"name": "Malicious dependencies",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"source": "osv",
"meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
"packages": [],
"red_flag": false,
"assessed_packages": 235,
"malicious_packages": 0,
"direct_malicious_packages": 0,
"withdrawn_malicious_packages": 0,
"installable_malicious_packages": 0
},
"components": [
{
"key": "no_dependency_reported_as_a_malicious_package",
"name": "No dependency reported as a malicious package",
"detail": "no dependency is reported as a malicious package",
"points": 100,
"status": "met",
"details": [
{
"code": "no_malicious_dependencies",
"params": {}
}
],
"max_points": 100
}
]
}
],
"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": 52,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "critical",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 21,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.39,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "no CLAUDE.md / AGENTS.md / editor rules",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_instructions",
"params": {}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "39 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 20.8,
"status": "partial",
"details": [
{
"code": "legible_history",
"params": {
"legible": 39,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "moderate",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 61,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"Cargo.lock",
"go.sum"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [
"Makefile"
],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [],
"agent_commit_share": 0,
"toolchain_manifests": [
"Cargo.toml",
"clienttest/golang/go.mod",
"clienttest/java/app/build.gradle.kts"
],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "Makefile",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Makefile"
}
}
],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "Rust (statically typed)",
"points": 11,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Rust"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "no agent-authored commits among the last 100",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_authored_commits",
"params": {
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 99,
"inputs": {
"primary_language": "Rust",
"largest_source_bytes": 83373,
"source_files_sampled": 100,
"oversized_source_files": 2
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Rust (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Rust"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "2/100 source files over 60KB",
"points": 53.9,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 100,
"oversized": 2
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "at_risk",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"example_dirs": [
"examples"
],
"has_mcp_signal": false,
"api_schema_files": []
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": "examples",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "examples"
}
}
],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"Could not fetch crates package 'undermoon' from its registry"
],
"report_type": "repository",
"generated_at": "2026-07-23T19:54:04.018894Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/d/doyoubi/undermoon.svg",
"full_name": "doyoubi/undermoon",
"license_state": "standard",
"license_spdx": "Apache-2.0"
}