Recently, Harding discussed on bitcoin-dev mailing list an idea for a transitory soft fork activation e.g. for CTV. The idea (if I understood correctly) was that the activation would come with inbuilt deactivation after certain period of time (e.g. 5 years) and should the feature prove itself, the deactivation part could be deactivated :-).
Against this idea, a couple of responders mentioned that this does not help with reducing the cost of maintenance in the feature because full validation would still need to implement the CTV rules even after the deactivation of the feature, if deactivation happened.
My question is specifically related to such proposal like CTV that are forked in via replacing NOP operation. I don't understand the counterargument that the fully validating node would need the CTV (or other NOP-replacement) rules in order to perform full validation.
Suppose that CTV was activated and then deactivated 5 years later and then after 1 year after deactivation the code validating CTV would be removed from the code base. I would expect that removing CTV rules from the validation would leave blocks with transactions using CTV in that 5 year period as blocks with NOP operation. As such those blocks would be valid. Hence it does not seem to me that the validation code would be necessary to be kept in.
Of course, should anyone create an alternative chain of blocks, they could insert invalid CTV transactions inside, but in the example above they would need to provide a chain stronger than the last 1 year of blocks in order for this to matter.
So the only problem I can see with the deactivation is how would new transactions spending outputs with CTV be treated after deactivation. But that seems orthogonal to this problem as this is something that the deactivation is actually about, at least how I understood it. One should remove CTV protected outputs before CTV deactivation, otherwise of course, after being deactivated, it should no longer work as previously expected.
Or is this only discussion about semantics of what is understood as full validation? I.e. if a node would read those transactions from the activated period as NOP, it would not be by definition doing full validation as the reality was that it was not NOP? What am I missing?