原始 JSON 报告 机器可读
{
"data": {
"repo": {
"topics": [
"cobaya",
"cosmosis",
"likelihood-functions",
"python",
"sampler",
"numcosmo"
],
"is_fork": false,
"size_kb": 24085,
"has_wiki": false,
"homepage": null,
"languages": {
"CSS": 17,
"Lua": 5154,
"SCSS": 949,
"Shell": 5533,
"Python": 2647155,
"Makefile": 29945,
"JavaScript": 596
},
"pushed_at": "2026-07-30T19:56:50Z",
"created_at": "2016-11-01T19:39:51Z",
"owner_type": "Organization",
"updated_at": "2026-07-28T16:58:31Z",
"description": "DESC Cosmology Likelihood Framework",
"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": "http://lsstdesc.org",
"name": "LSST Dark Energy Science Collaboration (DESC)",
"type": "Organization",
"login": "LSSTDESC",
"company": null,
"location": null,
"followers": 230,
"avatar_url": "https://avatars.githubusercontent.com/u/2731443?v=4",
"created_at": "2012-11-06T02:18:04Z",
"is_verified": null,
"public_repos": 482,
"account_age_days": 5015
},
"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": "v1.15.2",
"kind": "patch",
"published_at": "2026-07-30T19:57:17Z"
},
{
"tag": "v1.15.1",
"kind": "patch",
"published_at": "2026-07-02T19:44:21Z"
},
{
"tag": "v1.15.0",
"kind": "minor",
"published_at": "2026-06-12T00:16:01Z"
},
{
"tag": "v1.14.3",
"kind": "patch",
"published_at": "2026-05-21T19:01:25Z"
},
{
"tag": "v1.14.2",
"kind": "patch",
"published_at": "2026-04-18T12:55:11Z"
},
{
"tag": "v1.14.1",
"kind": "patch",
"published_at": "2026-04-13T19:05:38Z"
},
{
"tag": "files-v1.1.0",
"kind": "other",
"published_at": "2025-12-13T19:36:39Z"
},
{
"tag": "files-v1.0.0",
"kind": "other",
"published_at": "2025-11-03T18:31:33Z"
},
{
"tag": "v1.14.0",
"kind": "minor",
"published_at": "2025-10-27T21:22:09Z"
},
{
"tag": "v1.13.0",
"kind": "minor",
"published_at": "2025-10-24T18:16:21Z"
},
{
"tag": "v1.12.0",
"kind": "minor",
"published_at": "2025-10-16T19:52:12Z"
},
{
"tag": "v1.11.0",
"kind": "minor",
"published_at": "2025-06-09T20:48:05Z"
},
{
"tag": "v1.10.0",
"kind": "minor",
"published_at": "2025-03-31T20:40:24Z"
},
{
"tag": "v1.9.0",
"kind": "minor",
"published_at": "2025-02-18T16:12:08Z"
},
{
"tag": "v1.8.0",
"kind": "minor",
"published_at": "2025-01-31T23:31:43Z"
},
{
"tag": "v1.7.5",
"kind": "patch",
"published_at": "2024-06-21T20:33:09Z"
},
{
"tag": "v1.7.4",
"kind": "patch",
"published_at": "2024-05-14T17:42:07Z"
},
{
"tag": "v1.7.3",
"kind": "patch",
"published_at": "2024-04-12T18:22:51Z"
},
{
"tag": "v1.7.2",
"kind": "patch",
"published_at": "2024-04-02T17:57:43Z"
},
{
"tag": "v1.7.1",
"kind": "patch",
"published_at": "2024-02-20T19:17:45Z"
},
{
"tag": "v1.7.0",
"kind": "minor",
"published_at": "2024-02-08T19:50:08Z"
},
{
"tag": "v1.6.0",
"kind": "minor",
"published_at": "2023-10-16T19:52:42Z"
},
{
"tag": "v1.5.0",
"kind": "minor",
"published_at": "2023-08-14T18:17:03Z"
},
{
"tag": "v1.4.0",
"kind": "minor",
"published_at": "2023-03-02T19:17:03Z"
},
{
"tag": "v1.3.0",
"kind": "minor",
"published_at": "2022-12-05T18:26:08Z"
},
{
"tag": "v1.2.0",
"kind": "minor",
"published_at": "2022-10-17T14:29:58Z"
},
{
"tag": "v1.1.0",
"kind": "minor",
"published_at": "2022-08-03T01:45:34Z"
},
{
"tag": "v1.0.0",
"kind": "major",
"published_at": "2022-03-31T23:12:51Z"
},
{
"tag": "v0.5",
"kind": "other",
"published_at": "2021-01-26T14:38:24Z"
},
{
"tag": "v0.4",
"kind": "other",
"published_at": "2020-04-23T20:51:41Z"
},
{
"tag": "v0.3",
"kind": "other",
"published_at": "2020-04-03T20:18:30Z"
},
{
"tag": "v0.2",
"kind": "other",
"published_at": "2020-04-03T11:50:22Z"
},
{
"tag": "v0.1",
"kind": "other",
"published_at": "2019-11-26T20:12:35Z"
}
],
"recent_commits": [
{
"oid": "7f2c81eb422e3b4bed9ad3512d2fb53bf67c1498",
"body": "* Add CMBLensing tracer and tests.\n* Generalize tracers and finish metadata and likelihood updates.\n* Rename tracer module to _two_point_tracers and update imports.\n* Rename InferredGalaxyZDist to TomographicBin.\n* Rename variables, functions, and methods to match the new names.\n Keep backward comp\n[…]\nrk configurations.\n* Add CMB lensing + shear example generator.\n* Document CMBConvergence support in tutorials.\n* Clarify future extensions.\n\n---------\n\nCo-authored-by: Marc Paterno <paterno@fnal.gov>",
"is_bot": false,
"headline": "Generalize Tracer Framework and Add CMB Lensing Support (#616)",
"author_name": "Sandro Dias Pinto Vitenti",
"author_login": "vitenti",
"committed_at": "2026-07-28T16:48:28Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5de2e8b7606a3d8217cb8865c424495dce584fc3",
"body": "* build(examples): remove notebook dependencies and tracked notebooks\n\nDrop the notebook cleanup CI action and remove notebook checkpoint ignore rules.\n\nDelete the tracked cluster example notebooks so the repository no longer carries notebook artifacts.\n\n* build(ci): bump conda-lock to 4.0.2\n\nUpdate\n[…]\np table output as the default for local interactive\nuse and add a CLI toggle to explicitly choose full or table output.\n\nAdd tests covering CI default full output and explicit table output in\nCI mode.",
"is_bot": false,
"headline": "Remove obsolete notebooks (#662)",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-07-25T13:21:40Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "055b907a2caf8abf6ae9cadd55e5080b0ec3187a",
"body": "Adding a requierement for the numpy version",
"is_bot": false,
"headline": "Merge pull request #658 from joselotl/numpy_version",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-07-23T19:38:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0f2ec0d639e85b49aad4d1b69c01ff173180a9a9",
"body": null,
"is_bot": false,
"headline": "Merge branch 'master' into numpy_version",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-07-23T18:04:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "368bae7dc57dff5c2e7e550215f321666fbb9702",
"body": "Reorg weak lensing package",
"is_bot": false,
"headline": "Merge pull request #661 from LSSTDESC/reorg-weak-lensing-package",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-07-23T17:57:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9b01a6e2f667d8fed7ff58a0b6d4bdc87022eb85",
"body": "Extract weak-lensing arguments, source logic, and factory classes from\nthe monolithic private module into dedicated private submodules. Keep\nsystematics in a renamed _systematics module and update package\nre-exports to preserve the public firecrown.likelihood.weak_lensing\nAPI, including WeakLensingS\n[…]\nicFactory.\n\nUpdate internal and test imports to target the package namespace\ninstead of the old private _weak_lensing module, preserving behavior\nwhile improving module boundaries and maintainability.",
"is_bot": false,
"headline": "refactor(weak-lensing): split internals into focused submodules",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-07-22T22:37:50Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a583b3bf563b54887e57c24ccd7fcaf7f704a5d6",
"body": null,
"is_bot": false,
"headline": "style: add AGENTS.md to .gitignore",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-07-22T22:37:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2388653b4fe517080cf120789fcee53055de0d1f",
"body": "Fixing theory/data-vector subclassing numpy arrays instead of type-hint.",
"is_bot": false,
"headline": "Merge pull request #659 from LSSTDESC/data-theory-vector-fix",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-07-22T22:33:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2a52d597baf2c260459654a9aa64ba7743451c51",
"body": "Remove cyclic dependency",
"is_bot": false,
"headline": "Merge pull request #656 from LSSTDESC/remove-cyclic-dependency",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-07-22T21:50:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0f1f6b488fdb2e406793712ff4fb151632023049",
"body": null,
"is_bot": false,
"headline": "Restricting CAMB version.",
"author_name": "Sandro Dias Pinto Vitenti",
"author_login": "vitenti",
"committed_at": "2026-07-20T18:39:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8ae3d043530a83a4709ca60ee5c50b593b44853e",
"body": null,
"is_bot": false,
"headline": "Fixing theory/data-vector subclassing numpy arrays instead of type-hint.",
"author_name": "Sandro Dias Pinto Vitenti",
"author_login": "vitenti",
"committed_at": "2026-07-20T18:23:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "66ceb302a643eef56a5366beaff4f90c902dcd0a",
"body": null,
"is_bot": false,
"headline": "Adding a requierement for the numpy version",
"author_name": "Josue De-Santiago",
"author_login": "joselotl",
"committed_at": "2026-07-11T00:43:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "08f2c03abdc50ce572311a9fb6b8e1f71f07df62",
"body": "Merge branch 'master' into remove-cyclic-dependency",
"is_bot": false,
"headline": "style: reorder imports for firecrown.app.sacc._transform",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-07-07T16:30:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3a37fb61c5f30760b99a5c36206b2224ae23f48d",
"body": "* Drop support for Python 3.11.\n* Refactor SACC helper utilities by moving them into `firecrown.utils`, keeping backward-compatible re-exports, and delegating file format detection to SACC's native detection API.\n* Update SACC dependency constraints to avoid incompatible releases while upstream comp\n[…]\nport is addressed.\n* Regenerate conda lockfiles for Python 3.12, 3.13, and 3.14 with updated dependencies.\n* Apply code style and import cleanups (Black, pylint quoting fixes, and import refactoring).",
"is_bot": false,
"headline": "Drop py 311 (#651)",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-07-07T00:19:41Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "491c394196773bcaafd40dceb75dc461c52f22a4",
"body": "Change imports of ConstGaussian and TwoPointFactory to use private\nmodules directly, which avoids circular dependency issues while\nmaintaining the same functionality.",
"is_bot": false,
"headline": "refactor(likelihood): import from private modules to avoid circular deps",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-07-03T19:32:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8df12774402b4e792a235ebc5a1937129664b50b",
"body": null,
"is_bot": false,
"headline": "refactor(likelihood): replace private by public imports",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-07-03T17:50:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "123e6473d1f2dfbb6ba3e0a0ef8353661e621211",
"body": "This organization follows the rules applied by ruff, i.e.\n\n1. standard library imports\n2. third-parth imports\n3. project imports\n4. relative imports\n\nWithin each group, imports are in alphabetical order.\n\n modified: firecrown/fctools/link_checker.py",
"is_bot": false,
"headline": "style: reformat imports",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-07-03T17:29:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "480b10582366bdc7ec44eaa2dc6cda67ee25fd65",
"body": "Move core likelihood base classes from _base.py to\na new likelihood_base.py at the package root. This breaks a\ncyclic dependency by decoupling the base classes from the likelihood\nsubpackage, allowing cleaner imports throughout the codebase.\n\nAll imports across the package have been updated to reference the new\nmodule location.",
"is_bot": false,
"headline": "refactor(likelihood): move base classes to root level module",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-07-03T04:03:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b73c0919658f20c77ccd787870ef35a220feee02",
"body": "Update conda-lock.yml files to synchronize dependency versions\nand reformat YAML indentation for consistency.\n\n- py3.12: updated package hashes and dependencies\n- py3.13: updated package hashes and dependencies\n- py3.14: updated package hashes and dependencies",
"is_bot": false,
"headline": "build: update conda lock files for py3.12, py3.13, py3.14",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-07-02T23:01:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ee47a59ee6d4929c380ec4acc9c7a6a6f5fa8774",
"body": "Remove a duplicate sacc.utils.detect_sacc_file_type import in\n_transform.py. In _sacc_utils.py, import ensure_path and\nload_sacc_data directly from firecrown.utils._sacc_ops instead of\nthe firecrown.utils package, and declare them explicitly in\n__all__ for re-export.",
"is_bot": false,
"headline": "refactor(imports): fix duplicate and internal import paths",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-07-02T22:54:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a4b1e0bca9ee9c6607b805912750e44bebc2fe4b",
"body": null,
"is_bot": false,
"headline": "(style) Apply black",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-07-02T21:52:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b723889b19ec837704f237157dadf67c1f908a87",
"body": null,
"is_bot": false,
"headline": "Merge branch 'master' into drop-py-311",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-07-02T21:52:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6c72ad625e1ad9d8dd184d6b979fdcc13c3be67d",
"body": "Use sacc 2.3",
"is_bot": false,
"headline": "Merge pull request #654 from LSSTDESC/use-sacc-2.3",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-07-02T17:31:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1acb089497b4bcecc35abcd5747359a002469530",
"body": "Ignore local workspace artifacts at the repo root (.headroom, .kilo,\nplans/, and .github/instructions/) so personal tooling files do not\nshow up as noise in status output.\n\nIgnore tutorial/docs/ output in .gitignore to avoid committing\ngenerated tutorial documentation.",
"is_bot": false,
"headline": "chore(gitignore): ignore local tooling and tutorial docs artifacts",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-07-01T20:08:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e4472592f32af4c011ac1ee7a7ffa8eabed993e0",
"body": "Update conda lockfiles for py3.11 through py3.14 with refreshed\nconda-forge resolution.\n\nBump key pinned dependencies including sacc (2.1.2 -> 2.3),\nqp-prob (1.0.1 -> 1.1.1), matplotlib-base (3.10.9 -> 3.11.0),\nand Python 3.14 (3.14.5 -> 3.14.6).",
"is_bot": false,
"headline": "build(conda-lock): update lockfiles",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-07-01T20:06:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "70cf3f8f0a7dbf0ea33ff66196a306ae0110fb62",
"body": "Bump minimum sacc version to 2.3 in pyproject.toml and\nenvironment.yml, then migrate all loading code to use the\nnew unified sacc.Sacc.load() method and sacc.utils.detect_sacc_file_type\nhelper instead of manually trying HDF5 then FITS.\n\nload_sacc_data in _sacc_utils.py and the example script are\nupd\n[…]\nuous .sacc extensions with both HDF5 and FITS\ncontent, update the error-message assertion for the dual-failure\ncase, and add a guard test that detect_sacc_file_type remains\nimportable from sacc.utils.",
"is_bot": false,
"headline": "build(deps): migrate to sacc 2.3 unified loading API",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-07-01T19:53:09Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c14e39c59529ed398464f755c532e84fb17912ae",
"body": "…b-actions-85840bb9b5\n\nBump the github-actions group with 3 updates",
"is_bot": false,
"headline": "Merge pull request #653 from LSSTDESC/dependabot/github_actions/githu…",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-07-01T17:49:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4539189fbba18dbfeb331ccf1896e3023cbbda44",
"body": "Bumps the github-actions group with 3 updates: [actions/checkout](https://github.com/actions/checkout), [actions/cache](https://github.com/actions/cache) and [codecov/codecov-action](https://github.com/codecov/codecov-action).\n\n\nUpdates `actions/checkout` from 6.0.3 to 7.0.0\n- [Release notes](https:\n[…]\n\n dependency-version: 7.0.0\n dependency-type: direct:production\n update-type: version-update:semver-major\n dependency-group: github-actions\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "Bump the github-actions group with 3 updates",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-01T13:38:34Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "92457b2c02340d91629a3a054e1d0bdcee97ff36",
"body": null,
"is_bot": false,
"headline": "build: update sacc dependency constraint",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-06-29T21:11:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "48398da52171db4dbcf62ee9b7234a526ed95d76",
"body": "Move load_sacc_data and ensure_path from the private module\nfirecrown.likelihood.factories._sacc_utils into firecrown.utils\n(via _sacc_ops). The old module is kept as a backward-compatible\nre-export shim with a deprecation notice.\n\nReplace the manual try-HDF5/try-FITS fallback in load_sacc_data and\nTransform.detect_format with a call to sacc.utils.detect_sacc_file_type,\ndelegating format detection to SACC itself.",
"is_bot": false,
"headline": "refactor(utils): move SACC helpers to firecrown.utils",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-06-27T21:05:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "73bcffb96c4bc9592909cc5292600bea8c0a23d2",
"body": "Regenerate conda-lock files for Python 3.12, 3.13, and 3.14 with updated dependency versions.",
"is_bot": false,
"headline": "build(conda-lock): regenerate lockfiles",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-06-26T21:35:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "eb7775fb607a4d5959abcbf987a5cdfda3d99d24",
"body": "This is needed because SACC 2.2 no longer transparently handles\ncompressed files. I have filed an issue in SACC and will follow up with\na PR there to implement the needed support.",
"is_bot": false,
"headline": "build(deps): constrain sacc to < 2.2",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-06-26T21:31:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c8637cda919cb986e2da6bd9fba9bf893638baae",
"body": "…ng SACC data\"\n\nThis reverts commit e33299e678df8b6e3e576d98e5f29286033f97dc.\nSACC 2.2 can no longer read compressed files, and that needs to be fixed\nbefore we can start supporting the new version.",
"is_bot": false,
"headline": "Revert \"fix(sacc): catch ValueError in addition to OSError when loadi…",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-06-26T21:22:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e33299e678df8b6e3e576d98e5f29286033f97dc",
"body": "…data\n\nExpand exception handling in SACC file loading operations to catch both\nOSError and ValueError. The sacc library can raise ValueError for invalid\nfile formats or corrupted data, so this ensures those errors are properly\nhandled during format detection and file loading attempts.\n\nThis is needed to support sacc v2.2",
"is_bot": false,
"headline": "fix(sacc): catch ValueError in addition to OSError when loading SACC …",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-06-26T19:31:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d75b28e54cb0c5afd81b887899ccf4d30938173d",
"body": null,
"is_bot": false,
"headline": "(style): Fix quoting as directed by pylint",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-06-26T17:38:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7d76a63a4e53afbf9491035e1e1ef441ec04fc58",
"body": "Regenerate conda-lock files for Python 3.12, 3.13, and 3.14 with updated dependency versions.",
"is_bot": false,
"headline": "build(conda-lock): regenerate lockfiles",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-06-26T13:02:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7dedd76a97b2efc5ceda4e000419d81fdb6db70a",
"body": null,
"is_bot": false,
"headline": "Drop support for Python 3.11",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-06-26T13:01:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7098afc792a439218245257c3802d491537a8f10",
"body": "Forward-port RTD docs fix and docs-rtd-check to master",
"is_bot": false,
"headline": "Merge pull request #650 from LSSTDESC/rtd-version-fix-master",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-06-25T20:03:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6bd1ad905f4eca8d7c399f441211e4eaf572176b",
"body": null,
"is_bot": false,
"headline": "Forward-port RTD docs fix and docs-rtd-check to master",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-06-25T19:27:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "859a293c59c25ec5f1a9d16fd7ab6139840d7609",
"body": "* Fix conda-forge release procedure\n\nAdd release-verify-archive target to confirm GitHub auto-archives are\nnot valid conda-forge sources. The auto-archive lacks PKG-INFO and\n.git, causing setuptools-scm to fail version detection.\n\nEnhance release-conda-forge to require a verified sdist and compute i\n[…]\ninction between the\nrelease sdist (correct) and GitHub auto-archive (incorrect), plus\nmanual git workflow steps for syncing the conda-forge feedstock fork.\n\nFix instructions to avoid just-fixed errors",
"is_bot": false,
"headline": "Fix conda-forge release procedure (#647)",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-06-17T16:19:33Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "40b52ef7966d4ccd584d46bc23070b523788e643",
"body": "Add release-env-check target to verify the firecrown_developer conda\nenvironment is active before running release targets. This ensures all\nrelease tools (build, GitHub CLI) and dependencies are available.\n\nAdded build to environment.yml as a pip dependency to support the\nPython packaging workflow.\n\nUpdated Making_a_new_release.md to document the environment\nrequirement for release targets.\n\nRegenerated conda lock files with the new build dependency.",
"is_bot": false,
"headline": "Enforce release environment validation",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-06-11T23:54:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8eee206c37bcc489ed26e03721dd1bf211e933d6",
"body": "Enforce that release targets run from the firecrown_developer conda\nenvironment to ensure all release tools (build, GitHub CLI) and\ndependencies are available.\n\nAdd build to environment.yml as a pip dependency.\n\nUpdate Making_a_new_release.md to document the environment\nrequirement.",
"is_bot": false,
"headline": "Add release environment validation",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-06-11T22:44:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7631b64c45c3a8158f3413e4f31d2b45f563f2f4",
"body": "Refactor release targets to separate fast validation (release-validate)\nfrom full pre-commit checks. Cache successful validation results in\n.git/firecrown-release/ to avoid rerunning expensive make pre-commit\nchecks when running subsequent release targets like release-tag.\n\nThis simplifies the release workflow by removing the explicit\nrelease-check step from documentation and making release-tag reuse\npreviously successful checks for the same HEAD and VERSION.",
"is_bot": false,
"headline": "Cache release check results",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-06-11T21:36:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f8833add25b3c4244af457cf69f8699ded28a738",
"body": null,
"is_bot": false,
"headline": "Update lockfiles and do not check in release check",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-06-11T17:47:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8ccb3c87842386654a191bf8905c174ba5268639",
"body": "* Revert to simple reference to isitgr in envronment.yml\n* Fix typechecking error in link checker\n* Update conda lock files\n* Handle Rate-limited External Links\n* Add special handling for HTTP 429 (Too Many Requests)\nresponses when checking external links. Rate-limited\nURLs are tracked separately and excluded from broken\nlink reports, ensuring that temporary rate limits do\nnot cause false failures in link validation.",
"is_bot": false,
"headline": "Prep v1.15.0 (#645)",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-06-11T17:25:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "81981d9289612ecd2ffd700c7eeac704ee20f596",
"body": "* Update environment\n\n- Release restrictions on several packages\n- Force local building of wheel for isitgr because the one on PyPI\n is defective for macOS.\n\n* Remove the version restriction on plotnine\n\n* Use PEP 440 direct-reference for isitgr\n\nThe use of the bare URL causes a failure in conda-lo\n[…]\nns prior\nto 0.27, including the dynamic 'likelihood.likelihood' module\nregistration. This removes the unused Ncm import and simplifies the\ninitialization code by explicitly requiring NumCosmo >= 0.27.",
"is_bot": false,
"headline": "Prep v1.15.0 (#644)",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-06-04T23:44:53Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b8800bd1f5a848eea7ddcc96f8951b49666b2f28",
"body": "Simplify conda release and resolve CI workflow merge conflicts",
"is_bot": false,
"headline": "Merge pull request #642 from LSSTDESC/simplify-conda-release",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-06-04T18:18:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "46b3a2d979eef789b710d9d3f936c7c6a15061a7",
"body": "This reverts commit 7e1fbe34ab7182e58da0933f8c1ed68e1c4daf95.",
"is_bot": false,
"headline": "Revert \"Add --no-fail-on-broken-links option to link checker\"",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-06-04T17:23:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7e1fbe34ab7182e58da0933f8c1ed68e1c4daf95",
"body": "Introduce new CLI option `--fail-on-broken-links` (default: on) that allows\nthe link checker to exit successfully even when broken links are found. This is\nuseful for generating documentation before all links have been fixed.\n\nAlso update Makefile to use `--no-fail-on-broken-links` for the docs-linkcheck\ntarget, and add `.gitignore` entry for tutorial/docs directory.",
"is_bot": false,
"headline": "Add --no-fail-on-broken-links option to link checker",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-06-04T15:40:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ea9dd8fce33bd7c31321eba69a1cae574523c622",
"body": null,
"is_bot": true,
"headline": "Merge origin/master to resolve workflow conflicts",
"author_name": "copilot-swe-agent[bot]",
"author_login": "Copilot",
"committed_at": "2026-06-03T22:19:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "28600852f983d594d8aa6918b893f5e03234f76f",
"body": "This enables automatic version detection for future development after\na release branch, e.g. v1.14.x. The new scheme guesses the next\nversion (e.g. 1.15.0) when commits are ahead of the latest tag, making\nit clear this is not v1.14 development.\n\nThis requires the a tag be placed on the commit after a new branch\nis made for long-term maintenance.",
"is_bot": false,
"headline": "Update setuptools_scm version scheme to guess-next-dev",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-06-03T22:11:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "76d1fcdd64604ecce0090b35577ea12347d0824c",
"body": "…b-actions-fc20006228\n\nBump the github-actions group with 2 updates",
"is_bot": false,
"headline": "Merge pull request #643 from LSSTDESC/dependabot/github_actions/githu…",
"author_name": "Sandro Dias Pinto Vitenti",
"author_login": "vitenti",
"committed_at": "2026-06-03T15:20:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "76d7f7add9a39820a05052d05f2714cb8e9dadd8",
"body": "Bumps the github-actions group with 2 updates: [actions/checkout](https://github.com/actions/checkout) and [codecov/codecov-action](https://github.com/codecov/codecov-action).\n\n\nUpdates `actions/checkout` from 6.0.2 to 6.0.3\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelo\n[…]\n\n dependency-version: 6.0.1\n dependency-type: direct:production\n update-type: version-update:semver-patch\n dependency-group: github-actions\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "Bump the github-actions group with 2 updates",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-02T16:53:05Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9f709291aae93d42cd5b86f82f8f8cbd02cbfc30",
"body": "Update conda environment creation commands across documentation\nand scripts to explicitly specify the environment name\n'firecrown_developer' using the --name flag. This improves clarity\nand consistency for users following installation instructions.",
"is_bot": false,
"headline": "Add explicit conda environment name",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-29T21:08:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "53e956c08b9b10561351033381672481c84bc453",
"body": "This ensures the Augur test suite has access to the project\ndirectory path through the AUGUR_DIR environment variable.",
"is_bot": false,
"headline": "Set AUGUR_DIR for Augur tests",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-29T16:17:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "466a591b58a25b6172a5c0cd081c5866a0d2b9f3",
"body": "Accept extra keyword arguments in the ModelingTools constructor to\nmaintain backward compatibility with deprecated parameters. The\ndeprecation warnings for these arguments are already in place, and\naccepting them via **_ allows existing code to continue working while\nwe phase them out. Updated test with type ignore comment to suppress\nspurious type checking errors from the intentional incompatibility.",
"is_bot": false,
"headline": "Add kwargs catch-all to ModelingTools",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-29T14:49:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d37f8836b772edbdf69b1f738280e974ba40efb7",
"body": "Regenerate all four Python-version lock files\n(py3.11 through py3.14) with refreshed package\nversions, including astropy-iers-data, black,\nand several other dependencies.",
"is_bot": false,
"headline": "Update conda lock files",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-28T20:43:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7e1bb8849456b0dcc28c6267851f98c0e56ec8ab",
"body": "Add a parametrized test that verifies both\ncluster_abundance and cluster_deltasigma legacy\nconstructor parameters emit DeprecationWarning,\npreventing silent regression of the deprecation\nbehavior.",
"is_bot": false,
"headline": "Test deprecated ModelingTools constructor args",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-28T20:38:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "df9b5c46c0796fd838e43ac1223c261a879865f7",
"body": "Add Makefile targets for release validation, tagging, sdist\ncreation, GitHub publication, and conda-forge handoff.\n\nDocument the feature-line and maintenance release flow around\nthose targets, including branch expectations and release\npreconditions. Update the PR template to point contributors to\nma\n[…]\ns the current\ndeveloper entry point.\n\nThis standardizes release steps, catches missing build or gh\nsetup early, and verifies the sdist version metadata before\ntags and release artifacts are published.",
"is_bot": false,
"headline": "Add Makefile release workflow",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-28T19:59:38Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "224376ab671bfcd89efd6b72f411b2ca37fdcd8c",
"body": "Remove the pinned commit ref from the Augur\ncheckout step, so it now tracks the default\nbranch rather than a fixed SHA.\n\nChange the Augur pytest invocation from the\nrepo root to augur/tests, scoping the run to\nthe intended test directory.\n\nAlso fix indentation in the \"Report environment\"\nstep and reformat long cache-key YAML lines for\nreadability.",
"is_bot": false,
"headline": "Update Augur CI checkout and test path",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-28T15:47:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b810af29ff52e55dc51766bf6d131d9c59de7802",
"body": "Move _UNSET sentinel to after all imports in\n_modeling_tools.py to resolve E402/C0413 import-order\nviolations. Add deprecated cluster_abundance and\ncluster_deltasigma parameters to ModelingTools.__init__,\neach emitting a DeprecationWarning when passed.\n\nRemove unused pytest import from\ntest_likeliho\n[…]\nlass names as first words with \"Verify\".\nFix E1135 pylint false positive by using .keys() on\nmodel_fields. Add test_modeling_tools_deprecated.py\ncovering the two new deprecated constructor parameters.",
"is_bot": false,
"headline": "Fix lint errors in backward compat shims",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-27T22:18:56Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "558b673863cc38ae6e9e26346c4da09f91de763a",
"body": "Re-export TwoPointFactory from firecrown.likelihood.factories\nto restore backward compatibility with code that imports it\nfrom that path. The class itself remains in\nfirecrown.likelihood._two_point and is the canonical export\nof firecrown.likelihood.\n\nAdd tests verifying the class is importable from the factories\nmodule, is identical to the object in firecrown.likelihood,\nappears in __all__, is a Pydantic BaseModel subclass, and\nexposes the correlation_space field.",
"is_bot": false,
"headline": "Export TwoPointFactory from likelihood.factories",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-27T22:07:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "43b8decdc9d6c9a4a07590da9df09b260478a2c6",
"body": "Add firecrown/likelihood/gaussian.py as a backward\ncompatibility shim that re-exports ConstGaussian from\nits current private location (_gaussian.py). The shim\nemits a DeprecationWarning directing users to import\nfrom firecrown.likelihood instead.\n\nAdd tests verifying the deprecation warning is emitted,\nthat the exported class is importable, that it is the\nidentical object to the one in the canonical location,\nand that it appears in __all__.",
"is_bot": false,
"headline": "Add gaussian shim for backward compat",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-27T21:57:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b792f37b5849f66f283faa0ef531eeeaea593ba0",
"body": "The module firecrown.likelihood.two_point was renamed to\nfirecrown.likelihood._two_point (private), which broke\nthird-party code (e.g., augur) that imported from the old\npublic path.\n\nAdd a backward-compatibility shim at\nfirecrown/likelihood/two_point.py that re-exports all public\nnames from the new\n[…]\n tests in tests/test_two_point_deprecated.py covering: the\ndeprecation warning, importability of all re-exported names,\nobject identity with the canonical location, alias import, and\n__all__ contents.",
"is_bot": false,
"headline": "Add two_point backward-compat shim",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-27T20:45:07Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "49446febbf8f419a0d3c73ca02fa26bb02987642",
"body": "Add fetch-depth: 0 to all checkout steps in ci.yml,\nci-reusable.yml, and nightly.yml.\n\nA shallow clone (the default) omits git tags and\nhistory, which is required for tools that derive the\npackage version from git history during CI builds.",
"is_bot": false,
"headline": "Fetch full history in CI workflows",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-27T17:14:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4cc1e37dff90cdfe8182e105de2dbb6f835e7748",
"body": "All tutorial documents now display the Firecrown package version\nautomatically as a subtitle. Version is extracted at build time using\nimportlib.metadata and passed to Quarto via the new version_filter.lua\nLua filter. This eliminates manual version maintenance for 14 tutorial\nfiles and ensures version numbers stay synchronized across the project.\nUpdated Makefile to export FIRECROWN_VERSION and pass it to the Quarto\nbuild process with the new version filter in the metadata chain.",
"is_bot": false,
"headline": "Add automatic version generation to tutorials",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-26T15:24:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9376b3ab492c8515e29ff0a9a95f13bcfe900a7e",
"body": "Replace the manual version.py file with importlib.metadata, which reads\nthe version from package metadata. Add setuptools_scm configuration to\nautomatically manage versioning based on git tags. Delete the manual\nversion file, update_quarto_version.py script, and hardcoded version\nstrings in tutorial files. Update version tests to validate the new\nmetadata-based system. This eliminates manual version maintenance and\nensures consistency across the project.",
"is_bot": false,
"headline": "Use importlib.metadata for versioning",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-26T13:31:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8ea33ee6cf83b8e90e9ba7e4cc144844621126ea",
"body": "Fix MuSigmaModel initialization and API",
"is_bot": false,
"headline": "Merge pull request #641 from LSSTDESC/fix_640",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-21T19:16:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d864709da4aa38f15b62120c8404bf7a3faecc85",
"body": "Update MuSigmaModel.create() to use named parameters for\nMuSigmaMG instantiation (mu_0, sigma_0, c1_mg, c2_mg,\nlambda_mg) as required by the pyccl library API. Also\nadjusted default values for mu, sigma, and lambda0 from 1.0\nto 0.0. Added comprehensive test assertions to verify the\ncreated MuSigmaMG object has correct parameter values and\nparametrization type.",
"is_bot": false,
"headline": "Fix MuSigmaModel initialization and API",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-21T18:38:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "21f01990bdce392d553a6d52fcef5802f319cbb4",
"body": "Update conda-lock to 4.0.0 and CCL to 3.3.4",
"is_bot": false,
"headline": "Merge pull request #639 from LSSTDESC/update-ccl",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-21T18:05:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "399731ee297209b17840156a1c2c448f6ff60a6e",
"body": "The lsstdesc-crow package is now available as a conda dependency,\nwhich is preferable to the pip-only dependency. Updated environment.yml\nand regenerated conda-lock files for Python 3.11–3.14.",
"is_bot": false,
"headline": "Move lsstdesc-crow to conda",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-21T17:25:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8fabcf7c54af7a514dcdffbeebfbe0d8ced6060f",
"body": "Ensure conda-lock installation and execution both run in the base\nconda environment using conda run -n base. This prevents activation\nconflicts and ensures the tools operate in a predictable environment.\nAlso remove redundant conda-lock installation steps that were run\nbefore the actual lockfile installation process.",
"is_bot": false,
"headline": "Run conda-lock tools in base environment",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-21T15:02:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c0cfb40284d7fc07795f5298ece097963d7320b0",
"body": null,
"is_bot": false,
"headline": "Reformat YAML",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-21T14:53:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "57b80b2fee346ec6212b6702605dabd2af7de37b",
"body": "Refactor conda-lock installation to occur immediately after Miniforge\nsetup across all CI jobs for better consistency. Move the installation\nstep before environment reporting to ensure conda-lock is available\nthroughout the job.\n\nAdd documentation to CONTRIBUTING.md about regenerating and checking\nc\n[…]\nersions.\n\nFix file path references in CONTRIBUTING_ADVANCED.md CI system\ndocumentation table to use correct `.github/` prefixes.\n\nRegenerate conda lockfiles for Python 3.11-3.13 with updated metadata.",
"is_bot": false,
"headline": "Update CI workflow and lockfile docs",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-21T14:46:01Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e122fd3317f05acc1873ea3124174a207536c561",
"body": "Update dependency lock files for Python 3.11, 3.12, 3.13,\nand 3.14. These lock files pin exact versions of all\ndependencies across supported Python versions, ensuring\nconsistent reproducible builds and environments.",
"is_bot": false,
"headline": "Update conda-lock files",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-21T14:20:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "75448901de455dfaed4ff7f80e4e0d44afbda0e2",
"body": "Upgrade conda-lock from 2.5.7 to 4.0.0 and migrate to the unified lockfile\nformat. This replaces per-platform lock files with YAML-based unified\nlockfiles that are cleaner and easier to maintain.\n\nSimplified the lock generation script by removing probe_conda_lock and\nprepare_lock_input functions, wh\n[…]\nfor cobaya, isitgr, and lsstdesc-crow, which\nare now properly handled by the unified lockfiles.\n\nRegenerated all conda lockfiles for Python 3.11, 3.12, 3.13, and 3.14 across\nLinux and macOS platforms.",
"is_bot": false,
"headline": "Update conda-lock to 4.0.0",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-21T03:37:12Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f368df8f0dda7a9ad0f7f0b22bc76f810cf8a7b9",
"body": "* Added implementation of the mass-dependent NLA intrinsic-alignment model for weak-lensing tracers.\n* Included shared IA amplitude and mass-scaling parameters with tracer-dependent red-galaxy fractions and average halo masses.\n* Switched halo-mass sampling to `log10(<M_h>)`.\n* Added tests for the `\n[…]\negistration.\n* Final cleanup, documentation updates, and removal of debug output.\n\n---------\n\nCo-authored-by: Sandro Dias Pinto Vitenti <vitenti@uel.br>\nCo-authored-by: Marc Paterno <paterno@fnal.gov>",
"is_bot": false,
"headline": "Nla m test (#602)",
"author_name": "Christos Georgiou",
"author_login": "chrgeorgiou",
"committed_at": "2026-05-20T15:04:45Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5184f81092b697b84625412f1e21aefe885d18da",
"body": "* Move cluster predictions from Firecrown to crow\n* Replace cluster files and add `lsstdesc-crow` dependency\n* Rename dependency from `desc-crow` to `lsstdesc-crow`\n* Setup environment and recipe initialization for crow-based workflows\n* Provide working `cluster_redshift_richness_deltasigma.py` exam\n[…]\ning, linting, typing, and CI issues\n\n---------\n\nCo-authored-by: Michel <aguena@lapp.in2p3.fr>\nCo-authored-by: Sandro Dias Pinto Vitenti <vitenti@uel.br>\nCo-authored-by: Marc Paterno <paterno@fnal.gov>",
"is_bot": false,
"headline": "Removing cluster theory prediction from Firecrown (#581)",
"author_name": "eduardojsbarroso",
"author_login": "eduardojsbarroso",
"committed_at": "2026-05-19T13:16:08Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1f5fcea63727104090f786da71f5f8f1f03bc035",
"body": "Update GitHub actions",
"is_bot": false,
"headline": "Merge pull request #635 from LSSTDESC/update-github-actions",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-12T14:04:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "63269e2400e003ade0395b7c840a5f2ad336985b",
"body": null,
"is_bot": false,
"headline": "Fix YAML indendentation errors",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-06T14:54:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "496beb591ebb5a88004c94140ace865bd3756772",
"body": "Enable monthly grouped Dependabot updates for workflow references and\ndocument the needed repository setting for Dependabot version updates.\n\nThis requires manual activation on the repository web site before it\nwill take effect.",
"is_bot": false,
"headline": "Add Dependabot config for GitHub Actions",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-06T14:29:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a2037357345ab9468beaf72ff9a106e5a06db4d0",
"body": "Upgrade GitHub Actions steps across CI workflows to newer supported versions.\nUpdates checkout, setup-miniconda, paths-filter, cache restore/save, codecov,\nand upload-artifact actions in ci-reusable.yml, ci.yml, and nightly.yml.\n\nThis also changes from using bare tags (e.g. @4) to exact versions (e.g\n@v4.0.1). This is following the best-practices recommendation in the\nGithub actions documentation at:\nhttps://docs.github.com/en/actions/reference/security/secure-use#using-third-party-actions.",
"is_bot": false,
"headline": "Update GitHub Actions workflow actions",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-06T14:25:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9795d7c9069e1d390e5e025fc867798468afe86f",
"body": null,
"is_bot": false,
"headline": "Allow manual triggering of firecrown-ci workflow",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-05-06T14:02:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ef3534e0874b4b7e2f044b5e0daa567a98f9ed53",
"body": "Unify CI to use lockfile-based env",
"is_bot": false,
"headline": "Merge pull request #634 from LSSTDESC/alter-macos-ci",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-04-30T19:17:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "58d65f75ad07f9d8f1317a88dddb36cebf41bab9",
"body": "This adjusts the build so that it tests the `master` branch when merged into `master`.",
"is_bot": false,
"headline": "Update CI branches to include 'master'",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-04-30T19:16:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d16b57399f362f089d2d639036be21ab82ef796b",
"body": "Consolidated nightly and pull request CI modes to always use lockfile-based\nenvironment creation with lock-hash cache keys. This eliminates separate\ndate-based caching logic for PR mode and simplifies conditional branching\nthroughout the reusable workflow.\n\nAdded a new non-blocking rebuild-drift can\n[…]\ning\nmerges.\n\nAdded debug output throughout environment setup steps and updated\nCONTRIBUTING_ADVANCED.md to document the new PR drift detection behavior\nand clarify the unified lockfile-based approach.",
"is_bot": false,
"headline": "Unify CI to use lockfile-based env",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-04-28T18:37:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e15c7ffd722e1f97ca5fc9b49350072b855a9253",
"body": "Added a new section explaining the nightly workflow's use of lockfile-based\nenvironments and rebuild-drift advisory jobs. This documents how conda solve\ncaching works in nightly mode and how drift detection jobs diagnose\nenvironment resolution issues. Also updated the CI System Architecture link\nreference to point to CONTRIBUTING_ADVANCED.md, where this documentation\nnow resides.",
"is_bot": false,
"headline": "Document nightly mode and rebuild-drift jobs",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-04-28T15:43:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8029b794bab21e13b961a1c0870d5cc256c3033b",
"body": null,
"is_bot": false,
"headline": "Run CI job only on the alter-macos-ci branch",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-04-28T14:51:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "768f330ffe29b2b534461956a15b11e9969c2d27",
"body": "Update nightly conda cache keys with a pip dependency version suffix\nso cache entries are invalidated when those pip requirements change.\nInstall cobaya, isitgr, and pygobject-stubs in the lockfile-based\nenvironment setup so nightly jobs consistently include required\npackages for linting, matrix runs, and external dependencies.\nNo new tests were added because this change only updates CI\nenvironment",
"is_bot": false,
"headline": "Refresh CI cache for pip dependencies",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-04-28T14:47:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "429c6d99edde0c39dbcd25bffb2b8defa5f723dd",
"body": "This is a temporary addition to allow testing of the new CI\nconfiguration.",
"is_bot": false,
"headline": "Run CI on alter-macos-ci branch",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-04-28T13:47:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2441b186b725a859b2d15c5c190fabda8aeb9f04",
"body": "Add a nightly-only CI mode that installs from committed explicit\nlockfiles on cache misses while keeping pull-request jobs on the\nexisting environment.yml flow.\n\nSwitch nightly cache keys from date-based values to lockfile-hash\nkeys for stable reuse and deterministic invalidation.\n\nAdd lockfile gene\n[…]\nython lock\nmatrix.\n\nRemove the top-level environment name from environment.yml and add\nnon-blocking Linux and macOS nightly drift-rebuild checks to surface\nsolver drift without failing nightly status.",
"is_bot": false,
"headline": "Stabilize nightly CI with lockfiles",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-04-28T02:01:28Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b2129da7ca38fddcb452d43b58947d038d142630",
"body": "Using working method for conda env creation.",
"is_bot": false,
"headline": "Merge pull request #633 from LSSTDESC/improve_conda_ci",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-04-24T14:10:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "82731928f6df34bf936fd5ef52feb03b964516ce",
"body": "Refresh reusable CI environment setup for more reliable Conda behavior:\nbump the cache version from 16 to 33, upgrade setup-miniconda from v3\nto v4, enable auto-activation, disable mamba, and add Conda/Python\ndiagnostic output during environment updates.",
"is_bot": false,
"headline": "Isolate unit coverage artifacts (#632)",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-04-24T04:58:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7d43f297353a07ef19fdcf642af2bdad8898963f",
"body": null,
"is_bot": false,
"headline": "Using working method for conda env creation.",
"author_name": "Sandro Dias Pinto Vitenti",
"author_login": "vitenti",
"committed_at": "2026-04-23T22:37:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "589fe96752a2cb0e8e58eff8c3a642144fb1f9de",
"body": "…) (#631)\n\n* Initial plan\n* Document sign convention for photo-z shifts in PhotoZShift classes\n* Removed redundancy in the dndz note.\n\n---------\n\nCo-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>\nCo-authored-by: vitenti <7767706+vitenti@users.noreply.github.com>\nCo-authored-by: Sandro Dias Pinto Vitenti <vitenti@uel.br>",
"is_bot": false,
"headline": "Document sign convention for photo-z shifts (opposite to Cosmosis CSL…",
"author_name": "Copilot",
"author_login": "Copilot",
"committed_at": "2026-04-23T22:33:51Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e625eb8731747f3af1b29e30916c0bec353c4181",
"body": "Parallel running of targets produces jumbled output from commands.\nTHis uses the MAKEFLAGS variable to enforce the output of each\ncommand as an atomic unit, with no mixing between commands.",
"is_bot": false,
"headline": "Add MAKEFLAGS to ensure coherent output",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-04-16T19:07:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bdb2e2ed92ff3b2589e7bf834eefd0906a350a57",
"body": "* Adding new filter_two_point_combinations.\n* Adding more tests for bin combinations.\n* Expanded `tutorial/two_point_bin_selectors.qmd` with physical motivation, index-based selectors, advanced constraints, and 3x2pt distance-parameter guidance.\n* Added `filter_two_point_combinations` to filter an existing list of `TwoPointXY` without regenerating combinations.\n* Added a new test module covering `filter_two_point_combinations` behavior and selector interactions.",
"is_bot": false,
"headline": "Improve bin pair selectors tutorial with more complete content (#630)",
"author_name": "Sandro Dias Pinto Vitenti",
"author_login": "vitenti",
"committed_at": "2026-04-15T17:12:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9325bd5a1faa85afafc07ed5db9cc8c60f8ab8d2",
"body": "Export missing selectors.",
"is_bot": false,
"headline": "Merge pull request #627 from LSSTDESC/missing_selectors",
"author_name": "Marc Paterno",
"author_login": "marcpaterno",
"committed_at": "2026-04-13T21:22:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3c226abf83bd9156b2a5788efedc3b4fa1079360",
"body": null,
"is_bot": false,
"headline": "Export missing selectors.",
"author_name": "Sandro Dias Pinto Vitenti",
"author_login": "vitenti",
"committed_at": "2026-04-13T20:19:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "622125d81ec1e1726a588b174abb1bbb1ea187e5",
"body": "Normalize window option",
"is_bot": false,
"headline": "Merge pull request #626 from LSSTDESC/normalize_window_option",
"author_name": "Sandro Dias Pinto Vitenti",
"author_login": "vitenti",
"committed_at": "2026-04-10T00:04:55Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 33,
"commits_last_year": 256,
"latest_release_at": "2026-07-30T19:57:17Z",
"latest_release_tag": "v1.15.2",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 42,
"days_since_latest_release": 0,
"mean_days_between_releases": 31
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 62,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": true
},
"ecosystem": {
"packages": []
},
"popularity": {
"forks": 12,
"stars": 32,
"watchers": 64,
"fork_history": {
"days": [
{
"date": "2018-12-05",
"count": 1
},
{
"date": "2019-02-08",
"count": 1
},
{
"date": "2022-03-07",
"count": 1
},
{
"date": "2022-08-04",
"count": 1
},
{
"date": "2022-09-08",
"count": 1
},
{
"date": "2022-10-09",
"count": 1
},
{
"date": "2023-06-07",
"count": 1
},
{
"date": "2025-12-18",
"count": 1
},
{
"date": "2026-02-10",
"count": 1
},
{
"date": "2026-02-18",
"count": 1
},
{
"date": "2026-07-10",
"count": 1
},
{
"date": "2026-07-11",
"count": 1
}
],
"complete": true,
"collected": 12,
"total_forks": 12
},
"star_history": null,
"open_issues_and_prs": 20
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"example",
"examples"
],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [
"Makefile",
"docs/Makefile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [],
"largest_source_bytes": 79152,
"source_files_sampled": 311,
"oversized_source_files": 1,
"agent_instruction_files": [
".github/copilot-instructions.md"
],
"agent_instruction_max_bytes": 698
},
"dependencies": {
"manifests": [
"pyproject.toml",
"setup.cfg",
"setup.py"
],
"advisories": {
"error": "No resolved dependencies carried a version and a supported ecosystem",
"scope": "repository_graph",
"source": null,
"findings": [],
"collected": false,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 0,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 2,
"direct_affected_count": 0
},
"ecosystems": [
"pypi"
],
"dependencies": [
{
"name": "astropy",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": null
},
{
"name": "cobaya",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": null
},
{
"name": "cosmosis",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": null
},
{
"name": "lsstdesc-crow",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": null
},
{
"name": "fitsio",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": null
},
{
"name": "numcosmo_py",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": null
},
{
"name": "numpy",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=2.0,<2.4"
},
{
"name": "pandas",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": null
},
{
"name": "pyccl",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": null
},
{
"name": "pydantic",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": null
},
{
"name": "pyyaml",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": null
},
{
"name": "rich",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": null
},
{
"name": "sacc",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=2.3"
},
{
"name": "scipy",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": null
},
{
"name": "typer",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": null
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "numpy",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "sacc",
"direct": true,
"version": null,
"ecosystem": "pypi"
}
],
"collected": true,
"truncated": false,
"total_count": 2,
"direct_count": 2,
"indirect_count": 0
}
},
"maintainership": {
"issues": {
"open_prs": 3,
"merged_prs": 342,
"open_issues": 17,
"closed_ratio": 0.931,
"closed_issues": 231,
"closed_unmerged_prs": 53
},
"bus_factor": 2,
"bot_contributors": 2,
"top_contributors": [
{
"type": "User",
"login": "marcpaterno",
"commits": 420,
"avatar_url": "https://avatars.githubusercontent.com/u/181471?v=4"
},
{
"type": "User",
"login": "vitenti",
"commits": 136,
"avatar_url": "https://avatars.githubusercontent.com/u/7767706?v=4"
},
{
"type": "User",
"login": "joezuntz",
"commits": 121,
"avatar_url": "https://avatars.githubusercontent.com/u/220537?v=4"
},
{
"type": "User",
"login": "beckermr",
"commits": 53,
"avatar_url": "https://avatars.githubusercontent.com/u/5296416?v=4"
},
{
"type": "User",
"login": "empEvil",
"commits": 37,
"avatar_url": "https://avatars.githubusercontent.com/u/25800254?v=4"
},
{
"type": "User",
"login": "elikrause",
"commits": 18,
"avatar_url": "https://avatars.githubusercontent.com/u/9046576?v=4"
},
{
"type": "User",
"login": "jablazek",
"commits": 18,
"avatar_url": "https://avatars.githubusercontent.com/u/12451014?v=4"
},
{
"type": "User",
"login": "tilmantroester",
"commits": 12,
"avatar_url": "https://avatars.githubusercontent.com/u/26582252?v=4"
},
{
"type": "User",
"login": "damonge",
"commits": 11,
"avatar_url": "https://avatars.githubusercontent.com/u/8809493?v=4"
},
{
"type": "User",
"login": "matt-april",
"commits": 11,
"avatar_url": "https://avatars.githubusercontent.com/u/8204123?v=4"
}
],
"contributors_sampled": 29,
"top_contributor_share": 0.474
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"ci-reusable.yml",
"ci.yml",
"nightly.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": null,
"reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 8,
"reason": "8 out of 9 merged PRs checked by a CI test -- score normalized to 8",
"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": 10,
"reason": "all changesets reviewed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 18 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": 10,
"reason": "30 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 1,
"reason": "dependency not pinned by hash detected -- score normalized to 1",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": 0,
"reason": "Project has not signed or included provenance with any releases.",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 10,
"reason": "0 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "7f2c81eb422e3b4bed9ad3512d2fb53bf67c1498",
"ran_at": "2026-07-31T02:57:33Z",
"aggregate_score": 5.9,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": true
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-31T02:42:30Z",
"oldest_open_prs": [
{
"number": 532,
"created_at": "2025-07-03T16:53:38Z",
"last_comment_at": "2025-07-03T17:10:55Z",
"last_comment_author": "codecov"
},
{
"number": 603,
"created_at": "2026-01-09T12:24:59Z",
"last_comment_at": "2026-01-14T08:26:22Z",
"last_comment_author": "arthurmloureiro"
},
{
"number": 636,
"created_at": "2026-05-13T21:16:55Z",
"last_comment_at": null,
"last_comment_author": null
}
],
"last_merged_pr_at": "2026-07-30T19:17:19Z",
"ci_last_conclusion": null,
"oldest_open_issues": [
{
"number": 267,
"created_at": "2023-05-08T20:07:03Z",
"last_comment_at": "2023-10-10T17:07:20Z",
"last_comment_author": "vitenti"
},
{
"number": 270,
"created_at": "2023-05-15T19:59:00Z",
"last_comment_at": "2025-12-18T20:55:45Z",
"last_comment_author": "marcpaterno"
},
{
"number": 332,
"created_at": "2023-10-18T09:54:10Z",
"last_comment_at": "2025-12-18T20:51:32Z",
"last_comment_author": "marcpaterno"
},
{
"number": 338,
"created_at": "2023-10-25T22:44:29Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 383,
"created_at": "2024-02-15T13:44:19Z",
"last_comment_at": "2024-07-11T14:48:18Z",
"last_comment_author": "marcpaterno"
},
{
"number": 437,
"created_at": "2024-07-16T08:46:14Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 438,
"created_at": "2024-07-17T13:36:50Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 439,
"created_at": "2024-07-18T08:52:56Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 442,
"created_at": "2024-07-18T12:30:35Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 474,
"created_at": "2024-12-02T16:37:41Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 495,
"created_at": "2025-03-17T10:49:37Z",
"last_comment_at": "2025-05-12T09:23:42Z",
"last_comment_author": "JaimeRZP"
},
{
"number": 508,
"created_at": "2025-04-08T09:38:12Z",
"last_comment_at": "2025-05-12T20:07:14Z",
"last_comment_author": "marcpaterno"
},
{
"number": 517,
"created_at": "2025-05-12T19:51:39Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 518,
"created_at": "2025-05-12T20:06:08Z",
"last_comment_at": "2025-08-05T11:43:54Z",
"last_comment_author": "tilmantroester"
},
{
"number": 536,
"created_at": "2025-08-01T20:09:22Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 547,
"created_at": "2025-09-23T16:43:27Z",
"last_comment_at": "2025-10-03T07:42:46Z",
"last_comment_author": "arthurmloureiro"
},
{
"number": 622,
"created_at": "2026-03-11T11:14:49Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/LSSTDESC/firecrown",
"host": "github.com",
"name": "firecrown",
"owner": "LSSTDESC"
},
"metrics": {
"overall": {
"key": "overall",
"band": "excellent",
"name": "Overall health",
"note": "The weighted overall 71 is calibrated to 84 on the published index scale (record calibration 2026-08-02).",
"notes": [
{
"code": "overall_calibration",
"params": {
"raw": 71,
"calibrated": 84,
"calibration": "2026-08-02"
}
}
],
"value": 84,
"inputs": {
"security": 59,
"vitality": 92,
"community": 59,
"governance": 74,
"calibration": "2026-08-02",
"engineering": 68,
"ai_readiness": 60,
"weighted_overall_raw": 71
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "excellent",
"name": "Vitality",
"value": 92,
"weight": 0.21,
"metrics": [
{
"key": "development_activity",
"band": "exceptional",
"name": "Development activity",
"note": null,
"notes": [],
"value": 93,
"inputs": {
"commits_last_year": 256,
"human_commit_share": 0.97,
"days_since_last_push": 0,
"active_weeks_last_year": 42
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "42/52 weeks with commits",
"points": 29.1,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 42
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "256 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 256
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": null,
"notes": [],
"value": 90,
"inputs": {
"releases_count": 33,
"latest_release_tag": "v1.15.2",
"releases_from_tags": false,
"days_since_latest_release": 0,
"mean_days_between_releases": 31
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "33 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 33
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~31 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 31
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "exceptional",
"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": 7,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 7 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 7
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "moderate",
"name": "Community & Adoption",
"value": 59,
"weight": 0.17,
"metrics": [
{
"key": "popularity",
"band": "weak",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 43,
"inputs": {
"forks": 12,
"stars": 32,
"watchers": 64,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "32 stars",
"points": 24.2,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 32
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "12 forks",
"points": 8.7,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 12
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "64 watchers",
"points": 10,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 64
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "good",
"name": "Community health",
"note": null,
"notes": [],
"value": 77,
"inputs": {
"has_readme": true,
"has_license": true,
"readme_badges": null,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": false,
"readme_badge_services": [],
"has_pull_request_template": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (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": 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": 6.3,
"status": "met",
"details": [],
"max_points": 6.3
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "good",
"name": "Sustainability & Governance",
"value": 74,
"weight": 0.23,
"metrics": [
{
"key": "maintainer_resilience",
"band": "moderate",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 60,
"inputs": {
"bus_factor": 2,
"contributors_sampled": 29,
"top_contributor_share": 0.474
},
"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 47% of commits",
"points": 11.8,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 47
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "29 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 29
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 18 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "excellent",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Newcomer PR acceptance. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"newcomer_pr_acceptance"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 92,
"inputs": {
"merged_prs": 342,
"open_issues": 17,
"closed_issues": 231,
"prs_merged_7d": null,
"prs_decided_7d": null,
"prs_merged_30d": null,
"prs_decided_30d": null,
"issue_closed_ratio": 0.931,
"closed_unmerged_prs": 53,
"first_time_authors_30d": null,
"first_time_prs_merged_30d": null,
"first_time_prs_decided_30d": null
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "93% of issues closed",
"points": 39.1,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 93
}
}
],
"max_points": 42
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "342/395 decided PRs merged",
"points": 26,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 342,
"decided": 395
}
}
],
"max_points": 30
},
{
"key": "newcomer_pr_acceptance",
"name": "Newcomer PR acceptance",
"detail": "no first-time contributor's PR decided in 30d",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_newcomer_prs",
"params": {
"days": 30
}
}
],
"max_points": 13
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "all changesets reviewed",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "good",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 72,
"inputs": {
"followers": 230,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "LSSTDESC",
"public_repos": 482,
"account_age_days": 5015
},
"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": "230 followers of LSSTDESC",
"points": 17,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 230,
"login": "LSSTDESC"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "482 public repos, account ~13 yr old",
"points": 25,
"status": "met",
"details": [
{
"code": "public_repos",
"params": {
"count": 482
}
},
{
"code": "account_age_years",
"params": {
"years": 13
}
}
],
"max_points": 25
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "good",
"name": "Engineering Quality",
"value": 68,
"weight": 0.19,
"metrics": [
{
"key": "engineering_practices",
"band": "moderate",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 64,
"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": "8 out of 9 merged PRs checked by a CI test -- score normalized to 8",
"points": 16,
"status": "partial",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "good",
"name": "Documentation",
"note": null,
"notes": [],
"value": 75,
"inputs": {
"topics": [
"cobaya",
"cosmosis",
"likelihood-functions",
"python",
"sampler",
"numcosmo"
],
"has_wiki": false,
"homepage": null,
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "6 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 6
}
}
],
"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": 59,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "moderate",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Branch-Protection, Packaging. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"branch_protection",
"packaging"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 59,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 16,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 2,
"scorecard_aggregate": 5.9
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "8 out of 9 merged PRs checked by a CI test -- score normalized to 8",
"points": 2,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "all changesets reviewed",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 18 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": "30 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 1",
"points": 0.5,
"status": "partial",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "0 existing vulnerabilities detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "exceptional",
"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"
],
"commit_weight_rule": {
"min_commits": 50,
"min_commit_share": 0.1
},
"review_only_matches": 0,
"below_threshold_exposures": [],
"assessed_self_published_locations": 5
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "moderate",
"name": "AI Readiness",
"value": 60,
"weight": 0.04,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.814,
"agent_instruction_files": [
".github/copilot-instructions.md"
],
"agent_instruction_max_bytes": 698
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": ".github/copilot-instructions.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".github/copilot-instructions.md"
}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "79 of 97 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 79,
"sampled": 97
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "moderate",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 51,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [],
"has_dockerfile": false,
"typed_language": false,
"bootstrap_files": [
"Makefile",
"docs/Makefile"
],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [],
"agent_commit_share": 0.01,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0.02
},
"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": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "1 of the last 100 commits agent-authored or agent-credited",
"points": 2,
"status": "partial",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 1,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "2 of the last 100 commits are automated dependency updates",
"points": 8,
"status": "met",
"details": [
{
"code": "dependency_bot_commits",
"params": {
"count": 2,
"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 1",
"points": 1,
"status": "partial",
"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": 79152,
"source_files_sampled": 311,
"oversized_source_files": 1
},
"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": "1/311 source files over 60KB",
"points": 54.8,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 311,
"oversized": 1
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "weak",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"example_dirs": [
"example",
"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": "example, examples",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "example, examples"
}
}
],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
}
],
"classification": {
"top": [
"application"
],
"labels": [
"cli"
],
"scores": {
"cli": 4,
"library": 2
},
"primary": "cli",
"evidence": [
{
"tier": "dependencies",
"label": "cli",
"source": "dep:typer",
"weight": 4
},
{
"tier": "description",
"label": "library",
"source": "description:library",
"weight": 2
}
],
"artifacts": [],
"confidence": "low",
"host_extension": false,
"runs_as_process": true,
"consumed_by_code": false
},
"metrics_version": "2.5.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"Could not fetch pypi package 'firecrown' from its registry",
"No resolved dependencies carried a version and a supported ecosystem"
],
"report_type": "repository",
"generated_at": "2026-07-31T02:57:58.717692Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/l/LSSTDESC/firecrown.svg",
"full_name": "LSSTDESC/firecrown",
"license_state": "standard",
"license_spdx": "BSD-3-Clause"
}