Публічний реєстр
Звіт про здоров'я програмного забезпеченнясхема 0.29.0 · метрики 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.

PythonВласна ліцензія★ 15 зірок⑂ 4 форкиз лип. 2025 р.Переглянути на GitHub ↗

MeridianAlgo/AraAI має індекс здоров’я 57 зі 100, що відповідає смузі «Помірний». Найвищий показник — Vitality (84/100), найнижчий — Security (33/100). Останнє оновлення було 12 днів тому. Більшість нещодавньої роботи виконує один учасник.

57
загалом / 100
Помірний

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

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

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

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

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

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

Власність

MeridianAlgoОрганізація
7 підписників19 публічних репозиторіївз лют. 2026 р.

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

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

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

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

84Відмінний · 21% загального індексу
Як обчислюється оцінка
28.8/36Свіжість push — останній push 12 дн. тому
15.9/36Ритм комітів — 23/52 тижнів із комітами
18/18Обсяг комітів — 178 комітів за останній рік
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10
Використані вхідні дані
commits_last_year178
human_commit_share0,97
days_since_last_push12
active_weeks_last_year23
Як обчислюється оцінка
27/27Випускає релізи — опубліковано 3 релізів
36/36Свіжість релізів — останній реліз 12 дн. тому
27/27Ритм релізів — реліз кожні ~23,5 дн.
0/10OpenSSF Scorecard: Signed-Releases — немає даних
Використані вхідні дані
releases_count3
latest_release_tagv1.2.1
releases_from_tagsні
days_since_latest_release12
mean_days_between_releases23,5
Виключено з оцінювання (немає даних або не застосовно): OpenSSF Scorecard: Signed-Releases. Залишкові ваги перенормовано.

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

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

33У зоні ризику · 17% загального індексу
Як обчислюється оцінка
18.6/60Зірки — 15 зірок
4/25Форки — 4 форків
0/15Спостерігачі — 0 спостерігачів
Використані вхідні дані
forks4
stars15
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Як обчислюється оцінка
22.5/22.5README
16.9/22.5Ліцензія — файл ліцензії наявний, не є визнаною ліцензією
0/18Настанови CONTRIBUTING
0/13.5Кодекс поведінки
0/7.2Шаблон issue
0/6.3Шаблон PR
Використані вхідні дані
has_readmeтак
has_licenseтак
readme_badges7
has_contributingні
has_issue_templateні
has_code_of_conductні
readme_badge_servicesgithub.com, shields.io
has_pull_request_templateні

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

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

47Слабкий · 23% загального індексу
Як обчислюється оцінка
9/54Бас-фактор — на 1 контриб’ютор(ів) припадає половина всіх комітів
5.2/22.5Розподіл комітів — головний контриб’ютор — автор 77% комітів
5.4/13.5Широта контриб’юторів — 4 контриб’юторів
6/10OpenSSF Scorecard: Contributors — project has 2 contributing companies or organizations -- score normalized to 6
Використані вхідні дані
bus_factor1
contributors_sampled4
top_contributor_share0,771
Як обчислюється оцінка
42/42Вирішення issue — закрито 100% issue
20/30Прийняття PR — злито 4/6 вирішених PR
0/13Newcomer PR acceptance — за 30 дн. не вирішено жодного PR від новачка
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Використані вхідні дані
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
Виключено з оцінювання (немає даних або не застосовно): newcomer_pr_acceptance. Залишкові ваги перенормовано.
Як обчислюється оцінка
30/30Підтримка власника — у власності організації
0/20Верифікований домен
6.5/25Охоплення власника — 7 підписників у MeridianAlgo
10.5/25Послужний список — 19 публічних репозиторіїв, вік облікового запису ~0 р.
Використані вхідні дані
followers7
owner_typeOrganization
is_verified
owner_loginMeridianAlgo
public_repos19
account_age_days179

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

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

76Добрий · 19% загального індексу
Як обчислюється оцінка
24/24Процеси CI — 4 процес(ів) CI
24/24Наявні тести
0/16Конфігурація лінтера
0/9.6Pre-commit-хуки
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — немає даних
Використані вхідні дані
has_ciтак
has_testsтак
has_editorconfigні
has_linter_configні
has_precommit_configні
Виключено з оцінювання (немає даних або не застосовно): OpenSSF Scorecard: CI-Tests. Залишкові ваги перенормовано.

Документація

100Винятковий
Як обчислюється оцінка
30/30README
25/25Каталог документації
15/15Сайт документації / домашня сторінка — https://huggingface.co/meridianal/ARA.AI
10/10Опис репозиторію
10/10Теми — 12 тем
10/10Wiki
Використані вхідні дані
topicsmeridianalgo, forecasting-models, forex-prediction, hugging-face, stock-prediction, open-source, training, training-project, stock-analysis, stock-market, stock-price-prediction, stocks
has_wikiтак
homepagehttps://huggingface.co/meridianal/ARA.AI
has_readmeтак
has_docs_dirтак
has_descriptionтак

Безпека

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

33У зоні ризику · 16% загального індексу

Стан безпеки

33У зоні ризику
Як обчислюється оцінка
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 — немає даних
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.5Ліцензія — 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 — немає даних
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 — немає даних
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 36 existing vulnerabilities detected
Використані вхідні дані
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate3,3
Виключено з оцінювання (немає даних або не застосовно): ci_tests, packaging, signed_releases. Залишкові ваги перенормовано.

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

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

34У зоні ризику · 4% загального індексу
Як обчислюється оцінка
0/45Інструкції для агентів — немає CLAUDE.md / AGENTS.md / правил редактора
0/15Машиночитана документація (llms.txt)
40/40Читабельна історія комітів — намір зазначено у 82 з 97 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share0,845
agent_instruction_files
agent_instruction_max_bytes
Як обчислюється оцінка
0/18Розгортання однією командою
22/22Автоматизовані тести
0/11Конфігурація лінтера / форматера
0/11Статична перевірка типів
0/10Відтворюване середовище
0/10Підтверджена практика роботи з агентами — серед останніх 100 комітів немає створених агентом
0/8Автоматизоване супроводження — автоматичних оновлень залежностей не виявлено
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Використані вхідні дані
has_nixні
has_testsтак
lockfiles
has_dockerfileні
typed_languageні
bootstrap_files
has_devcontainerні
has_linter_configні
typecheck_configs
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
Як обчислюється оцінка
0/45Типізований код — Python без конфігурації перевірки типів
52.8/55Керовані розміри файлів — 1/25 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languagePython
largest_source_bytes70 050
source_files_sampled25
oversized_source_files1

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

15зірок GitHub
4контриб'юторів
178комітів за останні 12 місяців
12днів від останнього пушу
3релізів
1бас-фактор
0відкритих issue
PyPIпакетних екосистем

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

  • 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

Докладніше

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

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

1223344412025-092026-012026-06
Мажорні 1Мінорні 0Патчі 1
OpenSSF Scorecard 3.3 / 10
3.3сукупно

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

Не вдалося зібрати розв'язаний набір залежностей для цього звіту: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

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

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

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

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