Skip to content

Finalize structural example database#647

Merged
GiggleLiu merged 51 commits intomainfrom
feat/example-database
Mar 14, 2026
Merged

Finalize structural example database#647
GiggleLiu merged 51 commits intomainfrom
feat/example-database

Conversation

@GiggleLiu
Copy link
Contributor

Summary

  • Remove the legacy exporter bridge (LegacyRuleEntry, legacy_rule! macro, temp-dir helpers, env-var guards, stdout silencing) from src/example_db/mod.rs — pure in-memory builders are now the only rule source
  • Add crate-level integration tests proving canonical rule examples carry full problem JSON (MVC→MIS, SAT→KColoring)
  • Add end-to-end CLI round-trip tests: pred create --example output feeds directly into pred solve
  • Add structural DB invariant tests: unique keys, count assertions (42 rules, 28 models)

Test plan

  • All 11 example_db tests pass (cargo test example_db:: --features "ilp-highs example-db")
  • All 50 CLI create tests pass (cargo test -p problemreductions-cli test_create_)
  • Canonical export produces 42 rule + 28 model examples
  • Typst paper builds successfully
  • cargo check clean with no new warnings

🤖 Generated with Claude Code

GiggleLiu and others added 8 commits March 14, 2026 13:04
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
Copy link

codecov bot commented Mar 14, 2026

Codecov Report

❌ Patch coverage is 95.61250% with 125 lines in your changes missing coverage. Please review.
✅ Project coverage is 96.84%. Comparing base (60ec662) to head (1e90d30).
⚠️ Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
src/registry/problem_ref.rs 57.29% 41 Missing ⚠️
src/types.rs 36.36% 28 Missing ⚠️
src/registry/schema.rs 0.00% 11 Missing ⚠️
src/example_db/mod.rs 89.33% 8 Missing ⚠️
src/export.rs 91.78% 6 Missing ⚠️
src/unit_tests/rules/registry.rs 93.10% 6 Missing ⚠️
src/registry/dyn_problem.rs 86.84% 5 Missing ⚠️
src/rules/analysis.rs 96.59% 5 Missing ⚠️
src/unit_tests/registry/problem_type.rs 96.06% 5 Missing ⚠️
src/example_db/specs.rs 98.72% 3 Missing ⚠️
... and 3 more
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.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

GiggleLiu and others added 21 commits March 14, 2026 14:22
…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>
GiggleLiu and others added 4 commits March 14, 2026 21:50
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>
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment on lines +51 to 57
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)
}
GiggleLiu and others added 18 commits March 14, 2026 22:46
- 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>
@GiggleLiu GiggleLiu merged commit f75a28c into main Mar 14, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants