Informe JSON sin procesar legible por máquina
{
"data": {
"repo": {
"topics": [
"ai-trading",
"algorithmic-trading",
"claude",
"fintech",
"llm",
"machine-learning",
"multi-agent",
"python",
"pytorch",
"quantitative-finance",
"reinforcement-learning",
"trading-bot",
"agentic",
"claude-opus",
"kalshi",
"kronos",
"polymarket",
"prediction-markets",
"signal-fusion",
"trading-agent"
],
"is_fork": false,
"size_kb": 37414,
"has_wiki": true,
"homepage": "https://orallexa-ui.vercel.app",
"languages": {
"CSS": 6384,
"HTML": 87469,
"Shell": 36021,
"Python": 2767121,
"Dockerfile": 2273,
"JavaScript": 6334,
"TypeScript": 429706
},
"pushed_at": "2026-07-12T15:08:32Z",
"created_at": "2026-04-01T15:22:38Z",
"owner_type": "User",
"updated_at": "2026-07-26T01:27:39Z",
"description": "Self-tuning multi-agent AI trading system. 8-source signal fusion, Bull/Bear/Judge debate on Claude Opus 4.7, Kelly + ATR position sizing. Python · Kalshi + Polymarket adapters.",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "master",
"license_spdx_raw": "MIT",
"primary_language": "Python",
"significant_languages": [
"Python",
"TypeScript"
]
},
"owner": {
"blog": null,
"name": "Orallexa",
"type": "User",
"login": "alex-jb",
"company": null,
"location": null,
"followers": 9,
"avatar_url": "https://avatars.githubusercontent.com/u/43049907?v=4",
"created_at": "2018-09-06T21:34:37Z",
"is_verified": null,
"public_repos": 67,
"account_age_days": 2879
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v1.2.2",
"kind": "patch",
"published_at": "2026-07-08T14:24:37Z"
},
{
"tag": "v1.2.1",
"kind": "patch",
"published_at": "2026-07-07T14:03:26Z"
},
{
"tag": "v1.2.0",
"kind": "minor",
"published_at": "2026-07-07T13:53:25Z"
},
{
"tag": "v1.1.0",
"kind": "minor",
"published_at": "2026-07-07T13:12:49Z"
},
{
"tag": "v1.0.0",
"kind": "major",
"published_at": "2026-04-04T02:29:03Z"
}
],
"recent_commits": [
{
"oid": "794a2ec0ce0b1271b468814eee47c2cd4edde147",
"body": "Per PORTFOLIO_UPGRADE_BRIEF.md §A5. Standard hygiene for market-facing repos.\nNo functional changes.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: add educational-research / not-financial-advice disclaimer",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-07-12T15:08:31Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e16976b667ddbb8c3d1f0bb001ed4d52052da943",
"body": "CRITICAL data-integrity fix. 2026-07-08 audit found polymarket-decisions.jsonl\nwas 205/208 (98.6%) uniform-0.5 sports rows since 2026-07-04. v1.1.0 signal-\nside guards didn't catch the queue_consumer.py persist path.\n\n- markets/auto/queue_consumer.py: add _should_persist() + queue/rejected/ sink\n- t\n[…]\n- Test surface +8 (37/37 across the 3 guard test files)\n\nFix goes live tonight 21:30 NY on next cron fire (no deploy step needed).\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(v1.2.1): persist-boundary guards + backfill 205 corrupted rows",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-07-08T14:23:58Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "4c07b3be477664db2453df6c012cb9ef7db434af",
"body": "Two README fixes and one new distribution surface:\n\n1. README hero adds \"Different from other AI-trading repos\" paragraph\n that names the distinction from ai-hedge-fund and similar repos:\n Orallexa is a calibrated multi-agent decision system with a public\n Brier log, direction and sizing kept \n[…]\nyle Risk Sizer from engine/risk_sizer.py into a\n standalone callable skill for Claude Desktop / Cursor / OpenCode.\n Named invariant pinned: sizer never emits a direction; direction\n is upstream.",
"is_bot": false,
"headline": "Anti-AI-hedge-fund positioning + honest test count + Risk Sizer skill",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-07-08T03:00:50Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b0cda34a4da0fbd5fbe7f55c4d7cf40fd9c3c2bc",
"body": "Completes the v1.2.0 skeleton wire-up. Risk Sizer is now optional\ninside run_lightweight_debate() — pass sizer_kwargs to enable, omit\nto get identical v1.2.0 behavior.\n\nDirection map (Judge → Sizer):\n BUY → long\n SELL → short\n WAIT → no_op (Sizer skips)\n\nJudge's direction is IMMUTABLE — Sizer on\n[…]\nisk_sizer_error (non-fatal)\n\nDownstream: decision_log.jsonl now captures Sizer rationale in\nout.reasoning trail so bank counsel reading the log sees the sizing\nstory alongside the direction reasoning.",
"is_bot": false,
"headline": "feat(v1.2.1): wire Risk Sizer into run_lightweight_debate",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-07-07T14:03:24Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "77884a58767a797144715af30f92ba2aaee60952",
"body": "Ships the implementation of the design skeleton at\ndocs/roadmap/v1.2.0-finpos-dual-agent.md (2026-07-07 late-night).\nReference: FinPos (arXiv 2510.27251) — models that conflate directional\nreasoning with position sizing score worse on both dimensions than\nmodels that split them.\n\nShips:\n- engine/ris\n[…]\ne and testable in isolation until then.\n\nEffort: 2 hours (per skeleton estimate).\n\nFirst tag chain: v1.0.0 (2026-04-04) → v1.1.0 (2026-07-07 uniform-0.5\nguard) → v1.2.0 (2026-07-07 FinPos Risk Sizer).",
"is_bot": false,
"headline": "feat(v1.2.0): FinPos Risk Sizer voice — direction separated from sizing",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-07-07T13:53:23Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c72ae1b79fc441c8de9464bb16bfa7e799e08456",
"body": "Ships design + module stub + contract-test spec for v1.2.0 based on\n2026-07-07 OSS-survey recommendation (Agent 1 output). FinPos paper\n(arXiv 2510.27251) shows models that conflate directional reasoning\nwith position sizing score worse than models that split them.\n\nCurrent Orallexa Judge voice does\n[…]\n, PM gate, kill-conds)\n- 4-hour effort estimate\n- Success criteria for tagging\n\nReady for Alex + Yang capstone-cohort review. Implementation\nstarts next session; this skeleton unblocks the discussion.",
"is_bot": false,
"headline": "docs(roadmap): v1.2.0 FinPos dual-agent split design skeleton",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-07-07T13:35:29Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2871a88885be2158c33b8f976699ec08e62dcedc",
"body": "CRITICAL bug fix: 2026-07-07 audit of production\n~/.orallexa/markets/polymarket-decisions.jsonl found 200/203 (98.5%)\nof our_p_yes decisions collapsed to exactly 0.5 on World Cup markets.\nEvery single one wrote a +47% fake edge against a market priced at 3%.\nDownstream paper trader was consuming gar\n[…]\norm-0.5 count: 200 (98.5%)\n [audit] ALERT: uniform-0.5 collapse detected\n\nRuntime install (~/.orallexa/markets/scripts/) synced with repo.\nFirst tag since v1.0.0 (2026-04-04). 3-month drought closes.",
"is_bot": false,
"headline": "feat(v1.1.0): uniform-0.5 collapse guard + production audit script",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-07-07T13:12:47Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9e5b1b588606e2a3d15678ac14dd68d9d7f7f30d",
"body": "…13 wire-in)\n\nShips the \"wire insider_signal into spacex-daily\" upgrade from the\n2026-07-02 deferred queue — but as a SEPARATE script that runs\nindependently, not by editing the live spacex-daily.sh cron.\n\nWhy not edit spacex-daily.sh directly\n-------------------------------------\nThe live spacex-da\n[…]\ns/auto/insider_join.enrich_decision_with_insider (2026-06-22)\n- brain 2026-07-02 EVENING entry (deferred: orallexa insider→spacex)\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(insider): standalone SpaceX decision enrichment script (Tier-2 #…",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-07-04T14:45:47Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "afb9cae23f90c7b633d5de56b6a3ed986e280ad4",
"body": "…urst section\n\nBilingual rule ship — public GitHub READMEs must be bilingual EN+CN\nper feedback_readme_bilingual. README.md was updated with the\n2026-07-02 shipping burst on d0be3b1; README_CN.md is now synced.\n\nTest badge 990+ → 1300+ (matches actual: 1317 collected clean).\n\nAdded Chinese section d\n[…]\nghts the LIVE kill-conditions cron shipped c8587c7 — every night\n21:00 NY, state persisted to ~/.orallexa/markets/kill_state.json.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(zh): README_CN sync — badge 990+ → 1300+ + 2026-07-02 shipping b…",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-07-03T21:17:04Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c8587c7b3e882a06b0e149d443ccae75e3d9dba0",
"body": "Wires engine/kill_conditions.py into a live nightly rhythm.\nGuarantees at least one fresh check per day; morning paths that\nfind stale kill state (>30h) should treat it as WAIT.\n\nWhat ships\n----------\n- markets/auto/kill_conditions_cron.py — reads paper P&L history +\n polymarket brier history + dec\n[…]\n+shadow deep-research entry\n- 2026-06-30 audit finding \"No kill condition on paper loss\" —\n this cron closes the operational loop\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(cron): kill-conditions nightly launchd cron + install guide",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-07-03T01:48:07Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "d0be3b103f50cfbe77a2fdb61a05b15971f221cb",
"body": "…ollection errors\n\nCHANGELOG\n---------\nFull 2026-07-02 entry documenting 8 Tier-1/Tier-2 upgrades from the\ndeep-research roadmap: kill_conditions + reliability diagram + audit\nblock + ATR default + edge_thesis (Tier-1); Kelly, Platt, Dixon-Coles,\nCPCV + wire-ups (Tier-2). 257 new tests, opt-in wire-\n[…]\n they were pre-existing at least since the\nlast full-suite pass. Now anyone can run `python3 -m pytest tests/`\nwithout setup pain.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore(polish): CHANGELOG for 2026-07-02 shipping burst + fix 5 test c…",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-07-02T16:26:20Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "7961978ef15bc54a7b9f050b1b9d6a72269a0fe6",
"body": "…e-up)\n\nCloses the loop between engine.kill_conditions (Tier-1 #10 primitive\nshipped earlier today) and the final BUY/SELL approval gate.\n\nUntil this commit, \"when do we stop trading\" lived in kill_conditions\nbut nothing consumed it — the 2026-06-30 audit's #1 danger finding\nwas still unaddressed at\n[…]\ntion on paper loss —\n potentially $1-5K burn before auto-stop\"\n- 2026-05-27 -$1015 paper P&L audit that motivated the whole thing\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(pm): wire kill_conditions into portfolio_manager (Tier-1 #10 wir…",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-07-02T16:09:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "f9d2622ec4d8fac0676ae84bedd288d131aa5935",
"body": "…ntel\n\nTwo production wire-ups of primitives shipped earlier today.\n\n1. Platt what-if in brier_audit.py (Tier-2 #7a wire-up, safe)\n------------------------------------------------------------\nAdds `render_platt_whatif_section(results)` — fits Platt on the same\nin-memory results the reliability diagr\n[…]\ning (8ec872c, this session)\n- Prophet Arena middle-bin compression (arxiv 2510.17638)\n- 2026-05-27 -$1015 fixed-bucket paper audit\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(wire-up): Platt what-if in brier_audit + Kelly opt-in in trade_i…",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-07-02T16:00:43Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "7bd6014facb9e5cf88e5a038bf1decbde017439d",
"body": "Adds the file-cache + auto-refit path so polymarket_daily.py can\nconsume the calibrator with a single load_or_refit() call without\neach cron fire re-scanning the entire JSONL history.\n\nWhat ships\n----------\n- engine/platt_calibration.py:\n - save(calibrator, path) — persists A/B/n_train/brier fields\n[…]\n wired in this commit — that's\nthe follow-up commit + needs a rules.json toggle to opt in without\ndisturbing paper-P&L continuity.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(calibration): Platt cache + load_or_refit helper (Tier-2 #7a)",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-07-02T15:52:50Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "6ece8ad1935072802fe17d6c0faad44e101c3e74",
"body": "Closes the loop between engine.insider_signal (shipped 2026-06-19\nc34de90) and the final BUY/SELL approval gate in\nengine.portfolio_manager. Until this commit, SEC EDGAR Form-4\ninsider data was rendered into the daily brief + attached to\nenrich_decision_with_insider (2026-06-22 insider_join) but had\n[…]\nts/auto/insider_join.enrich_decision_with_insider (2026-06-22)\n- 14d paper P&L audit (2026-05-27) — the -$1015 that motivated this\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(pm): wire insider_signal into portfolio_manager gate (Tier-2 #13)",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-07-02T15:49:22Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "519d0c35452166510ceba54a1b211c120ef33dc5",
"body": "… #14)\n\nUpgrades markets/auto/walkforward.py from 4-window sliding CV to\nLópez de Prado's CPCV (Adv. in Financial ML 2018 ch. 12) as an\nopt-in flag.\n\nWhy upgrade\n-----------\nSliding-window CV underestimates true OOS error on trading data:\n 1. Label overlap. When lookahead=5d, decisions on day 3 and\n[…]\n5 (embargo), §12.7 (CPCV).\n- Bailey, D. et al. (2014) \"The Probability of Backtest Overfitting\"\n — motivates C(N, k) enumeration.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(cv): Combinatorial Purged CV + walkforward --cpcv opt-in (Tier-2…",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-07-02T15:46:38Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5547c99573f6dab8b498f0a3ddfc880dca25ed70",
"body": "Directly addresses the Prophet Arena middle-bin compression pathology\nthat Tier-1 #8 (reliability diagram) surfaces. Fixes what the audit\ndiagnoses.\n\nWhy\n---\nProphet Arena (arxiv 2510.17638 §4.3) found LLM forecasters — Haiku,\nSonnet, GPT-4o — systematically compress p_yes into the 0.30-0.70\nmiddle \n[…]\nstic Outputs for SVMs...\"\n- Bridgewater (2025-09) AIA Forecaster, arxiv 2511.07678\n- Prophet Arena (2026-05) arxiv 2510.17638 §4.3\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(calibration): Platt-scaling post-hoc calibrator (Tier-2 #7a)",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-07-02T15:42:44Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "59b1a102050a5cc25bc3f9edfa54f8e1e0dc6400",
"body": "…on pipeline bridge\n\nTwo shipments that had been sitting uncommitted from the 2026-06-22\nJason Marsh call + 6/19 insider_signal work:\n\n1. markets/auto/export_for_flow.py — Orallexa → Flow Spatial\n Cognitive Platform CSV exporter. One row per (date, ticker) with\n axes mapped to Flow's spatial dem\n[…]\nticker probability. `enrich_decision_with_insider` is the\n thin function adapter that closes the loop.\n\n33 new tests. All green.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(export+insider): Flow SCP CSV exporter + insider_signal → decisi…",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-07-02T15:40:00Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "3c5b3e8369c9d6f176be9cf682479b838c3af7af",
"body": "Replaces the \"penaltyblog full-fit upgrade pending v0.2\" TODO in\nsports_pricer.py with a real MLE fit.\n\nWhy vendor\n----------\npenaltyblog is installed in Alex's env but crashes on import via\narviz -> scipy.signal.gaussian (removed in scipy>=1.13). Fighting\nthat dep tree risks breaking other modules \n[…]\n. Follow-up commit will add\na static-JSONL training-data path + wire predict_match_from_fit\ninto estimate_p_yes() for sports legs.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(sports): vendored Dixon-Coles bivariate Poisson MLE fit (Tier-2 #6)",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-07-02T15:36:55Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "8ec872c2fac126c7a5a5c4ba80b057545cad1f46",
"body": "Ships the Half-Kelly + drawdown-adjusted-Kelly + kelly_notional API\nAlex can layer on top of the fixed-bucket sizing in trade_intel.py.\n\nWhy\n---\nCurrent sizing (setup_to_sizing_notional in trade_intel.py) uses\nFull=25× / Half=15× / Short-half=12× buckets that don't adapt to\nedge magnitude. Deep-rese\n[…]\nl.py — that's the follow-up integration\nPR after CPCV walk-forward (#14) validates the sizing improvement is\nrobust out-of-sample.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(sizing): Fractional Kelly sizing primitives (Tier-2 #11)",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-07-02T15:30:59Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5a6ea668334d86189ccad263b5a31b43252a99d9",
"body": "Ships 2026-07-02 Tier-1 upgrade #1 from the deep-research roadmap.\nAlex approved the cost bump.\n\nWhy\n---\nProphet Arena (arxiv 2510.17638, 2026 H1) direct finding:\n\n \"strong models perform much better in the extreme bins (0-0.1 and\n 0.9-1.0), where it almost always predicts correctly. Weaker model\n[…]\nmaterialize within 7-14 days of Sonnet running,\nthe diagnosis is one layer deeper — prompt design or event choice —\nnot the model.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(polymarket): switch estimator default Haiku → Sonnet 4.6",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-07-02T15:25:37Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "74fa87515b75c3c97660a52ed04c76a241b5c8bc",
"body": "Ships 2026-07-02 Tier-1 upgrade #8 from the deep-research roadmap.\n\nWhy\n---\nProphet Arena (arxiv 2510.17638, 2026) direct finding:\n\n \"strong models perform much better in the extreme bins (0-0.1 and\n 0.9-1.0), where it almost always predicts correctly. Weaker models\n compress toward middle-of-b\n[…]\nghtly against\ndecision_log.json. The reliability diagram appears in the next nightly\nreport automatically. No cron changes needed.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(brier): 10-bin reliability diagram — expose middle-bin collapse",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-07-02T15:23:30Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "1ee7ae7b85ce7edb3411c0488f7253135e2de977",
"body": "Ships 2026-07-02 Tier-1 upgrade #9 from the deep-research roadmap.\n\nWhy\n---\nAnthropic launched Claude Science on 2026-06-30 positioning \"every\noutput carries an auditable history of how it was made\" as the\ncore primitive for AI deployment in high-risk regulated scientific\ndomains. Their artifact sha\n[…]\ninance/banking on the\nsame 3-day window = concurrent independent industry validation of\nthe reproducibility-first trust primitive.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(polymarket): auditable-history port — Claude Science shape",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-07-02T15:21:02Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "fe517f1bb7b1f27d1878fd8e64ecfa911b2c6ace",
"body": "Ships 2026-07-02 Tier-1 upgrade #10 from the deep-research roadmap.\n\nWhy\n---\nThe 2026-06-30 architecture audit found the single most dangerous\npattern on the stack: NO kill condition on paper loss. \"If real\nmoney were $300, system keeps emitting BUY signals through -$1,015\npaper drawdown with no exp\n[…]\nt touches many entry points and Alex should\nreview each. The invariants are testable HERE; enforcement lands\none caller at a time.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(engine): kill_conditions — real-money gate + auto-stop for Orallexa",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-07-02T15:17:51Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "b7254c57b9d0a28ba8785ab9e12163834955d124",
"body": "Ships Tier-1 upgrade #5 from the 2026-07-02 deep-research roadmap.\n\nThe bug that hid $6,823\n-----------------------\n2026-05-29 backtest showed baseline -$873 vs +ATR stops +$5,950 on\nn=128 same 30-day window (p<0.005 statistically significant). ATR\nstops sat behind `--use-atr-stops` opt-in flag for \n[…]\nn the deep-research report). The\n--help smoke test manually verifies CLI still parses cleanly.\nPolymarket tests still 42/42 green.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(portfolio): ATR stops default TRUE + mandatory flag enumeration",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-07-02T14:22:50Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "acbf6554e368fe26878b602c06af4f57ec0cd389",
"body": "…oadmap\n\nThree parallel Explore agents synthesized deep research on the Orallexa\nstack (see ~/Downloads/orallexa-upgrade-roadmap-2026-07-02/roadmap.pdf).\nThis commit ships three of the five Tier-1 fixes — the ones that touch\npolymarket_daily.py. #1 (Sonnet 4.6 default) waits on Alex approval;\n#5 (AT\n[…]\n (touches portfolio_paper.py, separate)\n- #8 reliability diagram per bin (brier_audit.py, separate)\n- All Tier-2 items per roadmap\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(polymarket): ship Tier-1 upgrades #2 + #3 + #4 from 2026-07-02 r…",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-07-02T14:20:27Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "7ca66b391d4c7daa8808b6be3923991d097206e5",
"body": "…t cron\n\nCloses the v1 → v2 wire-in for the 2026-06-30 sports-skip fix. Sports\nmarkets (126/173 historical decisions are \"Will X win World Cup\") now\nget a REAL probability from an Elo-only Monte Carlo tournament-winner\nsimulator instead of just returning None.\n\nWhat's added\n------------\n- engine/spo\n[…]\n, Super Bowl,\n Wimbledon — each needs its own structure + Elo dict).\n- penaltyblog full Dixon-Coles fit on FBref historical data.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(markets): wire sports_pricer tournament-winner MC into polymarke…",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-06-30T16:24:19Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "0b1f5de529fefacdaf16c07066b5156d6c27c40d",
"body": "…oise\n\nBug surfaced by queue_consumer.py first fire (commit e4ffa5f, 2026-06-29):\nof 173 historical Polymarket decisions in the audit JSONL, 126 (73%)\nare sports markets (\"Will X win the 2026 FIFA World Cup\"). Haiku\nhad been returning a default-ish ~0.5 p_yes for ALL of them — producing\na fake mean \n[…]\norts markets (boom-mock fires if SDK gets called) AND still\n flows to Anthropic for non-sports (deterministic mock returns 0.42).\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(markets): skip sports-market Haiku estimation — 73% of tape was n…",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-06-30T16:05:17Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "e4ffa5f4c0984f670783a0446eb1401dddbaebc3",
"body": "decisions into audit JSONL\n\n2026-06-30 cross-stack audit caught: ~/.orallexa/markets/queue/\npending/ had 173 .md files accumulated since 2026-05-11 with judged\ndecisions sitting unprocessed. polymarket_daily.py drops one .md per\nmarket it scores; no consumer was reading them. Result: no Brier\naudit \n[…]\ndaily 21:30 NY,\nafter polymarket_daily.py 09:00 fire finishes the queue write loop.\n\nWrapper: scripts/markets-queue-consume.sh (TCC-sidestep pattern\nmatching morning-deep-dive.sh / sports-morning.sh).",
"is_bot": false,
"headline": "feat(markets): queue_consumer.py — flush 173 pending Polymarket",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-06-30T14:55:53Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e3b9f046d6b6af54799ca8be54d531f79175c2e4",
"body": "2026-06-29 active 7-leg WC parlay session ran into the gap:\n Norway 角球 U11.5 + Germany 牌 U4.5 can't go through MC because\n Dixon-Coles only models goals. Need a separate Poisson over per-\n team corner / booking distributions, which needs different\n training data (FBref per-team corner counts, fo\n[…]\nGermany cards U4.5\", 0.745),\n (\"Norway corners U11.5\", 0.74),\n ],\n elo_lookup=...,\n bracket=...,\n n=100_000,\n )\n\nEV = result[\"joint_prob\"] # vs naive: result[\"independent_baseline\"]",
"is_bot": false,
"headline": "feat(parlay): p_joint_parlay_mixed — handles MC legs + non-goal props",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-06-29T13:29:43Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "240865dd60eed54d92a1fbdf9cabbcd39354cd4d",
"body": "Three follow-ups from 2026-06-29 sports stack install incident:\n\n1. penaltyblog drop. Its __init__.py eager-imports aesara; aesara\n crashes on modern numpy (numpy.__config__.get_info() removed API).\n Our engine/sports_pricer.py uses pure-Python Dixon-Coles math —\n no penaltyblog needed at runt\n[…]\nll\n green in venv.\n\nFBref schedule call still 403s (Cloudflare bot-block); cron now\nfail-graceful — falls through to Elo snapshot only. The parlay\nsimulator's elo_lookup arg gets its data either way.",
"is_bot": false,
"headline": "fix(sports): venv isolation + ClubElo API + static national-team Elo",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-06-29T13:20:28Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "77585d006018095aed48a15ec56dfaeb5aba93ed",
"body": "…relation\n\nCloses 2026-06-29 research recommendation. 5-module ship gives Orallexa\nreal sports edge by replacing the Haiku our_p_yes uniform-0.15 trap\n(diagnosed 2026-06-22) with a deterministic Dixon-Coles probability\nsource, plus MC bracket simulation that catches the correlation\nbetween same-tour\n[…]\ne\ntournament-advance picks like \"Spain + England + Mexico all advance,\"\nnaive independent multiplication overstates the parlay EV. Run\np_joint_parlay() to get the actually-correlated true probability.",
"is_bot": false,
"headline": "feat(sports): football prediction stack — Dixon-Coles + MC parlay cor…",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-06-29T05:30:30Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "50ef054bf0e6ae4303686038d620cbf1745dd2a7",
"body": "…or any p(up) emitter\n\nCloses the 'ship the primitive, but how do I plug it in' gap on c34de90.\nAdds wrap_signal_with_insider() — a decorator-style integration point\nthat any existing signal generator (diffusion_signal.predict, the LLM\ndebate judge, multi-agent verdict, etc.) can wrap WITHOUT changi\n[…]\n engine/multi_agent_analysis.py\nor markets/event_debate.py) is the next step — but that's a per-callsite\nchoice, not a global one.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(engine): insider-signal integration wrapper — opt-in decorator f…",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-06-22T15:48:57Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c34de90561a0fafae263f9517d75c44f70ce8caa",
"body": "Closes the data-but-no-signal gap surfaced by 2026-06-20 daily brief\n§5: markets/auto/news_morning.py fetch_insider_transactions has been\npulling SEC EDGAR Form-4 data for ~3 weeks (visible as the 7 insider\nrows in the daily brief), but the data only renders into the brief —\nit never feeds back into\n[…]\n only)\n - Earnings-window cooldown stacking (separate primitive)\n\nSource signal: alex-brain/research/daily-brief/2026-06-20.md §5\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(engine): insider-trade signal primitive — Form-4 → p(up) tilt",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-06-22T15:23:03Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "d2d1b56e71f8e9ad87725a059b272bc001a9aaba",
"body": "Surfaced by 2026-06-20 daily-brief-distill cron §3 row 6: GPT-4o vs\nGLM-5.2 quant A/B (5 prompt 对比). The previous commit (a6750a9)\nunblocked it by adding GlmProvider; this commit ships the actual\nharness that drives the comparison.\n\n5 representative prompts extracted from real call sites:\n - bull \n[…]\nstory/provider-ab/ —\nfollow-on runs accumulate there per existing eval/history convention\n(drift.jsonl + dated eval_*.json files).\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(eval): provider A/B benchmark harness — anthropic × openai × glm",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-06-20T23:42:23Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "a6750a93963f08035396fd041d8afd544c1f9f90",
"body": "Unblocks the GPT-4o vs GLM-5.2 quant A/B benchmark surfaced by the\n2026-06-20 daily-brief-distill cron. The 11-agent stack's existing\nmulti-provider abstraction (AnthropicProvider / OpenAIProvider /\nGeminiProvider) had GLM as the missing slot — registry had no glm\nentry, so flipping ORALEXXA_LLM_PRO\n[…]\n dspy_judge.py /\nstrategy_explainer.py call sites), run them under anthropic/openai/glm,\nscore on output quality + cost + latency.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(llm): add GlmProvider — ZhipuAI GLM via OpenAI-compatible endpoint",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-06-20T23:13:33Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "f61d198270ab5993f59a523f9cfb2ee2010052d3",
"body": "…ocal",
"is_bot": false,
"headline": "chore: gitignore .claude/skills/ — gstack-installed skills are user-l…",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-06-19T02:27:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7ec08b9baed96312f61ca5a33af13acb494d7f11",
"body": "9 keyword→URL mappings for Karpathy canonical resources:\n- micrograd (ep1), makemore (ep2-4), nanoGPT walkthrough (ep7),\n GPT Tokenizer (ep9), Intro to LLMs (1h talk), nanochat ($100/4h),\n nanoGPT repo, State of GPT (MSBuild 2023), Software 3.0 essays.\n\ncompile_brief() now matches today's curricul\n[…]\nf-attention) → matches nanoGPT walkthrough\n- Day 20 (Tokenization) → matches Tokenizer ep9\n- Day 31 (Pretraining) → matches nanochat\n- Day 37 (Data parallelism) → no match (correctly empty)",
"is_bot": false,
"headline": "feat(daily-brief): add karpathy_references block to curriculum.yaml",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-06-17T19:43:12Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8842b3aa7e15c2db2734961e8b1120508219db82",
"body": "First distribution package for Orallexa. Lead with the false-positive\nbacktest postmortem (not the architecture) — calibration-honest eval is\nthe differentiation. 5 root causes documented in\nresearch/2026-06-08-markets-stack-deep-diagnosis.md.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(launch): HN Show + r/algotrading + LinkedIn drafts",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-06-09T19:07:41Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5f6c500da8d6ef91d21b7256698a6cbcb7816224",
"body": "Walk-forward verdict 2026-06-09 was FAIL (mean OOS Sharpe -3.08) because\nthe entry rule ran momentum scoring uniformly across regimes. June 2026\nwas ranging, momentum signals are anti-edge there.\n\nADX-based regime gate:\n- ADX >= 25 → TRENDING — momentum scoring valid (+7 as before)\n- ADX < 18 → RAN\n[…]\n BUY)\n- 18-25 → UNCERTAIN — cap score ≤ 55, prefer WAIT\n\nSource: research/2026-06-08-markets-stack-deep-diagnosis.md cause #3.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(prediction): ADX regime gate (P1.1) — trending/ranging/uncertain",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-06-09T16:51:11Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "ff97e20a4274ad321c7cae7fd13bbef59a3875aa",
"body": "scripts/walkforward.py slices decision_log into N sliding (train, test)\nwindows and reports mean Sharpe-proxy over out-of-sample test windows.\n\nLive-trading gate:\n- mean OOS Sharpe > 0.5\n- worst-window Sharpe > 0\n- worst-window max DD < 25%\n\nIf any fail → \"don't trade real money\" verdict. This is th\n[…]\ne #2 (worst OOS Sharpe) when run forward into June ranging.\n\nSource: research/2026-06-08-markets-stack-deep-diagnosis.md cause #4.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(markets): walk-forward validation framework (P1.2 from diagnosis)",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-06-09T16:18:03Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "077b3d708580f7881e700594533796a31a64d3e4",
"body": "…% paper P&L)\n\nTwo bugs found in 2026-06-08 deep diagnosis:\n1. RSI >= 70 was +3 (treated as continuation); now -10 (exhaustion)\n2. 2+ extension signals (RSI>60 + BB%>0.7 + MACD+ADX>25) → cap score 55\n\nRoot cause of 6/01 paper basket: 9 BUYs all stopped -5% in 5 days because\nsystem bought at momentum top (RSI > 60). See research/2026-06-08-markets-stack-deep-diagnosis.md\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(prediction): RSI>=70 bug + anti-extension gate (root cause of -16…",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-06-08T20:39:45Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a7241138304305619f27d78e4bb5baddc9780315",
"body": "…olymarket_daily\n\nmarkets.queue 09:00 ET cron has been failing daily with:\n curl_cffi.requests.exceptions.ConnectionError: Failed to connect to\n gamma-api.polymarket.com port 443 after 2350 ms\n\nHealthcheck (2026-06-04) initially mistook this for TCC because\nmarkets.queue.err.log contained both pre\n[…]\nwork strings; raises immediately on HTTP errors / json errors / other.\n\nNext morning 09:00 cron should clear the err log of these.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(markets): polymarket_client._get DNS retry — same root cause as p…",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-06-04T22:22:49Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "f0c4b76cdcc99e0d51b2ac7ff29e52a6ce9584ff",
"body": "PolyAlert (project #2) Phase 1 Telegram notifier.\n\npolyalert_telegram_bot.py reads polymarket_decide.py --json output,\nfilters by subscriber tier (free/starter/pro), and pushes per-event\nHTML messages to Telegram. Alert criteria:\n - All 🟢 READY verdicts (every tier sees them)\n - 🟡 WATCH with avg_d\n[…]\nhase 2 moves subscriber storage to Supabase (Stripe-gated tiers).\n\nSpec: alex-brain research/projects-2026-06/02-polyalert-spec.md\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(polyalert): Telegram bot foundation + subscribers schema",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-06-01T02:06:43Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "bbc57def08145f3075192dccec2dd006ffd3a041",
"body": "Borrowed pattern from TradingView MCP (greenpeas007/tradingview-mcp-jackson):\nconfig-as-code for event watchlist. Enables PolyAlert (project #2) to scale\nfrom 4 → 100+ events without editing Python source.\n\nrules.json schema:\n - watchlist: array of {slug, friendly, sub_question_filter, tier}\n - al\n[…]\ns, openai_500b) gracefully ignored.\n\nFoundation for PolyAlert SaaS (research/projects-2026-06/02-polyalert-spec.md\nin alex-brain).\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(polyalert #2): rules.json declarative event config",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-06-01T01:31:10Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "0684a22f1df96178355f3cd358c465dcffad4391",
"body": "…er event\n\nPlain-Chinese verdict per event: 🟢 READY / 🟡 WATCH / ⚪ SKIP, with\nconcrete operational instructions when READY:\n - 多少 USDC (fractional Kelly clamp [$20, $100])\n - 买 YES/NO + max entry price\n - take-profit + stop-loss levels\n - max P&L upside/downside\n - hold duration\n\nDecision rules:\n[…]\nlymarket_decide.py via subprocess\n - Subject line shows verdict at glance\n - Detailed backtest tables moved to bottom (can skip)\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(markets/auto): polymarket_decide.py — concrete entry decisions p…",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-05-31T16:28:33Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "dbc5e8ca0f14904fc406a8f41a39ac471654a2e7",
"body": "…sim, ATR stops\n\nThree ships across 2 days that flip stock side from -10% paper P&L to\n+59% paper P&L on the same decision log.\n\nPhase A #1 — polymarket_daily.py\n- Add estimate_p_yes() — Claude Haiku 1-shot probability estimate per event\n- JSONL output now includes our_p_yes / our_conviction / our_r\n[…]\no-paper/2026-05-27.md (alex-brain) — first P&L report\n- research/portfolio-paper/2026-05-29.md (alex-brain) — +ATR scenario report\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(markets/auto): Phase A/B1 — polymarket self-estimate, paper P&L …",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-05-29T16:59:49Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "ad1b17663065a020eb9636aca1ea5cb810b4775b",
"body": "Adds 30-day rolling pairwise correlation across the 14-ticker watchlist\nto spacex-daily brief. Flags 'diversification illusion': when two\nTrend setups have correlation > 0.7, sizing both Full or Half is\ncloser to leverage than hedged diversification.\n\nFirst run caught 3 real illusions today (all in \n[…]\nr. System now surfaces this BEFORE trade.\n\nCost: 1 yfinance batch download per cron run (~3s wall time).\nNo new cron, no new deps.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(markets/auto): correlation matrix + diversification illusion alert",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-05-13T19:35:14Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "141261c71158f09439df7b3c641dbb201eb275ad",
"body": "Adds 'Recent insider activity' table to news-morning brief — last 14\ndays of material Form 4 transactions across the 14-ticker watchlist,\nfiltered to Director / CEO / CFO / 10%+ owner only.\n\nFirst run found 7 trades, ALL SELLs, zero BUYs (bearish baseline).\nStandout: LUNR's 10%+ owner Ghaffarian sol\n[…]\noute returned mixed\nforms despite type=4 filter).\n\nCost: ~14 yfinance calls per news-morning run = +5s wall time, $0.\nNo new cron.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(markets/auto): SEC Form 4 insider transactions via yfinance",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-05-13T19:30:37Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "7d9a973e729973a1a2f309996428aa35426398ca",
"body": "Two additions today:\n\n(1) daily-brief/ — mirror of the personal AI research pipeline at\n ~/.orallexa/daily-brief/. Six files (daily_brief.py, weekly_review.py,\n heartbeat_check.py, 2 .sh wrappers, curriculum.yaml) now have git\n backup so the multi-machine Mac switch + disk-failure scenarios\n[…]\nia the new cross-system integration (separate commit, daily_brief.py\nedits live only at canonical for now since not in this repo).\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat: daily-brief git mirror + Polymarket IP heartbeat in news-morning",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-05-13T19:26:00Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "f59063e508633acc9edda702b9e2c31520178e77",
"body": "…+ Brier drift\n\nFour enrichments shipping together as one pipeline upgrade:\n\n(1) VIX regime detector — yfinance ^VIX. Tiers:\n < 15 → calm\n 15-20 → mildly elevated (no change)\n 20-30 → elevated (downgrade Trend one tier)\n > 30 → panic (force everything to Tiny/Pass)\n First run today:\n[…]\nmpt drift /\n regime change / data issue). Suggests audit action.\n\nCost: zero additional Claude calls. yfinance fetches add ~2s.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(markets/auto): VIX regime + earnings calendar + sector rotation …",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-05-13T15:40:05Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "086ce6d322f286e8232ffaa05dd084bf0564f9b5",
"body": "Adds Follow-Through Day detector (William O'Neil / IBD signal that\nconfirms a market bottom). When FTD fires on S&P 500 or NASDAQ:\n- 4-7 trading days past a recent low\n- index gains ≥ 1.7% on the day\n- volume > prior day\nthen all 'Trend' setups upgrade one tier:\n- Half → Full🔥 (regardless of confide\n[…]\nitive upgrade.\n\nSourced from tradermonty/claude-trading-skills (2026-05-13\nGitHub scan). No new cron, no new deps beyond yfinance.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(markets/auto): FTD detector — regime upgrade for Trend setups",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-05-13T15:34:59Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c02119ddd2e6a7930de67ea93e96bb5ee6a55757",
"body": "…meworks\n\nMirror of the canonical install at ~/.orallexa/markets/ into git for\nversion history. Three-cron pipeline that runs unattended:\n\n 09:00 NY news_morning.py → pre-market RSS + 14-ticker filter + Claude impact tag\n 14:00 NY spacex-daily.sh → Orallexa pilot 14 tickers + setup classif\n[…]\n/. This mirror is for\nops review + version diff. Future enhancement: symlink canonical into\nthis repo so edits go straight to git.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(markets/auto): daily-research cron stack — 3 cron + 5 master fra…",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-05-13T14:50:33Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "4f9d845c1bc51bcea20d0de595689aeabdfda098",
"body": "…rprint\n\nPolymarket Gamma + CLOB are Cloudflare-fronted with Bot Fight Mode enabled.\nPlain `requests` (and default macOS curl) get TLS-reset at handshake layer\nbecause LibreSSL's TLS fingerprint is flagged as bot. Verified 2026-05-12\non both gamma-api and clob endpoints.\n\nFix: lazy-import curl_cffi.\n[…]\npires OR we move to a\nfresh IP (VPN / mobile hotspot), the curl_cffi backend should pass\nthrough Cloudflare cleanly going forward.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(markets/polymarket): use curl_cffi to bypass Cloudflare TLS finge…",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-05-12T18:51:24Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5d0fc56d4535b7f1d3af3ae4afee0e91c44dd045",
"body": "…ge chain\n\nInspired by yorkeccak/Polyseer (2026-05) — a 5th \"Critic\" agent that\nreads the entire debate chain (Bull + Bear + Judge) and flags structural\nfailures the Judge may have missed:\n\n - same-source bias (both sides cite the same single article)\n - missing base-rate anchor (Judge gave a prob\n[…]\nperty, queue card\n rendering for all 3 verdicts + the no-Critic backward-compat case\n\n47/47 tests passing (34 prior + 13 Critic).\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(markets): add Critic agent — 5th voice that audits Bull/Bear/Jud…",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-05-12T03:32:35Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "346d78e18ae80a2ff6dea22318139eddb506ad54",
"body": "Previously the launchd plists invoked python directly. Now they invoke\ntwo thin bash wrappers under `scripts/`:\n\n- markets-morning.sh → run `queue` then `open ~/.orallexa/markets/queue/pending/`\n- markets-evening.sh → run `retro` then `open ~/.orallexa/markets/retro/<today>.md`\n\nThe `open` calls s\n[…]\nboth scripts (syntax OK)\n- launchctl list shows both labels loaded\n- plists reference /Users/alexji/.../scripts/markets-morning.sh\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(markets/scheduler): wrap cron in shell scripts so Finder auto-opens",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-05-12T01:27:51Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "b3f5fdd8d4ad1e96881b5faaeba7aa4968cef1e6",
"body": "Kalshi rebranded their REST schema in 2024:\n- last_price → last_price_dollars (already 0..1, no /100 needed)\n- yes_bid → yes_bid_dollars; yes_ask → yes_ask_dollars\n- volume → notional_value_dollars\n- open_interest → open_interest_fp\n- Event tickers use KX prefix (KXNBAGAME, KXMLBRFI, KXFED) instead \n[…]\nmics, etc.\n\nVerified against live demo-api.kalshi.co: NBA Detroit/Cleveland game 5\nparses correctly with YES=0.610 and cat=sports.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(markets/kalshi): adapt to Kalshi 2024+ schema (_dollars suffix)",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-05-12T01:15:44Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "bd62bbee9d22415ede3676687e6cf40519993f34",
"body": "Builds the daily HITL operating loop on top of v0.1 markets module:\n\n- markets/pnl_tracker.py — parses decided/*.md cards for checked\n decision boxes; persists Decisions to ~/.orallexa/markets/positions.jsonl\n with dedup on market_id. PnL math for binary YES/NO bets including the\n asymmetric NO-s\n[…]\n parsed it as side=NO position=$0 (sizing skipped), retro\nrendered the open-position table at ~/.orallexa/markets/retro/<date>.md.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(markets): v0.2 — PnL ledger + retro journal + launchd scheduler",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-05-12T00:01:17Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "186d9c871114803ea1bca902a9b16cb5affbe628",
"body": "Adds a platform-agnostic markets/ package that adapts Orallexa's Bull/Bear\nLangGraph architecture to CFTC-regulated binary prediction markets. v0.1 is\nread-only by design — no wallet, no executor, no auto-trade. The only\noutput is a morning HITL markdown queue at ~/.orallexa/markets/queue/pending/\nw\n[…]\nngle-month drawdown >15% bankroll → 30-day pause + manual review\n3. Any path violating CFTC/Kalshi/Polymarket ToS → immediate stop\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(markets): v0.1 — Kalshi + Polymarket binary-event prediction module",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-05-11T23:46:56Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "4ed68be78caafd58be9c3286c48af9f94944debe",
"body": "Reverse-direction cross-link to vibex's /about → \"Sister project — Orallexa\"\nsection shipped in same session. Footer now reads \"Same author also\nshipped VibeXForge — Product Hunt where Claude is the judge\" with\n?ref=orallexa attribution.\n\nFree traffic exchange between two parallel-launching projects.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(leaderboard): cross-link VibeXForge in footer",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-05-07T22:27:49Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "7cc35231c3c6ac860f3211ec3db8484502f167b8",
"body": "…chd plist\n\nMirrors what we did for VibeXForge: code-side burn down to zero,\noperational steps documented, scheduled artifacts queued.\n\n== scripts/run_daily_pilot.py ==\nLast-mile glue between OrallexaBrain.run_prediction() and\nAlpacaExecutor.execute_signal(). Runs 7-ticker watchlist daily,\nappends e\n[…]\nrading, Wed Twitter +\nLinkedIn + Bluesky + Dev.to, Thu VC outreach + AI infra directory\nsubmissions. Includes Day-7 decision gate.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(launch): orallexa launch runbook + daily pilot + dspy gha + laun…",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-05-07T19:42:04Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "127e82d66a9eb049cab54d9783d95706a8c521f5",
"body": "Both gates currently choking traction are data gates, not code gates.\nThis doc lays out the 30-day operational path to clear them.\n\nGate 1 — Alpaca paper pilot:\n- bot/alpaca_executor.py is done; memory_data/decision_log.json\n is empty (zero production decisions logged)\n- 5-step setup: Alpaca accoun\n[…]\nsts + 1.41 Sharpe\" into \"trader X used this\".\nThe marketing-agent r/algotrading draft (already queued) is the\nrecruitment surface.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(roadmap): 30-day unblock path — Alpaca pilot + DSPy Phase B compile",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-05-07T06:13:49Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "e9e5e555c7f089f4b736046859e0f863f1be5b99",
"body": "Two artifacts to support the seed-round prep that the README work\nthe last few weeks has been building toward.\n\n== /leaderboard route (orallexa-ui/app/leaderboard/page.tsx) ==\n\nPublic, indexable URL surfacing the walk-forward OOS Sharpe table.\nReads README.md's curated EVAL_TABLE block from GitHub r\n[…]\n budget caps)\n- Spend ($200/mo all-in)\n- 12-week milestone roadmap to 200 paying users\n- $1.5M seed ask with concrete use-of-funds\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(fundraise): public /leaderboard + traction slide",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-05-07T06:08:50Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "ebc6de95717645e71bc641f9dfc4e1f413ef169f",
"body": "…cron\n\nThe Day 8-9 spike shipped a vision-vs-text evaluator and nightly cron, but\nno production caller passes multimodal=True — both api_server.py:319 and\ncore/brain.py:440 leave the param at its default False. So decision_log\nnever accumulates `extra.multimodal_diff` entries, and the cron is locked\n[…]\n/ negative / garbage,\nthe partial-rate distribution (~300/1000 hits at 0.3), and env fallback.\n\nBoth READMEs documented (EN + 中文).\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(multimodal): env-gated sampling so prod actually feeds the lift …",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-05-07T03:29:02Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c28cd0fca640a2f86b69939047d0e2ee495c857e",
"body": "…otate cache key\n\nTwo bugs found in pre-landing review of the Day 8-9 spike:\n\n1. build_multimodal_eval_set.py exited 1 when memory_data/decision_log.json\n was absent, contradicting the workflow's stated contract (\"no data ->\n exits 0\"). Cron has been red 5 days running (2026-04-29 -> 2026-05-03)\n[…]\nrestore from the v1 prefix; each run saves fresh while starting from\n the most recent snapshot.\n\n41 multimodal tests still pass.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(ci): unbreak multimodal-lift nightly — honor no-data contract + r…",
"author_name": "xji",
"author_login": null,
"committed_at": "2026-05-04T23:50:03Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "14175debb5f63ae99b3380030e1000bbc72981d1",
"body": "Day 8 (demo orchestrator):\n* scripts/demo_multimodal_debate.py — single command runs the full\n pipeline (render -> panel -> diff -> markdown report). Two modes:\n live (~$0.005/run, hits Anthropic) and --mock (zero API calls,\n canned responses designed to surface a killer disagreement —\n text say\n[…]\nty), end-to-end run_demo\nmock-mode with and without --report.\n\nSuite: 990 passed (978 -> +12).\n\nREADME + README_CN: tests badge 920 -> 990, Architecture table now\ndocuments the Multi-modal Debate row.",
"is_bot": false,
"headline": "feat: multi-modal debate Day 8-9 — demo orchestrator + nightly lift cron",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-28T05:07:32Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "29d41deda623539d10c2ec4e29c8c45e34162109",
"body": "…urns, ship/reject lift\n\nDay 7 closes the loop on the multi-modal debate spike. Mirrors the\nDSPy Phase B pattern: extract → label → evaluate → ship/reject.\n\n* scripts/build_multimodal_eval_set.py: pulls every decision_log record\n with extra.multimodal_diff, expands to one row per pair, attaches N-d\n[…]\nwhen-text-wrong / per-class), decide (every status branch\n+ inclusive threshold), end-to-end synthesize→filter→evaluate→decide.\n\nSuite: full path 949 (Day 6) + 6 (stash) + 23 (harness) = 978 expected.",
"is_bot": false,
"headline": "feat: multimodal eval harness — extract pairs, label with forward ret…",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-28T04:52:50Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7d63c25133fa862cb13b58945b1a9acd7a3baad0",
"body": "…_log\n\nDay 3-5 produced the diff inside run_perspective_panel; this Day 6\nchange persists it. Same pattern as the Phase 10 debate text stash —\nevery /api/deep-analysis with multimodal=True now leaves a row in\ndecision_log carrying the text-vs-vision comparison. Future\nbuild_multimodal_eval_set.py ex\n[…]\nash conditional, to_dict() serialization, save_decision disk\nround-trip, extractor-eligibility gate finds non-empty diffs only.\n\nSuite: full path 949 (pre-Day-6) + 6 new = 955 once main suite re-runs.",
"is_bot": false,
"headline": "feat: stash multimodal_diff on decision.extra so it lands in decision…",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-28T04:47:01Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "709276d25b3da2801be9a87a2ced51b37ed46dce",
"body": "… diff helper\n\nDay 1-2 shipped the K-line renderer. This wires it into run_perspective_panel\nso a chart PNG can be sent alongside the text context for selected roles,\nand produces a structured comparison of text vs vision decisions.\n\n* PerspectiveResult.modality field (default \"text\", set to \"vision\n[…]\nt this unblocks: stash multimodal_diff on decision_log, accumulate\na few hundred deep-analyses with forward-return labels, decide\nwhether vision earns its seat — same eval-set pattern as DSPy Phase B.",
"is_bot": false,
"headline": "feat: multi-modal debate Day 3-5 — vision-enabled perspective panel +…",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-28T04:39:42Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1362d3f93bc47a8da09f298f76a82a335d2775bc",
"body": "Foundation layer for the multi-modal debate proposal. Pure rendering,\nno LLM wiring yet — that's Day 3-5 once we've eyeballed the output.\n\n* engine/chart_render: render_kline(df) → PNG bytes via mplfinance\n with 20-day MA overlay + volume subpanel. Defaults sized for vision\n APIs (1100x800 @ 100dp\n[…]\nes both decisions on\ndecision.extra['multimodal_diff'], measures the gap. Default off behind\na flag — vision ~5x cost of text — until agreement-vs-ground-truth\nproves the visual signal earns its seat.",
"is_bot": false,
"headline": "feat: multi-modal debate spike — K-line chart renderer (Day 1-2)",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-28T01:39:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "fd9d7fd9183ff96f75057e6109f581ce31282c16",
"body": "The GNN signal cache wiring tests import engine.gnn_signal which itself\nimports torch. CI doesn't install torch (~1GB, not in requirements.txt),\nso the import failed at module load time before importorskip had a chance.\n\nAdding an autouse pytest.importorskip(\"torch\") fixture on the class\nmakes both \n[…]\ntes\nthat CI already deselects with -k filters. We could add this class to\nthe deselect list instead, but importorskip keeps the skip co-located\nwith the test (more discoverable when torch comes back).",
"is_bot": false,
"headline": "fix(ci): skip GNN cache wiring tests when torch is unavailable",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-28T01:06:37Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6d660f516c6d7ce981ca143b00646aed3b602c35",
"body": "…es, full cache coverage\n\nThe headline numbers + Architecture and Testing sections lagged behind\nsix commits' worth of work. This brings them in sync with what's actually\nin the repo as of acb08df.\n\n* Tests badge: ~800 → 920+. Added a green \"0 open issues\" badge.\n* CN README: same updates (Tests cou\n[…]\nge) with case counts and\n scope strings so contributors can find what's covered where.\n* API endpoints table: /healthz row added (Docker / K8s liveness probe\n shipped with the Dockerfile hardening).",
"is_bot": false,
"headline": "docs: refresh README with today's reality — 922 backend tests, 0 issu…",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-28T01:04:37Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "acb08dfce1a9344f6c622581b01ce07bcaf4bb95",
"body": "…call covered\n\nContinuation of the earlier earnings + daily_intel wiring. Two more sites\nthat benefit most: one per-ticker loop (multiplied savings) and the\ncanonical OHLCV entry point.\n\n* engine/gnn_signal._fetch_features: scans 10-50 tickers per call,\n each pulling 6mo of daily bars. Biggest sing\n[…]\n +5 cases covering MarketDataSkill 1d-on / intraday-bypass /\nenv-unset paths and GNN signal cache-hit-no-yfinance / cache-miss-\nper-ticker-fallthrough.\n\nSuite: 922 passed (917 → +5), zero regressions.",
"is_bot": false,
"headline": "feat: cache-wire GNN signal + MarketDataSkill — every daily yfinance …",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-28T00:59:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a6d7e72d6c24b0d729e6bf9f9fbd76890c52b4f4",
"body": "…_by_period\n\nThe earlier earnings.py wiring proved the pattern. This round closes the\ntwo highest-frequency yfinance call sites the cache scaffold left behind.\n\n* engine/historical_cache: get_prices_by_period(ticker, period, max_age_hours)\n translates relative period strings (\"1mo\", \"6mo\", …) into \n[…]\nnknown-period None path, _PERIOD_DAYS contents, and\n_fetch_price_with_volume wiring (cache-on skips yfinance.history,\ncache-off falls through).\n\nSuite: 32/32 cache + earnings + daily_intel tests pass.",
"is_bot": false,
"headline": "feat: extend historical cache to daily_intel hot paths via get_prices…",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-28T00:40:33Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7d4e04cd77428fe59687ff6c2e0814143cabbfe2",
"body": "…LEXA_USE_CACHE\n\nThe HistoricalCache scaffold from Phase 10 had populate_* / load_* methods\nbut no cache-aware fetch path and no production callers. fetch_earnings_calendar\nand compute_pead_stats both hit tk.earnings_dates independently every scan,\nand compute_pead_stats also pulls ~2 years of daily\n[…]\ne helpers (singleton, env-var parse), and the engine.earnings\nwiring proving cache-on skips yfinance and cache-off falls through.\n\nFull suite: 912 passed (894 → +18 incl. last commit's 7 stash tests).",
"is_bot": false,
"headline": "feat: wire historical cache into engine/earnings.py — opt-in via ORAL…",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-28T00:30:02Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b6876f7c132ad28c04036be215ee67ffd93bb386",
"body": "…eline\n\nThe Phase B compile harness needs decision_log records with full\nBull/Bear/Judge text. The stash itself was added in Phase 10 (commit\nf11c79b) but had no test, so any future refactor of debate.py or\nDecisionOutput.to_dict() could silently break Phase B's data source\nwithout anyone noticing u\n[…]\nhars to keep\nJSONL lines bounded) and the graceful-degradation contract — when\nany LLM call raises, run_lightweight_debate returns the initial\nDecisionOutput unchanged with no spurious extra mutation.",
"is_bot": false,
"headline": "test: integration test for debate stash → decision_log → eval-set pip…",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-28T00:19:02Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "dfb9bfaa3f32cf33d5c74612529120064c2ffae1",
"body": "…er, runtime loader\n\nPhase A scaffold from 2026-04-25 left the actual compile path empty.\nThis change wires the full Phase B pipeline:\n\n* scripts/build_dspy_eval_set.py: --synthesize N mode produces deterministic,\n label-balanced (40/40/20 BUY/SELL/WAIT) bull/bear/truth rows so the harness\n can be\n[…]\nases, split disjointness, evaluator math under perfect /\nconstant / raising / None predictors, all four readiness gates,\nload_compiled_judge with cache).\n\nFull suite: 894 passed (pre-Phase-B was 869).",
"is_bot": false,
"headline": "feat: DSPy Phase B compile harness — synthetic eval set, MIPROv2 driv…",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-28T00:13:54Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "73d99b26daf30d7eb05e63c608c8b963c02cb688",
"body": "…iment tests, Japanese i18n\n\nCloses #1, #2, #3, #4.\n\n* Dockerfile: non-root orallexa user (uid 10001), HEALTHCHECK on\n new /healthz endpoint with --start-period=15s\n* engine/strategies.py: vwap_reversion 10th strategy (typical_price\n VWAP, RSI gate, threshold band) registered in registry, defaults\n[…]\n_core.py: bumped expected registry size 9 → 10\n\n48 new tests pass (62 across the affected modules); the wider\nsuite passes (869) — the only adjustment was the pre-existing\nhardcoded 9-entry assertion.",
"is_bot": false,
"headline": "feat: clear good-first-issues — Docker hardening, VWAP strategy, sent…",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-27T23:51:39Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "655cd53cc8119fabcbb11ce999c5d5d821ae69f5",
"body": "… patches; README hero refresh\n\nPure docs commit. No code changes.\n\nREADME hero:\n- Hook updated from '9 ML models, adversarial debate' to actual current\n state: '8-source signal fusion / 10 ML models incl. Kronos / Bull-Bear-\n Judge debate on Claude Opus 4.7'\n- Sub-line calls out Polymarket + Kals\n[…]\nesktop-assistant / gnn (weak SEO);\n added kronos / polymarket / kalshi / signal-fusion /\n claude-opus / prediction-markets / agentic / trading-agent\n (20-topic GitHub cap respected)",
"is_bot": false,
"headline": "docs: marketing pack — X thread + HN + Reddit + DEV.to + awesome-list…",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-26T16:40:24Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f11c79b5f8a52f41e1ee6f923f4d29eb5e49ba57",
"body": "…-platform badges, sync docs\n\n5 follow-ups in one. Phase 9/10 added scaffolding for adaptive weights,\nmulti-provider LLMs, Kronos, Kalshi, DyTopo, CORAL — but until this\ncommit several pieces sat unused in the runtime paths. This wires them\nup so they actually fire on every deep-analysis call.\n\n1. K\n[…]\ningAgents/ATLAS/MarS: each is a research\n session in its own right\n- Ollama provider: ~30 min when someone actually needs offline LLM\n- Kronos checkpoint auto-download: nice-to-have install ergonomic",
"is_bot": false,
"headline": "feat: wire Kronos + SharedMemory + DyTopo into runtime, ship UI multi…",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-26T16:19:44Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "09930d2c99ae09e84f7f34d8f87fe525b0fc469d",
"body": "…hared memory\n\nFour integrations from the latest GitHub trending sweep, all kept\nhonest about which depend on optional installs and which are\npure-Python additions to existing infrastructure.\n\n1. engine/kronos_signal.py — first OSS financial foundation model\n shiyu-coder/Kronos (MIT), pretrained o\n[…]\n append APIs.\n This is purely a read aggregator for prompt injection.\n\nTests: +71 across the 4 modules. Plus 70 mirofish tests still pass\n(perspective_panel signature change is backward-compatible).",
"is_bot": false,
"headline": "feat: Kronos signal + Kalshi markets + DyTopo dynamic panel + CORAL s…",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-26T03:45:57Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "aec99f415c7c177f9982095de2f371b51d1cf97c",
"body": null,
"is_bot": false,
"headline": "chore: gitignore coverage artifacts (.coverage, coverage.xml, htmlcov/)",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-26T03:27:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ffdc85f52796e3349d06daad42e14062e4c62939",
"body": "…ge gate + DSPy/cache scaffolds\n\n7 follow-ups from SESSION_2026-04-25.md, kept honest about which are\nreal implementations and which are scaffolds for next-session work.\n\nA. GeminiProvider (llm/provider.py)\n Symmetric to OpenAIProvider — lazy-imports google-genai, translates\n Anthropic-style mes\n[…]\ndesign):\n - DSPy Phase B compile (needs ≥100 eligible eval records)\n - Real walk-forward backtest (needs cache populated over time)\n - Compression eval against real decision_log (needs records too)",
"is_bot": false,
"headline": "feat: GeminiProvider + Token-Budget UI + watchlist portfolio + covera…",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-26T03:08:44Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "374b315ec08df2060ccf8dad14eccba7e3364394",
"body": "The last 21 commits added meaningful new modules and capabilities but\nthe docs were stuck describing the Phase 7/8 state from 2026-04-24.\nThis commit catches docs up to the current code reality.\n\nCHANGELOG.md: new 2026-04-25 entry covering the full Phase 9 work —\nadaptive feedback loop (source_accur\n[…]\ned this session\n(DSPy Phase B, real backtest with data cache, Gemini provider,\nTokenBudget UI surface, coverage gate scoping), and resume commands.\n\nDoc-only commit. No code changes; no tests touched.",
"is_bot": false,
"headline": "docs: sync README + CHANGELOG + roadmap + checkpoint to Phase 9 reality",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-26T02:37:33Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3701f0c64012e579813fb2f68a300eb5043d54af",
"body": "build-ui CI surfaced a vitest unhandled error:\n ReferenceError: window is not defined\n This error originated in 'app/__tests__/signal-toast.test.tsx'\n\nRoot cause: SignalToast's useEffect scheduled an 8-second setTimeout\nto auto-dismiss each toast, but never cleared the handle. When tests\nfinished \n[…]\nxplicit cleanup — by definition the user clicked while mounted, and\n300ms is short enough that any race is benign. Documented inline.\n\n245 UI tests pass cleanly with no unhandled errors after the fix.",
"is_bot": false,
"headline": "fix(ci): clean up SignalToast timers on unmount",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-26T02:22:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3182ce1e0cae8a837d8fc72e82853aa3d0195c9d",
"body": "Both built with the same constraint: don't add hard deps (openai or\ndspy-ai) to the project. Lazy-import inside the call paths; surface\na clear install message if the user actually flips the toggle without\nhaving installed the SDK first.\n\nA. llm/provider.OpenAIProvider — concrete adapter\n\n Transla\n[…]\nent/partial-failure scenarios.\n\nVerified: 28 new tests pass; all existing tests still green; tsc\nclean; CI failure from the prior session (dynamic_weights float\nrounding) was already fixed in f5dcf56.",
"is_bot": false,
"headline": "feat: OpenAIProvider implementation + DSPy Phase A bootstrap",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-26T02:14:41Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "eaa150dd7838851a54d9338079914cced8c83cf6",
"body": ".github/workflows/source-outcomes.yml runs scripts/update_source_outcomes.py\ndaily at 02:00 UTC (post US close, pre pre-market). Uses actions/cache to\npersist memory_data/source_accuracy.jsonl across runs since the ledger is\nlocal state — last-write-wins single key.\n\nAlways finishes with a --dry-run\n[…]\ns convenience for the\nrepo CI itself. Production deployments should run the script via their\nown platform's cron (Railway / Fly / Vercel cron / systemd timer / k8s\nCronJob) against persistent storage.",
"is_bot": false,
"headline": "ci: scheduled workflow for source-outcomes backfill",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-26T02:01:37Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f5dcf5696589fffd3da1784724caefc9700316a3",
"body": "CI on Linux/Python 3.11 failed in test_total_preserved_when_renormalized\nwith sum=1.0000010000000001 vs expected 1.0 ± 1e-6. The bug: each per-\nsource weight was rounded to 6 decimals, so 4 rounded values summed to\n1.0+1e-6 instead of exactly 1.0. Local Windows runs happened to round\nthe other way a\n[…]\ntable) handle that. Internal math stays full-precision so the\npreserve_total invariant holds exactly: sum(adjusted) ≡ sum(base).\n\n25 dynamic_weights tests still pass; the failing CI test now succeeds.",
"is_bot": false,
"headline": "fix(ci): remove premature rounding in compute_dynamic_weights",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-26T01:55:28Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "366b1f944d5cb4f3f73da4c97583e4ec80294806",
"body": "Two pieces, both cautious:\n\n1. scripts/eval_context_compression.py — A/B safety harness\n Generates synthetic Bull/Bear pairs, runs the Judge with full\n inputs vs compressed inputs (extractive/llm/auto), reports decision\n agreement + confidence drift + char savings. --offline mode uses a\n key\n[…]\nthreshold.\n\nThis is the responsible way to ship a compression feature: build the\ninfrastructure, build the eval, leave the kill switch ON until you've\nproved your specific traffic is safe to compress.",
"is_bot": false,
"headline": "feat: opt-in context compression + A/B eval framework",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-26T00:57:27Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5877c12e2beb60dce85ba2bb9faf07c1f21b87b9",
"body": "Four pieces, all on the same theme — make the multi-agent pipeline\ncontrollable, swappable, and ready to benchmark.\n\n1. TokenBudget wired into deep-analysis (closes the prior commit's loop)\n\n engine.multi_agent_analysis.run_multi_agent_analysis takes an\n optional token_budget=TokenBudget(...). B\n[…]\nllback on errors, auto-\nmode threshold routing, provider registry (default, env var, unknown,\nunimplemented sentinel, protocol compliance), AnthropicProvider\ndelegation. All existing tests still pass.",
"is_bot": false,
"headline": "feat: TokenBudget wired + context compressor + provider shim + DSPy plan",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-26T00:17:06Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a9e30a5b4402524179e3e892bc283e0a0c03285b",
"body": "Claude Opus 4.7 was released 2026-04-16 — 1M context at standard\npricing, new xhigh effort level, task budgets, native 2576px image\nsupport. We adopt the parts that map directly to our deep-analysis\npath without paying 5× cost on routine calls.\n\nA. Selective Opus routing\n - llm/claude_client.py: n\n[…]\nth caps, blocked\ncalls don't run, effort kwarg passing + SDK fallback retry, opus-4-7\npricing, OPUS tier label, tokenizer inflation constant. 70 mirofish\ntests + 23 PostHog/Langfuse tests still green.",
"is_bot": false,
"headline": "feat: Claude Opus 4.7 routing + xhigh effort + TokenBudget enforcer",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-25T22:49:37Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0ec04cb85249dabcb5f3584a1e93c45541dfc5f8",
"body": "The previous commit added a SourceAccuracy ledger and a use_dynamic_weights\nread path, but nothing actually wrote to the ledger — so accuracy stayed\nempty forever and dynamic weighting was structurally dormant. Two-line\ndiagnosis, two-step fix:\n\n1. fuse_signals now auto-records each call's per-sourc\n[…]\n 15 mirofish fusion tests + 51 social/prediction/e2e tests\nall green.\n\nThis is the actual closing of the loop the previous commit only\nscaffolded. Without this, the dynamic_weights work was vaporware.",
"is_bot": false,
"headline": "fix: close the dynamic-weights feedback loop (write path was missing)",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-25T22:30:02Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f8273327ff6281c6a5b72e4eae6a016bcba1ad93",
"body": "Closes the loop the synthetic-backtest result hinted at: static weights\ncan't tell if a source is helping or hurting on this market. Now they\ncan be measured and adjusted.\n\nengine/source_accuracy.py — append-only JSONL ledger\n- record_scores(ticker, scores) at decision time\n- update_outcomes(ticker,\n[…]\nacross runs, which matters because callers rely on\n±15 thresholds for direction labelling and ±50 for high-conviction\nsignals. Without it, dynamic weighting could silently shift the\nthreshold meaning.",
"is_bot": false,
"headline": "feat: per-source accuracy ledger + dynamic fusion weights",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-25T22:20:20Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1f2bcb2810b38a3d7b443a774c991a26cd60a41b",
"body": "…chlist\n\nA. scripts/backtest_fusion_partial.py — synthetic time-series sim\n\n Real social/Polymarket history isn't cached locally so a true walk-\n forward backtest of the new sources isn't possible. This script\n isolates the WEIGHT POLICY question instead: given a plausible\n joint distributio\n[…]\nion, and a\n warning count badge with tooltip when PM raised non-blocking flags.\n\n types.ts: WatchlistItem.pm_preview optional field.\n\nVerified: 8 e2e + 245 UI + smoke-imports all green; tsc clean.",
"is_bot": false,
"headline": "test+feat: synthetic fusion backtest + e2e pipeline tests + PM in wat…",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-25T22:11:32Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4e8793899fef8ba1fe74f2e4e035d221bb3512c9",
"body": "…cks enrichment\n\nA. POST /api/alpaca/execute — Portfolio Manager gate before order placement\n\n New form params: portfolio_json (JSON list of {ticker, value_usd,\n sector?}), portfolio_value, skip_pm. When portfolio + value are\n supplied and skip_pm=false, PM runs BEFORE the Alpaca order:\n - P\n[…]\no\n match.\n\n types.ts: ai_picks entry extended with optional regime + pm_preview\n fields (additive, backward-compatible).\n\nVerified: 245 UI tests + 46 daily_intel/PM tests still green; tsc clean.",
"is_bot": false,
"headline": "feat: PM gate before alpaca/execute + watchlist fusion toggle + ai_pi…",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-24T21:50:48Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1ca30b60bb8d1c0633fe49a84cc7c1931c223fd3",
"body": "…scan\n\n1. llm/regime_llm.py — Claude-backed llm_fn for regime_strategist\n\n Drop-in 'llm_fn' parameter for propose_regime_strategy. Builds a\n prompt from the heuristic baseline + recent feature snapshot\n (close trajectory, ADX, ATR/Close, RSI), asks Claude for minor\n JSON-structured param twe\n[…]\n,\n yfinance options + insiders). Results sort by |conviction| instead\n of confidence.\n\n96 affected tests pass (regime_llm 14, regime_strategist 17, PM 32,\nbrain routing 12, prediction_markets 21).",
"is_bot": false,
"headline": "feat: LLM-backed regime path + PM in /api/analyze + fusion watchlist …",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-24T21:40:25Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ff58a18ce3da57273370a61aea5b344a84102182",
"body": "1. skills/technical_analysis_v2.py:74 — ADX minus_dm zeroing\n\n The line 'minus_dm[minus_dm <= plus_dm] = 0 if False else ...'\n was effectively a no-op (False always selects the else branch).\n Line 73 zeroed plus_dm when dominated, but line 74 never zeroed\n minus_dm symmetrically, biasing ADX\n[…]\n_TO_NODE24=true at workflow-env\n level. Eliminates 'Node 20 actions are deprecated' warnings\n across all jobs without bumping every action version. Works\n through the 2026-06-02 default cutover.",
"is_bot": false,
"headline": "fix+feat+ci: ADX correctness, PM UI card, Node 24 opt-in",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-24T21:34:20Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6e3cc61fd6e99e901c292f0dc4bc2ef1a3a69195",
"body": "docs/SESSION_2026-04-24.md captures the full session outcome so\nfuture sessions can resume without replaying context:\n\n- HEAD / branch / CI status\n- Per-phase module list (what shipped where)\n- Pipeline integration points (daily_intel, perspective_panel, brain)\n- Public API surface additions\n- Tooli\n[…]\ntable (26 commits, 159 tests, 5→8 sources)\n- Known follow-ups kept out of scope (ADX bug, walk-forward backtest,\n SignalFusionCard PM section, Node 20 upgrade)\n- Resume-here commands for next session",
"is_bot": false,
"headline": "docs: session checkpoint — Phase 7/8 resumable state",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-24T21:23:19Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ff442956bbebf11f85cc992989127e72f6c44e69",
"body": "API (api_server.py):\n- GET /api/regime/{ticker} → OrallexaBrain.get_regime_strategy\n- GET /api/layered-memory/{role}/{tk} → LayeredMemory tier stats + narrative\n- /api/deep-analysis response now surfaces portfolio_manager verdict\n from DecisionOutput.extra when upstream populated it\n- Bo\n[…]\nom BULLISH (+21) → NEUTRAL (+8) after\n adding social/earnings/prediction-markets, confirming the expansion\n actually moves decisions.\n\n245 UI tests + 37+ affected backend tests all green. tsc clean.",
"is_bot": false,
"headline": "feat: API + UI + docs + fusion comparison for Phase 7/8 modules",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-24T21:19:42Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "bf19f4b934aab4e3ed5be20dd2f419dde530014e",
"body": "…pipeline\n\nThree Tier-2 modules hooked into the runtime paths that already existed:\n\n1. engine/daily_intel._fetch_headlines — opt-in Google News + Yahoo RSS\n path gated on DAILY_INTEL_USE_RSS env flag. Items merged with the\n existing yfinance NewsSkill output and deduped via fuzzy title match\n \n[…]\nunknown'} on any data-prep failure.\n\nTests: +2 new (regime proposal happy path + fetch failure). Existing\n39 daily_intel / news_aggregator / 9 perspective-panel / 12 brain\nintegration tests all green.",
"is_bot": false,
"headline": "feat: wire news_aggregator + layered_memory + regime_strategist into …",
"author_name": "orallexa",
"author_login": "alex-jb09",
"committed_at": "2026-04-24T20:55:11Z",
"body_truncated": true,
"is_coding_agent": false
}
],
"releases_count": 5,
"commits_last_year": 263,
"latest_release_at": "2026-07-08T14:24:37Z",
"latest_release_tag": "v1.2.2",
"releases_from_tags": false,
"days_since_last_push": 14,
"active_weeks_last_year": 15,
"days_since_latest_release": 18,
"mean_days_between_releases": 23.9
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 85,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": true
},
"ecosystem": {
"packages": []
},
"popularity": {
"forks": 18,
"stars": 60,
"watchers": 1,
"fork_history": {
"days": [
{
"date": "2026-04-03",
"count": 1
},
{
"date": "2026-04-18",
"count": 3
},
{
"date": "2026-04-27",
"count": 1
},
{
"date": "2026-05-03",
"count": 1
},
{
"date": "2026-05-10",
"count": 1
},
{
"date": "2026-05-12",
"count": 1
},
{
"date": "2026-05-21",
"count": 1
},
{
"date": "2026-05-30",
"count": 2
},
{
"date": "2026-06-02",
"count": 1
},
{
"date": "2026-06-16",
"count": 1
},
{
"date": "2026-06-24",
"count": 1
},
{
"date": "2026-06-25",
"count": 1
},
{
"date": "2026-07-01",
"count": 1
},
{
"date": "2026-07-08",
"count": 1
},
{
"date": "2026-07-22",
"count": 1
}
],
"complete": true,
"collected": 18,
"total_forks": 18
},
"star_history": null,
"open_issues_and_prs": 4
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": true,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [
"orallexa-ui/tsconfig.json"
],
"toolchain_manifests": [],
"largest_source_bytes": 119716,
"source_files_sampled": 312,
"oversized_source_files": 3,
"agent_instruction_files": [
"CLAUDE.md",
"orallexa-ui/AGENTS.md",
"orallexa-ui/CLAUDE.md"
],
"agent_instruction_max_bytes": 5621
},
"dependencies": {
"manifests": [
"orallexa-ui/package.json",
"requirements-docker.txt",
"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": [
"npm",
"pypi"
],
"dependencies": [
{
"name": "html2canvas",
"manifest": "orallexa-ui/package.json",
"ecosystem": "npm",
"version_constraint": "^1.4.1"
},
{
"name": "lightweight-charts",
"manifest": "orallexa-ui/package.json",
"ecosystem": "npm",
"version_constraint": "^5.1.0"
},
{
"name": "next",
"manifest": "orallexa-ui/package.json",
"ecosystem": "npm",
"version_constraint": "16.2.1"
},
{
"name": "react",
"manifest": "orallexa-ui/package.json",
"ecosystem": "npm",
"version_constraint": "19.2.4"
},
{
"name": "react-dom",
"manifest": "orallexa-ui/package.json",
"ecosystem": "npm",
"version_constraint": "19.2.4"
}
],
"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": 3,
"merged_prs": 0,
"open_issues": 1,
"closed_ratio": 0.8,
"closed_issues": 4,
"closed_unmerged_prs": 0
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "alex-jb09",
"commits": 197,
"avatar_url": "https://avatars.githubusercontent.com/u/43049029?v=4"
},
{
"type": "User",
"login": "alex-jb",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/43049907?v=4"
}
],
"contributors_sampled": 2,
"top_contributor_share": 0.995
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"ci.yml",
"dspy-compile.yml",
"multimodal-lift.yml",
"pages.yml",
"source-outcomes.yml"
],
"has_docs_dir": true,
"linter_configs": [
"eslint.config.mjs"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"package-lock.json"
],
"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": 0,
"reason": "branch protection not enabled on development/release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 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": 0,
"reason": "project has 0 contributing companies or organizations -- score normalized to 0",
"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": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "30 commit(s) and 3 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": 10,
"reason": "security policy file 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": "53 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "794a2ec0ce0b1271b468814eee47c2cd4edde147",
"ran_at": "2026-07-26T17:28:41Z",
"aggregate_score": 3.6,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": true,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-26T06:05:03Z",
"oldest_open_prs": [
{
"number": 5,
"created_at": "2026-04-18T02:51:59Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 6,
"created_at": "2026-04-18T14:21:16Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 7,
"created_at": "2026-04-18T21:55:34Z",
"last_comment_at": null,
"last_comment_author": null
}
],
"last_merged_pr_at": null,
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 10,
"created_at": "2026-06-18T13:59:26Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/alex-jb/orallexa-ai-trading-agent",
"host": "github.com",
"name": "orallexa-ai-trading-agent",
"owner": "alex-jb"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 61,
"inputs": {
"security": 36,
"vitality": 80,
"community": 57,
"governance": 40,
"engineering": 88
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 80,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "moderate",
"name": "Development activity",
"note": null,
"notes": [],
"value": 67,
"inputs": {
"commits_last_year": 263,
"human_commit_share": 1,
"days_since_last_push": 14,
"active_weeks_last_year": 15
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 14 days ago",
"points": 28.8,
"status": "partial",
"details": [
{
"code": "push_recency",
"params": {
"days": 14
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "15/52 weeks with commits",
"points": 10.4,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 15
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "263 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 263
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 100,
"inputs": {
"releases_count": 5,
"latest_release_tag": "v1.2.2",
"releases_from_tags": false,
"days_since_latest_release": 18,
"mean_days_between_releases": 23.9
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "5 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 5
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 18 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 18
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~23.9 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 23.9
}
}
],
"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": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "unverified",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": "repository_too_young",
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": null,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "maintenance record not established from the collected data",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_unverified",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "moderate",
"name": "Community & Adoption",
"value": 57,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "at_risk",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 39,
"inputs": {
"forks": 18,
"stars": 60,
"watchers": 1,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "60 stars",
"points": 28.7,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 60
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "18 forks",
"points": 10.3,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 18
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "1 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 1
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "good",
"name": "Community health",
"note": null,
"notes": [],
"value": 77,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 18,
"status": "met",
"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": 6.3,
"status": "met",
"details": [],
"max_points": 6.3
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "at_risk",
"name": "Sustainability & Governance",
"value": 40,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 12,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 2,
"top_contributor_share": 0.995
},
"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 100% of commits",
"points": 0.1,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 100
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "2 contributors",
"points": 2.7,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 2
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "moderate",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): PR acceptance. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"pr_acceptance"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 61,
"inputs": {
"merged_prs": 0,
"open_issues": 1,
"closed_issues": 4,
"issue_closed_ratio": 0.8,
"closed_unmerged_prs": 0
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "80% of issues closed",
"points": 37.4,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 80
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "no decided pull requests or no data",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_decided_prs_or_data",
"params": {}
}
],
"max_points": 38.25
},
{
"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": "moderate",
"name": "Ownership & stewardship",
"note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"verified_domain"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 53,
"inputs": {
"followers": 9,
"owner_type": "User",
"is_verified": null,
"owner_login": "alex-jb",
"public_repos": 67,
"account_age_days": 2879
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "personal (user) account",
"points": 10,
"status": "partial",
"details": [
{
"code": "owner_personal",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": "not applicable to user accounts",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_applicable_to_user_accounts",
"params": {}
}
],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "9 followers of alex-jb",
"points": 7.2,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 9,
"login": "alex-jb"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "67 public repos, account ~7 yr old",
"points": 25,
"status": "met",
"details": [
{
"code": "public_repos",
"params": {
"count": 67
}
},
{
"code": "account_age_years",
"params": {
"years": 7
}
}
],
"max_points": 25
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "excellent",
"name": "Engineering Quality",
"value": 88,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"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": 80,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "5 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 5
}
}
],
"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": "eslint.config.mjs",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "eslint.config.mjs"
}
}
],
"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": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"topics": [
"ai-trading",
"algorithmic-trading",
"claude",
"fintech",
"llm",
"machine-learning",
"multi-agent",
"python",
"pytorch",
"quantitative-finance",
"reinforcement-learning",
"trading-bot",
"agentic",
"claude-opus",
"kalshi",
"kronos",
"polymarket",
"prediction-markets",
"signal-fusion",
"trading-agent"
],
"has_wiki": true,
"homepage": "https://orallexa-ui.vercel.app",
"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://orallexa-ui.vercel.app",
"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": "20 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 20
}
}
],
"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": 36,
"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": 36,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 15,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 3,
"scorecard_aggregate": 3.6
},
"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 not enabled on development/release branches",
"points": 0,
"status": "missed",
"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 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"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.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "30 commit(s) and 3 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 detected",
"points": 5,
"status": "met",
"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": "53 existing vulnerabilities detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "good",
"name": "AI Readiness",
"value": 75,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 1,
"agent_instruction_files": [
"CLAUDE.md",
"orallexa-ui/AGENTS.md",
"orallexa-ui/CLAUDE.md"
],
"agent_instruction_max_bytes": 5621
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "CLAUDE.md, orallexa-ui/AGENTS.md, orallexa-ui/CLAUDE.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "CLAUDE.md, orallexa-ui/AGENTS.md, orallexa-ui/CLAUDE.md"
}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "100 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 100,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "moderate",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 64,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"package-lock.json"
],
"has_dockerfile": true,
"typed_language": false,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [
"orallexa-ui/tsconfig.json"
],
"agent_commit_share": 0.54,
"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": "eslint.config.mjs",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "eslint.config.mjs"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "orallexa-ui/tsconfig.json",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "orallexa-ui/tsconfig.json"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "Dockerfile, lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Dockerfile, lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "54 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 54,
"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": "good",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 82,
"inputs": {
"primary_language": "Python",
"largest_source_bytes": 119716,
"source_files_sampled": 312,
"oversized_source_files": 3
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Python with type-check config (orallexa-ui/tsconfig.json)",
"points": 27,
"status": "partial",
"details": [
{
"code": "typecheck_config_language",
"params": {
"files": "orallexa-ui/tsconfig.json",
"language": "Python"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "3/312 source files over 60KB",
"points": 54.5,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 312,
"oversized": 3
}
}
],
"max_points": 55
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
],
"report_type": "repository",
"generated_at": "2026-07-26T17:29:06.413895Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/a/alex-jb/orallexa-ai-trading-agent.svg",
"full_name": "alex-jb/orallexa-ai-trading-agent",
"license_state": "standard",
"license_spdx": "MIT"
}