Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 2.3.1 · 2026-08-02 16:00 UTC

jesse-ai / jesse

An advanced crypto trading bot written in Python

PythonMIT★ 8.281 Sterne⑂ 1.188 Forksseit Nov. 2018Auf GitHub ansehen ↗

jesse-ai/jesse erreicht einen Gesundheitsindex von 87 von 100 und liegt damit im Bereich Exzellent. Am stärksten schneidet es bei Vitality (93/100) ab, am schwächsten bei Security (54/100). Zuletzt heute aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

87
gesamt / 100
Exzellent

Software-Gesundheitsindex

Metriken werden auf einer standardisierten Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr gewichtetes Mittel, kalibriert auf die Verteilung des öffentlichen Registers, sodass die Stufen Perzentilbedeutung tragen; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze Gefährdet von 34.

87
Außergewöhnlich93-100Die Spitzengruppe des Registers (≈ obere 5 %); erfüllt im Wesentlichen alle geprüften Kriterien
Exzellent80-92Durchgehend stark; geringfügige Lücken
Gut65-79Gesund; Lücken sind begrenzt und beherrschbar
Mittel50-64Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Schwach35-49Wesentliche Schwächen in mehreren Bereichen
Gefährdet20-34Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-19Schwerwiegende Probleme (aufgegeben, nur ein Maintainer, keine Hygiene)
VitalitätCommunity &VerbreitungNachhaltigkeit &GovernanceEngineering-QualitätSicherheitAI Readiness

Bewertungsprofil

Jede Achse ist eine Kategorie. Die Form zählt mehr als der Durchschnitt — ein gesundes Projekt füllt die gesamte Fläche, während ein Profil aus Spitzen und Kratern bedeutet, dass Stärke in einer Dimension Risiken in einer anderen verdeckt.

Der gewichtete Gesamtwert 73 wird auf der veröffentlichten Indexskala auf 87 kalibriert (Register-Kalibrierung 2026-08-02).

Eigentümerschaft

JesseOrganisation
367 Follower24 öffentliche Reposseit Nov. 2018

Dieses Repository wird von einer Organisation getragen — geteilte, rechenschaftspflichtige Trägerschaft, die jeden einzelnen Maintainer überdauern kann.

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlicht
PyPIjesse3.0.0-358vor 0 Tagen

Metriken nach Kategorie

Vitalität

Lebt das Projekt — wird Code geschrieben und werden Releases ausgeliefert?

93Außergewöhnlich · 21 % des Gesamtindex

Entwicklungsaktivität

96Außergewöhnlich
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 0 Tagen
32.5/36Commit-Rhythmus — 47/52 Wochen mit Commits
18/18Commit-Volumen — 421 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 9 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year421
human_commit_share0,99
days_since_last_push0
active_weeks_last_year47
Wie die Bewertung erfolgt
16.2/27Liefert Releases aus — 10 Versions-Tags (keine GitHub-Releases)
36/36Release-Aktualität — letztes Release vor 0 Tagen
27/27Release-Rhythmus — ein Release etwa alle 7 Tage
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count10
latest_release_tagv3.0.0
releases_from_tagsja
days_since_latest_release0
mean_days_between_releases7
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Signed-Releases. Die verbleibenden Gewichte wurden renormalisiert.

Community & Verbreitung

Hat das Projekt Nutzer, Downloads, Aufmerksamkeit und ein einladendes Umfeld für Beitragende?

76Gut · 17 % des Gesamtindex

Popularität & Verbreitung

98Außergewöhnlich
Wie die Bewertung erfolgt
60/60Stars — 8.281 Stars
25/25Forks — 1.188 Forks
12.9/15Watcher — 207 Watcher
Verwendete Eingangsdaten
forks1.188
stars8.281
watchers207
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
22.5/22.5Lizenz — anerkannte Lizenz (MIT)
0/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
readme_badges
has_contributingnein
has_issue_templatenein
has_code_of_conductnein
readme_badge_services
has_pull_request_templatenein

Nachhaltigkeit & Governance

Überdauert das Projekt die Menschen, die es tragen — Bus-Faktor, Reaktionsfähigkeit, Trägerschaft und Paketpflege?

68Gut · 23 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
8.1/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 64 % der Commits
13.5/13.5Breite der Beitragenden — 50 Beitragende
10/10OpenSSF Scorecard: Contributors — project has 7 contributing companies or organizations
Verwendete Eingangsdaten
bus_factor1
contributors_sampled50
top_contributor_share0,638
Wie die Bewertung erfolgt
40.7/42Issue-Lösungsquote — 97 % der Issues geschlossen
19.8/30PR-Annahme — 278/422 entschiedene PRs gemergt
0/13Newcomer PR acceptance — kein PR eines Erstbeitragenden in 30 Tagen entschieden
0/15OpenSSF Scorecard: Code-Review — Found 0/28 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
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
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): newcomer_pr_acceptance. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
30/30Organisatorische Trägerschaft — im Besitz einer Organisation
0/20Verifizierte Domain
18.4/25Reichweite des Inhabers — 367 Follower von jesse-ai
22.2/25Kontohistorie — 24 öffentliche Repos, Kontoalter ca. 7 Jahre
Verwendete Eingangsdaten
followers367
owner_typeOrganization
is_verified
owner_loginjesse-ai
public_repos24
account_age_days2.823

