Informe JSON sin procesar legible por máquina
{
"data": {
"repo": {
"topics": [],
"is_fork": false,
"size_kb": 1896,
"has_wiki": true,
"homepage": "https://beta-recsys.readthedocs.io/en/latest/",
"languages": {
"Shell": 1598,
"Python": 685346,
"Makefile": 215,
"Dockerfile": 3198
},
"pushed_at": "2025-11-26T19:42:17Z",
"created_at": "2020-03-15T17:03:32Z",
"owner_type": "Organization",
"updated_at": "2026-07-19T07:35:56Z",
"description": "Beta-RecSys: Build, Evaluate and Tune Automated Recommender Systems",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "master",
"license_spdx_raw": "MIT",
"primary_language": "Python",
"significant_languages": [
"Python"
]
},
"owner": {
"blog": null,
"name": null,
"type": "Organization",
"login": "beta-team",
"company": null,
"location": null,
"followers": 0,
"avatar_url": "https://avatars.githubusercontent.com/u/62214309?v=4",
"created_at": "2020-03-15T16:59:32Z",
"is_verified": null,
"public_repos": 4,
"account_age_days": 2322
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.3.3",
"kind": "patch",
"published_at": "2022-01-04T13:09:37Z"
},
{
"tag": "v0.3.2",
"kind": "patch",
"published_at": "2021-02-28T14:29:38Z"
},
{
"tag": "v0.3.1",
"kind": "patch",
"published_at": "2021-01-26T21:12:57Z"
},
{
"tag": "v0.3.0",
"kind": "minor",
"published_at": "2021-01-09T15:21:40Z"
},
{
"tag": "v0.2.4",
"kind": "patch",
"published_at": "2020-12-24T23:03:54Z"
},
{
"tag": "v0.2.3",
"kind": "patch",
"published_at": "2020-11-23T11:27:18Z"
},
{
"tag": "v0.2.2",
"kind": "patch",
"published_at": "2020-10-26T10:24:45Z"
},
{
"tag": "v0.2.1",
"kind": "patch",
"published_at": "2020-09-23T23:12:22Z"
},
{
"tag": "v0.2.0",
"kind": "minor",
"published_at": "2020-09-23T10:29:52Z"
},
{
"tag": "v0.1",
"kind": "other",
"published_at": "2020-07-15T19:25:05Z"
}
],
"recent_commits": [
{
"oid": "200f7412135e4599e4a5d0db74ae54d0704432e1",
"body": "Bump ray from 2.3.0 to 2.8.1",
"is_bot": false,
"headline": "Merge pull request #437 from beta-team/dependabot/pip/ray-2.8.1",
"author_name": "Zaiqiao Meng",
"author_login": "mengzaiqiao",
"committed_at": "2025-01-19T08:16:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3ace5f85d267e6f4ad2534680b13ce41151af90b",
"body": "Bumps [ray](https://github.com/ray-project/ray) from 2.3.0 to 2.8.1.\n- [Release notes](https://github.com/ray-project/ray/releases)\n- [Commits](https://github.com/ray-project/ray/compare/ray-2.3.0...ray-2.8.1)\n\n---\nupdated-dependencies:\n- dependency-name: ray\n dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "Bump ray from 2.3.0 to 2.8.1",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2025-01-19T08:15:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fd3cd120e59722457e246d0c473ab596eb97f0fe",
"body": "Bump requests from 2.31.0 to 2.32.0",
"is_bot": false,
"headline": "Merge pull request #435 from beta-team/dependabot/pip/requests-2.32.0",
"author_name": "Zaiqiao Meng",
"author_login": "mengzaiqiao",
"committed_at": "2025-01-19T08:14:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "07168b59d6afa8d4f7e2bc2bb6ff5114f3ee7932",
"body": "fix: update ray version",
"is_bot": false,
"headline": "Merge pull request #436 from beta-team/ray",
"author_name": "Zaiqiao Meng",
"author_login": "mengzaiqiao",
"committed_at": "2025-01-19T08:14:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a3afe38bf3b0d23b732e41affc9a3a480c0b6fd7",
"body": null,
"is_bot": false,
"headline": "fix: update ray version",
"author_name": "Zaiqiao Meng",
"author_login": "mengzaiqiao",
"committed_at": "2025-01-19T08:13:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b3de3fc03a7d481db97852b83b2ccb43aa8eab4b",
"body": "---\nupdated-dependencies:\n- dependency-name: requests\n dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2024-05-21T06:13:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "625189d5e1002a3edc27c3e3ce075fddf7ae1c92",
"body": "Bump requests from 2.24.0 to 2.31.0",
"is_bot": false,
"headline": "Merge pull request #433 from beta-team/dependabot/pip/requests-2.31.0",
"author_name": "Zaiqiao Meng",
"author_login": "mengzaiqiao",
"committed_at": "2023-08-28T13:33:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f7b11cc3b30b81797bfdf872ab0993f64c8c6f42",
"body": "Bumps [requests](https://github.com/psf/requests) from 2.24.0 to 2.31.0.\n- [Release notes](https://github.com/psf/requests/releases)\n- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)\n- [Commits](https://github.com/psf/requests/compare/v2.24.0...v2.31.0)\n\n---\nupdated-dependencies:\n- dependency-name: requests\n dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "Bump requests from 2.24.0 to 2.31.0",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2023-05-22T23:55:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "89d96b08f27a66182999f3b61bcfb41498319480",
"body": "Fixed a bug in EvalEngine",
"is_bot": false,
"headline": "Merge pull request #432 from JavierSanzCruza/LightGCN-Sigmoid",
"author_name": "Zaiqiao Meng",
"author_login": "mengzaiqiao",
"committed_at": "2023-01-19T13:08:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "af6a4cf7f464593d39cc52da040f23c192d85698",
"body": null,
"is_bot": false,
"headline": "Removed a blank space",
"author_name": "Javier Sanz-Cruzado",
"author_login": "JavierSanzCruza",
"committed_at": "2023-01-17T16:54:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c356b08c92f6092b00dce558cfd19a8568edfc37",
"body": null,
"is_bot": false,
"headline": "Update eval_engine.py",
"author_name": "Javier Sanz-Cruzado",
"author_login": "JavierSanzCruza",
"committed_at": "2023-01-17T16:48:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "91a007b8612455fd34e6e53ea91e513de1789ab1",
"body": "Fixed a bug in EvalEngine where it failed when a batch only contains a single (user, item) pair by adding that single pair to the second to last batch.",
"is_bot": false,
"headline": "Fixed a bug in EvalEngine",
"author_name": "Javier Sanz-Cruzado",
"author_login": "JavierSanzCruza",
"committed_at": "2023-01-17T16:43:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4764723c941ecbdf7bf4379a47e4bc306ea560bc",
"body": "Add SimGCL model",
"is_bot": false,
"headline": "Merge pull request #430 from beta-team/develop",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-05-11T11:08:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "36e37cce719fc49aefc8cd4d5923e9344e8b0466",
"body": "Add the implementation of the SimGCL model",
"is_bot": false,
"headline": "Merge pull request #429 from TedSIWEILIU/develop",
"author_name": "Zaiqiao Meng",
"author_login": "mengzaiqiao",
"committed_at": "2022-05-11T11:02:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "621850f7546d520e12030e8276b7a2faceb3cb05",
"body": null,
"is_bot": false,
"headline": "Update simgcl.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-05-11T10:58:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8497fdaf2ffbfb136936756126a5055487359ab6",
"body": null,
"is_bot": false,
"headline": "Update simgcl.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-05-10T22:29:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2853da827e70161bf8a8d355d1cd6097cbaaf0ce",
"body": null,
"is_bot": false,
"headline": "Create train_simgcl.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-05-10T22:18:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5dc308fe75303f69b2d7b217ef1ae9e093c14e83",
"body": null,
"is_bot": false,
"headline": "Create simgcl.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-05-10T22:17:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6bf730140503de33e30e7fe7700e5e28975d8f0e",
"body": null,
"is_bot": false,
"headline": "Create simgcl_default.json",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-05-10T22:16:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d55771ab1b2ebf3d80cb728094efb081797549d5",
"body": "Add SimGCL",
"is_bot": false,
"headline": "Update README.md",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-05-10T22:15:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d35e2f4ed5efdf1a44c4877e9c7a9e5f5940b2fb",
"body": "Develop",
"is_bot": false,
"headline": "Merge pull request #16 from beta-team/develop",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-05-10T22:11:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5daa09aa9c02a635e170883ca84509110fdddc98",
"body": "Fixed LightGCN error",
"is_bot": false,
"headline": "Merge pull request #426 from JavierSanzCruza/LightGCN-Sigmoid",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-02-24T17:32:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2c05e395f3ea6d3be8926b259ef6a5d4cc7dae16",
"body": "Added a sigmoid to the LightGCN outcome.",
"is_bot": false,
"headline": "Update lightgcn.py",
"author_name": "Javier Sanz-Cruzado",
"author_login": "JavierSanzCruza",
"committed_at": "2022-02-24T12:07:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4dd15774cb196001ee232e1987f1bf1346e48a55",
"body": "Modified LightGCN: removed the Sigmoid activation function for the outcome, and fixed a minor error, where the LightGCN module did not set to evaluation mode in the predict function.",
"is_bot": false,
"headline": "Update lightgcn.py",
"author_name": "Javier Sanz-Cruzado",
"author_login": "JavierSanzCruza",
"committed_at": "2022-02-24T11:26:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fc5a4f90282131e6a95a93f2284749beceaaf29f",
"body": "Develop",
"is_bot": false,
"headline": "Merge pull request #425 from beta-team/develop",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-02-07T22:31:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b5bbb5cf334b760a9926b1fa597e93949faf671d",
"body": "Update amazon.py",
"is_bot": false,
"headline": "Merge pull request #424 from TedSIWEILIU/develop",
"author_name": "Zaiqiao Meng",
"author_login": "mengzaiqiao",
"committed_at": "2022-02-07T22:28:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c53a1f9c3959855f9e7a19382604909aec4e64b0",
"body": null,
"is_bot": false,
"headline": "Update amazon.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-02-07T22:07:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b15c4fd1f1a74f892a434ff524ee0abc862cc6d8",
"body": null,
"is_bot": false,
"headline": "Update amazon.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-02-07T22:01:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5b467511166dcbbb6df7ddf3d9f813923c342658",
"body": "Develop",
"is_bot": false,
"headline": "Merge pull request #423 from beta-team/develop",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-02-03T16:58:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8f0f91379c6467b8eedbf0f25dac4f1249ea55cd",
"body": "Update lightgcn.py",
"is_bot": false,
"headline": "Merge pull request #422 from TedSIWEILIU/develop",
"author_name": "Zaiqiao Meng",
"author_login": "mengzaiqiao",
"committed_at": "2022-02-03T16:47:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "33155121521454596cfe7ae5eff01c17bc98de83",
"body": null,
"is_bot": false,
"headline": "Update lightgcn.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-02-03T16:35:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2990de161fcc794f8cbc9f2393cb852376895b53",
"body": "1. Fix the dropout issue: The dropout function was called in all forward passes. Now it's only called for each training forward pass.\r\n2. Add the nn.Sigmoid() for the prediction layer.",
"is_bot": false,
"headline": "Update lightgcn.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-02-03T16:30:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3ae275ec6aa9811ccbc8ffff51bdcc8a1e19f556",
"body": "Update sgl.py",
"is_bot": false,
"headline": "Merge pull request #420 from TedSIWEILIU/develop",
"author_name": "Zaiqiao Meng",
"author_login": "mengzaiqiao",
"committed_at": "2022-01-16T06:54:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7d408509c5a1fa4ab6c53786127374c45613a28f",
"body": "Slove the issue when running SGL on GPU.\r\nReason: self.adj_mat is not placed on the same device as ego_embeddings.",
"is_bot": false,
"headline": "Update sgl.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-15T22:24:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7b6b328d2356df63b3fc20688cccf8d764630fe2",
"body": "Add buir; Fix movielen",
"is_bot": false,
"headline": "Merge pull request #419 from TedSIWEILIU/develop",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-05T21:28:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a57b1755c83176c5e38ceb9ed06de2d70af2f0f8",
"body": null,
"is_bot": false,
"headline": "Update movielens.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-05T21:24:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "618835fd472b32307f5ba369e4e2f47af2ba00c8",
"body": null,
"is_bot": false,
"headline": "Update movielens.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-05T21:19:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7cb3426254018803eb44aa1641975533d377dbb6",
"body": null,
"is_bot": false,
"headline": "Update movielens.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-05T21:12:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "900d7ad5839fa1b9ee3b2979f2ac8cfb9893b023",
"body": null,
"is_bot": false,
"headline": "Update amazon.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-05T21:03:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "60143da990bec13b950ba6240d098efd53833aba",
"body": null,
"is_bot": false,
"headline": "Update movielens.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-05T20:43:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "af96ec8720529f07dd4d31ae352917eeb75c27d0",
"body": null,
"is_bot": false,
"headline": "Update movielens.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-05T20:34:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "305b41434e626b77bba938c09c3121c4a03c4800",
"body": null,
"is_bot": false,
"headline": "Create buir.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-05T17:13:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6d944da8e1a86cba60055b9d843c7b3693a17cd5",
"body": null,
"is_bot": false,
"headline": "Create buir_default.json",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-05T17:12:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f22e42fa81b197fd7bac52167851b29015aa9ae5",
"body": "Add the model from \"Bootstrapping User and Item Representations for One-Class Collaborative Filtering\", SIGIR2021",
"is_bot": false,
"headline": "Create train_buir.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-05T17:12:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a526192358974f51592a1b7deb11cb77cae9b59b",
"body": "Add the missing MovieLens 10m dataset",
"is_bot": false,
"headline": "Update movielens.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-05T17:10:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "00f467de29f661f79059819d225a05d364093849",
"body": "Release Version v0.3.3",
"is_bot": false,
"headline": "Merge pull request #418 from beta-team/develop",
"author_name": "Zaiqiao Meng",
"author_login": "mengzaiqiao",
"committed_at": "2022-01-04T13:05:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "77735c27756dcb9b89d3cb69ca972bff5ddb1fe8",
"body": "Add SGL",
"is_bot": false,
"headline": "Merge pull request #417 from TedSIWEILIU/develop",
"author_name": "Zaiqiao Meng",
"author_login": "mengzaiqiao",
"committed_at": "2022-01-04T13:03:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "93abce22c6ecc97c84661a32ddec45932df52f9a",
"body": null,
"is_bot": false,
"headline": "Update train_sgl.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-04T12:58:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1c1d0837441aac24010730c935658e1639e3568b",
"body": null,
"is_bot": false,
"headline": "Update mixgcf.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-04T12:54:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7568c6718e9054e5ef5c31b4bf8f66552c22aa89",
"body": null,
"is_bot": false,
"headline": "Update data_load.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-04T12:49:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "31ac0f5904882c23cc45eaac375e4dd24da362e7",
"body": null,
"is_bot": false,
"headline": "Update mixgcf.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-04T12:48:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "132467a0072528e365e7240624ec60d8e22a9617",
"body": null,
"is_bot": false,
"headline": "Update ultragcn.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-04T12:48:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "24353310a8c9475166998282b933408cd324813a",
"body": null,
"is_bot": false,
"headline": "Update train_engine.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-04T12:47:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f8be7e527c1127ee70c4958fd994f8ece3ef7872",
"body": null,
"is_bot": false,
"headline": "Update train_ultragcn.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-04T12:47:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d66c9168a1864e63e066223d53c7e08b7ad360ad",
"body": null,
"is_bot": false,
"headline": "Update train_mixgcf.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-04T12:46:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "08ffdd69280232b6d17cbc12ac5a5087726e482e",
"body": null,
"is_bot": false,
"headline": "Update train_lightgcn.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-04T12:46:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b3f9f1b170eca3f672dd1d6e1d79a1df327f9864",
"body": null,
"is_bot": false,
"headline": "Update train_sgl.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-04T12:36:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f0466f4d78f294dce0ff77a435171c5b1d51c363",
"body": null,
"is_bot": false,
"headline": "Update sgl.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-04T12:36:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e441389ca91a1b896702d86ef7fdcd0e27aa92c6",
"body": null,
"is_bot": false,
"headline": "Update base_data.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-04T12:35:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "abdad216f79c647515358a01c8c0329cff1a8ffb",
"body": null,
"is_bot": false,
"headline": "Update README.md",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-04T12:15:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a7073a935682f33b46b4af063807506de156a9f1",
"body": null,
"is_bot": false,
"headline": "Update README.md",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-04T12:14:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7b83919808399faaa6147a268feb3fcddd70dbab",
"body": null,
"is_bot": false,
"headline": "Update base_data.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-04T12:11:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "556cb6b7bfb439a949ac29963c7858e1a042844b",
"body": null,
"is_bot": false,
"headline": "Create sgl.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-04T12:09:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f75e9daffb3b7c75428a9cb414ac4b5fbb9aa308",
"body": null,
"is_bot": false,
"headline": "Create train_sgl.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-04T12:08:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4d7504bc67abee4f1208677e8e83b5b189312ed2",
"body": null,
"is_bot": false,
"headline": "Create sgl_default.json",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-04T12:08:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "41d912178d4854f6aa4dde09c77fd50190fb0fc2",
"body": "Fix a typo for the amazon instant video dataset",
"is_bot": false,
"headline": "Update amazon.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2022-01-02T17:03:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "60aa68327f0ee78cd0756d531dc546f57fe5942d",
"body": "Add the UltraGCN model & fix the batch evaluation",
"is_bot": false,
"headline": "Merge pull request #416 from TedSIWEILIU/develop",
"author_name": "Zaiqiao Meng",
"author_login": "mengzaiqiao",
"committed_at": "2021-12-29T21:38:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e2289fca42151b6027a309537a58816ff24184c4",
"body": null,
"is_bot": false,
"headline": "Create train_ultragcn.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-12-29T21:29:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "856b02b6b144ce75582c848830a7ca2462dc4648",
"body": null,
"is_bot": false,
"headline": "Create ultragcn_default.json",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-12-29T21:28:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "720b9021ecee4619b16da2abdbb09fbc8283a5b4",
"body": null,
"is_bot": false,
"headline": "Create ultragcn.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-12-29T21:27:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a4b9e95da99df3b5eab0be5f4ea206d56b90db2a",
"body": "Add the function to produce and store necessary matrix for UltraGCN",
"is_bot": false,
"headline": "Update base_data.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-12-29T21:27:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "87106a09124f6746da36cf747fe7a1eaa4614aa8",
"body": null,
"is_bot": false,
"headline": "Update eval_engine.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-12-29T21:15:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5afb37ca789b1b436db1456693bc220970121404",
"body": "Develop",
"is_bot": false,
"headline": "Merge pull request #15 from beta-team/develop",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-12-29T21:14:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b874f47959bde25c4429d08815a71458784d2e4a",
"body": "Develop",
"is_bot": false,
"headline": "Merge pull request #415 from beta-team/develop",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-10-22T14:40:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2f2538cedc1915f5e74500a0c761e798661193ca",
"body": "Fix NCF relevant files",
"is_bot": false,
"headline": "Merge pull request #414 from TedSIWEILIU/develop",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-10-22T14:02:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cf21858d095752296d1e18b3da05d14fdeed7c78",
"body": "Fix the issue that \"self.data.n_train\" does not exist",
"is_bot": false,
"headline": "Update train_ncf.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-09-25T19:15:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6ff6b01f4ad0a995701804b3bb5d388a63790b75",
"body": "Fix the nonexistent model name",
"is_bot": false,
"headline": "Update ncf_default.json",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-09-25T19:14:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7a6c8127d40b6720e0359167dc4a86beddb161e1",
"body": "Improve code",
"is_bot": false,
"headline": "Merge pull request #413 from TedSIWEILIU/develop",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-09-24T19:25:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6ca33acb06681796d6bbe93fa3a502dbeea93f1c",
"body": null,
"is_bot": false,
"headline": "Update lcfn.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-09-24T19:22:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d1ff3b7775d2a90d73c36dfb13f3645250fce1d0",
"body": null,
"is_bot": false,
"headline": "Update train_lightgcn.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-09-24T19:21:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "97477c26eb04a15e54daddd33e23ce9fc2b1f9e9",
"body": "Update common_util.py",
"is_bot": false,
"headline": "Merge pull request #412 from TedSIWEILIU/develop",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-09-24T14:41:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ce613952dc47b169f0b56dbcbfc6fa5c5f527df9",
"body": "Fix the device/cuda issue",
"is_bot": false,
"headline": "Update mixgcf.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-09-23T20:44:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e37de4c7a39c2b403971ee4ef6e7b5fe31aba9bb",
"body": "Add more mapping",
"is_bot": false,
"headline": "Update data_load.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-09-23T20:42:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "68b4d142d85111d9154923c952bab7ae13821939",
"body": "Fix the \"OMP: Warning #190: Forking a process while a parallel region is active is potentially unsafe.\" issue",
"is_bot": false,
"headline": "Update train_lightgcn.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-09-23T20:40:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "604c71c276a15e6acb2130aec49327e33789d941",
"body": null,
"is_bot": false,
"headline": "Update common_util.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-09-23T13:36:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c14a4836554f998240eff3dd994e094fd56511a5",
"body": "Add MixGCF model",
"is_bot": false,
"headline": "Merge pull request #410 from TedSIWEILIU/develop",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-09-16T21:33:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5a8b047bacd150ddcef63d6473f9b1b215c5e5f5",
"body": null,
"is_bot": false,
"headline": "Update README.md",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-09-16T21:31:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a9697902276ad4466b95712456639a79c2f861d1",
"body": null,
"is_bot": false,
"headline": "Update train_lightgcn.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-09-16T21:25:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ad13c39c208ad811f6d5f5bf7f308c2dccac4ca2",
"body": null,
"is_bot": false,
"headline": "Update base_data.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-09-16T21:24:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5cb041cbb90ffdab6b96d6d028300b5b8ce29572",
"body": null,
"is_bot": false,
"headline": "Create mixgcf.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-09-16T21:23:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bfd4365b66290ecda69293fdc864ba22c84d4cb4",
"body": null,
"is_bot": false,
"headline": "Create mixgcf_default.json",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-09-16T21:23:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2bded0789054e8d459a65a9995ab7f28b5dd1717",
"body": null,
"is_bot": false,
"headline": "Create train_mixgcf.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-09-16T21:22:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "297c61cac2168c758a5827287bc650ecee73ddd8",
"body": "Merge pull request #409 from TedSIWEILIU/develop",
"is_bot": false,
"headline": "Merge pull request #14 from beta-team/develop",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-09-16T21:21:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "36af0fcc98b599419e4f2258070b495fefadae05",
"body": "Fix train engine",
"is_bot": false,
"headline": "Merge pull request #409 from TedSIWEILIU/develop",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-07-03T10:43:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d2641f14d2b0db1a86b4f62c1c1fafdd414f4ed9",
"body": null,
"is_bot": false,
"headline": "Update train_engine.py",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-07-03T10:41:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "db928d9ba1d219e597ba6bc223bff776d54b3d88",
"body": "The original test function failed to reload the best performing model.",
"is_bot": false,
"headline": "Fix train engine.",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-07-03T10:35:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3ddae54d490e351df3505f181477ed210bd01930",
"body": "Develop",
"is_bot": false,
"headline": "Merge pull request #13 from beta-team/develop",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-07-03T10:33:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "be6a5c9307e00cc7bb06cbfd407a637e9d5afbb0",
"body": "Develop",
"is_bot": false,
"headline": "Merge pull request #402 from beta-team/develop",
"author_name": "Zaiqiao Meng",
"author_login": "mengzaiqiao",
"committed_at": "2021-03-18T23:15:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8db18606f5cdb90ad6579ee3a7d4f669c8420673",
"body": "chore: update userKNN and itemKNN",
"is_bot": false,
"headline": "Merge pull request #401 from wangxieric/develop",
"author_name": "siwei",
"author_login": "TedSIWEILIU",
"committed_at": "2021-03-18T00:32:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "149c056e07e18cd4644cbc41e64c8730663cce21",
"body": null,
"is_bot": false,
"headline": "chore: update itemKNN and userKNN",
"author_name": "wangxieric",
"author_login": "wangxieric",
"committed_at": "2021-03-17T14:57:52Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 10,
"commits_last_year": 0,
"latest_release_at": "2022-01-04T13:09:37Z",
"latest_release_tag": "v0.3.3",
"releases_from_tags": false,
"days_since_last_push": 240,
"active_weeks_last_year": 0,
"days_since_latest_release": 1662,
"mean_days_between_releases": 59.7
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 50,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "beta_rec",
"exists": true,
"license": null,
"keywords": [
"pytorch",
"recommender system",
"recommendations"
],
"ecosystem": "pypi",
"matches_repo": true,
"registry_url": "https://pypi.org/project/beta_rec/",
"is_deprecated": false,
"latest_version": "0.3.2",
"repository_url": "https://github.com/beta-team/beta-recsys",
"versions_count": 6,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": 124,
"first_published_at": "2020-09-24T16:23:48.819995Z",
"latest_published_at": "2021-02-28T15:09:44.302423Z",
"latest_version_yanked": null,
"days_since_latest_publish": 1972
}
]
},
"popularity": {
"forks": 33,
"stars": 172,
"watchers": 3,
"fork_history": {
"days": [
{
"date": "2020-03-19",
"count": 1
},
{
"date": "2020-03-24",
"count": 1
},
{
"date": "2020-03-26",
"count": 1
},
{
"date": "2020-04-06",
"count": 1
},
{
"date": "2020-05-22",
"count": 1
},
{
"date": "2020-06-03",
"count": 1
},
{
"date": "2020-07-08",
"count": 1
},
{
"date": "2020-07-29",
"count": 1
},
{
"date": "2020-09-24",
"count": 1
},
{
"date": "2020-09-25",
"count": 1
},
{
"date": "2020-09-27",
"count": 1
},
{
"date": "2020-09-28",
"count": 2
},
{
"date": "2020-11-07",
"count": 1
},
{
"date": "2020-11-17",
"count": 1
},
{
"date": "2020-11-25",
"count": 1
},
{
"date": "2020-12-14",
"count": 1
},
{
"date": "2020-12-21",
"count": 1
},
{
"date": "2020-12-26",
"count": 1
},
{
"date": "2021-02-04",
"count": 1
},
{
"date": "2021-02-09",
"count": 2
},
{
"date": "2021-09-21",
"count": 1
},
{
"date": "2021-10-15",
"count": 1
},
{
"date": "2021-10-22",
"count": 1
},
{
"date": "2022-01-21",
"count": 1
},
{
"date": "2022-02-24",
"count": 1
},
{
"date": "2022-05-26",
"count": 1
},
{
"date": "2022-05-27",
"count": 1
},
{
"date": "2023-10-20",
"count": 1
},
{
"date": "2023-11-06",
"count": 1
},
{
"date": "2024-08-17",
"count": 1
}
],
"complete": true,
"collected": 32,
"total_forks": 33
},
"star_history": null,
"open_issues_and_prs": 23
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"examples",
"notebooks"
],
"has_llms_txt": false,
"has_dockerfile": true,
"has_mcp_signal": false,
"bootstrap_files": [
"Makefile",
"docs/Makefile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [],
"largest_source_bytes": 39242,
"source_files_sampled": 119,
"oversized_source_files": 0,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"requirements.txt",
"setup.cfg",
"setup.py"
],
"advisories": {
"error": null,
"scope": "published_package",
"source": "osv",
"findings": [
{
"name": "ray",
"direct": true,
"version": "1.0.1",
"severity": "critical",
"ecosystem": "pypi",
"cvss_score": 9.8,
"advisory_ids": [
"GHSA-3pww-qvr8-6mhp",
"GHSA-6cxr-8q3m-jwrr",
"GHSA-6wgj-66m2-xxp2",
"GHSA-gx77-xgc2-4888",
"GHSA-h3xg-wv58-5p43",
"GHSA-hhrp-gw25-jr43",
"GHSA-j3mh-qmjj-xp83",
"GHSA-q279-jhrf-cc6v",
"GHSA-q5fh-2hc8-f6rq",
"GHSA-w4rh-fgx7-q63m"
],
"fixed_version": "2.56.0",
"advisory_count": 21,
"oldest_advisory_days": 981
},
{
"name": "py7zr",
"direct": true,
"version": "0.22.0",
"severity": "high",
"ecosystem": "pypi",
"cvss_score": 8,
"advisory_ids": [
"GHSA-gjrg-mpp7-g774",
"GHSA-h4gh-22qq-72r7",
"GHSA-q6rc-2cgv-63h7",
"PYSEC-2026-2972",
"PYSEC-2026-2973",
"PYSEC-2026-2974"
],
"fixed_version": "1.1.3",
"advisory_count": 6,
"oldest_advisory_days": 35
},
{
"name": "idna",
"direct": false,
"version": "2.10.0",
"severity": "high",
"ecosystem": "pypi",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-65pc-fj4g-8rjx",
"GHSA-jjg7-2v4v-x38h",
"PYSEC-2024-60",
"PYSEC-2026-215"
],
"fixed_version": "3.15",
"advisory_count": 4,
"oldest_advisory_days": 834
},
{
"name": "urllib3",
"direct": false,
"version": "1.25.11",
"severity": "high",
"ecosystem": "pypi",
"cvss_score": 8.1,
"advisory_ids": [
"GHSA-2xpw-w6gg-jr37",
"GHSA-34jh-p97f-mpxf",
"GHSA-38jv-5279-wg99",
"GHSA-g4mx-q9vg-27p4",
"GHSA-gm62-xv2j-4w53",
"GHSA-pq67-6m6q-mj2v",
"GHSA-q2q7-5pp4-w6pg",
"GHSA-qccp-gfcp-xxvc",
"GHSA-v845-jxx5-vc9f",
"PYSEC-2021-108"
],
"fixed_version": "2.7.0",
"advisory_count": 18,
"oldest_advisory_days": 1879
},
{
"name": "requests",
"direct": true,
"version": "2.24.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": 1159
},
{
"name": "pandas",
"direct": true,
"version": "1.0.3",
"severity": "unknown",
"ecosystem": "pypi",
"cvss_score": null,
"advisory_ids": [
"PYSEC-2020-73"
],
"fixed_version": "1.0.4",
"advisory_count": 1,
"oldest_advisory_days": 2261
}
],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {
"high": 3,
"unknown": 1,
"critical": 1,
"moderate": 1
},
"advisory_count": 58,
"affected_count": 6,
"assessed_count": 80,
"malicious_count": 0,
"assessed_package": "pypi:beta_rec@0.3.2",
"unassessed_count": 0,
"direct_affected_count": 4
},
"ecosystems": [
"pypi"
],
"dependencies": [],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "aiofiles",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "aiohttp",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "gputil",
"direct": false,
"version": "1.4.0",
"ecosystem": "pypi"
},
{
"name": "mock",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "mock",
"direct": false,
"version": "4.0.1",
"ecosystem": "pypi"
},
{
"name": "munch",
"direct": false,
"version": "2.5.0",
"ecosystem": "pypi"
},
{
"name": "nest-asyncio",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "numpy",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "pandas",
"direct": false,
"version": "1.0.3",
"ecosystem": "pypi"
},
{
"name": "psutil",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "py-cpuinfo",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "py7zr",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "pytest",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "pytest-cov",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "ray",
"direct": false,
"version": "2.8.1",
"ecosystem": "pypi"
},
{
"name": "requests",
"direct": false,
"version": "2.32.0",
"ecosystem": "pypi"
},
{
"name": "rstcheck",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "scikit-learn",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "scipy",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "sphinx-markdown-tables",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "tabulate",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "tensorboardx",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "torch",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "tqdm",
"direct": false,
"version": null,
"ecosystem": "pypi"
}
],
"collected": true,
"truncated": false,
"total_count": 24,
"direct_count": 0,
"indirect_count": 24
}
},
"maintainership": {
"issues": {
"open_prs": 2,
"merged_prs": 281,
"open_issues": 21,
"closed_ratio": 0.832,
"closed_issues": 104,
"closed_unmerged_prs": 33
},
"bus_factor": 2,
"bot_contributors": 1,
"top_contributors": [
{
"type": "User",
"login": "leungyukshing",
"commits": 404,
"avatar_url": "https://avatars.githubusercontent.com/u/29545063?v=4"
},
{
"type": "User",
"login": "mengzaiqiao",
"commits": 370,
"avatar_url": "https://avatars.githubusercontent.com/u/2853469?v=4"
},
{
"type": "User",
"login": "TedSIWEILIU",
"commits": 225,
"avatar_url": "https://avatars.githubusercontent.com/u/36344915?v=4"
},
{
"type": "User",
"login": "wangxieric",
"commits": 51,
"avatar_url": "https://avatars.githubusercontent.com/u/22404559?v=4"
},
{
"type": "User",
"login": "Alva112358",
"commits": 25,
"avatar_url": "https://avatars.githubusercontent.com/u/26009009?v=4"
},
{
"type": "User",
"login": "ChaosCodes",
"commits": 20,
"avatar_url": "https://avatars.githubusercontent.com/u/23294676?v=4"
},
{
"type": "User",
"login": "QiangAIResearcher",
"commits": 18,
"avatar_url": "https://avatars.githubusercontent.com/u/33811673?v=4"
},
{
"type": "User",
"login": "shuqi-mo",
"commits": 17,
"avatar_url": "https://avatars.githubusercontent.com/u/73651831?v=4"
},
{
"type": "User",
"login": "mdimitrov97",
"commits": 10,
"avatar_url": "https://avatars.githubusercontent.com/u/54806818?v=4"
},
{
"type": "User",
"login": "yashonwu",
"commits": 5,
"avatar_url": "https://avatars.githubusercontent.com/u/18651001?v=4"
}
],
"contributors_sampled": 13,
"top_contributor_share": 0.351
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"python_ci.yml"
],
"has_docs_dir": true,
"linter_configs": [],
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 0,
"reason": "branch protection not enabled on development/release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 0,
"reason": "0 out of 12 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": 7,
"reason": "Found 7/9 approved changesets -- score normalized to 7",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 6 contributing companies or organizations",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 10,
"reason": "update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 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": "200f7412135e4599e4a5d0db74ae54d0704432e1",
"ran_at": "2026-07-25T08:43:36Z",
"aggregate_score": 3.8,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-02-21T18:13:18Z",
"oldest_open_prs": [
{
"number": 439,
"created_at": "2025-06-10T08:26:33Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 441,
"created_at": "2025-11-26T19:42:14Z",
"last_comment_at": null,
"last_comment_author": null
}
],
"last_merged_pr_at": "2025-01-19T08:16:48Z",
"ci_last_conclusion": "FAILURE",
"oldest_open_issues": [
{
"number": 249,
"created_at": "2020-08-02T21:51:55Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 250,
"created_at": "2020-08-02T21:53:10Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 300,
"created_at": "2020-10-25T09:20:17Z",
"last_comment_at": "2020-12-22T08:28:32Z",
"last_comment_author": "leungyukshing"
},
{
"number": 304,
"created_at": "2020-10-26T10:34:24Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 322,
"created_at": "2020-11-10T16:41:50Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 342,
"created_at": "2020-11-21T14:12:44Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 362,
"created_at": "2020-12-24T03:09:47Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 376,
"created_at": "2021-01-09T15:04:40Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 377,
"created_at": "2021-01-09T15:05:02Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 381,
"created_at": "2021-01-25T08:54:38Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 390,
"created_at": "2021-02-22T06:41:48Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 392,
"created_at": "2021-02-23T04:40:39Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 400,
"created_at": "2021-03-06T13:13:32Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 404,
"created_at": "2021-03-20T14:39:19Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 405,
"created_at": "2021-03-20T14:45:03Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 407,
"created_at": "2021-04-10T14:16:30Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 408,
"created_at": "2021-04-10T14:17:57Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 411,
"created_at": "2021-09-21T20:23:15Z",
"last_comment_at": "2021-09-22T13:30:27Z",
"last_comment_author": "mengzaiqiao"
},
{
"number": 431,
"created_at": "2023-01-17T16:40:39Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 434,
"created_at": "2023-05-23T21:03:21Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/beta-team/beta-recsys",
"host": "github.com",
"name": "beta-recsys",
"owner": "beta-team"
},
"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": 29,
"inputs": {
"security": 37,
"vitality": 23,
"community": 46,
"governance": 65,
"engineering": 65,
"abandonment_cap": 49,
"abandonment_state": "likely_abandoned",
"abandonment_multiplier": 60,
"weighted_overall_before_abandonment": 48,
"overall_after_abandonment_multiplier": 29
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "critical",
"name": "Vitality",
"value": 23,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "critical",
"name": "Development activity",
"note": null,
"notes": [],
"value": 4,
"inputs": {
"commits_last_year": 0,
"human_commit_share": 0.97,
"days_since_last_push": 240,
"active_weeks_last_year": 0
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 240 days ago",
"points": 3.6,
"status": "partial",
"details": [
{
"code": "push_recency",
"params": {
"days": 240
}
}
],
"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": 10,
"latest_release_tag": "v0.3.3",
"releases_from_tags": false,
"days_since_latest_release": 1662,
"mean_days_between_releases": 59.7
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "10 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 10
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 1662 days ago",
"points": 0,
"status": "missed",
"details": [
{
"code": "release_recency",
"params": {
"days": 1662
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~59.7 days",
"points": 19.8,
"status": "partial",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 59.7
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "moderate",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 60,
"inputs": {
"cap": 49,
"state": "likely_abandoned",
"guards": [],
"signals": [
"issue_rot",
"unfixed_advisory",
"release_stall",
"scorecard_unmaintained",
"broken_ci"
],
"red_flag": true,
"multiplier_pct": 60,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": 2,
"unanswered_open_issues": 18,
"days_since_last_merged_pr": 552,
"days_since_last_human_commit": 552,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "no human commit for 552 days; 5 unmet obligation(s): issues unanswered, a fixed advisory left unapplied, releases stalled, Scorecard reports it unmaintained, CI broken",
"points": 60,
"status": "partial",
"details": [
{
"code": "abandonment_flagged",
"params": {
"days": 552,
"count": 5,
"signals": "issues unanswered, a fixed advisory left unapplied, releases stalled, Scorecard reports it unmaintained, CI broken"
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "at_risk",
"name": "Community & Adoption",
"value": 46,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "moderate",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"forks": 33,
"stars": 172,
"watchers": 3,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "172 stars",
"points": 36.2,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 172
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "33 forks",
"points": 12.5,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 33
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "3 watchers",
"points": 1.7,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 3
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "moderate",
"name": "Community health",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "at_risk",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 35,
"inputs": {
"packages": [
"beta_rec"
],
"dependents": null,
"ecosystems": "pypi",
"total_downloads": null,
"monthly_downloads": 124
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "124 downloads/month across pypi",
"points": 28,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 124,
"ecosystems": "pypi"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "not reported by this ecosystem",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_reported_by_this_ecosystem",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 65,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "moderate",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 63,
"inputs": {
"bus_factor": 2,
"contributors_sampled": 13,
"top_contributor_share": 0.351
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "2 contributor(s) cover half of all commits",
"points": 25.2,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 2
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 35% of commits",
"points": 14.6,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 35
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "13 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 13
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 6 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 84,
"inputs": {
"merged_prs": 281,
"open_issues": 21,
"closed_issues": 104,
"issue_closed_ratio": 0.832,
"closed_unmerged_prs": 33
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "83% of issues closed",
"points": 38.9,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 83
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "281/314 decided PRs merged",
"points": 34.2,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 281,
"decided": 314
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 7/9 approved changesets -- score normalized to 7",
"points": 10.5,
"status": "partial",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "at_risk",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 47,
"inputs": {
"followers": 0,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "beta-team",
"public_repos": 4,
"account_age_days": 2322
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "0 followers of beta-team",
"points": 0,
"status": "missed",
"details": [
{
"code": "owner_followers",
"params": {
"count": 0,
"login": "beta-team"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "4 public repos, account ~6 yr old",
"points": 17.1,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 4
}
},
{
"code": "account_age_years",
"params": {
"years": 6
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "moderate",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 69,
"inputs": {
"packages": [
"beta_rec"
],
"ecosystems": "pypi",
"any_deprecated": false,
"min_days_since_publish": 1972
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on pypi",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "pypi"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 1972 days ago",
"points": 4,
"status": "partial",
"details": [
{
"code": "publish_recency",
"params": {
"days": 1972
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "6 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 6
}
}
],
"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": 65,
"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 12 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": 90,
"inputs": {
"topics": [],
"has_wiki": true,
"homepage": "https://beta-recsys.readthedocs.io/en/latest/",
"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": "https://beta-recsys.readthedocs.io/en/latest/",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "at_risk",
"name": "Security",
"value": 37,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Packaging, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"packaging",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 38,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 16,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 2,
"scorecard_aggregate": 3.8
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection not enabled on development/release branches",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "0 out of 12 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 7/9 approved changesets -- score normalized to 7",
"points": 5.2,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 6 contributing companies or organizations",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "update tool detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "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": "at_risk",
"name": "Dependency advisories",
"note": "Matched the pypi:beta_rec@0.3.2 runtime dependency closure — what installing the published package pulls in — 80 packages. Reachability is not analyzed.",
"notes": [
{
"code": "advisories_scope_published",
"params": {
"package": "pypi:beta_rec@0.3.2",
"assessed": 80
}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 34,
"inputs": {
"source": "osv",
"advisories": 58,
"affected_packages": 6,
"assessed_packages": 80,
"unassessed_packages": 0,
"affected_by_severity": "critical 1, high 3, moderate 1, unknown 1",
"direct_affected_packages": 4
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "4 affected: ray 1.0.1 (critical 9.8), py7zr 0.22.0 (high 8.0), requests 2.24.0 (moderate 6.1), +1 more",
"points": 5.3,
"status": "partial",
"details": [
{
"code": "advisories_affected",
"params": {
"count": 4,
"packages": "ray 1.0.1 (critical 9.8), py7zr 0.22.0 (high 8.0), requests 2.24.0 (moderate 6.1)"
}
},
{
"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": "2 affected: idna 2.10.0 (high 7.5), urllib3 1.25.11 (high 8.1)",
"points": 7.4,
"status": "partial",
"details": [
{
"code": "advisories_affected",
"params": {
"count": 2,
"packages": "idna 2.10.0 (high 7.5), urllib3 1.25.11 (high 8.1)"
}
}
],
"max_points": 25
},
{
"key": "no_advisories_left_outstanding",
"name": "No advisories left outstanding",
"detail": "5 advisory-carrying package(s) unaddressed past 90 days; oldest published 2261 days ago",
"points": 21.5,
"status": "partial",
"details": [
{
"code": "advisories_stale",
"params": {
"days": 90,
"count": 5,
"oldest": 2261
}
}
],
"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": 80,
"malicious_packages": 0,
"direct_malicious_packages": 0,
"withdrawn_malicious_packages": 0,
"installable_malicious_packages": 0
},
"components": [
{
"key": "no_dependency_reported_as_a_malicious_package",
"name": "No dependency reported as a malicious package",
"detail": "no dependency is reported as a malicious package",
"points": 100,
"status": "met",
"details": [
{
"code": "no_malicious_dependencies",
"params": {}
}
],
"max_points": 100
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "excellent",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 7
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "at_risk",
"name": "AI Readiness",
"value": 43,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "critical",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 20,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.381,
"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": "37 of 97 human commits state their intent (structured subject or explanatory body)",
"points": 20.3,
"status": "partial",
"details": [
{
"code": "legible_history",
"params": {
"legible": 37,
"sampled": 97
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "moderate",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 58,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [],
"has_dockerfile": true,
"typed_language": false,
"bootstrap_files": [
"Makefile",
"docs/Makefile"
],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [],
"agent_commit_share": 0,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0.03
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "Makefile, docs/Makefile",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Makefile, docs/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": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "Dockerfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Dockerfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "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": "3 of the last 100 commits are automated dependency updates",
"points": 8,
"status": "met",
"details": [
{
"code": "dependency_bot_commits",
"params": {
"count": 3,
"sampled": 100
}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "moderate",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 55,
"inputs": {
"primary_language": "Python",
"largest_source_bytes": 39242,
"source_files_sampled": 119,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Python without a type-check config",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_typecheck_config_language",
"params": {
"language": "Python"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/119 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 119,
"oversized": 0
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "at_risk",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"example_dirs": [
"examples",
"notebooks"
],
"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, notebooks",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "examples, notebooks"
}
}
],
"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"
],
"report_type": "repository",
"generated_at": "2026-07-25T08:43:56.260038Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/b/beta-team/beta-recsys.svg",
"full_name": "beta-team/beta-recsys",
"license_state": "standard",
"license_spdx": "MIT"
}