Public record
Software health reportschema 0.27.0 · metrics 2.3.1 · 2026-08-02 16:00 UTC

jesse-ai / jesse

An advanced crypto trading bot written in Python

PythonMIT★ 8,281 stars⑂ 1,188 forkssince Nov 2018View on GitHub ↗

jesse-ai/jesse holds a health index of 87 out of 100, placing it in the Excellent band. It scores highest on Vitality (93/100) and lowest on Security (54/100). It was last updated today. A single contributor accounts for most of its recent work.

87
overall / 100
Excellent

Software health index

Metrics are grouped into weighted categories on one standardized 1–100 scale. Overall starts as their weighted mean, calibrated against the distribution of the public record so bands carry percentile meaning; when public evidence triggers the High-Risk Jurisdiction Policy, the rating is adjusted and receives an At Risk ceiling of 34.

87
Exceptional93-100The record's top tier (≈ top 5%); essentially all checked criteria met
Excellent80-92Strong across the board; minor gaps
Good65-79Healthy; gaps are limited and manageable
Moderate50-64Acceptable with notable gaps; review recommended
Weak35-49Material weaknesses across several areas
At Risk20-34Significant weaknesses; adoption warrants caution
Critical1-19Severe 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.

The weighted overall 73 is calibrated to 87 on the published index scale (record calibration 2026-08-02).

Ownership

JesseOrganization
367 followers24 public repossince Nov 2018

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

Package ecosystems

RegistryPackageVersionDownloads / moVersionsLast publish
PyPIjesse3.0.0-3580 days ago

Metrics by category

Vitality

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

93Exceptional · 21% of overall
How it's scored
36/36Push recency — last push 0 days ago
32.5/36Commit cadence — 47/52 weeks with commits
18/18Commit volume — 421 commits in the last year
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 9 issue activity found in the last 90 days -- score normalized to 10
Inputs used
commits_last_year421
human_commit_share0.99
days_since_last_push0
active_weeks_last_year47
How it's scored
16.2/27Ships releases — 10 version tags (no GitHub releases)
36/36Release recency — latest release 0 days ago
27/27Release cadence — a release every ~7 days
0/10OpenSSF Scorecard: Signed-Releases — no data
Inputs used
releases_count10
latest_release_tagv3.0.0
releases_from_tagsyes
days_since_latest_release0
mean_days_between_releases7
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?

76Good · 17% of overall
How it's scored
60/60Stars — 8,281 stars
25/25Forks — 1,188 forks
12.9/15Watchers — 207 watchers
Inputs used
forks1,188
stars8,281
watchers207
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
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
0/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
readme_badges
has_contributingno
has_issue_templateno
has_code_of_conductno
readme_badge_services
has_pull_request_templateno

Sustainability & Governance

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

68Good · 23% of overall
How it's scored
9/54Bus factor — 1 contributor(s) cover half of all commits
8.1/22.5Commit distribution — top contributor authored 64% of commits
13.5/13.5Contributor breadth — 50 contributors
10/10OpenSSF Scorecard: Contributors — project has 7 contributing companies or organizations
Inputs used
bus_factor1
contributors_sampled50
top_contributor_share0.638
How it's scored
40.7/42Issue resolution — 97% of issues closed
19.8/30PR acceptance — 278/422 decided PRs merged
0/13Newcomer PR acceptance — no first-time contributor's PR decided in 30d
0/15OpenSSF Scorecard: Code-Review — Found 0/28 approved changesets -- score normalized to 0
Inputs used
merged_prs278
open_issues5
closed_issues153
prs_merged_7d
prs_decided_7d
prs_merged_30d
prs_decided_30d
issue_closed_ratio0.968
closed_unmerged_prs144
first_time_authors_30d
first_time_prs_merged_30d
first_time_prs_decided_30d
Excluded from scoring (no data or not applicable): newcomer_pr_acceptance. Remaining weights renormalized.
How it's scored
30/30Ownership backing — organization-owned
0/20Verified domain
18.4/25Owner reach — 367 followers of jesse-ai
22.2/25Track record — 24 public repos, account ~7 yr old
Inputs used
followers367
owner_typeOrganization
is_verified
owner_loginjesse-ai
public_repos24
account_age_days2,823

Package maintenance

100Exceptional
How it's scored
25/25Published & resolvable — 1 package(s) on pypi
35/35Publish recency — latest publish 0 days ago
20/20Version history — 358 published versions
20/20Not deprecated — active, not deprecated or yanked
Inputs used
packagesjesse
ecosystemspypi
any_deprecatedno
min_days_since_publish0

Engineering Quality

Are baseline engineering and documentation practices in place?

71Good · 19% of overall
How it's scored
24/24CI workflows — 3 workflow(s)
24/24Tests present
0/16Linter config
0/9.6Pre-commit hooks
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 2 out of 2 merged PRs checked by a CI test -- score normalized to 10
Inputs used
has_ciyes
has_testsyes
has_editorconfigno
has_linter_configno
has_precommit_configno
How it's scored
30/30README
0/25Documentation directory
15/15Documentation / homepage site — https://jesse.trade
10/10Repository description
10/10Topics — 18 topics
10/10Wiki
Inputs used
topicscryptocurrency, trading-bot, trading-algorithms, trading, crypto, framework, algo-trading, algorithmic-trading, jesse, trading-strategies, python, bot, crypto-bot, bitcoin, trade, crypto-bot-trading, quantitative-finance, quantitative-trading
has_wikiyes
homepagehttps://jesse.trade
has_readmeyes
has_docs_dirno
has_descriptionyes

Security

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

54Moderate · 16% of overall
How it's scored
0.8/7.5Binary-Artifacts — binaries present in source code
0/7.5Branch-Protection — branch protection not enabled on development/release branches
2.5/2.5CI-Tests — 2 out of 2 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/28 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 7 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 9 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
3.5/5SAST — SAST tool detected but not run on all commits
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — no data
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 23 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate4.3
Excluded from scoring (no data or not applicable): signed_releases. Remaining weights renormalized.

Dependency advisories

100Exceptional
How it's scored
35/35Direct dependencies free of known advisories — no direct dependency carries a known advisory
0/25Indirect dependencies free of known advisories — transitive set not separable from development and test dependencies in this scope
0/40No advisories left outstanding — no advisory carries a publication date
Inputs used
sourceosv
advisories0
affected_packages0
assessed_packages2
unassessed_packages36
affected_by_severitynone
direct_affected_packages0
Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 2 resolved dependencies against OSV. 36 could not be assessed — no resolved version, an unsupported ecosystem, or beyond the reported package list. This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.

AI Readiness

How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight (4%): agent tooling is a real maintenance signal, but a repository with none can still reach 100/100.

60Moderate · 4% of overall
How it's scored
45/45Agent instructions — AGENTS.md
0/15Machine-readable docs (llms.txt)
31.8/40Legible commit history — 59 of 99 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share0.596
agent_instruction_filesAGENTS.md
agent_instruction_max_bytes10,691
How it's scored
0/18One-command bootstrap
22/22Automated tests
0/11Lint / format config
0/11Static type checking
10/10Reproducible environment — Dockerfile
10/10Demonstrated agent practice — 45 of the last 100 commits agent-authored or agent-credited
8/8Automated maintenance — 1 of the last 100 commits are automated dependency updates
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Inputs used
has_nixno
has_testsyes
lockfiles
has_dockerfileyes
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configs
agent_commit_share0.45
toolchain_manifests
dependency_bot_commit_share0.01
How it's scored
0/45Type-checkable code — Python without a type-check config
52.4/55Manageable file sizes — 53/1,106 source files over 60KB
Inputs used
primary_languagePython
largest_source_bytes6,915,612
source_files_sampled1,106
oversized_source_files53

Key facts

8,281GitHub stars
50contributors
421commits, last 12 months
0days since last push
10releases
1bus factor
5open issues
PyPIpackage ecosystems

Data collection warnings

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • deps.dev does not index pypi:jesse@3.0.0; advisories assessed against the repository dependency graph instead

More detail

Star and fork history 0 ★ / 1,188 ⇿
0Stars
1,188Forks
9Releases

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.

Only the most recent history is shown — this repository exceeds the collection window, so the earliest history is not captured.

02004006008001,0001,2001,188172021-042023-122026-07
Major 0Minor 3Patch 6

Each point covers 5 days.

OpenSSF Scorecard 4.3 / 10
4.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-08-02 16:00 UTC

1Binary-Artifactsbinaries present in source code
0Branch-Protectionbranch protection not enabled on development/release branches
10CI-Tests2 out of 2 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/28 approved changesets -- score normalized to 0
10Contributorsproject has 7 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 9 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
7SASTSAST tool detected but not run on all commits
0Security-Policysecurity policy file not detected
n/aSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities23 existing vulnerabilities detected
All dependencies 38

Full resolved dependency set from the GitHub dependency graph: 0 direct and 38 indirect (transitive) packages. The transitive closure is complete when the repository commits a lockfile.

RegistryPackageVersionRelation
PyPIaiofilesindirect
PyPIaioredisindirect
PyPIarrowindirect
PyPIblinkerindirect
PyPIclickindirect
PyPIcryptographyindirect
PyPIecdsaindirect
PyPIeth-accountindirect
PyPIfastapiindirect
PyPIfncindirect
PyPIjesse-rust1.2.0indirect
PyPIjoblibindirect
PyPImatplotlibindirect
PyPImcp1.28.1indirect
PyPImsgpackindirect
PyPInumpyindirect
PyPIoptunaindirect
PyPIpandasindirect
PyPIpeeweeindirect
PyPIpsycopg2-binaryindirect
PyPIpydashindirect
PyPIpyjwtindirect
PyPIpytestindirect
PyPIpython-dotenvindirect
PyPIrayindirect
PyPIredisindirect
PyPIrequestsindirect
PyPIscikit-learnindirect
PyPIscipyindirect
PyPIsimplejsonindirect
PyPIstarkbank-ecdsaindirect
PyPIstatsmodelsindirect
PyPItabulateindirect
PyPItimeloopindirect
PyPIuvicornindirect
PyPIwebsocket-clientindirect
PyPIwebsocketsindirect
PyPIwsaccelindirect
Dependency advisories 0

This repository publishes no package the index resolves, so its own dependency graph was assessed — 2 packages, which also include development and test pins that never ship: 0 carry known advisories, of which 0 are direct. 36 could not be assessed — no resolved version, an unsupported ecosystem, or beyond the reported package list.

No known advisories affect the assessed dependencies.

An advisory means the version recorded in the dependency graph falls inside an advisory’s affected range. Reachability is not analysed, and the graph includes development and test pins — a finding may concern tooling rather than shipped software.

