Summary
A systematic audit of all 21 models and 38 rules (31 standard + 7 cast/variant) was performed using the review-implementation skill checklist. This issue documents all gaps found.
Model Audit Results
21 models checked, 336 total checks, 11 failures across 6 models.
Priority 1: MaximalIS — Missing CLI dispatch + paper entries (4 failures)
MaximalIS is fully implemented (code, tests, serde, mod.rs registration) but:
Priority 2: Missing models/mod.rs re-exports (3 models)
These types are accessible via prelude::* but missing from pub use in src/models/mod.rs:
Users importing directly from models:: (rather than prelude::*) would get compile errors.
Priority 3: Missing paper entries (3 models)
These models have no mathematical definition in docs/paper/reductions.typ:
Models with all 16 checks passing (15/21)
MaxCut, MaximumIndependentSet, MaximumMatching, MinimumDominatingSet, MinimumVertexCover, TravelingSalesman, KColoring, SpinGlass, QUBO, Satisfiability, MaximumSetPacking, MinimumSetCovering, Factoring, CircuitSAT, MaximumClique (code-only — all but re-export pass).
Rule Audit Results
31 standard rules + 7 cast rules checked.
Priority 1: sat_circuitsat — Missing example + paper entry (6 failures)
Satisfiability → CircuitSAT has a complete rule implementation with passing closed-loop test, but:
Priority 1: Reverse-direction reductions missing examples (2 rules)
These bidirectional rules have the reverse direction registered via #[reduction] and paper entries, but no example programs:
Priority 2: Cast rules missing test files (5 rules)
All 5 _casts rules use impl_variant_reduction! macro and lack dedicated test files:
Note: These are trivial identity-mapping reductions generated by macro. The structural variant rules (maximumindependentset_gridgraph, maximumindependentset_triangular) do have full test coverage.
Priority 3: Test naming convention — closed_loop suffix (20 rules)
20 out of 31 standard rules don't follow the test_<source>_to_<target>_closed_loop naming convention. Most DO have equivalent correctness tests (e.g., test_ilp_solution_equals_brute_force_*), just without the conventional name. Affected rules:
Click to expand full list
- minimumvertexcover_maximumindependentset
- spinglass_qubo
- spinglass_maxcut
- sat_maximumindependentset
- sat_minimumdominatingset
- sat_ksat
- sat_coloring
- factoring_circuit
- factoring_ilp
- maximumindependentset_ilp
- minimumvertexcover_ilp
- maximumclique_ilp
- minimumdominatingset_ilp
- maximummatching_ilp
- maximumsetpacking_ilp
- minimumsetcovering_ilp
- coloring_ilp
- circuit_spinglass
- maximumindependentset_maximumsetpacking
- maximummatching_maximumsetpacking
- minimumvertexcover_minimumsetcovering
Rules with all 14 checks passing (10/31)
maximumindependentset_qubo, minimumvertexcover_qubo, ksatisfiability_qubo, maximumsetpacking_qubo, ilp_qubo, coloring_qubo, circuit_ilp, travelingsalesman_ilp, qubo_ilp, sat_circuitsat (code-only).
Summary Statistics
| Category |
Total Checks |
Pass |
Fail |
Pass Rate |
| Models (21) |
336 |
325 |
11 |
96.7% |
| Standard Rules (31) |
434 |
408 |
26 |
94.0% |
| Cast Rules (7) |
35 |
25 |
10 |
71.4% |
Suggested Action Items
- Fix MaximalIS CLI dispatch — functional bug,
pred cannot load this problem
- Add sat_circuitsat example + paper entry — completeness gap
- Add examples for 2 reverse-direction rules — MaximumSetPacking→MIS, KSatisfiability→SAT
- Add models/mod.rs re-exports — MaximumClique, ILP, KSatisfiability
- Add paper entries for 4 models — MaximalIS, BMF, PaintShop, BicliqueCover
- Consider adding cast rule tests — low priority, macro-generated code
- Standardize test naming — rename existing tests to use
closed_loop suffix (low priority, cosmetic)
Summary
A systematic audit of all 21 models and 38 rules (31 standard + 7 cast/variant) was performed using the
review-implementationskill checklist. This issue documents all gaps found.Model Audit Results
21 models checked, 336 total checks, 11 failures across 6 models.
Priority 1: MaximalIS — Missing CLI dispatch + paper entries (4 failures)
MaximalISis fully implemented (code, tests, serde, mod.rs registration) but:load_problemmatch arm inproblemreductions-cli/src/dispatch.rs—pred loadwill fail for this problemserialize_any_problemmatch arm inproblemreductions-cli/src/dispatch.rs— reduction output serialization will faildisplay-nameentry indocs/paper/reductions.typ#problem-def("MaximalIS")block indocs/paper/reductions.typPriority 2: Missing
models/mod.rsre-exports (3 models)These types are accessible via
prelude::*but missing frompub useinsrc/models/mod.rs:MaximumClique— not inpub use graph::{...}ILP— not inpub use optimization::{...}KSatisfiability— not inpub use satisfiability::{...}Users importing directly from
models::(rather thanprelude::*) would get compile errors.Priority 3: Missing paper entries (3 models)
These models have no mathematical definition in
docs/paper/reductions.typ:BMF— missingdisplay-name+#problem-defPaintShop— missingdisplay-name+#problem-defBicliqueCover— missingdisplay-name+#problem-defModels with all 16 checks passing (15/21)
MaxCut, MaximumIndependentSet, MaximumMatching, MinimumDominatingSet, MinimumVertexCover, TravelingSalesman, KColoring, SpinGlass, QUBO, Satisfiability, MaximumSetPacking, MinimumSetCovering, Factoring, CircuitSAT, MaximumClique (code-only — all but re-export pass).
Rule Audit Results
31 standard rules + 7 cast rules checked.
Priority 1: sat_circuitsat — Missing example + paper entry (6 failures)
Satisfiability → CircuitSAThas a complete rule implementation with passing closed-loop test, but:examples/reduction_satisfiability_to_circuitsat.rsexample_test!registration intests/suites/examples.rsexample_fn!registration intests/suites/examples.rsreduction-rule("Satisfiability", "CircuitSAT")indocs/paper/reductions.typPriority 1: Reverse-direction reductions missing examples (2 rules)
These bidirectional rules have the reverse direction registered via
#[reduction]and paper entries, but no example programs:MaximumSetPacking → MaximumIndependentSet— no example file, noexample_test!/example_fn!registrationKSatisfiability → Satisfiability— no example file, noexample_test!/example_fn!registrationPriority 2: Cast rules missing test files (5 rules)
All 5
_castsrules useimpl_variant_reduction!macro and lack dedicated test files:ksatisfiability_casts— no#[path]link, no test filespinglass_casts— no#[path]link, no test filemaximumindependentset_casts— no#[path]link, no test filekcoloring_casts— no#[path]link, no test filemaximumsetpacking_casts— no#[path]link, no test fileNote: These are trivial identity-mapping reductions generated by macro. The structural variant rules (
maximumindependentset_gridgraph,maximumindependentset_triangular) do have full test coverage.Priority 3: Test naming convention —
closed_loopsuffix (20 rules)20 out of 31 standard rules don't follow the
test_<source>_to_<target>_closed_loopnaming convention. Most DO have equivalent correctness tests (e.g.,test_ilp_solution_equals_brute_force_*), just without the conventional name. Affected rules:Click to expand full list
Rules with all 14 checks passing (10/31)
maximumindependentset_qubo, minimumvertexcover_qubo, ksatisfiability_qubo, maximumsetpacking_qubo, ilp_qubo, coloring_qubo, circuit_ilp, travelingsalesman_ilp, qubo_ilp, sat_circuitsat (code-only).
Summary Statistics
Suggested Action Items
predcannot load this problemclosed_loopsuffix (low priority, cosmetic)