Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
235 commits
Select commit Hold shift + click to select a range
374b0ec
spec(architecture): Create comprehensive data flow architecture speci…
tommy-ca Nov 13, 2025
fb83b7b
docs(architecture): Add comprehensive cryptofeed data flow exploratio…
tommy-ca Nov 13, 2025
411b05f
docs(architecture): Document atomic commit execution for exploration …
tommy-ca Nov 13, 2025
952d6c3
feat(spec): Generate implementation tasks for cryptofeed-data-flow-ar…
tommy-ca Nov 14, 2025
b704d13
docs(core): consolidate user-facing documentation in docs/core/
tommy-ca Nov 14, 2025
c6c476a
docs(analysis): organize all analysis documents into subcategories
tommy-ca Nov 14, 2025
531a6c6
chore(docs): archive execution reports and organize remaining docs
tommy-ca Nov 14, 2025
1dcd5cd
docs(nav): update main documentation index with navigation hub
tommy-ca Nov 14, 2025
4fd2e8b
docs(cleanup): organize root documentation and archive execution reports
tommy-ca Nov 14, 2025
2cc17ef
feat(spec): initialize cryptofeed-quixstreams-source specification
tommy-ca Nov 14, 2025
ab643fd
docs(spec): add cryptofeed-quixstreams-source to SPEC_STATUS.md
tommy-ca Nov 14, 2025
d2277ab
docs(claude): add cryptofeed-quixstreams-source to planning phase
tommy-ca Nov 14, 2025
593ab40
feat(spec): complete requirements, design, and tasks for cryptofeed-q…
tommy-ca Nov 14, 2025
17fe9bf
Merge pull request #11 from tommy-ca/feature/cryptofeed-quixstreams-s…
tommy-ca Nov 14, 2025
0044cee
docs: add data types exploration and quant strategies analysis
tommy-ca Nov 14, 2025
764c390
docs: clarify quixstreams schema version + state store
tommy-ca Nov 15, 2025
d2188c6
docs: mark quixstreams spec ready for build
tommy-ca Nov 15, 2025
8b17b77
docs: refresh quixstreams spec metadata and status
tommy-ca Nov 15, 2025
77124d1
chore(kiro): collapse market-data-kafka-producer to canonical files
tommy-ca Nov 16, 2025
61491b9
docs: refresh README for ingestion scope and proxy tests
tommy-ca Nov 24, 2025
82ec185
docs: modernize INSTALL guidance for fork
tommy-ca Nov 24, 2025
22f2657
chore: archive phase5 reports
tommy-ca Nov 24, 2025
59380e8
chore: refresh kiro guidance
tommy-ca Nov 24, 2025
a427bd6
docs: add kafka proto improvement spec pack
tommy-ca Nov 24, 2025
f8c315c
feat: add protobuf backend package and shims
tommy-ca Nov 24, 2025
79a7bb6
feat: add modular kafka backend with shims
tommy-ca Nov 24, 2025
6c6c3b1
test: cover kafka/protobuf backends and shims
tommy-ca Nov 24, 2025
2ad04ae
fix: align kafka headers and queue defaults with tests
tommy-ca Nov 25, 2025
4125c23
chore: update kiro task completion status
tommy-ca Nov 25, 2025
80c0c79
test: add protobuf serialization matrix and perf check
tommy-ca Nov 25, 2025
f3d2269
chore: mark kafka-proto tasks complete
tommy-ca Nov 25, 2025
56c25e6
chore: close kafka-proto kiro spec tasks
tommy-ca Nov 25, 2025
06855b1
test: add kafka protobuf e2e with redpanda fixtures
tommy-ca Nov 25, 2025
cdca4be
fix: normalize kafka headers for confluent producer
tommy-ca Nov 25, 2025
9b8e687
chore: silence compose version warning
tommy-ca Nov 25, 2025
165e1a0
chore: bump redpanda image to v25.2.11
tommy-ca Nov 25, 2025
64c48e4
refactor: remove unused imports from core Kafka backend modules
tommy-ca Nov 25, 2025
34cc69f
refactor: remove unused imports from protobuf modules
tommy-ca Nov 25, 2025
6ad7ef4
fix: remove duplicate ValidationError class from migration config val…
tommy-ca Nov 25, 2025
fd23932
refactor: reorganize warnings.warn placement in kafka_callback compat…
tommy-ca Nov 25, 2025
01712a0
refactor: remove unused imports from Kafka test files
tommy-ca Nov 25, 2025
48447be
refactor: remove unused imports from consumer template examples
tommy-ca Nov 25, 2025
8536d38
refactor: reorganize warnings.warn placement in remaining compatibili…
tommy-ca Nov 25, 2025
e7b2b47
refactor: remove remaining unused imports
tommy-ca Nov 25, 2025
24a8f48
test: add skip condition for REST integration tests
tommy-ca Nov 25, 2025
1d67cc9
feat: add scoped formatting tools to prevent mass codebase formatting
tommy-ca Nov 25, 2025
1664984
refactor: normalize quotes and reorganize imports in protobuf backend…
tommy-ca Nov 25, 2025
163b6ba
feat: add partitioner imports to kafka_callback module
tommy-ca Nov 25, 2025
a00e6d6
refactor: normalize quotes in Kafka migration config validator tests
tommy-ca Nov 25, 2025
f411223
docs: reorganize Kafka protobuf documentation
tommy-ca Nov 25, 2025
4b807ef
docs: add kafka-backend-maintenance spec
tommy-ca Nov 25, 2025
71eeec6
feat: centralize kafka deprecation warnings
tommy-ca Nov 25, 2025
436b0d5
fix: enforce per-symbol topic requirements
tommy-ca Nov 25, 2025
d27c3db
chore: mark kafka maintenance phase1 tasks done
tommy-ca Nov 25, 2025
88432e5
feat: add legacy kafka config translator
tommy-ca Nov 25, 2025
17dadc1
feat: add kafka config migration validation and CLI
tommy-ca Nov 25, 2025
ca2f697
feat: add kafka health checks
tommy-ca Nov 25, 2025
18585df
feat: extend kafka usage analytics
tommy-ca Nov 25, 2025
5a8ef32
feat: add kafka health alerting hooks
tommy-ca Nov 25, 2025
a901e61
test: add legacy kafka regression suite
tommy-ca Nov 25, 2025
00929e9
test: add migration workflow integration
tommy-ca Nov 25, 2025
95cfda5
test: add kafka regression stability suite
tommy-ca Nov 25, 2025
dda22e3
docs: add phase2 kafka migration guide
tommy-ca Nov 26, 2025
5f710a8
feat(kafka-maintenance): add comprehensive acceptance criteria test c…
tommy-ca Nov 26, 2025
0cf0993
docs(kafka-maintenance): add comprehensive migration guides and docum…
tommy-ca Nov 26, 2025
9c063ad
feat(kafka-maintenance): add timeline and communication system (task …
tommy-ca Nov 26, 2025
62161b5
feat(kafka-maintenance): add documentation maintenance automation (ta…
tommy-ca Nov 26, 2025
776e3c5
feat(kafka-maintenance): integrate all maintenance components (task 6.1)
tommy-ca Nov 26, 2025
bb97d1a
feat(kafka-maintenance): prepare for compatibility shim removal (task…
tommy-ca Nov 26, 2025
0236463
feat(kafka-maintenance): establish long-term maintenance procedures (…
tommy-ca Nov 26, 2025
fef47e7
chore(kafka-maintenance): complete specification implementation and v…
tommy-ca Nov 26, 2025
8483acf
fix(kafka): resolve validation findings from branch review
tommy-ca Nov 26, 2025
fc54f42
chore(todos): remove standalone todo files after spec integration
tommy-ca Nov 26, 2025
22868e5
docs(solutions): document spec validation workflow and critical patterns
tommy-ca Nov 26, 2025
35939b8
docs(kafka-maintenance): add Week 0 completion summary document
tommy-ca Nov 26, 2025
c9cf427
feat(kafka-maintenance): implement Week 0 prerequisite automation (ta…
tommy-ca Nov 26, 2025
beb1f2b
feat(kafka-maintenance): implement staging deployment automation (tas…
tommy-ca Nov 26, 2025
9549c07
feat(kafka-maintenance): implement consumer migration automation (tas…
tommy-ca Nov 26, 2025
b17c64c
feat(kafka-maintenance): implement monitoring deployment automation (…
tommy-ca Nov 26, 2025
9b60f91
feat(kafka-maintenance): implement per-exchange migration automation …
tommy-ca Nov 26, 2025
7ac12bb
docs: add comprehensive rebase plan for feature/kafka-proto-backend
tommy-ca Nov 27, 2025
eaef11a
chore(specs): mark kafka-backend-maintenance tasks complete
tommy-ca Nov 27, 2025
09ec012
fix: resolve buf breakages and lint errors
tommy-ca Nov 27, 2025
8e03617
docs: document protobuf versioning and maturity policy
tommy-ca Nov 27, 2025
1fa9046
feat(proto): add normalized v2beta1 with presence-aware fields
tommy-ca Nov 27, 2025
59bbb3b
chore(buf): track v2beta1 and limit codegen to python+jsonschema
tommy-ca Nov 27, 2025
77d8fc5
ci: add optional buf breaking gate for v2beta1
tommy-ca Nov 27, 2025
ebec32c
feat: add parity fields to v2beta1 trade and order book
tommy-ca Nov 27, 2025
532d17b
docs: align mapping tables with v2beta1 parity fields
tommy-ca Nov 27, 2025
8d97f65
docs: record v2beta1 parity additions in schema changelog
tommy-ca Nov 27, 2025
9730d29
fix: mark batch drain tasks done and require pydantic by default
tommy-ca Nov 27, 2025
8a18c2c
docs(steering): add compound engineering and AI agent guidelines
tommy-ca Nov 27, 2025
18b1cac
docs: add steering and spec prerequisites to AI workflow
tommy-ca Nov 27, 2025
e748bf7
docs(specs): add compound engineering alignment sections
tommy-ca Nov 27, 2025
f6edb68
feat(specs): add kafka-protobuf-binance-e2e specification
tommy-ca Nov 27, 2025
95ba96f
test: add Binance Kafka protobuf E2E integration test
tommy-ca Nov 27, 2025
42cc6bb
docs(solutions): document batch drain task_done fix
tommy-ca Nov 27, 2025
353016c
test: add shared kafka bootstrap helper for tests
tommy-ca Nov 28, 2025
e2a6607
chore: wire kafka bootstrap env into make targets and docs
tommy-ca Nov 28, 2025
6c353f9
chore: add redpanda compose env defaults
tommy-ca Nov 28, 2025
18284fe
docs: update kafka-related specs
tommy-ca Nov 28, 2025
c44cae9
kafka: backend and test updates
tommy-ca Nov 28, 2025
a99b594
chore: bump python support to 3.10-3.13
tommy-ca Nov 28, 2025
593e182
chore: align python support docs and CI regression matrix
tommy-ca Nov 28, 2025
68452ad
fix: harden kafka protobuf headers and serialization path
tommy-ca Nov 29, 2025
1eea982
fix: enforce protobuf cutoff and align kafka proto tests
tommy-ca Nov 29, 2025
eed3bf3
chore: enforce kafka import/protobuf guards in CI
tommy-ca Nov 29, 2025
11cc19a
docs: document protobuf cutoff readiness and CI enforcement
tommy-ca Nov 29, 2025
4db4375
docs/specs: lock protobuf schema authority and cutoff enforcement
tommy-ca Nov 29, 2025
7ef519c
chore: update protobuf helper imports
tommy-ca Nov 29, 2025
1dd5066
chore: prune kafka maintenance to minimal deprecation helpers
tommy-ca Nov 30, 2025
3b1d8b7
fix: stabilize kafka maintenance stubs and header normalization
tommy-ca Nov 30, 2025
a34c509
tests: add shared kafka fixtures and passing binance protobuf e2e
tommy-ca Nov 30, 2025
7ded17b
chore: update binance kafka e2e spec status and validation notes
tommy-ca Nov 30, 2025
9e10acd
chore: simplify kafka maintenance helpers
tommy-ca Nov 30, 2025
c69811f
chore: remove quixstreams source spec
tommy-ca Dec 1, 2025
c4ddfba
chore: remove legacy proto shims and align tests
tommy-ca Dec 2, 2025
721c3c5
docs: note removal of legacy proto modules
tommy-ca Dec 2, 2025
4214e79
chore: enforce Mullvad proxy checksum
tommy-ca Dec 2, 2025
3bcbc5b
test: add proxy handling to binance kafka protobuf e2e
tommy-ca Dec 2, 2025
744220c
docs: update proxy guide for socks5 and mullvad pools
tommy-ca Dec 2, 2025
054a64b
docs: refresh binance e2e and proxy spec notes
tommy-ca Dec 2, 2025
f0eaee9
deps: add uv.lock
tommy-ca Dec 2, 2025
6de673d
docs: standardize socks5 http/ws proxy pool config
tommy-ca Dec 3, 2025
b85dc6b
docs: simplify uv venv usage
tommy-ca Dec 3, 2025
c3065fd
chore(e2e): align recreate instructions with simplified uv venv
tommy-ca Dec 3, 2025
12332d9
docs: standardize uv pytest workflow
tommy-ca Dec 3, 2025
d4ed561
docs: add binance proxy env/pool examples and Mullvad probe helper
tommy-ca Dec 4, 2025
114bc4d
test: harden binance kafka proxy pool resolution
tommy-ca Dec 4, 2025
c6c930d
chore: fix lint in binance kafka proxy tests
tommy-ca Dec 4, 2025
335a6c1
test: add redpanda smoke roundtrip
tommy-ca Dec 4, 2025
92da9f7
test: proxy binance rest via env for kafka e2e
tommy-ca Dec 4, 2025
d2c6cb6
test: document rest proxying requirement for binance kafka e2e
tommy-ca Dec 4, 2025
be208cb
test: preflight binance rest via proxy before kafka e2e
tommy-ca Dec 4, 2025
93cdde8
docs: note http(s)_proxy for binance rest symbol lookup
tommy-ca Dec 4, 2025
d99f783
test: restore http proxy env after binance kafka e2e
tommy-ca Dec 4, 2025
003379d
docs: add reproducible steps for binance kafka e2e via proxies
tommy-ca Dec 4, 2025
b4b92fe
chore: add per-country filter and country column to proxy probe
tommy-ca Dec 4, 2025
816216a
spec: add topic auto-provision to kafka-protobuf-binance-e2e
tommy-ca Dec 5, 2025
9dfdc55
test: add aiokafka topic auto-provision helper
tommy-ca Dec 5, 2025
7f981de
test: support consolidated topics in binance kafka e2e
tommy-ca Dec 5, 2025
4d2b015
test: support socks REST preflight via aiohttp_socks
tommy-ca Dec 5, 2025
6604d5f
test: improve consolidated kafka binance stability (eth symbol, longe…
tommy-ca Dec 5, 2025
1d2a56c
test: read earliest offsets for consolidated l2 orderbook consume
tommy-ca Dec 5, 2025
9cd8911
test: align consolidated l2_book to per-symbol topic fallback
tommy-ca Dec 5, 2025
a0d8f3e
docs,test: document mullvad->kafka e2e and support l2_book consolidated
tommy-ca Dec 5, 2025
c87f30f
fix: cancel connection handler watcher to avoid pending task warnings
tommy-ca Dec 5, 2025
6b498b9
test: import KafkaProtobufCallback from kafka_callback to silence leg…
tommy-ca Dec 5, 2025
4906a70
chore: make backends.kafka canonical and import callback from it
tommy-ca Dec 5, 2025
a12fb6f
feat: proxy-aware symbol bootstrap and listen-key flows
tommy-ca Dec 7, 2025
cfc58ce
feat: proxy-aware OKX server time fetch
tommy-ca Dec 7, 2025
d805bcf
feat: schema registry HTTP timeout and proxy settings
tommy-ca Dec 7, 2025
b3ea238
refactor: replace HTTPSync requests with aiohttp
tommy-ca Dec 7, 2025
ea37374
chore: drop requests from runtime deps
tommy-ca Dec 7, 2025
ff547ae
chore: update kafka callback import guards
tommy-ca Dec 7, 2025
b854234
docs(e2e): add 2025-12-07 binance kafka mullvad run
tommy-ca Dec 7, 2025
d5e7b06
chore(kafka): add mullvad shortcut target for binance e2e
tommy-ca Dec 7, 2025
c0de610
fix(kafka): harden topic provisioning helper and coverage
tommy-ca Dec 7, 2025
bc84828
feat(kafka): add protobuf support for top_of_book and l2_delta
tommy-ca Dec 7, 2025
bfdfe84
feat(kafka): add ticker path to binance protobuf e2e
tommy-ca Dec 7, 2025
247b42d
feat(kafka): add multi-channel binance protobuf e2e (trades+l2_book+t…
tommy-ca Dec 7, 2025
372bd2f
fix(kafka): align data_type header assertion for trades in multi-chan…
tommy-ca Dec 7, 2025
3f0c286
feat(kafka): add binance candle roundtrip and alias candles->candle
tommy-ca Dec 7, 2025
911a129
test(kafka): cover protobuf roundtrip for all market data types
tommy-ca Dec 8, 2025
10300c9
chore(kafka): add placeholders for additional binance market data cha…
tommy-ca Dec 8, 2025
e7053d9
feat(kafka): add binance futures kafka protobuf e2e scaffolding
tommy-ca Dec 8, 2025
3d4cd26
chore(kafka): tune binance futures e2e (perp symbols, longer warmup/t…
tommy-ca Dec 8, 2025
4403f96
docs(e2e): prune historical execution reports
tommy-ca Dec 10, 2025
22f54d7
feat(connection): add exchange_id param to HTTPPoll for proxy routing
tommy-ca Dec 10, 2025
e2b7d14
test(kafka): add binance futures kafka protobuf e2e scaffolding
tommy-ca Dec 10, 2025
c62cb2e
spec(kafka): extend binance e2e spec with futures coverage
tommy-ca Dec 10, 2025
b2dda89
spec(kafka): init binance futures e2e specification
tommy-ca Dec 10, 2025
4f96e5b
spec(kafka): remove consumer scope from kafka specs per CLAUDE.md
tommy-ca Dec 10, 2025
7b4a8c8
docs: add proxy testing, skip conditions and timeout guides (FR7)
tommy-ca Dec 11, 2025
638452f
refactor: deprecate HTTPSync and audit requests usage (FR7)
tommy-ca Dec 11, 2025
0056e75
feat(kafka): migrate SchemaRegistry to aiohttp with proxy support (FR7)
tommy-ca Dec 11, 2025
a03dfb6
test(e2e): enable proxy-aware execution for Binance Kafka pipeline (FR7)
tommy-ca Dec 11, 2025
f8e4267
docs(spec): mark Phase 6 and FR7 as complete
tommy-ca Dec 11, 2025
237a207
chore(test): remove orphaned kafka maintenance tests
tommy-ca Dec 11, 2025
9de906d
chore(test): remove remaining orphaned phase2 and maintenance tests
tommy-ca Dec 11, 2025
5d0d300
test(kafka): fix schema version assertion
tommy-ca Dec 11, 2025
cc99bb6
fix(lint): resolve ruff violations
tommy-ca Dec 11, 2025
afa03d6
chore: remove REBASE_PLAN.md
tommy-ca Dec 11, 2025
737bd9b
style: apply ruff auto-fixes
tommy-ca Dec 11, 2025
cbd768b
fix(kafka): replace json.dumpb with dumps_bytes to fix AttributeError
tommy-ca Dec 11, 2025
e6fdfb3
docs(kafka): document frozen behavior exception and add pre-commit guard
tommy-ca Dec 11, 2025
19beda1
test(kafka): add unit tests for serializer fix validation
tommy-ca Dec 11, 2025
dbafcd3
docs(spec): update CODE_REVIEW_ISSUES.md with complete implementation…
tommy-ca Dec 11, 2025
ba0fc2e
chore(spec): remove temporary implementation artifacts from kafka-pro…
tommy-ca Dec 11, 2025
4bb918f
docs(spec): add PR #16 blocking issues analysis
tommy-ca Dec 11, 2025
0acbffd
docs(spec): update PR #16 blocking issues with commit analysis and re…
tommy-ca Dec 11, 2025
32296d4
chore: remove framework changes and non-kafka specs from PR scope
tommy-ca Dec 11, 2025
c5a3a93
docs(spec): mark all PR #16 blocking issues as resolved
tommy-ca Dec 11, 2025
9ffbe7c
chore(spec): mark kafka-protobuf-binance-futures-e2e as implementatio…
tommy-ca Dec 11, 2025
7d74c6d
docs(spec): add complete streaming lakehouse architecture map
tommy-ca Dec 11, 2025
a546530
chore: compose proxy integration
tommy-ca Dec 12, 2025
1984d24
test: add compose proxy checks
tommy-ca Dec 12, 2025
60e1f29
chore: update spec task status
tommy-ca Dec 12, 2025
b4970ce
chore: load proxy mapping via ProxySettings
tommy-ca Dec 12, 2025
7252244
test: relax compose proxy expectations
tommy-ca Dec 12, 2025
9f20c41
docs: document proxy config precedence
tommy-ca Dec 12, 2025
3ea8df3
feat: load config via pydantic settings with env precedence
tommy-ca Dec 12, 2025
d21d18a
docs: add spec artifacts for multi-exchange deployment
tommy-ca Dec 12, 2025
6129071
chore: add docker build assets and example configs
tommy-ca Dec 12, 2025
b57d722
feat: add health server endpoint support
tommy-ca Dec 12, 2025
f857b46
test: add container and health server unit coverage
tommy-ca Dec 12, 2025
cea06fc
chore: add todos placeholder
tommy-ca Dec 12, 2025
b1666df
docs: add live mullvad binance->kafka e2e runbook
tommy-ca Dec 12, 2025
6d5372e
feat(binance): support open interest via REST polling
tommy-ca Dec 13, 2025
0884c9d
test(infra): support reusing existing redpanda instance on port 19092
tommy-ca Dec 13, 2025
787035f
test(kafka): improve cleanup of async tasks and proxy settings
tommy-ca Dec 13, 2025
3ca3b07
docs: consolidate e2e testing documentation and update proxy guides
tommy-ca Dec 13, 2025
a1b5fee
feat: implement cryptofeed.run module and simplify configuration files
tommy-ca Dec 14, 2025
d9a29c1
chore: mark todos #001, #003, #004 as resolved
tommy-ca Dec 14, 2025
4df5ebc
docs: add pr16 code review remediation spec
tommy-ca Dec 15, 2025
c757ad0
fix: harden proxy config against ssrf
tommy-ca Dec 15, 2025
bbe2caf
feat: populate protobuf metadata fields and docs
tommy-ca Dec 15, 2025
fbf13a7
refactor: centralize kafka normalization utilities
tommy-ca Dec 15, 2025
babe2a7
refactor: simplify kafka backend and move migration tooling
tommy-ca Dec 15, 2025
bfdd791
chore: add review todos and deprecation test
tommy-ca Dec 15, 2025
19dc34a
chore: add PR size guardrail workflow and split plan
tommy-ca Dec 15, 2025
eae2b7d
refactor: complete Phase 2 inline abstractions (REQ-5.11)
tommy-ca Dec 15, 2025
0725786
refactor: complete Phase 3 module consolidation (REQ-5.12, REQ-5.13)
tommy-ca Dec 15, 2025
086b7f4
feat(kafka): complete REQ-5 Task 16 validation with comprehensive tests
tommy-ca Dec 16, 2025
9de1b8c
feat(kafka): enhance config backward compatibility for nested producer
tommy-ca Dec 16, 2025
7059e08
chore(spec): disable REQ-3 PR split strategy and update spec status
tommy-ca Dec 16, 2025
937cc41
test(kafka): align E2E tests with REQ-4 normalization and REQ-5 refac…
tommy-ca Dec 16, 2025
4db856b
test: fix Binance E2E tests for REQ-4/REQ-5 alignment
tommy-ca Dec 16, 2025
b80448a
test: add Phase 5/6 stress and regional validation tests
tommy-ca Dec 16, 2025
ebd1495
docs: add E2E testing solution documentation for Kafka backend refactor
tommy-ca Dec 17, 2025
b2702e3
perf(kafka): implement batch polling and LRU cache optimizations
tommy-ca Dec 17, 2025
e012416
docs(kafka): archive multi-agent code pattern analysis
tommy-ca Dec 17, 2025
7a78aaa
docs(todos): mark performance optimizations as resolved
tommy-ca Dec 17, 2025
ce7ba1b
docs(spec): document post-implementation performance enhancements
tommy-ca Dec 17, 2025
d6c48eb
docs(compound): document Kafka producer hot path performance bottlenecks
tommy-ca Dec 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
85 changes: 85 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# Docker ignore file for cryptofeed container builds
# Excludes unnecessary files to reduce build context size

# Version control
.git
.gitignore
.gitattributes

# Documentation
docs/
*.md
!README.md
!INSTALL.md
!CHANGES.md

# Tests
tests/
.pytest_cache/
.coverage
.coveragerc
htmlcov/

# Python artifacts
__pycache__/
*.pyc
*.py[cod]
*$py.class
*.so
*.egg
*.egg-info/
dist/
build/
.eggs/

# Virtual environments
.venv/
venv/
ENV/
env/

# IDE and editor files
.vscode/
.idea/
*.swp
*.swo
*~
.DS_Store

# CI/CD
.github/
.gitlab-ci.yml
.travis.yml

# Benchmarks and profiling
.benchmarks/
*.prof

# Configuration examples (use ConfigMaps instead)
config.yaml
config_example.yaml
.env
.env.*

# Kiro/spec development files
.kiro/
.claude/
.codex/
.factory/

# Quality and formatting
.flake8
.pyscn.toml
.pre-commit-config.yaml
.mypy_cache/
.ruff_cache/

# Editor logs
.editor.log

# Python version file
.python-version

# Build artifacts
*.whl
*.tar.gz
125 changes: 125 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
# =============================================================================
# Cryptofeed Docker Compose Environment Configuration
# =============================================================================
# This file documents all environment variables used by docker-compose.yml
#
# Setup Instructions:
# 1. Copy this file to .env: cp .env.example .env
# 2. Fill in your exchange API keys and credentials
# 3. Configure proxy settings if needed
# 4. Run docker-compose up
#
# IMPORTANT:
# - Never commit .env file to version control (it's in .gitignore)
# - Keep API keys and secrets secure
# - Use read-only API keys when possible
# =============================================================================

# -----------------------------------------------------------------------------
# Build Configuration
# -----------------------------------------------------------------------------
# Docker image version and metadata (optional, defaults to 'dev')
VERSION=dev
BUILD_TIMESTAMP=
GIT_COMMIT_SHA=
GIT_BRANCH=main

# -----------------------------------------------------------------------------
# Kafka Configuration
# -----------------------------------------------------------------------------
# Partition strategy: composite (default), symbol, exchange, round-robin
KAFKA_PARTITION_STRATEGY=composite

# -----------------------------------------------------------------------------
# Exchange API Keys - Binance
# -----------------------------------------------------------------------------
# Binance API credentials (https://www.binance.com/en/my/settings/api-management)
# Required permissions: Read-only market data (no trading permissions needed)
BINANCE_API_KEY=
BINANCE_API_SECRET=

# -----------------------------------------------------------------------------
# Exchange API Keys - Coinbase
# -----------------------------------------------------------------------------
# Coinbase Pro API credentials (https://pro.coinbase.com/profile/api)
# Required permissions: View (read-only)
COINBASE_API_KEY=
COINBASE_API_SECRET=
COINBASE_API_PASSPHRASE=

# -----------------------------------------------------------------------------
# Exchange API Keys - Kraken
# -----------------------------------------------------------------------------
# Kraken API credentials (https://www.kraken.com/u/security/api)
# Required permissions: Query Funds, Query Open Orders & Trades, Query Closed Orders & Trades
KRAKEN_API_KEY=
KRAKEN_API_SECRET=

# -----------------------------------------------------------------------------
# Exchange API Keys - Bybit
# -----------------------------------------------------------------------------
# Bybit API credentials (https://www.bybit.com/app/user/api-management)
# Required permissions: Read-only
BYBIT_API_KEY=
BYBIT_API_SECRET=

# -----------------------------------------------------------------------------
# Exchange API Keys - OKX
# -----------------------------------------------------------------------------
# OKX API credentials (https://www.okx.com/account/my-api)
# Required permissions: Read-only
OKX_API_KEY=
OKX_API_SECRET=
OKX_API_PASSPHRASE=

# -----------------------------------------------------------------------------
# Exchange API Keys - Additional Exchanges
# -----------------------------------------------------------------------------
# Add additional exchange credentials as needed following the pattern:
# EXCHANGE_NAME_API_KEY=
# EXCHANGE_NAME_API_SECRET=
# EXCHANGE_NAME_API_PASSPHRASE= # (if required by exchange)

# Examples:
# BITFINEX_API_KEY=
# BITFINEX_API_SECRET=
# BITMEX_API_KEY=
# BITMEX_API_SECRET=
# DERIBIT_API_KEY=
# DERIBIT_API_SECRET=
# GEMINI_API_KEY=
# GEMINI_API_SECRET=
# KUCOIN_API_KEY=
# KUCOIN_API_SECRET=
# KUCOIN_API_PASSPHRASE=

# -----------------------------------------------------------------------------
# Proxy Configuration
# -----------------------------------------------------------------------------
# HTTP proxy URL (optional, for geo-restricted exchanges)
# Format: http://username:password@proxy-host:port
# Example: http://user:pass@proxy.example.com:8080
PROXY_HTTP=

# SOCKS5 proxy URL (optional, for geo-restricted exchanges)
# Format: socks5://username:password@proxy-host:port
# Example: socks5://user:pass@proxy.example.com:1080
PROXY_SOCKS5=

# Proxy config path inside container (do not change unless you remount)
PROXY_CONFIG_PATH=/config/proxy.yaml

# -----------------------------------------------------------------------------
# Logging Configuration
# -----------------------------------------------------------------------------
# Log level: DEBUG, INFO, WARNING, ERROR, CRITICAL
LOG_LEVEL=INFO

# -----------------------------------------------------------------------------
# Development and Testing
# -----------------------------------------------------------------------------
# Set to 'true' to enable additional debugging features
DEBUG=false

# Enable mock exchange data for testing (bypasses real exchange connections)
ENABLE_MOCK_DATA=false
60 changes: 60 additions & 0 deletions .github/workflows/pr-size-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: pr-size-check

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]

jobs:
enforce-size-limits:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Evaluate PR size
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const fileLimit = 100;
const additionLimit = 5000;

const pr = context.payload.pull_request;
if (!pr) {
core.setFailed('No pull_request payload found.');
return;
}

const files = await github.paginate(github.rest.pulls.listFiles, {
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pr.number,
per_page: 100,
});

const fileCount = files.length;
const additions = files.reduce((sum, f) => sum + (f.additions || 0), 0);
const docOnly = files.every(f => f.filename.startsWith('docs/'));

core.info(`Files changed: ${fileCount}`);
core.info(`Total additions: ${additions}`);
core.info(`Doc-only PR: ${docOnly}`);

if (docOnly) {
core.info('Docs-only PR detected: size limits skipped.');
return;
}

const violations = [];
if (fileCount > fileLimit) violations.push(`file count ${fileCount} > ${fileLimit}`);
if (additions > additionLimit) violations.push(`additions ${additions} > ${additionLimit}`);

if (violations.length) {
core.setFailed(`PR size policy violated: ${violations.join('; ')}`);
}

- name: Summary
if: always()
run: |
echo "PR size check complete" \
&& echo "Files: ${{ steps.evaluate.outputs.fileCount || 'n/a' }}" || true
27 changes: 24 additions & 3 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.11', '3.12']
python-version: ['3.10', '3.11', '3.12', '3.13']
env:
BUF_TOKEN: ${{ secrets.BUF_TOKEN }}

Expand Down Expand Up @@ -37,18 +37,39 @@ jobs:
if: env.BUF_TOKEN != ''
run: |
buf breaking proto --against 'buf.build/tommyk/crypto-market-data:main'
- name: Check for breaking changes (v2beta1)
if: env.BUF_TOKEN != '' && env.BUF_V2BETA1_AGAINST != ''
env:
BUF_V2BETA1_AGAINST: ${{ env.BUF_V2BETA1_AGAINST }}
run: |
echo "Using against ref: ${BUF_V2BETA1_AGAINST}"
buf breaking proto/cryptofeed/normalized/v2beta1 --against "${BUF_V2BETA1_AGAINST}"
- name: Skip v2beta1 breaking (no target set)
if: env.BUF_TOKEN != '' && env.BUF_V2BETA1_AGAINST == ''
run: |
echo "Skipping v2beta1 breaking check (set BUF_V2BETA1_AGAINST to enable)"
- name: Generate Protobuf bindings
run: |
buf generate --template buf.gen.yaml proto
echo "✓ Protobuf bindings generated"
- name: Run schema regression tests
if: matrix.python-version == '3.12'
- name: Run schema regression tests (min version)
if: matrix.python-version == '3.10'
run: |
python tools/schema_regression.py \
--events docs/schemas/examples/events/trades.jsonl \
--output reports/parity-ci.json \
--tolerance 1e-8 \
--verbose
- name: Run schema regression tests (latest)
if: matrix.python-version == '3.13'
run: |
python tools/schema_regression.py \
--events docs/schemas/examples/events/trades.jsonl \
--output reports/parity-ci-latest.json \
--tolerance 1e-8 \
--verbose
- name: Test with pytest
run: |
pytest tests -v --tb=short
# Guard: legacy imports + protobuf on generic KafkaCallback
pytest tests/unit/kafka/test_import_guards.py -q
34 changes: 34 additions & 0 deletions .kiro/settings/rules/tasks-parallel-analysis.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Parallel Task Analysis Rules

## Purpose
Provide a consistent way to identify implementation tasks that can be safely executed in parallel while generating `tasks.md`.

## When to Consider Tasks Parallel
Only mark a task as parallel-capable when **all** of the following are true:

1. **No data dependency** on pending tasks.
2. **No conflicting files or shared mutable resources** are touched.
3. **No prerequisite review/approval** from another task is required beforehand.
4. **Environment/setup work** needed by this task is already satisfied or covered within the task itself.

## Marking Convention
- Append `(P)` immediately after the numeric identifier for each qualifying task.
- Example: `- [ ] 2.1 (P) Build background worker for emails`
- Apply `(P)` to both major tasks and sub-tasks when appropriate.
- If sequential execution is requested (e.g. via `--sequential` flag), omit `(P)` markers entirely.
- Keep `(P)` **outside** of checkbox brackets to avoid confusion with completion state.

## Grouping & Ordering Guidelines
- Group parallel tasks under the same parent whenever the work belongs to the same theme.
- List obvious prerequisites or caveats in the detail bullets (e.g., "Requires schema migration from 1.2").
- When two tasks look similar but are not parallel-safe, call out the blocking dependency explicitly.
- Skip marking container-only major tasks (those without their own actionable detail bullets) with `(P)`—evaluate parallel execution at the sub-task level instead.

## Quality Checklist
Before marking a task with `(P)`, ensure you have:

- Verified that running this task concurrently will not create merge or deployment conflicts.
- Captured any shared state expectations in the detail bullets.
- Confirmed that the implementation can be tested independently.

If any check fails, **do not** mark the task with `(P)` and explain the dependency in the task details.
Loading
Loading