-
Notifications
You must be signed in to change notification settings - Fork 174
feat: add ability to run a move during testing #2028
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
| * This class is an internal detail and must not be exposed to the user. | ||
| */ | ||
| @NullMarked | ||
| static final class DummyConstraintProvider implements ConstraintProvider { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This forces some changes to Quarkus/Spring.
I made these manually, as I didn't trust the agent to figure it out without all the speccing and planning prerequisites.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This pull request adds a new MoveRunner API for testing move implementations during development. The feature was implemented using AI assistance (Claude Sonnet 4.5) based on specifications created through human-AI collaboration.
Changes:
- Added new testing API (
MoveRunnerandMoveRunContext) for executing moves with automatic undo support - Updated Spring Boot and Quarkus auto-configuration to filter out internal test classes
- Enhanced configuration utilities to support non-public inner static classes
- Added comprehensive test coverage using the new API with builtin moves
- Updated documentation with usage examples and best practices
Reviewed changes
Copilot reviewed 25 out of 26 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| MoveRunner.java | New API entry point providing fluent interface for move execution with resource management |
| MoveRunContext.java | New execution context for permanent and temporary move execution |
| InnerScoreDirector.java | Added executeTemporarily variant accepting consumer callback |
| AbstractScoreDirector.java | Implemented new executeTemporarily method delegating to move director |
| ConfigUtils.java | Enhanced to support non-public inner static class instantiation |
| TimefoldSolverAutoConfiguration.java | Added UNIQUENESS_PREDICATE to filter internal classes and abstract types |
| IncludeAbstractClassesEntityScanner.java | Updated to use shared UNIQUENESS_PREDICATE |
| TimefoldProcessor.java | Added UNIQUENESS_PREDICATE and renamed logger constant |
| Moves.java | Updated swap methods with proper type parameterization |
| neighborhoods.adoc | Added comprehensive MoveRunner API documentation |
| *MoveTest.java (6 files) | New test classes demonstrating MoveRunner usage with builtin moves |
| MoveRunnerTest.java | Unit tests for MoveRunner API |
| Specification files | Complete feature specification, design, and implementation plan |
...uarkus/deployment/src/main/java/ai/timefold/solver/quarkus/deployment/TimefoldProcessor.java
Show resolved
Hide resolved
|



This was written entirely using SpecKit. Human+AI collaboration went into the specification; the code produced was 99 % done by Claude Sonnet 4.5.
Important pieces:
spec.mdcontains the specification of the featureplan.md(and accompanying data model + API) contains the AI's implementation planconstitution.md- I drafted some amendments as I was watching AI produce code that didn't look like "our" code.I'm asking both @Christopher-Chianelli and @zepfred for a very careful code review. I have two reasons for that:
I do not recommend reviewing commit-by-commit. Review the final product, if you wish to keep your sanity.