@neauoire i'm not sure how your type-checker works but the way i'd handle this would be to confirm that the stack at the !&loop corresponds to the initial stack entering &loop. if that is true then you know it's preserving the shape and can just focus on the ?&exit condition
@d6 that's how I do it at the moment, it's not throwing an error for the /l scope, it would if the entry and exit was unbalanced, but it's the scmp scope that throws an error since this routine doesn't have an obvious exit.
Here's a simpler version of that sort of routine which doesn't trigger an error.