Skip to content

Conversation

@Mizux
Copy link
Collaborator

@Mizux Mizux commented Nov 21, 2025

No description provided.

@Mizux Mizux merged commit 7d5fd0f into main Nov 24, 2025
107 of 119 checks passed
bramp added a commit to bramp/build-along that referenced this pull request Dec 22, 2025
Implements CP-SAT constraint solver infrastructure for classification:

- ConstraintModel: Wrapper around OR-Tools CP-SAT with helper methods

  - add_candidate(), at_most_one_of(), exactly_one_of()
  - if_selected_then(), if_any_selected_then_one_of()
  - mutually_exclusive(), add_block_exclusivity_constraints()
  - maximize(), solve()

- SchemaConstraintGenerator: Auto-generates constraints from schemas

  - Uses EXPLICIT naming convention: field_name_candidate(s)
  - Generates structural constraints from Pydantic field types
  - Supports custom constraints via **constraint_rules**

- Base class updates:

  - LabelClassifier.declare_constraints() hook for custom constraints
  - Classifier.**init**(use_constraint_solver=False) flag
  - ClassificationResult.is_solver_selected(), set_solver_selection()

- Python version: Temporarily downgraded to 3.13
  - ortools doesn't support Python 3.14 yet (as of Dec 2025)
  - Will upgrade back to 3.14 when ortools releases support
  - PR merged but not released: <google/or-tools#4922>

Phase 0 complete: Infrastructure ready, no behavior changes yet.
Next: Phase 1 - PartsList + Parts implementation.
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.

1 participant