Skip to content

Fix iteration cap should be resettable without manual squash-rebase #851

Description

@guyoron1

What happened

In PR #5427, the fix iteration cap of 10 was hit after legitimately complex work: a new CF Worker deployment platform, WASM bridge adapter, scope changes from two concurrent dependency merges (fullsend-ai#5447, fullsend-ai#5481), and detailed findings from an external multi-agent review squad. The babysitter had to manually squash-rebase the branch at ~2026-07-23T13:21Z to reset the commit-based counter. This squash-rebase introduced a regression: the 45-minute behaviour-test timeout was lost, requiring fix iteration 12 (run 30018653663) just to restore it.

What could go better

The cap is a valuable safety guardrail (related: #902), but the only reset mechanism (squash-rebase) modifies commit history and can introduce regressions. This PR demonstrates concrete harm: a squash-rebase lost a Makefile timeout setting, adding an extra fix iteration to restore it. Confidence: high that the UX friction is real. Moderate confidence on frequency — this may be uncommon, but when it occurs the workaround is error-prone. Related issues #976 (silent failure at cap), #2561 (commit strategy), and #4958 (squash on redo) address adjacent concerns but not the cap reset mechanism itself.

Proposed change

Add a /fs-fix-reset slash command (or /fs-fix --reset-cap flag) to the dispatch router in reusable-dispatch.yml or reusable-fix.yml that resets the fix iteration counter for a PR without requiring a branch squash. Implementation option: track the counter via a GitHub PR comment marker or label rather than commit count, making it resettable by command. The cap (default 10) still applies after reset — the command resets the counter, not disables it. This preserves the safety guardrail while eliminating the regression-prone squash-rebase workaround.

Validation criteria

The next time a PR legitimately needs >10 fix iterations, the babysitter can reset the counter via a slash command without squashing the branch. Zero squash-rebase-induced regressions from cap resets. The cap still prevents runaway loops when not explicitly reset.


Generated by retro agent from fullsend-ai#5427

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions