Öffentliches Register
Software-GesundheitsberichtSchema 0.29.0 · Metriken 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.

PythonEigene Lizenz★ 15 Sterne⑂ 4 Forksseit Juli 2025Auf GitHub ansehen ↗

MeridianAlgo/AraAI erreicht einen Gesundheitsindex von 57 von 100 und liegt damit im Bereich Mittel. Am stärksten schneidet es bei Vitality (84/100) ab, am schwächsten bei Security (33/100). Zuletzt vor 12 Tagen aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

57
gesamt / 100
Mittel

Software-Gesundheitsindex

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

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

Bewertungsprofil

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

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

Eigentümerschaft

MeridianAlgoOrganisation
7 Follower19 öffentliche Reposseit Feb. 2026

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

Metriken nach Kategorie

Vitalität

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

84Exzellent · 21 % des Gesamtindex
Wie die Bewertung erfolgt
28.8/36Push-Aktualität — letzter Push vor 12 Tagen
15.9/36Commit-Rhythmus — 23/52 Wochen mit Commits
18/18Commit-Volumen — 178 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year178
human_commit_share0,97
days_since_last_push12
active_weeks_last_year23

Release-Disziplin

100Außergewöhnlich
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 3 Releases veröffentlicht
36/36Release-Aktualität — letztes Release vor 12 Tagen
27/27Release-Rhythmus — ein Release etwa alle 23,5 Tage
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count3
latest_release_tagv1.2.1
releases_from_tagsnein
days_since_latest_release12
mean_days_between_releases23,5
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Signed-Releases. Die verbleibenden Gewichte wurden renormalisiert.

Community & Verbreitung

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

33Gefährdet · 17 % des Gesamtindex
Wie die Bewertung erfolgt
18.6/60Stars — 15 Stars
4/25Forks — 4 Forks
0/15Watcher — 0 Watcher
Verwendete Eingangsdaten
forks4
stars15
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
16.9/22.5Lizenz — Lizenzdatei vorhanden, keine anerkannte Lizenz
0/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
readme_badges7
has_contributingnein
has_issue_templatenein
has_code_of_conductnein
readme_badge_servicesgithub.com, shields.io
has_pull_request_templatenein

Nachhaltigkeit & Governance

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

47Schwach · 23 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
5.2/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 77 % der Commits
5.4/13.5Breite der Beitragenden — 4 Beitragende
6/10OpenSSF Scorecard: Contributors — project has 2 contributing companies or organizations -- score normalized to 6
Verwendete Eingangsdaten
bus_factor1
contributors_sampled4
top_contributor_share0,771
Wie die Bewertung erfolgt
42/42Issue-Lösungsquote — 100 % der Issues geschlossen
20/30PR-Annahme — 4/6 entschiedene PRs gemergt
0/13Newcomer PR acceptance — kein PR eines Erstbeitragenden in 30 Tagen entschieden
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
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
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): newcomer_pr_acceptance. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
30/30Organisatorische Trägerschaft — im Besitz einer Organisation
0/20Verifizierte Domain
6.5/25Reichweite des Inhabers — 7 Follower von MeridianAlgo
10.5/25Kontohistorie — 19 öffentliche Repos, Kontoalter ca. 0 Jahre
Verwendete Eingangsdaten
followers7
owner_typeOrganization
is_verified
owner_loginMeridianAlgo
public_repos19
account_age_days179

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

76Gut · 19 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 4 Workflow(s)
24/24Tests vorhanden
0/16Linter-Konfiguration
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — keine Daten
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_confignein
has_precommit_confignein
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: CI-Tests. Die verbleibenden Gewichte wurden renormalisiert.

Dokumentation

100Außergewöhnlich
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
15/15Dokumentations-/Homepage-Site — https://huggingface.co/meridianal/ARA.AI
10/10Repository-Beschreibung
10/10Topics — 12 Topics
10/10Wiki
Verwendete Eingangsdaten
topicsmeridianalgo, forecasting-models, forex-prediction, hugging-face, stock-prediction, open-source, training, training-project, stock-analysis, stock-market, stock-price-prediction, stocks
has_wikija
homepagehttps://huggingface.co/meridianal/ARA.AI
has_readmeja
has_docs_dirja
has_descriptionja

Sicherheit

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

33Gefährdet · 16 % des Gesamtindex

Sicherheitslage

33Gefährdet
Wie die Bewertung erfolgt
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 — keine Daten
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.5Lizenz — 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 — keine Daten
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 — keine Daten
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 36 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate3,3
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): ci_tests, packaging, signed_releases. Die verbleibenden Gewichte wurden renormalisiert.

AI Readiness

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

34Gefährdet · 4 % des Gesamtindex
Wie die Bewertung erfolgt
0/45Agentenanweisungen — keine CLAUDE.md / AGENTS.md / Editor-Regeln
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 82 von 97 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,845
agent_instruction_files
agent_instruction_max_bytes
Wie die Bewertung erfolgt
0/18Bootstrap mit einem Befehl
22/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
0/11Statische Typprüfung
0/10Reproduzierbare Umgebung
0/10Belegte Agentenpraxis — keine von Agenten verfassten Commits unter den letzten 100
0/8Automatisierte Wartung — keine automatisierten Abhängigkeits-Updates beobachtet
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfiles
has_dockerfilenein
typed_languagenein
bootstrap_files
has_devcontainernein
has_linter_confignein
typecheck_configs
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
Wie die Bewertung erfolgt
0/45Typprüfbarer Code — Python ohne Typprüfungs-Konfiguration
52.8/55Handhabbare Dateigrößen — 1/25 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languagePython
largest_source_bytes70.050
source_files_sampled25
oversized_source_files1

Eckdaten

15GitHub-Sterne
4Mitwirkende
178Commits, letzte 12 Monate
12Tage seit letztem Push
3Releases
1Bus-Faktor
0offene Issues
PyPIPaket-Ökosysteme

Warnungen zur Datenerhebung

  • 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

Weitere Details

Stern- und Fork-Verlauf 0 ★ / 4 ⇿
0Sterne
4Forks
2Releases

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

1223344412025-092026-012026-06
Major 1Minor 0Patch 1
OpenSSF Scorecard 3.3 / 10
3.3Gesamtwert

Unabhängige, werkzeugneutrale Sicherheitsbewertung durch das quelloffene OpenSSF Scorecard. Jede Prüfung honoriert eine Sicherheits-Praxis, nicht das Werkzeug eines bestimmten Anbieters. Prüfungen, die Scorecard nicht ermitteln konnte, sind mit k. A. markiert und vom Sicherheitswert ausgeschlossen (nie als null gezählt).Scorecard v5.5.0 · 2026-08-02 21:14 UTC

10Binary-Artifactsno binaries found in the repo
1Branch-Protectionbranch protection is not maximal on development and all release branches
k. A.CI-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
k. A.Packagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
k. A.Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities36 existing vulnerabilities detected
Alle Abhängigkeiten nicht erhoben

Der aufgelöste Abhängigkeitssatz konnte für diesen Bericht nicht erhoben werden: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

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

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

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

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte Statistiken.