feat(backtest): SHA cache warmer and local Parquet replay - #666
Conversation
|
Warning Review limit reached
Next review available in: 42 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (7)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Change contract
Add a manifest-bound local cache warmer and canonical Parquet input path for
hft-backtest. The warmer verifies the artifact SHA, stages privately, publishes atomically, and binds a.readymarker to the manifest SHA; same-manifest cache hits avoid source transfer. The backtest reader validates the canonical manifest, artifact SHA/schema, sequence and timestamp continuity, applies the configured time window, and records immutable manifest/config/source evidence plus replay row count.Issue relationship
Closes #652
Out of scope
No live/runtime enablement, risk-limit changes, collector materialization changes, remote/object-store deployment, or result publication changes.
Dependencies and merge order
None; this consumes the canonical replay Parquet contract already on
main.Focused validation
cargo test -p hft-backtest --locked(28 unit + 1 local-Parquet CLI integration passed)cargo test -p hft-collector --test binance_replay_parquet_materializer --locked(2 passed)cargo test -p hft-collector --test binance_replay_parquet_cache_warmer --locked(2 passed)cargo clippy -p hft-backtest --all-targets --no-deps --locked -- -D warningscargo clippy -p hft-collector --all-targets --features collector-binance --no-deps --locked -- -D warningscargo metadata --locked --no-deps, targeted rustfmt checks,git diff --cached --check, and worktree preflight passed.Rollout and rollback
None. This is a local cache/backtest path and does not resume live execution; rollback is reverting this single commit.
Scope exception
One-time atomic exception approved by
/root: 8 scoped files and 918 non-generated additions exceed the 750-line guideline because cache warming and the no-raw-source canonical-Parquet reader form one independently testable and rollbackable contract; splitting would leave an orphan cache or bypassed reader.