公开记录
软件健康报告模式 0.26.0 · 指标 1.13.0 · 2026-07-22 03:00 UTC

OriginProtocol / origin-dollar

OUSD and OETH are stablecoins that passively accrue yield while you are holding it

JavaScript · Solidity · PythonMIT★ 151 星标⑂ 112 复刻始于 2020年8月在 GitHub 上查看 ↗

OriginProtocol/origin-dollar 的健康指数为 100 分中的 73 分,处于「良好」区间。 其得分最高的类别是Vitality(79/100),最低的是Community & Adoption(59/100)。 最近一次更新在今天。 近期的大部分工作由 2 位贡献者完成。

73
总分 / 100
良好

软件健康指数

指标归入加权类别,统一采用 1–100 量表。总体分先取类别加权平均;当公开证据触发高风险司法辖区政策时,评级会按政策调整,并设置 49(有风险)的上限。AI 就绪度不计入总体分。

73
优秀85-100堪称典范;基本满足所有检验标准
良好70-84健康;仅有轻微不足
中等50-69可接受,但存在明显不足;建议进行审查
存在风险30-49存在重大薄弱环节;采用时应保持审慎
危急1-29问题严重(项目被弃置、仅有单一维护者、缺乏基本工程规范)
活力社区与采用可持续性与治理工程质量安全AI 就绪度

评分画像

每条轴代表一个类别。形状比平均值更重要——健康的对象会填满整个图形,而“一峰一谷”式画像意味着某一维度的优势正掩盖另一维度的风险。

所有权

103 关注者105 个公开仓库始于 2017年8月

该仓库由组织支持——共同承担、可问责的托管责任,可延续于任何单一维护者之后。

按类别列示的指标

活力

项目是否仍有生命——是否仍在编写代码,是否仍在发布版本?

79良好 · 占总体的 22%
评分方式
36/36推送新近度 — 最近一次推送于 0 天前
33.2/36提交节奏 — 52 周中有 48 周有提交
18/18提交量 — 最近一年 188 次提交
10/10OpenSSF Scorecard:Maintained — 30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10
所用输入
commits_last_year188
human_commit_share1
days_since_last_push0
active_weeks_last_year48

发布纪律

52中等
评分方式
27/27有发布版本 — 已发布 15 个发布版本
0/36发布时效 — 最近一次发布版本于 1,082 天前
19.8/27发布节奏 — 约每 101.3 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — 无数据
所用输入
releases_count15
latest_release_tagv0.1.8
releases_from_tags
days_since_latest_release1,082
mean_days_between_releases101.3
已排除计分(无数据或不适用):OpenSSF Scorecard:Signed-Releases。 其余权重已重新归一化。

社区与采用

项目是否拥有用户、下载量与关注度,并具备欢迎贡献者参与的配置?

59中等 · 占总体的 18%
评分方式
35.3/60星标 — 151 个星标
17/25复刻 — 112 个复刻
8.7/15关注者 — 37 位关注者
所用输入
forks112
stars151
watchers37
growth_stateorganic
growth_factor_pct100

社区健康

57中等
评分方式
22.5/22.5README
22.5/22.5许可证 — 可识别的许可证(MIT)
0/18CONTRIBUTING 指南
0/13.5行为准则
0/7.2议题模板
6.3/6.3PR 模板
所用输入
has_readme
has_license
has_contributing
has_issue_template
has_code_of_conduct
has_pull_request_template

可持续性与治理

项目能否在其成员之外延续——巴士系数、响应能力、由谁支持,以及软件包的维护状况?

71良好 · 占总体的 24%
评分方式
25.2/54巴士系数 — 2 位贡献者贡献了半数提交
12.5/22.5提交分布 — 头号贡献者编写了 44% 的提交
13.5/13.5贡献者广度 — 48 位贡献者
10/10OpenSSF Scorecard:Contributors — project has 8 contributing companies or organizations
所用输入
bus_factor2
contributors_sampled48
top_contributor_share0.443
评分方式
34.9/46.8议题解决 — 75% 的议题已关闭
33.4/38.3PR 接受 — 已裁定的 PR 中 1,869/2,141 已合并
15/15OpenSSF Scorecard:Code-Review — all changesets reviewed
所用输入
merged_prs1,869
open_issues189
closed_issues559
issue_closed_ratio0.747
closed_unmerged_prs272
评分方式
30/30所有权背书 — 组织持有
0/20已验证域名
14.5/25所有者影响力 — OriginProtocol 有 103 位关注者
25/25既往记录 — 105 个公开仓库,账户约 8 年
所用输入
followers103
owner_typeOrganization
is_verified
owner_loginOriginProtocol
public_repos105
account_age_days3,276

工程质量

基础的工程与文档实践是否到位?

79良好 · 占总体的 20%

工程实践

82良好
评分方式
24/24CI 工作流 — 3 个工作流
24/24存在测试
16/16Linter 配置 — .eslintrc.js
0/9.6Pre-commit 钩子
0/6.4.editorconfig
18/20OpenSSF Scorecard:CI-Tests — 29 out of 30 merged PRs checked by a CI test -- score normalized to 9
所用输入
has_ci
has_tests
has_editorconfig
has_linter_config
has_precommit_config

文档

75良好
评分方式
30/30README
0/25文档目录
15/15文档 / 主页站点 — https://originprotocol.com
10/10仓库描述
10/10主题标签 — 3 个主题标签
10/10Wiki
所用输入
topicsdefi, ethereum, web3
has_wiki
homepagehttps://originprotocol.com
has_readme
has_docs_dir
has_description

安全

可见的安全与供应链实践是否稳固,且不存在未解决的高风险司法辖区暴露?

73良好 · 占总体的 16%

安全态势

73良好
评分方式
7.5/7.5Binary-Artifacts — no binaries found in the repo
4.5/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.2/2.5CI-Tests — 29 out of 30 merged PRs checked by a CI test -- score normalized to 9
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
7.5/7.5Code-Review — all changesets reviewed
2.5/2.5Contributors — project has 8 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5许可证 — license file detected
7.5/7.5Maintained — 30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
1.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 3
5/5SAST — SAST tool detected
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — 无数据
7.5/7.5Token-Permissions — GitHub workflow tokens follow principle of least privilege
0/7.5Vulnerabilities — 171 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate7.3
已排除计分(无数据或不适用):signed_releases。 其余权重已重新归一化。

AI 就绪度

该仓库在多大程度上具备与 AI 编码代理协同开发与维护的条件?这是一枚独立的实验性徽章——权重为 0.0,因此单独呈现,不影响总体健康评分。

76良好 · 占总体的 0%
评分方式
45/45代理指令 — AGENTS.md, CLAUDE.md
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 100 次人类提交中有 95 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share0.95
agent_instruction_filesAGENTS.md, CLAUDE.md
agent_instruction_max_bytes8,324
评分方式
0/18一条命令的引导启动
22/22自动化测试
11/11Lint / 格式化配置 — .eslintrc.js
11/11静态类型检查 — contracts/tsconfig.json
10/10可复现环境 — Dockerfile, lockfile
10/10已体现的代理实践 — 最近 100 次提交中有 6 次由代理编写或署名代理
0/8自动化维护 — 未观察到自动依赖更新
3/10OpenSSF Scorecard:Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 3
所用输入
has_nix
has_tests
lockfilespnpm-lock.yaml, yarn.lock
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_config
typecheck_configscontracts/tsconfig.json
agent_commit_share0.06
toolchain_manifests
dependency_bot_commit_share0
评分方式
27/45可类型检查的代码 — JavaScript,已配置类型检查(contracts/tsconfig.json)
54/55可控的文件大小 — 采样的 453 个源文件中有 8 个超过 60KB
所用输入
primary_languageJavaScript
largest_source_bytes121,545
source_files_sampled453
oversized_source_files8

关键数据

151GitHub 星标
48贡献者
188最近 12 个月提交数
0距最近推送天数
15发布版本数
2巴士系数(bus factor)
189开放议题
npm软件包生态系统数

数据采集警告

  • Could not fetch npm package 'origin-dollar' from its registry
  • Could not fetch npm package 'origin-defi-contracts' from its registry
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

更多细节

Star 与 Fork 历史 151 ★ / 112 ⇿
151Star
112Fork
15发布

每颗 star 和每个 fork 的添加时间,来自 GitHub 并按天汇总。累计增长位于其构成来源——每日新增——的正上方,二者可相互对照:稳定的自然增长与短暂的突增形态截然不同。当这一差别可被衡量时,它会作为增长真实性予以报告。

04080120160151110102020-092023-082026-07
主版本 0次版本 0修订 2

每个点涵盖 6 天。

OpenSSF Scorecard 7.3 / 10
7.3综合

来自开源项目 OpenSSF Scorecard 的独立、工具无关的安全评估。每项检查奖励的是安全实践本身,而非特定供应商的工具。Scorecard 无法判定的检查项标记为 不适用,并从安全评分中剔除(绝不按零分计)。Scorecard v5.5.0 · 2026-07-22 03:00 UTC

10Binary-Artifactsno binaries found in the repo
6Branch-Protectionbranch protection is not maximal on development and all release branches
9CI-Tests29 out of 30 merged PRs checked by a CI test -- score normalized to 9
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
10Code-Reviewall changesets reviewed
10Contributorsproject has 8 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
3Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 3
10SASTSAST tool detected
0Security-Policysecurity policy file not detected
不适用Signed-Releasesno releases found
10Token-PermissionsGitHub workflow tokens follow principle of least privilege
0Vulnerabilities171 existing vulnerabilities detected
直接依赖 12
注册表软件包版本约束清单文件
npm@chainlink/contracts-ccip1.2.1contracts/package.json
npm@chainsafe/bls^8.2.0contracts/package.json
npm@lodestar/api^1.41.0contracts/package.json
npm@lodestar/config^1.41.0contracts/package.json
npm@lodestar/params^1.41.0contracts/package.json
npm@lodestar/state-transition^1.41.0contracts/package.json
npm@lodestar/types^1.41.0contracts/package.json
npm@lodestar/utils^1.41.0contracts/package.json
npm@talos/clientgithub:oplabs/talos#8f15dbbdc96a4d3cabf932d41e016779c0946266&path:packages/clientcontracts/package.json
npm@types/pg^8.20.0contracts/package.json
npmorigin-morpho-utils^0.1.1contracts/package.json
npmpg^8.20.0contracts/package.json
全部依赖 未采集

