You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: implement accept, relaunch, and fixed retry paths in mc_plan_approve
Three distinct actions for touchSet violations:
- Accept (no params): moves checkpoint job to ready_to_merge
- Relaunch (relaunch param): spawns agent in existing worktree
with correction prompt to fix violations
- Retry (retry param): re-validates touchSet before proceeding,
fixing the bug where retry silently skipped validation
Update test assertions to match new output format.
.describe('Name of a failed, conflict, or needs_rebase job to retry'),
23
+
.describe('Name of a failed, conflict, or needs_rebase job to retry after manual fix (re-validates touchSet)'),
24
+
relaunch: tool.schema
25
+
.string()
26
+
.optional()
27
+
.describe('Name of a touchSet-failed job to relaunch — spawns agent in existing worktree with correction prompt'),
23
28
},
24
29
asyncexecute(args){
30
+
if(args.retry&&args.relaunch){
31
+
thrownewError('Cannot specify both "retry" and "relaunch". Use "retry" for manual fixes (re-validates) or "relaunch" to spawn an agent to fix violations.');
thrownewError(`Job "${args.retry}" is not in a retryable state (current: ${job.status}). Only failed, conflict, or needs_rebase jobs can be retried.`);
46
+
thrownewError(`Job "${targetJobName}" is not in a retryable state (current: ${job.status}). Only failed, conflict, or needs_rebase jobs can be retried.`);
thrownewError(`Job "${args.retry}" is not in a retryable state (current: ${job.status}). Only failed, conflict, or needs_rebase jobs can be retried.`);
59
+
if(ctx.jobName!==args.relaunch){
60
+
thrownewError(`Checkpoint was set for job "${ctx.jobName}", not "${args.relaunch}".`);
0 commit comments