Public record
Software health reportschema 0.26.0 · metrics 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 stars⑂ 112 forkssince Aug 2020View on GitHub ↗

OriginProtocol/origin-dollar holds a health index of 73 out of 100, placing it in the Good band. It scores highest on Vitality (79/100) and lowest on Community & Adoption (59/100). It was last updated today. 2 contributors account for most of its recent work.

73
overall / 100
Good

Software health index

Metrics are grouped into weighted categories on one standardized 1–100 scale. Overall starts as their weighted mean; when public evidence triggers the High-Risk Jurisdiction Policy, the rating is adjusted and receives an At risk ceiling of 49. AI Readiness sits outside the overall score.

73
Excellent85-100Exemplary; meets essentially all checked criteria
Good70-84Healthy; minor gaps
Moderate50-69Acceptable with notable gaps; review recommended
At risk30-49Significant weaknesses; adoption warrants caution
Critical1-29Severe problems (abandoned, single-maintainer, no hygiene)
VitalityCommunity &AdoptionSustainability &GovernanceEngineeringQualitySecurityAI Readiness

Score profile

Each axis is a category. The shape matters more than the average — a healthy subject fills the whole shape, while a spike-and-crater profile means strength in one dimension is masking risk in another.

Ownership

Origin ProtocolOrganization
103 followers105 public repossince Aug 2017

This repository is backed by an organization — shared, accountable stewardship that can outlive any single maintainer.

Metrics by category

Vitality

Is the project alive — is code being written and are releases shipping?

79Good · 22% of overall
How it's scored
36/36Push recency — last push 0 days ago
33.2/36Commit cadence — 48/52 weeks with commits
18/18Commit volume — 188 commits in the last year
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10
Inputs used
commits_last_year188
human_commit_share1
days_since_last_push0
active_weeks_last_year48
How it's scored
27/27Ships releases — 15 releases published
0/36Release recency — latest release 1,082 days ago
19.8/27Release cadence — a release every ~101.3 days
0/10OpenSSF Scorecard: Signed-Releases — no data
Inputs used
releases_count15
latest_release_tagv0.1.8
releases_from_tagsno
days_since_latest_release1,082
mean_days_between_releases101.3
Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.

Community & Adoption

Does the project have users, downloads, attention, and a welcoming setup for contributors?

59Moderate · 18% of overall
How it's scored
35.3/60Stars — 151 stars
17/25Forks — 112 forks
8.7/15Watchers — 37 watchers
Inputs used
forks112
stars151
watchers37
growth_stateorganic
growth_factor_pct100
How it's scored
22.5/22.5README
22.5/22.5License — recognized license (MIT)
0/18CONTRIBUTING guide
0/13.5Code of conduct
0/7.2Issue template
6.3/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateyes

Sustainability & Governance

Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?

71Good · 24% of overall
How it's scored
25.2/54Bus factor — 2 contributor(s) cover half of all commits
12.5/22.5Commit distribution — top contributor authored 44% of commits
13.5/13.5Contributor breadth — 48 contributors
10/10OpenSSF Scorecard: Contributors — project has 8 contributing companies or organizations
Inputs used
bus_factor2
contributors_sampled48
top_contributor_share0.443
How it's scored
34.9/46.8Issue resolution — 75% of issues closed
33.4/38.3PR acceptance — 1,869/2,141 decided PRs merged
15/15OpenSSF Scorecard: Code-Review — all changesets reviewed
Inputs used
merged_prs1,869
open_issues189
closed_issues559
issue_closed_ratio0.747
closed_unmerged_prs272
How it's scored
30/30Ownership backing — organization-owned
0/20Verified domain
14.5/25Owner reach — 103 followers of OriginProtocol
25/25Track record — 105 public repos, account ~8 yr old
Inputs used
followers103
owner_typeOrganization
is_verified
owner_loginOriginProtocol
public_repos105
account_age_days3,276

Engineering Quality

Are baseline engineering and documentation practices in place?

