SystemVerilog Assertion consecutive repetition for overlapping sequences
Your assertion checks if valido is LOW when validi is HIGH for three consecutive clock cycles, so it is wrong. It will not work even if you change the trigger condition to validi[*0:1] due to overlapping sequences as you guessed.

I don't have a fix in that coding style, but a solution can be built using $past similar to the one on Verification Academy*.

assert property (@(posedge clk) disable iff (rst) 
    ($past(!validi, 0) || 
     $past(!validi, 1) || 
     $past(!validi, 2)) |=&gt; !valido);


Now the assertion expects valido to be LOW if validi is LOW at least one of the last three clock cycles.