This is an interesting idea - especially the idea of application layers as pipes.
It strikes me that these pipes "partially execute" - I suppose if you can characterize the types of partial executions, you could define the application in a generic way.