I feel like, when we go to stabilize a feature, I am always left with this vague uncertainty: How well was this feature implemented? How closely does its behavior adhere to my expectations and what I remember of the RFC (which of course may not be what the RFC actually said). In theory of course we reserve the right to fix bugs, but some bugs – if they stick around long enough – sort of have a way of being features, so it’s really best to get things right up front.
Therefore, I was considering adopting a requirement (perhaps via RFC, though that may not be necessary) that – when it comes time to consider stabilizing a language feature – we present a clear test suite for the feature. (Ideally, we’d have a directory of tests named after the RFC or feature or something like that, for easy reference.) Then we can review the tests and observe the behavior first hand, while also trying to consider edge cases that might have been overlooked.