Paketpflege

100Außergewöhnlich
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 1 Paket(e) auf pypi
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 0 Tagen
20/20Versionshistorie — 358 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packagesjesse
ecosystemspypi
any_deprecatednein
min_days_since_publish0

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

71Gut · 19 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 3 Workflow(s)
24/24Tests vorhanden
0/16Linter-Konfiguration
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
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_confignein
has_precommit_confignein
Wie die Bewertung erfolgt
30/30README
0/25Dokumentationsverzeichnis
15/15Dokumentations-/Homepage-Site — https://jesse.trade
10/10Repository-Beschreibung
10/10Topics — 18 Topics
10/10Wiki
Verwendete Eingangsdaten
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_wikija
homepagehttps://jesse.trade
has_readmeja
has_docs_dirnein
has_descriptionja

Sicherheit

Sind die sichtbaren Sicherheits- und Lieferkettenpraktiken belastbar, ohne ungeklärte Exposition gegenüber Hochrisikojurisdiktionen?

54Mittel · 16 % des Gesamtindex
Wie die Bewertung erfolgt
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.5Lizenz — 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 — keine Daten
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 23 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate4,3
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): signed_releases. Die verbleibenden Gewichte wurden renormalisiert.

Abhängigkeits-Advisories

100Außergewöhnlich
Wie die Bewertung erfolgt
35/35Direkte Abhängigkeiten ohne bekannte Advisories — keine direkte Abhängigkeit trägt ein bekanntes Advisory
0/25Indirekte Abhängigkeiten ohne bekannte Advisories — transitive Menge in diesem Bereich nicht von Entwicklungs- und Test-Abhängigkeiten trennbar
0/40Keine offenen Advisories — kein Advisory trägt ein Veröffentlichungsdatum
Verwendete Eingangsdaten
sourceosv
advisories0
affected_packages0
assessed_packages2
unassessed_packages36
affected_by_severitynone
direct_affected_packages0
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Indirekte Abhängigkeiten ohne bekannte Advisories, Keine offenen Advisories. Die verbleibenden Gewichte wurden renormalisiert. 2 aufgelöste Abhängigkeiten wurden mit OSV abgeglichen. 36 konnten nicht bewertet werden — keine aufgelöste Version, ein nicht unterstütztes Ökosystem oder außerhalb der ausgewiesenen Paketliste. Dieses Repository veröffentlicht kein Paket, das der Index auflöst; bewertet wurde daher der Abhängigkeitsgraph des Repositorys. Dieser Graph vermischt Entwicklungs- und Test-Pins mit ausgelieferten Abhängigkeiten, daher werden nur die deklarierten Laufzeit-Abhängigkeiten bewertet; transitive Befunde werden als Kontext ausgewiesen und fließen nicht in die Bewertung ein. Erreichbarkeit wird nicht analysiert.

AI Readiness

Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Trägt ein bewusst kleines Gewicht (4 %): Agenten-Tooling ist ein echtes Pflegesignal, doch ein Repository ohne jedes Signal kann weiterhin 100/100 erreichen.

60Mittel · 4 % des Gesamtindex
Wie die Bewertung erfolgt
45/45Agentenanweisungen — AGENTS.md
0/15Maschinenlesbare Doku (llms.txt)
31.8/40Lesbare Commit-Historie — 59 von 99 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,596
agent_instruction_filesAGENTS.md
agent_instruction_max_bytes10.691
Wie die Bewertung erfolgt
0/18Bootstrap mit einem Befehl
22/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
0/11Statische Typprüfung
10/10Reproduzierbare Umgebung — Dockerfile
10/10Belegte Agentenpraxis — 45 der letzten 100 Commits von Agenten verfasst oder ihnen zugeschrieben
8/8Automatisierte Wartung — 1 der letzten 100 Commits sind automatisierte Abhängigkeits-Updates
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfiles
has_dockerfileja
typed_languagenein
bootstrap_files
has_devcontainernein
has_linter_confignein
typecheck_configs
agent_commit_share0,45
toolchain_manifests
dependency_bot_commit_share0,01
Wie die Bewertung erfolgt
0/45Typprüfbarer Code — Python ohne Typprüfungs-Konfiguration
52.4/55Handhabbare Dateigrößen — 53/1.106 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languagePython
largest_source_bytes6.915.612
source_files_sampled1.106
oversized_source_files53

