Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 2.3.1 · 2026-08-02 16:00 UTC

jesse-ai / jesse

An advanced crypto trading bot written in Python

PythonMIT★ 8281 estrellas⑂ 1188 forksdesde nov 2018Ver en GitHub ↗
TipoBibliotecacómo se determina

jesse-ai/jesse tiene un índice de salud de 87 sobre 100, lo que lo sitúa en la banda Excelente. Su puntuación más alta es Vitality (93/100) y la más baja, Security (54/100). Se actualizó por última vez hoy. Una sola persona concentra la mayor parte del trabajo reciente.

87
global / 100
Excelente

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala estandarizada de 1 a 100. El resultado global parte de su media ponderada, calibrada contra la distribución del registro público para que las bandas tengan significado percentil; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe un límite «En riesgo» de 34.

87
Excepcional93-100El nivel más alto del registro (≈ el 5% superior); cumple prácticamente todos los criterios evaluados
Excelente80-92Sólido en todos los frentes; carencias menores
Bueno65-79Saludable; carencias limitadas y manejables
Moderado50-64Aceptable con carencias notables; se recomienda revisión
Débil35-49Debilidades sustanciales en varias áreas
En riesgo20-34Debilidades significativas; su adopción exige cautela
Crítico1-19Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

El resultado global ponderado 73 se calibra a 87 en la escala publicada del índice (calibración del registro 2026-08-02).

Titularidad

JesseOrganización
367 seguidores24 repositorios públicosdesde nov 2018

Este repositorio está respaldado por una organización: una custodia compartida y responsable que puede sobrevivir a cualquier mantenedor individual.

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicación
PyPIjesse3.0.0-358hace 0 días

Métricas por categoría

Vitalidad

¿Está vivo el proyecto: se escribe código y se publican versiones?

93Excepcional · 21% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 0 días
32.5/36Cadencia de commits — 47/52 semanas con commits
18/18Volumen de commits — 421 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 9 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year421
human_commit_share0,99
days_since_last_push0
active_weeks_last_year47
Cómo se puntúa
16.2/27Publica versiones — 10 etiquetas de versión (sin releases de GitHub)
36/36Recencia de las versiones — última versión hace 0 días
27/27Cadencia de publicación — una versión cada ~7 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count10
latest_release_tagv3.0.0
releases_from_tags
days_since_latest_release0
mean_days_between_releases7
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Signed-Releases. Los pesos restantes se han renormalizado.

Comunidad y Adopción

¿Tiene el proyecto usuarios, descargas, atención y unas condiciones acogedoras para quienes contribuyen?

76Bueno · 17% del índice global
Cómo se puntúa
60/60Estrellas — 8281 estrellas
25/25Forks — 1188 forks
12.9/15Observadores — 207 observadores
Datos de entrada utilizados
forks1188
stars8281
watchers207
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (MIT)
0/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
readme_badges
has_contributingno
has_issue_templateno
has_code_of_conductno
readme_badge_services
has_pull_request_templateno

Sostenibilidad y Gobernanza

¿Sobrevivirá el proyecto a sus personas: factor bus, capacidad de respuesta, quién lo respalda y mantenimiento del paquete?

68Bueno · 23% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
8.1/22.5Distribución de commits — el principal contribuyente firma el 64% de los commits
13.5/13.5Amplitud de contribuyentes — 50 contribuyentes
10/10OpenSSF Scorecard: Contributors — project has 7 contributing companies or organizations
Datos de entrada utilizados
bus_factor1
contributors_sampled50
top_contributor_share0,638
Cómo se puntúa
40.7/42Resolución de issues — 97% de issues cerradas
19.8/30Aceptación de PR — 278/422 PR decididos fusionados
0/13Newcomer PR acceptance — ningún PR de un contribuyente primerizo decidido en 30 d
0/15OpenSSF Scorecard: Code-Review — Found 0/28 approved changesets -- score normalized to 0
Datos de entrada utilizados
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
Excluidos de la puntuación (sin datos o no aplicable): newcomer_pr_acceptance. Los pesos restantes se han renormalizado.
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
18.4/25Alcance del propietario — 367 seguidores de jesse-ai
22.2/25Trayectoria — 24 repos públicos, cuenta de ~7 años
Datos de entrada utilizados
followers367
owner_typeOrganization
is_verified
owner_loginjesse-ai
public_repos24
account_age_days2823
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en pypi
35/35Recencia de publicación — última publicación hace 0 días
20/20Historial de versiones — 358 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesjesse
ecosystemspypi
any_deprecatedno
min_days_since_publish0

