refactor: move explainability and incremental calculator#2233
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR refactors explainability/score analysis and incremental score calculation support, moving several formerly OSS APIs (indictments, solution diff, score analysis, incremental score director) behind Enterprise services while updating downstream modules (benchmark, migration tooling, integrations, docs) to the new packages and APIs.
Changes:
- Moved
ConstraintRefintocore.api.score.streamand replaced many uses of the oldcore.api.score.constraintpackage (which is removed). - Replaced
SolutionManager.explain(...)usages withSolutionManager.analyze(...)and introduced new incremental score calculator analysis APIs (ConstraintMatchRegistry,ConstraintMatchRegistration). - Updated docs and integration/test code to reflect Enterprise-only features and new config/API names.
Reviewed changes
Copilot reviewed 268 out of 273 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| tools/migration/src/test/java/ai/timefold/solver/migration/v2/GeneralPackageRenameMigrationRecipeTest.java | Updates expected imports for jackson score serializers/deserializers. |
| tools/migration/src/main/java/ai/timefold/solver/migration/v2/GeneralPackageRenameMigrationRecipe.java | Adjusts package rename recipes for jackson score packages. |
| tools/migration/src/main/java/ai/timefold/solver/migration/v2/GeneralMethodDeleteInvocationMigrationRecipe.java | Adds removal recipes for deleted indictWith(..) invocations. |
| tools/benchmark/src/test/java/ai/timefold/solver/benchmark/impl/statistic/subsingle/constraintmatchtotalstepscore/ConstraintMatchTotalStepScoreSubSingleStatisticTest.java | Updates ConstraintRef import location. |
| tools/benchmark/src/test/java/ai/timefold/solver/benchmark/impl/statistic/subsingle/constraintmatchtotalbestscore/ConstraintMatchTotalBestScoreSubSingleStatisticTest.java | Updates ConstraintRef import location. |
| tools/benchmark/src/test/java/ai/timefold/solver/benchmark/impl/result/PlannerBenchmarkResultTest.java | Updates dummy calculator types/imports and fixes comment grammar. |
| tools/benchmark/src/main/java/ai/timefold/solver/benchmark/impl/SubSingleBenchmarkRunner.java | Switches explanation summary generation from explain() to analyze(). |
| tools/benchmark/src/main/java/ai/timefold/solver/benchmark/impl/statistic/subsingle/constraintmatchtotalstepscore/ConstraintMatchTotalStepScoreSubSingleStatistic.java | Updates ConstraintRef import location. |
| tools/benchmark/src/main/java/ai/timefold/solver/benchmark/impl/statistic/subsingle/constraintmatchtotalstepscore/ConstraintMatchTotalStepScoreStatisticPoint.java | Updates ConstraintRef import location. |
| tools/benchmark/src/main/java/ai/timefold/solver/benchmark/impl/statistic/subsingle/constraintmatchtotalbestscore/ConstraintMatchTotalBestScoreSubSingleStatistic.java | Updates ConstraintRef import location. |
| tools/benchmark/src/main/java/ai/timefold/solver/benchmark/impl/statistic/subsingle/constraintmatchtotalbestscore/ConstraintMatchTotalBestScoreStatisticPoint.java | Updates ConstraintRef import location. |
| tools/benchmark/src/main/java/ai/timefold/solver/benchmark/impl/statistic/StatisticRegistry.java | Updates ConstraintRef import location. |
| tools/benchmark/src/main/java/ai/timefold/solver/benchmark/impl/statistic/ConstraintSummary.java | Updates ConstraintRef import location. |
| tools/benchmark-aggregator/src/test/java/ai/timefold/solver/benchmark/aggregator/PlannerBenchmarkResultTest.java | Updates dummy calculator/meter classes for XML tests. |
| spring-integration/spring-boot-autoconfigure/src/test/java/ai/timefold/solver/spring/boot/autoconfigure/dummy/list/constraints/incremental/DummySpringListIncrementalScore.java | Updates incremental calculator generics/nullness annotations and removed callbacks. |
| spring-integration/spring-boot-autoconfigure/src/test/java/ai/timefold/solver/spring/boot/autoconfigure/dummy/basic/constraints/incremental/DummySpringIncrementalScore.java | Updates incremental calculator generics/nullness annotations and removed callbacks. |
| spring-integration/spring-boot-autoconfigure/src/main/java/ai/timefold/solver/spring/boot/autoconfigure/config/SolverProperties.java | Javadoc tweaks and imports ConstraintProvider for links. |
| README.adoc | Updates contributing link and wording/formatting around editions. |
| quarkus-integration/quarkus/runtime/src/main/java/ai/timefold/solver/quarkus/devui/TimefoldDevUIPropertiesRPCService.java | Updates ConstraintRef import location. |
| quarkus-integration/quarkus/runtime/src/main/java/ai/timefold/solver/quarkus/devui/TimefoldDevUIProperties.java | Updates ConstraintRef import location. |
| quarkus-integration/quarkus/runtime/src/main/java/ai/timefold/solver/quarkus/config/SolverRuntimeConfig.java | Javadoc wording updates for Enterprise-only settings. |
| quarkus-integration/quarkus/deployment/src/test/java/ai/timefold/solver/quarkus/TimefoldProcessorGeneratedGizmoSupplierTest.java | Updates incremental calculator dummy to new callbacks/nullness. |
| quarkus-integration/quarkus/deployment/src/test/java/ai/timefold/solver/quarkus/testdomain/dummy/DummyTestdataQuarkusShadowVariableIncrementalScoreCalculator.java | Updates incremental calculator generics/nullness and removed callbacks. |
| quarkus-integration/quarkus/deployment/src/test/java/ai/timefold/solver/quarkus/testdomain/dummy/DummyTestdataQuarkusIncrementalScoreCalculator.java | Updates incremental calculator generics/nullness and removed callbacks. |
| quarkus-integration/quarkus/deployment/src/main/java/ai/timefold/solver/quarkus/deployment/config/SolverBuildTimeConfig.java | Javadoc wording updates for Enterprise-only settings. |
| quarkus-integration/quarkus-jackson/runtime/src/test/java/ai/timefold/solver/quarkus/jackson/diff/PlanningSolutionDiffTest.java | Removes test for solution diff serialization (moved/enterprise-only). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/module-info.java | Exports new ...jackson.solution package. |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/solver/RecommendedAssignmentJacksonSerializer.java | Removes serializer (moved/enterprise-only). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/solver/AbstractRecommendedAssignmentJacksonDeserializer.java | Removes deserializer base (moved/enterprise-only). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/score/constraint/ConstraintRefJacksonSerializer.java | Updates ConstraintRef import location. |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/score/constraint/ConstraintRefJacksonDeserializer.java | Updates ConstraintRef import location. |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/score/analysis/ScoreAnalysisJacksonSerializer.java | Removes serializer (moved/enterprise-only). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/diff/SerializablePlanningVariableDiff.java | Removes diff serialization helper (moved/enterprise-only). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/diff/SerializablePlanningSolutionDiff.java | Removes diff serialization helper (moved/enterprise-only). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/diff/SerializablePlanningEntityDiff.java | Removes diff serialization helper (moved/enterprise-only). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/diff/PlanningVariableDiffJacksonSerializer.java | Removes diff serializer (moved/enterprise-only). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/diff/PlanningSolutionDiffJacksonSerializer.java | Removes diff serializer (moved/enterprise-only). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/diff/PlanningEntityDiffJacksonSerializer.java | Removes diff serializer (moved/enterprise-only). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/diff/package-info.java | Removes diff package docs (moved/enterprise-only). |
| quarkus-integration/quarkus-jackson/runtime/pom.xml | Removes explicit Quarkus capability declaration. |
| quarkus-integration/quarkus-jackson/integration-test/src/main/java/ai/timefold/solver/quarkus/jackson/it/TimefoldTestResource.java | Renames test solution type/package. |
| quarkus-integration/quarkus-jackson/integration-test/src/main/java/ai/timefold/solver/quarkus/jackson/it/testdata/TestdataJacksonPlanningSolution.java | Renames/relocates planning solution class. |
| quarkus-integration/quarkus-jackson/integration-test/src/main/java/ai/timefold/solver/quarkus/jackson/it/testdata/TestdataJacksonPlanningEntity.java | Renames/relocates planning entity class. |
| quarkus-integration/quarkus-jackson/integration-test/src/main/java/ai/timefold/solver/quarkus/jackson/it/testdata/TestdataJacksonPlanningConstraintProvider.java | Renames/relocates constraint provider and updates entity refs. |
| quarkus-integration/quarkus-jackson/deployment/pom.xml | Reorders/adds runtime dependency earlier in the list. |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/testdomain/JacksonTestdataSolution.java | Updates jackson score serializer/deserializer imports. |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/preview/api/domain/solution/diff/PlanningSolutionDiffTest.java | Removes test for solution diff serialization (moved/enterprise-only). |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/api/score/SimpleScoreJacksonRoundTripTest.java | Removes obsolete imports after package move. |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/api/score/SimpleBigDecimalScoreJacksonRoundTripTest.java | Removes obsolete imports after package move. |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/api/score/HardSoftScoreJacksonRoundTripTest.java | Removes obsolete imports after package move. |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/api/score/HardSoftBigDecimalScoreJacksonRoundTripTest.java | Removes obsolete imports after package move. |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/api/score/HardMediumSoftScoreJacksonRoundTripTest.java | Removes obsolete imports after package move. |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/api/score/HardMediumSoftBigDecimalScoreJacksonRoundTripTest.java | Removes obsolete imports after package move. |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/api/score/BendableScoreJacksonRoundTripTest.java | Removes obsolete imports after package move. |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/api/score/BendableBigDecimalScoreJacksonRoundTripTest.java | Removes obsolete imports after package move. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/preview/api/domain/solution/diff/SerializablePlanningVariableDiff.java | Removes diff serialization helper (moved/enterprise-only). |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/preview/api/domain/solution/diff/SerializablePlanningSolutionDiff.java | Removes diff serialization helper (moved/enterprise-only). |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/preview/api/domain/solution/diff/SerializablePlanningEntityDiff.java | Removes diff serialization helper (moved/enterprise-only). |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/preview/api/domain/solution/diff/PlanningVariableDiffJacksonSerializer.java | Removes diff serializer (moved/enterprise-only). |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/preview/api/domain/solution/diff/PlanningSolutionDiffJacksonSerializer.java | Removes diff serializer (moved/enterprise-only). |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/preview/api/domain/solution/diff/PlanningEntityDiffJacksonSerializer.java | Removes diff serializer (moved/enterprise-only). |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/preview/api/domain/solution/diff/package-info.java | Removes diff package docs (moved/enterprise-only). |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/solver/RecommendedAssignmentJacksonSerializer.java | Removes serializer (moved/enterprise-only). |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/solver/AbstractRecommendedAssignmentJacksonDeserializer.java | Removes deserializer base (moved/enterprise-only). |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/SimpleScoreJacksonSerializer.java | Moves serializer into new ...api.score package. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/SimpleScoreJacksonDeserializer.java | Moves deserializer into new ...api.score package. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/SimpleBigDecimalScoreJacksonSerializer.java | Moves serializer into new ...api.score package. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/SimpleBigDecimalScoreJacksonDeserializer.java | Moves deserializer into new ...api.score package. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/PolymorphicScoreJacksonSerializer.java | Updates imports after package move. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/PolymorphicScoreJacksonDeserializer.java | Updates imports after package move. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/HardSoftScoreJacksonSerializer.java | Moves serializer into new ...api.score package. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/HardSoftScoreJacksonDeserializer.java | Moves deserializer into new ...api.score package. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/HardSoftBigDecimalScoreJacksonSerializer.java | Moves serializer into new ...api.score package. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/HardSoftBigDecimalScoreJacksonDeserializer.java | Moves deserializer into new ...api.score package. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/HardMediumSoftScoreJacksonSerializer.java | Moves serializer into new ...api.score package. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/HardMediumSoftScoreJacksonDeserializer.java | Moves deserializer into new ...api.score package. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/HardMediumSoftBigDecimalScoreJacksonSerializer.java | Moves serializer into new ...api.score package. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/HardMediumSoftBigDecimalScoreJacksonDeserializer.java | Moves deserializer into new ...api.score package. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/constraint/ConstraintRefJacksonSerializer.java | Updates ConstraintRef import location. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/constraint/ConstraintRefJacksonDeserializer.java | Updates ConstraintRef import location. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/analysis/ScoreAnalysisJacksonSerializer.java | Removes serializer (moved/enterprise-only). |
| docs/src/modules/ROOT/pages/using-timefold-solver/running-the-solver.adoc | Updates EE/OSS wording and replaces NOTE blocks. |
| docs/src/modules/ROOT/pages/using-timefold-solver/benchmarking-and-tweaking.adoc | Rewords NOTE block into inline NOTE. |
| docs/src/modules/ROOT/pages/optimization-algorithms/move-selector-reference.adoc | Rewords EE-only notes and references. |
| docs/src/modules/ROOT/pages/integration/_config-properties.adoc | Rewords EE-only note for move-thread-count. |
| docs/src/modules/ROOT/pages/frequently-asked-questions.adoc | Rewords licensing/EE references and links. |
| docs/src/modules/ROOT/pages/constraints-and-score/performance.adoc | Rewords EE-only notes, adjusts headings. |
| docs/src/modules/ROOT/pages/constraints-and-score/overview.adoc | Updates incremental calculator messaging and important note wording. |
| core/src/test/resources/ai/timefold/solver/core/api/solver/testdataSolverConfig.xml | Switches test config from incremental to easy calculator. |
| core/src/test/resources/ai/timefold/solver/core/api/solver/testdataShadowedSolverConfig.xml | Removes incremental-calculator-based test config. |
| core/src/test/resources/ai/timefold/solver/core/api/solver/testdataOverconstrainedSolverConfig.xml | Removes incremental-calculator-based test config. |
| core/src/test/java/ai/timefold/solver/core/testdomain/unassignedvar/TestdataAllowsUnassignedConstraintProvider.java | Changes constraint definition for unassigned test domain. |
| core/src/test/java/ai/timefold/solver/core/testdomain/shadow/TestdataShadowedConstraintProviderClass.java | Adds constraint provider for shadow test domain. |
| core/src/test/java/ai/timefold/solver/core/testdomain/score/lavish/TestdataLavishSolution.java | Uses Java 21 List#getFirst() in helpers. |
| core/src/test/java/ai/timefold/solver/core/testdomain/multivar/TestdataMultiVarConstraintProvider.java | Adds new multivar constraint provider. |
| core/src/test/java/ai/timefold/solver/core/testdomain/list/unassignedvar/TestdataAllowsUnassignedValuesListIncrementalScoreCalculator.java | Removes incremental calculator test implementation. |
| core/src/test/java/ai/timefold/solver/core/testdomain/list/shadowhistory/TestdataListWithShadowHistoryConstraintProvider.java | Adds constraint provider for list shadow history test domain. |
| core/src/test/java/ai/timefold/solver/core/testdomain/list/pinned/TestdataPinnedListIncrementalScoreCalculator.java | Removes incremental calculator test implementation. |
| core/src/test/java/ai/timefold/solver/core/testdomain/list/pinned/index/TestdataPinnedWithIndexListIncrementalScoreCalculator.java | Removes incremental calculator test implementation. |
| core/src/test/java/ai/timefold/solver/core/testdomain/constraintweightoverrides/TestdataConstraintWeightOverridesIncrementalScoreCalculator.java | Removes incremental calculator test implementation. |
| core/src/test/java/ai/timefold/solver/core/testdomain/constraintverifier/TestdataConstraintVerifierJustificationProvider.java | Removes indictWith usage and updates constraint name. |
| core/src/test/java/ai/timefold/solver/core/testconstraint/TestConstraint.java | Updates ConstraintRef import and constructor signature changes. |
| core/src/test/java/ai/timefold/solver/core/impl/score/stream/common/uni/UniConstraintBuilderTest.java | Updates ConstraintRef import and constraint constructor signature. |
| core/src/test/java/ai/timefold/solver/core/impl/score/stream/common/tri/TriConstraintBuilderTest.java | Updates ConstraintRef import and constraint constructor signature. |
| core/src/test/java/ai/timefold/solver/core/impl/score/stream/common/quad/QuadConstraintBuilderTest.java | Updates ConstraintRef import and constraint constructor signature. |
| core/src/test/java/ai/timefold/solver/core/impl/score/stream/common/ConstraintStreamFunctionalTest.java | Removes indictment-related test hook. |
| core/src/test/java/ai/timefold/solver/core/impl/score/stream/common/bi/BiConstraintBuilderTest.java | Updates ConstraintRef import and constraint constructor signature. |
| core/src/test/java/ai/timefold/solver/core/impl/score/stream/common/AbstractSolutionManagerTest.java | Removes indictment/explanation assertions tied to removed APIs. |
| core/src/test/java/ai/timefold/solver/core/impl/score/director/incremental/IncrementalScoreDirectorTest.java | Removes incremental score director tests (moved/enterprise-only). |
| core/src/test/java/ai/timefold/solver/core/impl/score/director/incremental/IncrementalScoreDirectorSemanticsTest.java | Removes incremental score director semantics tests (moved/enterprise-only). |
| core/src/test/java/ai/timefold/solver/core/impl/score/constraint/ConstraintMatchTest.java | Moves test into impl package and adapts to new constructor shape. |
| core/src/test/java/ai/timefold/solver/core/impl/domain/solution/ConstraintWeightOverridesTest.java | Updates ConstraintRef import location. |
| core/src/main/java/module-info.java | Removes exports of old API packages and adjusts internal exports for enterprise modules. |
| core/src/main/java/ai/timefold/solver/core/preview/api/domain/solution/diff/PlanningVariableDiff.java | Marks solution diff as EE-only in Javadoc. |
| core/src/main/java/ai/timefold/solver/core/preview/api/domain/solution/diff/PlanningSolutionDiff.java | Marks solution diff as EE-only in Javadoc. |
| core/src/main/java/ai/timefold/solver/core/preview/api/domain/solution/diff/PlanningEntityDiff.java | Marks solution diff as EE-only in Javadoc. |
| core/src/main/java/ai/timefold/solver/core/preview/api/domain/solution/diff/package-info.java | Adds EE-only note to solution diff package docs. |
| core/src/main/java/ai/timefold/solver/core/impl/solver/RecommendationConstructor.java | Removes internal recommendation constructor (moved/enterprise-only). |
| core/src/main/java/ai/timefold/solver/core/impl/solver/DefaultRecommendedAssignment.java | Removes default recommended assignment impl (moved/enterprise-only). |
| core/src/main/java/ai/timefold/solver/core/impl/solver/Assigner.java | Removes assignment recommendation helper (moved/enterprise-only). |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/test/SessionBasedAssertionBuilder.java | Removes indictment map wiring from assertions. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/test/ScoreDirectorFactoryCache.java | Updates ConstraintRef import and method signature formatting. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/test/DefaultSingleConstraintAssertion.java | Switches constraint match totals map to use ConstraintRef keys and removes indictments. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/test/DefaultShadowVariableAwareSingleConstraintAssertion.java | Removes indictment handling during initialization. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/test/DefaultShadowVariableAwareMultiConstraintAssertion.java | Removes indictment handling during initialization. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/test/DefaultMultiConstraintAssertion.java | Switches constraint match totals map to use ConstraintRef keys and removes indictments. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/test/ConfiguredConstraintVerifier.java | Updates ConstraintRef import location. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/test/AbstractMultiConstraintAssertion.java | Removes indictment collections and builds message via analysis/summary. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/test/AbstractConstraintAssertion.java | Adds enterprise-backed score explanation summarization fallback. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/common/uni/UniConstraintConstructor.java | Removes indicted mapping type parameter from constructor API. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/common/uni/UniConstraintBuilderImpl.java | Removes indictWith(...) support. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/common/uni/InnerUniConstraintStream.java | Removes default indicted objects mapping helper. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/common/tri/TriConstraintConstructor.java | Removes indicted mapping type parameter from constructor API. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/common/tri/TriConstraintBuilderImpl.java | Removes indictWith(...) support. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/common/tri/InnerTriConstraintStream.java | Removes default indicted objects mapping helper. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/common/quad/QuadConstraintConstructor.java | Removes indicted mapping type parameter from constructor API. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/common/quad/QuadConstraintBuilderImpl.java | Removes indictWith(...) support. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/common/quad/InnerQuadConstraintStream.java | Removes default indicted objects mapping helper. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/common/InnerConstraintFactory.java | Updates ConstraintRef import location. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/common/ConstraintConstructor.java | Simplifies constructor type parameters (removes indicted mapping). |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/common/bi/InnerBiConstraintStream.java | Removes default indicted objects mapping helper. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/common/bi/BiConstraintConstructor.java | Removes indicted mapping type parameter from constructor API. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/common/bi/BiConstraintBuilderImpl.java | Removes indictWith(...) support. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/common/AbstractConstraintStreamScoreDirectorFactory.java | Removes supportsConstraintMatching() override. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/common/AbstractConstraintStream.java | Removes default indicted mapping hook. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/common/AbstractConstraintBuilder.java | Removes indicted mapping plumbing when building constraints. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/common/AbstractConstraint.java | Removes indicted mapping storage and related API. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/bavet/uni/UniLongImpactHandler.java | Updates match supplier construction without indicted mapping. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/bavet/uni/UniBigDecimalImpactHandler.java | Updates match supplier construction without indicted mapping. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/bavet/uni/BavetAbstractUniConstraintStream.java | Updates constraint building without indicted mapping default. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/bavet/tri/TriLongImpactHandler.java | Updates match supplier construction without indicted mapping. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/bavet/tri/TriBigDecimalImpactHandler.java | Updates match supplier construction without indicted mapping. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/bavet/tri/BavetAbstractTriConstraintStream.java | Updates constraint building without indicted mapping default. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/bavet/quad/QuadLongImpactHandler.java | Updates match supplier construction without indicted mapping. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/bavet/quad/QuadBigDecimalImpactHandler.java | Updates match supplier construction without indicted mapping. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/bavet/quad/BavetAbstractQuadConstraintStream.java | Updates constraint building without indicted mapping default. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/bavet/common/Scorer.java | Updates ConstraintRef import location. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/bavet/bi/BiLongImpactHandler.java | Updates match supplier construction without indicted mapping. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/bavet/bi/BiBigDecimalImpactHandler.java | Updates match supplier construction without indicted mapping. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/bavet/bi/BavetAbstractBiConstraintStream.java | Updates constraint building without indicted mapping default. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/bavet/BavetConstraintSession.java | Removes indictment map exposure and keys match totals by ConstraintRef. |
| core/src/main/java/ai/timefold/solver/core/impl/score/stream/bavet/BavetConstraint.java | Updates constructor signature to remove indicted mapping. |
| core/src/main/java/ai/timefold/solver/core/impl/score/ScoreUtil.java | Removes now-unused int parsing helper. |
| core/src/main/java/ai/timefold/solver/core/impl/score/director/stream/DefaultConstraintMetaModel.java | Updates ConstraintRef import location. |
| core/src/main/java/ai/timefold/solver/core/impl/score/director/stream/BavetConstraintStreamScoreDirector.java | Switches constraint match totals map key to ConstraintRef and removes indictments. |
| core/src/main/java/ai/timefold/solver/core/impl/score/director/ScoreDirectorFactoryFactory.java | Delegates incremental score director factory creation to enterprise service. |
| core/src/main/java/ai/timefold/solver/core/impl/score/director/ScoreDirectorFactory.java | Removes supportsConstraintMatching() default method. |
| core/src/main/java/ai/timefold/solver/core/impl/score/director/incremental/IncrementalScoreDirectorFactory.java | Removes OSS incremental score director factory (moved/enterprise-only). |
| core/src/main/java/ai/timefold/solver/core/impl/score/director/easy/EasyScoreDirector.java | Updates constraint matching API surface and clarifies lack of ScoreAnalysis support. |
| core/src/main/java/ai/timefold/solver/core/impl/score/constraint/ConstraintMatchPolicy.java | Updates Javadoc links after package removals. |
| core/src/main/java/ai/timefold/solver/core/impl/move/MoveTesterScoreDirector.java | Removes indictments and updates constraint match totals map key type. |
| core/src/main/java/ai/timefold/solver/core/impl/localsearch/DefaultLocalSearchPhase.java | Updates imports after moving types to impl. |
| core/src/main/java/ai/timefold/solver/core/impl/domain/variable/ShadowVariableUpdateHelper.java | Removes indictments and updates constraint match totals map key type. |
| core/src/main/java/ai/timefold/solver/core/impl/domain/solution/descriptor/DefaultPlanningVariableDiff.java | Removes solution diff implementation (moved/enterprise-only). |
| core/src/main/java/ai/timefold/solver/core/impl/domain/solution/ConstraintWeightSupplier.java | Removes indirection interface (moved/enterprise-only). |
| core/src/main/java/ai/timefold/solver/core/impl/bavet/common/InnerConstraintProfiler.java | Updates ConstraintRef import location. |
| core/src/main/java/ai/timefold/solver/core/impl/bavet/common/BavetAbstractConstraintStream.java | Removes indicted mapping handling when constructing constraints. |
| core/src/main/java/ai/timefold/solver/core/config/score/director/ScoreDirectorFactoryConfig.java | Adds EE-only notes on incremental score calculation config. |
| core/src/main/java/ai/timefold/solver/core/api/solver/SolutionUpdatePolicy.java | Removes obsolete explain() reference. |
| core/src/main/java/ai/timefold/solver/core/api/score/stream/uni/UniConstraintBuilder.java | Removes indictWith from public API and updates EE-only justification note. |
| core/src/main/java/ai/timefold/solver/core/api/score/stream/tri/TriConstraintBuilder.java | Removes indictWith from public API and updates EE-only justification note. |
| core/src/main/java/ai/timefold/solver/core/api/score/stream/test/SingleConstraintAssertion.java | Removes indictment assertion methods. |
| core/src/main/java/ai/timefold/solver/core/api/score/stream/quad/QuadConstraintBuilder.java | Removes indictWith from public API and updates EE-only justification note. |
| core/src/main/java/ai/timefold/solver/core/api/score/stream/DefaultConstraintJustification.java | Updates nullness annotations and links after constraint package changes. |
| core/src/main/java/ai/timefold/solver/core/api/score/stream/ConstraintRef.java | Moves ConstraintRef into core.api.score.stream. |
| core/src/main/java/ai/timefold/solver/core/api/score/stream/ConstraintMetaModel.java | Removes obsolete import after ConstraintRef move. |
| core/src/main/java/ai/timefold/solver/core/api/score/stream/ConstraintJustification.java | Removes obsolete ConstraintMatch reference and clarifies EE-only analysis note. |
| core/src/main/java/ai/timefold/solver/core/api/score/stream/ConstraintBuilder.java | Updates Javadoc linkage to match new analysis APIs. |
| core/src/main/java/ai/timefold/solver/core/api/score/stream/Constraint.java | Removes obsolete import after ConstraintRef move. |
| core/src/main/java/ai/timefold/solver/core/api/score/stream/bi/BiConstraintBuilder.java | Removes indictWith from public API and updates EE-only justification note. |
| core/src/main/java/ai/timefold/solver/core/api/score/constraint/package-info.java | Removes now-deleted constraint explanation package docs. |
| core/src/main/java/ai/timefold/solver/core/api/score/constraint/Indictment.java | Removes indictment public API (moved/enterprise-only). |
| core/src/main/java/ai/timefold/solver/core/api/score/constraint/ConstraintMatchTotal.java | Removes constraint match total public API (moved/enterprise-only). |
| core/src/main/java/ai/timefold/solver/core/api/score/calculator/IncrementalScoreCalculator.java | Removes entity add/remove callbacks and adds EE-only notes. |
| core/src/main/java/ai/timefold/solver/core/api/score/calculator/ConstraintMatchRegistry.java | Introduces new registry API for incremental calculators to report matches. |
| core/src/main/java/ai/timefold/solver/core/api/score/calculator/ConstraintMatchRegistration.java | Introduces cancelable registration handle for matches. |
| core/src/main/java/ai/timefold/solver/core/api/score/calculator/ConstraintMatchAwareIncrementalScoreCalculator.java | Removes old constraint-match-aware incremental calculator API. |
| core/src/main/java/ai/timefold/solver/core/api/score/calculator/AnalyzableIncrementalScoreCalculator.java | Adds new enterprise analysis hook for incremental calculators. |
| core/src/main/java/ai/timefold/solver/core/api/score/analysis/package-info.java | Adds new score analysis API package docs and EE-only note. |
| core/src/main/java/ai/timefold/solver/core/api/score/analysis/MatchAnalysis.java | Converts MatchAnalysis from record to interface and updates EE-only note. |
| .specify/templates/checklist-template.md | Removes Specify template file. |
| .specify/templates/agent-file-template.md | Removes Specify template file. |
| .specify/scripts/bash/setup-plan.sh | Removes Specify setup script. |
| .github/workflows/release-changelog-template.md | Tweaks EE licensing wording in changelog template. |
Comments suppressed due to low confidence (1)
core/src/main/java/ai/timefold/solver/core/api/score/stream/ConstraintBuilder.java:16
- ConstraintBuilder’s public Javadoc links to an internal/non-exported impl ConstraintMatchTotal type (and imports it) which users can’t access; update the documentation to reference the public ScoreAnalysis/constraint name concepts and remove the impl import.
package ai.timefold.solver.core.api.score.stream;
import ai.timefold.solver.core.impl.score.constraint.ConstraintMatchTotal;
import org.jspecify.annotations.NullMarked;
@NullMarked
public interface ConstraintBuilder {
/**
* Builds a {@link Constraint} from the constraint stream.
* The constraint will be placed in the {@link Constraint#DEFAULT_CONSTRAINT_GROUP default constraint group}.
*
* @param constraintName shows up in {@link ConstraintMatchTotal} during score justification
*/
default Constraint asConstraint(String constraintName) {
|
Christopher-Chianelli
approved these changes
Apr 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


No description provided.