Публічний реєстр
Звіт про здоров'я програмного забезпеченнясхема 0.27.0 · метрики 2.3.1 · 2026-08-02 16:00 UTC

jesse-ai / jesse

An advanced crypto trading bot written in Python

PythonMIT★ 8 281 зірка⑂ 1 188 форківз лист. 2018 р.Переглянути на GitHub ↗
ТипБібліотекаяк це визначено

jesse-ai/jesse має індекс здоров’я 87 зі 100, що відповідає смузі «Відмінний». Найвищий показник — Vitality (93/100), найнижчий — Security (54/100). Останнє оновлення — сьогодні. Більшість нещодавньої роботи виконує один учасник.

87
загалом / 100
Відмінний

Індекс здоров'я програмного забезпечення

Метрики згруповано у зважені категорії на шкалі 1–100. Загальна оцінка починається як їхнє зважене середнє, відкаліброване за розподілом публічного реєстру, тож діапазони мають перцентильний зміст; коли публічні дані активують Політику юрисдикцій високого ризику, рейтинг коригується й отримує верхню межу 34 («У зоні ризику»).

87
Винятковий93-100Верхній щабель реєстру (≈ топ-5%); відповідає практично всім перевіреним критеріям
Відмінний80-92Сильний за всіма напрямами; незначні прогалини
Добрий65-79Здоровий; прогалини обмежені та керовані
Помірний50-64Прийнятний, але з помітними прогалинами; рекомендовано перевірку
Слабкий35-49Суттєві недоліки в кількох сферах
У зоні ризику20-34Суттєві слабкі місця; впровадження потребує обережності
Критичний1-19Серйозні проблеми (покинутий, єдиний мейнтейнер, без базової гігієни)
ЖиттєздатністьСпільнота тавпровадженняСталість таврядуванняІнженернаякістьБезпекаГотовність доШІ

Профіль оцінок

Кожна вісь — окрема категорія. Форма важить більше, ніж середнє: здоровий об'єкт заповнює всю фігуру, тоді як профіль із піками та провалами означає, що сила в одному вимірі маскує ризик в іншому.

Зважений загальний бал 73 калібровано до 87 за шкалою опублікованого індексу (калібрування реєстру 2026-08-02).

Власність

JesseОрганізація
367 підписників24 публічні репозиторіїз лист. 2018 р.

За цим репозиторієм стоїть організація — спільна, підзвітна опіка, здатна пережити будь-якого окремого мейнтейнера.

Пакетні екосистеми

РеєстрПакетВерсіяЗавантажень / місВерсіїОстання публікація
PyPIjesse3.0.0-3580 днів тому

Метрики за категоріями

Життєздатність

Чи живий проєкт — чи пишеться код і чи виходять релізи?

93Винятковий · 21% загального індексу
Як обчислюється оцінка
36/36Свіжість push — останній push 0 дн. тому
32.5/36Ритм комітів — 47/52 тижнів із комітами
18/18Обсяг комітів — 421 комітів за останній рік
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 9 issue activity found in the last 90 days -- score normalized to 10
Використані вхідні дані
commits_last_year421
human_commit_share0,99
days_since_last_push0
active_weeks_last_year47
Як обчислюється оцінка
16.2/27Випускає релізи — 10 тегів версій (без релізів GitHub)
36/36Свіжість релізів — останній реліз 0 дн. тому
27/27Ритм релізів — реліз кожні ~7 дн.
0/10OpenSSF Scorecard: Signed-Releases — немає даних
Використані вхідні дані
releases_count10
latest_release_tagv3.0.0
releases_from_tagsтак
days_since_latest_release0
mean_days_between_releases7
Виключено з оцінювання (немає даних або не застосовно): OpenSSF Scorecard: Signed-Releases. Залишкові ваги перенормовано.

Спільнота та впровадження

Чи має проєкт користувачів, завантаження, увагу та влаштовані умови для контриб’юторів?

76Добрий · 17% загального індексу
Як обчислюється оцінка
60/60Зірки — 8 281 зірок
25/25Форки — 1 188 форків
12.9/15Спостерігачі — 207 спостерігачів
Використані вхідні дані
forks1 188
stars8 281
watchers207
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Як обчислюється оцінка
22.5/22.5README
22.5/22.5Ліцензія — визнана ліцензія (MIT)
0/18Настанови CONTRIBUTING
0/13.5Кодекс поведінки
0/7.2Шаблон issue
0/6.3Шаблон PR
Використані вхідні дані
has_readmeтак
has_licenseтак
readme_badges
has_contributingні
has_issue_templateні
has_code_of_conductні
readme_badge_services
has_pull_request_templateні

Сталість та врядування

Чи переживе проєкт своїх людей — бас-фактор, реактивність, хто за ним стоїть і як супроводжуються пакети?

