# docs(review): finish the 5m->20m judge-default sweep

`2f48cb8`→[main](/content/gh/entireio/cli/commits/main/index.html)

peyton-alt·1w ago·2 files·+3 added/-3 removed

The 'restore 20m' commit updated the constant and the Long usage block
but missed three references, leaving --help contradicting itself (flag
string said 5m, usage block said 20m) — a user bounding CI cost would
mis-estimate the judge's ceiling by 4x. Fixed the --timeout flag
registration string, the judgeTimeoutArg doc comment, and the stale
test comment.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

## Sessions

01KX0QK2EKA17HTM2NK5Q1GYSVView transcript

[?\
test(review): pin that codex $name skills survive the legacy repair + native invocationClaude Code·22 steps](/content/gh/entireio/cli/session/99f0d90a-6e31-4c60-ba62-aa2dccd29033#timeline-01KX0QK2EKA17HTM2NK5Q1GYSV/index.html)

## Changes

2

- cmd/entire/cli/review

- Mcmd.go+2/-2

- Msynthesis_sink_test.go+1/-1

```
250 unmodified lines

251
252
253
254
254
255
256
257
459 unmodified lines

717
718
719
720
720
721
722
723

250 unmodified lines

cmd.Flags().StringVar(&profileOverride, "profile", "", "review profile to run (default: review_default_profile or general)")
	cmd.Flags().StringVar(&perRunPrompt, "prompt", "", "one-off instructions appended to this review run")
	cmd.Flags().StringVar(&baseOverride, "base", "", "git ref to scope the review against (default: origin/HEAD → origin/main → origin/master → main → master)")
	cmd.Flags().DurationVar(&reviewTimeout, "timeout", 0, "optional hard cap per reviewer (default: none — reviewers run until they finish, like a skill invoked directly in a session). When set, it also bounds the consolidating judge; unset, the judge keeps its own 5m default")
	cmd.Flags().DurationVar(&reviewTimeout, "timeout", 0, "optional hard cap per reviewer (default: none — reviewers run until they finish, like a skill invoked directly in a session). When set, it also bounds the consolidating judge; unset, the judge keeps its own 20m default")
	// The listing modes and the action modes each select a distinct command
	// behavior; combining them silently runs one and drops the rest, so reject
	// the combination up front with a clear cobra error.
459 unmodified lines

// ProviderTimeout. The judge is a single text-generation call with no event
// stream, so unlike reviewers it always keeps a bound: an explicit positive
// --timeout governs it, anything else (unset, 0, or a negative like
// `--timeout -5m`) maps to 0 so the synthesis default (5m) applies — a
// `--timeout -5m`) maps to 0 so the synthesis default (20m) applies — a
// reviewer-side "no cap" must never leak through as "judge unbounded".
func judgeTimeoutArg(reviewerArg time.Duration) time.Duration {
	return max(reviewerArg, 0)
}

```

Mcmd/entire/cli/review/cmd.go+2/-2

```
365 unmodified lines

366
367
368
369
369
370
371
372

365 unmodified lines

if !provider.hadDeadline {
		t.Fatal("explicit ProviderTimeout must apply a deadline")
	}
	// Generous slack: the deadline should be ~1h out, far above the 5m default.
	// Generous slack: the deadline should be ~1h out, far above the 20m default.
	if provider.remaining < 30*time.Minute {
		t.Fatalf("deadline remaining = %v, want ~1h (explicit timeout not honored, fell back to default)", provider.remaining)
	}
```

Mcmd/entire/cli/review/synthesis_sink_test.go+1/-1
