rangebar 12.0.0__tar.gz → 12.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rangebar-12.1.0/.cargo/config.toml +36 -0
- rangebar-12.1.0/.mise/tasks/bench.toml +34 -0
- rangebar-12.1.0/.mise/tasks/cache.toml +10 -0
- rangebar-12.1.0/.mise/tasks/checksum.toml +44 -0
- rangebar-12.1.0/.mise/tasks/deps.toml +26 -0
- rangebar-12.1.0/.mise/tasks/dev.toml +62 -0
- rangebar-12.1.0/.mise/tasks/diag.toml +189 -0
- rangebar-12.1.0/.mise/tasks/prof.toml +18 -0
- rangebar-12.1.0/.mise/tasks/release.toml +375 -0
- rangebar-12.1.0/.mise/tasks/research.toml +147 -0
- rangebar-12.1.0/.mise/tasks/smoke.toml +23 -0
- rangebar-12.1.0/.mise/tasks/validate.toml +33 -0
- rangebar-12.1.0/.mise.toml +101 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/CHANGELOG.md +20 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/CLAUDE.md +56 -14
- {rangebar-12.0.0 → rangebar-12.1.0}/Cargo.lock +50 -161
- {rangebar-12.0.0 → rangebar-12.1.0}/Cargo.toml +5 -5
- {rangebar-12.0.0 → rangebar-12.1.0}/PKG-INFO +205 -46
- rangebar-12.1.0/README.md +427 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/CLAUDE.md +13 -12
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-providers/Cargo.toml +1 -1
- rangebar-12.1.0/docs/development/RELEASE.md +327 -0
- rangebar-12.1.0/docs/research/2026-02-03-memory-efficient-streaming.md +230 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/docs/verification/issue-62-verification-report.md +1 -1
- {rangebar-12.0.0 → rangebar-12.1.0}/pyproject.toml +1 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/__init__.py +1 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/constants.py +5 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/orchestration/helpers.py +80 -14
- {rangebar-12.0.0 → rangebar-12.1.0}/tests/conftest.py +1 -1
- rangebar-12.0.0/.mise.toml +0 -721
- rangebar-12.0.0/README.md +0 -268
- rangebar-12.0.0/docs/development/RELEASE.md +0 -224
- {rangebar-12.0.0 → rangebar-12.1.0}/.gitignore +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/.mcp.json +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/.pre-commit-config.yaml +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/.releaserc.yml +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/LICENSE +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/RESUME.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/STATISTICAL_VALIDITY_AUDIT.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/benches/rangebar_bench.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/build.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-core/CHANGELOG.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-core/Cargo.toml +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-core/README.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-core/src/arrow_export.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-core/src/checkpoint.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-core/src/fixed_point.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-core/src/interbar.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-core/src/intrabar/drawdown.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-core/src/intrabar/features.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-core/src/intrabar/ith.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-core/src/intrabar/mod.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-core/src/intrabar/normalize.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-core/src/intrabar/types.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-core/src/lib.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-core/src/processor.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-core/src/test_data_loader.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-core/src/test_utils/generators.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-core/src/test_utils/mod.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-core/src/timestamp.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-core/src/types.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-core/tests/cross_boundary_validation.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-core/tests/cross_date_real_data_validation.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-core/tests/cross_year_boundary_test.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-core/tests/incomplete_bar_continuation_proof.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-providers/CHANGELOG.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-providers/README.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-providers/src/binance/checksum.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-providers/src/binance/historical.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-providers/src/binance/mod.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-providers/src/binance/symbols.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-providers/src/binance/websocket.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-providers/src/exness/builder.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-providers/src/exness/client.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-providers/src/exness/conversion.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-providers/src/exness/mod.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-providers/src/exness/types.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-providers/src/lib.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-streaming/CHANGELOG.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-streaming/Cargo.toml +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-streaming/README.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-streaming/src/indicators.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-streaming/src/lib.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-streaming/src/processor.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-streaming/src/replay_buffer.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-streaming/src/stats.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/crates/rangebar-streaming/src/universal.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/deny.toml +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/docs/ARCHITECTURE.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/docs/CONTEXT.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/docs/MEMORY_REMEDIATION_PLAN.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/docs/adr/2026-01-31-realtime-streaming-api.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/docs/analysis/2025-10-10-flash-crash.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/docs/api.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/docs/development/PERFORMANCE.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/docs/migration-v8.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/docs/plans/issue-59-inter-bar-features.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/docs/rangebar_core_api.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/docs/research/2026-02-02-intrabar-microstructure-claude-opus.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/docs/research/2026-02-02-intrabar-microstructure-gemini-3-pro.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/docs/research/2026-02-03-cfm-optimal-threshold-gemini-3-pro.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/docs/research/INDEX.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/docs/research/adversarial-audit-methodology.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/docs/research/external/time-to-convergence-stationarity-gap.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/docs/research/labeling-for-ml.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/docs/research/market-regime-patterns.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/docs/research/multi-threshold-patterns.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/docs/research/multifactor-patterns.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/docs/research/pattern-research-summary.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/docs/research/price-action-patterns.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/docs/research/tda-parameter-sensitivity-audit.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/docs/research/tda-regime-patterns.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/docs/research/volatility-regime-patterns.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/examples/README.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/examples/backtesting_integration.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/examples/basic_usage.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/examples/binance_csv_example.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/examples/get_range_bars_example.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/examples/validate_output.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/examples/with_clickhouse_cache.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/package-lock.json +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/package.json +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/CLAUDE.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/__init__.pyi +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/checkpoint.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/cli.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/clickhouse/CLAUDE.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/clickhouse/__init__.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/clickhouse/bulk_operations.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/clickhouse/cache.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/clickhouse/client.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/clickhouse/config.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/clickhouse/mixin.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/clickhouse/preflight.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/clickhouse/query_operations.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/clickhouse/schema.sql +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/clickhouse/tunnel.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/conversion.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/exceptions.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/exness.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/hooks.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/logging.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/notify/__init__.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/notify/pushover.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/notify/telegram.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/orchestration/__init__.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/orchestration/count_bounded.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/orchestration/models.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/orchestration/precompute.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/orchestration/range_bars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/orchestration/tick_fetcher.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/ouroboros.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/processors/__init__.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/processors/api.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/processors/core.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/resource_guard.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/storage/__init__.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/storage/checksum_registry.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/storage/parquet.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/streaming.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/threshold.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/validation/__init__.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/validation/cache_staleness.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/validation/continuity.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/validation/gap_classification.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/validation/post_storage.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/validation/tier1.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/python/rangebar/validation/tier2.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/rust-toolchain.toml +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/rustfmt.toml +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/adwin_regime_detection_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/analyze_flash_crash.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/bootstrap_permutation_validation_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/build-release.sh +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/cache_clear.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/cache_status.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/check-release-config.sh +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/coarse_to_fine_cascade.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/combined_pattern_audit_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/combined_regime_analysis_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/combined_rv_alignment_analysis_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/cross_asset_correlation_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/cross_regime_correlation_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/cross_threshold_alignment.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/dependency_monitor.sh +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/direction_patterns_reaudit.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/download_exness_eurusd.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/download_exness_forex.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/duration_autocorrelation.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/duration_autocorrelation_audit.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/duration_volatility_prediction.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/fdr_corrected_patterns.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/fill_all_symbols.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/fill_gaps_2025_2026.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/fill_gaps_littleblack.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/fill_gaps_retry.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/historical_formation_patterns_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/historical_formation_regime_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/hurst_adjusted_kelly_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/hurst_adjusted_psr_analysis_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/hurst_exponent_analysis_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/hurst_multi_estimator_audit.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/microstructure_clickhouse.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/microstructure_patterns.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/microstructure_simple.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/monitor_population.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/multi_threshold_pattern_analysis_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/multibar_continuation.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/multibar_forward_returns_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/multifactor_multigranularity_patterns.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/multifactor_patterns.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/multifactor_patterns_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/multithreshold_combinations_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/multithreshold_regime_combinations_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/oos_validation_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/parameter_sensitivity_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/pattern_correlation_analysis_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/pattern_return_profiles_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/pattern_return_stats.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/populate_1000dbps.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/populate_250dbps.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/populate_250dbps_extended.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/populate_safe.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/position_sizing_analysis_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/process_exness_eurusd_to_cache.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/profiling_tools.sh +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/psr_mintrl_analysis_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/publish-to-pypi.sh +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/publish-wheels.sh +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/purge_crypto_low_threshold.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/regenerate_cache.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/regime_analysis.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/regime_analysis_50dbps_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/regime_analysis_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/regime_transition_analysis_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/run_large_scale_benchmark.sh +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/run_length_momentum_analysis.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/run_length_momentum_multi_symbol.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/run_length_momentum_wfo.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/rv_return_profile_analysis_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/semantic-release.sh +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/tda_break_event_alignment_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/tda_conditioned_patterns.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/tda_cupy_accelerated.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/tda_gpu_analysis.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/tda_hurst_by_regime_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/tda_parameter_sweep_audit.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/tda_regime_hurst_analysis_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/tda_regime_pattern_analysis_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/tda_ripser_plusplus.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/tda_rolling_threshold.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/tda_solusdt_250_audit.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/tda_solusdt_250_littleblack.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/tda_structural_break_analysis_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/tda_volatility_forecast.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/tda_wfo_3way.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/tda_wfo_abstain.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/tda_wfo_audit.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/temporal_safe_patterns_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/three_bar_alignment_analysis_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/three_bar_pattern_analysis_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/three_bar_pattern_audit_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/three_factor_hurst_analysis_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/three_factor_pattern_analysis_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/transaction_cost_analysis_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/trend_filter_analysis.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/upload_eurusd_to_clickhouse.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/validate_clickhouse.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/validate_memory_efficiency.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/validate_microstructure_features.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/validate_n_range_bars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/volatility_regime_analysis_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/volatility_regime_audit_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/volume_conditioned_patterns.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/scripts/volume_conditioned_patterns_polars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/src/lib.rs +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/test_data/BTCUSDT/BTCUSDT_aggTrades_20250901.csv +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/test_data/ETHUSDT/ETHUSDT_aggTrades_20250901.csv +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/test_data/README.md +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/tests/fixtures/.gitignore +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/tests/fixtures/BTCUSDT-aggTrades-2024-01-01.zip +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/tests/test_cache_schema_evolution.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/tests/test_clickhouse.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/tests/test_clickhouse_integration.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/tests/test_crypto_minimum_threshold.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/tests/test_e2e_optimized.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/tests/test_edge_cases.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/tests/test_examples.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/tests/test_get_n_range_bars.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/tests/test_get_range_bars_e2e.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/tests/test_issue_5_reproduction.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/tests/test_issues_7_8.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/tests/test_microstructure_features.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/tests/test_ouroboros.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/tests/test_polars_only_downstream.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/tests/test_preflight.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/tests/test_python_api.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/tests/test_real_data.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/tests/test_rust_bindings.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/tests/test_storage.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/tests/test_streaming.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/tests/test_validation_presets.py +0 -0
- {rangebar-12.0.0 → rangebar-12.1.0}/uv.lock +0 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Project-local Cargo configuration
|
|
2
|
+
# Overrides ~/.cargo/config.toml for cross-compilation compatibility
|
|
3
|
+
|
|
4
|
+
# =============================================================================
|
|
5
|
+
# Cross-Compilation Settings
|
|
6
|
+
# =============================================================================
|
|
7
|
+
# IMPORTANT: Do NOT use target-cpu=native here - it breaks cross-compilation.
|
|
8
|
+
# The global ~/.cargo/config.toml may have target-cpu=native, which works for
|
|
9
|
+
# native builds but fails when cross-compiling to x86_64-linux from ARM macOS.
|
|
10
|
+
#
|
|
11
|
+
# Per-target flags override global [build] rustflags, enabling zig cross-compile.
|
|
12
|
+
|
|
13
|
+
[build]
|
|
14
|
+
# Remove target-cpu=native to allow cross-compilation
|
|
15
|
+
rustflags = ["-C", "opt-level=3", "-C", "strip=symbols"]
|
|
16
|
+
|
|
17
|
+
# =============================================================================
|
|
18
|
+
# Target-Specific Overrides
|
|
19
|
+
# =============================================================================
|
|
20
|
+
# These apply ONLY when building for the specific target, allowing us to
|
|
21
|
+
# use native optimizations on macOS while keeping Linux cross-compile friendly.
|
|
22
|
+
|
|
23
|
+
[target.aarch64-apple-darwin]
|
|
24
|
+
# Native macOS ARM64: can use native CPU features
|
|
25
|
+
rustflags = ["-C", "opt-level=3", "-C", "target-cpu=native", "-C", "strip=symbols"]
|
|
26
|
+
|
|
27
|
+
[target.x86_64-unknown-linux-gnu]
|
|
28
|
+
# Linux cross-compile: generic x86_64, no native CPU features
|
|
29
|
+
rustflags = ["-C", "opt-level=3", "-C", "strip=symbols"]
|
|
30
|
+
|
|
31
|
+
# =============================================================================
|
|
32
|
+
# Linker Settings (for cross-compilation)
|
|
33
|
+
# =============================================================================
|
|
34
|
+
# Maturin --zig sets these automatically, but documenting for reference:
|
|
35
|
+
# [target.x86_64-unknown-linux-gnu]
|
|
36
|
+
# linker = "zig cc -target x86_64-linux-gnu.2.17"
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Benchmarking Tasks
|
|
2
|
+
# Usage: mise run bench:run, mise run bench:validate
|
|
3
|
+
|
|
4
|
+
["bench:run"]
|
|
5
|
+
description = "Run performance benchmarks"
|
|
6
|
+
run = "cargo bench --bench rangebar_bench"
|
|
7
|
+
|
|
8
|
+
["bench:quick"]
|
|
9
|
+
description = "Run quick benchmarks (reduced iterations)"
|
|
10
|
+
run = "cargo bench --bench rangebar_bench -- --quick"
|
|
11
|
+
|
|
12
|
+
["bench:baseline"]
|
|
13
|
+
description = "Create performance baseline"
|
|
14
|
+
run = """
|
|
15
|
+
mkdir -p $BENCH_DATA_DIR
|
|
16
|
+
cargo bench --bench rangebar_bench -- --save-baseline main
|
|
17
|
+
echo "Baseline saved to $BENCH_DATA_DIR/main"
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
["bench:compare"]
|
|
21
|
+
description = "Compare current performance with baseline"
|
|
22
|
+
run = "cargo bench --bench rangebar_bench -- --baseline main"
|
|
23
|
+
|
|
24
|
+
["bench:validate"]
|
|
25
|
+
description = "Validate performance targets (1M ticks < 100ms)"
|
|
26
|
+
run = """
|
|
27
|
+
echo "Running performance validation..."
|
|
28
|
+
cargo bench --bench rangebar_bench -- --quick 2>&1 | tee /tmp/bench_output.txt
|
|
29
|
+
if grep -q "1M.*time:.*[0-9][0-9][0-9]\\.[0-9]* ms" /tmp/bench_output.txt; then
|
|
30
|
+
echo "FAIL: 1M ticks benchmark exceeds 100ms target"
|
|
31
|
+
exit 1
|
|
32
|
+
fi
|
|
33
|
+
echo "PASS: Performance targets met"
|
|
34
|
+
"""
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# ClickHouse Cache Tasks
|
|
2
|
+
# Usage: mise run cache:status
|
|
3
|
+
|
|
4
|
+
["cache:status"]
|
|
5
|
+
description = "Show ClickHouse cache statistics"
|
|
6
|
+
run = "python scripts/cache_status.py"
|
|
7
|
+
|
|
8
|
+
["cache:clear"]
|
|
9
|
+
description = "Clear ClickHouse cache for a symbol (interactive)"
|
|
10
|
+
run = "python scripts/cache_clear.py"
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Checksum Verification Tasks (Issue #43)
|
|
2
|
+
# Usage: mise run test:checksum
|
|
3
|
+
|
|
4
|
+
["test:checksum"]
|
|
5
|
+
description = "Test Rust checksum verification module"
|
|
6
|
+
run = "cargo nextest run -p rangebar-providers checksum"
|
|
7
|
+
|
|
8
|
+
["test:checksum:integration"]
|
|
9
|
+
description = "Integration test with real Binance data (requires network)"
|
|
10
|
+
run = """
|
|
11
|
+
python -c '
|
|
12
|
+
from rangebar import get_range_bars
|
|
13
|
+
import logging
|
|
14
|
+
logging.basicConfig(level=logging.DEBUG)
|
|
15
|
+
|
|
16
|
+
# Test with checksum verification (should see checksum events in logs)
|
|
17
|
+
df = get_range_bars("BTCUSDT", "2024-01-01", "2024-01-01", verify_checksum=True)
|
|
18
|
+
print(f"Downloaded {len(df)} bars with checksum verification")
|
|
19
|
+
'
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
["checksum:audit"]
|
|
23
|
+
description = "Audit Tier 1 cache for unverified files"
|
|
24
|
+
run = """
|
|
25
|
+
python -c '
|
|
26
|
+
from rangebar.storage.checksum_registry import ChecksumRegistry
|
|
27
|
+
registry = ChecksumRegistry()
|
|
28
|
+
count = registry.get_verified_count("BTCUSDT")
|
|
29
|
+
print(f"BTCUSDT verified dates: {count}")
|
|
30
|
+
'
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
["checksum:pushover-test"]
|
|
34
|
+
description = "Send test Pushover alert to verify credentials"
|
|
35
|
+
run = """
|
|
36
|
+
python -c '
|
|
37
|
+
from rangebar.notify.pushover import send_critical_alert
|
|
38
|
+
result = send_critical_alert(
|
|
39
|
+
title="🧪 RB Test Alert",
|
|
40
|
+
message="Checksum verification test - ignore this alert.",
|
|
41
|
+
)
|
|
42
|
+
print(f"Pushover alert sent: {result}")
|
|
43
|
+
'
|
|
44
|
+
"""
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Dependency Management Tasks
|
|
2
|
+
# Usage: mise run deps:check, mise run deps:security
|
|
3
|
+
|
|
4
|
+
["deps:check"]
|
|
5
|
+
description = "Check for outdated dependencies"
|
|
6
|
+
run = "cargo outdated -R --color always"
|
|
7
|
+
|
|
8
|
+
["deps:security"]
|
|
9
|
+
description = "Run security audit on dependencies"
|
|
10
|
+
run = "cargo deny check advisories && cargo deny check licenses"
|
|
11
|
+
|
|
12
|
+
["deps:tree"]
|
|
13
|
+
description = "Show dependency tree (depth 1)"
|
|
14
|
+
run = "cargo tree --depth 1 | grep -E '^[a-z]'"
|
|
15
|
+
|
|
16
|
+
["deps:update"]
|
|
17
|
+
description = "Update dependencies (simple - no rollback)"
|
|
18
|
+
run = """
|
|
19
|
+
cargo update
|
|
20
|
+
cargo nextest run --no-fail-fast
|
|
21
|
+
echo "Dependencies updated and tests passed"
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
["deps:update-safe"]
|
|
25
|
+
description = "Update dependencies with backup/rollback (uses script)"
|
|
26
|
+
run = "./scripts/dependency_monitor.sh auto"
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Development Tasks
|
|
2
|
+
# Usage: mise run fmt, mise run test, mise run build
|
|
3
|
+
|
|
4
|
+
[fmt]
|
|
5
|
+
description = "Format code with cargo fmt"
|
|
6
|
+
run = "cargo fmt --all"
|
|
7
|
+
|
|
8
|
+
[lint]
|
|
9
|
+
description = "Run clippy linting"
|
|
10
|
+
run = "cargo clippy --all-targets --all-features"
|
|
11
|
+
|
|
12
|
+
[test]
|
|
13
|
+
description = "Run Rust tests with cargo nextest (excludes PyO3 root crate)"
|
|
14
|
+
run = "cargo nextest run --workspace --exclude rangebar-py"
|
|
15
|
+
|
|
16
|
+
[test-py]
|
|
17
|
+
description = "Run Python tests"
|
|
18
|
+
run = "pytest tests/ -v"
|
|
19
|
+
|
|
20
|
+
["test:e2e"]
|
|
21
|
+
description = "Run end-to-end tests (requires ClickHouse)"
|
|
22
|
+
run = "pytest tests/ -v -m 'not slow' --tb=short"
|
|
23
|
+
|
|
24
|
+
["test:clickhouse"]
|
|
25
|
+
description = "Run ClickHouse-specific tests"
|
|
26
|
+
run = "pytest tests/ -v -m clickhouse --tb=short"
|
|
27
|
+
|
|
28
|
+
["test:all"]
|
|
29
|
+
description = "Run all tests including slow and ClickHouse"
|
|
30
|
+
run = "pytest tests/ -v --tb=short"
|
|
31
|
+
|
|
32
|
+
[deny]
|
|
33
|
+
description = "Run cargo deny security checks"
|
|
34
|
+
run = "cargo deny check"
|
|
35
|
+
|
|
36
|
+
[check]
|
|
37
|
+
description = "Run all quality checks (fmt + test)"
|
|
38
|
+
depends = ["fmt", "test"]
|
|
39
|
+
|
|
40
|
+
[check-full]
|
|
41
|
+
description = "Full quality checks including lint and deny"
|
|
42
|
+
depends = ["fmt", "lint", "test", "deny"]
|
|
43
|
+
|
|
44
|
+
[build]
|
|
45
|
+
description = "Build Python extension (development)"
|
|
46
|
+
run = "maturin develop"
|
|
47
|
+
|
|
48
|
+
[build-release]
|
|
49
|
+
description = "Build in release mode"
|
|
50
|
+
run = "cargo build --release"
|
|
51
|
+
|
|
52
|
+
[clean]
|
|
53
|
+
description = "Clean build artifacts"
|
|
54
|
+
run = "cargo clean && rm -rf dist/ build/ *.egg-info"
|
|
55
|
+
|
|
56
|
+
[docs]
|
|
57
|
+
description = "Generate documentation"
|
|
58
|
+
run = "cargo doc --open --all-features"
|
|
59
|
+
|
|
60
|
+
[dev]
|
|
61
|
+
description = "Quick development cycle (fmt + test)"
|
|
62
|
+
depends = ["fmt", "test"]
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
# Diagnostics Tasks
|
|
2
|
+
# Usage: mise run diag:release
|
|
3
|
+
|
|
4
|
+
["diag:release"]
|
|
5
|
+
description = "Diagnose release environment (SSH, tools, PyPI)"
|
|
6
|
+
run = """
|
|
7
|
+
#!/usr/bin/env bash
|
|
8
|
+
set -euo pipefail
|
|
9
|
+
|
|
10
|
+
echo "=== RELEASE DIAGNOSTICS ==="
|
|
11
|
+
echo ""
|
|
12
|
+
|
|
13
|
+
# Version info
|
|
14
|
+
VERSION=$(grep -A5 '\\[workspace.package\\]' Cargo.toml | grep '^version' | head -1 | sed 's/.*= "\\(.*\\)"/\\1/')
|
|
15
|
+
echo "Local version: $VERSION"
|
|
16
|
+
|
|
17
|
+
# PyPI check
|
|
18
|
+
echo ""
|
|
19
|
+
echo "--- PyPI Status ---"
|
|
20
|
+
PYPI_VERSION=$(pip index versions rangebar 2>/dev/null | head -1 | sed 's/rangebar (\\(.*\\))/\\1/' || echo "unknown")
|
|
21
|
+
echo "PyPI latest: $PYPI_VERSION"
|
|
22
|
+
if [ "$VERSION" = "$PYPI_VERSION" ]; then
|
|
23
|
+
echo "STATUS: Version $VERSION already on PyPI"
|
|
24
|
+
else
|
|
25
|
+
echo "STATUS: Version $VERSION NOT on PyPI (publishable)"
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
# Git status
|
|
29
|
+
echo ""
|
|
30
|
+
echo "--- Git Status ---"
|
|
31
|
+
echo "Branch: $(git branch --show-current)"
|
|
32
|
+
echo "Clean: $(git status --porcelain | wc -l | tr -d ' ') uncommitted files"
|
|
33
|
+
echo "Remote: $(git remote get-url origin)"
|
|
34
|
+
|
|
35
|
+
# SSH connectivity
|
|
36
|
+
echo ""
|
|
37
|
+
echo "--- SSH Connectivity ---"
|
|
38
|
+
echo -n "Port 443 (ssh.github.com): "
|
|
39
|
+
SSH_OUT=$(timeout 15 ssh -T -o ConnectTimeout=10 git@github.com-terrylica 2>&1 || true)
|
|
40
|
+
if echo "$SSH_OUT" | grep -q "successfully authenticated"; then
|
|
41
|
+
echo "OK"
|
|
42
|
+
elif echo "$SSH_OUT" | grep -qi "timeout\\|timed out"; then
|
|
43
|
+
echo "TIMEOUT"
|
|
44
|
+
else
|
|
45
|
+
echo "FAIL"
|
|
46
|
+
fi
|
|
47
|
+
|
|
48
|
+
echo -n "Port 22 (direct): "
|
|
49
|
+
SSH_OUT=$(timeout 20 ssh -T -p 22 -i ~/.ssh/id_ed25519_terrylica -o IdentitiesOnly=yes -o ConnectTimeout=15 git@github.com 2>&1 || true)
|
|
50
|
+
if echo "$SSH_OUT" | grep -q "successfully authenticated"; then
|
|
51
|
+
echo "OK"
|
|
52
|
+
elif echo "$SSH_OUT" | grep -qi "timeout\\|timed out"; then
|
|
53
|
+
echo "TIMEOUT"
|
|
54
|
+
else
|
|
55
|
+
echo "FAIL"
|
|
56
|
+
fi
|
|
57
|
+
|
|
58
|
+
# Tools
|
|
59
|
+
echo ""
|
|
60
|
+
echo "--- Build Tools ---"
|
|
61
|
+
echo "Rust: $(rustc --version 2>/dev/null || echo 'not found')"
|
|
62
|
+
echo "Zig: $(zig version 2>/dev/null || echo 'not found')"
|
|
63
|
+
echo "Maturin: $(maturin --version 2>/dev/null || echo 'not found')"
|
|
64
|
+
echo "Linux target: $(rustup target list --installed | grep -q x86_64-unknown-linux-gnu && echo 'installed' || echo 'missing')"
|
|
65
|
+
|
|
66
|
+
# Cargo config
|
|
67
|
+
echo ""
|
|
68
|
+
echo "--- Cargo Config ---"
|
|
69
|
+
if [ -f ".cargo/config.toml" ]; then
|
|
70
|
+
echo "Project .cargo/config.toml: exists"
|
|
71
|
+
if grep -A5 "^\\[build\\]" .cargo/config.toml | grep "^rustflags" | grep -q "target-cpu=native"; then
|
|
72
|
+
echo " WARN: [build] section has target-cpu=native (breaks cross-compile)"
|
|
73
|
+
elif grep "^rustflags" .cargo/config.toml | grep -q "target-cpu=native"; then
|
|
74
|
+
echo " OK: target-cpu=native only in target-specific sections"
|
|
75
|
+
else
|
|
76
|
+
echo " OK: No target-cpu=native in rustflags"
|
|
77
|
+
fi
|
|
78
|
+
else
|
|
79
|
+
echo "Project .cargo/config.toml: MISSING (may need for cross-compile)"
|
|
80
|
+
fi
|
|
81
|
+
|
|
82
|
+
# Build locks
|
|
83
|
+
echo ""
|
|
84
|
+
echo "--- Build Locks ---"
|
|
85
|
+
if [ -d "$BUILD_LOCK_DIR" ]; then
|
|
86
|
+
LOCKS=$(find "$BUILD_LOCK_DIR" -name "*.lock*" 2>/dev/null | wc -l | tr -d ' ')
|
|
87
|
+
echo "Lock directory: $BUILD_LOCK_DIR"
|
|
88
|
+
echo "Active locks: $LOCKS"
|
|
89
|
+
ls -la "$BUILD_LOCK_DIR"/*.lock* 2>/dev/null || echo " (none)"
|
|
90
|
+
else
|
|
91
|
+
echo "Lock directory: not created yet"
|
|
92
|
+
fi
|
|
93
|
+
|
|
94
|
+
# 1Password
|
|
95
|
+
echo ""
|
|
96
|
+
echo "--- Credentials ---"
|
|
97
|
+
echo -n "1Password PyPI token: "
|
|
98
|
+
if op item get djevteztvbcqgcm3yl4njkawjq --fields credential --reveal 2>/dev/null | head -c 10 >/dev/null; then
|
|
99
|
+
echo "accessible"
|
|
100
|
+
else
|
|
101
|
+
echo "FAIL (run: op signin)"
|
|
102
|
+
fi
|
|
103
|
+
|
|
104
|
+
echo ""
|
|
105
|
+
echo "=== END DIAGNOSTICS ==="
|
|
106
|
+
"""
|
|
107
|
+
|
|
108
|
+
["diag:fetch"]
|
|
109
|
+
description = "Fetch and update remote tracking refs (fixes statusline ↑/↓ mismatch)"
|
|
110
|
+
run = """
|
|
111
|
+
#!/usr/bin/env bash
|
|
112
|
+
set -euo pipefail
|
|
113
|
+
|
|
114
|
+
echo "Fetching with SSH fallback..."
|
|
115
|
+
|
|
116
|
+
# Try default first, fallback to port 22
|
|
117
|
+
if timeout 15 git fetch origin 2>/dev/null; then
|
|
118
|
+
echo "OK: Fetched via default SSH"
|
|
119
|
+
else
|
|
120
|
+
echo "WARN: Default SSH timed out, using port 22..."
|
|
121
|
+
GIT_SSH_COMMAND='ssh -p 22 -i ~/.ssh/id_ed25519_terrylica -o IdentitiesOnly=yes -o ConnectTimeout=10' \
|
|
122
|
+
git fetch origin main:refs/remotes/origin/main
|
|
123
|
+
echo "OK: Fetched via port 22"
|
|
124
|
+
fi
|
|
125
|
+
|
|
126
|
+
# Show current state
|
|
127
|
+
echo ""
|
|
128
|
+
echo "Local vs Remote:"
|
|
129
|
+
git log --oneline origin/main..HEAD 2>/dev/null | head -5 || echo " (in sync)"
|
|
130
|
+
"""
|
|
131
|
+
|
|
132
|
+
["diag:locks-clear"]
|
|
133
|
+
description = "Clear all build locks (use when stuck)"
|
|
134
|
+
run = """
|
|
135
|
+
#!/usr/bin/env bash
|
|
136
|
+
echo "Clearing build locks..."
|
|
137
|
+
rm -rf "$BUILD_LOCK_DIR"/*.lock* 2>/dev/null || true
|
|
138
|
+
rm -rf "$BUILD_LOCK_DIR"/*.lock.d 2>/dev/null || true
|
|
139
|
+
echo "OK: Locks cleared"
|
|
140
|
+
ls -la "$BUILD_LOCK_DIR" 2>/dev/null || echo "Lock directory empty"
|
|
141
|
+
"""
|
|
142
|
+
|
|
143
|
+
["diag:ssh-fix"]
|
|
144
|
+
description = "Test and fix SSH connectivity to GitHub"
|
|
145
|
+
run = """
|
|
146
|
+
#!/usr/bin/env bash
|
|
147
|
+
set -euo pipefail
|
|
148
|
+
|
|
149
|
+
echo "=== SSH Connectivity Fix ==="
|
|
150
|
+
|
|
151
|
+
# Test port 443 (configured in ~/.ssh/config)
|
|
152
|
+
echo -n "Testing port 443 (ssh.github.com)... "
|
|
153
|
+
if timeout 15 ssh -T -o ConnectTimeout=10 git@github.com-terrylica 2>&1 | grep -q "successfully authenticated"; then
|
|
154
|
+
echo "OK"
|
|
155
|
+
echo "Port 443 works - no fix needed"
|
|
156
|
+
exit 0
|
|
157
|
+
else
|
|
158
|
+
echo "TIMEOUT"
|
|
159
|
+
fi
|
|
160
|
+
|
|
161
|
+
# Test port 22 (direct)
|
|
162
|
+
echo -n "Testing port 22 (github.com direct)... "
|
|
163
|
+
if timeout 20 ssh -T -p 22 -i ~/.ssh/id_ed25519_terrylica -o IdentitiesOnly=yes -o ConnectTimeout=15 git@github.com 2>&1 | grep -q "successfully authenticated"; then
|
|
164
|
+
echo "OK"
|
|
165
|
+
echo ""
|
|
166
|
+
echo "Port 22 works but port 443 doesn't."
|
|
167
|
+
echo "Your network may be blocking port 443 to ssh.github.com"
|
|
168
|
+
echo ""
|
|
169
|
+
echo "Options:"
|
|
170
|
+
echo " 1. Update ~/.ssh/config to use port 22:"
|
|
171
|
+
echo " Host github.com-terrylica"
|
|
172
|
+
echo " HostName github.com"
|
|
173
|
+
echo " Port 22"
|
|
174
|
+
echo " User git"
|
|
175
|
+
echo " IdentityFile ~/.ssh/id_ed25519_terrylica"
|
|
176
|
+
echo ""
|
|
177
|
+
echo " 2. Use mise run release:quick (skips sync)"
|
|
178
|
+
echo ""
|
|
179
|
+
echo " 3. Manually sync with:"
|
|
180
|
+
echo " GIT_SSH_COMMAND='ssh -p 22 -i ~/.ssh/id_ed25519_terrylica' git pull --rebase origin main"
|
|
181
|
+
else
|
|
182
|
+
echo "FAIL"
|
|
183
|
+
echo ""
|
|
184
|
+
echo "Both ports failing - check:"
|
|
185
|
+
echo " 1. SSH key exists: ls -la ~/.ssh/id_ed25519_terrylica"
|
|
186
|
+
echo " 2. Key added to GitHub: gh ssh-key list"
|
|
187
|
+
echo " 3. Network connectivity: ping github.com"
|
|
188
|
+
fi
|
|
189
|
+
"""
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Profiling Tasks
|
|
2
|
+
# Usage: mise run prof:flamegraph
|
|
3
|
+
|
|
4
|
+
["prof:flamegraph"]
|
|
5
|
+
description = "Generate CPU flamegraph"
|
|
6
|
+
run = """
|
|
7
|
+
mkdir -p $PROFILE_DATA_DIR
|
|
8
|
+
cargo flamegraph --bench rangebar_bench -o $PROFILE_DATA_DIR/flamegraph-$(date +%Y%m%d-%H%M%S).svg
|
|
9
|
+
echo "Flamegraph saved to $PROFILE_DATA_DIR/"
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
["prof:build-release"]
|
|
13
|
+
description = "Build with profiling symbols"
|
|
14
|
+
run = "CARGO_PROFILE_RELEASE_DEBUG=true cargo build --release"
|
|
15
|
+
|
|
16
|
+
["prof:full"]
|
|
17
|
+
description = "Comprehensive profiling suite (uses script for platform detection)"
|
|
18
|
+
run = "./scripts/profiling_tools.sh full"
|