68Добрий · 23% загального індексу
Як обчислюється оцінка
9/54Бас-фактор — на 1 контриб’ютор(ів) припадає половина всіх комітів
8.1/22.5Розподіл комітів — головний контриб’ютор — автор 64% комітів
13.5/13.5Широта контриб’юторів — 50 контриб’юторів
10/10OpenSSF Scorecard: Contributors — project has 7 contributing companies or organizations
Використані вхідні дані
bus_factor1
contributors_sampled50
top_contributor_share0,638
Як обчислюється оцінка
40.7/42Вирішення issue — закрито 97% issue
19.8/30Прийняття PR — злито 278/422 вирішених PR
0/13Newcomer PR acceptance — за 30 дн. не вирішено жодного PR від новачка
0/15OpenSSF Scorecard: Code-Review — Found 0/28 approved changesets -- score normalized to 0
Використані вхідні дані
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
Виключено з оцінювання (немає даних або не застосовно): newcomer_pr_acceptance. Залишкові ваги перенормовано.
Як обчислюється оцінка
30/30Підтримка власника — у власності організації
0/20Верифікований домен
18.4/25Охоплення власника — 367 підписників у jesse-ai
22.2/25Послужний список — 24 публічних репозиторіїв, вік облікового запису ~7 р.
Використані вхідні дані
followers367
owner_typeOrganization
is_verified
owner_loginjesse-ai
public_repos24
account_age_days2 823

Супровід пакетів

100Винятковий
Як обчислюється оцінка
25/25Опубліковано й доступно — 1 пакет(ів) у pypi
35/35Свіжість публікацій — остання публікація 0 дн. тому
20/20Історія версій — 358 опублікованих версій
20/20Не застарілий — активний, не deprecated і не yanked
Використані вхідні дані
packagesjesse
ecosystemspypi
any_deprecatedні
min_days_since_publish0

Інженерна якість

Чи наявні базові інженерні практики та документація?

71Добрий · 19% загального індексу
Як обчислюється оцінка
24/24Процеси CI — 3 процес(ів) CI
24/24Наявні тести
0/16Конфігурація лінтера
0/9.6Pre-commit-хуки
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 2 out of 2 merged PRs checked by a CI test -- score normalized to 10
Використані вхідні дані
has_ciтак
has_testsтак
has_editorconfigні
has_linter_configні
has_precommit_configні
Як обчислюється оцінка
30/30README
0/25Каталог документації
15/15Сайт документації / домашня сторінка — https://jesse.trade
10/10Опис репозиторію
10/10Теми — 18 тем
10/10Wiki
Використані вхідні дані
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_wikiтак
homepagehttps://jesse.trade
has_readmeтак
has_docs_dirні
has_descriptionтак

Безпека

Чи міцні видимі практики безпеки й ланцюга постачання, без непослабленої пов’язаності з юрисдикціями високого ризику?

54Помірний · 16% загального індексу

Стан безпеки

43Слабкий
Як обчислюється оцінка
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.5Ліцензія — 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 — немає даних
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 23 existing vulnerabilities detected
Використані вхідні дані
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate4,3
Виключено з оцінювання (немає даних або не застосовно): signed_releases. Залишкові ваги перенормовано.
Як обчислюється оцінка
35/35Прямі залежності без відомих сповіщень — жодна пряма залежність не має відомих сповіщень
0/25Непрямі залежності без відомих сповіщень — транзитивний набір не відокремлюється від залежностей розробки й тестування в цьому обсязі
0/40Немає задавнених сповіщень — жодне сповіщення не має дати публікації
Використані вхідні дані
sourceosv
advisories0
affected_packages0
assessed_packages2
unassessed_packages36
affected_by_severitynone
direct_affected_packages0
Виключено з оцінювання (немає даних або не застосовно): Непрямі залежності без відомих сповіщень, Немає задавнених сповіщень. Залишкові ваги перенормовано. Звірено 2 резолвлених залежностей із OSV. 36 не вдалося оцінити — немає резолвленої версії, непідтримувана екосистема або поза межами звітованого переліку пакетів. Цей репозиторій не публікує пакета, який резолвить індекс, тож натомість оцінено граф залежностей репозиторію. Цей граф змішує закріплені версії для розробки й тестування зі справді постачаними залежностями, тож оцінюються лише задекларовані runtime-залежності; транзитивні знахідки подаються як контекст і в оцінку не входять. Досяжність не аналізується.

Готовність до ШІ

Наскільки репозиторій оснащений для розробки та супроводу за участі ШІ-агентів? Має свідомо малу вагу (4%): агентний інструментарій — реальний сигнал супроводу, але репозиторій без нього все одно може отримати 100/100.

