I note that the deprecation messages are placed inside src/kaleidoscope_internal/deprecations.h so is it because OneShot is a plugin but Layer is Kaleidoscope internal that such a message wasn’t added there?
We didn’t add one for OneShot, because we couldn’t. We can add deprecation messages to methods, but not to member variables. That’s one of the reasons we’re trying to transition to using accessors for new code.
You can put the deprecation message anywhere, it doesn’t have to be in src/kaleidoscope_internal/deprecations.h, you can put it in your plugin header too. As long as the #define name is _DEPRECATED_MESSAGE_something, DEPRECATED(something) will work.
See the HostOS.autoDetect() deprecation for example, which was in HostOS.h. For plugins, I think the most straightforward thing is to place the message in the plugin header, whether the plugin is part of the monorepo or not.
src/kaleidoscope_internal/deprecations.h should only be used for deprecations in core Kaleidoscope (ie, not plugins).