Problem
Headers presync computes m_max_commitments from the elapsed time since the chain-start MTP plus MAX_FUTURE_BLOCK_TIME.
When the local clock is more than MAX_FUTURE_BLOCK_TIME behind the chain-start MTP, that elapsed value is negative, but it is used in arithmetic assigned to the unsigned commitment cap.
This can turn the intended zero bound into a large cap, letting low-work headers presync continue instead of aborting at the first commitment.
Fix
Keep the elapsed-time value signed and assign an explicit zero commitment cap when the chain-start MTP is still too far in the future for a locally acceptable extension to exist. The first stored commitment then exceeds the cap and aborts presync.
The unit test covers this boundary with commitment_period=1, and the headers_sync_state fuzz target now allows the same clock-skew case instead of always choosing a time at or after the chain-start MTP.