Calidad de Ingeniería

¿Existen unas prácticas mínimas de ingeniería y documentación?

71Bueno · 19% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 3 flujo(s) de trabajo
24/24Pruebas presentes
0/16Configuración de linter
0/9.6Hooks de pre-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
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_configno
has_precommit_configno
Cómo se puntúa
30/30README
0/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://jesse.trade
10/10Descripción del repositorio
10/10Topics — 18 topics
10/10Wiki
Datos de entrada utilizados
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_dirno
has_description

Seguridad

¿Son sólidas las prácticas visibles de seguridad y de cadena de suministro, sin exposición jurisdiccional de alto riesgo sin resolver?

54Moderado · 16% del índice global
Cómo se puntúa
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.5Licencia — 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 — sin datos
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 23 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate4,3
Excluidos de la puntuación (sin datos o no aplicable): signed_releases. Los pesos restantes se han renormalizado.
Cómo se puntúa
35/35Dependencias directas libres de avisos conocidos — ninguna dependencia directa tiene un aviso conocido
0/25Dependencias indirectas libres de avisos conocidos — el conjunto transitivo no es separable de las dependencias de desarrollo y prueba en este alcance
0/40Sin avisos pendientes — ningún aviso tiene fecha de publicación
Datos de entrada utilizados
sourceosv
advisories0
affected_packages0
assessed_packages2
unassessed_packages36
affected_by_severitynone
direct_affected_packages0
Excluidos de la puntuación (sin datos o no aplicable): Dependencias indirectas libres de avisos conocidos, Sin avisos pendientes. Los pesos restantes se han renormalizado. Se cotejaron 2 dependencias resueltas con OSV. 36 no pudieron evaluarse: sin versión resuelta, ecosistema no admitido o fuera de la lista de paquetes informada. Este repositorio no publica ningún paquete que el índice resuelva, por lo que se evaluó en su lugar el grafo de dependencias del repositorio. Ese grafo mezcla fijaciones de desarrollo y prueba con las dependencias distribuidas, de modo que solo se puntúan las dependencias declaradas en tiempo de ejecución; los hallazgos transitivos se informan como contexto y quedan excluidos de la puntuación. No se analiza la alcanzabilidad.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Tiene un peso deliberadamente pequeño (4%): las herramientas para agentes son una señal real de mantenimiento, pero un repositorio sin ninguna puede alcanzar igualmente 100/100.

60Moderado · 4% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — AGENTS.md
0/15Documentación legible por máquinas (llms.txt)
31.8/40Historial de commits legible — 59 de 99 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,596
agent_instruction_filesAGENTS.md
agent_instruction_max_bytes10.691
Cómo se puntúa
0/18Arranque con un solo comando
22/22Pruebas automatizadas
0/11Configuración de lint / formato
0/11Verificación estática de tipos
10/10Entorno reproducible — Dockerfile
10/10Práctica demostrada con agentes — 45 de los últimos 100 commits con autoría o crédito de agente
8/8Mantenimiento automatizado — 1 de los últimos 100 commits son actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nixno
has_tests
lockfiles
has_dockerfile
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configs
agent_commit_share0,45
toolchain_manifests
dependency_bot_commit_share0,01
Cómo se puntúa
0/45Código verificable por tipos — Python sin configuración de verificación de tipos
52.4/55Tamaños de archivo manejables — 53/1106 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languagePython
largest_source_bytes6.915.612
source_files_sampled1106
oversized_source_files53

Datos clave

8281estrellas de GitHub
50contribuidores
421commits en los últimos 12 meses
0días desde el último push
10versiones publicadas
1factor bus
5issues abiertas
PyPIecosistemas de paquetes

Advertencias de recopilación de datos

  • 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

Más detalle

