The round-2 change made check_public_surface refuse to report a clean diff without a merge-base (exit 2). That correctly exposed that the lint job's depth-1 checkout plus a depth-1 fetch of the base has NO merge-base, so the advisory step had been silently reporting 0 drops on every PR. The step now deepens both sides until a merge-base exists and carries continue-on-error so an advisory check can never block the Windows-footguns job it rides in.