原始 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
}