Skip to content

Conversation

@mtdowling
Copy link
Member

  • Add AdaptiveEffort to dynamically adjust optimization parameters based on observed improvement rates (increase effort when making progress, decrease when plateauing)
  • Add block moves optimization that moves groups of dependent conditions together to escape local minima
  • Add cost-based tie-breaking using BddCostEstimator when multiple positions have the same node count

Background

  • What do these changes do?
  • Why are they important?

Testing

  • How did you test these changes?

Links

  • Links to additional context, if necessary
  • Issue #, if applicable (see here for a list of keywords to use for linking issues)

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

@mtdowling mtdowling requested a review from a team as a code owner December 13, 2025 06:18
@mtdowling mtdowling requested a review from yasmewad December 13, 2025 06:18
@github-actions
Copy link
Contributor

This pull request does not contain a staged changelog entry. To create one, use the ./.changes/new-change command. For example:

./.changes/new-change --pull-requests "#2890" --type feature --description "Improve BDD sifting (2x speed, more reduction)"

Make sure that the description is appropriate for a changelog entry and that the proper feature type is used. See ./.changes/README or run ./.changes/new-change -h for more information.

@mtdowling mtdowling force-pushed the improve-sifting branch 2 times, most recently from b9eaaba to 4e3040d Compare December 16, 2025 15:13
Base automatically changed from bdd-cost-heuristic to main December 17, 2025 15:56
- Add AdaptiveEffort to dynamically adjust optimization parameters based
  on observed improvement rates (increase effort when making progress,
  decrease when plateauing)
- Add block moves optimization that moves groups of dependent conditions
  together to escape local minima
- Add cost-based tie-breaking using BddCostEstimator when multiple
  positions have the same node count
mtdowling and others added 3 commits December 19, 2025 10:08
This commit adds a new function to the rules engine, ite, that performs
an if-then-else check on a boolean expression without branching. By not
needing to branch in the decision tree, we avoid SSA transforms on
divergent branches which would create syntactically different but
semantically identical expressions that the BDD cannot deduplicate.

This commit also adds an S3-specific decision tree transform that
canonicalizes S3Express rules for better BDD compilation:

1. AZ extraction: Rewrites position-dependent substring operations to
   use a single split(Bucket, "--")[1] expression across all branches
2. URL canonicalization: Uses ITE to compute FIPS/DualStack URL segments,
   collapsing 4 URL variants into a single template with {_s3e_fips} and
   {_s3e_ds} placeholders
3. Auth scheme canonicalization: Uses ITE to select sigv4 vs
   sigv4-s3express based on DisableS3ExpressSessionAuth

The transform makes the rules tree ~30% larger but enables dramatic BDD
compression by making URL templates identical across FIPS/DualStack/auth
variants. Endpoints that previously appeared distinct now collapse into
single BDD results, reducing nodes and results by ~43%.
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.

3 participants