Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
694ef0c
Add /auto-pipeline orchestrator + strengthen rule-issue quality gates
isPANN May 25, 2026
41972d8
Add MinimumDiscretePlanarInverseKinematics model (#994)
isPANN May 25, 2026
9383f03
Fix #994 model: complexity reflects total config product, not 2^n
isPANN May 25, 2026
b0ed7e1
Reformat total_configurations getter (cargo fmt)
isPANN May 25, 2026
910dc66
Add MaximumCoKPlex model (#1015)
isPANN May 25, 2026
2d6b584
Add MaximumCommonEdgeSubgraph model (#1018)
isPANN May 25, 2026
feb9a6e
Add MaximumEdgeWeightedKClique model (#1020)
isPANN May 25, 2026
4794f41
Add HighlyConnectedDeletion model (#1022)
isPANN May 25, 2026
fde5036
Add EulerianPath model (#1024)
isPANN May 25, 2026
b3d6fbd
Add PrizeCollectingSteinerForest model (#1026)
isPANN May 25, 2026
03101cc
Add MinimumCostMaximumFlow model (#1029)
isPANN May 25, 2026
88059c6
Add MinimumCostCirculation model (#1030)
isPANN May 25, 2026
d86b568
Add ClosestString model (#1032)
isPANN May 25, 2026
f77ea5c
Add ClosestSubstring model (#1033)
isPANN May 25, 2026
d16217b
Add MaximumContactMapOverlap model (#1043)
isPANN May 25, 2026
80e5ac4
Merge branch 'main' into batch-add-models
isPANN May 25, 2026
8c067b2
Trim skill redundancies surfaced by self-review of #1067
isPANN May 25, 2026
e346156
Address final-review findings on #1067
isPANN May 25, 2026
6229b5c
Add Partition -> IntegralFlowWithMultipliers reduction (#363)
isPANN May 26, 2026
87e47e5
Add MinimumVertexCover -> ComparativeContainment reduction (#385)
isPANN May 26, 2026
942bb55
Add MinimumDiscretePlanarInverseKinematics -> QUBO reduction (#995)
isPANN May 26, 2026
f13bbb3
Add OptimalLinearArrangement -> SequencingToMinimizeWeightedCompletio…
isPANN May 26, 2026
c2e60cb
Add ThreeDimensionalMatching -> ThreeMatroidIntersection reduction (#…
isPANN May 26, 2026
a1f816d
Add MinimumCoveringByCliques -> MinimumIntersectionGraphBasis reducti…
isPANN May 26, 2026
000fe61
Add Numerical3DimensionalMatching -> NumericalMatchingWithTargetSums …
isPANN May 26, 2026
b4e6caa
Add MaximumCoKPlex -> ILP reduction (#1016)
isPANN May 26, 2026
150cd5f
Add MaximumCommonEdgeSubgraph -> ILP reduction (#1019)
isPANN May 26, 2026
5d8c184
Add MaximumEdgeWeightedKClique -> ILP reduction (#1021)
isPANN May 26, 2026
3b91164
Add HighlyConnectedDeletion -> ILP reduction (#1023)
isPANN May 26, 2026
181f158
Add EulerianPath -> ILP reduction (#1025)
isPANN May 26, 2026
c2c20b7
Add MinimumCostMaximumFlow -> MinimumCostCirculation reduction (#1031)
isPANN May 26, 2026
73ebcf1
Fix #995 example-db test compile error
isPANN May 26, 2026
2842578
Add ClosestString -> ILP reduction (#1034)
isPANN May 26, 2026
d1da221
Add ClosestSubstring -> ILP reduction (#1035)
isPANN May 26, 2026
1dce707
Fix clippy identity_op in closestsubstring_ilp test (#1035)
isPANN May 26, 2026
f601a38
Fix incorrect expected value in zero-length-task test (#472 review)
isPANN May 26, 2026
0289a9e
Add canonical example for ThreeDimensionalMatching -> ThreeMatroidInt…
isPANN May 26, 2026
ce57220
Fix missing canonical examples + bib keys (#1021 review)
isPANN May 26, 2026
01badac
Remove stale zero-length CLI tests after validator relaxation (#472)
isPANN May 26, 2026
f4bad09
Fix paper compile errors: typst inter, missing/typo'd bib keys
isPANN May 26, 2026
5a52fb7
Add auto-pipeline integration gate (Step 2.5)
isPANN May 26, 2026
9a4f728
Slim down auto-pipeline Step 2.5
isPANN May 26, 2026
69d7f0c
Renumber auto-pipeline integration gate as Step 3 (not 2.5)
isPANN May 26, 2026
24d7b80
Revert review-structural Step 4b; let auto-pipeline Step 3 cover it
isPANN May 26, 2026
87fe29f
Revert review-quality bullet to main version
isPANN May 26, 2026
d089e95
Drop codex from auto-pipeline; use plain subagent dispatch
isPANN May 26, 2026
881f5a0
Drop batch-mode language from auto-pipeline Step 3 rationale
isPANN May 26, 2026
27a5c7c
Render canonical examples in paper for 13 batch-added rules
isPANN May 26, 2026
1826867
Add rule: MinimumMaximalMatching -> MaximumAchromaticNumber (#846)
isPANN May 26, 2026
8a747ea
Add rule: MinimumMaximalMatching -> MinimumMatrixDomination (#847)
isPANN May 26, 2026
a8ee2fa
Add rule: ExactCoverBy3Sets -> BoundedDiameterSpanningTree (#913)
isPANN May 26, 2026
09fb3fd
Fix nits: MinimumMaximalMatching -> MaximumAchromaticNumber (#846)
isPANN May 26, 2026
5f348a8
Fix nits: MinimumMaximalMatching -> MinimumMatrixDomination (#847)
isPANN May 26, 2026
f65dc61
Fix nits: ExactCoverBy3Sets -> BoundedDiameterSpanningTree (#913)
isPANN May 26, 2026
8d57839
Fix nit: clarify invalid_source_solution intent (#848)
isPANN May 27, 2026
e0cf8ae
Fix nits: HighlyConnectedDeletion -> ILP debug_assert guards (#1023)
isPANN May 27, 2026
ea098eb
Fix nit: EulerianPath -> ILP extract_solution debug_assert (#1025)
isPANN May 27, 2026
cfc7cae
Fix nit: MaximumCoKPlex bound_k load-time validation (#1015)
isPANN May 27, 2026
314407e
Fix nit: drop unused total_selected_vertices accumulator (#1026)
isPANN May 27, 2026
5a4583c
Fix nit: correct canonical-example route comment (#1029)
isPANN May 27, 2026
b7b2215
Add Planar3Satisfiability -> MinimumGeometricConnectedDominatingSet r…
isPANN May 27, 2026
a8a7db1
Add closed-loop and structural tests for Planar3SAT -> GCD rule (#377)
isPANN May 27, 2026
f0dbd3b
Add canonical example for Planar3Satisfiability -> MinimumGeometricCo…
isPANN May 27, 2026
7c0e486
Fix fmt drift in minimummaximalmatching_minimummatrixdomination.rs
isPANN May 27, 2026
a57bb35
Add reduction-rule block for Planar3SAT -> GCD in paper (#377)
isPANN May 27, 2026
f3db367
Add MaximumContactMapOverlap -> ILP rule (#1044)
isPANN May 27, 2026
8c43988
Add closed-loop tests for MaximumContactMapOverlap -> ILP (#1044)
isPANN May 27, 2026
c2ffb86
Add reduction-rule block for MaximumContactMapOverlap -> ILP (#1044)
isPANN May 27, 2026
992da94
Fix clippy + fmt nits in MaximumContactMapOverlap -> ILP tests (#1044)
isPANN May 27, 2026
206ac06
Add KColoring -> BicliqueCover rule (#1058)
isPANN May 27, 2026
5f89a19
Add closed-loop and structure tests for KColoring -> BicliqueCover (#…
isPANN May 27, 2026
3143f0f
Add reduction-rule block for KColoring -> BicliqueCover (#1058)
isPANN May 27, 2026
76e9577
Fix clippy dead-code on forward_witness helper (#1058)
isPANN May 27, 2026
d41b360
Add KSatisfiability/K3 -> BicliqueCover rule (#1057)
isPANN May 27, 2026
580575c
Add closed-loop and structure tests for KSAT/K3 -> BicliqueCover (#1057)
isPANN May 27, 2026
150093c
Add paper entry + BibTeX for KSAT/K3 -> BicliqueCover (#1057)
isPANN May 27, 2026
a4a651e
Fix Phase 3 nits in KSatisfiability/K3 -> BicliqueCover (#1057)
isPANN May 27, 2026
d3c3992
Add ShortestCommonSuperstring model (#413)
isPANN May 27, 2026
581fa01
Add QuadraticProgramming model (#528)
isPANN May 27, 2026
ad1235e
Add Partition -> SumOfSquaresPartition rule (#393)
isPANN May 27, 2026
624e160
Add MaxCut -> MinimumMatrixCover rule (#925)
isPANN May 27, 2026
b012f6a
Add PrizeCollectingSteinerForest -> SteinerTree rule (#1027)
isPANN May 27, 2026
e8323ec
Add ThreeDimensionalMatching -> MinimumWeightDecoding rule (#916)
isPANN May 28, 2026
041a3a5
Add Decision<OptimalLinearArrangement> -> ConsecutiveOnesMatrixAugmen…
isPANN May 28, 2026
a11cbaf
Remove unused Solver import in PCSF->SteinerTree example builder (#1027)
isPANN May 28, 2026
d7ce5f9
Add Decision<OptimalLinearArrangement> aggregate-edge example + bib c…
isPANN May 28, 2026
4d7ac80
Apply rustfmt to OLA->C1MA rule files (#434)
isPANN May 28, 2026
d6c5b6d
Replace deprecated sect with inter in PCSF->SteinerTree proof (#1027)
isPANN May 28, 2026
871786c
Remove QuadraticProgramming model (#528) — mislabeled bounded-integer…
isPANN May 28, 2026
301da58
Merge branch 'main' into batch-add-models
isPANN May 28, 2026
babfd49
Remove unsound Planar3SAT->GCD rule (#377) + final-review cleanups
isPANN May 28, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
389 changes: 389 additions & 0 deletions .claude/skills/auto-pipeline/SKILL.md

Large diffs are not rendered by default.

87 changes: 84 additions & 3 deletions .claude/skills/check-issue/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,82 @@ If the algorithm is a high-level sketch rather than an implementable procedure

---

## Rule Check 5: Completeness (fail label: `Incomplete`)

**Goal:** Does the proposed mapping work for *every* instance of the source problem, not just the canonical case in the example?

A reduction that only handles a subset of source instances (e.g., "assumes connected graph", "assumes no duplicate elements", "works only when k is even") is **not a valid polynomial-time reduction** unless the issue explicitly:
- restricts the source to a sub-variant that the codebase actually exposes as a distinct model, AND
- the restriction is part of the algorithm statement, not a hidden assumption.

This check is **mandatory** for every `[Rule]` issue and must be backed by **explicit literature and codebase research** — not vibes.

### 5a: Literature research (mandatory)

For the cited construction(s):

1. Find the original paper or textbook section that defines the reduction.
2. Read the **statement of the theorem**: what does it claim the reduction handles? Look for phrases like:
- "for any instance of P" → covers all instances (good)
- "for a P-instance such that ..." → has a precondition (must be flagged)
- "in the special case where ..." → only a special case (must be flagged)
3. Read the **proof**: are there steps that silently assume something about the source (no isolated vertices, no zero weights, integer-valued capacities, ...)?

Use the same fallback chain as Check 3c.

If the cited paper is **not actually a reduction from the full source problem** but from a restricted variant → **Fail** with the precise restriction quoted from the paper. The fix is one of: (a) add a preprocessing step that reduces the full source to the restricted variant, (b) split into a `[Rule]` issue from the actual restricted source, or (c) drop the reduction.

### 5b: Codebase corner-case research (mandatory)

Check the actual codebase to see what shape the source problem can take:

```bash
pred show <Source> --json
```

Read the `size_fields` and any variant getters, then enumerate corner cases the issue's algorithm must handle:

| Class | Example corner cases the reduction must accept |
|---|---|
| Graph-input problems | empty graph, single vertex, isolated vertices, self-loops if the model allows them, parallel edges if allowed, disconnected components, complete graph |
| Weighted problems | all weights equal, all weights zero, mixed signs (if the weight type allows), one weight dominating the rest |
| Formula/circuit | empty clause set, single-literal clauses, tautological clauses, repeated variables in a clause |
| Set systems | empty universe, empty subsets, identical subsets, universe element appearing in no subset |
| Algebraic | zero matrix, identity, singular matrix |

Then trace the **issue's** algorithm by hand against at least 2 corner cases that are not the worked example:

1. Pick a corner case from the table above that the source model actually allows.
2. Simulate the issue's construction step by step.
3. Check: is the target problem well-defined? Does solution extraction still work?

Also grep the codebase for any existing rule whose source has the same problem name — if it already handles certain corner cases, the new rule should at least match that coverage:

```bash
grep -rl "impl.*ReduceTo.*for <Source>" src/rules/
```

Read 1–2 of those existing rules for how they handle edge inputs.

If the issue's algorithm **crashes, produces an invalid target instance, or loses information** on a legitimate corner case → **Fail** with the corner case spelled out.

If the issue's algorithm appears to handle corner cases correctly but the issue body doesn't *state* this explicitly → **Warn** ("works on tested corner cases, but the algorithm description does not address edge inputs — please document").

### 5c: Verdict

| Finding | Verdict |
|---|---|
| Literature explicitly covers all instances AND traced corner cases work | **Pass** |
| Literature explicitly covers all instances but issue is silent on corner cases | **Warn** |
| Literature has a precondition the issue ignores | **Fail** |
| Traced corner case breaks the algorithm | **Fail** |

(If the cited reference doesn't actually contain the reduction at all, Check 3c already catches it — don't double-flag here.)

Report the literature evidence and the corner cases you traced in the comment — this is the most expensive check and reviewers will want to see your work.

---

# Part B: Model Issue Checks

Applies when the title contains `[Model]`.
Expand Down Expand Up @@ -359,9 +435,10 @@ Post a single GitHub comment. The table adapts to the issue type:
| Usefulness | ✅ Pass | No existing direct reduction Source → Target |
| Non-trivial | ✅ Pass | Gadget construction with penalty terms |
| Correctness | ❌ Fail | Paper "Smith 2020" not found on arxiv or Semantic Scholar |
| Completeness | ⚠️ Warn | Algorithm correct on traced corner cases but issue body silent on edge inputs |
| Well-written | ⚠️ Warn | Symbol `m` used in overhead table but not defined in algorithm |

**Overall: 2 passed, 1 failed, 1 warning**
**Overall: 2 passed, 1 failed, 2 warnings**

---

Expand All @@ -374,6 +451,9 @@ Post a single GitHub comment. The table adapts to the issue type:
### Correctness
[Per-reference verification results, any better algorithms found]

### Completeness
[Literature passages cited (with quote + section/theorem number) showing whether the construction covers all source instances, and the corner cases you traced by hand with the algorithm — including any that broke or any preconditions you discovered]

### Well-written
[Specific items to fix]

Expand Down Expand Up @@ -423,13 +503,14 @@ gh issue edit <NUMBER> --add-label "Useless" # if Check 1 failed
gh issue edit <NUMBER> --add-label "Trivial" # if Check 2 failed
gh issue edit <NUMBER> --add-label "Wrong" # if Check 3 failed
gh issue edit <NUMBER> --add-label "PoorWritten" # if Check 4 failed
gh issue edit <NUMBER> --add-label "Incomplete" # if Rule Check 5 failed

# "Good" label requires: zero failures AND zero warnings on Usefulness or Correctness.
# "Good" label requires: zero failures AND zero warnings on Usefulness, Correctness, or Completeness.
# Warnings on Non-trivial or Well-written alone do NOT block "Good".
gh issue edit <NUMBER> --add-label "Good"

# If re-checking after fixes, remove stale failure labels and add "Good" if now passing
gh issue edit <NUMBER> --remove-label "Useless,Trivial,Wrong,PoorWritten" 2>/dev/null
gh issue edit <NUMBER> --remove-label "Useless,Trivial,Wrong,PoorWritten,Incomplete" 2>/dev/null
gh issue edit <NUMBER> --add-label "Good"
```

Expand Down
Loading
Loading