Historial de estrellas y forks 0 ★ / 1188 ⇿
0Estrellas
1188Forks
9Versiones

Cuándo se añadió cada estrella y fork, recopilado de GitHub y agrupado por día. El crecimiento acumulado se sitúa justo encima de las adiciones diarias que lo componen, de modo que ambos se leen en conjunto: la acumulación orgánica sostenida no se parece en nada a un pico abrupto y efímero. Cuando esa diferencia es medible, se informa como autenticidad del crecimiento.

Solo se muestra el historial más reciente: este repositorio supera la ventana de recopilación, por lo que no se captura el historial más antiguo.

0200400600800100012001188172021-042023-122026-07
Mayor 0Menor 3Parche 6

Cada punto abarca 5 días.

OpenSSF Scorecard 4.3 / 10
4.3agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).Scorecard v5.5.0 · 2026-08-02 16:00 UTC

1Binary-Artifactsbinaries present in source code
0Branch-Protectionbranch protection not enabled on development/release branches
10CI-Tests2 out of 2 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/28 approved changesets -- score normalized to 0
10Contributorsproject has 7 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 9 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
7SASTSAST tool detected but not run on all commits
0Security-Policysecurity policy file not detected
n/dSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities23 existing vulnerabilities detected
Todas las dependencias 38

Conjunto completo de dependencias resueltas según el grafo de dependencias de GitHub: 0 paquetes directos y 38 indirectos (transitivos). El cierre transitivo es completo cuando el repositorio incluye un lockfile.

RegistroPaqueteVersiónRelación
PyPIaiofilesindirecta
PyPIaioredisindirecta
PyPIarrowindirecta
PyPIblinkerindirecta
PyPIclickindirecta
PyPIcryptographyindirecta
PyPIecdsaindirecta
PyPIeth-accountindirecta
PyPIfastapiindirecta
PyPIfncindirecta
PyPIjesse-rust1.2.0indirecta
PyPIjoblibindirecta
PyPImatplotlibindirecta
PyPImcp1.28.1indirecta
PyPImsgpackindirecta
PyPInumpyindirecta
PyPIoptunaindirecta
PyPIpandasindirecta
PyPIpeeweeindirecta
PyPIpsycopg2-binaryindirecta
PyPIpydashindirecta
PyPIpyjwtindirecta
PyPIpytestindirecta
PyPIpython-dotenvindirecta
PyPIrayindirecta
PyPIredisindirecta
PyPIrequestsindirecta
PyPIscikit-learnindirecta
PyPIscipyindirecta
PyPIsimplejsonindirecta
PyPIstarkbank-ecdsaindirecta
PyPIstatsmodelsindirecta
PyPItabulateindirecta
PyPItimeloopindirecta
PyPIuvicornindirecta
PyPIwebsocket-clientindirecta
PyPIwebsocketsindirecta
PyPIwsaccelindirecta
Avisos de dependencias 0

Este repositorio no publica ningún paquete que el índice resuelva, así que se evaluó su propio grafo de dependencias — 2 paquetes, que incluyen también fijaciones de desarrollo y prueba que nunca se distribuyen: 0 tienen avisos conocidos, de los cuales 0 son directas. 36 no pudieron evaluarse: sin versión resuelta, ecosistema no admitido, o fuera de la lista de paquetes informada.

Ningún aviso conocido afecta a las dependencias evaluadas.

Un aviso significa que la versión registrada en el grafo de dependencias cae dentro del rango afectado de un aviso. No se analiza la alcanzabilidad, y el grafo incluye fijaciones de desarrollo y prueba: un hallazgo puede referirse al utillaje y no al software distribuido.

Informe JSON sin procesar legible por máquina
{
  "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"
}

Las puntuaciones son señales, no garantías. Reflejan prácticas públicamente visibles en GitHub; no son una auditoría de código ni una garantía de seguridad.

Los datos ausentes se excluyen y los pesos se renormalizan; nunca se puntúan como cero. La metodología es versionada y abierta: métricas v2.3.1, esquema v0.27.0 — metodología completa · wiki de métricas.

Cómo se sitúa un resultado dentro del registro general: estadísticas agregadasPyPI.