| name | convergence-check |
| description | Skill for determining whether the review process has converged (accept), needs another round (iterate), or has reached diminishing returns (exhausted).
|
Convergence Check
Use this skill when evaluating whether the peer review loop should terminate,
iterate, or be declared exhausted.
Convergence Criteria
ACCEPT (Converged)
All of the following must be true:
∀ reviewer: recommendation ∈ {accept, accept_minor}
AND no unresolved items with severity = critical
AND no unresolved items with severity = major
AND mean_overall ≥ venue_threshold
AND no new blocking concerns raised in re-review
REJECT (Terminal)
Any of the following:
mean_overall < venue_threshold - 1.5
OR ≥ 2 reviewers recommend reject
OR any reviewer identifies fatal flaw:
- incorrect proof that invalidates main theorem
- fabricated or manipulated data
- fundamental methodological error
- plagiarism or duplicate submission
ITERATE (Another Round)
NOT ACCEPT AND NOT REJECT
AND round < max_rounds (default: 3)
AND score_delta(last_round) > 0.3 (improvement detected)
AND at least one reviewer has unresolved major concerns
DISCUSSION (Score Disagreement)
Any dimension has score spread ≥ 4 points across reviewers
→ Trigger discussion round before issuing decision
The discussion round:
- Unblinds all reviews to all reviewers
- Each reviewer writes a brief rebuttal to disagreeing points
- AE moderates and produces updated synthesis
- Counts as an additional round toward max_rounds
- After discussion, re-apply decision rules
EXHAUSTED (Terminal — Diminishing Returns)
round ≥ max_rounds
OR (score_delta(last_round) ≤ 0.3 AND score_delta(round_before_last) ≤ 0.3)
When exhausted, produce an honest assessment with:
- Current state of the paper
- Remaining unresolved concerns
- Specific guidance for future improvement
- Recommendation for alternative venues if appropriate
Applying the Check
Step 1: Gather Data
ROUND=$(grep 'round:' .review/state.yaml | awk '{print $2}')
for r in alpha beta gamma; do
REC=$(grep 'recommendation:' ".review/rounds/round-$ROUND/re-review-$r.yaml" | awk '{print $2}' | tr -d '"')
SCORE=$(grep 'updated_score:' ".review/rounds/round-$ROUND/re-review-$r.yaml" | awk '{print $2}')
echo "$r: score=$SCORE recommendation=$REC"
done
Step 2: Compute Mean and Delta
current_mean = mean(alpha_score, beta_score, gamma_score)
previous_mean = mean(previous_alpha, previous_beta, previous_gamma)
delta = current_mean - previous_mean
Step 3: Check Blockers
for r in alpha beta gamma; do
grep -A2 'status: "unresolved"' ".review/rounds/round-$ROUND/re-review-$r.yaml"
done
for r in alpha beta gamma; do
grep -A3 'severity: "critical"' ".review/rounds/round-$ROUND/re-review-$r.yaml"
done
for r in alpha beta gamma; do
grep -A2 'remaining_blockers:' ".review/rounds/round-$ROUND/re-review-$r.yaml"
done
Step 4: Apply Decision
convergence_result:
round: <N>
mean_score: <float>
score_delta: <float>
all_accept: true | false
unresolved_critical: <count>
unresolved_major: <count>
new_blockers: <count>
verdict: "CONVERGED" | "ITERATE" | "EXHAUSTED" | "REJECT"
reasoning: "<why this verdict>"
Score Trajectory Visualization
Track across rounds for pattern detection:
Round 1: α=5 β=7 γ=6 mean=6.0 decision=MAJOR_REVISION
Round 2: α=7 β=8 γ=7 mean=7.3 delta=+1.3 → improving
Round 3: α=7 β=8 γ=8 mean=7.7 delta=+0.4 → improving (slower)
Patterns:
- Monotonic improvement (delta > 0 each round) → likely to converge
- Plateau (delta < 0.3 for 2+ rounds) → consider exhaustion
- Oscillation (alternating positive/negative delta) → fundamental issue
- One holdout (2 accept, 1 stuck) → may need discussion round
Discussion Round
When reviewer scores have spread ≥ 4 points on any dimension:
- Share all reviews with all reviewers (controlled unblinding)
- Ask each reviewer to provide a brief rebuttal to the disagreeing reviewer
- AE moderates and produces updated synthesis
- This counts as an additional round toward max_rounds
Exhaustion Report
When declaring EXHAUSTED, produce:
exhaustion_report:
rounds_completed: <N>
final_scores:
alpha: <score>
beta: <score>
gamma: <score>
mean: <float>
score_trajectory: [<round1_mean>, <round2_mean>, ...]
remaining_concerns:
critical: [<list>]
major: [<list>]
minor: [<list>]
improvement_guidance:
- "<specific actionable suggestion>"
venue_recommendation: "<alternative venue if appropriate>"
honest_assessment: |
Multi-paragraph honest assessment of the paper's current state,
what was improved during review, and what still needs work.