Звіт у форматі JSON машиночитний
{
"data": {
"repo": {
"topics": [
"machine-learning",
"prevalence-estimation",
"python",
"quantification"
],
"is_fork": false,
"size_kb": 114551,
"has_wiki": false,
"homepage": "https://luizfernandolj.github.io/mlquantify/",
"languages": {
"Cython": 4327,
"Python": 812730
},
"pushed_at": "2026-07-02T22:29:50Z",
"created_at": "2024-06-27T14:08:48Z",
"owner_type": "User",
"updated_at": "2026-06-26T16:36:06Z",
"description": "A Python Quantification Library",
"is_archived": false,
"is_disabled": false,
"license_spdx": "BSD-3-Clause",
"default_branch": "master",
"license_spdx_raw": "BSD-3-Clause",
"primary_language": "Python",
"significant_languages": [
"Python"
]
},
"owner": {
"blog": null,
"name": "Luiz Fernando",
"type": "User",
"login": "luizfernandolj",
"company": "Unioeste",
"location": "Foz do Iguaçu PR",
"followers": 7,
"avatar_url": "https://avatars.githubusercontent.com/u/82833313?v=4",
"created_at": "2021-04-19T16:53:31Z",
"is_verified": null,
"public_repos": 20,
"account_age_days": 1922
},
"license": {
"state": "standard",
"spdx_id": "BSD-3-Clause",
"raw_spdx": "BSD-3-Clause",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.5.1",
"kind": "patch",
"published_at": "2026-06-26T16:41:14Z"
},
{
"tag": "v0.5.0",
"kind": "minor",
"published_at": "2026-06-25T20:48:15Z"
},
{
"tag": "v0.4.1",
"kind": "patch",
"published_at": "2026-06-16T15:27:02Z"
},
{
"tag": "v0.4.0",
"kind": "minor",
"published_at": "2026-06-15T21:15:29Z"
},
{
"tag": "v0.3.1",
"kind": "patch",
"published_at": "2026-05-27T22:16:00Z"
},
{
"tag": "v0.3.0",
"kind": "minor",
"published_at": "2026-05-25T18:09:04Z"
},
{
"tag": "v0.2.1",
"kind": "patch",
"published_at": "2026-05-04T19:14:18Z"
},
{
"tag": "v0.2.0",
"kind": "minor",
"published_at": "2026-02-09T21:45:49Z"
},
{
"tag": "v0.1.30",
"kind": "patch",
"published_at": "2026-02-06T13:52:25Z"
},
{
"tag": "v0.1.29",
"kind": "patch",
"published_at": "2026-02-06T13:49:59Z"
},
{
"tag": "v0.1.28",
"kind": "patch",
"published_at": "2026-02-05T20:59:11Z"
},
{
"tag": "v0.1.27",
"kind": "patch",
"published_at": "2026-02-05T18:45:32Z"
},
{
"tag": "v0.1.26",
"kind": "patch",
"published_at": "2026-02-04T16:58:01Z"
},
{
"tag": "v0.1.25",
"kind": "patch",
"published_at": "2026-02-03T20:51:27Z"
},
{
"tag": "v0.1.24",
"kind": "patch",
"published_at": "2026-02-03T20:14:11Z"
},
{
"tag": "v0.1.23",
"kind": "patch",
"published_at": "2026-02-02T20:00:56Z"
},
{
"tag": "v0.1.22",
"kind": "patch",
"published_at": "2026-02-02T19:13:19Z"
},
{
"tag": "v0.1.21",
"kind": "patch",
"published_at": "2026-02-02T19:11:01Z"
},
{
"tag": "v0.1.20",
"kind": "patch",
"published_at": "2025-12-15T16:34:33Z"
},
{
"tag": "v0.1.19",
"kind": "patch",
"published_at": "2025-12-11T17:46:24Z"
},
{
"tag": "v0.1.18",
"kind": "patch",
"published_at": "2025-12-08T20:49:51Z"
},
{
"tag": "v0.1.17",
"kind": "patch",
"published_at": "2025-12-08T20:40:47Z"
},
{
"tag": "v0.1.16",
"kind": "patch",
"published_at": "2025-12-08T19:28:11Z"
},
{
"tag": "v0.1.15",
"kind": "patch",
"published_at": "2025-12-08T19:09:38Z"
},
{
"tag": "v0.1.14",
"kind": "patch",
"published_at": "2025-12-08T18:39:56Z"
},
{
"tag": "v0.1.13",
"kind": "patch",
"published_at": "2025-12-02T16:46:54Z"
},
{
"tag": "v0.1.12",
"kind": "patch",
"published_at": "2025-12-02T15:58:31Z"
},
{
"tag": "v0.1.11",
"kind": "patch",
"published_at": "2025-11-21T21:11:46Z"
},
{
"tag": "v0.1.10",
"kind": "patch",
"published_at": "2025-11-21T17:50:12Z"
},
{
"tag": "v0.1.9",
"kind": "patch",
"published_at": "2025-11-10T22:20:33Z"
},
{
"tag": "v0.1.8",
"kind": "patch",
"published_at": "2025-10-20T16:19:45Z"
},
{
"tag": "v0.1.7",
"kind": "patch",
"published_at": "2025-08-24T01:51:24Z"
},
{
"tag": "v0.1.6",
"kind": "patch",
"published_at": "2025-08-22T17:53:49Z"
},
{
"tag": "v0.1.5",
"kind": "patch",
"published_at": "2025-08-22T17:18:19Z"
},
{
"tag": "v0.1.4",
"kind": "patch",
"published_at": "2025-08-22T15:59:00Z"
},
{
"tag": "v0.1.3",
"kind": "patch",
"published_at": "2025-06-18T18:11:43Z"
},
{
"tag": "v0.1.2",
"kind": "patch",
"published_at": "2025-04-10T15:32:58Z"
},
{
"tag": "v0.1.1",
"kind": "patch",
"published_at": "2025-04-04T16:22:31Z"
},
{
"tag": "v0.1.0",
"kind": "minor",
"published_at": "2025-02-07T20:58:58Z"
},
{
"tag": "v0.0.11.3",
"kind": "other",
"published_at": "2024-08-15T13:59:13Z"
}
],
"recent_commits": [
{
"oid": "ac6173551f6eae67d4ff8568f276473fe34cd287",
"body": "…ndex page with better color theme",
"is_bot": false,
"headline": "updated README with new example, fix verbose for apply_protocol and i…",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-26T16:35:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "24a8a85e9a2c8b08a9041d8281b9fb7aed72e8e1",
"body": null,
"is_bot": false,
"headline": "fix CI tests not installing viz for optional matplotlib",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-25T20:41:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0f8f62e459bcf38949e26cfe75d95e344b1145c6",
"body": "…amples",
"is_bot": false,
"headline": "add classifier calibration along with respective documentation and ex…",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-25T20:30:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cf7e91cc5efac3a6bb87e6ef4f41d9425d79df9b",
"body": null,
"is_bot": false,
"headline": "Merge branch 'master' into mlquantify-Refactoring",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-25T18:27:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "11dc94b892b638f60475ceee97611d41a9026191",
"body": null,
"is_bot": false,
"headline": "fix CHANGELOG pointing to wrong version",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-25T15:00:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "104bfa807586d5075c003ba907d40c21ed7074ec",
"body": null,
"is_bot": false,
"headline": "fix breaking changes and unused imports and duplicated files",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-25T14:54:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5dc46f7282e9762dae2001e1c91983843ba83787",
"body": null,
"is_bot": false,
"headline": "add documentations for datasets and fix fetch tests",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-23T21:02:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6df00c03e363dbe7361e74fc83e21ffbf0d9e753",
"body": null,
"is_bot": false,
"headline": "add dataset fetch for quantification along with api reference",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-23T19:06:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9cb6de13737e82b96cdd1b2aadc79035d14de281",
"body": null,
"is_bot": false,
"headline": "add sunthetic datasets to user guide page",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-18T19:18:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a4c6f7176defda531567fb2967b7d9f176de19ea",
"body": null,
"is_bot": false,
"headline": "add 3 class visualization for synthetic shift types examples",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-18T18:23:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4de29cad44823d488d2f0f9eb4bccc81eaf0bbc7",
"body": "…ncept shift, stacking, return_boundary) with synthetic-data example gallery and homepage card",
"is_bot": false,
"headline": "feat(datasets): add make_quantification generator (prior/covariate/co…",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-18T16:10:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "705f4929dc78ea73044c813e40d06dcf95a15048",
"body": null,
"is_bot": false,
"headline": "add examples and homepage modules visualizations",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-17T21:51:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b39eea3965188fd148ac35066cc8daca3e934af0",
"body": null,
"is_bot": false,
"headline": "add CHANGELOG link to README.md",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-16T19:57:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "85cd6dc4b7ca69c336238bd4ec5c05463680df29",
"body": null,
"is_bot": false,
"headline": "add python versions and unit test badges to README.md",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-16T19:22:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0c97febae3efded4c865dd4250850787ca96c09e",
"body": null,
"is_bot": false,
"headline": "add dev banner for not stable version",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-16T19:05:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "372816443b5cef2b8bd5ec3f7213bcb5ec818b5d",
"body": "…ion plots",
"is_bot": false,
"headline": "feat(visualization): add sklearn-style Display module for quantificat…",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-16T18:44:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "da5f122fbadbb3b184c8472a6d811d956868670c",
"body": null,
"is_bot": false,
"headline": "edit publish pypl workflow",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-16T15:25:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f643e515e8252f198a565a067b7f97491886bb33",
"body": null,
"is_bot": false,
"headline": "add CODE_OF_CONDUCT file from template",
"author_name": "Luiz Fernando",
"author_login": "luizfernandolj",
"committed_at": "2026-06-16T15:00:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2c6c5692dd690f8be3f75759edb063229c5aa4a6",
"body": "…_version__, add CITATION/CONTRIBUTING/CODE_OF_CONDUCT",
"is_bot": false,
"headline": "chore: prep for publication — fix packaging metadata + URLs, expose _…",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-16T14:39:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "91a96cce4068c93521bcc12c710f4454994ddcbe",
"body": null,
"is_bot": false,
"headline": "set index page to stable version",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-16T13:24:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ce426ae51aa18e25301ed47baf152556f592042b",
"body": "…enBLAS build failure)",
"is_bot": false,
"headline": "Verify wheel kernel by content inspection, not import (fixes cp311 Op…",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-15T21:42:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7db1e251545d81fc5423cd580108e8fa702821ce",
"body": null,
"is_bot": false,
"headline": "Fix CI: py3.9 import for other files",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-15T21:10:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a3fa9f454f19727df00b2f292dc3f6da8a60cf7e",
"body": null,
"is_bot": false,
"headline": "Fix CI: py3.9 import, doctest flakiness, and dev version build",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-15T20:46:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9817d678a98e58934006ff4a756ca9462a3ddf42",
"body": null,
"is_bot": false,
"headline": "remove .vscode from repository",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-15T20:11:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4ae79a0afb4f6c93bf68dbc068b5205faf81dabd",
"body": null,
"is_bot": false,
"headline": "remove .vscode from repository",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-15T20:11:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "896495a56d55868623c29639e6d78cf8405ce788",
"body": "…d code",
"is_bot": false,
"headline": "GridSearchQ instance API + best_*_ attrs; green doctests/CI; drop dea…",
"author_name": "luiz",
"author_login": "luizfernandolj",
"committed_at": "2026-06-15T02:46:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "934644b303a01e90ba69c5a41612683b19578d6c",
"body": "…d code",
"is_bot": false,
"headline": "GridSearchQ instance API + best_*_ attrs; green doctests/CI; drop dea…",
"author_name": "luiz",
"author_login": "luizfernandolj",
"committed_at": "2026-06-15T02:46:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "14d6e08e498936a77b6f4954d0c6a075b11fe8f4",
"body": null,
"is_bot": false,
"headline": "Add APP strategy param + classes arg on aggregate; fix multiclass CC",
"author_name": "luiz",
"author_login": "luizfernandolj",
"committed_at": "2026-06-14T14:44:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1cba61884ce44cfb7663150225cf6509b018a4a4",
"body": null,
"is_bot": false,
"headline": "Add APP strategy param + classes arg on aggregate; fix multiclass CC",
"author_name": "luiz",
"author_login": "luizfernandolj",
"committed_at": "2026-06-14T14:44:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "556e1b264af8e310993e854216c1849341112a52",
"body": "…ildwheel, v0.4.0 changelog, cython/representation docs",
"is_bot": false,
"headline": "rename cython kernel to _histogram_sweep, add no-sweep warning + cibu…",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-12T22:16:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "093a039deac49a804dd28b6a6be31c27fdd3266b",
"body": "…ildwheel, v0.4.0 changelog, cython/representation docs",
"is_bot": false,
"headline": "rename cython kernel to _histogram_sweep, add no-sweep warning + cibu…",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-12T22:16:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ee18fbb1e671b666a9770f114fa49a95103e6504",
"body": null,
"is_bot": false,
"headline": "fix un-nested documentation",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-12T18:15:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "606c53b2794fc65e872ca6a69e39540e7b7d276f",
"body": null,
"is_bot": false,
"headline": "fix un-nested documentation",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-12T18:15:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "23e2ef788431e018e824c09d5db6e67e79937885",
"body": "… cache, multiclass strategy registry, docs + normalize_prevalence fix",
"is_bot": false,
"headline": "cython matching kernel, vectorised threshold/median-sweep, gridsearch…",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-12T17:27:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b6ecb3cf82b0817231b11f86a0584e1a37ffc59f",
"body": "… cache, multiclass strategy registry, docs + normalize_prevalence fix",
"is_bot": false,
"headline": "cython matching kernel, vectorised threshold/median-sweep, gridsearch…",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-12T17:27:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4d1e3441323e8b513709dada70d65850e48e4558",
"body": null,
"is_bot": false,
"headline": "fix documentation for apply_protocol and add cython plan implementation",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-12T05:29:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2a2a5f9fa1ab10ec3971241bd41ce3189425174b",
"body": null,
"is_bot": false,
"headline": "fix documentation for apply_protocol and add cython plan implementation",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-12T05:29:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a4524cda764a25e865dec080cff41373748c53d9",
"body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "add apply_protocol for easy protocol-based quantifier evaluation",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-12T05:14:30Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "1549f7e24d7db1b74ff05c848df1b586e24903d9",
"body": null,
"is_bot": false,
"headline": "add apply_protocol for easy protocol-based quantifier evaluation",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-12T05:14:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "22b83c72d0ac05ec88a5ea6649e672a41188062d",
"body": "…ation plots, fix MLPE to its trivial baseline",
"is_bot": false,
"headline": "standardize docstrings + user guide across all modules, add represent…",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-12T04:56:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "acf575532eaaf00eef054e9d34fb70cde3f3a349",
"body": null,
"is_bot": false,
"headline": "add versioning",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-11T18:39:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2bf521cc4d159c29fb6c6a8704c63a42a4fe1ff1",
"body": null,
"is_bot": false,
"headline": "update README for new version v0.3.1",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-11T18:28:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cf704991ea453346ab3c7fe1e7af58ba82c4b7fd",
"body": "…d examples",
"is_bot": false,
"headline": "new documentation for user guide and some other classes with plots an…",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-06-09T22:38:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "99c2d5ea191f69ce24cf850fe2ccafc281dba210",
"body": null,
"is_bot": false,
"headline": "fix icon for website",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-05-28T17:59:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cec2a0c9ddbae4ae4da00cddd286b0b17ac6967b",
"body": null,
"is_bot": false,
"headline": "fix title and naming for index.html for google search",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-05-28T17:33:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "32360a37c0282a4356ceb0f40514f1698689a99f",
"body": "…on parameters for threshold adjustment, add ACC class with crisp predictions and fix multiclass with estimator_fitted=True",
"is_bot": false,
"headline": "add laplace smoothing for HistogramRepresentation, add cross validati…",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-05-27T22:14:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fa1347f689f04bc58fe673c8e8b75471640ce649",
"body": null,
"is_bot": false,
"headline": "add CHANGELOG for 0.3.0 version",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-05-25T18:44:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ac8aa422bf03e4d725e7ce81058e0e157ac9b540",
"body": null,
"is_bot": false,
"headline": "fix warnings and import of quanet for docs",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-05-25T17:48:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4c522498eebede27f7487ff114d5653b25a1b4a0",
"body": "…adjustments)",
"is_bot": false,
"headline": "add docs and user guide for the new structure (need some referencial …",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-05-25T17:38:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9c574a55db788f04c23f24e3ea901ac4cb9fff24",
"body": null,
"is_bot": false,
"headline": "writing documentation for the new structure 2",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-05-25T13:33:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5538314201d158dfc1685ae742b0c04ac093bfe2",
"body": null,
"is_bot": false,
"headline": "writing documentation for the new structure",
"author_name": "luiz",
"author_login": "luizfernandolj",
"committed_at": "2026-05-25T04:51:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ba15c776b132a7ee912beca2c58c19df57539a6e",
"body": null,
"is_bot": false,
"headline": "changes of learner to estimator within all library",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-05-22T21:23:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "adc9a1074bc668b83a1df39f3840f84a7b0332b4",
"body": null,
"is_bot": false,
"headline": "add comparision between quapy and qunfold for equivalent results",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-05-21T13:16:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3f074c855832c899f418b7898683b43f6b1af59a",
"body": "- Introduce new losses, representations, and energy distance matching\n- Update quantifiers to use the new modular structure\n- Expand tests for losses, solvers, methods, and representations",
"is_bot": false,
"headline": "Add modular losses and representations across the library",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-05-19T21:59:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "65048dd5d648ae86d6ced9ecfbc4bb84bc0c55c3",
"body": null,
"is_bot": false,
"headline": "add new structure for new representation and solvers modules",
"author_name": "luiz",
"author_login": "luizfernandolj",
"committed_at": "2026-05-18T01:02:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8971c97959075da22a63155e8ef04341107dfcee",
"body": null,
"is_bot": false,
"headline": "start implementation of qunfold methods and some refacgoring",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-05-15T21:49:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "452e1d12cb42c04b91e69c6d33d25691c6de4e53",
"body": "…o accept additional parameters and improve predict method for better handling of input data\n\nCo-authored-by: Copilot <copilot@github.com>",
"is_bot": false,
"headline": "refactor of ComposeQuantifier in compose module: enhance fit method t…",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-05-04T19:03:34Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "baea61fc158854619aa774ce24f0e88fc060cbfc",
"body": "…he qunfold package with associated tests",
"is_bot": false,
"headline": "refactor: reorganize code structure and add compose module wrapping t…",
"author_name": "luiz",
"author_login": "luizfernandolj",
"committed_at": "2026-05-03T19:57:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7d2f13c3e45ce1075cc85f388cf263fb09aaf2b8",
"body": null,
"is_bot": false,
"headline": "removed test file",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-25T20:49:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a726ec16ca347ecbc965e594f2da3280102f1e9b",
"body": null,
"is_bot": false,
"headline": "add use of abstention library for calibrating scores in EMQ",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-25T19:45:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f371cab7697d8aa18bdbbb2eff7e6ffb441fe5f6",
"body": null,
"is_bot": false,
"headline": "add calibration for test scores in EMQ",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-25T15:51:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dedc44dc85af6bc0d9df0d58a4eb5eec02b74960",
"body": null,
"is_bot": false,
"headline": "bugfix with unit tests across all methods",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-11T18:42:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e5b81615b51c098b433453afea9117e84f986bf0",
"body": null,
"is_bot": false,
"headline": "remade new tests",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-11T15:43:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "067421093ff2a92fc22b25137b4a8c7fb6e404e1",
"body": null,
"is_bot": false,
"headline": "add folder for unit testing again",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-09T21:43:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4c7e6c2e944a3835e858e247f8c8d7d9b6ef1ec9",
"body": null,
"is_bot": false,
"headline": "removed config module and put into mlquantify",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-09T21:22:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "75232fd48400d380e1583a136bcb42c424757cd2",
"body": null,
"is_bot": false,
"headline": "add config module for globat configuration in mlquantify",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-09T21:17:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d5a60a4f45cbd6a52a187989ce4210a24422804c",
"body": null,
"is_bot": false,
"headline": "Merge remote-tracking branch 'origin/mlquantify-Refactoring'",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-09T20:59:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7672a4046164a3025f1eec20cc33990d846a844c",
"body": null,
"is_bot": false,
"headline": "add new rule for gitattributes",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-09T20:55:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "360721984c0afc01a8f8900a4fe3c7d1b5d830a0",
"body": null,
"is_bot": false,
"headline": "add markdown explaining tests cases",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-09T20:54:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "110089696e64a187c6177169b32d038cc1c22b59",
"body": null,
"is_bot": false,
"headline": "add gitattributes",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-09T20:48:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a53a18b30e1881f9f5e90498379934b5905062a5",
"body": null,
"is_bot": false,
"headline": "add gitattributes for not merging unit tests",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-09T20:46:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "217bd6c76ef943a3fa0f2592b7750d264570d3ee",
"body": null,
"is_bot": false,
"headline": "add pytest for mlquantify unit test",
"author_name": "luiz",
"author_login": "luizfernandolj",
"committed_at": "2026-02-09T03:32:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6b95064702ceda78e9fdf07cf30a7654a84eba20",
"body": null,
"is_bot": false,
"headline": "add new folder for unit testing",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-06T21:53:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6d04ed1b2281c85d2b3b09368f434be392dbde36",
"body": null,
"is_bot": false,
"headline": "add global configuratino and multiclass parallel functionality",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-06T21:15:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2bdc1ab04969e8eb84ae2ba2cc19d952ef66bfbc",
"body": null,
"is_bot": false,
"headline": "add getting started page for documentation",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-06T15:03:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3e0b185d3e66b0f2ab6c5b6df7611e5c28d5565e",
"body": null,
"is_bot": false,
"headline": "fix return values for function optimize on simplex",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-06T13:51:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "81c8be6be088250d8b0cc8b9c13e1e09e3395f4b",
"body": null,
"is_bot": false,
"headline": "fix return function for optimize on simplex",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-06T13:48:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "eef298c71a18004a46359e84a2b0a0747d45a63b",
"body": null,
"is_bot": false,
"headline": "fix import missing in EMQ",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-05T20:58:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dd0fdb02d27d9bbacaee6c58f0cb0f258d83baaa",
"body": null,
"is_bot": false,
"headline": "add new meta properties for documentation",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-05T20:29:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1a80ff8fd8b799f21ba31aac6a5b5d8fb1b5e069",
"body": "…nf.py",
"is_bot": false,
"headline": "removed build files for documentation and extended html context in co…",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-05T20:24:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "502ad79230d962c9ac91373d7d22d598ed2282a2",
"body": null,
"is_bot": false,
"headline": "add new config yml file for Jekyll",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-05T20:06:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8f40f16a06a1722edd6142a9fce56054429aea13",
"body": null,
"is_bot": false,
"headline": "add new style for home page and color pallete",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-05T19:58:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b810baf46d0022bc02e3d2a7b57cdf2f1a011c59",
"body": null,
"is_bot": false,
"headline": "fix cross validation in aggregative methods and AC and PAC functionality",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-05T18:42:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "de6534b581e4f71bc54e68f2bfc0ef44e9f5451c",
"body": "…ibrary",
"is_bot": false,
"headline": "add new page for user guide with description for all methods in the l…",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-04T22:03:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c68dd0276148367aab84df302b5d8f3ad7712b36",
"body": null,
"is_bot": false,
"headline": "fix KDE code with scores generation",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-04T16:57:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "84c250f2a40659dff6e572dccb3927f1b86e5493",
"body": null,
"is_bot": false,
"headline": "fix mathematical formulations for confidence module",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-03T20:58:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0487de5466da23c42f5f25a13005b280c53457f4",
"body": null,
"is_bot": false,
"headline": "fix confidence ellipse simplex documentation",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-03T20:47:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "933562e56c13f7a855a2aacbd6845dbf9a0ac9bb",
"body": null,
"is_bot": false,
"headline": "fix wrong validation for prevalences",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-03T20:31:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ae144859d4da9f2866821ea61468bc43c7aa11c0",
"body": null,
"is_bot": false,
"headline": "fix Matrix adjustment methods",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-03T20:13:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cdceb268ad865e620b4ea2d7f56e321675467246",
"body": null,
"is_bot": false,
"headline": "fix confidence module documentation",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-03T20:08:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0277c2d831ea26c9a29977e0166179e02be12478",
"body": null,
"is_bot": false,
"headline": "fix source link for api documentation",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-03T19:57:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5c791f4f141782122d64608cc628eb128efc46fa",
"body": null,
"is_bot": false,
"headline": "fix EMQ documentation with mathematical formulations",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-03T19:47:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4624a6919c901f3f013e6cfd188a6b89496ba7f1",
"body": null,
"is_bot": false,
"headline": "fix module hook for api documentation, for source button",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-03T19:36:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "48ba437148a883a31934427e575598f8461c92c9",
"body": null,
"is_bot": false,
"headline": "fix FM and CDE math documentation",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-03T19:26:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a23863288ec43e553f43fd36ae63f9f37e114689",
"body": null,
"is_bot": false,
"headline": "fix CC reference documentation",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-03T19:21:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cd2739453c7bab400ca876a088a996d020b7d399",
"body": null,
"is_bot": false,
"headline": "fix docs for api documentation",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-03T19:16:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f67693a85d11416d4fd3fceecf015fc6a3af409a",
"body": null,
"is_bot": false,
"headline": "add new tab for user guide in aggregative quantification",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-03T19:08:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1570de51bf46c8588c317b59cd0b18275b3447b0",
"body": null,
"is_bot": false,
"headline": "adjustment on documentation of adjust counting methods",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-03T18:55:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c959247fc136d4d142afcea13c83e524a7b34445",
"body": null,
"is_bot": false,
"headline": "fix FM prevalence adjustment edge case",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-03T18:28:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2170e6b540037aa5689b06dc8e989d266e84041d",
"body": null,
"is_bot": false,
"headline": "fix Methods names for api reference",
"author_name": "luizfernandolj",
"author_login": "luizfernandolj",
"committed_at": "2026-02-03T16:59:22Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 40,
"commits_last_year": 251,
"latest_release_at": "2026-06-26T16:41:14Z",
"latest_release_tag": "v0.5.1",
"releases_from_tags": false,
"days_since_last_push": 22,
"active_weeks_last_year": 22,
"days_since_latest_release": 28,
"mean_days_between_releases": 15.6
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 71,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "mlquantify",
"exists": true,
"license": "BSD-3-Clause",
"keywords": [
"python",
"machine learning",
"quantification",
"quantify",
"Development Status :: 4 - Beta",
"Intended Audience :: Science/Research",
"Operating System :: MacOS :: MacOS X",
"Operating System :: Microsoft :: Windows",
"Operating System :: Unix",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.9",
"Topic :: Scientific/Engineering :: Artificial Intelligence"
],
"ecosystem": "pypi",
"matches_repo": true,
"registry_url": "https://pypi.org/project/mlquantify/",
"is_deprecated": false,
"latest_version": "0.5.1",
"repository_url": "https://github.com/luizfernandolj/mlquantify",
"versions_count": 51,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": 2674,
"first_published_at": "2024-08-13T17:47:40.982986Z",
"latest_published_at": "2026-06-26T16:52:11.896460Z",
"latest_version_yanked": null,
"days_since_latest_publish": 28
}
]
},
"popularity": {
"forks": 1,
"stars": 10,
"watchers": 1,
"fork_history": {
"days": [
{
"date": "2025-09-10",
"count": 1
}
],
"complete": true,
"collected": 1,
"total_forks": 1
},
"star_history": null,
"open_issues_and_prs": 0
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"examples"
],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [
"docs/Makefile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [],
"largest_source_bytes": 51515,
"source_files_sampled": 133,
"oversized_source_files": 0,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"pyproject.toml",
"setup.py"
],
"advisories": {
"error": null,
"scope": "published_package",
"source": "osv",
"findings": [],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 10,
"malicious_count": 0,
"assessed_package": "pypi:mlquantify@0.5.1",
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"pypi"
],
"dependencies": [
{
"name": "scikit-learn",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=1.1"
},
{
"name": "numpy",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=1.23"
},
{
"name": "scipy",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=1.8"
},
{
"name": "joblib",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=1.1"
},
{
"name": "tqdm",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=4.60"
},
{
"name": "pandas",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=1.4"
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "joblib",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "numpy",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "pandas",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "scikit-learn",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "scipy",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "tqdm",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "cython",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "matplotlib",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "setuptools",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "torch",
"direct": false,
"version": null,
"ecosystem": "pypi"
}
],
"collected": true,
"truncated": false,
"total_count": 10,
"direct_count": 6,
"indirect_count": 4
}
},
"maintainership": {
"issues": {
"open_prs": 0,
"merged_prs": 1,
"open_issues": 0,
"closed_ratio": null,
"closed_issues": 0,
"closed_unmerged_prs": 0
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "luizfernandolj",
"commits": 365,
"avatar_url": "https://avatars.githubusercontent.com/u/82833313?v=4"
},
{
"type": "User",
"login": "Bachega",
"commits": 4,
"avatar_url": "https://avatars.githubusercontent.com/u/58402366?v=4"
}
],
"contributors_sampled": 2,
"top_contributor_share": 0.989
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"deploy-docs.yml",
"python-publish.yml",
"tests.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": null,
"reason": "no pull request found",
"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/30 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 3,
"reason": "project has 1 contributing companies or organizations -- score normalized to 3",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": 10,
"reason": "packaging workflow 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": "no SAST tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 10,
"reason": "0 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "ac6173551f6eae67d4ff8568f276473fe34cd287",
"ran_at": "2026-07-25T14:08:52Z",
"aggregate_score": 4.3,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-17T17:47:22Z",
"oldest_open_prs": [],
"last_merged_pr_at": "2025-08-22T14:04:10Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/luizfernandolj/mlquantify",
"host": "github.com",
"name": "mlquantify",
"owner": "luizfernandolj"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 63,
"inputs": {
"security": 54,
"vitality": 83,
"community": 50,
"governance": 54,
"engineering": 72
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 83,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "good",
"name": "Development activity",
"note": null,
"notes": [],
"value": 72,
"inputs": {
"commits_last_year": 251,
"human_commit_share": 1,
"days_since_last_push": 22,
"active_weeks_last_year": 22
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 22 days ago",
"points": 28.8,
"status": "partial",
"details": [
{
"code": "push_recency",
"params": {
"days": 22
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "22/52 weeks with commits",
"points": 15.2,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 22
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "251 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 251
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": "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": 100,
"inputs": {
"releases_count": 40,
"latest_release_tag": "v0.5.1",
"releases_from_tags": false,
"days_since_latest_release": 28,
"mean_days_between_releases": 15.6
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "40 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 40
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 28 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 28
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~15.6 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 15.6
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "maintained",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": 28,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 28 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 28
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "moderate",
"name": "Community & Adoption",
"value": 50,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 16,
"inputs": {
"forks": 1,
"stars": 10,
"watchers": 1,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "10 stars",
"points": 15.5,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 10
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "1 forks",
"points": 0,
"status": "missed",
"details": [
{
"code": "forks",
"params": {
"count": 1
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "1 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 1
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "excellent",
"name": "Community health",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": true,
"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 (BSD-3-Clause)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "BSD-3-Clause"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 18,
"status": "met",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 13.5,
"status": "met",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 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": "moderate",
"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": 57,
"inputs": {
"packages": [
"mlquantify"
],
"dependents": null,
"ecosystems": "pypi",
"total_downloads": null,
"monthly_downloads": 2674
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "2,674 downloads/month across pypi",
"points": 45.7,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 2674,
"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": 54,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 15,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 2,
"top_contributor_share": 0.989
},
"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 99% of commits",
"points": 0.2,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 99
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "2 contributors",
"points": 2.7,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 2
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 1 contributing companies or organizations -- score normalized to 3",
"points": 3,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"issue_resolution"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 72,
"inputs": {
"merged_prs": 1,
"open_issues": 0,
"closed_issues": 0,
"issue_closed_ratio": null,
"closed_unmerged_prs": 0
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "no issues or no data",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_issues_or_data",
"params": {}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "1/1 decided PRs merged",
"points": 38.2,
"status": "met",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 1,
"decided": 1
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/30 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "at_risk",
"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": 46,
"inputs": {
"followers": 7,
"owner_type": "User",
"is_verified": null,
"owner_login": "luizfernandolj",
"public_repos": 20,
"account_age_days": 1922
},
"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": "7 followers of luizfernandolj",
"points": 6.5,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 7,
"login": "luizfernandolj"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "20 public repos, account ~5 yr old",
"points": 20.2,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 20
}
},
{
"code": "account_age_years",
"params": {
"years": 5
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"mlquantify"
],
"ecosystems": "pypi",
"any_deprecated": false,
"min_days_since_publish": 28
},
"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 28 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 28
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "51 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 51
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "good",
"name": "Engineering Quality",
"value": 72,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "moderate",
"name": "Engineering practices",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_ci_tests"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 60,
"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": "3 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 3
}
}
],
"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": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 90,
"inputs": {
"topics": [
"machine-learning",
"prevalence-estimation",
"python",
"quantification"
],
"has_wiki": false,
"homepage": "https://luizfernandolj.github.io/mlquantify/",
"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://luizfernandolj.github.io/mlquantify/",
"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": "4 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 4
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "moderate",
"name": "Security",
"value": 54,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): CI-Tests, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"ci_tests",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 43,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 16,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 2,
"scorecard_aggregate": 4.3
},
"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": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"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/30 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 1 contributing companies or organizations -- score normalized to 3",
"points": 0.8,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow detected",
"points": 5,
"status": "met",
"details": [],
"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": "no SAST tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "0 existing vulnerabilities detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "excellent",
"name": "Dependency advisories",
"note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the pypi:mlquantify@0.5.1 runtime dependency closure — what installing the published package pulls in — 10 packages. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"no_advisories_left_outstanding"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_published",
"params": {
"package": "pypi:mlquantify@0.5.1",
"assessed": 10
}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 0,
"affected_packages": 0,
"assessed_packages": 10,
"unassessed_packages": 0,
"affected_by_severity": "none",
"direct_affected_packages": 0
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "no direct dependency carries a known advisory",
"points": 35,
"status": "met",
"details": [
{
"code": "no_direct_advisories",
"params": {}
}
],
"max_points": 35
},
{
"key": "indirect_dependencies_free_of_known_advisories",
"name": "Indirect dependencies free of known advisories",
"detail": "no indirect dependency carries a known advisory",
"points": 25,
"status": "met",
"details": [
{
"code": "no_indirect_advisories",
"params": {}
}
],
"max_points": 25
},
{
"key": "no_advisories_left_outstanding",
"name": "No advisories left outstanding",
"detail": "no advisory carries a publication date",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_no_publication_date",
"params": {}
}
],
"max_points": 40
}
]
},
{
"key": "malicious_dependencies",
"band": "excellent",
"name": "Malicious dependencies",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"source": "osv",
"meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
"packages": [],
"red_flag": false,
"assessed_packages": 10,
"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": 2
},
"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": 33,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "critical",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 4,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.07,
"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": "7 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 3.7,
"status": "partial",
"details": [
{
"code": "legible_history",
"params": {
"legible": 7,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "at_risk",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 44,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [],
"has_dockerfile": false,
"typed_language": false,
"bootstrap_files": [
"docs/Makefile"
],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [],
"agent_commit_share": 0.02,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "docs/Makefile",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "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": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "2 of the last 100 commits agent-authored or agent-credited",
"points": 4,
"status": "partial",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 2,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "moderate",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 55,
"inputs": {
"primary_language": "Python",
"largest_source_bytes": 51515,
"source_files_sampled": 133,
"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/133 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 133,
"oversized": 0
}
}
],
"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"
],
"report_type": "repository",
"generated_at": "2026-07-25T14:08:58.686498Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/l/luizfernandolj/mlquantify.svg",
"full_name": "luizfernandolj/mlquantify",
"license_state": "standard",
"license_spdx": "BSD-3-Clause"
}