this works for me too.
I do like the current buffer store in scribed, but the exact mechanics of it can certainly not be setup with flume.
If we're happy with it not being configurable, limited to just memory/file, then we could just implement it as a separate channel, though I suspect there would be a fair bit of code repetition with existing channels, which in turn would make for more maintenance.
The point about a compound channel quadratically increasing things to test for is valid... Sort of... Ultimately though, it should not need to be aware of the channels below it, and should only rely on the backing channels fulfilling their contract, testing it would involve testing that only it works as intended.
Again though, if only having a memory channel spilling to file is enough, doing an explicit implementation of that could work.