I think saying "use sync instead" @internal/syncer/syncer.go:879-882 is a bit misleading. Not all the errors could be fixed with sync. Thoughts?

Claude Code·Opus 4.7[1m]·nodo·4mo ago·2min·1 Checkpoint·1 file change·+1/-1·2.1K tokens

I think saying "use sync instead" @internal/syncer/syncer.go:879-882 is a bit misleading. Not all the errors could be fixed with sync. Thoughts?

4mo ago·22.6s

Agreed. At line 876 the "use sync instead" hint is accurate — CanReplicateRelay returns a structural reason ("target lacks relay capability"), and switching to sync mode is the actual fix.

But line 881 wraps executeReplicate, which can fail for any number of unrelated reasons: network errors, push rejections, source-side fetch failures, pack assembly issues, context cancellation. None of those become "use sync" problems — sync would hit the same network/auth/push issues. Worse, the hint sends users down a wrong-shaped path when the real problem is transient or environmental.

I'd drop the suffix from 881 and let the wrapped error speak for itself:

Keep 876 as-is since that diagnosis is genuinely actionable.

Want me to make the change?

yes please

4mo ago·25.2s

That test targets the --force rejection path (line 564), not the executeReplicate wrap — it's unaffected.

Done. Dropped ; use sync instead from the executeReplicate failure wrap; the two structural cases (lines 564, 810, 876) keep the hint since switching to sync genuinely is the fix there.