Eckdaten

8.281GitHub-Sterne
50Mitwirkende
421Commits, letzte 12 Monate
0Tage seit letztem Push
10Releases
1Bus-Faktor
5offene Issues
PyPIPaket-Ökosysteme

Warnungen zur Datenerhebung

  • 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

Weitere Details

Stern- und Fork-Verlauf 0 ★ / 1.188 ⇿
0Sterne
1.188Forks
9Releases

Wann jeder Stern und Fork hinzugefügt wurde, von GitHub erfasst und nach Tagen gruppiert. Das kumulierte Wachstum steht direkt über den täglichen Zugängen, aus denen es besteht, sodass beide gegeneinander lesbar sind: stetiger organischer Zuwachs sieht ganz anders aus als ein abrupter, kurzlebiger Ausschlag. Wo dieser Unterschied messbar ist, wird er als Wachstumsauthentizität ausgewiesen.

Es wird nur die jüngste Historie angezeigt — dieses Repository überschreitet das Erfassungsfenster, sodass die früheste Historie nicht erfasst wird.

02004006008001.0001.2001.188172021-042023-122026-07
Major 0Minor 3Patch 6

Jeder Punkt umfasst 5 Tage.

OpenSSF Scorecard 4.3 / 10
4.3Gesamtwert

Unabhängige, werkzeugneutrale Sicherheitsbewertung durch das quelloffene OpenSSF Scorecard. Jede Prüfung honoriert eine Sicherheits-Praxis, nicht das Werkzeug eines bestimmten Anbieters. Prüfungen, die Scorecard nicht ermitteln konnte, sind mit k. A. markiert und vom Sicherheitswert ausgeschlossen (nie als null gezählt).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
k. A.Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities23 existing vulnerabilities detected
Alle Abhängigkeiten 38

Vollständig aufgelöster Abhängigkeitssatz aus dem GitHub-Abhängigkeitsgraphen: 0 direkte und 38 indirekte (transitive) Pakete. Die transitive Hülle ist vollständig, wenn das Repository eine Lockfile eincheckt.

RegistryPaketVersionBeziehung
PyPIaiofilesindirekt
PyPIaioredisindirekt
PyPIarrowindirekt
PyPIblinkerindirekt
PyPIclickindirekt
PyPIcryptographyindirekt
PyPIecdsaindirekt
PyPIeth-accountindirekt
PyPIfastapiindirekt
PyPIfncindirekt
PyPIjesse-rust1.2.0indirekt
PyPIjoblibindirekt
PyPImatplotlibindirekt
PyPImcp1.28.1indirekt
PyPImsgpackindirekt
PyPInumpyindirekt
PyPIoptunaindirekt
PyPIpandasindirekt
PyPIpeeweeindirekt
PyPIpsycopg2-binaryindirekt
PyPIpydashindirekt
PyPIpyjwtindirekt
PyPIpytestindirekt
PyPIpython-dotenvindirekt
PyPIrayindirekt
PyPIredisindirekt
PyPIrequestsindirekt
PyPIscikit-learnindirekt
PyPIscipyindirekt
PyPIsimplejsonindirekt
PyPIstarkbank-ecdsaindirekt
PyPIstatsmodelsindirekt
PyPItabulateindirekt
PyPItimeloopindirekt
PyPIuvicornindirekt
PyPIwebsocket-clientindirekt
PyPIwebsocketsindirekt
PyPIwsaccelindirekt
Abhängigkeits-Advisories 0

Dieses Repository veröffentlicht kein vom Index auflösbares Paket, daher wurde sein eigener Abhängigkeitsgraph bewertet – 2 Pakete, darunter auch Entwicklungs- und Test-Pins, die nie ausgeliefert werden: 0 tragen bekannte Advisories, davon 0 direkte. 36 konnten nicht bewertet werden – keine aufgelöste Version, ein nicht unterstütztes Ökosystem, oder außerhalb der ausgewiesenen Paketliste.

Keine bekannten Advisories betreffen die bewerteten Abhängigkeiten.

Ein Advisory bedeutet, dass die im Abhängigkeitsgraphen erfasste Version in den betroffenen Bereich eines Advisories fällt. Erreichbarkeit wird nicht analysiert, und der Graph enthält Entwicklungs- und Test-Pins — ein Fund kann das Werkzeug betreffen und nicht die ausgelieferte Software.

JSON-Rohbericht maschinenlesbar
{
  "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"
}

Bewertungen sind Signale, keine Garantien. Sie spiegeln öffentlich sichtbare Praxis auf GitHub wider — kein Code-Audit und keine Sicherheitsgarantie.

Fehlende Daten werden ausgeschlossen und die Gewichte neu normiert, nie als null bewertet. Die Methodik ist versioniert und offen: Metriken v2.3.1, Schema v0.27.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte StatistikenPyPI.