Conversation
Remove the legacy exporter bridge (LegacyRuleEntry, legacy_rule! macro, LEGACY_RULES, temp-dir helpers, env-var guards, stdout silencing, and build_legacy_rule) from src/example_db/mod.rs. The in-memory builders in rule_builders.rs are now the only rule source with no filesystem round-trip. Add crate-level integration tests proving canonical rule examples carry full problem JSON (MVC→MIS graph fields, SAT→KColoring clauses/graph). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add end-to-end tests proving that `pred create --example` output can be fed directly to `pred solve --solver brute-force` for both model examples (MIS/SimpleGraph/i32) and rule examples (MVC→MIS). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add structural invariant tests: - unique keys for both rule and model databases - count assertions (42 rules, 28 models) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #647 +/- ##
==========================================
- Coverage 96.86% 96.84% -0.03%
==========================================
Files 246 262 +16
Lines 32287 35029 +2742
==========================================
+ Hits 31276 33924 +2648
- Misses 1011 1105 +94 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
…ort normalization Add stub types and methods with failing tests that establish the contract for the variant default resolution feature: - VariantSpec type in src/variant.rs with try_from_pairs, normalize (no-op), and is_default (always false) stubs - ReductionGraph::default_variant_for stub (always returns None) - 13 new tests: 8 pass (basic construction), 5 fail (normalization, defaults) - Format fixes from cargo fmt Failing tests (to be made green in Tasks 2-3): - variant_spec_normalizes_empty_graph_to_simple_graph - variant_spec_is_default_for_default_values - default_variant_for_mis_uses_declared_default - default_variant_for_sat_returns_empty - export_variant_to_map_normalizes_empty_graph Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Implement `default` metadata in `declare_variants!` macro and `VariantSpec`: - Extend `declare_variants!` parsing to accept optional `default` keyword - Add `is_default: bool` to `VariantEntry` for runtime tracking - Implement backwards-compatible default resolution: if no `default` marker is present, the first entry is implicitly the default - Reject multiple `default` markers for the same problem at compile time - Implement `VariantSpec::normalize()` to fill empty graph with "SimpleGraph" - Implement `VariantSpec::is_default()` to detect default dimension values - Add `try_from_map`, `into_map`, `update_dimension` to `VariantSpec` - Populate `default_variants` in `ReductionGraph::new()` from inventory - Implement `ReductionGraph::default_variant_for()` using stored defaults - Normalize empty graph values in `export::variant_to_map()` Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add explicit `default` keyword to every `declare_variants!` block across all 38 model files, following the selection rules: - Graph families: prefer SimpleGraph - Weighted/unweighted: prefer One (unweighted) when available - K-families: prefer KN as generic default - Integer-vs-float without One: prefer integer variant - Single-variant problems: mark the only variant Add regression tests for MinimumVertexCover, QUBO, and KSatisfiability default variant resolution. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Switch CLI commands to use declared default variants for bare problem names instead of searching across all variants. Add capped multi-path support (--max-paths flag) to prevent unbounded enumeration. Key changes: - Add parse_problem_type() for type-level show command (rejects slashes) - Add resolve_problem_ref() shared resolver using declared defaults - Show command now marks default variant with (default) annotation - Path/neighbors/reduce commands use exact default variant nodes - Add find_paths_up_to() capped path enumeration to ReductionGraph - Multi-path JSON output uses structured envelope with truncation metadata - Directory output includes manifest.json Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Update MCP server tools to use the same resolver semantics as CLI:
- show_problem_inner: use parse_problem_type (rejects slash specs),
add is_default field to variant JSON output
- neighbors_inner: use resolve_problem_ref for exact default resolution
- find_path_inner: use resolve_problem_ref, add max_paths param,
use find_paths_up_to with truncation detection, return structured
envelope {paths, truncated, returned, max_paths} for all=true
- create_problem_inner: use resolve_problem_ref for name resolution
- reduce_inner: use resolve_problem_ref for target resolution
Add new MCP tests: slash spec rejection, is_default marking,
structured envelope validation. Update docs with type-level show
semantics, --max-paths flag, and default variant resolution note.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove the unsafe name-only fallback from find_best_entry() that could return overhead for the wrong variant. Now both source and target variants must match exactly. Update lookup_overhead() to pass the target variant through instead of ignoring it. Fix direct_overhead() in rule_builders to fall back to default variants when a concrete variant (e.g. K3) has no registered reduction entry. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add DynProblem trait and LoadedDynProblem wrapper for type-erased problem dispatch via the registry. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extend declare_variants! to accept optional `opt` and `sat` markers that generate factory, serialize_fn, and solve_fn dispatch metadata in VariantEntry. Legacy entries without markers emit None for these fields during the transition period. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Annotate all declare_variants! blocks with opt/sat solver kind markers. Add load_dyn, serialize_any, and find_variant_entry registry helpers with integration tests for exact-match lookup, round-trip serialization, and brute-force solving. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove transitional Option wrappers from VariantEntry dispatch fields. The parser now requires opt or sat markers — legacy entries without solver kind are rejected at compile time. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace CLI-local DynProblem trait, match tables, and helper functions with the core registry's load_dyn and serialize_any. Add SAT solve regression test. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add SolveFn type alias to fix clippy::type_complexity warnings. Format files to pass fmt check. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Introduce ProblemType catalog with alias lookup, VariantDimension for schema-validated variant dimensions, and typed ProblemRef for catalog- backed variant resolution. Extend ProblemSchemaEntry with display_name, aliases, and dimensions fields (populated for MIS, placeholders for rest). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add catalog-backed alias resolution (tries ProblemSchemaEntry aliases first, falls back to legacy ALIASES table). Add resolve_catalog_problem_ref for schema-only validation without graph reachability. Update shell completion to include catalog aliases. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Populate display_name, aliases, and dimensions for all 38 problem models. Add invariant tests: display_name non-empty, aliases globally unique, dimension defaults valid, catalog covers all declared variants, and catalog defaults match reduction graph defaults. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Each ReductionEntry now has a unique rule_id auto-generated from source/target type names and generic arguments. The proc macro computes IDs at compile time (e.g., minimumvertexcover_to_maximumindependentset_simplegraph_i32). Optional explicit id = "..." attribute supported for overrides. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add uniqueness tests for model and rule example spec IDs. Clean up remaining rule_builders.rs to delegate to per-module specs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds a default method on the Problem trait that bridges to the catalog registry, giving typed access to display names, aliases, and variant dimensions. Problem::NAME is preserved as the zero-cost compile-time source of truth; the bridge adds runtime catalog access. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The `id` field on ModelExampleSpec/RuleExampleSpec is only read in test code, so allow(dead_code) is appropriate. Also drops unused Minimize and MinimizeSteps imports. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Finalizes the “structural” canonical example database by moving example generation to in-memory builders, adding catalog/registry-based runtime lookups (types, variants, dynamic load/serialize/solve), and extending CLI/test coverage to validate example round-trips and invariants.
Changes:
- Introduces a registry-backed “problem type catalog” plus variant-entry lookup and dynamic (de)serialization/solve dispatch.
- Adds canonical model/rule example spec builders (feature-gated
example-db) and an exporter to regenerate example JSON in one pass. - Updates CLI and CI/Makefile to exercise the example-db path and adds/adjusts unit tests for catalog and example-db invariants.
Reviewed changes
Copilot reviewed 190 out of 190 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| src/variant.rs | Adds VariantSpec runtime representation + normalization/default helpers. |
| src/unit_tests/variant.rs | Adds unit tests for VariantSpec. |
| src/unit_tests/types.rs | Adds JSON round-trip test for One. |
| src/unit_tests/traits.rs | Adds test ensuring Problem::problem_type() resolves catalog metadata. |
| src/unit_tests/rules/registry.rs | Updates ReductionEntry tests for new rule_id field; adds invariants/lookup tests. |
| src/unit_tests/rules/analysis.rs | Adds connectivity/reachability report tests for reduction graph analysis. |
| src/unit_tests/models/set/minimum_set_covering.rs | Reformats paper example construction. |
| src/unit_tests/models/set/maximum_set_packing.rs | Reformats paper example construction. |
| src/unit_tests/models/formula/sat.rs | Reformats SAT paper example construction. |
| src/unit_tests/models/formula/ksat.rs | Reformats KSAT paper example construction. |
| src/unit_tests/models/algebraic/qubo.rs | Reformats QUBO paper example assertions. |
| src/types.rs | Implements custom serde for One (serialize as 1, accept multiple representations on decode). |
| src/traits.rs | Adds Problem::problem_type() default impl (catalog lookup by NAME). |
| src/rules/travelingsalesman_qubo.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/travelingsalesman_ilp.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/spinglass_qubo.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/spinglass_maxcut.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/sat_minimumdominatingset.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/sat_maximumindependentset.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/sat_ksat.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/sat_coloring.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/sat_circuitsat.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/qubo_ilp.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/minimumvertexcover_minimumsetcovering.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/minimumvertexcover_maximumindependentset.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/minimumsetcovering_ilp.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/minimumdominatingset_ilp.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/maximumsetpacking_qubo.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/maximumsetpacking_ilp.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/maximummatching_maximumsetpacking.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/maximummatching_ilp.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/maximumindependentset_maximumsetpacking.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/maximumindependentset_maximumclique.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/maximumclique_maximumindependentset.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/maximumclique_ilp.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/longestcommonsubsequence_ilp.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/ksatisfiability_subsetsum.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/ksatisfiability_qubo.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/ilp_qubo.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/factoring_ilp.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/factoring_circuit.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/coloring_qubo.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/coloring_ilp.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/circuit_spinglass.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/circuit_ilp.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/binpacking_ilp.rs | Adds canonical rule example spec(s) behind example-db. |
| src/rules/registry.rs | Adds stable rule_id + lookup helpers for registered reductions. |
| src/registry/variant.rs | Extends VariantEntry for dynamic dispatch and adds variant lookup helper. |
| src/registry/schema.rs | Adds VariantDimension + extends ProblemSchemaEntry with display/aliases/dimensions. |
| src/registry/problem_type.rs | New: runtime catalog view + lookup helpers for problem types/aliases. |
| src/registry/mod.rs | Re-exports catalog/dispatch APIs; adds load_dyn and serialize_any. |
| src/registry/dyn_problem.rs | New: type-erased DynProblem + LoadedDynProblem wrapper and solve dispatch. |
| src/models/set/mod.rs | Aggregates canonical model example specs (feature-gated). |
| src/models/set/minimum_set_covering.rs | Adds catalog metadata, default variant marker, and canonical model example spec. |
| src/models/set/maximum_set_packing.rs | Adds catalog metadata, default variant marker, and canonical model example spec. |
| src/models/mod.rs | Minor formatting in re-exports. |
| src/models/misc/subset_sum.rs | Adds catalog metadata + marks default variant. |
| src/models/misc/shortest_common_supersequence.rs | Adds catalog metadata, default variant marker, canonical model example spec. |
| src/models/misc/paintshop.rs | Adds catalog metadata, default variant marker, canonical model example spec. |
| src/models/misc/mod.rs | Aggregates canonical model example specs (feature-gated). |
| src/models/misc/longest_common_subsequence.rs | Adds catalog metadata + marks default variant. |
| src/models/misc/knapsack.rs | Adds catalog metadata + marks default variant. |
| src/models/misc/flow_shop_scheduling.rs | Adds catalog metadata + marks default variant. |
| src/models/misc/factoring.rs | Adds catalog metadata, default variant marker, canonical model example spec. |
| src/models/misc/bin_packing.rs | Adds catalog metadata + default/extra variants. |
| src/models/graph/traveling_salesman.rs | Adds catalog metadata, default variant marker, canonical model example spec. |
| src/models/graph/subgraph_isomorphism.rs | Adds catalog metadata + marks default variant. |
| src/models/graph/spin_glass.rs | Adds catalog metadata, default variant marker, canonical model example spec. |
| src/models/graph/rural_postman.rs | Adds catalog metadata + marks default variant. |
| src/models/graph/partition_into_triangles.rs | Adds catalog metadata, default variant marker, canonical model example spec. |
| src/models/graph/optimal_linear_arrangement.rs | Adds catalog metadata + marks default variant. |
| src/models/graph/mod.rs | Aggregates canonical model example specs (feature-gated). |
| src/models/graph/minimum_vertex_cover.rs | Adds catalog metadata, default variant marker, canonical model example spec. |
| src/models/graph/minimum_sum_multicenter.rs | Adds catalog metadata, default variant marker, canonical model example spec. |
| src/models/graph/minimum_feedback_vertex_set.rs | Adds catalog metadata, default variant marker, canonical model example spec. |
| src/models/graph/minimum_feedback_arc_set.rs | Adds catalog metadata + marks default variant. |
| src/models/graph/minimum_dominating_set.rs | Adds catalog metadata, default variant marker, canonical model example spec. |
| src/models/graph/maximum_matching.rs | Adds catalog metadata, default variant marker, canonical model example spec. |
| src/models/graph/maximum_independent_set.rs | Adds catalog metadata, default variant marker, canonical model example spec. |
| src/models/graph/maximum_clique.rs | Adds catalog metadata, default variant marker, canonical model example spec. |
| src/models/graph/maximal_is.rs | Adds catalog metadata, default variant marker, canonical model example spec. |
| src/models/graph/max_cut.rs | Adds catalog metadata + canonical model example spec. |
| src/models/graph/kcoloring.rs | Adds catalog metadata, default variant marker, canonical model example spec. |
| src/models/graph/isomorphic_spanning_tree.rs | Adds catalog metadata, default variant marker, canonical model example spec. |
| src/models/graph/hamiltonian_path.rs | Adds catalog metadata, default variant marker, canonical model example spec. |
| src/models/graph/graph_partitioning.rs | Adds catalog metadata + marks default variant. |
| src/models/graph/biclique_cover.rs | Adds catalog metadata, default variant marker, canonical model example spec. |
| src/models/formula/sat.rs | Adds catalog metadata, default variant marker, canonical model example spec. |
| src/models/formula/mod.rs | Exposes formula modules + aggregates canonical model example specs. |
| src/models/formula/ksat.rs | Adds catalog metadata, default variant marker, canonical model example spec. |
| src/models/formula/circuit.rs | Adds catalog metadata, default variant marker, canonical model example spec. |
| src/models/algebraic/qubo.rs | Adds catalog metadata, default variant marker, canonical model example spec. |
| src/models/algebraic/mod.rs | Exposes algebraic modules + aggregates canonical model example specs. |
| src/models/algebraic/ilp.rs | Adds catalog metadata, default variant marker, canonical model example spec. |
| src/models/algebraic/closest_vector_problem.rs | Adds catalog metadata, default variant marker, canonical model example spec. |
| src/models/algebraic/bmf.rs | Adds catalog metadata, default variant marker, canonical model example spec. |
| src/lib.rs | Adds extern crate self as problemreductions; and feature-gated example_db module export. |
| src/example_db/rule_builders.rs | New: builds canonical rule examples; includes invariant tests. |
| src/example_db/model_builders.rs | New: builds canonical model examples. |
| src/example_db/mod.rs | New: assembles/validates rule/model DBs and provides lookup helpers. |
| problemreductions-cli/src/main.rs | Updates graph path dispatch to pass new max_paths param. |
| problemreductions-cli/src/commands/reduce.rs | Uses resolved problem refs to compute cheapest path directly. |
| problemreductions-cli/src/cli.rs | Extends CLI UX: --example, --to, --example-side, and max_paths for graph path. |
| problemreductions-cli/Cargo.toml | Enables example-db feature on library dependency. |
| examples/export_examples.rs | New: exports canonical example DB to generated JSON output directory. |
| examples/reduction_travelingsalesman_to_ilp.rs | Removed standalone reduction example binary. |
| examples/reduction_spinglass_to_qubo.rs | Removed standalone reduction example binary. |
| examples/reduction_spinglass_to_maxcut.rs | Removed standalone reduction example binary. |
| examples/reduction_qubo_to_spinglass.rs | Removed standalone reduction example binary. |
| examples/reduction_minimumvertexcover_to_qubo.rs | Removed standalone reduction example binary. |
| examples/reduction_minimumvertexcover_to_maximumindependentset.rs | Removed standalone reduction example binary. |
| examples/reduction_minimumvertexcover_to_ilp.rs | Removed standalone reduction example binary. |
| examples/reduction_minimumdominatingset_to_ilp.rs | Removed standalone reduction example binary. |
| examples/reduction_maximumsetpacking_to_ilp.rs | Removed standalone reduction example binary. |
| examples/reduction_maximummatching_to_maximumsetpacking.rs | Removed standalone reduction example binary. |
| examples/reduction_maximummatching_to_ilp.rs | Removed standalone reduction example binary. |
| examples/reduction_maximumindependentset_to_qubo.rs | Removed standalone reduction example binary. |
| examples/reduction_maximumindependentset_to_minimumvertexcover.rs | Removed standalone reduction example binary. |
| examples/reduction_maximumindependentset_to_maximumclique.rs | Removed standalone reduction example binary. |
| examples/reduction_maximumindependentset_to_ilp.rs | Removed standalone reduction example binary. |
| examples/reduction_maximumclique_to_maximumindependentset.rs | Removed standalone reduction example binary. |
| examples/reduction_maximumclique_to_ilp.rs | Removed standalone reduction example binary. |
| examples/reduction_maxcut_to_spinglass.rs | Removed standalone reduction example binary. |
| examples/reduction_longestcommonsubsequence_to_ilp.rs | Removed standalone reduction example binary. |
| examples/reduction_kcoloring_to_ilp.rs | Removed standalone reduction example binary. |
| examples/reduction_factoring_to_ilp.rs | Removed standalone reduction example binary. |
| examples/reduction_binpacking_to_ilp.rs | Removed standalone reduction example binary. |
| examples/hamiltonian_path.rs | Removed standalone demo example. |
| examples/chained_reduction_ksat_to_mis.rs | Removed standalone chained reduction demo. |
| docs/plans/2026-03-14-pr647-followup-fixes-implementation-plan.md | Adds follow-up plan doc for concrete regressions/drift. |
| docs/agent-profiles/SKILLS.md | Updates guidance to prefer catalog/example-db generation paths. |
| Makefile | Runs tests/examples with example-db feature; replaces per-reduction example runner with exporter. |
| Cargo.toml | Adds example-db feature + registers export_examples example with required feature. |
| .github/workflows/ci.yml | Enables example-db feature in CI test run. |
| .claude/skills/write-rule-in-paper/SKILL.md | Updates paper workflow to use canonical example-db exports. |
| .claude/skills/write-model-in-paper/SKILL.md | Updates paper workflow to require canonical model examples. |
| .claude/skills/review-implementation/structural-reviewer-prompt.md | Updates review checklist to match new catalog/example-db extension points. |
| .claude/skills/issue-to-pr/SKILL.md | Updates guidance re: CLI integration expectations post-refactor. |
| .claude/skills/final-review/SKILL.md | Updates final review checklist for example-db and new registration paths. |
| .claude/CLAUDE.md | Updates repo conventions/docs to reflect new variant/dispatch and example-db flows. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| pub fn find_variant_entry( | ||
| name: &str, | ||
| variant: &BTreeMap<String, String>, | ||
| ) -> Option<&'static VariantEntry> { | ||
| inventory::iter::<VariantEntry>() | ||
| .find(|entry| entry.name == name && entry.variant_map() == *variant) | ||
| } |
- Add tests for ProblemSide::from_problem, ModelExample::from_problem, default_expr, examples_output_dir env override, write_rule/model_example_to - Add error-path tests for find_rule/model_example (not-found) - Add VariantSpec coverage: try_from_map, into_map, update_dimension, normalize without graph key, is_default edge cases - Add analysis tests: missing_proof_chains filter, connectivity components, isolated problem variant info - Fix clippy type_complexity warning in registry test (extract EndpointKey alias) - Remove deprecated id attribute from reduction macro Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add 10 missing graph models (GraphPartitioning, HamiltonianPath, IsomorphicSpanningTree, MinFeedbackArcSet, MinFeedbackVertexSet, MinSumMulticenter, OptimalLinearArrangement, PartitionIntoTriangles, RuralPostman, SubgraphIsomorphism) - Add 5 missing misc models (FlowShopScheduling, Knapsack, LongestCommonSubsequence, ShortestCommonSupersequence, SubsetSum) - Add problem_type() to Problem trait hierarchy - Update Problem Names to include all current types - Add specs.rs to example_db documentation Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Point agents to `pred list` and `pred show <name>` instead of maintaining exhaustive lists that go stale. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Shows source, target, and overhead for every registered primitive reduction. Supports --json output. Replaces the need to maintain hardcoded rule lists in documentation. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…pgrade rmcp to 1.2 - `pred list`: add Complexity column showing best-known complexity (Big O) for the default variant of each problem type - `pred list --rules`: show overhead fields on separate continuation lines instead of a single wide column; JSON overhead is now an array - Upgrade rmcp from 0.16 to 1.2: migrate MCP server and prompts to builder patterns required by #[non_exhaustive] structs - Add merge conflict guidance for skill changes to review-pipeline skill Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- `pred list`: expand rows per variant (show variant slash notation, complexity, and default marker *) instead of aggregating per problem - `pred list --rules`: fix ANSI padding (pad plain text first, then colorize) so columns align correctly; multi-field overhead uses continuation lines Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
3SAT was a type-level alias for KSatisfiability which was confusing because it displayed next to the KN default variant. Replace all references with KSAT (the type alias) and KSAT/K3 (the explicit variant). Remove the special-case resolution code. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
MCP (rmcp + tokio + schemars + tracing) adds ~14s to clean builds. Move it out of default features so `cargo build` and `make cli` are fast. MCP is still available via `--features mcp` or `--features all`. CI already uses explicit `--features ilp-highs` (no mcp). MCP tests use `make mcp-test` which passes `--features mcp`. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
`make cli` stays fast (no MCP). Use `make mcp` to build with MCP server support when needed. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Summary
src/example_db/mod.rs— pure in-memory builders are now the only rule sourcepred create --exampleoutput feeds directly intopred solveTest plan
cargo test example_db:: --features "ilp-highs example-db")cargo test -p problemreductions-cli test_create_)cargo checkclean with no new warnings🤖 Generated with Claude Code