79Good · 20% of overall
How it's scored
24/24CI workflows — 3 workflow(s)
24/24Tests present
16/16Linter config — .eslintrc.js
0/9.6Pre-commit hooks
0/6.4.editorconfig
18/20OpenSSF Scorecard: CI-Tests — 29 out of 30 merged PRs checked by a CI test -- score normalized to 9
Inputs used
has_ciyes
has_testsyes
has_editorconfigno
has_linter_configyes
has_precommit_configno
How it's scored
30/30README
0/25Documentation directory
15/15Documentation / homepage site — https://originprotocol.com
10/10Repository description
10/10Topics — 3 topics
10/10Wiki
Inputs used
topicsdefi, ethereum, web3
has_wikiyes
homepagehttps://originprotocol.com
has_readmeyes
has_docs_dirno
has_descriptionyes

Security

Are visible security and supply-chain practices strong, without unresolved high-risk jurisdiction exposure?

73Good · 16% of overall
How it's scored
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.5License — 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 — no data
7.5/7.5Token-Permissions — GitHub workflow tokens follow principle of least privilege
0/7.5Vulnerabilities — 171 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate7.3
Excluded from scoring (no data or not applicable): signed_releases. Remaining weights renormalized.

AI Readiness

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.

76Good · 0% of overall
How it's scored
45/45Agent instructions — AGENTS.md, CLAUDE.md
0/15Machine-readable docs (llms.txt)
40/40Legible commit history — 95 of 100 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share0.95
agent_instruction_filesAGENTS.md, CLAUDE.md
agent_instruction_max_bytes8,324
How it's scored
0/18One-command bootstrap
22/22Automated tests
11/11Lint / format config — .eslintrc.js
11/11Static type checking — contracts/tsconfig.json
10/10Reproducible environment — Dockerfile, lockfile
10/10Demonstrated agent practice — 6 of the last 100 commits agent-authored or agent-credited
0/8Automated maintenance — no automated dependency updates observed
3/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 3
Inputs used
has_nixno
has_testsyes
lockfilespnpm-lock.yaml, yarn.lock
has_dockerfileyes
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_configyes
typecheck_configscontracts/tsconfig.json
agent_commit_share0.06
toolchain_manifests
dependency_bot_commit_share0
How it's scored
27/45Type-checkable code — JavaScript with type-check config (contracts/tsconfig.json)
54/55Manageable file sizes — 8/453 source files over 60KB
Inputs used
primary_languageJavaScript
largest_source_bytes121,545
source_files_sampled453
oversized_source_files8

Key facts

151GitHub stars
48contributors
188commits, last 12 months
0days since last push
15releases
2bus factor
189open issues
npmpackage ecosystems

Data collection 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

More detail

Star and fork history 151 ★ / 112 ⇿
151Stars
112Forks
15Releases

When each star and fork was added, collected from GitHub and bucketed by day. Cumulative growth sits directly above the daily additions it is made of, so the two read against each other: steady organic accretion looks nothing like an abrupt, short-lived burst. Where that difference is measurable, it is reported as growth authenticity.

04080120160151110102020-092023-082026-07
Major 0Minor 0Patch 2

Each point covers 6 days.

OpenSSF Scorecard 7.3 / 10
7.3aggregate

Independent, tool-agnostic security assessment from the open-source OpenSSF Scorecard. Each check rewards a security practice, not a specific vendor's tool. Checks Scorecard could not determine are marked n/a and excluded from the security score (never counted as zero).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
n/aSigned-Releasesno releases found
10Token-PermissionsGitHub workflow tokens follow principle of least privilege
0Vulnerabilities171 existing vulnerabilities detected
Direct dependencies 12
RegistryPackageVersion constraintManifest
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
All dependencies not collected

The resolved dependency set could not be collected for this report: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Raw JSON report machine-readable
{
  "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"
}

Scores are signals, not warranties. They reflect publicly visible practices on GitHub — not a code audit, and not a security guarantee.

Missing data is excluded and weights renormalized, never scored as zero. Methodology is versioned and open: metrics v1.13.0, schema v0.26.0 — full methodology · metrics wiki.

How one result sits in the wider record: aggregate statistics.