There are no mandatory forks in the code. It is a human decision to have an upgrade every 6 months - not in the code.
But I believe they put something like a timebomb to force you to upgrade the client.
That would require self-referential code...which, in a distributed system, is DANGEROUS (read skynet).