Skip to content

Resolve 0.1.0 provider qualification blockers - #33

Merged
stefan-jansen merged 1 commit into
mainfrom
release/0.1.0-provider-qualification
Aug 9, 2026
Merged

stefan-jansen merged 1 commit into
mainfrom
release/0.1.0-provider-qualification

Conversation

@stefan-jansen

Copy link
Copy Markdown
Contributor

Resolves the final provider qualification blockers for 0.1.0.

  • Normalizes surrounding Alpaca credential whitespace before constructing HTTP headers.
  • Rejects credentials that normalize to empty.
  • Adds regression coverage for the trailing newline reproduced by live contract run 31313306422.
  • Records CryptoCompare as included but unverified for 0.1.0 because account registration is unavailable.
  • Removes only CryptoCompare from mandatory 0.1.0 contract evidence while retaining its adapter and optional contract workflow.

Verification:

  • 3,571 offline tests passed.
  • Focused provider and release-policy tests passed after the final verifier refinement.
  • Ruff, formatting, ty, and strict MkDocs passed.

Copilot AI lite review requested due to automatic review settings August 9, 2026 12:33

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR tightens release-qualification verification for provider contract runs and hardens Alpaca authentication by normalizing credential whitespace, while updating documentation to reflect CryptoCompare’s “included but unverified” status for the 0.1.0 release process.

Changes:

  • Normalize Alpaca API credentials by stripping surrounding whitespace and reject credentials that normalize to empty; add regression tests for newline/whitespace cases.
  • Update provider-contract verification policy by removing CryptoCompare from REQUIRED_CONTRACTS and introducing UNVERIFIED_CONTRACTS reporting + tests.
  • Update docs/README to communicate CryptoCompare’s unverified (not release-qualified) status for 0.1.0.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
src/ml4t/data/providers/alpaca.py Strip surrounding whitespace from resolved API credentials before building auth headers; enforce non-empty credentials.
tests/test_alpaca_provider.py Add regression tests for whitespace/newline credentials and local rejection of whitespace-only credentials.
scripts/verify_provider_contract_runs.py Remove CryptoCompare from required contracts and add UNVERIFIED_CONTRACTS reporting.
tests/test_provider_contract_verification.py Extend verification tests to assert CryptoCompare is unverified and not release-qualified.
README.md Document CryptoCompare as included but not release-qualified for 0.1.0.
docs/providers/index.md Update provider comparison table + add a note about CryptoCompare not being release-qualified for 0.1.0.
docs/providers/cryptocompare.md Mark CryptoCompare as included-for-evaluation and not release-qualified for 0.1.0; remove specific tier claims.
docs/getting-started/provider-selection.md Update selection guidance/flowchart and comparison matrix to reflect CryptoCompare’s unverified status.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread docs/providers/index.md
Comment on lines 25 to 29
| [Finnhub](finnhub.md) | US quotes; premium OHLCV | 60 requests/minute | Thread | Yes |
| [Binance](binance.md) | Crypto | Unlimited | Native | No |
| [OKX](okx.md) | Crypto Perpetuals | No geo-limits | Native | No |
| [CryptoCompare](cryptocompare.md) | Crypto | Good | Native | Required |
| [CryptoCompare](cryptocompare.md) | Crypto | Unverified for 0.1.0 | Native | Required |
| [Oanda](oanda.md) | Forex | Demo only | Thread | Yes |
Comment on lines 67 to 72
| Provider | Crypto | US Stocks | Global Stocks | Forex | Futures | API Key | Free Tier | Best For |
|----------|--------|-----------|---------------|-------|---------|---------|-----------|----------|
| **CoinGecko** | ✅ | ❌ | ❌ | ❌ | ❌ | No | Unlimited | Crypto historical |
| **CryptoCompare** | ✅ | ❌ | ❌ | ❌ | ❌ | Yes | Good | Crypto real-time |
| **CryptoCompare** | ✅ | ❌ | ❌ | ❌ | ❌ | Yes | Unverified | Evaluation only |
| **Tiingo** | ✅ | ✅ | ❌ | ❌ | ❌ | Yes | 1000/day | High-quality stocks |
| **EODHD** | ❌ | ✅ | ✅ | ❌ | ❌ | Yes | 20 calls/day, one-year history | Global stocks |
Comment thread README.md
Comment on lines 126 to +132
| Twelve Data | Multi-asset coverage |
| Databento | CME/ICE futures; OPRA options |
| Massive | US equities, options, futures, forex, crypto |
| Finnhub | 70+ global exchanges |
| OANDA | Forex broker data |
| CryptoCompare | Crypto market data; free account key required |
| CryptoCompare | Included adapter; not release-qualified for 0.1.0 |

@stefan-jansen
stefan-jansen merged commit e6066a9 into main Aug 9, 2026
12 of 15 checks passed
@stefan-jansen
stefan-jansen deleted the release/0.1.0-provider-qualification branch August 11, 2026 15:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants