Share helpers that were copy-pasted across packages
Commit

- closeOnceReadCloser existed verbatim in the bootstrap, incremental, and replicate strategies; move it to gitproto as CloseOnce next to LimitPackReader (all strategies already depend on gitproto) and add the unit test it never had.
- The byte formatter existed three times: syncer.formatBytes and bootstrap.humanBytes were identical, and gitproto.humanizeBytes was a slightly cruder variant (fixed one-decimal output, capped at GB). Keep the precision-tiered implementation as gitproto.HumanBytes and use it everywhere; pack-encode progress now formats like the rest of the progress output.
- runSync and runReplicate carried the same plan-classification switch; extract classifyPlans. Replicate derives its relay subset from the returned push plans.
- auth.Method duplicated gitproto.AuthMethod (identical single-method interfaces); alias it so the contract is declared once.
Co-Authored-By: Claude Fable 5 noreply@anthropic.com Entire-Checkpoint: 96d8a7027ab3
Checkpoints
/goal simplify this repo, make sure to de-slop it continue until you are happy, make sure to backfill tests and validate any significant change. The output of this should be a PR with green CI, review
Claude CodeOpus 4.8[1m]
View sessionCheckpoint 1