Sampled guards are not re-weighted when a new consensus arrives
It's not only case when code bypassing limits, as noticed by pastly in IRC. Guard nodes weights only if new guard added by
entry_guards_expand_sample. Sample guard or subsets never being re-weighted: once sampled non-Exit Guard will be used as Exit+Guard (if operator change it policy) by client.
This is probably the behaviour we want: re-weighting based on the latest consensus allows Guard operators to detect exactly when a client downloads the next consensus (because it would stop using that Guard).
That said, keeping old weights might allow attacks based on knowing the weightings in a really old consensus.