There’s a bug in Bitcoin. There are an insufficient number of bytes in the protocol for storing the block height number. Eventually, it will be filled, long before the block subsidy runs out.
Once it does, no block can be built on top under the current consensus rules. Therefore, any block that comes after is, by definition, a hard fork. The rules around how block height is calculated will have to be relaxed/reworked to extend the chain.