-
Notifications
You must be signed in to change notification settings - Fork 0
Description
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:
- Missing
load_problemmatch arm inproblemreductions-cli/src/dispatch.rs—pred loadwill fail for this problem - Missing
serialize_any_problemmatch arm inproblemreductions-cli/src/dispatch.rs— reduction output serialization will fail - Missing
display-nameentry indocs/paper/reductions.typ - Missing
#problem-def("MaximalIS")block indocs/paper/reductions.typ
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:
-
MaximumClique— not inpub use graph::{...} -
ILP— not inpub use optimization::{...} -
KSatisfiability— not inpub use satisfiability::{...}
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:
-
BMF— missingdisplay-name+#problem-def -
PaintShop— missingdisplay-name+#problem-def -
BicliqueCover— missingdisplay-name+#problem-def
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:
- Missing example file
examples/reduction_satisfiability_to_circuitsat.rs - Missing
example_test!registration intests/suites/examples.rs - Missing
example_fn!registration intests/suites/examples.rs - Missing
reduction-rule("Satisfiability", "CircuitSAT")indocs/paper/reductions.typ
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:
-
MaximumSetPacking → MaximumIndependentSet— no example file, noexample_test!/example_fn!registration -
KSatisfiability → Satisfiability— no example file, noexample_test!/example_fn!registration
Priority 2: Cast rules missing test files (5 rules)
All 5 _casts rules use impl_variant_reduction! macro and lack dedicated test files:
-
ksatisfiability_casts— no#[path]link, no test file -
spinglass_casts— no#[path]link, no test file -
maximumindependentset_casts— no#[path]link, no test file -
kcoloring_casts— no#[path]link, no test file -
maximumsetpacking_casts— no#[path]link, no test file
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,
predcannot 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_loopsuffix (low priority, cosmetic)