Conversation
Normalize filler triples before reconstructing the source matching. Include the reverse-construction proof and noncanonical-witness regressions.
…orage Keep witness and value mappings on executed reduction results, separate finite brute-force enumeration from model semantics, and make numeric failures explicit. Use native HiGHS execution and sprs-backed QUBO matrices; update registered construction, callers, documentation, and regression tests together.
Reuse the ILP row buffer and combine repeated Steiner extraction scans. Use petgraph union-find, connectivity, and articulation-point implementations in the existing graph checks.
Apply model construction checks to persisted input and reconstruct derived caches from source fields. Preserve public constructor and setter signatures, return deserialization errors for invalid input, and cover creation and loading boundaries with regression tests.
isPANN
marked this pull request as draft
September 14, 2026 16:54
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #1151 +/- ##
==========================================
+ Coverage 95.93% 96.42% +0.49%
==========================================
Files 1074 1070 -4
Lines 132106 144318 +12212
==========================================
+ Hits 126730 139160 +12430
+ Misses 5376 5158 -218 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Reject constraint-violating candidates and feedback-arc incumbents that do not satisfy the recovery premise. Carry complete ILP results through dispatch and evaluate external target results once at the recovery boundary. Validation: 6,523 workspace tests passed; clippy and formatting passed; changed-line coverage 96.98%.
isPANN
marked this pull request as ready for review
September 14, 2026 19:43
Use the model constructors for flow create specifications and deserialization. Reject negative internal multipliers and bundle requirements consistently, and test malformed terminals, capacities, bundles, and homologous arc indices through both input paths. Validation: 6,526 workspace tests passed; clippy and formatting passed. Local PR changed-line coverage against origin/main is 97.54%; changed lines in the three flow models have 100% coverage.
isPANN
marked this pull request as draft
September 15, 2026 04:01
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.
This PR makes an executed reduction responsible for constructing its target and recovering the complete source result. Solvers and CLI workflows use that same recovery path, including when a target optimum establishes source infeasibility.
API and behavior
ReductionResult::recover_result(source, target_result)returns the complete source result.Rc; shared path prefixes reuse that execution.SolveOutcomedistinguishesOptimal,Feasible, andInfeasible; execution failures remain errors.Decision<P>where appropriate; rule-owned recovery handles bounds and penalty semantics.pred extract bundle.json --result target-result.jsonaccepts a complete result, validates the target witness, and follows the same recovery path as bundle solving.For example, a penalty QUBO can have an optimum even when its source ILP is infeasible. The ILP-to-QUBO rule interprets its established energy relation and returns source
Infeasible. A merely feasible candidate that cannot establish the source result returnsInsufficientSolutionQuality, never a proof of infeasibility.The solver establishes optimality;
SolveOutcome::optimalpackages that result and evaluates the witness. Each rule implements its recovery semantics explicitly. There is no default recovery strategy or new cross-rule recovery abstraction.Supporting changes
sprs, reuse ILP buffers, and use existing petgraph algorithms for applicable graph operations.ProblemMetadatatrait and point documentation to catalog lookup; narrow internal helper visibility.This is a package-wide API migration. The broad file count includes model/rule callers and their tests. Verifier tooling, local skills, and generated reports are excluded.
Validation
make checkcargo clippy --workspace --all-targets --all-features -- -D warningsorigin/main(before the final metadata cleanup)Refs #1148.