Commit 87ad2ff
Implementation Plan: Fix Infinite CI Loop — flake_suspected Routing Escape for is_fixable=false (#4116)
## Summary
When `diagnose_ci` returns `is_fixable=false` for env-type CI failures,
the `resolve-failures` skill maps them to `flake_suspected`, causing an
infinite re-push loop. This plan fixes the root cause in the skill's
decision table and adds a loop guard in all three pipeline recipes
(`implementation.yaml`, `implementation-groups.yaml`,
`remediation.yaml`).
Two complementary fixes:
1. **Skill fix**: `resolve-failures/SKILL.md` — extract `is_fixable`
from the diagnosis file and route unfixable env/unknown failures to
`ci_only_failure` instead of `flake_suspected`
2. **Recipe fix**: Add `check_flake_loop` guard step (following the
existing `check_ci_rebase_loop` pattern) to bound the `flake_suspected →
re_push` path to 3 iterations, and capture `is_fixable` from
`diagnose_ci` output
3. **Test fix**: Update `tests/skills/test_resolve_failures_ci_aware.py`
— the `_find_table_row_verdict` parser and verdict assertions must
handle the new 4-column table with `is_fixable`
Closes #4113
## Implementation Plan
Plan file:
`/home/talon/projects/autoskillit-runs/impl-20260626-100257-768257/.autoskillit/temp/make-plan/fix_flake_suspected_infinite_ci_loop_plan_2026-06-26_103000.md`
🤖 Generated with [Claude Code](https://claude.com/claude-code) via
AutoSkillit
<!-- autoskillit:pipeline-signature
steps=prepare_pr,run_arch_lenses,compose_pr,annotate_pr_diff,review_pr
-->
## Token Usage Summary
| Step | Model | count | uncached | output | cache_read | peak_ctx |
turns | cache_write | time |
|------|-------|-------|----------|--------|------------|----------|-------|-------------|------|
| plan* | opus[1m] | 2 | 5.7k | 21.6k | 1.4M | 110.3k | 54 | 106.7k |
23m 32s |
| review_approach* | sonnet | 1 | 6.6k | 6.2k | 222.7k | 54.9k | 16 |
40.4k | 8m 55s |
| verify* | opus[1m] | 1 | 66 | 15.7k | 2.2M | 100.2k | 55 | 81.5k | 10m
33s |
| implement* | MiniMax-M3 | 1 | 107.7k | 22.4k | 5.3M | 0 | 144 | 0 | 8m
32s |
| fix* | sonnet | 1 | 438 | 25.9k | 4.6M | 112.1k | 122 | 93.7k | 11m
16s |
| audit_impl* | sonnet | 1 | 70 | 20.0k | 354.6k | 72.5k | 23 | 55.8k |
9m 48s |
| prepare_pr* | MiniMax-M3 | 1 | 47.1k | 2.5k | 161.2k | 0 | 13 | 0 |
39s |
| compose_pr* | MiniMax-M3 | 1 | 36.4k | 1.4k | 140.8k | 0 | 11 | 0 |
30s |
| **Total** | | | 204.1k | 115.7k | 14.4M | 112.1k | | 378.2k | 1h 13m |
\* *Step used a non-Anthropic provider; caching behavior may differ.*
## Token Efficiency
| Step | LoC Changed | cache_read/LoC | cache_write/LoC | output/LoC |
|------|-------------|----------------|-----------------|------------|
| plan | 0 | — | — | — |
| review_approach | 0 | — | — | — |
| verify | 0 | — | — | — |
| implement | 389 | 13601.9 | 0.0 | 57.5 |
| fix | 35 | 131817.6 | 2676.3 | 740.9 |
| audit_impl | 0 | — | — | — |
| prepare_pr | 0 | — | — | — |
| compose_pr | 0 | — | — | — |
| **Total** | **424** | 33897.5 | 891.9 | 272.9 |
## Model Usage Breakdown
| Model | steps | uncached | output | cache_read | cache_write | time |
|-------|-------|----------|--------|------------|-------------|------|
| opus[1m] | 2 | 5.7k | 37.3k | 3.6M | 188.2k | 34m 6s |
| sonnet | 3 | 7.1k | 52.1k | 5.2M | 189.9k | 29m 59s |
| MiniMax-M3 | 3 | 191.2k | 26.3k | 5.6M | 0 | 9m 42s |
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>1 parent d3a8bd7 commit 87ad2ff
13 files changed
Lines changed: 320 additions & 55 deletions
File tree
- src/autoskillit
- recipes
- diagrams
- skills_extended/resolve-failures
- tests
- recipe
- skills
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1527 | 1527 | | |
1528 | 1528 | | |
1529 | 1529 | | |
1530 | | - | |
| 1530 | + | |
1531 | 1531 | | |
1532 | 1532 | | |
1533 | 1533 | | |
| |||
1542 | 1542 | | |
1543 | 1543 | | |
1544 | 1544 | | |
1545 | | - | |
| 1545 | + | |
1546 | 1546 | | |
1547 | 1547 | | |
1548 | 1548 | | |
| |||
1618 | 1618 | | |
1619 | 1619 | | |
1620 | 1620 | | |
| 1621 | + | |
| 1622 | + | |
| 1623 | + | |
| 1624 | + | |
| 1625 | + | |
| 1626 | + | |
| 1627 | + | |
| 1628 | + | |
| 1629 | + | |
| 1630 | + | |
| 1631 | + | |
| 1632 | + | |
| 1633 | + | |
| 1634 | + | |
| 1635 | + | |
| 1636 | + | |
| 1637 | + | |
| 1638 | + | |
| 1639 | + | |
| 1640 | + | |
| 1641 | + | |
| 1642 | + | |
| 1643 | + | |
| 1644 | + | |
| 1645 | + | |
1621 | 1646 | | |
1622 | 1647 | | |
1623 | 1648 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1373 | 1373 | | |
1374 | 1374 | | |
1375 | 1375 | | |
1376 | | - | |
| 1376 | + | |
1377 | 1377 | | |
1378 | 1378 | | |
1379 | 1379 | | |
| |||
1385 | 1385 | | |
1386 | 1386 | | |
1387 | 1387 | | |
1388 | | - | |
1389 | | - | |
| 1388 | + | |
| 1389 | + | |
| 1390 | + | |
1390 | 1391 | | |
1391 | 1392 | | |
1392 | 1393 | | |
| |||
1449 | 1450 | | |
1450 | 1451 | | |
1451 | 1452 | | |
| 1453 | + | |
| 1454 | + | |
| 1455 | + | |
| 1456 | + | |
| 1457 | + | |
| 1458 | + | |
| 1459 | + | |
| 1460 | + | |
| 1461 | + | |
| 1462 | + | |
| 1463 | + | |
| 1464 | + | |
| 1465 | + | |
| 1466 | + | |
| 1467 | + | |
| 1468 | + | |
| 1469 | + | |
| 1470 | + | |
| 1471 | + | |
| 1472 | + | |
| 1473 | + | |
| 1474 | + | |
| 1475 | + | |
1452 | 1476 | | |
1453 | 1477 | | |
1454 | 1478 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2336 | 2336 | | |
2337 | 2337 | | |
2338 | 2338 | | |
2339 | | - | |
| 2339 | + | |
2340 | 2340 | | |
2341 | 2341 | | |
2342 | 2342 | | |
| |||
2351 | 2351 | | |
2352 | 2352 | | |
2353 | 2353 | | |
2354 | | - | |
| 2354 | + | |
2355 | 2355 | | |
2356 | 2356 | | |
2357 | 2357 | | |
| |||
2427 | 2427 | | |
2428 | 2428 | | |
2429 | 2429 | | |
| 2430 | + | |
| 2431 | + | |
| 2432 | + | |
| 2433 | + | |
| 2434 | + | |
| 2435 | + | |
| 2436 | + | |
| 2437 | + | |
| 2438 | + | |
| 2439 | + | |
| 2440 | + | |
| 2441 | + | |
| 2442 | + | |
| 2443 | + | |
| 2444 | + | |
| 2445 | + | |
| 2446 | + | |
| 2447 | + | |
| 2448 | + | |
| 2449 | + | |
| 2450 | + | |
| 2451 | + | |
| 2452 | + | |
| 2453 | + | |
| 2454 | + | |
2430 | 2455 | | |
2431 | 2456 | | |
2432 | 2457 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2103 | 2103 | | |
2104 | 2104 | | |
2105 | 2105 | | |
2106 | | - | |
| 2106 | + | |
2107 | 2107 | | |
2108 | 2108 | | |
2109 | 2109 | | |
| |||
2114 | 2114 | | |
2115 | 2115 | | |
2116 | 2116 | | |
2117 | | - | |
2118 | | - | |
2119 | | - | |
| 2117 | + | |
| 2118 | + | |
| 2119 | + | |
| 2120 | + | |
2120 | 2121 | | |
2121 | 2122 | | |
2122 | 2123 | | |
| |||
2178 | 2179 | | |
2179 | 2180 | | |
2180 | 2181 | | |
| 2182 | + | |
| 2183 | + | |
| 2184 | + | |
| 2185 | + | |
| 2186 | + | |
| 2187 | + | |
| 2188 | + | |
| 2189 | + | |
| 2190 | + | |
| 2191 | + | |
| 2192 | + | |
| 2193 | + | |
| 2194 | + | |
| 2195 | + | |
| 2196 | + | |
| 2197 | + | |
| 2198 | + | |
| 2199 | + | |
| 2200 | + | |
| 2201 | + | |
| 2202 | + | |
| 2203 | + | |
| 2204 | + | |
2181 | 2205 | | |
2182 | 2206 | | |
2183 | 2207 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2472 | 2472 | | |
2473 | 2473 | | |
2474 | 2474 | | |
2475 | | - | |
| 2475 | + | |
2476 | 2476 | | |
2477 | 2477 | | |
2478 | 2478 | | |
| |||
2487 | 2487 | | |
2488 | 2488 | | |
2489 | 2489 | | |
2490 | | - | |
| 2490 | + | |
2491 | 2491 | | |
2492 | 2492 | | |
2493 | 2493 | | |
| |||
2563 | 2563 | | |
2564 | 2564 | | |
2565 | 2565 | | |
| 2566 | + | |
| 2567 | + | |
| 2568 | + | |
| 2569 | + | |
| 2570 | + | |
| 2571 | + | |
| 2572 | + | |
| 2573 | + | |
| 2574 | + | |
| 2575 | + | |
| 2576 | + | |
| 2577 | + | |
| 2578 | + | |
| 2579 | + | |
| 2580 | + | |
| 2581 | + | |
| 2582 | + | |
| 2583 | + | |
| 2584 | + | |
| 2585 | + | |
| 2586 | + | |
| 2587 | + | |
| 2588 | + | |
| 2589 | + | |
| 2590 | + | |
2566 | 2591 | | |
2567 | 2592 | | |
2568 | 2593 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2209 | 2209 | | |
2210 | 2210 | | |
2211 | 2211 | | |
2212 | | - | |
| 2212 | + | |
2213 | 2213 | | |
2214 | 2214 | | |
2215 | 2215 | | |
| |||
2219 | 2219 | | |
2220 | 2220 | | |
2221 | 2221 | | |
2222 | | - | |
2223 | | - | |
2224 | | - | |
| 2222 | + | |
| 2223 | + | |
| 2224 | + | |
| 2225 | + | |
2225 | 2226 | | |
2226 | 2227 | | |
2227 | 2228 | | |
| |||
2282 | 2283 | | |
2283 | 2284 | | |
2284 | 2285 | | |
| 2286 | + | |
| 2287 | + | |
| 2288 | + | |
| 2289 | + | |
| 2290 | + | |
| 2291 | + | |
| 2292 | + | |
| 2293 | + | |
| 2294 | + | |
| 2295 | + | |
| 2296 | + | |
| 2297 | + | |
| 2298 | + | |
| 2299 | + | |
| 2300 | + | |
| 2301 | + | |
| 2302 | + | |
| 2303 | + | |
| 2304 | + | |
| 2305 | + | |
| 2306 | + | |
| 2307 | + | |
| 2308 | + | |
2285 | 2309 | | |
2286 | 2310 | | |
2287 | 2311 | | |
| |||
0 commit comments