Raw JSON report machine-readable
{
  "data": {
    "repo": {
      "topics": [
        "cryptocurrency",
        "trading-bot",
        "trading-algorithms",
        "trading",
        "crypto",
        "framework",
        "algo-trading",
        "algorithmic-trading",
        "jesse",
        "trading-strategies",
        "python",
        "bot",
        "crypto-bot",
        "bitcoin",
        "trade",
        "crypto-bot-trading",
        "quantitative-finance",
        "quantitative-trading"
      ],
      "is_fork": false,
      "size_kb": 102232,
      "has_wiki": true,
      "homepage": "https://jesse.trade",
      "languages": {
        "CSS": 1212,
        "HTML": 36819,
        "Shell": 250,
        "Python": 3895743,
        "Dockerfile": 703,
        "JavaScript": 7332
      },
      "pushed_at": "2026-08-02T15:53:34Z",
      "created_at": "2018-11-09T10:38:44Z",
      "owner_type": "Organization",
      "updated_at": "2026-08-02T15:58:35Z",
      "description": "An advanced crypto trading bot written in Python",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "master",
      "license_spdx_raw": "MIT",
      "primary_language": "Python",
      "significant_languages": [
        "Python"
      ]
    },
    "owner": {
      "blog": "https://Jesse.Trade",
      "name": "Jesse",
      "type": "Organization",
      "login": "jesse-ai",
      "company": null,
      "location": "Luxembourg",
      "followers": 367,
      "avatar_url": "https://avatars.githubusercontent.com/u/44895627?v=4",
      "created_at": "2018-11-09T10:35:28Z",
      "is_verified": null,
      "public_repos": 24,
      "account_age_days": 2823
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v3.0.0",
          "kind": "major",
          "published_at": "2026-08-01T16:20:58Z"
        },
        {
          "tag": "v2.5.0",
          "kind": "minor",
          "published_at": "2026-07-06T16:17:43Z"
        },
        {
          "tag": "v2.4.1",
          "kind": "patch",
          "published_at": "2026-06-29T15:50:46Z"
        },
        {
          "tag": "v2.4.0",
          "kind": "minor",
          "published_at": "2026-06-15T16:41:19Z"
        },
        {
          "tag": "v2.3.4",
          "kind": "patch",
          "published_at": "2026-06-06T14:18:14Z"
        },
        {
          "tag": "v2.3.3",
          "kind": "patch",
          "published_at": "2026-06-03T17:44:21Z"
        },
        {
          "tag": "v2.3.1",
          "kind": "patch",
          "published_at": "2026-06-03T16:37:26Z"
        },
        {
          "tag": "v2.3.0",
          "kind": "minor",
          "published_at": "2026-06-03T15:17:23Z"
        },
        {
          "tag": "v2.2.2",
          "kind": "patch",
          "published_at": "2026-05-31T15:16:45Z"
        },
        {
          "tag": "v2.2.1",
          "kind": "patch",
          "published_at": "2026-05-30T16:27:35Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "1c9ce36c926b23e51520bfa6818a7ea84501c539",
          "body": null,
          "is_bot": false,
          "headline": "3.0.0",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-08-01T16:20:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fc047dff9453b7830f4efeb47123b0efb7ed06cf",
          "body": null,
          "is_bot": false,
          "headline": "Merge remote-tracking branch 'origin/kucoin'",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-08-01T15:52:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "43a6379c9fd1e7f7438f8ada415177e81502c7fb",
          "body": null,
          "is_bot": false,
          "headline": "fix: serve complete live chart history",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-30T10:02:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "60157d01450ef4f8d524487a3f8d3f8b933af6df",
          "body": "The candle queries combined their two timeframe conditions with Python's\n`or` instead of peewee's `|`:\n\n    Candle.timeframe == '1m' or Candle.timeframe.is_null()\n\n`or` evaluates the left operand, finds the Expression object truthy and\nreturns it immediately, so the is_null() half never reached the \n[…]\nsion of\nhigher timeframes, plus one pinning down why `or` cannot be used here.\n\nCo-authored-by: Saleh Mir <liveproduction@special.lu>\nCo-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix timeframe filter dropping the NULL-timeframe branch (#600)",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-29T16:00:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9e7b14af81adfdb3ec71e261e68fd035a5a0cf41",
          "body": "Bump mcp from 1.26.0 to 1.28.1",
          "is_bot": false,
          "headline": "Merge pull request #598 from jesse-ai/dependabot/pip/mcp-1.28.1",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-29T15:57:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6aac9c13586cdc4a849e685160899deaed012484",
          "body": null,
          "is_bot": false,
          "headline": "Read MCP resources as UTF-8",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-27T16:15:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "871e6122a3f8b04981fd76f9c951014bf4313e98",
          "body": null,
          "is_bot": false,
          "headline": "Keep Jesse Live imports optional",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-27T16:10:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d8e732524bb403f940ef9ad4d863eb12dceb50b1",
          "body": null,
          "is_bot": false,
          "headline": "Add route template persistence API",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-27T15:34:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7a2d207595ac0d4dbb20429f5c43444b2703ea08",
          "body": null,
          "is_bot": false,
          "headline": "Update frontend files",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-26T15:14:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5baf8c694578af9ead7f87badcee419cfe04d9ca",
          "body": null,
          "is_bot": false,
          "headline": "Persist failed research session state",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-24T16:40:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3a4be586a79dc1a5596a84e9f8e031dd08b0b328",
          "body": null,
          "is_bot": false,
          "headline": "Add isolated dashboard test database support",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-24T16:00:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b7708a7042ea8225c120bbaa7f553c5dd762070",
          "body": null,
          "is_bot": false,
          "headline": "Split local and external startup info",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-23T14:17:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "54088b3caa79e15ca93f2e71cd834747850adf26",
          "body": null,
          "is_bot": false,
          "headline": "Prevent reruns from losing active process state",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-23T12:13:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e3ad759f51df34ac37d41683ec8ed3bcb13cb606",
          "body": null,
          "is_bot": false,
          "headline": "Add reusable period templates",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-23T12:13:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a5f9b0515b9c66998e126f3526414ab6cd9caba",
          "body": null,
          "is_bot": false,
          "headline": "Rename Apex candle driver for Omni",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-22T15:24:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c0d5d79d5e279f5c2d47871fc0970116d730bc46",
          "body": "Drop the export_tradingview flag from the backtest API, MCP tools,\nsession models, download endpoint, research API, and delete the\ntradingview log service.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Remove Export TradingView option from backtests",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-22T15:19:08Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "cb5e13dc8b82b52de791de29377d4a7cdcda2587",
          "body": null,
          "is_bot": false,
          "headline": "Merge remote-tracking branch 'origin/kraken-pro'",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-22T10:16:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c408ca2c99b7f2b1322b6f2311dffe026f4a9966",
          "body": null,
          "is_bot": false,
          "headline": "Improve MCP chart authoring guidance",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-21T10:05:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5195e522e7fa46a1495b830d637c61b011f3c957",
          "body": null,
          "is_bot": false,
          "headline": "Test backtest chart data delivery",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-20T12:00:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe5c32f5ed842627b49abb0b876fd4bfaf24c84a",
          "body": null,
          "is_bot": false,
          "headline": "Improve backtest chart data delivery",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-20T09:55:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "275379ba7792eb99405048e2ae3285608f3ba5ce",
          "body": null,
          "is_bot": false,
          "headline": "Update frontend files",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-19T12:27:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "96242120b66f1c08a2dba76df0d5f7600c0a7d43",
          "body": null,
          "is_bot": false,
          "headline": "Validate session IDs across session endpoints",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-19T12:27:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1b70faa222bbd101cea78f00387b1416dd54b60a",
          "body": null,
          "is_bot": false,
          "headline": "Persist live strategy chart history",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-19T11:53:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "78ace4469061b659f5c8be77ed4977f457d517fc",
          "body": null,
          "is_bot": false,
          "headline": "Log invalid strategy chart values",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-19T10:55:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f4f611d5330802c4392b599b4cea1eb000b4add6",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'master' into kucoin",
          "author_name": "morteza-koohgard",
          "author_login": "morteza-koohgard",
          "committed_at": "2026-07-19T09:14:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5db141e3da6e202f1d212801e24bd9505bbc88be",
          "body": null,
          "is_bot": false,
          "headline": "Validate significance test session IDs",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-18T15:02:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4686d25c3e064dd3056a9c4a4088c40c02fdce25",
          "body": "Bumps [mcp](https://github.com/modelcontextprotocol/python-sdk) from 1.26.0 to 1.28.1.\n- [Release notes](https://github.com/modelcontextprotocol/python-sdk/releases)\n- [Changelog](https://github.com/modelcontextprotocol/python-sdk/blob/main/RELEASE.md)\n- [Commits](https://github.com/modelcontextprot\n[…]\n/compare/v1.26.0...v1.28.1)\n\n---\nupdated-dependencies:\n- dependency-name: mcp\n  dependency-version: 1.28.1\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump mcp from 1.26.0 to 1.28.1",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-16T20:24:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e75053fe95626bc8cf77fd544b4715a3116c7bd3",
          "body": null,
          "is_bot": false,
          "headline": "Add intrabar strategy chart updates",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-16T14:26:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c9d168a3aafbf19ed9b202a262230b91e682f556",
          "body": null,
          "is_bot": false,
          "headline": "Add live strategy chart data support",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-16T12:37:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fa63531cae6c09b978711dc1892285067304e2df",
          "body": null,
          "is_bot": false,
          "headline": "Update frontend files",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-13T15:45:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d836b513dcc4282217d3511633f69c3d76932d4c",
          "body": "Document the shared `.claude/skills` setup for both Claude Code and Codex, and add the `.agents/skills` symlink so Codex can discover the canonical skill files. This also updates `AGENTS.md` with the repo-level workflow for scanning and loading matching skills before starting work.",
          "is_bot": false,
          "headline": "Add shared agent skills discovery docs",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-13T15:44:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3836c3bc0d723f77383c0ffe0329ed7d77a7ec80",
          "body": null,
          "is_bot": false,
          "headline": "Enable live trading for Kraken spot",
          "author_name": "morteza-koohgard",
          "author_login": "morteza-koohgard",
          "committed_at": "2026-07-12T18:52:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4c413a77388666a907a46a24d574d6cb3fcc2080",
          "body": null,
          "is_bot": false,
          "headline": "Refactor API authentication with FastAPI dependencies",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-12T13:09:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c94b48b0e4d0b166923003cc46ffa96b2b1b7334",
          "body": "- Add @overload signatures to all scalar-returning indicators so type\n  checkers resolve sequential=False -> float and sequential=True -> ndarray\n- Declare post-initiation types for late-initialized Strategy attributes\n  (name/symbol/exchange/timeframe/position/broker); hp is now always a dict\n- Typ\n[…]\nes (entry/exit orders, exchange_type,\n  daily_balances) and log()'s webhook param\n- Document the strategy-facing typing conventions in AGENTS.md\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Improve type-checking support for strategy-facing APIs",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-12T11:01:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "73635dc3a976d2cfad6223bdebbc7228b435e250",
          "body": null,
          "is_bot": false,
          "headline": "Fix MCP backtest route persistence",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-12T11:01:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "96110dbc9a83f0b1f342f419de989cb537188798",
          "body": "The plugin releases endpoints moved to the api2 backend. Point the live-plugin\ninstaller's download and the releases-info lookup at JESSE_API2_URL. The license\ncheck (/v2/user-info) is unchanged.\n\nCo-authored-by: Saleh Mir <liveproduction@special.lu>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fetch the Jesse Live plugin (download + releases-info) from api2 (#595)",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-06T16:17:43Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7296cec497870215cb343047e81dac36ab3f2223",
          "body": null,
          "is_bot": false,
          "headline": "Bump version to 2.5.0",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-07-05T15:11:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a5f0016c557bffd11dbeac363793cb0641e2a064",
          "body": "Adds Kraken enums, info.py entries, and the candle-import drivers\n(incl. kraken_utils) that the jesse_live Kraken live drivers depend on.",
          "is_bot": false,
          "headline": "Merge Kraken Pro (Spot + Futures) core support (PR #588)",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-07-05T15:10:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0b313211de7a7a8448b461572ed9a42f5ed1e383",
          "body": "get_order_by_id did `id in str(o.id)`, which raises\n\"TypeError: 'in <string>' requires string as left operand, not int\"\nwhen the client_id arrives as an int rather than a str. Some exchange\norder-stream payloads carry numeric ids (e.g. Binance algo/strategy order\nids), which crashed the order-status\n[…]\nefore the substring\nmatch. Adds a regression test covering int and None ids.\n\nCo-authored-by: Saleh Mir <liveproduction@special.lu>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix TypeError in get_order_by_id when client_id is an int (#594)",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-07-05T10:32:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6ff8fc63b948d474e6878abe2e2a736cd1190086",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'master' into kraken-pro",
          "author_name": "morteza-koohgard",
          "author_login": "morteza-koohgard",
          "committed_at": "2026-07-01T10:02:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ddb335a4f946f5ec57fdc35de8eb032c97365ec0",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'master' into kraken-pro",
          "author_name": "morteza-koohgard",
          "author_login": "morteza-koohgard",
          "committed_at": "2026-07-01T09:54:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3bf4f1c9c6f09a0df693bbd34c1b01973ebcc4d4",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'master' into kraken-pro",
          "author_name": "morteza-koohgard",
          "author_login": "morteza-koohgard",
          "committed_at": "2026-07-01T09:53:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b6da2a8153aa474c376f236256e214b79ffff152",
          "body": "Disable live_trading for Kraken's public OHLC endpoint (720-candle\nrolling window) and enable backtesting for the leveraged Kraken mode\nthat supports historical data.",
          "is_bot": false,
          "headline": "Update Kraken exchange backtesting/live flags",
          "author_name": "morteza-koohgard",
          "author_login": "morteza-koohgard",
          "committed_at": "2026-07-01T09:52:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "377843a35402d35f6538a49120a918021a885134",
          "body": null,
          "is_bot": false,
          "headline": "2.4.1",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-06-29T15:50:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1448dfdd983d8af143de083f2015584a6a9e5839",
          "body": null,
          "is_bot": false,
          "headline": "2.4.1",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-06-29T15:50:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fa933cf03491a5382e2ef468a317403d084c9b88",
          "body": "Make the server-authoritative backend the default (was \"local\") so the daily limit\nis enforced by the licensing backend with no env var needed. \"local\" stays available\nas an opt-out via MCP_USAGE_METER=local. Fails open, so a backend outage never\ndisrupts usage.\n\nTests: an autouse fixture forces loc\n[…]\nr the existing local-flow tests; add a\ndefault-is-remote check. All 26 pass.\n\nCo-authored-by: Saleh Mir <liveproduction@special.lu>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "MCP usage limits: default the meter to \"remote\" (#593)",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-06-25T16:55:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3076e3664731c7c5ec6a5aa8674394dc08b35e82",
          "body": null,
          "is_bot": false,
          "headline": "MCP usage limits: add server-authoritative meter backend (#592)",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-06-25T16:36:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c571d3a29a2a44b0ed5a055034b442e01abc6231",
          "body": "Added exceptions for report file creation and clarified rules for using MCP tools.",
          "is_bot": false,
          "headline": "Update agent rules with report creation exceptions (#591)",
          "author_name": "Jorge Correa",
          "author_login": "jorgemcorreac",
          "committed_at": "2026-06-20T10:37:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ff272192d3634f9875572e5da17a3dea9b9b2a00",
          "body": "Reverts the generic webhook driver (custom payload key + JSON template) and its\ntests. _custom_channel_notification returns to handling only Slack/Discord URLs.\nThe Telegram/Discord/Slack notification drivers are unaffected.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Remove generic webhook notification feature",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-15T16:41:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2357b052fbeaba94f14dfc61751e62b120f8b6c8",
          "body": "Generic webhooks can now shape the request body to whatever the target service\nexpects, instead of a hardcoded {'text': ...}:\n- payload_template: user-supplied JSON of any shape with a {{message}} placeholder\n  (substituted at any depth) POSTed verbatim — supports extra/nested fields.\n- payload_key:\n[…]\nld name\n  (defaults to 'text'). payload_template takes precedence.\nBoth flow through the stored notification driver config + CSV import/export.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "notifier: configurable webhook payload (custom key + full JSON template)",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-15T15:54:55Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "11a92d91e43596713f4f816bee06e443938d8697",
          "body": "Adds generic webhook delivery to _custom_channel_notification: non-Slack/Discord\nURLs now POST JSON ({'text': ...}) with a form-encoded fallback instead of raising,\nwith a 15s timeout matching the other senders so a slow endpoint can't stall the\nnotifier loop. Adds a stored 'webhook' driver path and\n[…]\nm colleague's stale webhook-notifcation branch onto current master to\navoid reverting the existing HTTP timeouts and notifier-loop crash guard.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "notifier: support generic webhooks (with timeout) + tests",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-15T14:44:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5c898169ba5e61669d158bcc691410a50ce5ee4a",
          "body": "elliottech/lighter-python v1.1.1 (#158, 'allow l2 sig revoke & approve zero\nfees integrator'): the new signer can build a zero-fee integrator approve using\nonly the L2 (API-key) signature. The previous build treated zero max-fees as a\nrevoke ('ApprovalExpiry should be zero when revoking'), so a friction-free\nauto-approve was impossible. Verified live on mainnet (sendTx code 200, no L1).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Lighter: update vendored signer binaries to upstream v1.1.1",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-15T14:28:38Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2a63d91af8f0fccd61919d6a1afa5758b5ab31d6",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Bump version to 2.4.0",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-15T13:01:23Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "07e65ba03bd96f57ebf657c56395f10a4a2edb23",
          "body": null,
          "is_bot": false,
          "headline": "2.4.0",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-06-15T12:54:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5939e96272dedf10595a4d3c6cce2a38603bd254",
          "body": "_load_asset_pairs only normalized XBT->BTC, so Dogecoin was exposed as XDG-USD\ninstead of DOGE-USD — it looked 'missing' as DOGE, and XDG-USD then errored\nbecause the trade/WS API only speaks the standard DOGE name. Add a shared\nKraken<->Jesse base-alias map (XBT<->BTC, XDG<->DOGE) applied inbound and in the\noutbound altname fallback.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "kraken candle driver: normalize XDG->DOGE alias",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-14T13:31:24Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1fd9bcdcdb50133f9656d5045d3cc56dc6abbb63",
          "body": "Backtest candle-import driver for KuCoin (enums KUCOIN_SPOT / KUCOIN_USDT_PERPETUAL,\ninfo.py fees+settle, drivers/KuCoin spot+futures fetchers + symbol mapping).",
          "is_bot": false,
          "headline": "feat: KuCoin Spot + USDT Perpetual candle-import driver",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-12T16:35:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ecf119a64b31542cb69c93f74f0f37dff3bac7eb",
          "body": "Update requirements.txt to pin jesse-rust==1.2.0 (was 1.1.0). This change upgrades the dependency to the newer release to pick up improvements or fixes in 1.2.0.",
          "is_bot": false,
          "headline": "Bump jesse-rust to 1.2.0",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-06-12T15:36:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "146d345eb1feb792d53c7746fa3b532de958ed25",
          "body": "test_fast_mode_equivalence runs the same single-route real-strategy\nbacktest twice (fast_mode=False then True) over deterministic gapless\n1m candles (~5 months, seed 9001) and asserts the trades fingerprint\n(trades_hash, trade counts, net profit, finishing balance, fee) is\nidentical between the two \n[…]\nr\ntoo) that must not be codified here. Verified to pass on master\n@ 0987c304 as well (12.7s) and on this branch (7.6s); suite is now\n501 passed.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add fast/step simulator equivalence regression test (clean data)",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-12T08:43:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "79ac1a491216bea297e95ef4dc31d51664436799",
          "body": "…results\n\nTwo slow-but-default pytest tests run full research.backtest() sessions with\nreal strategies adapted from the maintainer's bot project (Alligator multi-TF,\nDonchian-ATR trend, ADX/Williams%R) over seeded synthetic candle windows\n(~1y single-route step-sim; ~6mo x 3 routes fast-sim) and ass\n[…]\n\n\nAlso registers a 'slow' pytest marker (tests/conftest.py) and documents the\npre-existing API-singleton driver-freeze quirk the tests sidestep.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add real-strategy regression tests pinned to pre-optimization master …",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-12T08:09:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c0bc92f68be3c3005d7b92d7c5b61adf923e7ae4",
          "body": "… preservation)\n\nThe reuse in _simulate_new_candles returned the post-jump-fix candle for\npipeline sessions, while historical behavior built the HTF candle from the\npre-fix rows in candles_arr (the pipeline buffer write-back precedes the\nfix). Gating on (storage_1m is not None or candles_pipeline is\n[…]\n all view-backed paths and the exact old behavior for\npipelines. Fingerprints re-verified (gatecheck: fp cc8ab0d73d50ae16, no\nspeed regression).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Gate the HTF real_candle reuse to non-pipeline paths (strict behavior…",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-12T07:28:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7d24a375721b0206b0adbe53e8e19d2deb842e01",
          "body": "Comments/docs only — zero behavior change (verified: bench docscheck\nfingerprints cc8ab0d73d50ae16 identical to baseline after these edits).\n\n- docs-perf/REPORT.md: executive summary (suite 79.0s -> 27.5s, 2.88x,\n  full per-round table), correctness methodology (fingerprint gating incl.\n  trades_has\n[…]\n note the *_last call is bit-for-bit\n  identical to the full-series kernel's [-1].\n- DynamicNumpyArray.__getitem__: hot-path restructuring note.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Docs: review guide + why-comments for the perf-backtests branch",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-12T07:25:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "15cb00d382ddd115347372eacd7c9a3dd8a2625e",
          "body": "In the skip simulator, whenever a route's timeframe count equals the\nsimulation step (always true for single-timeframe sessions), the\nhigher-timeframe candle was rebuilt from the exact same rows that\n_simulate_price_change_effect_multiple_candles had just aggregated into\nreal_candle, through the exa\n[…]\ne\nstorage buffer, so no aliasing is retained.\n\nbench (fast): a 0.33->0.30s, b 5.46->5.41s, c 2.52->2.43s, d 2.11->2.05s;\nfingerprints identical.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Reuse the step's real candle as the HTF candle when counts align",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-11T21:25:32Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "55f0ad774c5521d72671c87382e52d7a546a56ce",
          "body": "Position.type read qty/_min_qty through up to two stacked property chains\n(is_long -> _min_qty, is_short -> _min_qty) and is_open allocated a list\nper call; type now reads qty and _min_qty once (identical comparisons) and\nis_open compares against 'close'. Pure restructuring of per-call reads --\nno caching, nothing can go stale, safe for live trading.\n\nbench: ~0-1.5% (within noise on b, small gain on c_multi fast);\nfingerprints identical.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Flatten Position.type/is_open property chains",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-11T21:14:23Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "51be56bc5072c8e60f95884d42c81851664aaa80",
          "body": "Mirror of the step simulator's prefill (e86ac0d2) for fast mode, which is\nthe default path for dashboard/MCP users. For pipeline-less pairs the\nper-step loop's only input mutations are the step-boundary jumped-candle\nfixes (which read only the previous close, never written by any fix), so\nthey are a\n[…]\nty) with fallback to the old path.\n\nbench (fast): a 0.38->0.34s, b 5.81->5.62s, c 2.78->2.58s, d 2.63->2.43s\nvs round 2; fingerprints identical.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Prefill 1m candle storage upfront in the skip simulator too",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-11T21:05:47Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "20c6b834309458b0d0dcdd627ed93f618119a14f",
          "body": "For arrays of <= 8 elements (the buy/sell/stop-loss/take-profit pairs\ncompared every candle), compare elements directly instead of paying\nufunc dispatch — identical float/NaN semantics.\n\nbench: b_heavy_15m:fast 6.09s -> 5.78s, fingerprint identical.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Scalar-compare tiny order arrays in _np_array_equal",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-11T20:47:15Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3453688e17ad9ceca9ab8f463de36a854be8ab9d",
          "body": "- Strategy._detect_and_handle_entry_and_exit_modifications: replace\n  np.array_equal with a semantically-identical helper that skips\n  numpy's dispatch overhead for the small ndarray pairs compared on\n  every candle (~58K calls per heavy backtest).\n- candle_service.get_candles: same logic, but plain\n[…]\nm:fast 6.31s -> 6.09s, fingerprint identical.\ntests: test_parent_strategy/test_state_candle/test_candle_service/\ntest_simulator_parity all pass.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Cheapen per-candle Python hot paths: array compares and get_candles",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-11T20:44:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e86ac0d2db3b9c1af5c189a5cc9f5151f2d9bb24",
          "body": "For pipeline-less pairs, gap-fix the whole 1m series once via\njesse_rust.fix_jumped_candles, bulk-copy it into the storage buffer,\nand replace the per-minute add_candle + DynamicNumpyArray.append with\na single index bump. Guards (dtype/writeable/zero-ts/strictly\nincreasing timestamps/warmup continui\n[…]\nexactly as before.\n\nbench: a_simple_1h:step 2.21s -> 1.25s, b_heavy_15m:step 11.85s ->\n7.56s (1.81x / 1.57x vs round 1), fingerprints identical.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Prefill 1m candle storage upfront in the step simulator",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-11T20:39:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "cdd8b8e618b01d7ea59b49b9e3a8aae8fae4f297",
          "body": "generate_candle_from_one_minutes and the real_candle construction in\n_simulate_price_change_effect_multiple_candles now call\njesse_rust.candle_from_one_minutes (bit-exact vs the numpy expression,\nverified for all block sizes <= 4320 rows; numpy fallback above).\n\nbench: b_heavy_15m:fast 6.82s -> 6.31s, a_simple_1h:step 2.27s -> 2.21s,\nfingerprints identical.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Build higher-timeframe candles via the jesse_rust kernel",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-11T20:32:16Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "23ec9fe110df0bc7578547dbb42b7d6b2e3d4e12",
          "body": "ema/sma/rsi/atr/bollinger_bands now call the new jesse_rust *_last\nfunctions when sequential=False: identical recurrence (bitwise-equal\noutput), but no full-series allocation, no [-1] indexing, and no\nastype(float64) copy in bollinger_bands when the source is already\nf64 (the Rust side accepts strided views).\n\nbench: b_heavy_15m:fast 9.90s -> 6.82s (1.45x vs round 1),\nfingerprint identical. tests/test_indicators.py: 178 passed.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Use jesse_rust scalar *_last indicator kernels for sequential=False",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-11T20:25:46Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "fdbd016691a5a1f4edebcdd380b005fb9f573cd4",
          "body": "The previous membership-test version still went through\nMapping.__contains__, which internally raises/catches KeyError on every\ncall when the env var is absent — that lookup alone was ~0.5s per heavy\nbacktest via get_config() -> slice_candles() on every indicator call.\n\nNew logic: if 'pytest' is in \n[…]\n failures, 80 passed).\n\nBench b_heavy_15m fast: 10.29s -> 9.85s (-12.2% vs baseline 11.22s).\nFingerprint 760596ae71bcce7b identical to baseline.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Make is_unit_testing() near-free outside pytest processes",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-11T20:01:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "30dcc470d3026df4e3b5fac327893374ddbf92c2",
          "body": "- _simulate_price_change_effect: only re-add the real candle to storage\n  when at least one order actually executed (i.e. partial candles were\n  written that need to be overwritten). When nothing executed, the\n  caller (_step_simulator) added this exact candle object immediately\n  before, so the sec\n[…]\ne 5.33s),\nb_heavy_15m step 14.65s -> 12.17s (-24.8% vs baseline 16.17s).\nFingerprints cc8ab0d73d50ae16 / 760596ae71bcce7b identical to baseline.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Skip redundant candle re-store and duplicate position lookup per minute",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-11T19:56:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5dfa632078fd4c70c86f28ecc097a313f5aaef43",
          "body": "Precompute once before the loop instead of per minute (x ~260K-1M):\n- per-route candle arrays / pipelines / exchange / symbol tuples\n  (replaces 3 dict lookups per route per minute)\n- (timeframe, minutes) pairs for higher-timeframe generation (replaces\n  config['app']['considering_timeframes'] looku\n[…]\n.05s (-20%; -42.8% vs baseline 5.33s),\nfast 0.74s -> 0.60s (combined with previous commits).\nFingerprint cc8ab0d73d50ae16 identical to baseline.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Hoist loop invariants out of the _step_simulator per-minute loop",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-11T19:52:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8048b4cb6efe4c14b631a0ed1f19a8838ebd9d3e",
          "body": "…, keys)\n\n- utils.timeframe_to_one_minutes: use the existing module-level\n  TIMEFRAME_TO_ONE_MINUTES constant instead of rebuilding a 17-entry\n  dict + running two function-level imports on every call (~145K calls\n  per heavy backtest). Error path unchanged (same InvalidTimeframe).\n- helpers.timefra\n[…]\nn: inline jh.key() f-strings.\n\nBench b_heavy_15m fast: 11.22s -> 10.29s (-8.3% vs baseline).\nFingerprint 760596ae71bcce7b identical to baseline.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Cheapen per-indicator-call helpers (timeframe lookup, is_unit_testing…",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-11T19:50:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c9d33d0920ac9ddd539e938b9f0f29be9f00e376",
          "body": "- _simulate_price_change_effect: skip the candle copy and the execution\n  while-loop entirely when no order falls inside the candle (the common\n  case); the closing add_candle + position price update now run once at\n  the tail, which is exactly what the old loop's single break path did.\n  Removed re\n[…]\n baseline 5.33s),\nb_heavy_15m step 16.17s -> 14.65s (-9.4% vs baseline). Fingerprints\ncc8ab0d73d50ae16 / 760596ae71bcce7b identical to baseline.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Early-exit order simulation paths in the per-minute hot loop",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-11T19:46:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e2860dc4d3c8195d1e7b0f0a42b6bc11351798ee",
          "body": "…mpyArray)\n\n- add_candle: read the last candle's timestamp once as a scalar\n  (arr.array[index, 0]) instead of up to 3 arr[-1][0] row-view builds per\n  call; write last-candle updates directly (arr.array[index] = candle);\n  hoist the duplicated jh.is_live() call; early-return on initial append.\n- Ca\n[…]\nse-branch)\npreserved.\n\nBench a_simple_1h: step 5.33s -> 4.27s (-19.9%), fast 0.74s -> 0.72s.\nFingerprint cc8ab0d73d50ae16 identical to baseline.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Cheapen hot candle-storage access (add_candle, get_storage, DynamicNu…",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-11T19:42:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f86521f80293fc0311c99238e435e0fb30657721",
          "body": "In research/backtest sessions outside a Jesse project the per-trade\nClosedTrade.update() always raised 'Query must be bound to a database',\ngot caught, and pretty-printed a debugging block to the terminal for\nevery closed trade. Guard on database.is_open() instead — exactly the\ncases that previously\n[…]\nrminal I/O.\n\nBench: a_simple_1h step 5.33s -> 5.33s (neutral here; scales with trade\ncount), fingerprint cc8ab0d73d50ae16 identical to baseline.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Skip closed-trade DB write when no database is available",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-11T19:39:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "41d0f80424244aef24b482ef1c8c526a557a0a16",
          "body": "Adds KRAKEN_SPOT / KRAKEN_PERPETUAL / KRAKEN_PERPETUAL_TESTNET enums and info.py\nentries, plus REST candle-import drivers used for live warm-up candles:\n- Kraken Spot (api.kraken.com /0/public/OHLC; rolling ~720-candle window so\n  backtesting=False; OHLC time is seconds -> ms, candle open-time, olde\n[…]\nutures.kraken.com charts API; time already in ms, deep history).\nBoth translate Jesse BASE-USD symbols to Kraken naming (XBT<->BTC, PF_ perps).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add Kraken Pro Spot + Futures: enums, info.py, candle-import drivers",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-08T18:41:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e499b3eae3f24be246ddb306e0d509a0807a2b59",
          "body": "Rebuilt jesse/static from the current dashboard-v1 master, which includes the merged\noptimizationStore.ts _ensureResultsShape fix (recovers MCP-created + older optimization\nsessions that previously failed to load). Generated via dashboard-v1 'npm run generate'.\n\nCo-authored-by: Saleh Mir <liveproduction@special.lu>\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Rebuild dashboard static (optimization session-loading fix) (#587)",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-06-08T17:37:55Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "04f7e8528328fc4862205a54c9e6eb36ac6cffb4",
          "body": "Rebuilt jesse/static from the current dashboard-v1 master, which includes the merged\noptimizationStore.ts _ensureResultsShape fix (recovers MCP-created + older optimization\nsessions that previously failed to load). Generated via dashboard-v1 'npm run generate'.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Rebuild dashboard static (optimization session-loading fix)",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-08T17:34:31Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0987c304d7f276cfc09c942e53d4c39c9395b8ee",
          "body": "create_optimization_draft_service persisted an incomplete session results state ({alert}\nonly). The dashboard's loadSession patches that state in and then reads\nresults.progressbar.current / results.exception.error directly, so MCP-created sessions\ncrashed with 'Failed to load session' (dashboard-ru\n[…]\nready-saved broken sessions).\nThe dashboard must be rebuilt into jesse/static at release.\n\nCo-authored-by: Saleh Mir <liveproduction@special.lu>\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix MCP optimization sessions failing to load in the dashboard (#586)",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-06-08T17:30:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3ed65ff6837242090b4ca9391d5067e9344fc249",
          "body": "jesse/services/env.py validates that a project .env exists at import time and, if\nmissing, called jh.error(). But jh.error() -> is_live() -> jesse.config ->\njesse.modes.utils -> jesse.services.logger -> jesse.services.redis, and\nservices.redis is exactly what imports env.py — so it is still mid-impo\n[…]\n process exits cleanly. Behaviour with a valid .env\nis unchanged; full suite still green.\n\nCo-authored-by: Saleh Mir <liveproduction@special.lu>\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix circular-import crash when a project .env is missing (#585)",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-06-07T15:15:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b4e3536478482a9dc6f3a6a472b52d7f94e22287",
          "body": "Introduce _print_import_progressbar to render a compact visual progress bar for CLI/research candle imports (show_progressbar=True). The new helper builds a 32-char bar using filled/empty blocks, clamps the filled width, formats a human-readable ETA (h/m/s), and displays the symbol, exchange, percent, reached date, and ETA. Replace the previous single-line progress print in run() with a call to this helper for clearer import feedback.",
          "is_bot": false,
          "headline": "Add CLI progress bar for candle imports",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-06-07T12:32:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4e4d1363da56e9418296507461d9d249b3365514",
          "body": null,
          "is_bot": false,
          "headline": "update dashboard files",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-06-07T12:32:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9b2293f846640534dd04bd465486a56496145fc8",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Bump version to 2.3.4",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-06T14:18:14Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "511aa42e823ea6a0b685209f5fde9039b921af89",
          "body": "Guests (no license token) get 0 research runs by default; the message states a free account is required (no premium mention). Free 100/day and paid unlimited unchanged. Client-side; fail-open only on a real backend error.",
          "is_bot": false,
          "headline": "MCP usage limits: guests need an account (0 runs by default) (#584)",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-06-06T13:51:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a0808a4f8639d9541c8b9ba40273651f51706ef2",
          "body": "… and Monte Carlo runs\n\nfast_mode now defaults to True in create_backtest_draft (tool + service) and\nthe Monte Carlo run-payload fallback, matching the existing optimization default.\nResource docs updated to reflect the new defaults.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(mcp): enable fast_mode by default for all MCP-executed backtests…",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-06-06T12:25:35Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e6d2d632d40a921672051710d054ad46996e4252",
          "body": "MCP usage limits: daily free-plan allowance for research runs (client-side)",
          "is_bot": false,
          "headline": "Merge pull request #583 from jesse-ai/feat/mcp-usage-limits",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-06-05T15:47:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f84ce0a4dffbba698ad6fbf5f0437fdcdf1938e",
          "body": "Per Saleh: a missing license token now means GUEST (not fail-open) — metered at a\nsmaller daily budget (50) and nudged to log in when over. A logged-in non-paid\nuser is FREE (100/day, nudged to upgrade to premium). Paid plans stay unlimited.\nOnly a real backend error (token present but /v2/user-info\n[…]\nis client-side (local Redis daily counter) and fail-open, per Saleh's call: a\nsoft nudge toward premium, not a hard wall (a determined user can bypass it).\n\nAdds a paid-plans test and updates the doc.",
          "is_bot": false,
          "headline": "mcp limits",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-05T15:43:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fa43d4f8051762ec96ca204fd615d9764f25d29e",
          "body": "Fix fast/full simulator divergence on synthetic (Monte Carlo) candles",
          "is_bot": false,
          "headline": "Merge pull request #582 from jesse-ai/fix/backtest-fastmode-parity",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-06-05T14:26:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1cc9c77055a057ad32032da78bdd9ebc61b8da13",
          "body": "The step simulator (fast_mode=False) built higher-timeframe candles and its\ngap-fix reference from the ORIGINAL candles array, because it never wrote the\npipeline's synthetic candle back into it (the skip simulator does). So with a\ncandle pipeline active (Monte Carlo), the strategy's indicators were\n[…]\nPipeline, plus a\nregression test asserting fast and full feed the strategy identical candles\nunder a pipeline (the test fails before this fix).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix fast/full simulator divergence on synthetic (pipeline) candles",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-04T21:42:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7416c06abb9de7af0769cbdd89698a20418bfab7",
          "body": "The full step-simulator blows up on synthetic bootstrapped candles for\nrisk-sized strategies: positions get sized off a momentarily tiny ATR, the\nbalance compounds into an overflow, and scenarios die with InsufficientMargin\n/ Infinity (the Infinity also broke the session API's JSON, surfacing as\n\"In\n[…]\noff produce byte-identical results (a\npre-existing step-vs-skip simulator divergence on synthetic candles) is in\nprogress on a separate branch.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "MCP/dashboard Monte Carlo: default fast_mode=True (robust path)",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-04T21:11:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "af99785d39034330ed21bb30937a68974a4aaf1c",
          "body": "Add MCP support for optimization mode",
          "is_bot": false,
          "headline": "Merge pull request #581 from jesse-ai/feat/mcp-optimization-mode",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-06-04T16:41:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "41a6b543f739d610ca596a2633285a0a24e8d284",
          "body": "Parity with the other modes' resources (jesse://monte_carlo,\njesse://significance_test, jesse://backtest_management): a per-feature guide that\nthe resources loader auto-registers from the .md filename. Documents the\ntrain/test split, the hyperparameters() precondition, objective functions,\nper-hyper\n[…]\nal counts, train-vs-test overfit interpretation, the full\ntool reference, an adaptive check schedule, the standard workflow, and common\nerrors.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add jesse://optimization MCP resource doc",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-04T16:36:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b46863c082ebd42a4598f648f9a583bc70a177f1",
          "body": "…lures\n\nFix silent MCP backtest/RST failures and harden config handling",
          "is_bot": false,
          "headline": "Merge pull request #580 from jesse-ai/fix/mcp-backtest-rst-silent-fai…",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-06-04T16:30:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7a29a2012b9a5cc29072cf388861bad589f7493c",
          "body": "Mirrors the Monte Carlo MCP tools so an agent can stage, run, and poll\nhyperparameter optimizations with the same draft/run/poll workflow it already\nuses for backtests, RST, and Monte Carlo.\n\n- jesse/mcp/tools/services/optimization.py: service layer over the /optimization\n  HTTP endpoints. Folds obj\n[…]\nand 10 ranked candidates (train/test Sharpe per candidate); a no-data symbol\nstops fast with a clear \"import candles for both windows\" message.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add MCP support for optimization mode",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-04T15:08:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a9a1f8e7fec14124c4808f2df46328aee09c80c3",
          "body": "The two set_config tests mutated Jesse's module-global config, which leaks into\nlater tests in the same process: reset_config() rebinds the config global and\nuses a shallow backup_config, and several mode helpers are lru_cached, so the\nmutations couldn't be cleanly contained without breaking other g\n[…]\nonte Carlo / optimization run.\n\nFull suite now passes (477 passed) under the CI invocation\n(PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test_config_safety: drop global-mutating set_config tests to fix CI",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-04T15:08:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "753098ea69ef5c48da638b0f9ce27592c090a756",
          "body": "Root cause: set_config() indexed each exchange by e['name'], but the API/MCP\nsend the exchanges map keyed by exchange name with no inner 'name' field. The\nresulting KeyError was raised inside a spawned backtest/RST worker that then\nexited via os._exit(), losing the traceback, so the session sat at d\n[…]\neached) via\n  get_candle_import_status instead of only running/finished.\n- tests/test_config_safety.py: regression tests for both config fixes.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix silent MCP backtest/RST failures and harden config handling",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-04T11:47:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c744cf36d83b95a37702feb43041daeca9b7b1e6",
          "body": null,
          "is_bot": false,
          "headline": "2.3.3",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-06-03T17:44:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f33232aa22bd226b6eb4ae3019839af5299e6058",
          "body": null,
          "is_bot": false,
          "headline": "Update dashboard files",
          "author_name": "Saleh Mir",
          "author_login": "saleh-mir",
          "committed_at": "2026-06-03T17:43:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aa1edde225f7c5a40b58b3dcf16a23c3e237c379",
          "body": "Host the Lighter native signer binaries in the jesse package (like Apex's omni_files), so\nthey ship as plain package data in jesse's pure-Python wheel. jesse-live's compiled\ncibuildwheel build runs auditwheel/delocate, which reject these prebuilt binaries (macOS-26\ndylib, too-recent GLIBC in the Go .so); the pure-Python jesse wheel has no such repair step.\nThe jesse-live Lighter signer loads them from this package at runtime.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Lighter: vendor signer binaries here (pure-Python wheel) + bump to 2.3.1",
          "author_name": "Saleh Mir",
          "author_login": null,
          "committed_at": "2026-06-03T16:37:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        }
      ],
      "releases_count": 10,
      "commits_last_year": 421,
      "latest_release_at": "2026-08-01T16:20:58Z",
      "latest_release_tag": "v3.0.0",
      "releases_from_tags": true,
      "days_since_last_push": 0,
      "active_weeks_last_year": 47,
      "days_since_latest_release": 0,
      "mean_days_between_releases": 7
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 50,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "jesse",
          "exists": true,
          "license": null,
          "keywords": [
            "License :: OSI Approved :: MIT License",
            "Operating System :: OS Independent",
            "Programming Language :: Python :: 3"
          ],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/jesse/",
          "is_deprecated": false,
          "latest_version": "3.0.0",
          "repository_url": "https://github.com/jesse-ai/jesse",
          "versions_count": 358,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": "2020-04-06T13:41:23.001389Z",
          "latest_published_at": "2026-08-02T15:54:25.790263Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 0
        }
      ]
    },
    "popularity": {
      "forks": 1188,
      "stars": 8281,
      "watchers": 207,
      "fork_history": {
        "days": [
          {
            "date": "2021-04-10",
            "count": 1
          },
          {
            "date": "2021-04-12",
            "count": 4
          },
          {
            "date": "2021-04-13",
            "count": 3
          },
          {
            "date": "2021-04-14",
            "count": 1
          },
          {
            "date": "2021-04-15",
            "count": 3
          },
          {
            "date": "2021-04-17",
            "count": 1
          },
          {
            "date": "2021-04-19",
            "count": 1
          },
          {
            "date": "2021-04-20",
            "count": 2
          },
          {
            "date": "2021-04-21",
            "count": 1
          },
          {
            "date": "2021-04-22",
            "count": 2
          },
          {
            "date": "2021-04-23",
            "count": 1
          },
          {
            "date": "2021-04-25",
            "count": 3
          },
          {
            "date": "2021-04-27",
            "count": 3
          },
          {
            "date": "2021-04-28",
            "count": 2
          },
          {
            "date": "2021-04-29",
            "count": 1
          },
          {
            "date": "2021-04-30",
            "count": 2
          },
          {
            "date": "2021-05-02",
            "count": 1
          },
          {
            "date": "2021-05-03",
            "count": 3
          },
          {
            "date": "2021-05-04",
            "count": 1
          },
          {
            "date": "2021-05-05",
            "count": 1
          },
          {
            "date": "2021-05-07",
            "count": 2
          },
          {
            "date": "2021-05-08",
            "count": 2
          },
          {
            "date": "2021-05-10",
            "count": 1
          },
          {
            "date": "2021-05-11",
            "count": 1
          },
          {
            "date": "2021-05-13",
            "count": 1
          },
          {
            "date": "2021-05-18",
            "count": 1
          },
          {
            "date": "2021-05-19",
            "count": 2
          },
          {
            "date": "2021-05-20",
            "count": 1
          },
          {
            "date": "2021-05-21",
            "count": 3
          },
          {
            "date": "2021-05-22",
            "count": 1
          },
          {
            "date": "2021-05-24",
            "count": 2
          },
          {
            "date": "2021-05-26",
            "count": 2
          },
          {
            "date": "2021-05-28",
            "count": 1
          },
          {
            "date": "2021-06-01",
            "count": 2
          },
          {
            "date": "2021-06-02",
            "count": 1
          },
          {
            "date": "2021-06-03",
            "count": 2
          },
          {
            "date": "2021-06-04",
            "count": 2
          },
          {
            "date": "2021-06-06",
            "count": 3
          },
          {
            "date": "2021-06-07",
            "count": 1
          },
          {
            "date": "2021-06-08",
            "count": 1
          },
          {
            "date": "2021-06-10",
            "count": 1
          },
          {
            "date": "2021-06-13",
            "count": 1
          },
          {
            "date": "2021-06-14",
            "count": 3
          },
          {
            "date": "2021-06-18",
            "count": 2
          },
          {
            "date": "2021-06-20",
            "count": 1
          },
          {
            "date": "2021-06-22",
            "count": 1
          },
          {
            "date": "2021-06-27",
            "count": 1
          },
          {
            "date": "2021-07-02",
            "count": 1
          },
          {
            "date": "2021-07-04",
            "count": 1
          },
          {
            "date": "2021-07-06",
            "count": 1
          },
          {
            "date": "2021-07-08",
            "count": 2
          },
          {
            "date": "2021-07-11",
            "count": 1
          },
          {
            "date": "2021-07-12",
            "count": 1
          },
          {
            "date": "2021-07-14",
            "count": 2
          },
          {
            "date": "2021-07-18",
            "count": 1
          },
          {
            "date": "2021-07-22",
            "count": 1
          },
          {
            "date": "2021-07-29",
            "count": 1
          },
          {
            "date": "2021-07-30",
            "count": 1
          },
          {
            "date": "2021-08-02",
            "count": 1
          },
          {
            "date": "2021-08-04",
            "count": 1
          },
          {
            "date": "2021-08-06",
            "count": 1
          },
          {
            "date": "2021-08-08",
            "count": 1
          },
          {
            "date": "2021-08-10",
            "count": 1
          },
          {
            "date": "2021-08-12",
            "count": 1
          },
          {
            "date": "2021-08-13",
            "count": 2
          },
          {
            "date": "2021-08-17",
            "count": 1
          },
          {
            "date": "2021-08-18",
            "count": 1
          },
          {
            "date": "2021-08-19",
            "count": 1
          },
          {
            "date": "2021-08-22",
            "count": 1
          },
          {
            "date": "2021-08-27",
            "count": 1
          },
          {
            "date": "2021-08-28",
            "count": 2
          },
          {
            "date": "2021-08-29",
            "count": 2
          },
          {
            "date": "2021-08-31",
            "count": 2
          },
          {
            "date": "2021-09-02",
            "count": 1
          },
          {
            "date": "2021-09-05",
            "count": 1
          },
          {
            "date": "2021-09-06",
            "count": 1
          },
          {
            "date": "2021-09-07",
            "count": 1
          },
          {
            "date": "2021-09-14",
            "count": 1
          },
          {
            "date": "2021-09-17",
            "count": 1
          },
          {
            "date": "2021-09-21",
            "count": 1
          },
          {
            "date": "2021-09-22",
            "count": 1
          },
          {
            "date": "2021-09-24",
            "count": 1
          },
          {
            "date": "2021-09-25",
            "count": 1
          },
          {
            "date": "2021-09-28",
            "count": 1
          },
          {
            "date": "2021-09-29",
            "count": 1
          },
          {
            "date": "2021-09-30",
            "count": 1
          },
          {
            "date": "2021-10-03",
            "count": 1
          },
          {
            "date": "2021-10-08",
            "count": 1
          },
          {
            "date": "2021-10-09",
            "count": 2
          },
          {
            "date": "2021-10-10",
            "count": 1
          },
          {
            "date": "2021-10-12",
            "count": 1
          },
          {
            "date": "2021-10-14",
            "count": 1
          },
          {
            "date": "2021-10-16",
            "count": 1
          },
          {
            "date": "2021-10-20",
            "count": 1
          },
          {
            "date": "2021-10-24",
            "count": 2
          },
          {
            "date": "2021-10-29",
            "count": 1
          },
          {
            "date": "2021-11-03",
            "count": 1
          },
          {
            "date": "2021-11-04",
            "count": 1
          },
          {
            "date": "2021-11-05",
            "count": 1
          },
          {
            "date": "2021-11-06",
            "count": 1
          },
          {
            "date": "2021-11-11",
            "count": 1
          },
          {
            "date": "2021-11-23",
            "count": 1
          },
          {
            "date": "2021-11-24",
            "count": 1
          },
          {
            "date": "2021-11-25",
            "count": 1
          },
          {
            "date": "2021-12-11",
            "count": 2
          },
          {
            "date": "2021-12-14",
            "count": 1
          },
          {
            "date": "2021-12-17",
            "count": 1
          },
          {
            "date": "2021-12-20",
            "count": 1
          },
          {
            "date": "2021-12-22",
            "count": 2
          },
          {
            "date": "2021-12-26",
            "count": 1
          },
          {
            "date": "2021-12-27",
            "count": 1
          },
          {
            "date": "2021-12-29",
            "count": 2
          },
          {
            "date": "2021-12-31",
            "count": 3
          },
          {
            "date": "2022-01-03",
            "count": 1
          },
          {
            "date": "2022-01-06",
            "count": 1
          },
          {
            "date": "2022-01-08",
            "count": 2
          },
          {
            "date": "2022-01-09",
            "count": 1
          },
          {
            "date": "2022-01-10",
            "count": 1
          },
          {
            "date": "2022-01-14",
            "count": 2
          },
          {
            "date": "2022-01-20",
            "count": 2
          },
          {
            "date": "2022-01-23",
            "count": 1
          },
          {
            "date": "2022-01-24",
            "count": 1
          },
          {
            "date": "2022-01-25",
            "count": 2
          },
          {
            "date": "2022-01-26",
            "count": 1
          },
          {
            "date": "2022-01-27",
            "count": 1
          },
          {
            "date": "2022-01-28",
            "count": 1
          },
          {
            "date": "2022-01-29",
            "count": 2
          },
          {
            "date": "2022-01-31",
            "count": 1
          },
          {
            "date": "2022-02-03",
            "count": 2
          },
          {
            "date": "2022-02-05",
            "count": 2
          },
          {
            "date": "2022-02-07",
            "count": 1
          },
          {
            "date": "2022-02-08",
            "count": 1
          },
          {
            "date": "2022-02-09",
            "count": 1
          },
          {
            "date": "2022-02-15",
            "count": 1
          },
          {
            "date": "2022-02-18",
            "count": 1
          },
          {
            "date": "2022-02-19",
            "count": 2
          },
          {
            "date": "2022-02-20",
            "count": 2
          },
          {
            "date": "2022-02-27",
            "count": 1
          },
          {
            "date": "2022-03-01",
            "count": 1
          },
          {
            "date": "2022-03-04",
            "count": 1
          },
          {
            "date": "2022-03-06",
            "count": 1
          },
          {
            "date": "2022-03-07",
            "count": 1
          },
          {
            "date": "2022-03-10",
            "count": 1
          },
          {
            "date": "2022-03-15",
            "count": 1
          },
          {
            "date": "2022-03-19",
            "count": 1
          },
          {
            "date": "2022-03-21",
            "count": 1
          },
          {
            "date": "2022-03-22",
            "count": 1
          },
          {
            "date": "2022-03-23",
            "count": 1
          },
          {
            "date": "2022-03-24",
            "count": 1
          },
          {
            "date": "2022-03-27",
            "count": 1
          },
          {
            "date": "2022-03-29",
            "count": 1
          },
          {
            "date": "2022-04-05",
            "count": 1
          },
          {
            "date": "2022-04-08",
            "count": 1
          },
          {
            "date": "2022-04-10",
            "count": 1
          },
          {
            "date": "2022-04-13",
            "count": 1
          },
          {
            "date": "2022-04-14",
            "count": 1
          },
          {
            "date": "2022-04-17",
            "count": 2
          },
          {
            "date": "2022-04-19",
            "count": 2
          },
          {
            "date": "2022-04-20",
            "count": 3
          },
          {
            "date": "2022-04-22",
            "count": 1
          },
          {
            "date": "2022-04-29",
            "count": 1
          },
          {
            "date": "2022-05-01",
            "count": 1
          },
          {
            "date": "2022-05-03",
            "count": 1
          },
          {
            "date": "2022-05-04",
            "count": 1
          },
          {
            "date": "2022-05-05",
            "count": 1
          },
          {
            "date": "2022-05-06",
            "count": 1
          },
          {
            "date": "2022-05-10",
            "count": 2
          },
          {
            "date": "2022-05-11",
            "count": 1
          },
          {
            "date": "2022-05-13",
            "count": 1
          },
          {
            "date": "2022-05-14",
            "count": 2
          },
          {
            "date": "2022-05-18",
            "count": 1
          },
          {
            "date": "2022-05-22",
            "count": 1
          },
          {
            "date": "2022-05-23",
            "count": 1
          },
          {
            "date": "2022-05-30",
            "count": 1
          },
          {
            "date": "2022-06-02",
            "count": 1
          },
          {
            "date": "2022-06-03",
            "count": 1
          },
          {
            "date": "2022-06-08",
            "count": 1
          },
          {
            "date": "2022-06-11",
            "count": 1
          },
          {
            "date": "2022-06-13",
            "count": 1
          },
          {
            "date": "2022-06-14",
            "count": 1
          },
          {
            "date": "2022-06-16",
            "count": 1
          },
          {
            "date": "2022-06-26",
            "count": 1
          },
          {
            "date": "2022-07-05",
            "count": 2
          },
          {
            "date": "2022-07-07",
            "count": 1
          },
          {
            "date": "2022-07-12",
            "count": 1
          },
          {
            "date": "2022-07-13",
            "count": 1
          },
          {
            "date": "2022-07-14",
            "count": 2
          },
          {
            "date": "2022-07-19",
            "count": 1
          },
          {
            "date": "2022-07-21",
            "count": 1
          },
          {
            "date": "2022-07-27",
            "count": 1
          },
          {
            "date": "2022-07-28",
            "count": 1
          },
          {
            "date": "2022-07-29",
            "count": 1
          },
          {
            "date": "2022-07-30",
            "count": 1
          },
          {
            "date": "2022-08-01",
            "count": 1
          },
          {
            "date": "2022-08-05",
            "count": 2
          },
          {
            "date": "2022-08-06",
            "count": 1
          },
          {
            "date": "2022-08-09",
            "count": 3
          },
          {
            "date": "2022-08-12",
            "count": 1
          },
          {
            "date": "2022-08-15",
            "count": 2
          },
          {
            "date": "2022-08-19",
            "count": 1
          },
          {
            "date": "2022-08-21",
            "count": 2
          },
          {
            "date": "2022-08-27",
            "count": 1
          },
          {
            "date": "2022-08-28",
            "count": 1
          },
          {
            "date": "2022-08-30",
            "count": 1
          },
          {
            "date": "2022-08-31",
            "count": 1
          },
          {
            "date": "2022-09-01",
            "count": 1
          },
          {
            "date": "2022-09-02",
            "count": 2
          },
          {
            "date": "2022-09-06",
            "count": 1
          },
          {
            "date": "2022-09-10",
            "count": 1
          },
          {
            "date": "2022-09-11",
            "count": 1
          },
          {
            "date": "2022-09-15",
            "count": 2
          },
          {
            "date": "2022-09-20",
            "count": 1
          },
          {
            "date": "2022-09-21",
            "count": 1
          },
          {
            "date": "2022-09-22",
            "count": 2
          },
          {
            "date": "2022-09-25",
            "count": 1
          },
          {
            "date": "2022-09-26",
            "count": 2
          },
          {
            "date": "2022-10-04",
            "count": 1
          },
          {
            "date": "2022-10-06",
            "count": 1
          },
          {
            "date": "2022-10-07",
            "count": 3
          },
          {
            "date": "2022-10-08",
            "count": 1
          },
          {
            "date": "2022-10-09",
            "count": 1
          },
          {
            "date": "2022-10-10",
            "count": 1
          },
          {
            "date": "2022-10-13",
            "count": 1
          },
          {
            "date": "2022-10-14",
            "count": 1
          },
          {
            "date": "2022-10-23",
            "count": 1
          },
          {
            "date": "2022-10-24",
            "count": 1
          },
          {
            "date": "2022-10-25",
            "count": 1
          },
          {
            "date": "2022-10-28",
            "count": 1
          },
          {
            "date": "2022-11-01",
            "count": 1
          },
          {
            "date": "2022-11-03",
            "count": 1
          },
          {
            "date": "2022-11-04",
            "count": 1
          },
          {
            "date": "2022-11-05",
            "count": 1
          },
          {
            "date": "2022-11-27",
            "count": 1
          },
          {
            "date": "2022-11-28",
            "count": 1
          },
          {
            "date": "2022-11-30",
            "count": 1
          },
          {
            "date": "2022-12-03",
            "count": 2
          },
          {
            "date": "2022-12-04",
            "count": 1
          },
          {
            "date": "2022-12-09",
            "count": 1
          },
          {
            "date": "2022-12-12",
            "count": 1
          },
          {
            "date": "2022-12-16",
            "count": 1
          },
          {
            "date": "2022-12-28",
            "count": 1
          },
          {
            "date": "2022-12-31",
            "count": 1
          },
          {
            "date": "2023-01-01",
            "count": 1
          },
          {
            "date": "2023-01-22",
            "count": 1
          },
          {
            "date": "2023-01-23",
            "count": 1
          },
          {
            "date": "2023-01-24",
            "count": 1
          },
          {
            "date": "2023-01-28",
            "count": 1
          },
          {
            "date": "2023-01-31",
            "count": 1
          },
          {
            "date": "2023-02-09",
            "count": 1
          },
          {
            "date": "2023-02-18",
            "count": 1
          },
          {
            "date": "2023-02-19",
            "count": 1
          },
          {
            "date": "2023-02-20",
            "count": 2
          },
          {
            "date": "2023-02-21",
            "count": 1
          },
          {
            "date": "2023-03-01",
            "count": 1
          },
          {
            "date": "2023-03-10",
            "count": 1
          },
          {
            "date": "2023-03-13",
            "count": 1
          },
          {
            "date": "2023-03-15",
            "count": 2
          },
          {
            "date": "2023-03-25",
            "count": 1
          },
          {
            "date": "2023-03-27",
            "count": 1
          },
          {
            "date": "2023-04-02",
            "count": 1
          },
          {
            "date": "2023-04-03",
            "count": 1
          },
          {
            "date": "2023-04-05",
            "count": 1
          },
          {
            "date": "2023-04-07",
            "count": 2
          },
          {
            "date": "2023-04-08",
            "count": 1
          },
          {
            "date": "2023-04-13",
            "count": 1
          },
          {
            "date": "2023-04-14",
            "count": 2
          },
          {
            "date": "2023-04-20",
            "count": 1
          },
          {
            "date": "2023-04-23",
            "count": 1
          },
          {
            "date": "2023-04-25",
            "count": 2
          },
          {
            "date": "2023-04-26",
            "count": 1
          },
          {
            "date": "2023-05-06",
            "count": 3
          },
          {
            "date": "2023-05-08",
            "count": 1
          },
          {
            "date": "2023-05-09",
            "count": 1
          },
          {
            "date": "2023-05-10",
            "count": 1
          },
          {
            "date": "2023-05-11",
            "count": 1
          },
          {
            "date": "2023-05-12",
            "count": 1
          },
          {
            "date": "2023-05-30",
            "count": 1
          },
          {
            "date": "2023-06-02",
            "count": 1
          },
          {
            "date": "2023-06-14",
            "count": 2
          },
          {
            "date": "2023-06-17",
            "count": 1
          },
          {
            "date": "2023-06-21",
            "count": 1
          },
          {
            "date": "2023-06-26",
            "count": 1
          },
          {
            "date": "2023-07-02",
            "count": 2
          },
          {
            "date": "2023-07-08",
            "count": 1
          },
          {
            "date": "2023-07-09",
            "count": 1
          },
          {
            "date": "2023-07-11",
            "count": 1
          },
          {
            "date": "2023-07-15",
            "count": 1
          },
          {
            "date": "2023-07-23",
            "count": 1
          },
          {
            "date": "2023-07-30",
            "count": 1
          },
          {
            "date": "2023-08-09",
            "count": 1
          },
          {
            "date": "2023-08-15",
            "count": 1
          },
          {
            "date": "2023-08-18",
            "count": 2
          },
          {
            "date": "2023-08-22",
            "count": 1
          },
          {
            "date": "2023-08-25",
            "count": 1
          },
          {
            "date": "2023-09-03",
            "count": 1
          },
          {
            "date": "2023-09-05",
            "count": 1
          },
          {
            "date": "2023-09-08",
            "count": 1
          },
          {
            "date": "2023-09-12",
            "count": 1
          },
          {
            "date": "2023-09-17",
            "count": 1
          },
          {
            "date": "2023-09-25",
            "count": 2
          },
          {
            "date": "2023-10-02",
            "count": 2
          },
          {
            "date": "2023-10-05",
            "count": 1
          },
          {
            "date": "2023-10-06",
            "count": 1
          },
          {
            "date": "2023-10-16",
            "count": 2
          },
          {
            "date": "2023-10-18",
            "count": 1
          },
          {
            "date": "2023-11-02",
            "count": 1
          },
          {
            "date": "2023-11-10",
            "count": 1
          },
          {
            "date": "2023-11-14",
            "count": 1
          },
          {
            "date": "2023-11-15",
            "count": 1
          },
          {
            "date": "2023-11-20",
            "count": 1
          },
          {
            "date": "2023-11-25",
            "count": 1
          },
          {
            "date": "2023-12-17",
            "count": 1
          },
          {
            "date": "2023-12-22",
            "count": 1
          },
          {
            "date": "2023-12-24",
            "count": 1
          },
          {
            "date": "2023-12-26",
            "count": 1
          },
          {
            "date": "2023-12-28",
            "count": 1
          },
          {
            "date": "2024-01-04",
            "count": 1
          },
          {
            "date": "2024-01-06",
            "count": 1
          },
          {
            "date": "2024-01-11",
            "count": 1
          },
          {
            "date": "2024-01-17",
            "count": 1
          },
          {
            "date": "2024-01-21",
            "count": 1
          },
          {
            "date": "2024-01-28",
            "count": 1
          },
          {
            "date": "2024-02-16",
            "count": 1
          },
          {
            "date": "2024-02-19",
            "count": 1
          },
          {
            "date": "2024-02-22",
            "count": 1
          },
          {
            "date": "2024-02-23",
            "count": 2
          },
          {
            "date": "2024-02-25",
            "count": 3
          },
          {
            "date": "2024-02-27",
            "count": 2
          },
          {
            "date": "2024-03-04",
            "count": 1
          },
          {
            "date": "2024-03-06",
            "count": 1
          },
          {
            "date": "2024-03-07",
            "count": 2
          },
          {
            "date": "2024-03-08",
            "count": 1
          },
          {
            "date": "2024-03-14",
            "count": 1
          },
          {
            "date": "2024-03-15",
            "count": 1
          },
          {
            "date": "2024-03-19",
            "count": 1
          },
          {
            "date": "2024-03-23",
            "count": 1
          },
          {
            "date": "2024-03-31",
            "count": 1
          },
          {
            "date": "2024-04-02",
            "count": 1
          },
          {
            "date": "2024-04-04",
            "count": 1
          },
          {
            "date": "2024-04-14",
            "count": 1
          },
          {
            "date": "2024-04-15",
            "count": 1
          },
          {
            "date": "2024-04-16",
            "count": 1
          },
          {
            "date": "2024-04-18",
            "count": 1
          },
          {
            "date": "2024-04-19",
            "count": 2
          },
          {
            "date": "2024-04-20",
            "count": 2
          },
          {
            "date": "2024-04-24",
            "count": 1
          },
          {
            "date": "2024-04-26",
            "count": 1
          },
          {
            "date": "2024-04-30",
            "count": 1
          },
          {
            "date": "2024-05-03",
            "count": 1
          },
          {
            "date": "2024-05-05",
            "count": 2
          },
          {
            "date": "2024-05-10",
            "count": 1
          },
          {
            "date": "2024-05-16",
            "count": 1
          },
          {
            "date": "2024-05-20",
            "count": 1
          },
          {
            "date": "2024-05-22",
            "count": 1
          },
          {
            "date": "2024-05-30",
            "count": 1
          },
          {
            "date": "2024-05-31",
            "count": 1
          },
          {
            "date": "2024-06-01",
            "count": 1
          },
          {
            "date": "2024-06-10",
            "count": 1
          },
          {
            "date": "2024-06-13",
            "count": 2
          },
          {
            "date": "2024-06-20",
            "count": 1
          },
          {
            "date": "2024-06-21",
            "count": 1
          },
          {
            "date": "2024-07-02",
            "count": 3
          },
          {
            "date": "2024-07-11",
            "count": 1
          },
          {
            "date": "2024-07-15",
            "count": 1
          },
          {
            "date": "2024-07-18",
            "count": 1
          },
          {
            "date": "2024-07-25",
            "count": 1
          },
          {
            "date": "2024-07-28",
            "count": 1
          },
          {
            "date": "2024-08-15",
            "count": 2
          },
          {
            "date": "2024-08-21",
            "count": 1
          },
          {
            "date": "2024-08-24",
            "count": 1
          },
          {
            "date": "2024-08-26",
            "count": 1
          },
          {
            "date": "2024-08-27",
            "count": 2
          },
          {
            "date": "2024-08-28",
            "count": 1
          },
          {
            "date": "2024-08-29",
            "count": 1
          },
          {
            "date": "2024-09-01",
            "count": 1
          },
          {
            "date": "2024-09-03",
            "count": 1
          },
          {
            "date": "2024-09-10",
            "count": 1
          },
          {
            "date": "2024-09-11",
            "count": 1
          },
          {
            "date": "2024-09-16",
            "count": 1
          },
          {
            "date": "2024-09-19",
            "count": 1
          },
          {
            "date": "2024-09-22",
            "count": 1
          },
          {
            "date": "2024-09-29",
            "count": 1
          },
          {
            "date": "2024-10-03",
            "count": 1
          },
          {
            "date": "2024-10-09",
            "count": 1
          },
          {
            "date": "2024-10-12",
            "count": 2
          },
          {
            "date": "2024-10-15",
            "count": 1
          },
          {
            "date": "2024-10-17",
            "count": 1
          },
          {
            "date": "2024-10-18",
            "count": 2
          },
          {
            "date": "2024-10-19",
            "count": 1
          },
          {
            "date": "2024-10-21",
            "count": 1
          },
          {
            "date": "2024-10-27",
            "count": 1
          },
          {
            "date": "2024-10-31",
            "count": 1
          },
          {
            "date": "2024-11-03",
            "count": 1
          },
          {
            "date": "2024-11-04",
            "count": 1
          },
          {
            "date": "2024-11-05",
            "count": 1
          },
          {
            "date": "2024-11-08",
            "count": 1
          },
          {
            "date": "2024-11-11",
            "count": 1
          },
          {
            "date": "2024-11-12",
            "count": 1
          },
          {
            "date": "2024-11-14",
            "count": 1
          },
          {
            "date": "2024-11-20",
            "count": 2
          },
          {
            "date": "2024-11-21",
            "count": 2
          },
          {
            "date": "2024-11-23",
            "count": 2
          },
          {
            "date": "2024-11-24",
            "count": 1
          },
          {
            "date": "2024-11-25",
            "count": 1
          },
          {
            "date": "2024-11-29",
            "count": 1
          },
          {
            "date": "2024-12-02",
            "count": 1
          },
          {
            "date": "2024-12-03",
            "count": 1
          },
          {
            "date": "2024-12-07",
            "count": 1
          },
          {
            "date": "2024-12-12",
            "count": 1
          },
          {
            "date": "2024-12-13",
            "count": 1
          },
          {
            "date": "2024-12-15",
            "count": 1
          },
          {
            "date": "2024-12-17",
            "count": 1
          },
          {
            "date": "2024-12-22",
            "count": 1
          },
          {
            "date": "2024-12-23",
            "count": 2
          },
          {
            "date": "2024-12-24",
            "count": 1
          },
          {
            "date": "2024-12-25",
            "count": 1
          },
          {
            "date": "2024-12-28",
            "count": 1
          },
          {
            "date": "2024-12-30",
            "count": 1
          },
          {
            "date": "2025-01-01",
            "count": 1
          },
          {
            "date": "2025-01-02",
            "count": 1
          },
          {
            "date": "2025-01-08",
            "count": 1
          },
          {
            "date": "2025-01-09",
            "count": 2
          },
          {
            "date": "2025-01-10",
            "count": 1
          },
          {
            "date": "2025-01-11",
            "count": 1
          },
          {
            "date": "2025-01-18",
            "count": 2
          },
          {
            "date": "2025-01-19",
            "count": 2
          },
          {
            "date": "2025-01-20",
            "count": 2
          },
          {
            "date": "2025-01-21",
            "count": 2
          },
          {
            "date": "2025-01-24",
            "count": 1
          },
          {
            "date": "2025-01-28",
            "count": 2
          },
          {
            "date": "2025-01-29",
            "count": 2
          },
          {
            "date": "2025-02-01",
            "count": 2
          },
          {
            "date": "2025-02-02",
            "count": 3
          },
          {
            "date": "2025-02-03",
            "count": 1
          },
          {
            "date": "2025-02-05",
            "count": 1
          },
          {
            "date": "2025-02-14",
            "count": 2
          },
          {
            "date": "2025-02-18",
            "count": 1
          },
          {
            "date": "2025-02-19",
            "count": 1
          },
          {
            "date": "2025-02-20",
            "count": 1
          },
          {
            "date": "2025-02-23",
            "count": 1
          },
          {
            "date": "2025-02-26",
            "count": 1
          },
          {
            "date": "2025-03-01",
            "count": 2
          },
          {
            "date": "2025-03-05",
            "count": 1
          },
          {
            "date": "2025-03-06",
            "count": 1
          },
          {
            "date": "2025-03-07",
            "count": 1
          },
          {
            "date": "2025-03-09",
            "count": 1
          },
          {
            "date": "2025-03-11",
            "count": 2
          },
          {
            "date": "2025-03-12",
            "count": 2
          },
          {
            "date": "2025-03-14",
            "count": 1
          },
          {
            "date": "2025-03-15",
            "count": 1
          },
          {
            "date": "2025-03-16",
            "count": 1
          },
          {
            "date": "2025-03-20",
            "count": 2
          },
          {
            "date": "2025-03-21",
            "count": 1
          },
          {
            "date": "2025-03-22",
            "count": 1
          },
          {
            "date": "2025-03-23",
            "count": 1
          },
          {
            "date": "2025-03-24",
            "count": 1
          },
          {
            "date": "2025-03-28",
            "count": 2
          },
          {
            "date": "2025-03-30",
            "count": 1
          },
          {
            "date": "2025-04-01",
            "count": 2
          },
          {
            "date": "2025-04-09",
            "count": 1
          },
          {
            "date": "2025-04-10",
            "count": 2
          },
          {
            "date": "2025-04-12",
            "count": 1
          },
          {
            "date": "2025-04-21",
            "count": 1
          },
          {
            "date": "2025-04-23",
            "count": 1
          },
          {
            "date": "2025-04-24",
            "count": 2
          },
          {
            "date": "2025-04-25",
            "count": 1
          },
          {
            "date": "2025-04-29",
            "count": 1
          },
          {
            "date": "2025-05-12",
            "count": 2
          },
          {
            "date": "2025-05-14",
            "count": 1
          },
          {
            "date": "2025-05-15",
            "count": 1
          },
          {
            "date": "2025-05-17",
            "count": 1
          },
          {
            "date": "2025-05-18",
            "count": 1
          },
          {
            "date": "2025-05-21",
            "count": 2
          },
          {
            "date": "2025-05-24",
            "count": 1
          },
          {
            "date": "2025-05-26",
            "count": 1
          },
          {
            "date": "2025-05-27",
            "count": 1
          },
          {
            "date": "2025-05-28",
            "count": 3
          },
          {
            "date": "2025-05-29",
            "count": 2
          },
          {
            "date": "2025-06-01",
            "count": 2
          },
          {
            "date": "2025-06-04",
            "count": 2
          },
          {
            "date": "2025-06-06",
            "count": 1
          },
          {
            "date": "2025-06-07",
            "count": 2
          },
          {
            "date": "2025-06-08",
            "count": 1
          },
          {
            "date": "2025-06-09",
            "count": 2
          },
          {
            "date": "2025-06-10",
            "count": 1
          },
          {
            "date": "2025-06-12",
            "count": 1
          },
          {
            "date": "2025-06-13",
            "count": 1
          },
          {
            "date": "2025-06-14",
            "count": 1
          },
          {
            "date": "2025-06-16",
            "count": 1
          },
          {
            "date": "2025-06-19",
            "count": 1
          },
          {
            "date": "2025-06-21",
            "count": 2
          },
          {
            "date": "2025-06-23",
            "count": 1
          },
          {
            "date": "2025-06-24",
            "count": 1
          },
          {
            "date": "2025-06-26",
            "count": 1
          },
          {
            "date": "2025-06-27",
            "count": 1
          },
          {
            "date": "2025-06-29",
            "count": 1
          },
          {
            "date": "2025-07-02",
            "count": 3
          },
          {
            "date": "2025-07-05",
            "count": 1
          },
          {
            "date": "2025-07-06",
            "count": 1
          },
          {
            "date": "2025-07-07",
            "count": 1
          },
          {
            "date": "2025-07-09",
            "count": 1
          },
          {
            "date": "2025-07-10",
            "count": 2
          },
          {
            "date": "2025-07-13",
            "count": 3
          },
          {
            "date": "2025-07-14",
            "count": 1
          },
          {
            "date": "2025-07-15",
            "count": 1
          },
          {
            "date": "2025-07-16",
            "count": 1
          },
          {
            "date": "2025-07-17",
            "count": 1
          },
          {
            "date": "2025-07-18",
            "count": 1
          },
          {
            "date": "2025-07-19",
            "count": 2
          },
          {
            "date": "2025-07-21",
            "count": 1
          },
          {
            "date": "2025-07-25",
            "count": 1
          },
          {
            "date": "2025-07-26",
            "count": 1
          },
          {
            "date": "2025-07-29",
            "count": 2
          },
          {
            "date": "2025-07-30",
            "count": 2
          },
          {
            "date": "2025-07-31",
            "count": 1
          },
          {
            "date": "2025-08-01",
            "count": 1
          },
          {
            "date": "2025-08-02",
            "count": 1
          },
          {
            "date": "2025-08-03",
            "count": 1
          },
          {
            "date": "2025-08-04",
            "count": 2
          },
          {
            "date": "2025-08-05",
            "count": 2
          },
          {
            "date": "2025-08-07",
            "count": 1
          },
          {
            "date": "2025-08-09",
            "count": 1
          },
          {
            "date": "2025-08-10",
            "count": 2
          },
          {
            "date": "2025-08-11",
            "count": 1
          },
          {
            "date": "2025-08-12",
            "count": 2
          },
          {
            "date": "2025-08-13",
            "count": 1
          },
          {
            "date": "2025-08-16",
            "count": 1
          },
          {
            "date": "2025-08-22",
            "count": 1
          },
          {
            "date": "2025-08-25",
            "count": 1
          },
          {
            "date": "2025-08-28",
            "count": 2
          },
          {
            "date": "2025-08-29",
            "count": 1
          },
          {
            "date": "2025-08-31",
            "count": 1
          },
          {
            "date": "2025-09-01",
            "count": 2
          },
          {
            "date": "2025-09-04",
            "count": 2
          },
          {
            "date": "2025-09-05",
            "count": 1
          },
          {
            "date": "2025-09-07",
            "count": 4
          },
          {
            "date": "2025-09-09",
            "count": 2
          },
          {
            "date": "2025-09-12",
            "count": 1
          },
          {
            "date": "2025-09-14",
            "count": 1
          },
          {
            "date": "2025-09-19",
            "count": 1
          },
          {
            "date": "2025-09-20",
            "count": 1
          },
          {
            "date": "2025-09-21",
            "count": 1
          },
          {
            "date": "2025-09-22",
            "count": 2
          },
          {
            "date": "2025-09-23",
            "count": 1
          },
          {
            "date": "2025-09-25",
            "count": 1
          },
          {
            "date": "2025-09-26",
            "count": 1
          },
          {
            "date": "2025-09-27",
            "count": 1
          },
          {
            "date": "2025-09-30",
            "count": 3
          },
          {
            "date": "2025-10-08",
            "count": 1
          },
          {
            "date": "2025-10-09",
            "count": 9
          },
          {
            "date": "2025-10-10",
            "count": 3
          },
          {
            "date": "2025-10-12",
            "count": 1
          },
          {
            "date": "2025-10-15",
            "count": 1
          },
          {
            "date": "2025-10-16",
            "count": 2
          },
          {
            "date": "2025-10-17",
            "count": 1
          },
          {
            "date": "2025-10-24",
            "count": 1
          },
          {
            "date": "2025-10-29",
            "count": 1
          },
          {
            "date": "2025-10-30",
            "count": 1
          },
          {
            "date": "2025-10-31",
            "count": 1
          },
          {
            "date": "2025-11-01",
            "count": 2
          },
          {
            "date": "2025-11-03",
            "count": 1
          },
          {
            "date": "2025-11-04",
            "count": 1
          },
          {
            "date": "2025-11-05",
            "count": 5
          },
          {
            "date": "2025-11-08",
            "count": 1
          },
          {
            "date": "2025-11-12",
            "count": 3
          },
          {
            "date": "2025-11-14",
            "count": 2
          },
          {
            "date": "2025-11-15",
            "count": 1
          },
          {
            "date": "2025-11-19",
            "count": 1
          },
          {
            "date": "2025-11-20",
            "count": 3
          },
          {
            "date": "2025-11-21",
            "count": 4
          },
          {
            "date": "2025-11-22",
            "count": 4
          },
          {
            "date": "2025-11-23",
            "count": 4
          },
          {
            "date": "2025-11-24",
            "count": 2
          },
          {
            "date": "2025-11-25",
            "count": 2
          },
          {
            "date": "2025-11-27",
            "count": 1
          },
          {
            "date": "2025-11-28",
            "count": 1
          },
          {
            "date": "2025-12-01",
            "count": 2
          },
          {
            "date": "2025-12-02",
            "count": 1
          },
          {
            "date": "2025-12-03",
            "count": 1
          },
          {
            "date": "2025-12-05",
            "count": 1
          },
          {
            "date": "2025-12-06",
            "count": 2
          },
          {
            "date": "2025-12-07",
            "count": 1
          },
          {
            "date": "2025-12-08",
            "count": 2
          },
          {
            "date": "2025-12-09",
            "count": 1
          },
          {
            "date": "2025-12-10",
            "count": 2
          },
          {
            "date": "2025-12-13",
            "count": 1
          },
          {
            "date": "2025-12-15",
            "count": 1
          },
          {
            "date": "2025-12-16",
            "count": 2
          },
          {
            "date": "2025-12-18",
            "count": 2
          },
          {
            "date": "2025-12-23",
            "count": 1
          },
          {
            "date": "2025-12-24",
            "count": 1
          },
          {
            "date": "2025-12-25",
            "count": 3
          },
          {
            "date": "2025-12-27",
            "count": 1
          },
          {
            "date": "2025-12-28",
            "count": 2
          },
          {
            "date": "2025-12-29",
            "count": 1
          },
          {
            "date": "2025-12-31",
            "count": 2
          },
          {
            "date": "2026-01-01",
            "count": 1
          },
          {
            "date": "2026-01-02",
            "count": 1
          },
          {
            "date": "2026-01-08",
            "count": 1
          },
          {
            "date": "2026-01-11",
            "count": 1
          },
          {
            "date": "2026-01-13",
            "count": 1
          },
          {
            "date": "2026-01-14",
            "count": 4
          },
          {
            "date": "2026-01-15",
            "count": 2
          },
          {
            "date": "2026-01-16",
            "count": 1
          },
          {
            "date": "2026-01-17",
            "count": 1
          },
          {
            "date": "2026-01-22",
            "count": 1
          },
          {
            "date": "2026-01-26",
            "count": 1
          },
          {
            "date": "2026-01-28",
            "count": 1
          },
          {
            "date": "2026-01-29",
            "count": 2
          },
          {
            "date": "2026-02-01",
            "count": 2
          },
          {
            "date": "2026-02-03",
            "count": 1
          },
          {
            "date": "2026-02-05",
            "count": 3
          },
          {
            "date": "2026-02-06",
            "count": 1
          },
          {
            "date": "2026-02-07",
            "count": 1
          },
          {
            "date": "2026-02-09",
            "count": 2
          },
          {
            "date": "2026-02-10",
            "count": 3
          },
          {
            "date": "2026-02-12",
            "count": 1
          },
          {
            "date": "2026-02-15",
            "count": 1
          },
          {
            "date": "2026-02-18",
            "count": 2
          },
          {
            "date": "2026-02-19",
            "count": 1
          },
          {
            "date": "2026-02-22",
            "count": 3
          },
          {
            "date": "2026-02-23",
            "count": 3
          },
          {
            "date": "2026-02-25",
            "count": 1
          },
          {
            "date": "2026-02-28",
            "count": 1
          },
          {
            "date": "2026-03-01",
            "count": 1
          },
          {
            "date": "2026-03-02",
            "count": 1
          },
          {
            "date": "2026-03-04",
            "count": 1
          },
          {
            "date": "2026-03-05",
            "count": 1
          },
          {
            "date": "2026-03-06",
            "count": 2
          },
          {
            "date": "2026-03-09",
            "count": 1
          },
          {
            "date": "2026-03-10",
            "count": 2
          },
          {
            "date": "2026-03-13",
            "count": 1
          },
          {
            "date": "2026-03-15",
            "count": 1
          },
          {
            "date": "2026-03-17",
            "count": 3
          },
          {
            "date": "2026-03-19",
            "count": 1
          },
          {
            "date": "2026-03-22",
            "count": 1
          },
          {
            "date": "2026-03-24",
            "count": 1
          },
          {
            "date": "2026-03-25",
            "count": 2
          },
          {
            "date": "2026-03-26",
            "count": 1
          },
          {
            "date": "2026-03-28",
            "count": 1
          },
          {
            "date": "2026-03-29",
            "count": 1
          },
          {
            "date": "2026-03-31",
            "count": 2
          },
          {
            "date": "2026-04-01",
            "count": 1
          },
          {
            "date": "2026-04-02",
            "count": 1
          },
          {
            "date": "2026-04-04",
            "count": 1
          },
          {
            "date": "2026-04-06",
            "count": 1
          },
          {
            "date": "2026-04-08",
            "count": 1
          },
          {
            "date": "2026-04-09",
            "count": 2
          },
          {
            "date": "2026-04-10",
            "count": 1
          },
          {
            "date": "2026-04-11",
            "count": 2
          },
          {
            "date": "2026-04-13",
            "count": 1
          },
          {
            "date": "2026-04-14",
            "count": 1
          },
          {
            "date": "2026-04-17",
            "count": 1
          },
          {
            "date": "2026-04-18",
            "count": 1
          },
          {
            "date": "2026-04-19",
            "count": 2
          },
          {
            "date": "2026-04-21",
            "count": 1
          },
          {
            "date": "2026-04-23",
            "count": 6
          },
          {
            "date": "2026-04-24",
            "count": 3
          },
          {
            "date": "2026-04-25",
            "count": 2
          },
          {
            "date": "2026-04-26",
            "count": 2
          },
          {
            "date": "2026-04-27",
            "count": 3
          },
          {
            "date": "2026-04-29",
            "count": 1
          },
          {
            "date": "2026-05-01",
            "count": 1
          },
          {
            "date": "2026-05-02",
            "count": 1
          },
          {
            "date": "2026-05-03",
            "count": 3
          },
          {
            "date": "2026-05-04",
            "count": 1
          },
          {
            "date": "2026-05-05",
            "count": 1
          },
          {
            "date": "2026-05-06",
            "count": 1
          },
          {
            "date": "2026-05-07",
            "count": 3
          },
          {
            "date": "2026-05-09",
            "count": 1
          },
          {
            "date": "2026-05-10",
            "count": 3
          },
          {
            "date": "2026-05-12",
            "count": 2
          },
          {
            "date": "2026-05-13",
            "count": 3
          },
          {
            "date": "2026-05-14",
            "count": 1
          },
          {
            "date": "2026-05-16",
            "count": 1
          },
          {
            "date": "2026-05-17",
            "count": 1
          },
          {
            "date": "2026-05-21",
            "count": 1
          },
          {
            "date": "2026-05-22",
            "count": 1
          },
          {
            "date": "2026-05-23",
            "count": 1
          },
          {
            "date": "2026-05-25",
            "count": 1
          },
          {
            "date": "2026-05-26",
            "count": 3
          },
          {
            "date": "2026-05-30",
            "count": 1
          },
          {
            "date": "2026-05-31",
            "count": 4
          },
          {
            "date": "2026-06-05",
            "count": 1
          },
          {
            "date": "2026-06-06",
            "count": 1
          },
          {
            "date": "2026-06-07",
            "count": 2
          },
          {
            "date": "2026-06-09",
            "count": 2
          },
          {
            "date": "2026-06-10",
            "count": 2
          },
          {
            "date": "2026-06-11",
            "count": 1
          },
          {
            "date": "2026-06-13",
            "count": 4
          },
          {
            "date": "2026-06-14",
            "count": 1
          },
          {
            "date": "2026-06-15",
            "count": 3
          },
          {
            "date": "2026-06-16",
            "count": 1
          },
          {
            "date": "2026-06-17",
            "count": 1
          },
          {
            "date": "2026-06-19",
            "count": 2
          },
          {
            "date": "2026-06-21",
            "count": 1
          },
          {
            "date": "2026-06-22",
            "count": 1
          },
          {
            "date": "2026-06-23",
            "count": 2
          },
          {
            "date": "2026-06-25",
            "count": 1
          },
          {
            "date": "2026-06-27",
            "count": 2
          },
          {
            "date": "2026-06-28",
            "count": 1
          },
          {
            "date": "2026-06-29",
            "count": 3
          },
          {
            "date": "2026-06-30",
            "count": 1
          },
          {
            "date": "2026-07-01",
            "count": 2
          },
          {
            "date": "2026-07-04",
            "count": 1
          },
          {
            "date": "2026-07-05",
            "count": 1
          },
          {
            "date": "2026-07-08",
            "count": 4
          },
          {
            "date": "2026-07-09",
            "count": 1
          },
          {
            "date": "2026-07-10",
            "count": 1
          },
          {
            "date": "2026-07-11",
            "count": 1
          },
          {
            "date": "2026-07-12",
            "count": 1
          },
          {
            "date": "2026-07-15",
            "count": 3
          },
          {
            "date": "2026-07-18",
            "count": 1
          },
          {
            "date": "2026-07-19",
            "count": 1
          },
          {
            "date": "2026-07-21",
            "count": 5
          },
          {
            "date": "2026-07-22",
            "count": 3
          },
          {
            "date": "2026-07-23",
            "count": 1
          },
          {
            "date": "2026-07-26",
            "count": 1
          },
          {
            "date": "2026-07-27",
            "count": 2
          },
          {
            "date": "2026-07-28",
            "count": 1
          },
          {
            "date": "2026-07-29",
            "count": 3
          },
          {
            "date": "2026-07-31",
            "count": 2
          }
        ],
        "complete": false,
        "collected": 1000,
        "total_forks": 1188
      },
      "star_history": null,
      "open_issues_and_prs": 9
    },
    "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": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 6915612,
      "source_files_sampled": 1106,
      "oversized_source_files": 53,
      "agent_instruction_files": [
        "AGENTS.md"
      ],
      "agent_instruction_max_bytes": 10691
    },
    "dependencies": {
      "manifests": [
        "requirements.txt",
        "setup.py"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 2,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 36,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "pypi"
      ],
      "dependencies": [],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "aiofiles",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "aioredis",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "arrow",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "blinker",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "click",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "cryptography",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "ecdsa",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "eth-account",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "fastapi",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "fnc",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "jesse-rust",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "joblib",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "matplotlib",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "mcp",
            "direct": false,
            "version": "1.28.1",
            "ecosystem": "pypi"
          },
          {
            "name": "msgpack",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "numpy",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "optuna",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pandas",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "peewee",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "psycopg2-binary",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pydash",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pyjwt",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pytest",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "python-dotenv",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "ray",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "redis",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "requests",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "scikit-learn",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "scipy",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "simplejson",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "starkbank-ecdsa",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "statsmodels",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "tabulate",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "timeloop",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "uvicorn",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "websocket-client",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "websockets",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "wsaccel",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 38,
        "direct_count": 0,
        "indirect_count": 38
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 4,
        "merged_prs": 278,
        "open_issues": 5,
        "closed_ratio": 0.968,
        "closed_issues": 153,
        "closed_unmerged_prs": 144
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "saleh-mir",
          "commits": 2125,
          "avatar_url": "https://avatars.githubusercontent.com/u/69156720?v=4"
        },
        {
          "type": "User",
          "login": "cryptocoinserver",
          "commits": 608,
          "avatar_url": "https://avatars.githubusercontent.com/u/16636744?v=4"
        },
        {
          "type": "User",
          "login": "morteza-koohgard",
          "commits": 185,
          "avatar_url": "https://avatars.githubusercontent.com/u/78785107?v=4"
        },
        {
          "type": "User",
          "login": "pyup-bot",
          "commits": 116,
          "avatar_url": "https://avatars.githubusercontent.com/u/16239342?v=4"
        },
        {
          "type": "User",
          "login": "saleh-old",
          "commits": 91,
          "avatar_url": "https://avatars.githubusercontent.com/u/13378447?v=4"
        },
        {
          "type": "User",
          "login": "yakir4123",
          "commits": 59,
          "avatar_url": "https://avatars.githubusercontent.com/u/38066978?v=4"
        },
        {
          "type": "User",
          "login": "kakulukia",
          "commits": 21,
          "avatar_url": "https://avatars.githubusercontent.com/u/96352?v=4"
        },
        {
          "type": "User",
          "login": "MakanShabani",
          "commits": 13,
          "avatar_url": "https://avatars.githubusercontent.com/u/106467787?v=4"
        },
        {
          "type": "User",
          "login": "yakiraid",
          "commits": 13,
          "avatar_url": "https://avatars.githubusercontent.com/u/147972785?v=4"
        },
        {
          "type": "User",
          "login": "julesGoullee",
          "commits": 10,
          "avatar_url": "https://avatars.githubusercontent.com/u/6892100?v=4"
        }
      ],
      "contributors_sampled": 50,
      "top_contributor_share": 0.638
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "codeql-analysis.yml",
        "docker-publish.yml",
        "python-package.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 1,
            "reason": "binaries present in source code",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "2 out of 2 merged PRs checked by a CI test -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/28 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 7 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 9 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 7,
            "reason": "SAST tool detected but not run on all commits",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "23 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "1c9ce36c926b23e51520bfa6818a7ea84501c539",
        "ran_at": "2026-08-02T16:00:07Z",
        "aggregate_score": 4.3,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": true,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-08-02T15:57:13Z",
      "oldest_open_prs": [
        {
          "number": 602,
          "created_at": "2026-07-31T06:30:25Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 604,
          "created_at": "2026-07-31T14:08:47Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 605,
          "created_at": "2026-07-31T14:08:51Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 608,
          "created_at": "2026-07-31T22:00:15Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-29T16:00:37Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 601,
          "created_at": "2026-07-31T06:11:40Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 603,
          "created_at": "2026-07-31T06:41:15Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 606,
          "created_at": "2026-07-31T18:55:55Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 607,
          "created_at": "2026-07-31T21:59:48Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 609,
          "created_at": "2026-07-31T22:36:22Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/jesse-ai/jesse",
    "host": "github.com",
    "name": "jesse",
    "owner": "jesse-ai"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "excellent",
      "name": "Overall health",
      "note": "The weighted overall 73 is calibrated to 87 on the published index scale (record calibration 2026-08-02).",
      "notes": [
        {
          "code": "overall_calibration",
          "params": {
            "raw": 73,
            "calibrated": 87,
            "calibration": "2026-08-02"
          }
        }
      ],
      "value": 87,
      "inputs": {
        "security": 54,
        "vitality": 93,
        "community": 76,
        "governance": 68,
        "calibration": "2026-08-02",
        "engineering": 71,
        "ai_readiness": 60,
        "weighted_overall_raw": 73
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "exceptional",
        "name": "Vitality",
        "value": 93,
        "weight": 0.21,
        "metrics": [
          {
            "key": "development_activity",
            "band": "exceptional",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 96,
            "inputs": {
              "commits_last_year": 421,
              "human_commit_share": 0.99,
              "days_since_last_push": 0,
              "active_weeks_last_year": 47
            },
            "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": "47/52 weeks with commits",
                "points": 32.5,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 47
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "421 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 421
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 9 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 88,
            "inputs": {
              "releases_count": 10,
              "latest_release_tag": "v3.0.0",
              "releases_from_tags": true,
              "days_since_latest_release": 0,
              "mean_days_between_releases": 7
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "10 version tags (no GitHub releases)",
                "points": 16.2,
                "status": "partial",
                "details": [
                  {
                    "code": "version_tags_no_releases",
                    "params": {
                      "count": 10
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~7 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 7
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "exceptional",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 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": "good",
        "name": "Community & Adoption",
        "value": 76,
        "weight": 0.17,
        "metrics": [
          {
            "key": "popularity",
            "band": "exceptional",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 98,
            "inputs": {
              "forks": 1188,
              "stars": 8281,
              "watchers": 207,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "8,281 stars",
                "points": 60,
                "status": "met",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 8281
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "1,188 forks",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 1188
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "207 watchers",
                "points": 12.9,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 207
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "readme_badges": null,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "readme_badge_services": [],
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "good",
        "name": "Sustainability & Governance",
        "value": 68,
        "weight": 0.23,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "weak",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 41,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 50,
              "top_contributor_share": 0.638
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 64% of commits",
                "points": 8.1,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 64
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "50 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 50
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 7 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Newcomer PR acceptance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "newcomer_pr_acceptance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 70,
            "inputs": {
              "merged_prs": 278,
              "open_issues": 5,
              "closed_issues": 153,
              "prs_merged_7d": null,
              "prs_decided_7d": null,
              "prs_merged_30d": null,
              "prs_decided_30d": null,
              "issue_closed_ratio": 0.968,
              "closed_unmerged_prs": 144,
              "first_time_authors_30d": null,
              "first_time_prs_merged_30d": null,
              "first_time_prs_decided_30d": null
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "97% of issues closed",
                "points": 40.7,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 97
                    }
                  }
                ],
                "max_points": 42
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "278/422 decided PRs merged",
                "points": 19.8,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 278,
                      "decided": 422
                    }
                  }
                ],
                "max_points": 30
              },
              {
                "key": "newcomer_pr_acceptance",
                "name": "Newcomer PR acceptance",
                "detail": "no first-time contributor's PR decided in 30d",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_newcomer_prs",
                    "params": {
                      "days": 30
                    }
                  }
                ],
                "max_points": 13
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/28 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "good",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 71,
            "inputs": {
              "followers": 367,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "jesse-ai",
              "public_repos": 24,
              "account_age_days": 2823
            },
            "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": "367 followers of jesse-ai",
                "points": 18.4,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 367,
                      "login": "jesse-ai"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "24 public repos, account ~7 yr old",
                "points": 22.2,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 24
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 7
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "exceptional",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "jesse"
              ],
              "ecosystems": "pypi",
              "any_deprecated": false,
              "min_days_since_publish": 0
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on pypi",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "pypi"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 0 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "358 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 358
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 71,
        "weight": 0.19,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "3 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "2 out of 2 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "good",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 75,
            "inputs": {
              "topics": [
                "cryptocurrency",
                "trading-bot",
                "trading-algorithms",
                "trading",
                "crypto",
                "framework",
                "algo-trading",
                "algorithmic-trading",
                "jesse",
                "trading-strategies",
                "python",
                "bot",
                "crypto-bot",
                "bitcoin",
                "trade",
                "crypto-bot-trading",
                "quantitative-finance",
                "quantitative-trading"
              ],
              "has_wiki": true,
              "homepage": "https://jesse.trade",
              "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://jesse.trade",
                "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": "18 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 18
                    }
                  }
                ],
                "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": "moderate",
        "name": "Security",
        "value": 54,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "weak",
            "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": 43,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 4.3
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "binaries present in source code",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "2 out of 2 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/28 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 7 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 9 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool detected but not run on all commits",
                "points": 3.5,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "23 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "exceptional",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 2 resolved dependencies against OSV; 36 could not be assessed (no resolved version, an unsupported ecosystem, or beyond the reported package list). This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "indirect_dependencies_free_of_known_advisories",
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 2
                }
              },
              {
                "code": "advisories_unassessed",
                "params": {
                  "count": 36
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 2,
              "unassessed_packages": 36,
              "affected_by_severity": "none",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "transitive set not separable from development and test dependencies in this scope",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_scope_not_separable",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "exceptional",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 2,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "exceptional",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "commit_weight_rule": {
                "min_commits": 50,
                "min_commit_share": 0.1
              },
              "review_only_matches": 0,
              "below_threshold_exposures": [],
              "assessed_self_published_locations": 4
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "moderate",
        "name": "AI Readiness",
        "value": 60,
        "weight": 0.04,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "good",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 77,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.596,
              "agent_instruction_files": [
                "AGENTS.md"
              ],
              "agent_instruction_max_bytes": 10691
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.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": "59 of 99 human commits state their intent (structured subject or explanatory body)",
                "points": 31.8,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 59,
                      "sampled": 99
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": true,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.45,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0.01
            },
            "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Dockerfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "45 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 45,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "1 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 1,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 52,
            "inputs": {
              "primary_language": "Python",
              "largest_source_bytes": 6915612,
              "source_files_sampled": 1106,
              "oversized_source_files": 53
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Python without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "Python"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "53/1106 source files over 60KB",
                "points": 52.4,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 1106,
                      "oversized": 53
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
      }
    ],
    "classification": {
      "labels": [
        "library"
      ],
      "scores": {
        "library": 6,
        "framework": 2
      },
      "primary": "library",
      "evidence": [
        {
          "tier": "distribution",
          "label": "library",
          "source": "registry:pypi",
          "weight": 6
        },
        {
          "tier": "tags",
          "label": "framework",
          "source": "tag:framework",
          "weight": 2
        }
      ],
      "artifacts": [],
      "confidence": "medium",
      "host_extension": false,
      "runs_as_process": false,
      "consumed_by_code": true
    },
    "metrics_version": "2.3.1"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "deps.dev does not index pypi:jesse@3.0.0; advisories assessed against the repository dependency graph instead"
  ],
  "report_type": "repository",
  "generated_at": "2026-08-02T16:00:35.607293Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/j/jesse-ai/jesse.svg",
  "full_name": "jesse-ai/jesse",
  "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 v2.3.1, schema v0.27.0 — full methodology · metrics wiki.

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