Fix monopam sync idempotency: skip subtree pulls when already in sync
The push phase checked status to skip already-synced repos, but the
subtree pull phase didn't - it pulled ALL repos unconditionally with
--squash, creating new merge commits even when already in sync. This
caused conflicts on subsequent syncs.
Add needs_pull check that skips subtree pulls when:
- In_sync: trees match, nothing to do
- Subtree_ahead: monorepo is ahead, need push not pull
- Unknown: can't determine, conservative skip
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>