Skip to content

feat: bfb scroll sub-command#151

Merged
tellet-q merged 2 commits into
devfrom
feat/phase-subcommands
Jul 14, 2026
Merged

feat: bfb scroll sub-command#151
tellet-q merged 2 commits into
devfrom
feat/phase-subcommands

Conversation

@tellet-q

@tellet-q tellet-q commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Scroll was only reachable as a --scroll flag as a part of a full benchmark run, so timing it meant re-uploading first. This makes it a subcommand that runs against a collection that already exists: bfb scroll --file examples/scroll-config.yaml -n 50k -p 8 --json scroll.json. Results land under results.scroll, same shape as results.search. The YAML describes the shape of scroll requests — the collection, and the payload filters to scroll by. One template is picked at random per request with fresh filter values, so a single run can compare filtered against unfiltered:

  collection:                                                                                                                                                                                                                                 
    name: benchmark

  mode: scroll|sequential|sample
                                                                                                                                                                                                                                              
  requests:                                                                                                                                                                                                                                   
    - filters: []          # unfiltered                                                                                                                                                                                                       
    - filters:                                                                                                                                                                                                                                
        - name: color                                                                                                                                                                                                                         
          type: keyword                                                                                                                                                                                                                       
          source: { type: random, cardinality: 100 }

Filter entries use the same payload type / source vocabulary as the upload and search configs, because it's now literally the same code, with no change in behavior.

All Submissions:

  • Contributions should target the dev branch. Did you create your branch from dev?
  • Have you followed the guidelines in our Contributing document?
  • Have you checked to ensure there aren't other open Pull Requests for the same update/change?

@tellet-q tellet-q force-pushed the feat/phase-subcommands branch 3 times, most recently from 1f4a991 to d2d1d3e Compare July 13, 2026 10:01
@tellet-q tellet-q changed the title feat: bfb scroll; omit point count for phase-only commands feat: bfb scroll sub-command Jul 13, 2026
@tellet-q tellet-q changed the title feat: bfb scroll sub-command feat: bfb scroll sub-command Jul 13, 2026
@tellet-q tellet-q requested a review from Copilot July 13, 2026 10:08

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Adds a dedicated bfb scroll subcommand so scroll workloads can be executed and reported independently against an already-existing collection, using a YAML config to describe scroll request “shapes” (collection + payload filters). This complements the existing flag-driven --scroll path while aligning scroll’s filter generation with the YAML-config-driven search path.

Changes:

  • Introduces bfb scroll --file … with a new YAML scroll config (src/config/scroll.rs) and CLI wiring (src/args/mod.rs, src/main.rs, src/query.rs).
  • Refactors YAML filter generation into a reusable FilterGenerator shared by YAML search and YAML scroll (src/generators/queries.rs).
  • Documents the new workflow and provides an example config (README.md, examples/scroll-config.yaml).

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/scroll.rs Adds config-driven filter selection for scroll requests (new Filters source abstraction).
src/query.rs Exposes scroll_with_config entrypoint for YAML-config-driven scroll.
src/main.rs Wires the new scroll subcommand into the main dispatch and results output.
src/generators/queries.rs Extracts/centralizes YAML payload filter generation into FilterGenerator and reuses it for search.
src/config/scroll.rs Adds YAML schema/types + loader/validation for scroll configs (with tests).
src/config/mod.rs Exposes the new config::scroll module.
src/args/mod.rs Adds Command::Scroll and ScrollArgs { --file } for clap parsing.
README.md Documents bfb scroll usage and output location under results.scroll.
examples/scroll-config.yaml Provides a concrete scroll config example for users.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/scroll.rs Outdated
Comment thread examples/scroll-config.yaml Outdated
@tellet-q tellet-q requested a review from generall July 13, 2026 10:15
@tellet-q tellet-q marked this pull request as ready for review July 13, 2026 10:15
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@tellet-q tellet-q force-pushed the feat/phase-subcommands branch from d2d1d3e to 4a2fa17 Compare July 13, 2026 10:35
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@tellet-q tellet-q force-pushed the feat/phase-subcommands branch from 73dca2f to 442688a Compare July 14, 2026 07:16
@tellet-q tellet-q merged commit 9e5a350 into dev Jul 14, 2026
5 checks passed
@tellet-q tellet-q deleted the feat/phase-subcommands branch July 14, 2026 08:52
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.

4 participants