6fd13f3e28
After 3 rounds of patch-preservation work, multiple fork branches have new commits that need to reach origin's submodule/<name> refs: fork local-vs-origin state base 2564 ahead, 190 behind significant divergence bootloader 10 ahead, 128 behind 927 vs 77 file divergence installer 61 ahead, 0 behind ready to force-push kernel 45 ahead, 0 behind ready to force-push libredox 69 ahead, 11 behind fast-forward possible relibc 3434 ahead, 60 behind significant divergence syscall 1 ahead, 0 behind ready to force-push userutils 202 ahead, 12 behind merge decisions needed This script provides: 1. Status table showing ahead/behind for each fork 2. Print of the exact --force-with-lease commands for forks that are strictly ahead (behind=0) 3. NO-OP default mode (must use --execute to actually push) 4. A 5-second abort window if --execute is used Per AGENTS.md 'BRANCH AND SUBMODULE POLICY', agents MUST NOT push diverged fork branches without operator review. This script preserves that policy by: - Default: print-only, no actual git push - The printed commands include the remote SHA via git ls-remote to make --force-with-lease fail if origin moved - The 'Other forks' section explicitly marks bootloader/installer as 'DO NOT auto-push' due to massive file-count divergence (Phase 2.4+ work) Implementation notes: - Uses 'local_sha..remote_sha' / 'remote_sha..local_sha' form to avoid the 'ambiguous HEAD' error in submodule working trees (the fork tree has a stale symlink that confuses git revision parsing — see commit history if that needs fixing) - behind=0 and ahead>0 are the only cases the script marks 'REVIEW_NEEDED' — behind>0 forks need merge decisions