60Помірний · 4% загального індексу
Як обчислюється оцінка
45/45Інструкції для агентів — AGENTS.md
0/15Машиночитана документація (llms.txt)
31.8/40Читабельна історія комітів — намір зазначено у 59 з 99 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share0,596
agent_instruction_filesAGENTS.md
agent_instruction_max_bytes10 691
Як обчислюється оцінка
0/18Розгортання однією командою
22/22Автоматизовані тести
0/11Конфігурація лінтера / форматера
0/11Статична перевірка типів
10/10Відтворюване середовище — Dockerfile
10/10Підтверджена практика роботи з агентами — 45 з останніх 100 комітів створено агентом або з його зазначенням
8/8Автоматизоване супроводження — 1 з останніх 100 комітів — автоматичні оновлення залежностей
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Використані вхідні дані
has_nixні
has_testsтак
lockfiles
has_dockerfileтак
typed_languageні
bootstrap_files
has_devcontainerні
has_linter_configні
typecheck_configs
agent_commit_share0,45
toolchain_manifests
dependency_bot_commit_share0,01
Як обчислюється оцінка
0/45Типізований код — Python без конфігурації перевірки типів
52.4/55Керовані розміри файлів — 53/1 106 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languagePython
largest_source_bytes6 915 612
source_files_sampled1 106
oversized_source_files53

Ключові факти

8 281зірок GitHub
50контриб'юторів
421комітів за останні 12 місяців
0днів від останнього пушу
10релізів
1бас-фактор
5відкритих issue
PyPIпакетних екосистем

Попередження щодо збору даних

  • 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

Докладніше

Історія зірок і форків 0 ★ / 1 188 ⇿
0Зірки
1 188Форки
9Релізи

Коли додано кожну зірку й форк — зібрано з GitHub і згруповано за днями. Кумулятивне зростання розміщено просто над денними додаваннями, з яких воно складається, тож їх видно одне проти одного: рівномірне органічне накопичення виглядає зовсім інакше, ніж різкий короткочасний сплеск. Там, де цю різницю можна виміряти, її подано як автентичність росту.

Показано лише найновішу історію — цей репозиторій перевищує вікно збору, тож найраніша історія не захоплена.

02004006008001 0001 2001 188172021-042023-122026-07
Мажорні 0Мінорні 3Патчі 6

Кожна точка охоплює 5 днів.

OpenSSF Scorecard 4.3 / 10
4.3сукупно

Незалежна, не прив'язана до інструментів оцінка безпеки від відкритого проєкту OpenSSF Scorecard. Кожна перевірка винагороджує практику безпеки, а не інструмент конкретного постачальника. Перевірки, які Scorecard не зміг визначити, позначено н/д і виключено з оцінки безпеки (вони ніколи не зараховуються як нуль).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
н/дSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities23 existing vulnerabilities detected
Усі залежності 38

Повний розв'язаний набір залежностей із графа залежностей GitHub: 0 прямих і 38 непрямих (транзитивних) пакетів. Транзитивне замикання є повним, коли в репозиторії закомічено lockfile.

РеєстрПакетВерсіяЗв'язок
PyPIaiofilesнепряма
PyPIaioredisнепряма
PyPIarrowнепряма
PyPIblinkerнепряма
PyPIclickнепряма
PyPIcryptographyнепряма
PyPIecdsaнепряма
PyPIeth-accountнепряма
PyPIfastapiнепряма
PyPIfncнепряма
PyPIjesse-rust1.2.0непряма
PyPIjoblibнепряма
PyPImatplotlibнепряма
PyPImcp1.28.1непряма
PyPImsgpackнепряма
PyPInumpyнепряма
PyPIoptunaнепряма
PyPIpandasнепряма
PyPIpeeweeнепряма
PyPIpsycopg2-binaryнепряма
PyPIpydashнепряма
PyPIpyjwtнепряма
PyPIpytestнепряма
PyPIpython-dotenvнепряма
PyPIrayнепряма
PyPIredisнепряма
PyPIrequestsнепряма
PyPIscikit-learnнепряма
PyPIscipyнепряма
PyPIsimplejsonнепряма
PyPIstarkbank-ecdsaнепряма
PyPIstatsmodelsнепряма
PyPItabulateнепряма
PyPItimeloopнепряма
PyPIuvicornнепряма
PyPIwebsocket-clientнепряма
PyPIwebsocketsнепряма
PyPIwsaccelнепряма
Сповіщення про залежності 0

Цей репозиторій не публікує пакета, який розпізнає індекс, тож оцінено його власний граф залежностей — 2 пакетів, серед яких є й піниї розробки та тестування, що ніколи не постачаються: 0 мають відомі сповіщення, з них 0 прямі. 36 не вдалося оцінити — немає резолвленої версії, непідтримувана екосистема або поза наведеним переліком пакетів.

Жодне відоме сповіщення не стосується оцінених залежностей.

Сповіщення означає, що версія, записана в графі залежностей, потрапляє в уражений діапазон. Досяжність не аналізується, а граф містить піниї розробки й тестування — знахідка може стосуватися інструментів, а не поставленого коду.

Звіт у форматі JSON машиночитний
{
  "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"
}

Оцінки — це сигнали, а не гарантії. Вони відображають публічно видимі практики на GitHub — це не аудит коду й не гарантія безпеки.

Відсутні дані виключаються, а ваги перенормовуються — нуль за відсутність ніколи не ставиться. Методологія версіонована й відкрита: метрики v2.3.1, схема v0.27.0 — повна методологія · вікі метрик.

Як окремий результат виглядає на тлі всього реєстру: сукупна статистикаPyPI.