Registro público
Informe de salud del softwareesquema 0.29.0 · métricas 2.3.1 · 2026-08-02 21:14 UTC

MeridianAlgo / AraAI

Machine learning platform for market analysis and forecasting, with a focus on stock volatility prediction, market trend forecasting, and portfolio optimization.

PythonLicencia propia★ 15 estrellas⑂ 4 forksdesde jul 2025Ver en GitHub ↗

MeridianAlgo/AraAI tiene un índice de salud de 57 sobre 100, lo que lo sitúa en la banda Moderado. Su puntuación más alta es Vitality (84/100) y la más baja, Security (33/100). Se actualizó por última vez hace 12 días. Una sola persona concentra la mayor parte del trabajo reciente.

57
global / 100
Moderado

Í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.

57
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 55 se calibra a 57 en la escala publicada del índice (calibración del registro 2026-08-02).

Titularidad

MeridianAlgoOrganización
7 seguidores19 repositorios públicosdesde feb 2026

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

Métricas por categoría

Vitalidad

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

84Excelente · 21% del índice global
Cómo se puntúa
28.8/36Recencia de push — último push hace 12 días
15.9/36Cadencia de commits — 23/52 semanas con commits
18/18Volumen de commits — 178 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year178
human_commit_share0,97
days_since_last_push12
active_weeks_last_year23
Cómo se puntúa
27/27Publica versiones — 3 versiones publicadas
36/36Recencia de las versiones — última versión hace 12 días
27/27Cadencia de publicación — una versión cada ~23,5 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count3
latest_release_tagv1.2.1
releases_from_tagsno
days_since_latest_release12
mean_days_between_releases23,5
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?

33En riesgo · 17% del índice global
Cómo se puntúa
18.6/60Estrellas — 15 estrellas
4/25Forks — 4 forks
0/15Observadores — 0 observadores
Datos de entrada utilizados
forks4
stars15
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
16.9/22.5Licencia — archivo de licencia presente, no es una licencia reconocida
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_badges7
has_contributingno
has_issue_templateno
has_code_of_conductno
readme_badge_servicesgithub.com, shields.io
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?

47Débil · 23% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
5.2/22.5Distribución de commits — el principal contribuyente firma el 77% de los commits
5.4/13.5Amplitud de contribuyentes — 4 contribuyentes
6/10OpenSSF Scorecard: Contributors — project has 2 contributing companies or organizations -- score normalized to 6
Datos de entrada utilizados
bus_factor1
contributors_sampled4
top_contributor_share0,771
Cómo se puntúa
42/42Resolución de issues — 100% de issues cerradas
20/30Aceptación de PR — 4/6 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/30 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs4
open_issues0
closed_issues172
prs_merged_7d0
prs_decided_7d0
prs_merged_30d0
prs_decided_30d0
issue_closed_ratio1
closed_unmerged_prs2
first_time_authors_30d0
first_time_prs_merged_30d0
first_time_prs_decided_30d0
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
6.5/25Alcance del propietario — 7 seguidores de MeridianAlgo
10.5/25Trayectoria — 19 repos públicos, cuenta de ~0 años
Datos de entrada utilizados
followers7
owner_typeOrganization
is_verified
owner_loginMeridianAlgo
public_repos19
account_age_days179

Calidad de Ingeniería

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

76Bueno · 19% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 4 flujo(s) de trabajo
24/24Pruebas presentes
0/16Configuración de linter
0/9.6Hooks de pre-commit
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — sin datos
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_configno
has_precommit_configno
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: CI-Tests. Los pesos restantes se han renormalizado.

Documentación

100Excepcional
Cómo se puntúa
30/30README
25/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://huggingface.co/meridianal/ARA.AI
10/10Descripción del repositorio
10/10Topics — 12 topics
10/10Wiki
Datos de entrada utilizados
topicsmeridianalgo, forecasting-models, forex-prediction, hugging-face, stock-prediction, open-source, training, training-project, stock-analysis, stock-market, stock-price-prediction, stocks
has_wiki
homepagehttps://huggingface.co/meridianal/ARA.AI
has_readme
has_docs_dir
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?

33En riesgo · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
0.8/7.5Branch-Protection — branch protection is not maximal on development and all release branches
0/2.5CI-Tests — sin datos
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
1.5/2.5Contributors — project has 2 contributing companies or organizations -- score normalized to 6
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.2/2.5Licencia — license file detected
7.5/7.5Maintained — 30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — sin datos
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — no SAST tool detected
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 — 36 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate3,3
Excluidos de la puntuación (sin datos o no aplicable): ci_tests, packaging, signed_releases. Los pesos restantes se han renormalizado.

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.

34En riesgo · 4% del índice global
Cómo se puntúa
0/45Instrucciones para agentes — sin CLAUDE.md / AGENTS.md / reglas de editor
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 82 de 97 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,845
agent_instruction_files
agent_instruction_max_bytes
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
0/10Entorno reproducible
0/10Práctica demostrada con agentes — ningún commit con autoría de agente entre los últimos 100
0/8Mantenimiento automatizado — no se observan 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_dockerfileno
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configs
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
Cómo se puntúa
0/45Código verificable por tipos — Python sin configuración de verificación de tipos
52.8/55Tamaños de archivo manejables — 1/25 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languagePython
largest_source_bytes70.050
source_files_sampled25
oversized_source_files1

Datos clave

15estrellas de GitHub
4contribuidores
178commits en los últimos 12 meses
12días desde el último push
3versiones publicadas
1factor bus
0issues abiertas
PyPIecosistemas de paquetes

Advertencias de recopilación de datos

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch pypi package 'ara-ai' from its registry
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Más detalle

Historial de estrellas y forks 0 ★ / 4 ⇿
0Estrellas
4Forks
2Versiones

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.

1223344412025-092026-012026-06
Mayor 1Menor 0Parche 1
OpenSSF Scorecard 3.3 / 10
3.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 21:14 UTC

10Binary-Artifactsno binaries found in the repo
1Branch-Protectionbranch protection is not maximal on development and all release branches
n/dCI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
6Contributorsproject has 2 contributing companies or organizations -- score normalized to 6
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
9Licenselicense file detected
10Maintained30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10
n/dPackagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
n/dSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities36 existing vulnerabilities detected
Todas las dependencias no recopilado