本报告未能采集到解析后的依赖集合:GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [
        "defi",
        "ethereum",
        "web3"
      ],
      "is_fork": false,
      "size_kb": 84637,
      "has_wiki": true,
      "homepage": "https://originprotocol.com",
      "languages": {
        "Shell": 19685,
        "Python": 797460,
        "Solidity": 1280678,
        "JavaScript": 2368118,
        "TypeScript": 68125
      },
      "pushed_at": "2026-07-22T01:35:28Z",
      "created_at": "2020-08-03T18:40:09Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-20T11:00:58Z",
      "description": "OUSD and OETH are stablecoins that passively accrue yield while you are holding it",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "master",
      "license_spdx_raw": "MIT",
      "primary_language": "JavaScript",
      "significant_languages": [
        "JavaScript",
        "Solidity",
        "Python"
      ]
    },
    "owner": {
      "blog": "https://www.originprotocol.com",
      "name": "Origin Protocol",
      "type": "Organization",
      "login": "OriginProtocol",
      "company": null,
      "location": "Earth",
      "followers": 103,
      "avatar_url": "https://avatars.githubusercontent.com/u/30638653?v=4",
      "created_at": "2017-08-01T22:05:41Z",
      "is_verified": null,
      "public_repos": 105,
      "account_age_days": 3276
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.1.8",
          "kind": "patch",
          "published_at": "2023-08-04T14:32:01Z"
        },
        {
          "tag": "v0.1.7",
          "kind": "patch",
          "published_at": "2023-08-04T14:26:42Z"
        },
        {
          "tag": "deploy-32",
          "kind": "other",
          "published_at": "2021-12-10T16:54:21Z"
        },
        {
          "tag": "deploy-019",
          "kind": "other",
          "published_at": "2021-07-07T16:50:04Z"
        },
        {
          "tag": "deploy-018",
          "kind": "other",
          "published_at": "2021-06-30T23:23:29Z"
        },
        {
          "tag": "deploy-017",
          "kind": "other",
          "published_at": "2021-05-19T01:14:42Z"
        },
        {
          "tag": "deploy-016",
          "kind": "other",
          "published_at": "2021-03-26T06:47:04Z"
        },
        {
          "tag": "deploy-015",
          "kind": "other",
          "published_at": "2021-02-16T18:12:47Z"
        },
        {
          "tag": "deploy-014",
          "kind": "other",
          "published_at": "2021-02-10T23:52:11Z"
        },
        {
          "tag": "deploy-013",
          "kind": "other",
          "published_at": "2021-02-03T22:52:08Z"
        },
        {
          "tag": "deploy-012",
          "kind": "other",
          "published_at": "2021-02-02T22:22:52Z"
        },
        {
          "tag": "deploy-005",
          "kind": "other",
          "published_at": "2021-01-13T21:50:36Z"
        },
        {
          "tag": "deploy-011",
          "kind": "other",
          "published_at": "2021-01-09T05:09:59Z"
        },
        {
          "tag": "deploy-010",
          "kind": "other",
          "published_at": "2021-01-06T22:55:24Z"
        },
        {
          "tag": "deploy-009",
          "kind": "other",
          "published_at": "2021-01-04T21:21:19Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "07a7fcb052d715409014dd69e69e3c680ee8ae47",
          "body": "* Remove Defender from the repo\n\n* Removed Holesky test chain\n\n* More Holesky changes\n\n* Skip Sonic strategy fork tests\n\n* Fix Base cross chain strategy fork tests\n\n* Fix Base Curve AMO fork test",
          "is_bot": false,
          "headline": "Remove Defender and Holesky (#2944)",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-07-20T11:00:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4f65bb1ceeb7b2697c21065be88f31f0a8ce0a32",
          "body": "* Add OUSD allocation optimizer skill\n\nA Claude Code skill that recommends how to rebalance OUSD collateral\nacross the enabled strategies (Ethereum/Base/HyperEVM Morpho, the Curve\nOUSD/USDC AMO, and the vault buffer) to maximize blended OUSD APY.\n\nBuilds on Shah's `ousd-rebalancing` skill (productio\n[…]\nn\nrebalancer specified. Review verdict: good (HyperEVM held ~9% post-move).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add OUSD allocation optimizer skill (#2941)",
          "author_name": "Domen Grabec",
          "author_login": "sparrowDom",
          "committed_at": "2026-07-16T14:01:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "beb978ffa14013c7162cd5580f2d970c62f58fc5",
          "body": null,
          "is_bot": false,
          "headline": "Add scheduled actions reference doc + CLAUDE.md sync rule (#2940)",
          "author_name": "Domen Grabec",
          "author_login": "sparrowDom",
          "committed_at": "2026-07-15T07:10:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "920900964ed5aa59127ea700f2acfd784bab70c1",
          "body": "* Withdraw all from Hydrex AMO on Base\n\n* Added withdraw from Base Curve AMO to run log",
          "is_bot": false,
          "headline": "Runlog 10 July 2026 - Withdraw all from Hydrex AMO on Base (#2935)",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-07-14T11:50:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b8618fe8e6effeb5cf967d3d311993b75d999e7b",
          "body": "runContainer reports it as the runner's version, letting the Talos admin\nannounce redeploys to Discord. Empty default keeps local builds working.",
          "is_bot": false,
          "headline": "Bake GIT_COMMIT_SHA into runner image (#2939)",
          "author_name": "Domen Grabec",
          "author_login": "sparrowDom",
          "committed_at": "2026-07-13T15:16:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "804b89e2f724dbe6b62a9973ebece829da541917",
          "body": null,
          "is_bot": false,
          "headline": "Bump @talos/client to 8f15dbbdc96a (#2937)",
          "author_name": "Domen Grabec",
          "author_login": "sparrowDom",
          "committed_at": "2026-07-13T10:37:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9e3d02b66ec1e46737eb2d71c8ffe958357c1c34",
          "body": null,
          "is_bot": false,
          "headline": "Check nonce before relaying message (#2938)",
          "author_name": "Shah",
          "author_login": "shahthepro",
          "committed_at": "2026-07-13T10:35:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3e1c272bdf448bbfa15233d89fc2971c8e483b13",
          "body": "* Clean up beacon state cache after each beacon action\n\n* Clean up old cached beacon chain state files if more than 1 day old\n\n---------\n\nCo-authored-by: Nicholas Addison <nick@addisonbrown.com.au>",
          "is_bot": false,
          "headline": "Clean up beacon state cache after each beacon action (#2936)",
          "author_name": "Chris",
          "author_login": "apexearth",
          "committed_at": "2026-07-13T09:13:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c52692d96110c9b9752f39775249ad56ebfa0264",
          "body": "Adds an `ousd_rebalancer` row to the Talos schedules seed so the OUSD\nRebalancer action shows up in the Talos admin UI and can be triggered\nmanually via \"Run now\". The hardhat task `ousdRebalancer` was already\nregistered (and thus in the actions catalog), but with no `schedules`\nrow it was neither l\n[…]\n manual-only rows (stake_validator, queue_proposal, ...), so\nit never fires on a schedule — only on an operator-initiated Run now.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add OUSD rebalancer schedule (manual, disabled) (#2933)",
          "author_name": "Clément",
          "author_login": "clement-ux",
          "committed_at": "2026-07-01T12:35:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c097f0c8cce56ff379dba4caa9594972016528f0",
          "body": null,
          "is_bot": false,
          "headline": "Bump @talos/client to db24b13f33be (#2932)",
          "author_name": "Clément",
          "author_login": "clement-ux",
          "committed_at": "2026-07-01T12:18:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b2c852e1db385b0813ab45e226ab2a0890299e2e",
          "body": "* Change rebalancer config\n\n* Add portfolio APY\n\n* fix\n\n* update scripts\n\n* minor bug fix\n\n* Migrate to Talos",
          "is_bot": false,
          "headline": "Portfolio APY for the Rebalancer (#2880)",
          "author_name": "Shah",
          "author_login": "shahthepro",
          "committed_at": "2026-06-30T19:33:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a29da20357bb2a135bbbe77d8d465947c8819081",
          "body": "* Remove the Convex AMO strategy from the OETH Vault\n\n* Add proposalId for Convex AMO strategy removal in OETH Vault\n\n* Recreated the gov prop to remove OETH Convex AMO\n\n* Removed defeated deploy script\n\n---------\n\nCo-authored-by: Nicholas Addison <nick@addisonbrown.com.au>",
          "is_bot": false,
          "headline": "Remove the Convex AMO strategy from the OETH Vault (#2907)",
          "author_name": "Clément",
          "author_login": "clement-ux",
          "committed_at": "2026-06-30T02:07:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "44312e3d76e8c0340810d3c40a62e9654cc30914",
          "body": null,
          "is_bot": false,
          "headline": "Bump @talos/client to e0c53b2f06b8 (#2931)",
          "author_name": "Chris",
          "author_login": "apexearth",
          "committed_at": "2026-06-24T06:18:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d78437879c5e96a5af2243ca1fd3cc92209192b4",
          "body": null,
          "is_bot": false,
          "headline": "Remove legacy dockerfile (#2930)",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-06-22T08:30:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4e2a537e2b8e02ec8245297b32eec188cc725d85",
          "body": "* add a deploy review skill\n\n* update skill",
          "is_bot": false,
          "headline": "Add /verify-deployment-pr skill for deploy-PR review (#2922)",
          "author_name": "Domen Grabec",
          "author_login": "sparrowDom",
          "committed_at": "2026-06-22T01:18:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e974b2b4dab2a34c97eae898a6995cf4c6d7a5d8",
          "body": "* ci: build runner image off master (was talos)\n\n* remove unneeded run",
          "is_bot": false,
          "headline": "ci: build runner image off master (was talos) (#2929)",
          "author_name": "Domen Grabec",
          "author_login": "sparrowDom",
          "committed_at": "2026-06-17T12:08:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "43037de14164025139abcbb517a8a2b9c6088e71",
          "body": "* add the KMS connector module\n\n* ai review/plan\n\n* supply cron configuration as a json file\n\n* trigger cron-jobs via http request. Query the job result via HTTP\n\n* move actions\n\n* convert to ts\n\n* rename/upgrade ts\n\n* make github build the image instead of docker\n\n* fix node issue\n\n* rename image\n\n\n[…]\nthored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>\nCo-authored-by: Nicholas Addison <nick@addisonbrown.com.au>\nCo-authored-by: Shahul Hameed <10547529+shahthepro@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Talos (#2928)",
          "author_name": "Domen Grabec",
          "author_login": "sparrowDom",
          "committed_at": "2026-06-17T09:19:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6a40630a717124f02b1225180f9fe9b720a1f42c",
          "body": "* Deploy 200 to remove old compounding strategy\n\n* Updated OETH contracts diagram",
          "is_bot": false,
          "headline": "Mainnet Deploy 200 - Remove old Compounding Staking Strategy (#2926)",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-06-17T05:37:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5acff6ac4484d861b1afcb83fdb3213c523a75da",
          "body": "…ompounding Staking Strategy (#2924)",
          "is_bot": false,
          "headline": "Remove all from old Compounding Staking Strategy and deposit to new C…",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-06-15T13:17:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bffc23ebfc4de07eafcaf8a155d3a2e501e63fa7",
          "body": "* Changed initial deposit to 32.25 ETH\n\n* Change initial deposit to 32.25 ETH\n\n* Updated ValidatorState.ACTIVE comment\n\n* Keeping old 1 ETH deposit diagram as that's the referred process\n\n* Bump the deploy script number\n\n* Cap the size of the initial validator deposit\n\n* Prettier\n\n* Update stakeVali\n[…]\nthdrawSsvClusterEth to ignore consensus rewards in NativeStakingSSVStrategy (#2920)\n\n* Deployed mainnet 199\n\n* Add proposal id to deploy 199\n\n---------\n\nCo-authored-by: Domen Grabec <grabec@gmail.com>",
          "is_bot": false,
          "headline": "Deploy 199: Vanilla validator compounding staking strategy (#2921)",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-06-15T04:17:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c6eeb562fb37c0437a0ba5af34574243304eacff",
          "body": "* migrate contracts to Talso signer\n\n* fix fork tests\n\n* add the migration for the OGN rewards module\n\n* refactor deployment\n\n* add some comments\n\n* add base migration files\n\n* add remaining migrations for base and one for sonic\n\n* add hyperevm migration\n\n* remove the old relayer roles\n\n* commit gov\n[…]\n files\n\n* add proposal id\n\n* correct proposal id location\n\n* add remaining mainnet deployments\n\n* add base deployments\n\n* add deployments\n\n* add sonic deployment files\n\n* add hyperevm deployment files",
          "is_bot": false,
          "headline": "[Deploy] Talos Governance Migration (#2913)",
          "author_name": "Domen Grabec",
          "author_login": "sparrowDom",
          "committed_at": "2026-06-13T07:38:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dea63ebaba4f6ff8ef2f1b4ec9d2647ce41e76e7",
          "body": "* Changed initial deposit to 32.25 ETH\n\n* Change initial deposit to 32.25 ETH\n\n* Updated ValidatorState.ACTIVE comment\n\n* Keeping old 1 ETH deposit diagram as that's the referred process\n\n* Bump the deploy script number\n\n* Cap the size of the initial validator deposit\n\n* Prettier\n\n* Update stakeVali\n[…]\n in NativeStakingSSVStrategy (#2920)\n\n* Add prop id to deploy 196 script (#2917)\n\n---------\n\nCo-authored-by: Domen Grabec <grabec@gmail.com>\n\n---------\n\nCo-authored-by: Domen Grabec <grabec@gmail.com>",
          "is_bot": false,
          "headline": "Allow initial deposits to activate validators (#2885)",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-06-10T11:49:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a3a783cc05eccfaa2f15fed3ceb45bcf297d81a7",
          "body": null,
          "is_bot": false,
          "headline": "Add prop id to deploy 196 script (#2917)",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-06-10T05:12:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a1c7d1408edab4a0acf6c7111bd6063795bd7664",
          "body": "…use rebases) (#2911)\n\n* migrate contracts to Talso signer\n\n* fix fork tests\n\n* add the migration for the OGN rewards module\n\n* refactor deployment\n\n* add some comments\n\n* add base migration files\n\n* add remaining migrations for base and one for sonic\n\n* add hyperevm migration\n\n* remove the old relayer roles",
          "is_bot": false,
          "headline": "Migrate vault & cross-chain operators to the new Talos signer (+ unpa…",
          "author_name": "Domen Grabec",
          "author_login": "sparrowDom",
          "committed_at": "2026-06-09T20:01:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "08c2f4df6af0b94f44c9b123a8c5ae8027daeb3a",
          "body": null,
          "is_bot": false,
          "headline": "Fix removeSsvValidator to work with Clusters with ETH payments (#2908)",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-06-09T09:06:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2efa2a31222dc3937c0fbf290211d07b95422d9b",
          "body": null,
          "is_bot": false,
          "headline": "change pre-commit hook to pnpm (#2910)",
          "author_name": "Domen Grabec",
          "author_login": "sparrowDom",
          "committed_at": "2026-06-02T04:09:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2e58be9c96c04310a7a2d9808196bc6e60732f25",
          "body": "* Fix contracts cron image pnpm version\n\n* Changed package.json to use pnpm",
          "is_bot": false,
          "headline": "Fix contracts cron image pnpm version (#2904)",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-06-01T03:24:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9c90a5d882e8228f8a0ce836a07eff2552cad3b0",
          "body": "* Governance proposal to claim the SSV from the staking strategies\n\n* Renamed Hardhat task depositSSV to depositCluster and have it work with ETH deposits\nRemoved old registerValidators and stakeValidators Hardhat tasks using the P2P APIs\nHardhat registerValidator now works with ETH deposits\n\n* Bump deploy number\n\n* Added .migration record",
          "is_bot": false,
          "headline": "SSV Cluster migration cleanup (#2892)",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-05-26T23:31:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cd7218c2b070a52470b2621c3ce0ce12378ba700",
          "body": null,
          "is_bot": false,
          "headline": "lint (#2896)",
          "author_name": "Domen Grabec",
          "author_login": "sparrowDom",
          "committed_at": "2026-05-13T09:49:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1e066d888d2e3ebd652b754e3fdfae51978c99ce",
          "body": "* Remove Supernova strategy from OETH Vault\n\n* Remvoe supernova fixture\n\n* add proposal id\n\n---------\n\nCo-authored-by: Domen Grabec <grabec@gmail.com>",
          "is_bot": false,
          "headline": "Remove Supernova strategy from the OETH Vault (#2890)",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-05-13T09:34:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "69923754bce85c0d4dd3898e35b9458489a1baa8",
          "body": "* Deploy OUSD and OETH Vaults\n\n* Deploy Base and Sonic Vaults\n\n* prettify\n\n* fix failing fork test",
          "is_bot": false,
          "headline": "[Ethereum][Base][Sonic] Re-deploy Vaults (#2894)",
          "author_name": "Shah",
          "author_login": "shahthepro",
          "committed_at": "2026-05-12T08:05:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1dd041f730ddf93b32b29dac3bd9f5bd3ea5f744",
          "body": "* Unpause rebase in fork test fixtures\n\nThe four production vaults (OUSD, OETH on mainnet, OETHb on Base,\nOSonic on Sonic) sit with `rebasePaused = true` on chain between\nstrategist rebase cycles. Fork tests, which start from current chain\nstate, inherit that and revert with `Rebasing paused` on eve\n[…]\n140 >= 982979757405`.\n\nBump the tolerance on these specific assertions to 3%. Other\nassertions in the file (which deposit into balanced pools) keep the\ndefault 1% tolerance.\n\nLocal run: 73/73 passing.",
          "is_bot": false,
          "headline": "Fix fork tests broken by permissioned rebase (#2893)",
          "author_name": "Clément",
          "author_login": "clement-ux",
          "committed_at": "2026-05-11T09:22:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4d99a860b1d478dee208560fbb21b52df0ab5081",
          "body": "* add deploy resilience\n\n* deploy Hydrex AMO\n\n* move a proxy to a more appropriate location",
          "is_bot": false,
          "headline": "Hydrex AMO deployment (#2887)",
          "author_name": "Domen Grabec",
          "author_login": "sparrowDom",
          "committed_at": "2026-05-11T09:17:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "960eda756ca39710fa850fbbb15ff2a9166a43cb",
          "body": null,
          "is_bot": false,
          "headline": "Remove LayerZero now Plume has been sunset (#2891)",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-05-11T06:43:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "800ef7a446f678cd9b4b58d05f82fbaade5535ab",
          "body": "* Add permissioned rebase\n\n* Remove public rebase",
          "is_bot": false,
          "headline": "Add permissioned rebase (#2889)",
          "author_name": "Shah",
          "author_login": "shahthepro",
          "committed_at": "2026-05-10T09:53:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3de581ac7ad1aaa0a199237aa8b77812788f0dbd",
          "body": "* Add Safe Module for permissioned rebase\n\n* update address checksum\n\n* Deploy modules\n\n* Add sonic deployment\n\n* redeploy sonic contract",
          "is_bot": false,
          "headline": "Add Safe Module for permissioned rebase (#2888)",
          "author_name": "Shah",
          "author_login": "shahthepro",
          "committed_at": "2026-05-06T21:23:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b26695ae31bd4d4378d1b1ccdb7a8a41d50f6540",
          "body": "* initial commit of the hydrex AMO\n\n* move gauge mock to deploy file\n\n* move gauge mock to deploy file\n\n* remove mock gauge\n\n* adjust harvester",
          "is_bot": false,
          "headline": "Base Hydrex AMO (#2886)",
          "author_name": "Domen Grabec",
          "author_login": "sparrowDom",
          "committed_at": "2026-05-06T07:47:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bc044c5a4aa9b2b3676d4c356ac257bacee35818",
          "body": "* Add consol option to doAccounting Hardhat task\n\n* Changed doAccounting Action to use the ConsolidationController\n\n* Added getValidators Hardhat task\nRefactored getting Beacon chain data to use Lodestar. So removed Beaconcha.in API use\n\n* Removed reference to BEACONCHAIN_API_KEY\nFormatting of getVa\n[…]\nndencies\n\n* Changed back to using GET for bulk validators\n\n* Bumped deploy script number\n\n* Updated Claude file with SSV cluster payment details\n\n* Prettier\n\n* Deployed 192_migrate_ssv_clusters_to_eth",
          "is_bot": false,
          "headline": "Update of SSV clusters to use ETH payment (#2860)",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-05-05T02:45:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "07bbede80a3eee6ce1618d60ad6a9cf798905eb8",
          "body": "…idator Hardhat tasks (#2871)\n\n* Added consol option to withdrawValidator Hardhat task\n\n* Add consol option to exitValidators Hardhat task\n\n* Added consol option to the stakeValidator Hardhat task\n\n* Added run log to withdraw from Compounding Staking Strategy\n\n* getValidators to use GET rather than POST beacon chain API",
          "is_bot": false,
          "headline": "Added consol option to withdrawValidator, exitValidators and stakeVal…",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-05-04T20:15:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "78e46692dbc4b7473b249d43b9fb18aa248480ef",
          "body": "…ces task (#2881)\n\nWhen snapBalances runs with --consol, the tx is sent to ConsolidationController\nbut the BalancesSnapped event is emitted by the target strategy. The receipt's\ndecoded events are bound to the controller's ABI so the event lookup failed\nand the task threw even though the tx succeeded.\n\nCo-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: decode BalancesSnapped event via strategy interface in snapBalan…",
          "author_name": "Domen Grabec",
          "author_login": "sparrowDom",
          "committed_at": "2026-04-30T10:26:12Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a2c24b5d84363a4e639e1a34b4bbdfaa8ade6d87",
          "body": null,
          "is_bot": false,
          "headline": "Added updateWOETHPrice Hardhat task (#2884)",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-04-30T09:50:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "354a7a55ae06b57ebbd7f1948a9c28b282010c26",
          "body": null,
          "is_bot": false,
          "headline": "Added fundWithdrawals Hardhat task (#2883)",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-04-30T09:04:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dbae51ad8d9f6f2ec24073414e2a6d46716d1ddd",
          "body": null,
          "is_bot": false,
          "headline": "add defender action to backfill a transaction whenever necessary (#2879)",
          "author_name": "Domen Grabec",
          "author_login": "sparrowDom",
          "committed_at": "2026-04-17T12:18:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2f505429c6861187a292938b8f84f298e8ebc161",
          "body": null,
          "is_bot": false,
          "headline": "Include domain in the key for crosschain relay (#2878)",
          "author_name": "Shah",
          "author_login": "shahthepro",
          "committed_at": "2026-04-17T08:57:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "193b626882cf95e719af6793fa5f3e07c41e0b7c",
          "body": "* Fix surplus funding tests\n\n* Add support for simulation\n\n* Try new alg\n\n* Write to file\n\n* Cleanup code\n\n* change to UTC timestamp\n\n* Add address to JSON export",
          "is_bot": false,
          "headline": "Simulate hypothetical balance on the rebalancer (#2877)",
          "author_name": "Shah",
          "author_login": "shahthepro",
          "committed_at": "2026-04-14T09:33:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "70c2c1c595eb9e29c53dc9ae6967ee4b98a7b5fb",
          "body": "* Add core logic and safe module\n\n* Update core logic\n\n* Add defender action\n\n* Rename methods, add readme file\n\n* Push discord notification and rollup config changes\n\n* Fix AMO balance\n\n* Add whitelist to module and a few code changes\n\n* tweaks to rebalancer\n\n* Refactor and simplify rebalancer\n\n* M\n[…]\nsage\n\n* Bug fixes\n\n* Add more tests\n\n* add more tests\n\n* clean up code\n\n* fix discord message\n\n* Fix discord message\n\n* cleanup code\n\n---------\n\nCo-authored-by: Nick Addison <nick@addisonbrown.com.au>",
          "is_bot": false,
          "headline": "Automated Rebalancer (#2835)",
          "author_name": "Shah",
          "author_login": "shahthepro",
          "committed_at": "2026-04-13T08:49:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "df67f72c1c8502a31db503b0c903c942e2cc7ca4",
          "body": "* Add support for handling multiple CCTP messages in a single tx\n\n* Change gas limit\n\n* Restore tx level cache\n\n* Fix bug",
          "is_bot": false,
          "headline": "Add support for handling multiple CCTP messages in a single tx (#2873)",
          "author_name": "Shah",
          "author_login": "shahthepro",
          "committed_at": "2026-04-13T07:59:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d72db1bc76ea9b41e0b889d2321d85b008167c1e",
          "body": null,
          "is_bot": false,
          "headline": "change docker configuration (#2875)",
          "author_name": "Domen Grabec",
          "author_login": "sparrowDom",
          "committed_at": "2026-04-09T13:16:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "10b029e9d7013a12afdd8d28e6ee947bcd886199",
          "body": "…ter campaigns (#2845)\n\n* feat: add Defender Action to update Votemarket epochs for Curve Pool Booster campaigns on Arbitrum\n\n* feat: add new action variable and update action for Votemarket epochs\n\n* prettier",
          "is_bot": false,
          "headline": "feat: Defender Action to update Votemarket epochs for Curve Pool Boos…",
          "author_name": "Clément",
          "author_login": "clement-ux",
          "committed_at": "2026-04-08T11:22:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f880ea79c283af3ac5ee85b4e256025c16f61d6a",
          "body": "* Deploy of 190_remove_3rd_native_staking_strategy\n\n* Bump deploy script number for remove_3rd_native_staking_strategy\n\n* Add proposal id to deploy script",
          "is_bot": false,
          "headline": "[Ethereum] Deploy 190 - Remove 3rd Native Staking Strategy (#2872)",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-04-07T13:42:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5cb9b7a3c7aeb1f15838c16cf2533f538b41022c",
          "body": "* Deploy script to remove the 3rd native staking strategy from the OETH Vault\n\n* Remove 3rd native staking strategy from Defender Actions doAccounting and harvest\n\n* Removed 3rd native staking strategy from OETH contract diagram\n\n* Removed old validator registration and staking using P2P",
          "is_bot": false,
          "headline": "Remove 3rd native staking strategy from OETH Vault (#2866)",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-04-06T09:45:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7481780d608b6f11e2475058ff02cf47ee3e4ed8",
          "body": "* Deploy 187 and 188\n\n* prettier\n\n* Move 187/188 to 188/189",
          "is_bot": false,
          "headline": "Deploy 187 and 188: CoW harvesting EIP-1271 for OETH and OGN (#2858)",
          "author_name": "Clément",
          "author_login": "clement-ux",
          "committed_at": "2026-04-02T15:17:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ba13adcc2b8c0a8b30c7571069d0f8ce19ed060a",
          "body": null,
          "is_bot": false,
          "headline": "[Ethereum] Deploy 187 - Upgrade strategies for better harvesting (#2869)",
          "author_name": "Shah",
          "author_login": "shahthepro",
          "committed_at": "2026-04-02T14:44:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "87703073c3c848ab1902a0d964fe5f3c64a21105",
          "body": null,
          "is_bot": false,
          "headline": "Fix Slither CI (#2870)",
          "author_name": "Shah",
          "author_login": "shahthepro",
          "committed_at": "2026-04-02T13:37:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1cdb84f067205e717b302e3a68e5171b13e80c1d",
          "body": null,
          "is_bot": false,
          "headline": "Fix removeStrategy (#2867)",
          "author_name": "Shah",
          "author_login": "shahthepro",
          "committed_at": "2026-04-02T11:34:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6114b09fefc11ad82e3caa1879a75ac1ac734838",
          "body": "* Add april runlog\n\n* Fix comments",
          "is_bot": false,
          "headline": "April runlog (#2865)",
          "author_name": "Shah",
          "author_login": "shahthepro",
          "committed_at": "2026-04-01T16:44:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "90cc90ef34f34083a158db6d54a37a5726b00e35",
          "body": null,
          "is_bot": false,
          "headline": "Add Defender Action to claim SSV rewards (#2864)",
          "author_name": "Shah",
          "author_login": "shahthepro",
          "committed_at": "2026-04-01T15:06:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ca5ac399f14128c65f723364696f82d1da45300f",
          "body": "* Fix failing tests\n\n* Fix HyperEVM tests",
          "is_bot": false,
          "headline": "Fix failing tests (#2863)",
          "author_name": "Shah",
          "author_login": "shahthepro",
          "committed_at": "2026-04-01T14:01:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ef29c09256bcb58269efe502c70e2a2096c90f7",
          "body": "* Forward rewards to another address\n\n* prettify\n\n* Make strategist harvest rewards\n\n* Fix CI and remove pause functionality\n\n* Fix failing tests\n\n* fix tests\n\n* Rename modifier\n\n* Fix renamed modifier\n\n* Fix unit tests",
          "is_bot": false,
          "headline": "Add support for Strategist to harvest rewards (#2853)",
          "author_name": "Shah",
          "author_login": "shahthepro",
          "committed_at": "2026-04-01T09:58:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "773718352ad62c8f59f0c4e20b20337547d120c0",
          "body": "* Packages must now be over 7 days old\n\n* Upgraded Lodestar deps",
          "is_bot": false,
          "headline": "Upgrade Lodestar deps (#2861)",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-04-01T08:10:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "04e698e65cc833bdd760e4d50caedf095d53218c",
          "body": "…d (#2862)",
          "is_bot": false,
          "headline": "when fetching validator beacon state respect the slot parameter passe…",
          "author_name": "Domen Grabec",
          "author_login": "sparrowDom",
          "committed_at": "2026-04-01T07:53:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3a8ab77cb1b72e70f2e50dc6672eba817c2f4fb3",
          "body": null,
          "is_bot": false,
          "headline": "remove unneeded file (#2844)",
          "author_name": "Domen Grabec",
          "author_login": "sparrowDom",
          "committed_at": "2026-03-24T03:47:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1a8b4653f8c7227214d27b96556f080036c1be1c",
          "body": "* Add gasLimit for crosschain relays\n\n* fix block lookback",
          "is_bot": false,
          "headline": "Add gasLimit for crosschain relays (#2849)",
          "author_name": "Shah",
          "author_login": "shahthepro",
          "committed_at": "2026-03-23T17:34:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cb7cdfd6821ca1bf5b58099ae43899add936e2e3",
          "body": null,
          "is_bot": false,
          "headline": "Add HyperEVM script to rollup config (#2852)",
          "author_name": "Shah",
          "author_login": "shahthepro",
          "committed_at": "2026-03-23T10:06:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "20bac14ba05e3cd0e8db8f32ca8a96bfab6ba662",
          "body": null,
          "is_bot": false,
          "headline": "Update Readme file (#2851)",
          "author_name": "Shah",
          "author_login": "shahthepro",
          "committed_at": "2026-03-23T09:55:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "01891e7213df15f032692b6c07677569e6cc6772",
          "body": "…2846)\n\n* deploy: 186 + 047 MerklPoolBoosterBribesModule on Mainnet and Base\n\n* feat: add manageMerklBribes actions to README and rollup config",
          "is_bot": false,
          "headline": "Deploy 186 + 047: MerklPoolBoosterBribesModule on Mainnet and Base (#…",
          "author_name": "Clément",
          "author_login": "clement-ux",
          "committed_at": "2026-03-20T09:14:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2f8a8a5621707b4b0c2ef2032fe26df266521ee2",
          "body": "Re-deploys HarvestingEIP1271 with contract improvements:\n- Replace arbitrary execute() with restricted transferTokens() for safer token recovery\n- Remove redundant safeApprove(0) reset before max approval in setSellTokenConfig\n- Add NotAllowed error for transferTokens on configured tokens",
          "is_bot": false,
          "headline": "Re-deploy 183: CoW harvesting EIP-1271 validator (#2847)",
          "author_name": "Clément",
          "author_login": "clement-ux",
          "committed_at": "2026-03-20T08:47:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "18624654138d97170b09297ce97d98cdafee1b23",
          "body": "* Add consol option to doAccounting Hardhat task\n\n* Changed doAccounting Action to use the ConsolidationController\n\n* Added getValidators Hardhat task\nRefactored getting Beacon chain data to use Lodestar. So removed Beaconcha.in API use\n\n* Removed reference to BEACONCHAIN_API_KEY\nFormatting of getVa\n[…]\nl\n\n* Got getValidators working with dRPC\n\n* Added consol option to verifyDeposits which has to call snapBalances on the ConsolidationController\n\n* FIxed consolidation fork tests\n\n* Updated Claude file",
          "is_bot": false,
          "headline": "Validator Consolidation tasks (#2840)",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-03-20T07:40:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fbaa028eaf42e13ea58f3ca838b596b26fcf415b",
          "body": "…ipts (#2843)\n\nAdds a Gnosis Safe module that allows an operator (Defender relayer) to\ntrigger `bribeAll` on the PoolBoosterFactoryMerkl contract through the Safe,\nanalogous to the existing CurvePoolBoosterBribesModule.\n\n- `MerklPoolBoosterBribesModule.sol`: Safe module with `bribeAll(address[])`\n  \n[…]\nalidatorRegistrator as operator\n- `deploy/base/047_merkl_pb_bribes_module.js`: Base deploy with\n  OZRelayerAddress as operator\n- `tasks/tasks.js`: registers `manageMerklPoolBoosterBribes` Hardhat task",
          "is_bot": false,
          "headline": "feat: add MerklPoolBoosterBribesModule + Defender action + deploy scr…",
          "author_name": "Clément",
          "author_login": "clement-ux",
          "committed_at": "2026-03-19T14:08:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "59773d07a62c413adbae0dfdecd414260a362056",
          "body": "* Prepare Repo for HyperEVM setup\n\n* prettify\n\n* Add fork tests and configure defender actions\n\n* [Ethereum][HyperEVM] Deploy CrossChain strategy for HyperEVM (#2842)\n\n* [Ethereum] Deploy 183 - HyperEVM Strategy Proxy\n\n* Deploy 184 - HyperEVM Master Strategy implementation\n\n* Tweak deploy script for HyperEVM a bit\n\n* Deploy HyperEVM contracts\n\n* Add the Claude script\n\n* Add fork tests\n\n* Fix Ethereum fork test",
          "is_bot": false,
          "headline": "Prepare Repo for HyperEVM setup (#2839)",
          "author_name": "Shah",
          "author_login": "shahthepro",
          "committed_at": "2026-03-18T08:30:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f2a92d430892033a04c5263334454d8fcf21a594",
          "body": null,
          "is_bot": false,
          "headline": "Deploy CoW Harvester (#2841)",
          "author_name": "Clément",
          "author_login": "clement-ux",
          "committed_at": "2026-03-17T15:37:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "056e347deafff97b1eaa76bac39dd1f911fd83a4",
          "body": null,
          "is_bot": false,
          "headline": "fix: typo 'nonrebase_cotract' -> 'nonrebase_contract' in tests (#2744)",
          "author_name": "phessophissy",
          "author_login": "phessophissy",
          "committed_at": "2026-03-17T03:27:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f1eb689ae79c1b8ad845dbe6ef089623513e75ec",
          "body": "* Deploy 181 - validator consolidation\n\n* Added entry to .migrations for 181 deploy\n\n* Added proposal id for deploy 181",
          "is_bot": false,
          "headline": "Deploy 181 - Validator Consolidation (#2833)",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-03-16T05:38:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4d0a53abe66ee16c76368d261651543174070405",
          "body": "* Deploy 182\n\n* Update CurvePoolBoosterBribesModule address in mainnet addresses",
          "is_bot": false,
          "headline": "Deploy 182: chunk Curve PB module (#2838)",
          "author_name": "Clément",
          "author_login": "clement-ux",
          "committed_at": "2026-03-13T12:17:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7c0395309fcb408452db89b85e574e2d0ddc8b3f",
          "body": "…(#2837)\n\n* Enhance CurvePoolBoosterBribesModule: Add support for managing selected pool boosters and chunked transactions\n\n* prettier",
          "is_bot": false,
          "headline": "Fix Curve PB bribe management gas by chunking explicit booster lists …",
          "author_name": "Clément",
          "author_login": "clement-ux",
          "committed_at": "2026-03-13T11:17:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a96e9b372ac3e24b068eb688a271adb1f3b9f2e0",
          "body": null,
          "is_bot": false,
          "headline": "add march runlog (#2836)",
          "author_name": "Domen Grabec",
          "author_login": "sparrowDom",
          "committed_at": "2026-03-12T23:11:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d8827e0ec2727a34ad6384901dda8fb81d1e3c49",
          "body": "* fix ci\n\n* fix ci\n\n* remove unused PoolBoosterMerkl contract and associated tests\n\n* update balance check in algebraAmoStrategy tests to add 3 instead of 2",
          "is_bot": false,
          "headline": "Fix CI (#2834)",
          "author_name": "Clément",
          "author_login": "clement-ux",
          "committed_at": "2026-03-10T15:31:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "817fb11f925e775617aa8c53ab2a823a303be5ae",
          "body": "* Deploy Supernova AMO and upgrade Vault\n\n* set deploy time in migrations\n\n* add proposal id to deploy file\n\n* slither and prettier",
          "is_bot": false,
          "headline": "Deploy 180: Deploy Supernova AMO and upgrade Vault (#2831)",
          "author_name": "Domen Grabec",
          "author_login": "sparrowDom",
          "committed_at": "2026-03-09T10:58:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "52444881dc9974c96c15b32ee280aa6d3e96c852",
          "body": "* upgrade cross-chain remote strategy\n\n* prettier",
          "is_bot": false,
          "headline": "Deploy Base 46: upgrade cross-chain remote strategy (#2830)",
          "author_name": "Domen Grabec",
          "author_login": "sparrowDom",
          "committed_at": "2026-03-09T09:56:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1d6c82a374a60777adadcad79eabceb97ea237f9",
          "body": "* WIP validator consolidation\n\n* Fixes\n\n* Fixed unit tests\n\n* Added deploy script for consolidation\n\n* Fix the Native Staking Strategy fork tests for the second SSV cluster\n\n* Cleanup\n\n* Made ConsolidationController Ownable\n\n* WIP removing target strategy balance check to confirm consolidation\n\n* Al\n[…]\nes to run for snaps before the consolidation was started\n\n* Bump deploy number\n\n* Fixed consolidation fork tests\n\n* Prettier\n\n* Bump the crosschain_upgrade_remote deploy number\n\n* Bumped deploy number",
          "is_bot": false,
          "headline": "Validator consolidation (#2758)",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-03-09T09:54:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bbb45b61e4c9a7c6ce5aae22fdd28dcfebbb9bb1",
          "body": "* Upgrade OUSD Morpho V2 strategy implementation\n\n* add proposal id",
          "is_bot": false,
          "headline": "Deploy 179: Upgrade OUSD Morpho V2 strategy implementation (#2829)",
          "author_name": "Domen Grabec",
          "author_login": "sparrowDom",
          "committed_at": "2026-03-09T09:21:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a9b33784287fd70ad5b121a33d5304c7fb3da412",
          "body": "* prettier\n\n* slither and prettier\n\n* minor change\n\n* add comments and slither disables\n\n* lint",
          "is_bot": false,
          "headline": "Lint and slither (#2832)",
          "author_name": "Domen Grabec",
          "author_login": "sparrowDom",
          "committed_at": "2026-03-09T09:20:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ff627d2c5535ad959eb215e6b084d5e5d466c275",
          "body": "* initial commit\n\n* add some deployment files\n\n* commit for easier diffs\n\n* rename the variable in stableswap\n\n* fix the fork tests and adjust them to refactoring\n\n* fix fork tests\n\n* add strategy file\n\n* start re-working tests\n\n* migrate some more tests\n\n* more work on fork tests\n\n* fix the fork te\n[…]\ndirection\n\n* add range protection for maxDepeg\n\n* simplify code\n\n---------\n\nCo-authored-by: Nick Addison <nick@addisonbrown.com.au>\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Supernova AMO (#2800)",
          "author_name": "Domen Grabec",
          "author_login": "sparrowDom",
          "committed_at": "2026-03-06T10:18:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6b88f3d3f2a88d9bd68a05f8d714d20fdb19b271",
          "body": "* initial commit\n\n* add deploy file\n\n* account for owner liquidity and available liquidity\n\n* prettier\n\n* add comment\n\n* add support to redeem only what is available from 4626 Vault\n\n* enforce the expected liquidity adpater when estimating the additional possible liquidity in the withdrawAll\n\n* Cros\n[…]\n\n\nCo-authored-by: Shah <10547529+shahthepro@users.noreply.github.com>\nCo-authored-by: Nicholas Addison <nick@addisonbrown.com.au>\nCo-authored-by: Clément <55331875+clement-ux@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Enable MorphoV2 WithdrawAll (#2783)",
          "author_name": "Domen Grabec",
          "author_login": "sparrowDom",
          "committed_at": "2026-03-04T16:13:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d80141dbf4a0659afdcbb20077671f2420c9b9cd",
          "body": "…(#2828)",
          "is_bot": false,
          "headline": "[MerklPB] Deploy Mainnet and Base MerklPBFactory and Implementation. …",
          "author_name": "Clément",
          "author_login": "clement-ux",
          "committed_at": "2026-03-04T12:03:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ee0d1e8c048a6c66c62740a169ccbf0ac55d6ef2",
          "body": "* Run log - Reallocate from Curve AMO Strategy to Compounding Staking Strategy\n\n* Run log - Base AMO withdraw",
          "is_bot": false,
          "headline": "Run log - 2 March 2026 (#2817)",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-03-04T03:02:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6b7393dd856ca03c21751cc49f66bfed284f8d28",
          "body": "* [MerklPB] Migrate PoolBoosterFactoryMerkl to Clones (minimal proxy)\n\n- PoolBoosterMerkl: refactor to initializable pattern for clone compatibility\n- PoolBoosterFactoryMerkl: use Clones.cloneDeterministic instead of CREATE2\n- Add implementation, strategist storage with governor setters\n- Simplify c\n[…]\nbe()\n\n* Move acceptConditions call inside _setMerklDistributor\n\n* Add removePoolBoosterByIndex for gas-efficient removal\n\n* prettier\n\n---------\n\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[MerklPB] Migrate PoolBoosterFactoryMerkl to Beacon Proxy (#2796)",
          "author_name": "Clément",
          "author_login": "clement-ux",
          "committed_at": "2026-03-03T07:54:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e4dfff83e7c9b995b339da57e88cc9454315f510",
          "body": "* [Base] Deploy 040 vault upgrade\n\n* Fix _mintWETH funding amount in base fixture\n\nFund account with enough ETH to cover the WETH deposit amount\ninstead of the default 100 ETH.",
          "is_bot": false,
          "headline": "[Base] Deploy 040 Vault Upgrade (#2814)",
          "author_name": "Clément",
          "author_login": "clement-ux",
          "committed_at": "2026-03-02T07:58:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6f80e5770315c646500a7fa1c3f83b0f11c2f716",
          "body": "* Replace deprecated mint(address,uint256,uint256) with mint(uint256) in IVault\n\nUpdate the IVault interface to use the new single-param mint signature\nand fix all contract callers: MockNonRebasing, MockRebornMinter,\nAbstractOTokenZapper, OSonicZapper, and PlumeBridgeHelperModule.\n\n* Rewrite Ethereu\n[…]\nt MockRebornMinter.redeem() at requestWithdrawal instead of reverting\n\n* Fix prettier formatting in bridge-helper base fork test\n\n* Add requestWithdrawal boolean to BaseBridgeHelperModule.depositWOETH",
          "is_bot": false,
          "headline": "Async withdrawal + mint(uint256) cleanup (#2813)",
          "author_name": "Clément",
          "author_login": "clement-ux",
          "committed_at": "2026-02-24T22:15:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9b7a703fd9208048cdbf9d4dff92db2edddb8391",
          "body": null,
          "is_bot": false,
          "headline": "Deploy OUSD Auto-Withdrawal Safe Module (#2812)",
          "author_name": "Shah",
          "author_login": "shahthepro",
          "committed_at": "2026-02-24T09:00:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f692b0682e5c519b86dcd869819b5be42efdff6d",
          "body": "* Add Auto-Withdrawal Safe Module\n\n* Get rid of rate limit logic\n\n* Add tests\n\n* Address CR comments",
          "is_bot": false,
          "headline": "Add Auto-Withdrawal Safe Module (#2807)",
          "author_name": "Shah",
          "author_login": "shahthepro",
          "committed_at": "2026-02-24T08:33:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d459e14e1d2664d88cee8e3424f73de99635f4da",
          "body": "* Fix OUSD/USDC prices in amoStrat Hardhat task\n\n* Run log - 23 Feb withdraw from Morpho v2 OUSD Strategy\n\n* Update script",
          "is_bot": false,
          "headline": "Run log - 23 Feb withdraw from Morpho v2 OUSD Strategy (#2809)",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-02-23T05:37:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "db6d806ffd9edacfaaef1394256a68a7a6a95ca6",
          "body": "* Updated Vault hierarchy\n\n* Updated OUSD contract diagram\n\n* Added symbol to snapVault Hardhat task for OUSD\nAdded  symbol to queueLiquidity hardhat task for OUSD\n\n* regenerated using latest sol2uml just to be safe",
          "is_bot": false,
          "headline": "Document updates and snapVault for OUSD (#2806)",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-02-19T20:16:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "220369aea340d4bdb7d5da8e649fbbaa0ece9a4d",
          "body": "* Run log Allocate 100k USDC to the Cross-chain strategy\n\n* Updated USDC balance message\n\n* Updated withdraw amount",
          "is_bot": false,
          "headline": "Run log - Allocate 100k USDC to the Cross-chain strategy (#2805)",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-02-19T11:21:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0e053766ab81e36c9cb1fd8e6c1ad335aa2c4293",
          "body": "* Remove stuff\n\n* Remove stuff\n\n* Remove more stuff\n\n* Fix unit tests\n\n* Fix tests\n\n* remove more stuff\n\n* revert mock files\n\n* few more tweaks\n\n* more delete\n\n* remove older deployment files\n\n* Restore mock contract\n\n* Fix fixtures\n\n* Repo cleanup additions (#2804)\n\n* Removed old generated contract\n[…]\ngy\n\n* morphoOUSDv2Fixture to handle outstanding withdrawal requests\n\n* fix ForkTest: CrossChainRemoteStrategy fork tests\n\n* prettier\n\n---------\n\nCo-authored-by: Nick Addison <nick@addisonbrown.com.au>",
          "is_bot": false,
          "headline": "Repo Cleanup (#2799)",
          "author_name": "Shah",
          "author_login": "shahthepro",
          "committed_at": "2026-02-19T11:15:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1fb163b7726edf7b1d80e8994d040c897438cd31",
          "body": "… (#2757)",
          "is_bot": false,
          "headline": "Fix the Native Staking Strategy fork tests for the second SSV cluster…",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-02-19T02:55:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2c3c18a683ba522d15ac9762f598c25749bfa7e1",
          "body": "* Add scripts to change Crosschain strategy operator\n\n* Run base deployment",
          "is_bot": false,
          "headline": "Add scripts to change Crosschain strategy operator (#2802)",
          "author_name": "Shah",
          "author_login": "shahthepro",
          "committed_at": "2026-02-18T17:34:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4cd26cb741d6ad2d432a509ea5cfb78a375026a1",
          "body": "* Run log 17 Feb - deposit SSV to clusters\n\n* Added native_staking_3_strat contract",
          "is_bot": false,
          "headline": "Run log 17 feb 26 (#2803)",
          "author_name": "Nick Addison",
          "author_login": "naddison36",
          "committed_at": "2026-02-18T10:36:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "522f5a117e6b0dbe2e601520403cfaca44534cce",
          "body": "…(#2798)",
          "is_bot": false,
          "headline": "[MerklPB] Transfer PoolBoostCentralRegistry governance to strategist …",
          "author_name": "Clément",
          "author_login": "clement-ux",
          "committed_at": "2026-02-16T11:07:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "10af127ddb4862d362abba98b9fef22042eb4936",
          "body": "* [CurvePB] Update CurvePoolBoosterBribesModule address\n\nUpdate the CurvePoolBoosterBribesModule contract address to the new deployment.\n\n\n* lint\n\n* [CurvePB] Refactor bribes module contract initialization and use constants from ethers",
          "is_bot": false,
          "headline": "[CurvePB] Update CurvePoolBoosterBribesModule address (#2797)",
          "author_name": "Clément",
          "author_login": "clement-ux",
          "committed_at": "2026-02-16T11:07:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 15,
      "commits_last_year": 188,
      "latest_release_at": "2023-08-04T14:32:01Z",
      "latest_release_tag": "v0.1.8",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 48,
      "days_since_latest_release": 1082,
      "mean_days_between_releases": 101.3
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 50,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": []
    },
    "popularity": {
      "forks": 112,
      "stars": 151,
      "watchers": 37,
      "fork_history": {
        "days": [
          {
            "date": "2020-10-16",
            "count": 1
          },
          {
            "date": "2020-10-25",
            "count": 1
          },
          {
            "date": "2020-11-13",
            "count": 1
          },
          {
            "date": "2020-11-17",
            "count": 1
          },
          {
            "date": "2020-11-27",
            "count": 1
          },
          {
            "date": "2020-12-29",
            "count": 1
          },
          {
            "date": "2021-01-25",
            "count": 1
          },
          {
            "date": "2021-02-20",
            "count": 1
          },
          {
            "date": "2021-06-11",
            "count": 1
          },
          {
            "date": "2021-07-03",
            "count": 1
          },
          {
            "date": "2021-08-09",
            "count": 1
          },
          {
            "date": "2021-10-02",
            "count": 1
          },
          {
            "date": "2021-12-01",
            "count": 1
          },
          {
            "date": "2022-02-04",
            "count": 2
          },
          {
            "date": "2022-02-18",
            "count": 1
          },
          {
            "date": "2022-02-24",
            "count": 1
          },
          {
            "date": "2022-04-30",
            "count": 1
          },
          {
            "date": "2022-05-05",
            "count": 1
          },
          {
            "date": "2022-05-12",
            "count": 1
          },
          {
            "date": "2022-05-26",
            "count": 1
          },
          {
            "date": "2022-08-13",
            "count": 1
          },
          {
            "date": "2022-08-30",
            "count": 1
          },
          {
            "date": "2022-09-08",
            "count": 1
          },
          {
            "date": "2022-10-31",
            "count": 1
          },
          {
            "date": "2022-11-08",
            "count": 1
          },
          {
            "date": "2023-01-03",
            "count": 1
          },
          {
            "date": "2023-01-09",
            "count": 1
          },
          {
            "date": "2023-02-09",
            "count": 1
          },
          {
            "date": "2023-02-15",
            "count": 1
          },
          {
            "date": "2023-03-09",
            "count": 1
          },
          {
            "date": "2023-04-01",
            "count": 1
          },
          {
            "date": "2023-04-06",
            "count": 1
          },
          {
            "date": "2023-04-17",
            "count": 1
          },
          {
            "date": "2023-05-01",
            "count": 1
          },
          {
            "date": "2023-05-25",
            "count": 1
          },
          {
            "date": "2023-06-04",
            "count": 1
          },
          {
            "date": "2023-06-05",
            "count": 1
          },
          {
            "date": "2023-06-13",
            "count": 1
          },
          {
            "date": "2023-06-14",
            "count": 1
          },
          {
            "date": "2023-06-20",
            "count": 1
          },
          {
            "date": "2023-08-20",
            "count": 1
          },
          {
            "date": "2023-08-23",
            "count": 1
          },
          {
            "date": "2023-08-26",
            "count": 1
          },
          {
            "date": "2023-09-30",
            "count": 1
          },
          {
            "date": "2023-10-17",
            "count": 1
          },
          {
            "date": "2023-11-20",
            "count": 1
          },
          {
            "date": "2024-02-02",
            "count": 1
          },
          {
            "date": "2024-02-04",
            "count": 1
          },
          {
            "date": "2024-02-16",
            "count": 10
          },
          {
            "date": "2024-03-02",
            "count": 1
          },
          {
            "date": "2024-03-22",
            "count": 1
          },
          {
            "date": "2024-03-25",
            "count": 1
          },
          {
            "date": "2024-04-04",
            "count": 1
          },
          {
            "date": "2024-04-05",
            "count": 1
          },
          {
            "date": "2024-04-27",
            "count": 1
          },
          {
            "date": "2024-06-13",
            "count": 1
          },
          {
            "date": "2024-06-28",
            "count": 1
          },
          {
            "date": "2024-07-05",
            "count": 1
          },
          {
            "date": "2024-07-10",
            "count": 1
          },
          {
            "date": "2024-07-15",
            "count": 1
          },
          {
            "date": "2024-08-10",
            "count": 1
          },
          {
            "date": "2024-08-16",
            "count": 1
          },
          {
            "date": "2024-08-22",
            "count": 1
          },
          {
            "date": "2024-09-14",
            "count": 1
          },
          {
            "date": "2024-12-05",
            "count": 1
          },
          {
            "date": "2024-12-16",
            "count": 1
          },
          {
            "date": "2024-12-18",
            "count": 1
          },
          {
            "date": "2024-12-22",
            "count": 1
          },
          {
            "date": "2025-01-17",
            "count": 1
          },
          {
            "date": "2025-02-20",
            "count": 1
          },
          {
            "date": "2025-04-05",
            "count": 1
          },
          {
            "date": "2025-05-09",
            "count": 1
          },
          {
            "date": "2025-05-16",
            "count": 1
          },
          {
            "date": "2025-07-09",
            "count": 1
          },
          {
            "date": "2025-07-18",
            "count": 1
          },
          {
            "date": "2025-07-25",
            "count": 1
          },
          {
            "date": "2025-08-05",
            "count": 1
          },
          {
            "date": "2025-08-07",
            "count": 1
          },
          {
            "date": "2025-09-15",
            "count": 1
          },
          {
            "date": "2025-10-17",
            "count": 1
          },
          {
            "date": "2025-11-03",
            "count": 1
          },
          {
            "date": "2025-12-01",
            "count": 1
          },
          {
            "date": "2025-12-10",
            "count": 1
          },
          {
            "date": "2025-12-28",
            "count": 1
          },
          {
            "date": "2026-01-10",
            "count": 2
          },
          {
            "date": "2026-01-31",
            "count": 1
          },
          {
            "date": "2026-02-22",
            "count": 1
          },
          {
            "date": "2026-03-02",
            "count": 1
          },
          {
            "date": "2026-03-23",
            "count": 1
          },
          {
            "date": "2026-04-15",
            "count": 1
          },
          {
            "date": "2026-04-16",
            "count": 1
          },
          {
            "date": "2026-04-28",
            "count": 1
          },
          {
            "date": "2026-05-13",
            "count": 1
          },
          {
            "date": "2026-05-18",
            "count": 1
          },
          {
            "date": "2026-05-22",
            "count": 1
          },
          {
            "date": "2026-05-27",
            "count": 1
          },
          {
            "date": "2026-06-07",
            "count": 1
          },
          {
            "date": "2026-06-16",
            "count": 1
          },
          {
            "date": "2026-07-08",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 110,
        "total_forks": 112
      },
      "star_history": {
        "days": [
          {
            "date": "2020-09-23",
            "count": 5
          },
          {
            "date": "2020-10-03",
            "count": 1
          },
          {
            "date": "2020-10-04",
            "count": 1
          },
          {
            "date": "2020-10-18",
            "count": 1
          },
          {
            "date": "2020-11-17",
            "count": 1
          },
          {
            "date": "2020-11-18",
            "count": 1
          },
          {
            "date": "2020-12-01",
            "count": 1
          },
          {
            "date": "2020-12-11",
            "count": 1
          },
          {
            "date": "2020-12-29",
            "count": 1
          },
          {
            "date": "2021-01-03",
            "count": 1
          },
          {
            "date": "2021-01-05",
            "count": 1
          },
          {
            "date": "2021-01-08",
            "count": 1
          },
          {
            "date": "2021-01-11",
            "count": 1
          },
          {
            "date": "2021-01-12",
            "count": 1
          },
          {
            "date": "2021-01-30",
            "count": 1
          },
          {
            "date": "2021-02-03",
            "count": 1
          },
          {
            "date": "2021-02-09",
            "count": 1
          },
          {
            "date": "2021-02-22",
            "count": 1
          },
          {
            "date": "2021-02-27",
            "count": 1
          },
          {
            "date": "2021-02-28",
            "count": 1
          },
          {
            "date": "2021-03-01",
            "count": 1
          },
          {
            "date": "2021-04-09",
            "count": 1
          },
          {
            "date": "2021-05-10",
            "count": 1
          },
          {
            "date": "2021-05-11",
            "count": 1
          },
          {
            "date": "2021-05-27",
            "count": 1
          },
          {
            "date": "2021-05-30",
            "count": 1
          },
          {
            "date": "2021-06-03",
            "count": 1
          },
          {
            "date": "2021-06-10",
            "count": 1
          },
          {
            "date": "2021-06-24",
            "count": 1
          },
          {
            "date": "2021-07-22",
            "count": 1
          },
          {
            "date": "2021-08-09",
            "count": 1
          },
          {
            "date": "2021-10-02",
            "count": 1
          },
          {
            "date": "2021-10-18",
            "count": 1
          },
          {
            "date": "2021-10-29",
            "count": 1
          },
          {
            "date": "2021-11-11",
            "count": 1
          },
          {
            "date": "2021-11-28",
            "count": 2
          },
          {
            "date": "2022-01-24",
            "count": 1
          },
          {
            "date": "2022-02-02",
            "count": 1
          },
          {
            "date": "2022-02-04",
            "count": 1
          },
          {
            "date": "2022-03-01",
            "count": 1
          },
          {
            "date": "2022-03-10",
            "count": 1
          },
          {
            "date": "2022-03-15",
            "count": 1
          },
          {
            "date": "2022-03-17",
            "count": 1
          },
          {
            "date": "2022-03-20",
            "count": 1
          },
          {
            "date": "2022-03-22",
            "count": 1
          },
          {
            "date": "2022-04-13",
            "count": 2
          },
          {
            "date": "2022-04-25",
            "count": 1
          },
          {
            "date": "2022-04-30",
            "count": 1
          },
          {
            "date": "2022-05-09",
            "count": 1
          },
          {
            "date": "2022-05-13",
            "count": 1
          },
          {
            "date": "2022-05-20",
            "count": 1
          },
          {
            "date": "2022-05-31",
            "count": 1
          },
          {
            "date": "2022-06-02",
            "count": 1
          },
          {
            "date": "2022-07-03",
            "count": 1
          },
          {
            "date": "2022-07-11",
            "count": 1
          },
          {
            "date": "2022-07-28",
            "count": 1
          },
          {
            "date": "2022-08-16",
            "count": 1
          },
          {
            "date": "2022-09-01",
            "count": 1
          },
          {
            "date": "2022-09-05",
            "count": 1
          },
          {
            "date": "2022-09-16",
            "count": 1
          },
          {
            "date": "2022-09-28",
            "count": 1
          },
          {
            "date": "2022-10-28",
            "count": 1
          },
          {
            "date": "2022-10-30",
            "count": 1
          },
          {
            "date": "2022-11-02",
            "count": 1
          },
          {
            "date": "2022-11-10",
            "count": 1
          },
          {
            "date": "2023-01-29",
            "count": 1
          },
          {
            "date": "2023-03-04",
            "count": 1
          },
          {
            "date": "2023-03-23",
            "count": 1
          },
          {
            "date": "2023-03-29",
            "count": 1
          },
          {
            "date": "2023-03-31",
            "count": 1
          },
          {
            "date": "2023-04-13",
            "count": 1
          },
          {
            "date": "2023-05-13",
            "count": 1
          },
          {
            "date": "2023-05-27",
            "count": 1
          },
          {
            "date": "2023-06-13",
            "count": 1
          },
          {
            "date": "2023-07-27",
            "count": 1
          },
          {
            "date": "2023-07-30",
            "count": 1
          },
          {
            "date": "2023-08-01",
            "count": 1
          },
          {
            "date": "2023-09-14",
            "count": 1
          },
          {
            "date": "2023-09-18",
            "count": 1
          },
          {
            "date": "2023-09-30",
            "count": 1
          },
          {
            "date": "2023-10-02",
            "count": 1
          },
          {
            "date": "2023-10-30",
            "count": 1
          },
          {
            "date": "2023-11-08",
            "count": 1
          },
          {
            "date": "2023-12-07",
            "count": 1
          },
          {
            "date": "2023-12-09",
            "count": 1
          },
          {
            "date": "2023-12-27",
            "count": 1
          },
          {
            "date": "2024-01-15",
            "count": 1
          },
          {
            "date": "2024-01-29",
            "count": 1
          },
          {
            "date": "2024-02-02",
            "count": 1
          },
          {
            "date": "2024-02-07",
            "count": 1
          },
          {
            "date": "2024-02-10",
            "count": 1
          },
          {
            "date": "2024-02-14",
            "count": 1
          },
          {
            "date": "2024-02-16",
            "count": 1
          },
          {
            "date": "2024-02-17",
            "count": 1
          },
          {
            "date": "2024-02-20",
            "count": 1
          },
          {
            "date": "2024-02-23",
            "count": 1
          },
          {
            "date": "2024-02-25",
            "count": 1
          },
          {
            "date": "2024-03-02",
            "count": 1
          },
          {
            "date": "2024-03-26",
            "count": 1
          },
          {
            "date": "2024-04-24",
            "count": 1
          },
          {
            "date": "2024-05-24",
            "count": 1
          },
          {
            "date": "2024-05-28",
            "count": 1
          },
          {
            "date": "2024-06-08",
            "count": 1
          },
          {
            "date": "2024-06-28",
            "count": 1
          },
          {
            "date": "2024-07-09",
            "count": 1
          },
          {
            "date": "2024-07-10",
            "count": 1
          },
          {
            "date": "2024-07-12",
            "count": 1
          },
          {
            "date": "2024-07-27",
            "count": 1
          },
          {
            "date": "2024-09-16",
            "count": 1
          },
          {
            "date": "2024-09-25",
            "count": 1
          },
          {
            "date": "2024-10-03",
            "count": 2
          },
          {
            "date": "2024-10-22",
            "count": 1
          },
          {
            "date": "2024-11-06",
            "count": 1
          },
          {
            "date": "2024-12-11",
            "count": 1
          },
          {
            "date": "2024-12-16",
            "count": 1
          },
          {
            "date": "2024-12-22",
            "count": 1
          },
          {
            "date": "2025-01-12",
            "count": 1
          },
          {
            "date": "2025-01-17",
            "count": 1
          },
          {
            "date": "2025-01-18",
            "count": 1
          },
          {
            "date": "2025-01-22",
            "count": 1
          },
          {
            "date": "2025-01-26",
            "count": 2
          },
          {
            "date": "2025-01-29",
            "count": 1
          },
          {
            "date": "2025-02-07",
            "count": 1
          },
          {
            "date": "2025-03-16",
            "count": 1
          },
          {
            "date": "2025-04-14",
            "count": 1
          },
          {
            "date": "2025-04-27",
            "count": 1
          },
          {
            "date": "2025-05-09",
            "count": 1
          },
          {
            "date": "2025-05-12",
            "count": 1
          },
          {
            "date": "2025-05-20",
            "count": 1
          },
          {
            "date": "2025-07-11",
            "count": 1
          },
          {
            "date": "2025-07-30",
            "count": 1
          },
          {
            "date": "2025-08-03",
            "count": 1
          },
          {
            "date": "2025-10-06",
            "count": 1
          },
          {
            "date": "2025-10-09",
            "count": 1
          },
          {
            "date": "2025-10-12",
            "count": 1
          },
          {
            "date": "2025-11-01",
            "count": 1
          },
          {
            "date": "2025-11-16",
            "count": 1
          },
          {
            "date": "2026-01-11",
            "count": 1
          },
          {
            "date": "2026-03-08",
            "count": 1
          },
          {
            "date": "2026-03-21",
            "count": 1
          },
          {
            "date": "2026-04-14",
            "count": 1
          },
          {
            "date": "2026-04-17",
            "count": 1
          },
          {
            "date": "2026-07-02",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 151,
        "total_stars": 151
      },
      "open_issues_and_prs": 219
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "contracts/tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 121545,
      "source_files_sampled": 453,
      "oversized_source_files": 8,
      "agent_instruction_files": [
        "AGENTS.md",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 8324
    },
    "dependencies": {
      "manifests": [
        "contracts/package.json",
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": null,
        "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": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "@chainlink/contracts-ccip",
          "manifest": "contracts/package.json",
          "ecosystem": "npm",
          "version_constraint": "1.2.1"
        },
        {
          "name": "@chainsafe/bls",
          "manifest": "contracts/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.2.0"
        },
        {
          "name": "@lodestar/api",
          "manifest": "contracts/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.41.0"
        },
        {
          "name": "@lodestar/config",
          "manifest": "contracts/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.41.0"
        },
        {
          "name": "@lodestar/params",
          "manifest": "contracts/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.41.0"
        },
        {
          "name": "@lodestar/state-transition",
          "manifest": "contracts/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.41.0"
        },
        {
          "name": "@lodestar/types",
          "manifest": "contracts/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.41.0"
        },
        {
          "name": "@lodestar/utils",
          "manifest": "contracts/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.41.0"
        },
        {
          "name": "@talos/client",
          "manifest": "contracts/package.json",
          "ecosystem": "npm",
          "version_constraint": "github:oplabs/talos#8f15dbbdc96a4d3cabf932d41e016779c0946266&path:packages/client"
        },
        {
          "name": "@types/pg",
          "manifest": "contracts/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.20.0"
        },
        {
          "name": "origin-morpho-utils",
          "manifest": "contracts/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.1.1"
        },
        {
          "name": "pg",
          "manifest": "contracts/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.20.0"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 30,
        "merged_prs": 1869,
        "open_issues": 189,
        "closed_ratio": 0.747,
        "closed_issues": 559,
        "closed_unmerged_prs": 272
      },
      "bus_factor": 2,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "sparrowDom",
          "commits": 1609,
          "avatar_url": "https://avatars.githubusercontent.com/u/579910?v=4"
        },
        {
          "type": "User",
          "login": "tomlinton",
          "commits": 542,
          "avatar_url": "https://avatars.githubusercontent.com/u/489202?v=4"
        },
        {
          "type": "User",
          "login": "shahthepro",
          "commits": 390,
          "avatar_url": "https://avatars.githubusercontent.com/u/10547529?v=4"
        },
        {
          "type": "User",
          "login": "DanielVF",
          "commits": 275,
          "avatar_url": "https://avatars.githubusercontent.com/u/837?v=4"
        },
        {
          "type": "User",
          "login": "naddison36",
          "commits": 229,
          "avatar_url": "https://avatars.githubusercontent.com/u/6491112?v=4"
        },
        {
          "type": "User",
          "login": "micahalcorn",
          "commits": 199,
          "avatar_url": "https://avatars.githubusercontent.com/u/273937?v=4"
        },
        {
          "type": "User",
          "login": "crazybuster",
          "commits": 114,
          "avatar_url": "https://avatars.githubusercontent.com/u/4496236?v=4"
        },
        {
          "type": "User",
          "login": "clement-ux",
          "commits": 86,
          "avatar_url": "https://avatars.githubusercontent.com/u/55331875?v=4"
        },
        {
          "type": "User",
          "login": "rolandpo",
          "commits": 61,
          "avatar_url": "https://avatars.githubusercontent.com/u/62400812?v=4"
        },
        {
          "type": "User",
          "login": "snyk-bot",
          "commits": 45,
          "avatar_url": "https://avatars.githubusercontent.com/u/19733683?v=4"
        }
      ],
      "contributors_sampled": 48,
      "top_contributor_share": 0.443
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "abi.yml",
        "aws-deployment.yml",
        "defi.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [
        ".eslintrc.js"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "pnpm-lock.yaml",
        "yarn.lock"
      ],
      "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": 6,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 9,
            "reason": "29 out of 30 merged PRs checked by a CI test -- score normalized to 9",
            "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 8 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 2 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 3,
            "reason": "dependency not pinned by hash detected -- score normalized to 3",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 10,
            "reason": "SAST tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 10,
            "reason": "GitHub workflow tokens follow principle of least privilege",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "171 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "07a7fcb052d715409014dd69e69e3c680ee8ae47",
        "ran_at": "2026-07-22T03:00:04Z",
        "aggregate_score": 7.3,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-20T11:05:11Z",
      "oldest_open_prs": [
        {
          "number": 561,
          "created_at": "2021-02-15T16:20:22Z",
          "last_comment_at": "2023-07-07T10:51:45Z",
          "last_comment_author": "sparrowDom"
        },
        {
          "number": 1203,
          "created_at": "2022-12-15T19:52:18Z",
          "last_comment_at": "2023-07-06T15:34:35Z",
          "last_comment_author": "sparrowDom"
        },
        {
          "number": 1239,
          "created_at": "2023-02-06T13:24:23Z",
          "last_comment_at": "2023-07-06T12:52:24Z",
          "last_comment_author": "sparrowDom"
        },
        {
          "number": 1515,
          "created_at": "2023-05-18T20:39:34Z",
          "last_comment_at": "2023-07-10T09:45:20Z",
          "last_comment_author": "sparrowDom"
        },
        {
          "number": 1680,
          "created_at": "2023-07-04T16:11:08Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1826,
          "created_at": "2023-09-21T20:57:26Z",
          "last_comment_at": "2023-09-22T15:23:46Z",
          "last_comment_author": "DanielVF"
        },
        {
          "number": 1936,
          "created_at": "2023-11-19T23:22:40Z",
          "last_comment_at": "2023-11-27T12:34:27Z",
          "last_comment_author": "naddison36"
        },
        {
          "number": 1943,
          "created_at": "2023-11-27T10:41:44Z",
          "last_comment_at": "2023-11-28T22:17:09Z",
          "last_comment_author": "sparrowDom"
        },
        {
          "number": 1984,
          "created_at": "2024-01-30T15:02:28Z",
          "last_comment_at": "2024-01-30T15:03:05Z",
          "last_comment_author": "github-actions"
        },
        {
          "number": 2011,
          "created_at": "2024-03-27T16:41:01Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2095,
          "created_at": "2024-06-07T22:47:44Z",
          "last_comment_at": "2024-06-07T23:08:18Z",
          "last_comment_author": "sparrowDom"
        },
        {
          "number": 2098,
          "created_at": "2024-06-11T14:30:40Z",
          "last_comment_at": "2024-06-14T20:47:29Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 2233,
          "created_at": "2024-09-14T10:10:15Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2283,
          "created_at": "2024-10-21T19:56:23Z",
          "last_comment_at": "2024-10-21T20:04:35Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 2593,
          "created_at": "2025-07-22T08:34:37Z",
          "last_comment_at": "2025-07-22T08:46:17Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 2623,
          "created_at": "2025-08-18T07:13:02Z",
          "last_comment_at": "2025-08-18T07:18:19Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 2773,
          "created_at": "2026-01-29T14:04:39Z",
          "last_comment_at": "2026-01-29T14:09:47Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 2815,
          "created_at": "2026-02-26T12:16:58Z",
          "last_comment_at": "2026-02-26T12:22:05Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 2824,
          "created_at": "2026-03-03T15:39:17Z",
          "last_comment_at": "2026-03-03T15:47:16Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 2848,
          "created_at": "2026-03-20T13:24:09Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-21T16:36:00Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 14,
          "created_at": "2020-08-07T19:06:19Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 15,
          "created_at": "2020-08-10T15:51:58Z",
          "last_comment_at": "2022-01-13T21:19:18Z",
          "last_comment_author": "joshfraser"
        },
        {
          "number": 22,
          "created_at": "2020-08-10T20:43:03Z",
          "last_comment_at": "2023-05-08T13:26:36Z",
          "last_comment_author": "rolandpo"
        },
        {
          "number": 53,
          "created_at": "2020-08-17T20:52:00Z",
          "last_comment_at": "2022-05-20T15:30:21Z",
          "last_comment_author": "micahalcorn"
        },
        {
          "number": 59,
          "created_at": "2020-08-19T01:53:47Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 76,
          "created_at": "2020-08-23T02:18:05Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 112,
          "created_at": "2020-08-28T18:40:25Z",
          "last_comment_at": "2021-03-11T04:55:11Z",
          "last_comment_author": "icyage"
        },
        {
          "number": 160,
          "created_at": "2020-09-11T07:00:13Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 227,
          "created_at": "2020-09-22T00:29:08Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 252,
          "created_at": "2020-09-24T21:46:43Z",
          "last_comment_at": "2020-09-25T01:57:56Z",
          "last_comment_author": "tomlinton"
        },
        {
          "number": 301,
          "created_at": "2020-10-09T01:37:05Z",
          "last_comment_at": "2020-12-22T18:53:51Z",
          "last_comment_author": "nickgeoca"
        },
        {
          "number": 312,
          "created_at": "2020-10-13T19:16:01Z",
          "last_comment_at": "2021-05-20T07:34:13Z",
          "last_comment_author": "tomlinton"
        },
        {
          "number": 313,
          "created_at": "2020-10-13T20:23:44Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 318,
          "created_at": "2020-10-14T12:12:11Z",
          "last_comment_at": "2020-12-05T04:50:05Z",
          "last_comment_author": "franckc"
        },
        {
          "number": 365,
          "created_at": "2020-11-13T00:26:02Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 434,
          "created_at": "2020-12-16T22:16:02Z",
          "last_comment_at": "2021-01-21T20:15:00Z",
          "last_comment_author": "nick"
        },
        {
          "number": 445,
          "created_at": "2020-12-18T21:21:32Z",
          "last_comment_at": "2021-01-08T23:13:56Z",
          "last_comment_author": "franckc"
        },
        {
          "number": 461,
          "created_at": "2020-12-24T16:24:53Z",
          "last_comment_at": "2021-08-13T05:17:43Z",
          "last_comment_author": "micahalcorn"
        },
        {
          "number": 479,
          "created_at": "2021-01-06T01:06:12Z",
          "last_comment_at": "2021-09-10T21:36:54Z",
          "last_comment_author": "micahalcorn"
        },
        {
          "number": 483,
          "created_at": "2021-01-06T14:55:57Z",
          "last_comment_at": "2021-11-21T09:06:52Z",
          "last_comment_author": "sparrowDom"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/OriginProtocol/origin-dollar",
    "host": "github.com",
    "name": "origin-dollar",
    "owner": "OriginProtocol"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 73,
      "inputs": {
        "security": 73,
        "vitality": 79,
        "community": 59,
        "governance": 71,
        "engineering": 79
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 79,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 97,
            "inputs": {
              "commits_last_year": 188,
              "human_commit_share": 1,
              "days_since_last_push": 0,
              "active_weeks_last_year": 48
            },
            "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": "48/52 weeks with commits",
                "points": 33.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 48
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "188 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 188
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "moderate",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 52,
            "inputs": {
              "releases_count": 15,
              "latest_release_tag": "v0.1.8",
              "releases_from_tags": false,
              "days_since_latest_release": 1082,
              "mean_days_between_releases": 101.3
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "15 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 15
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 1082 days ago",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 1082
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~101.3 days",
                "points": 19.8,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 101.3
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 1,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 1 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "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.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "moderate",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 61,
            "inputs": {
              "forks": 112,
              "stars": 151,
              "watchers": 37,
              "growth_state": "organic",
              "growth_factor_pct": 100
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "151 stars",
                "points": 35.3,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 151
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "112 forks",
                "points": 17,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 112
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "37 watchers",
                "points": 8.7,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 37
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 57,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 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": 71,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "moderate",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 61,
            "inputs": {
              "bus_factor": 2,
              "contributors_sampled": 48,
              "top_contributor_share": 0.443
            },
            "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 44% of commits",
                "points": 12.5,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 44
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "48 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 48
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 8 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 83,
            "inputs": {
              "merged_prs": 1869,
              "open_issues": 189,
              "closed_issues": 559,
              "issue_closed_ratio": 0.747,
              "closed_unmerged_prs": 272
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "75% of issues closed",
                "points": 34.9,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 75
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "1869/2141 decided PRs merged",
                "points": 33.4,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 1869,
                      "decided": 2141
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "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": 70,
            "inputs": {
              "followers": 103,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "OriginProtocol",
              "public_repos": 105,
              "account_age_days": 3276
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "103 followers of OriginProtocol",
                "points": 14.5,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 103,
                      "login": "OriginProtocol"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "105 public repos, account ~8 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 105
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 8
                    }
                  }
                ],
                "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": 79,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 82,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "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": ".eslintrc.js",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".eslintrc.js"
                    }
                  }
                ],
                "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": "29 out of 30 merged PRs checked by a CI test -- score normalized to 9",
                "points": 18,
                "status": "partial",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "good",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 75,
            "inputs": {
              "topics": [
                "defi",
                "ethereum",
                "web3"
              ],
              "has_wiki": true,
              "homepage": "https://originprotocol.com",
              "has_readme": true,
              "has_docs_dir": false,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://originprotocol.com",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "3 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "good",
        "name": "Security",
        "value": 73,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "good",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 73,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 7.3
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection is not maximal on development and all release branches",
                "points": 4.5,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "29 out of 30 merged PRs checked by a CI test -- score normalized to 9",
                "points": 2.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 8 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 2 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 3",
                "points": 1.5,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "GitHub workflow tokens follow principle of least privilege",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "171 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 10
            },
            "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": "good",
        "name": "AI Readiness",
        "value": 76,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.95,
              "agent_instruction_files": [
                "AGENTS.md",
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 8324
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md, CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.md, CLAUDE.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": "95 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 95,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 67,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "pnpm-lock.yaml",
                "yarn.lock"
              ],
              "has_dockerfile": true,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "contracts/tsconfig.json"
              ],
              "agent_commit_share": 0.06,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": ".eslintrc.js",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".eslintrc.js"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "contracts/tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "contracts/tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Dockerfile, lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile, lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "6 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 6,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "good",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 81,
            "inputs": {
              "primary_language": "JavaScript",
              "largest_source_bytes": 121545,
              "source_files_sampled": 453,
              "oversized_source_files": 8
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "JavaScript with type-check config (contracts/tsconfig.json)",
                "points": 27,
                "status": "partial",
                "details": [
                  {
                    "code": "typecheck_config_language",
                    "params": {
                      "files": "contracts/tsconfig.json",
                      "language": "JavaScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "8/453 source files over 60KB",
                "points": 54,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 453,
                      "oversized": 8
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Could not fetch npm package 'origin-dollar' from its registry",
    "Could not fetch npm package 'origin-defi-contracts' from its registry",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-22T03:00:40.094978Z",
  "schema_version": "0.26.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/o/OriginProtocol/origin-dollar.svg",
  "full_name": "OriginProtocol/origin-dollar",
  "license_state": "standard",
  "license_spdx": "MIT"
}

评分是信号,而非担保。 评分反映的是 GitHub 上公开可见的实践——不是代码审计,也不是安全保证。

缺失数据将被剔除并重新归一化权重,绝不按零分计。方法论已版本化并公开:指标 v1.13.0、模式 v0.26.0—— 完整方法论 · 指标知识库.

单项结果在整体记录中的位置: 汇总统计.