| name | convergence |
| description | Use when quality_gate.py has returned PASS or BLOCKED and the loop must decide to finish (CONVERGED/DONE), continue iterating, or escalate. Applies v0.1 escalation rules with no scoring. |
Convergence Skill
Decide whether the harness loop continues. v0.1 uses fixed rules only — no
scoring, no model confidence.
Rules
PASS
Gate PASS
→ transition CONVERGED → DONE
→ report to user with gate output attached
Continue
All three hold:
Gate BLOCKED
+ 存在明确可处理 blocker(每个 blocker 有明确的下一状态)
+ iteration < max_iterations
→ increment iteration, leave BLOCKED / return to appropriate state
Blocker dispatch:
- open finding → REPRODUCING (via reproduce-finding)
- unverified requirement / red verification → IMPLEMENTING
Escalate
Any one holds → transition to ESCALATED:
iteration >= max_iterations -> detected by harness converge
same finding VERIFIED then open again (regression) -> detected by harness converge
same invariant repeatedly violated -> human/skill declares
test suite unstable -> human/skill declares
architecture defect suspected -> human/skill declares
spec ambiguity blocks verification -> human/skill declares
Output exactly one reason code:
SPEC_AMBIGUITY | ARCHITECTURE_DEFECT | REPEATED_REGRESSION |
UNSTABLE_TEST | REVIEW_DISAGREEMENT | MAX_ITERATIONS
Code-detected codes (MAX_ITERATIONS, REPEATED_REGRESSION) are emitted by
harness converge. For the others YOU must declare them explicitly to the
user with evidence - never silently retry past a judgment-call blocker.
Hard Boundaries
- DONE only via CONVERGED → DONE, and CONVERGED only after gate exit 0.
- ESCALATED ends the autonomous loop. Report reason + full status to user;
do not silently retry.
- Never reset
iteration to dodge max_iterations.