No fue posible recopilar el conjunto de dependencias resuelto para este informe: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [
        "meridianalgo",
        "forecasting-models",
        "forex-prediction",
        "hugging-face",
        "stock-prediction",
        "open-source",
        "training",
        "training-project",
        "stock-analysis",
        "stock-market",
        "stock-price-prediction",
        "stocks"
      ],
      "is_fork": false,
      "size_kb": 104580,
      "has_wiki": true,
      "homepage": "https://huggingface.co/meridianal/ARA.AI",
      "languages": {
        "Python": 256799
      },
      "pushed_at": "2026-07-21T18:20:08Z",
      "created_at": "2025-07-24T20:17:58Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-27T13:59:45Z",
      "description": "Machine learning platform for market analysis and forecasting, with a focus on stock volatility prediction, market trend forecasting, and portfolio optimization.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "main",
      "license_spdx_raw": "NOASSERTION",
      "primary_language": "Python",
      "significant_languages": [
        "Python"
      ]
    },
    "owner": {
      "blog": "https://meridianalgo.org/",
      "name": "MeridianAlgo",
      "type": "Organization",
      "login": "MeridianAlgo",
      "company": null,
      "location": "United States of America",
      "followers": 7,
      "avatar_url": "https://avatars.githubusercontent.com/u/259217922?v=4",
      "created_at": "2026-02-04T00:09:35Z",
      "is_verified": null,
      "public_repos": 19,
      "account_age_days": 179
    },
    "license": {
      "state": "custom",
      "spdx_id": null,
      "raw_spdx": "NOASSERTION",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v1.2.1",
          "kind": "patch",
          "published_at": "2026-07-21T18:20:36Z"
        },
        {
          "tag": "v1.1.1",
          "kind": "patch",
          "published_at": "2026-06-07T23:33:22Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2026-06-04T20:01:13Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "f25bff3817425faa5927524aa597858a989198b4",
          "body": "…ion references",
          "is_bot": false,
          "headline": "Remove dead code and unused maintenance script, refresh docs and vers…",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-07-21T18:17:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "20a044e38db348cfb816783761014cf196b8160e",
          "body": "Pulled production Meridian.AI stock/forex checkpoints from HF and ran them on\nthe existing holdout slice. Even in-sample (they train through the holdout)\nthey fail to beat the always-up baseline; reinforces the no-daily-edge finding.",
          "is_bot": false,
          "headline": "Re-benchmark live HF checkpoints (2026-06-29)",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-06-29T17:51:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7edb2b2d8de79affeba0f70d247d2f91e36aaf32",
          "body": null,
          "is_bot": false,
          "headline": "style: auto-format and lint [skip ci]",
          "author_name": "GitHub Action",
          "author_login": "actions-user",
          "committed_at": "2026-06-13T00:36:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "69140d24c476a926592358e43f4bc49afc277c5d",
          "body": "…hmarking\n\n- Retract the v1.0.0 forex edge claim (63.5%, z=8.4): the daily *=X bars are\n  internally inconsistent (day-t high/low leak the t+1 close; OLS on day-t\n  OHL ratios alone scores 81% sign accuracy). Forex now trains and evaluates\n  with a 1-day embargo (embargo_days=1, persisted in checkpo\n[…]\nof-sample numbers.\n- CI: retrying warm-start download (scripts/hf_download.py, 429-aware),\n  hourly crons kept staggered (stocks :00, forex :30); ASCII console output\n  for Windows cp1252 portability.",
          "is_bot": false,
          "headline": "v1.2.0: v7 checkpoint format, forex data-leak retraction, honest benc…",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-06-13T00:35:51Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0de2fcb43ffb6182b460be0321fe08b36c5fc399",
          "body": "…responses; bump to 1.1.1",
          "is_bot": false,
          "headline": "Fix forex/stock HF push failures by retrying non-JSON 429 rate-limit …",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-06-07T23:33:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ee6d1f6e6f634852afa7c5a88f0bff526d86f19c",
          "body": null,
          "is_bot": false,
          "headline": "style: auto-format and lint [skip ci]",
          "author_name": "GitHub Action",
          "author_login": "actions-user",
          "committed_at": "2026-06-06T04:18:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "af4d8fc9d200134d0aa14acf80d24079aff2da78",
          "body": "… deeper retry; bump to 1.1.0",
          "is_bot": false,
          "headline": "Fix HF 429 push failures by committing model and card atomically with…",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-06-06T04:18:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f388557e612472edbfa29324456551ee9e041411",
          "body": "Swept every doc for references that no longer match the shipped model:\n- Architecture/params: dim 256 / 6 layers / ~11M-45M -> dim 96 / 3 layers /\n  ~430K (QUICK_START, INDEX, ARCHITECTURE param table, TRAINING config block,\n  module README).\n- Filenames: train_stock_model.py -> train_stocks.py, tra\n[…]\nINING).\n- Versions: INDEX/QUICK_START/module README -> 1.0.0; MODEL_CARD citation -> 1.0.0;\n  checkpoint loader min version corrected to 6.0.\n- Checkpoint-health test description -> noise-aware floor.",
          "is_bot": false,
          "headline": "docs: correct all stale v5-era specs and filenames for v1.0.0 [skip ci]",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-06-04T19:51:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "35b4730b3088289581c947b69c5cd09c0447abdd",
          "body": "…ip ci]\n\nFirst production release. Product version reset to 1.0.0 (__init__.py,\npyproject.toml); checkpoint architecture version (MODEL_VERSION / _MIN_LOADABLE)\ndeliberately stays on the 6.x line to keep gating loadable checkpoint formats.\n\n- README + MODEL_CARD performance sections replaced with wa\n[…]\nant, shipped as experimental). Removed the\n  unsupported ~57% stock figure.\n- CHANGELOG: added v1.0.0 production entry; reframed every prior v1.x-v6.x\n  release as retired pre-1.0 development history.",
          "is_bot": false,
          "headline": "Release v1.0.0 (Production): honest backtest, version reset, docs [sk…",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-06-04T19:37:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "681f7f8932be6d95d45bd24af0cfbfd85e572133",
          "body": "- Drop login() in push_to_hf.py: it validates via the hard-rate-limited\n  /whoami-v2 endpoint, which failed the hourly forex push (429). The token\n  is already passed to every upload_file call, so login() was redundant.\n- Add 429-aware exponential-backoff retry around both model and README\n  uploads so a second concurrent pusher waits out the rate-limit window.\n- Bump actions/cache@v4 -> v5 and actions/github-script@v7 -> v8 in\n  stocks.yml and forex.yml to clear the Node-20 deprecation warning.",
          "is_bot": false,
          "headline": "Fix HF push rate-limit failure and bump Node-20 actions [skip ci]",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-06-04T19:27:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "de648ccb45baf04fab4b405d8e645e064fee72f5",
          "body": null,
          "is_bot": false,
          "headline": "style: auto-format and lint [skip ci]",
          "author_name": "GitHub Action",
          "author_login": "actions-user",
          "committed_at": "2026-06-01T23:09:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b977bdaa8f25365eb6027d7ffe5193461623b8ea",
          "body": null,
          "is_bot": false,
          "headline": "update gitignore",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-06-01T23:09:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0c5dddad3fefe24caae87f646e3e33a1827b56bd",
          "body": "While live-testing the published models I hit two user-facing breaks in\nthe documented entry points:\n\n- predict_ultimate / predict_forex did float(pred_return[0]) on the\n  model's (1, 1) output. Under numpy 2.x that raises \"only 0-dimensional\n  arrays can be converted to Python scalars\" and every pr\n[…]\nt (ml.predict -> ml.predict_forex)\nin MODEL_CARD.md and QUICK_START.md.\n\nVerified live: predict_ultimate(\"AAPL\") and predict_forex on all three\npair formats now return full multi-day prediction dicts.",
          "is_bot": false,
          "headline": "Fix prediction convenience APIs and forex pair parsing [skip ci]",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-06-01T23:07:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e9a5ab06bba6d9dc219aebfa86c6b55250ad16f7",
          "body": "Silences the \"Node.js 20 is deprecated\" annotations on every run.\n\n- actions/checkout    v4 -> v6\n- actions/setup-python v5 -> v6\n- actions/upload-artifact   v4 -> v7\n- actions/download-artifact v4 -> v8\n\nupload-artifact v7 / download-artifact v8 are the same artifact-backend\ngeneration, so the upload/download pair in daily-model-tests stays\ncompatible.",
          "is_bot": false,
          "headline": "Bump GitHub Actions to Node-24 majors [skip ci]",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-06-01T23:00:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9f4e8e2ee7dd55c1e4bd1ec6bc9fec51f2797e14",
          "body": "test_direction_accuracy_above_chance used a hard >= 50.0 gate on the\nstored validation direction accuracy. Daily price direction is near\nefficient and the chronological holdout is small (n ranged from ~128 to\n4096 across runs), so the metric fluctuates around 50% by pure sampling\nnoise. The gate fai\n[…]\n%. The test now fails only on a\n  statistically real collapse below chance (the old inverted-model bug),\n  not on run-to-run noise. Conservative 45% fallback for older\n  checkpoints lacking the count.",
          "is_bot": false,
          "headline": "Fix flaky model-test: noise-aware direction-accuracy floor [skip ci]",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-06-01T22:53:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9c5fd2713c364ce69ef73a5f0984682d67c6a2cd",
          "body": "Add scripts/sanity_check_model.py and wire it into both training workflows so a collapsed/biased model is deleted instead of pushed. Rewrite the HF model card and README to the real v6 architecture and honest next-day performance; bump version to 6.0.1. [skip ci]",
          "is_bot": false,
          "headline": "v6.0.1: sanity gate to block degenerate models + honest docs",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-05-29T15:07:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d0568829dccdef465fa35ceff73ec24420b24a4b",
          "body": "…al signal",
          "is_bot": false,
          "headline": "v6.0.0: shrink model to 430K params and disable dropout to extract re…",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-05-28T23:04:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "10faab53bffc0f0b46c67fd1da57538235e66d51",
          "body": "… data",
          "is_bot": false,
          "headline": "v5.2.3: raise step budget to 2000 so model trains on clean per-symbol…",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-05-28T16:27:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c3e30633dc7ec434ca55bf5e9c409b631834820e",
          "body": "… [skip ci]\n\nThe model predicted 'down' ~92% of the time and scored below a coin flip\nlive, despite claiming 74% validation accuracy. Root cause was data\ncontamination in the training pipeline:\n\n- unified_ml: windows + indicators + next-day returns were computed over\n  one flat array of ~100 symbols\n[…]\nmixing or\n  split-induced fake returns).\n- train_stocks/forex: load filters interval='1d'.\n- large_torch_model: scaler fit on train split only (was leaking val stats);\n  stock target clip 1.0 -> 0.25.",
          "is_bot": false,
          "headline": "fix: train per-symbol on clean daily data to kill the prediction bias…",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-05-27T20:19:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "848a93b890d8cbba94b1570990aa9994d45e27d9",
          "body": "Per-symbol assertions on 30-sample windows had ~16% false-failure rate.\nSwitch to a single pooled test per asset class (150+ stock samples,\n90+ forex). 40% floor at n=150 is p<0.1% -- catches broken models,\nnot hard market periods. Per-symbol scores still printed in logs.",
          "is_bot": false,
          "headline": "refactor: aggregate directional accuracy across all symbols [skip ci]",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-05-27T17:38:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c4867883170ffc54d59915c284bc521cabf77683",
          "body": null,
          "is_bot": false,
          "headline": "style: auto-format and lint [skip ci]",
          "author_name": "GitHub Action",
          "author_login": "actions-user",
          "committed_at": "2026-05-27T17:33:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "782b49237f8159c88aa82f13c0e468fa8919b663",
          "body": "0.45 still flags normal market noise. At n=90 samples, 0.40 is ~2 sigma\nbelow chance — it catches genuinely degenerate outputs without tripping\non models that are simply struggling in hard-to-predict markets.",
          "is_bot": false,
          "headline": "fix: lower live directional accuracy floor to 0.40",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-05-27T17:33:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3e18e26f4f3ae003ab3704029c946defeb62d8b2",
          "body": null,
          "is_bot": false,
          "headline": "style: auto-format and lint [skip ci]",
          "author_name": "GitHub Action",
          "author_login": "actions-user",
          "committed_at": "2026-05-27T17:28:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "30c448b7a88d4516aea95b9aa4dfa5f3d2610a61",
          "body": "n=40 samples has too much variance — a model at true 50% accuracy\nfails the old threshold ~30% of the time by chance. 90 samples halves\nthat false-failure rate. Floor of 0.45 still catches degenerate outputs.",
          "is_bot": false,
          "headline": "fix: raise n_steps to 90 and lower live accuracy floor to 0.45",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-05-27T17:27:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4831fd46e5a89aa5acf5ba2d0f038013742a3e98",
          "body": null,
          "is_bot": false,
          "headline": "fix: add accelerate to denorm + directional signal jobs",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-05-27T17:23:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ade84de7c4c7fbc9da58d765aaf89f0fd37cbf05",
          "body": null,
          "is_bot": false,
          "headline": "style: auto-format and lint [skip ci]",
          "author_name": "GitHub Action",
          "author_login": "actions-user",
          "committed_at": "2026-05-27T17:20:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d5a0c20f89a322b7fa3b6cbf58915832e8ef1ab0",
          "body": "- Add psutil to denorm + directional signal jobs (large_torch_model imports it)\n- Soften training_history test — require one finite val_loss, not all\n- Auto-create missing GH labels before opening failure issues",
          "is_bot": false,
          "headline": "fix: patch daily test workflow after first run",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-05-27T17:20:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0a60dfa380735f0ba0988d94de85ebf426417c8c",
          "body": "Runs nightly at 23:00 UTC — checkpoint health, inference, denorm, live signal, and auto issue reporting.",
          "is_bot": false,
          "headline": "ci: add daily end-of-day model test workflow",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-05-27T17:14:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "056b7fb37ebd7bd3e0ddbd6936b56459ed08ca33",
          "body": null,
          "is_bot": false,
          "headline": "Update README.md",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-05-26T17:27:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dc5edb3c1891732f2b2e1ecff85758b33de4df99",
          "body": "…s actually train (v5.2.2)",
          "is_bot": false,
          "headline": "feat: step-based LR schedule + raise step budget to 300 so capped run…",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-05-26T17:22:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1bf0cfbdea86eb4b63f62bb281351316997dbd95",
          "body": null,
          "is_bot": false,
          "headline": "chore: remove stale datasets and deprecated revolutionary_model shim",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-05-26T16:33:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c4d519c6b3d76aff2759fafd618f40062eb880d9",
          "body": "…HF push (v5.2.1)",
          "is_bot": false,
          "headline": "fix: batch validation forward pass to stop CI runner OOM-kill before …",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-05-26T16:25:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4af7b95f73284fa10cb6274bfbf4c63bfc819b3d",
          "body": "…ation script",
          "is_bot": false,
          "headline": "release v5.2.0 — bump version, fix readme badges, drop duplicate migr…",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-05-24T02:59:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b9f473a5b94b20af090aceb9c01c289eb285ef06",
          "body": null,
          "is_bot": false,
          "headline": "style: auto-format and lint [skip ci]",
          "author_name": "GitHub Action",
          "author_login": "actions-user",
          "committed_at": "2026-05-24T02:54:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4681bca4a40b0e657135074ee63deab6d54fd28f",
          "body": "…migration script + rename scripts",
          "is_bot": false,
          "headline": "consolidate to single-job workflow + per-step comet logging + legacy …",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-05-24T02:54:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "782f0d04debb471e32b9edbadeccb8ea828ed3d2",
          "body": null,
          "is_bot": false,
          "headline": "style: auto-format and lint [skip ci]",
          "author_name": "GitHub Action",
          "author_login": "actions-user",
          "committed_at": "2026-05-24T02:44:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "36d744270b979684f94c5621b2600ac70b1e5092",
          "body": "Confirmed via Hugging Face that no pushes have landed since 2026-05-15\neven though training loops have been completing 70 steps cleanly. The\ntraining script gets SIGTERMed within ~25 seconds of 'Step limit\nreached' — before the 4096-sample CPU validation, Comet log_model\n(132 MB upload), final 2048-\n[…]\nantees the artifact step\nfinds a valid checkpoint when we don't.\n\nAlso added flush=True to the step/time limit print lines so CI logs\nshow the message immediately, not on Python's stdout buffer flush.",
          "is_bot": false,
          "headline": "fix(train): safety-save model BEFORE post-train validation/Comet",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-05-24T02:44:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "87455e6539c1e7303dd09b28d9c106143d203bf0",
          "body": "Every stage now shows what it's doing:\n\nSetup job\n- Run Information: run#, trigger, commit, branch, timestamp, CPU/RAM/disk\n- Install Dependencies: show package versions after install\n- Free Disk Space: before + after disk stats\n- Fetch Data: elapsed time\n- Check if Data was Fetched: full per-symbol\n[…]\n timestamp\n- Model Download Status: confirm artifact arrived + size\n- Upload to HF Hub: show file size, repo, start time, elapsed time\n\nCleanup job\n- Pipeline Summary: all four job results at a glance",
          "is_bot": false,
          "headline": "feat(ci): add comprehensive logging to stock + forex workflows",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-05-24T01:27:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "22268304cde779fa89f48c3c669799cd9e71ea01",
          "body": "…ompletion\n\nTraining completes 70 steps in ~31min then needs unbounded time for\npost-training validation, atomic model save, and Comet log_model upload\n(~130 MB .pt to Comet). The 75-min step timeout was killing the process\nafter training finished but before the model was saved, causing:\n  - artifac\n[…]\nted\n\nFix:\n- Remove timeout-minutes from Train Model step (both forex + stocks)\n- Raise job timeout 95 -> 360 min (GitHub public-repo maximum)\n- Only --max-steps 70 governs when the training loop exits",
          "is_bot": false,
          "headline": "fix(ci): remove step timeout -- let 70 steps + post-training run to c…",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-05-24T01:20:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "75549e5598aedf1495c53f7ef91703cb051fa360",
          "body": null,
          "is_bot": false,
          "headline": "style: auto-format and lint [skip ci]",
          "author_name": "GitHub Action",
          "author_login": "actions-user",
          "committed_at": "2026-05-22T17:28:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "423bd8b072e49cc648f9795be740cf30351bff00",
          "body": "…imit)\n\n- Remove --max-time from both training scripts (was firing at step 47,\n  before 70 steps could complete, causing the post-training validation\n  to run past the step timeout and get canceled)\n- Add --max-steps 70 to both workflows — training stops cleanly at\n  exactly step 70 then saves + pus\n[…]\n max_time_minutes=None (unlimited) in both training functions\n- Expand Train Model step timeout 55→75min, job timeout 75→95min to\n  accommodate 70 steps (~47min) + validation/save/Comet flush (~15min)",
          "is_bot": false,
          "headline": "switch CI from time-based to step-based training (70 steps, no time l…",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-05-22T17:27:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2ba096a6167312a3615d0304f41edce7caeaf5ca",
          "body": "…+ push HF on partial runs\n\nThree coupled changes so a training run that hits the time budget still\nsaves, gets logged, and ends up on Hugging Face:\n\n1. Step timeout 38min -> 55min, script --max-time 35min -> 32min.\n   The script stopped training at 33min and then ran final validation\n   (forward pa\n[…]\ndel.outcome ==\n   'success' + hashFiles). With the atomic _save_model + SIGTERM handler\n   already in place, a partial-but-improved checkpoint reaches HF on\n   timeout runs instead of being discarded.",
          "is_bot": false,
          "headline": "fix(ci): stop exit-143 on training cleanup + register model in Comet …",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-05-22T16:04:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0cbe1ab8e348ccfe8412b7aec29ce16fb4bd43b9",
          "body": null,
          "is_bot": false,
          "headline": "style: auto-format and lint [skip ci]",
          "author_name": "GitHub Action",
          "author_login": "actions-user",
          "committed_at": "2026-05-22T13:39:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "06d11d1c9562170d3a07115fec755bc714c0bbad",
          "body": "One-shot maintenance script: cancels all in-progress runs and deletes\nevery run for non-lint workflows in MeridianAlgo/AraAI, so the Actions\ntab shows a clean slate for the v5 release (lint runs are preserved).\n\n- GitHub REST API directly (no gh CLI dependency)\n- --dry-run flag to preview cancel/delete plan\n- Cancels active runs, waits, then deletes; gentle pacing between calls\n- Token from $GITHUB_TOKEN / $GH_TOKEN or --token; needs repo+workflow",
          "is_bot": false,
          "headline": "chore: add scripts/clean_workflow_runs.py for v5 history wipe",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-05-22T13:39:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "22bbeec3acf0f5ef58980a1b07cb282996d9def3",
          "body": null,
          "is_bot": false,
          "headline": "style: auto-format and lint [skip ci]",
          "author_name": "GitHub Action",
          "author_login": "actions-user",
          "committed_at": "2026-05-22T13:08:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "197873c7d1bbefadf3e57e0c4cf97f95dcdf7cbb",
          "body": "Runs were dying at the 50-min job timeout (exit 143 / \"operation was\ncanceled\") because the math under-counted setup time: ~17min for\ninstall + artifact download + HF model fetch, then 33min of training,\nthen validation+save pushed total past 50min.\n\n- meridian-stocks.yml / meridian-forex.yml: timeo\n[…]\nlocal variable 'ema_decay' where it is not associated\nwith a value\": the Comet log_parameters block referenced ema_decay\nbefore it was defined further down. Moved the assignment above the\nComet block.",
          "is_bot": false,
          "headline": "fix(ci): raise training job timeout to 75min and fix ema_decay NameError",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-05-22T13:07:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "89f8e421e505d1f28bef647c3d09ddacd2d9ce48",
          "body": "…y migration\n\nFix recurring \"operation was canceled\" CI failure at ~44min by making the\ntraining pipeline signal-safe and tightening the time budget:\n\n- SIGTERM/SIGINT handler in AdvancedMLSystem.train sets a shutdown flag\n  the step loop polls; final save always runs before exit\n- _save_model is no\n[…]\n,\n  comet_ai_token) via load_dotenv at script start\n- MODEL_CARD refreshed: new layout, hardening notes, Comet links, v5.1.0 metadata\n\nVersion bumps: pyproject.toml + meridianalgo/__init__.py -> 5.1.0",
          "is_bot": false,
          "headline": "v5.1.0: harden CI training pipeline + full Comet telemetry + HF legac…",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-05-21T16:58:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5546666c0f061e66b8dc48c1a731b94ed8a3fc15",
          "body": null,
          "is_bot": false,
          "headline": "fix: extend forex and stock training job timeouts to 120 minutes",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-05-17T23:38:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5e3fa5e48d4cc154b7ab2e8eea3a31ef78cbe5e7",
          "body": null,
          "is_bot": false,
          "headline": "style: auto-format and lint [skip ci]",
          "author_name": "GitHub Action",
          "author_login": "actions-user",
          "committed_at": "2026-05-15T19:08:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f47595c607dd8547941d795814e0f134f4cf3d4a",
          "body": "The alias was a leftover compat shim in the try-block; MeridianModel is\nthe only name used in this file. Also fixes ruff I001 import sort in\nrevolutionary_model.py.",
          "is_bot": false,
          "headline": "fix: remove unused RevolutionaryFinancialModel import alias (ruff F401)",
          "author_name": "Ishaan",
          "author_login": "ishaanman7898",
          "committed_at": "2026-05-15T19:08:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d3e258aececdf98b55fa5da04d5302713ac6681d",
          "body": "- CHANGELOG.md: full version history from v1.0.0-Beta to v5.0.0, built\n  from all git tags and GitHub releases\n- QUICK_START.md: rewritten with accurate v5.0 specs, correct training\n  commands, troubleshooting for known pre-v5 bugs\n- MODEL_CARD.md: updated to v5.0 — MeridianModel, checkpoint format\n\n[…]\nth, class weighting,\n  logit scaling rationale, direction metrics table\n- INDEX.md (new): single-page documentation index with source layout\n- LICENSE: fix year (2025→2026) and placeholder GitHub URLs",
          "is_bot": false,
          "headline": "docs: comprehensive v5.0 documentation overhaul",
          "author_name": "Ishaan",
          "author_login": "ishaanman7898",
          "committed_at": "2026-05-15T19:05:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "10c85542c70ce70efc2b27a2a455658590ccb489",
          "body": "Documents all 7 training bugs fixed in v5.0, the architecture rename\nfrom RevolutionaryFinancialModel to MeridianModel, hourly CI schedule,\nCPU vs GPU model specs, checkpoint format reference, and updated project\nstructure.",
          "is_bot": false,
          "headline": "docs: update README for MeridianModel v5.0",
          "author_name": "Ishaan",
          "author_login": "ishaanman7898",
          "committed_at": "2026-05-15T18:55:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "404e0ed76343122c86fa1545ea5e31f0dff52683",
          "body": "Architecture rename:\n- meridian_model.py: new canonical file — classes MeridianModel, MeridianBlock\n- revolutionary_model.py: backward-compat shim (3-line re-export)\n- Checkpoint string: \"MeridianModel-2026\" (v5.0); _load_model accepts both old\n  \"RevolutionaryFinancialModel-2026\" and new string so \n[…]\nremove hardcoded dim=384/num_heads=6/version=\"4.1\"\n  so new models (dim=256/4/5.0) and old HF models both pass\n- Accepts architecture strings \"MeridianModel-2026\" or \"RevolutionaryFinancialModel-2026\"",
          "is_bot": false,
          "headline": "feat: rename to MeridianModel v5.0, hourly CI, LR warmup",
          "author_name": "Ishaan",
          "author_login": "ishaanman7898",
          "committed_at": "2026-05-15T18:26:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ff044c6313eb36169bce3ff2568f25109be20bdd",
          "body": "Without this, new models saved with mamba_state_dim=4 would build the wrong\ngraph shape when the directional-accuracy tests reconstruct the model for\ninference, causing a state-dict load mismatch.  Defaults to 16 so existing\nHuggingFace checkpoints (which predate this field) continue to load correctly.",
          "is_bot": false,
          "headline": "fix: pass mamba_state_dim to RevolutionaryFinancialModel in signal tests",
          "author_name": "Ishaan",
          "author_login": "ishaanman7898",
          "committed_at": "2026-05-15T16:36:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3292be5f7703444725af59657309b0b16b658290",
          "body": null,
          "is_bot": false,
          "headline": "style: auto-format and lint [skip ci]",
          "author_name": "GitHub Action",
          "author_login": "actions-user",
          "committed_at": "2026-05-15T16:35:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4902160f30b330654ee6467eab45a20b044168cf",
          "body": "Architecture changes (speed):\n- RevolutionaryFinancialModel: thread mamba_state_dim through to MambaBlock\n  so state_dim is configurable without rebuilding the graph\n- New CPU training config: dim=256, num_heads=4, use_mamba=False, mamba_state_dim=4\n  (~11M params, ~27 min/epoch on 60K samples vs 23\n[…]\n 180s time-limit buffer (from 120s) to guarantee validation always fits\n- Checkpoint: save actual use_mamba from model (was hardcoded True)\n  and persist mamba_state_dim for faithful round-trip reload",
          "is_bot": false,
          "headline": "perf+fix: CPU-optimised architecture + 7 training correctness fixes",
          "author_name": "Ishaan",
          "author_login": "ishaanman7898",
          "committed_at": "2026-05-15T16:32:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a5eeb6b082cc8b60b05d7fac485b684f786725e5",
          "body": "* fix: clip target return outliers, remove min-max remap, add model test suite\n\nThe trained checkpoints on HuggingFace shipped with metadata showing\nbest_val_loss=Infinity across all 50 training runs and direction_accuracy=0\nbecause the target distribution was poisoned by single bad price ticks\n(sto\n[…]\nt CI training run uses the fixed code path.\n\n* style: auto-format and lint [skip ci]\n\n---------\n\nCo-authored-by: MeridianAlgo <meridianalgo@gmail.com>\nCo-authored-by: GitHub Action <action@github.com>",
          "is_bot": false,
          "headline": "fix: clip target return outliers; add rigorous model test suite (#154)",
          "author_name": "Ishaan M.",
          "author_login": "ishaanman7898",
          "committed_at": "2026-05-01T13:05:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7f973fae4e9de379160881a2edc07f1a9a6ace68",
          "body": null,
          "is_bot": false,
          "headline": "style: auto-format and lint [skip ci]",
          "author_name": "GitHub Action",
          "author_login": "actions-user",
          "committed_at": "2026-04-07T23:57:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ff417e840bde00ec372eeb959e66f9de549c1730",
          "body": null,
          "is_bot": false,
          "headline": "fix: remove unused mem_model_mb variable (ruff F841)",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-04-07T23:56:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "22e2a896a86590de24d13632091edce221e5c9ba",
          "body": "X was deleted (line 557) to free numpy memory but still referenced in\n_update_metadata. Save n_samples before del and pass that instead.\n\nAlso update MODEL_CARD.md with correct v4.1 specs (45M params, not 388M).",
          "is_bot": false,
          "headline": "fix: resolve UnboundLocalError on X after del in training loop",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-04-07T23:54:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2caf5092a82a9433bfcddb8814bcdf0a63fef74b",
          "body": "- --max-time 45 (45min training from script start)\n- timeout-minutes: 60 (15min buffer for CI overhead)\n- cancel-in-progress: false (queued runs wait, never kill running ones)\n- Stocks every 6h at :00, Forex every 6h at :30",
          "is_bot": false,
          "headline": "fix: simple 45min training / 60min timeout, no cancel-in-progress",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-04-07T01:28:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "716fcdd880ea5a7d9e560f1a7a19e977eaf768fd",
          "body": "- float32 everywhere (was float64) — halves dataset memory\n- Delete numpy arrays after torch conversion (del X, y)\n- In-place normalization (X_tensor.sub_().div_()) — no copy\n- Cap dataset at 300K samples (~1.5GB) with warning\n- Free feature_matrix after building X windows\n- Log memory usage for diagnostics\n\nPeak memory estimate with 50 stocks:\n  Before: ~10.5GB (float64 + copies) → OOM\n  After:  ~3.5GB (float32 + in-place) → fits in 7GB",
          "is_bot": false,
          "headline": "fix: fit training within 7GB GitHub Actions RAM limit",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-04-07T01:25:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "931ff50b6eb24a9118b312dc54901f60e17ec004",
          "body": null,
          "is_bot": false,
          "headline": "style: auto-format and lint [skip ci]",
          "author_name": "GitHub Action",
          "author_login": "actions-user",
          "committed_at": "2026-04-07T01:19:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "35fef6b1c3b01d9fd73d9cd95f2564f9b1a2a2f1",
          "body": "Workflows:\n- timeout-minutes: 350, --max-time 320 (5h20m training budget)\n- Concurrency groups: new scheduled runs cancel stale in-progress ones\n- Staggered crons: stocks at 0/6/12/18h, forex at 3/9/15/21h\n- Workflow dispatch now accepts epochs and max_time inputs\n- Smart issue handling: no duplicat\n[…]\ning time\n- _update_metadata() extracted for checkpoint + final save reuse\n- Training history capped at 50 entries to prevent unbounded growth\n- Patience increased to 20 epochs for longer training runs",
          "is_bot": false,
          "headline": "feat: robust training pipeline with smart scheduling and issue handling",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-04-07T01:19:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "eb9cf3c7dbcb3b44a53c8c6e2d1935a03b52d314",
          "body": "- timeout-minutes: 60 was too tight — CI overhead (checkout, install,\n  download model) takes ~15min before script starts, leaving no room\n- Now: timeout-minutes: 340, --max-time 320 (5h20m training budget)\n- Cron reduced to every 6h to match longer training runs\n- Final validation capped at 2048 samples and skipped if time is tight\n- global_start_time ensures Python never overshoots its own budget",
          "is_bot": false,
          "headline": "fix: increase job timeout to 340min, train for 5h+ per run",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-04-07T01:12:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8784faabd00deeb92f8860dedb910677b557407b",
          "body": "The MeridianAlgo account token didn't have write access.\nSwitched all model download/upload references to meridianal/ARA.AI\nwhere the write token works.",
          "is_bot": false,
          "headline": "fix: switch HuggingFace repo to meridianal/ARA.AI",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-04-06T13:30:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "03a1d291ad1afca7d3084bd6033212697c83c73a",
          "body": null,
          "is_bot": false,
          "headline": "style: auto-format and lint [skip ci]",
          "author_name": "GitHub Action",
          "author_login": "actions-user",
          "committed_at": "2026-04-05T23:30:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0a688b926a0414994d43c17335f1d78842af42d3",
          "body": "step_limit_reached flag is also set by time-based mid-epoch stops,\nbut the print statement assumed max_steps was always set — caused\nTypeError dividing by None.",
          "is_bot": false,
          "headline": "fix: prevent crash when time limit stops training before step limit",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-04-05T23:30:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "93b6bb36b277283350f65fe7a91ed90cc5e21e29",
          "body": null,
          "is_bot": false,
          "headline": "style: auto-format and lint [skip ci]",
          "author_name": "GitHub Action",
          "author_login": "actions-user",
          "committed_at": "2026-04-05T21:07:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "955a786741c9f3c10ceb34507ae53b89d9f9f34f",
          "body": null,
          "is_bot": false,
          "headline": "Test entire workflow push",
          "author_name": "MeridianAlgo",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-04-05T21:06:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bcd654fb8acec75f9fc1d4f88ab8189a4d02672c",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' of https://github.com/MeridianAlgo/AraAI",
          "author_name": "MeridianAlgo Team",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-03-24T21:07:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2114ba749771ac9e07bad836aaded9405d016238",
          "body": "…-loop time checks\n\n- Remove --max-steps override that was ignoring --max-time\n- Add time check inside step loop so --max-time stops training mid-epoch\n- Set --max-time 50 for both stock and forex models (1 hour cycles)\n- Increase job timeout-minutes to 60 with 10min buffer\n- Stagger workflows: stocks at :00, forex at :30 of every 2 hours\n- Update cache version to v3",
          "is_bot": false,
          "headline": "fix: redesigned training workflows with reliable time limits and step…",
          "author_name": "MeridianAlgo Team",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-03-24T21:07:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "01ae493cca9de79dd54732ead27baf37ad032688",
          "body": null,
          "is_bot": false,
          "headline": "style: auto-format and lint [skip ci]",
          "author_name": "GitHub Action",
          "author_login": "actions-user",
          "committed_at": "2026-03-23T23:55:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "46d91f7692b065b2e1e9c94d8cb338cd3ce32683",
          "body": "…bol limit\n\n- Initialize direction_metrics before training loop so step-limit early\n  exit doesn't cause UnboundLocalError when saving metadata\n- Reduce stock data fetch limit from 150 to 50 symbols to prevent data\n  loading from exceeding the 58-minute CI job timeout before training starts\n- Match stocks workflow structure to forex: remove extra job timeouts,\n  drop continue-on-error and warning-swallowing || echo on train step,\n  remove unused actions: read permission",
          "is_bot": false,
          "headline": "fix: resolve direction_metrics UnboundLocalError and reduce stock sym…",
          "author_name": "MeridianAlgo Team",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-03-23T23:55:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d046fbf073b6a5a58370fa396f6d52b06df7d0ae",
          "body": "… in CI\n\nLocal benchmark: 10 steps = 138.3s (13.83s/step).\nCI estimate with 2x factor: ~27.7s/step.\n75 steps * 27.7s = 34.6min training + 16min overhead = ~51min, safely\nunder 58min timeout. --max-time 42 kept as fallback safety net.",
          "is_bot": false,
          "headline": "feat: add --max-steps, benchmark 10 steps at 13.8s/step, set 75 steps…",
          "author_name": "MeridianAlgo Team",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-03-23T01:49:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "17ad6f9cedaf982d08f255fef8ecc8bc07a20879",
          "body": "Prevents 1h5m timeout cancellations by budgeting ~16min for setup\noverhead (checkout, pip install, model download) and 42min for training.",
          "is_bot": false,
          "headline": "ci: reduce train job timeout to 58min and max-time to 42min",
          "author_name": "MeridianAlgo Team",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-03-23T01:40:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "90f80caa49cea58a4b2bb80f3e0e12e4a08aeb82",
          "body": null,
          "is_bot": false,
          "headline": "style: auto-format and lint [skip ci]",
          "author_name": "GitHub Action",
          "author_login": "actions-user",
          "committed_at": "2026-03-21T03:33:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ecb48e994384b08d6c9d1debce2502a0a0a65921",
          "body": null,
          "is_bot": false,
          "headline": "fix: resolve lint error and optimize training workflows to 1 hour",
          "author_name": "MeridianAlgo Team",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-03-21T03:33:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bd86b8cf76f9cda457dfb4b90ca53e00e46582a9",
          "body": null,
          "is_bot": false,
          "headline": "Update Timelimit",
          "author_name": "MeridianAlgo Team",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-03-19T20:27:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c8a14e7bac681a20190022d34aa384f891e7c3e5",
          "body": "…imeout\n\nReplace --max-time 25 with --epochs 3 --max-time 0 in both forex and stock\nworkflows. Training now stops after 3 completed epochs rather than a 25-minute\ntimer. Also quote FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 as a string to fix\nNode.js 20 deprecation warnings.",
          "is_bot": false,
          "headline": "fix: Switch training from time-based to 3-epoch limit to prevent CI t…",
          "author_name": "Ishaan",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-03-19T13:04:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ec89b4eaba174655e50883a6b0a21d9a96c18ab5",
          "body": "Each epoch takes ~4min on CPU. With 10min setup overhead, the previous\n35min training limit pushed jobs past the 45min timeout. Reduced to 25min\n(~6 epochs) which is sufficient with early stopping. Bumped job timeout\nto 50min for safety buffer. Also added FORCE_JAVASCRIPT_ACTIONS_TO_NODE24\nto silence Node.js 20 deprecation warnings across all workflows.",
          "is_bot": false,
          "headline": "fix: Reduce training time to 25min to prevent CI timeout",
          "author_name": "MeridianAlgo Team",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-03-18T20:11:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f6ea10fc35205463acf73ada2025314c7139a82b",
          "body": "Previously training was cancelled by GitHub Actions timeout because we\ndidn't know how many epochs would fit. Now training runs on a wall-clock\nbudget (35 min default) and stops automatically before the 45-min job\ntimeout kills it.\n\n- large_torch_model.py: Added max_time_seconds param to train()\n  -\n[…]\nochs default raised to 999 (time limit controls now, not epoch count)\n- Workflows: removed --epochs arg, use --max-time 35 instead\n- unified_ml.py: thread max_time_seconds through to ml_system.train()",
          "is_bot": false,
          "headline": "feat: Time-based training - train for 35min then gracefully save",
          "author_name": "MeridianAlgo Team",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-03-18T01:16:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "58d9b164aaabd95460e48436b9db52a078b09bdb",
          "body": "…MA, grad accum\n\nData:\n- Fetch 3 timeframes per symbol (max daily, 2yr hourly, 5yr weekly) — 3x more data\n- All 44 feature slots filled with real indicators (RSI variants, Stochastic,\n  Williams %R, CCI, ADX, Keltner Channels, OBV, Z-score, etc.) — no zero padding\n\nTraining:\n- Gradient accumulation \n[…]\nm restarts (restarts every 1/3 of training)\n- Higher weight decay (0.02) for regularization\n- Early stopping based on EMA validation loss\n\nSetup timeout increased to 30min for multi-timeframe fetching",
          "is_bot": false,
          "headline": "feat: Better training regimen - multi-timeframe data, augmentation, E…",
          "author_name": "MeridianAlgo Team",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-03-17T23:37:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "257d452265bf2c1db7305e8f81ebb328cb24935f",
          "body": null,
          "is_bot": false,
          "headline": "style: auto-format and lint [skip ci]",
          "author_name": "GitHub Action",
          "author_login": "actions-user",
          "committed_at": "2026-03-17T23:29:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c1d36fecf0833eed1dabd605fcf2abdffaaa4815",
          "body": "280M params + 20 epochs was too heavy for GitHub Actions free CPU runners,\ncausing \"operation was canceled\" after 30 minutes. Scaled down to:\n- dim 384, 6 layers, 6 heads, 4 experts (~45M params)\n- 10 epochs default (from 20)\n- 45 min timeout (from 120-180)\n\nSame architecture (Mamba-2, GQA, MoE, SwiGLU) just sized for CI/CD.",
          "is_bot": false,
          "headline": "fix: Reduce model to ~45M params and 10 epochs for GitHub Actions CPU",
          "author_name": "MeridianAlgo Team",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-03-17T23:28:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c1babc05ce796652b8cef8f981286fc9901106c8",
          "body": null,
          "is_bot": false,
          "headline": "style: auto-format and lint [skip ci]",
          "author_name": "GitHub Action",
          "author_login": "actions-user",
          "committed_at": "2026-03-17T16:17:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "950e79eef1f58860aecaf8f203b6da3e5a674ab4",
          "body": "…flows\n\n- Model params: dim 512→768, layers 6→8, heads 8→12, experts 6→8, pred_heads 6→8\n- Complete README rewrite reflecting v4.1 architecture and real-time prediction capability\n- Remove environment blocks from workflow files (no more GitHub deployment entries)\n- Workflows simplified: 20 epochs default, train on all data, 2-hour cycle",
          "is_bot": false,
          "headline": "v4.1.0: Increase model to ~280M params, rewrite README, clean up work…",
          "author_name": "MeridianAlgo Team",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-03-17T16:16:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "317232f78d8da052b64c180f2461632caf435bf9",
          "body": null,
          "is_bot": false,
          "headline": "style: auto-format and lint [skip ci]",
          "author_name": "GitHub Action",
          "author_login": "actions-user",
          "committed_at": "2026-03-17T16:10:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0fd48c8c4991799928004c49589b7199ce42dc32",
          "body": "Model architecture upgrades:\n- QK-Norm on attention (Gemma 2 style) for stable training\n- Proper Mamba-2 selective scan with real state-space computation\n  (was using simplified x*sigmoid(C) which throws away SSM dynamics)\n- Stochastic depth (drop path) regularization with linearly increasing rates\n\n[…]\ny (was CosineAnnealingWarmRestarts)\n- Old models (pre-v4.1) are automatically skipped - trains fresh\n- Version gating in model loader ensures clean break from broken old weights\n\nVersion bump to 4.1.0",
          "is_bot": false,
          "headline": "v4.1.0: New model architecture, train fresh, push new models to HF",
          "author_name": "MeridianAlgo Team",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-03-17T16:10:31Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "38ea8140cc30284dd2bebb09533fc82767dfe7bb",
          "body": "…nction, more epochs\n\nMajor training fixes:\n- Fix BalancedDirectionLoss: scale predictions to proper logit range instead of\n  using raw near-zero returns as BCE logits (was producing ~log(2) constant loss)\n- Switch from MSE to Huber loss for regression (robust to financial outliers)\n- Rebalance loss\n[…]\n6x/day\n\nRepo cleanup:\n- Delete unused utility scripts from root and scripts/\n- Remove dead code (duplicate dicts) in forex_ml.py\n- Update .gitignore with comprehensive patterns\n- Bump version to 4.0.0",
          "is_bot": false,
          "headline": "v4.0.0: Fix training pipeline - real accuracy metrics, proper loss fu…",
          "author_name": "MeridianAlgo Team",
          "author_login": "MeridianAlgo-Developer",
          "committed_at": "2026-03-17T16:03:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a9c6d70ac42d03e838153a3b82fa9b194dbe0135",
          "body": null,
          "is_bot": true,
          "headline": "docs: auto-update validation accuracy [skip ci]",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-03-15T01:08:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5a2dd1eb887a8e41d13f0c368af9123e751ffa39",
          "body": null,
          "is_bot": true,
          "headline": "docs: auto-update validation accuracy [skip ci]",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-03-08T01:01:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "24ddde855e41b8febaa9916baf17f812817a66cf",
          "body": null,
          "is_bot": true,
          "headline": "docs: auto-update validation accuracy [skip ci]",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-03-01T01:07:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "668c3d99146b630fd00970a3266ad30b9cc60a97",
          "body": "…rames - fully randomized configuration",
          "is_bot": false,
          "headline": "Update stocks workflow to train on 25 random stocks with random timef…",
          "author_name": "git-bot",
          "author_login": null,
          "committed_at": "2026-02-28T22:55:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "21cc78f09f3c445cb788440396a7949301b39f37",
          "body": "…rain for 3 epochs (default) and 4 epochs (fallback) instead of 6 and 8",
          "is_bot": false,
          "headline": "Reduce GitHub Actions workflow epochs by half: stocks and forex now t…",
          "author_name": "git-bot",
          "author_login": null,
          "committed_at": "2026-02-28T22:54:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9e16e68cf231f3c957fd91534d74a5e6898ef58c",
          "body": "…hs instead of 10",
          "is_bot": false,
          "headline": "Reduce training epochs by half: stocks and forex now train for 5 epoc…",
          "author_name": "git-bot",
          "author_login": null,
          "committed_at": "2026-02-28T22:53:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fa170e24f8582b8ffbd12c785265cf0a8dae8778",
          "body": "… Anything in your workflow that terminates the runner process, starves it for CPU/Memory, or blocks its network access can cause this error.'",
          "is_bot": false,
          "headline": "Fix this error 'The hosted runner lost communication with the server.…",
          "author_name": "git-bot",
          "author_login": null,
          "committed_at": "2026-02-28T18:35:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9247ec4890dedb2124364024b0fbb963b16d2b14",
          "body": null,
          "is_bot": false,
          "headline": "style: auto-format and lint [skip ci]",
          "author_name": "GitHub Action",
          "author_login": "actions-user",
          "committed_at": "2026-02-28T16:11:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fcd3f8b7c3c3fe9201d418992e4f925d68809798",
          "body": null,
          "is_bot": false,
          "headline": "fix(workflows): handle no data case and update HF repo to ARA.AI",
          "author_name": "git-bot",
          "author_login": null,
          "committed_at": "2026-02-28T16:10:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "76312fb6ca964386346aaae6133258abb8951cc8",
          "body": null,
          "is_bot": false,
          "headline": "docs: fix README badges and MODEL_CARD repository references",
          "author_name": "git-bot",
          "author_login": null,
          "committed_at": "2026-02-28T03:27:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 3,
      "commits_last_year": 178,
      "latest_release_at": "2026-07-21T18:20:36Z",
      "latest_release_tag": "v1.2.1",
      "releases_from_tags": false,
      "days_since_last_push": 12,
      "active_weeks_last_year": 23,
      "days_since_latest_release": 12,
      "mean_days_between_releases": 23.5
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "readme_badges": {
        "hosts": [
          "github.com",
          "shields.io"
        ],
        "total": 7,
        "header": 0,
        "collected": true,
        "has_inspect_badge": false
      },
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 37,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": []
    },
    "popularity": {
      "forks": 4,
      "stars": 15,
      "watchers": 0,
      "fork_history": {
        "days": [
          {
            "date": "2025-09-22",
            "count": 1
          },
          {
            "date": "2025-10-28",
            "count": 1
          },
          {
            "date": "2026-05-03",
            "count": 1
          },
          {
            "date": "2026-06-08",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 4,
        "total_forks": 4
      },
      "star_history": null,
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 70050,
      "source_files_sampled": 25,
      "oversized_source_files": 1,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "pyproject.toml",
        "requirements.txt"
      ],
      "advisories": {
        "error": null,
        "scope": null,
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "pypi"
      ],
      "dependencies": [],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 4,
        "open_issues": 0,
        "closed_ratio": 1,
        "closed_issues": 172,
        "closed_unmerged_prs": 2
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "MeridianAlgo-Developer",
          "commits": 135,
          "avatar_url": "https://avatars.githubusercontent.com/u/210269802?v=4"
        },
        {
          "type": "User",
          "login": "actions-user",
          "commits": 24,
          "avatar_url": "https://avatars.githubusercontent.com/u/65916846?v=4"
        },
        {
          "type": "User",
          "login": "rhoggs-bot-test-account",
          "commits": 9,
          "avatar_url": "https://avatars.githubusercontent.com/u/22551806?v=4"
        },
        {
          "type": "User",
          "login": "ishaanman7898",
          "commits": 7,
          "avatar_url": "https://avatars.githubusercontent.com/u/73006607?v=4"
        }
      ],
      "contributors_sampled": 4,
      "top_contributor_share": 0.771
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "daily-model-tests.yml",
        "forex.yml",
        "lint.yml",
        "stocks.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 1,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": null,
            "reason": "no pull request found",
            "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/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 6,
            "reason": "project has 2 contributing companies or organizations -- score normalized to 6",
            "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": 0,
            "reason": "no 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": 9,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not 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": 0,
            "reason": "no SAST tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 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": "36 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "f25bff3817425faa5927524aa597858a989198b4",
        "ran_at": "2026-08-02T21:14:33Z",
        "aggregate_score": 3.3,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "recent_prs": {
        "merged_7d": 0,
        "decided_7d": 0,
        "merged_30d": 0,
        "authors_30d": 0,
        "decided_30d": 0,
        "sample_size": 6,
        "window_days": 30,
        "sample_exhausted": false,
        "authors_probed_30d": 0,
        "newcomer_merged_30d": 0,
        "bot_prs_excluded_30d": 0,
        "newcomer_authors_30d": 0,
        "newcomer_decided_30d": 0
      },
      "ci_last_run_at": "2026-08-02T21:01:13Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-05-01T13:05:48Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/MeridianAlgo/AraAI",
    "host": "github.com",
    "name": "AraAI",
    "owner": "MeridianAlgo"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": "The weighted overall 55 is calibrated to 57 on the published index scale (record calibration 2026-08-02).",
      "notes": [
        {
          "code": "overall_calibration",
          "params": {
            "raw": 55,
            "calibrated": 57,
            "calibration": "2026-08-02"
          }
        }
      ],
      "value": 57,
      "inputs": {
        "security": 33,
        "vitality": 84,
        "community": 33,
        "governance": 47,
        "calibration": "2026-08-02",
        "engineering": 76,
        "ai_readiness": 34,
        "weighted_overall_raw": 55
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 84,
        "weight": 0.21,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 73,
            "inputs": {
              "commits_last_year": 178,
              "human_commit_share": 0.97,
              "days_since_last_push": 12,
              "active_weeks_last_year": 23
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 12 days ago",
                "points": 28.8,
                "status": "partial",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 12
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "23/52 weeks with commits",
                "points": 15.9,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 23
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "178 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 178
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "exceptional",
            "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": 100,
            "inputs": {
              "releases_count": 3,
              "latest_release_tag": "v1.2.1",
              "releases_from_tags": false,
              "days_since_latest_release": 12,
              "mean_days_between_releases": 23.5
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "3 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 12 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 12
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~23.5 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 23.5
                    }
                  }
                ],
                "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": 12,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 12 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 12
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 33,
        "weight": 0.17,
        "metrics": [
          {
            "key": "popularity",
            "band": "at_risk",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 23,
            "inputs": {
              "forks": 4,
              "stars": 15,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "15 stars",
                "points": 18.6,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 15
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "4 forks",
                "points": 4,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "weak",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 44,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "readme_badges": 7,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "readme_badge_services": [
                "github.com",
                "shields.io"
              ],
              "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": "license file present, not a recognized license",
                "points": 16.9,
                "status": "partial",
                "details": [
                  {
                    "code": "license_custom",
                    "params": {}
                  }
                ],
                "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": "weak",
        "name": "Sustainability & Governance",
        "value": 47,
        "weight": 0.23,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 26,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 4,
              "top_contributor_share": 0.771
            },
            "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 77% of commits",
                "points": 5.2,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 77
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "4 contributors",
                "points": 5.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 2 contributing companies or organizations -- score normalized to 6",
                "points": 6,
                "status": "partial",
                "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": 71,
            "inputs": {
              "merged_prs": 4,
              "open_issues": 0,
              "closed_issues": 172,
              "prs_merged_7d": 0,
              "prs_decided_7d": 0,
              "prs_merged_30d": 0,
              "prs_decided_30d": 0,
              "issue_closed_ratio": 1,
              "closed_unmerged_prs": 2,
              "first_time_authors_30d": 0,
              "first_time_prs_merged_30d": 0,
              "first_time_prs_decided_30d": 0
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "100% of issues closed",
                "points": 42,
                "status": "met",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 42
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "4/6 decided PRs merged",
                "points": 20,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 4,
                      "decided": 6
                    }
                  }
                ],
                "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/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "weak",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 47,
            "inputs": {
              "followers": 7,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "MeridianAlgo",
              "public_repos": 19,
              "account_age_days": 179
            },
            "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": "7 followers of MeridianAlgo",
                "points": 6.5,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 7,
                      "login": "MeridianAlgo"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "19 public repos, account ~0 yr old",
                "points": 10.5,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 19
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 0
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 76,
        "weight": 0.19,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 60,
            "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": "4 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "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": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "exceptional",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "topics": [
                "meridianalgo",
                "forecasting-models",
                "forex-prediction",
                "hugging-face",
                "stock-prediction",
                "open-source",
                "training",
                "training-project",
                "stock-analysis",
                "stock-market",
                "stock-price-prediction",
                "stocks"
              ],
              "has_wiki": true,
              "homepage": "https://huggingface.co/meridianal/ARA.AI",
              "has_readme": true,
              "has_docs_dir": true,
              "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": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://huggingface.co/meridianal/ARA.AI",
                "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": "12 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 12
                    }
                  }
                ],
                "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": "at_risk",
        "name": "Security",
        "value": 33,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests, Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests",
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 33,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 15,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 3,
              "scorecard_aggregate": 3.3
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection is not maximal on development and all release branches",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 2 contributing companies or organizations -- score normalized to 6",
                "points": 1.5,
                "status": "partial",
                "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": "no update tool detected",
                "points": 0,
                "status": "missed",
                "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.2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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": "no SAST tool detected",
                "points": 0,
                "status": "missed",
                "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": "36 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "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": 2
            },
            "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": "at_risk",
        "name": "AI Readiness",
        "value": 34,
        "weight": 0.04,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "weak",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.845,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "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": "82 of 97 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 82,
                      "sampled": 97
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "at_risk",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 22,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": 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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 53,
            "inputs": {
              "primary_language": "Python",
              "largest_source_bytes": 70050,
              "source_files_sampled": 25,
              "oversized_source_files": 1
            },
            "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": "1/25 source files over 60KB",
                "points": 52.8,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 25,
                      "oversized": 1
                    }
                  }
                ],
                "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": [],
      "scores": {},
      "primary": null,
      "evidence": [],
      "artifacts": [],
      "confidence": "none",
      "host_extension": false,
      "runs_as_process": false,
      "consumed_by_code": false
    },
    "metrics_version": "2.3.1"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "Could not fetch pypi package 'ara-ai' from its registry",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-08-02T21:14:42.479219Z",
  "schema_version": "0.29.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/m/MeridianAlgo/AraAI.svg",
  "full_name": "MeridianAlgo/AraAI",
  "license_state": "custom",
  "license_spdx": null
}

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.29.0 — metodología completa · wiki de métricas.

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