Implementation Plan: Fix Infinite CI Loop — flake_suspected Routing Escape for is_fixable=false#4116
Merged
Trecek merged 3 commits intoJun 26, 2026
Conversation
When the diagnosis file emits is_fixable=false for env/unknown failure subtypes, the verdict must route to human escalation instead of flake_suspected, preventing infinite re-push loops on unfixable failures.
…g test Remove is_fixable from diagnose_ci.capture in all 3 pipeline recipes. The dead-output semantic rule fires because resolve-failures reads is_fixable from the diagnosis FILE (via diagnosis_path), not from recipe context — context.is_fixable is never referenced downstream. Restrict test_resolve_ci_routes_flake_suspected_to_check_flake_loop to only check resolve-failures-invoking steps. The resolve_review step uses resolve-review skill which legitimately routes flake_suspected to pre_review_rebase, not through check_flake_loop. Update diagram hashes for all 3 recipes after YAML changes.
…lake_loop_step_exists If a run_python step has no with: block, step.with_args is None and subscripting it raises TypeError instead of a clear AssertionError. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
722b918 to
669c984
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
When
diagnose_cireturnsis_fixable=falsefor env-type CI failures, theresolve-failuresskill maps them toflake_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:
resolve-failures/SKILL.md— extractis_fixablefrom the diagnosis file and route unfixable env/unknown failures toci_only_failureinstead offlake_suspectedcheck_flake_loopguard step (following the existingcheck_ci_rebase_looppattern) to bound theflake_suspected → re_pushpath to 3 iterations, and captureis_fixablefromdiagnose_cioutputtests/skills/test_resolve_failures_ci_aware.py— the_find_table_row_verdictparser and verdict assertions must handle the new 4-column table withis_fixableCloses #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 via AutoSkillit
Token Usage Summary
* Step used a non-Anthropic provider; caching behavior may differ.
Token Efficiency
Model Usage Breakdown