The ffx product-bundle bisect command helps identify regressions in product bundles by bisecting over assembly artifacts.
When a bug or behavior change occurs between two versions of a product bundle, ffx product-bundle bisect can help pinpoint which specific artifact (platform, board, or product) introduced the change. It does this by:
--from-success) and a known-bad version (--to-failure).By using a binary search (or median cut) approach over the artifacts, the tool quickly narrows down the source of the regression.
You can run the bisection manually by following the prompts from the tool.
To start a bisection between two known versions of a product bundle, run:
ffx product-bundle bisect <name> --from-success <version> --to-failure <version>
Replace <name> with the name of the product bundle (e.g., core.vim3) and <version> with the product bundle version numbers.
The tool will assemble intermediate bundles and prompt you to test them. After testing, you inform the tool whether the step passed or failed, and it calculates the next step.
You can pause the bisection process at any time by pressing CTRL+C. The tool saves its state. The next time you run the exact same ffx product-bundle bisect command, it will ask if you want to continue the previous run or start over.
Detailed options for ffx product-bundle bisect:
--from-success: Known-good version of the product bundle.--to-failure: Known-bad version of the product bundle.--slot: Slot to bisect over (a or r). Defaults to slot a.--out-dir: Directory to write assembled images and other artifacts. Defaults to ~/plan_directory/out.--gen-dir: Directory to write intermediate files. Defaults to ~/plan_directory/gen.--auth: Authentication method to use for fetching artifacts.Bisecting a product bundle manually:
Note: core.vim3 is used as an example, but may have limited support depending on your environment.
ffx product-bundle bisect core.vim3 \ --from-success 29.20250826.6.1 \ --to-failure 29.20250905.6.1